{
  "schemaVersion": 1,
  "datasetId": "crypto-signal-message-revision-diff-analyzer-20260714",
  "canonical": "https://cryptosignalsreview.com/crypto-signal-message-revision-diff-analyzer/",
  "title": "Crypto Signal Message Revision Diff Analyzer | CryptoSignalsReview",
  "h1": "Crypto Signal Message Revision Diff Analyzer",
  "description": "Compare two local crypto-signal message snapshots by exact message ID. See changed fields, later-only records, and records not present in the later snapshot without treating absence as proof of deletion or misconduct.",
  "publishedAt": "2026-07-15",
  "modifiedAt": "2026-07-15",
  "v3Version": "0.4.218",
  "comparisonMethodVersion": "1.1.0",
  "sourceRelease": {
    "repositoryCommit": "74bed2b023064a6ffe82bfba5705ceffc44d1b19",
    "inputMode": "immutable-git-commit",
    "source": {
      "path": "data/research/crypto-signal-message-revision-diff-analyzer-20260714.json",
      "bytes": 100246,
      "sha256": "31404bf0725e7bf6b89473320ae61bbec9a9a75c68600db57f5983c014fd9c33"
    },
    "generator": {
      "path": "tools/generate-crypto-signal-message-revision-diff-analyzer.mjs",
      "bytes": 253607,
      "sha256": "db60e4a707c8a15791a30327d617f62a6d6b886026cab3293f79f2e6710e84a5"
    },
    "checker": {
      "path": "tools/check-crypto-signal-message-revision-diff-analyzer.mjs",
      "bytes": 311515,
      "sha256": "fde5a258c668fa0579d08105b57004bfa718ed6bb4b1188f04fe30cf6dfff6fc"
    },
    "sourceUrl": "https://raw.githubusercontent.com/TheCryptoSimon/CryptoSignalsReview/74bed2b023064a6ffe82bfba5705ceffc44d1b19/data/research/crypto-signal-message-revision-diff-analyzer-20260714.json"
  },
  "visibleWordCount": 5472,
  "purpose": "Provide one browser-local, deterministic comparison surface for two reader-supplied, versioned Telegram message snapshot JSON documents. The tool reports exact scoped-record presence and supplied field differences; it does not infer why a record or value changed.",
  "decisionBoundary": "The analyzer describes differences between two supplied snapshot documents after documented schema validation and semantic normalization. It does not authenticate either snapshot, prove when or how it was captured, identify an author, recover deleted content, inspect Telegram servers, establish that a message was edited or deleted, prove intent or misconduct, verify a signal, validate a provider result, calculate profitability, predict performance, rank a provider, or recommend a trade, payment, subscription, complaint, or legal conclusion.",
  "inputContract": {
    "mediaType": "application/json; charset=utf-8",
    "schemaId": "csr.message-snapshot.v1",
    "encoding": "strict UTF-8 with no BOM, NUL, lone surrogate, duplicate object member, non-finite number or malformed JSON",
    "requiredProperties": {
      "snapshot": [
        "schema_version",
        "snapshot_id",
        "captured_at_utc",
        "coverage",
        "capture",
        "source",
        "messages"
      ],
      "coverage": [
        "start_utc",
        "end_utc",
        "completeness"
      ],
      "capture": [
        "method",
        "tool",
        "tool_version",
        "archive_sha256",
        "redactions"
      ],
      "source": [
        "platform",
        "scope_id",
        "locator"
      ],
      "message": [
        "message_id",
        "availability",
        "posted_at_utc",
        "edited_at_utc",
        "message_kind",
        "text",
        "caption",
        "entities",
        "media_sha256",
        "native_payload_sha256",
        "reply_to_message_id",
        "author_id",
        "author_label",
        "permalink",
        "reply_markup_sha256"
      ],
      "entity": [
        "type",
        "offset_utf16",
        "length_utf16",
        "value"
      ]
    },
    "nullableProperties": {
      "capture": [
        "archive_sha256"
      ],
      "source": [
        "locator"
      ],
      "message": [
        "posted_at_utc",
        "edited_at_utc",
        "text",
        "caption",
        "media_sha256",
        "native_payload_sha256",
        "reply_to_message_id",
        "author_id",
        "author_label",
        "permalink",
        "reply_markup_sha256"
      ],
      "entity": [
        "value"
      ]
    },
    "valueRules": {
      "snapshot_id": "One through 128 printable ASCII characters with no controls.",
      "capture.method": "One through 64 printable ASCII characters.",
      "capture.tool": "One through 128 Unicode code points with no controls.",
      "capture.tool_version": "One through 64 printable ASCII characters.",
      "capture.redactions[]": "Zero through 64 entries, each one through 256 Unicode code points with no controls.",
      "source.locator": "Null or one through 2048 Unicode code points with no controls.",
      "message.posted_at_utc": "A valid accepted timestamp or null only when availability is tombstone or unknown.",
      "message.text": "Null or at most 16384 Unicode code points.",
      "message.caption": "Null or at most 8192 Unicode code points.",
      "message.native_payload_sha256": "Null or the lowercase SHA-256 of the deterministic parsed value of every Telegram Desktop message property not directly mapped by adapter 1.3.0.",
      "message.author_id": "Null or one through 128 printable characters with no controls.",
      "message.author_label": "Null or at most 256 Unicode code points with no controls.",
      "message.permalink": "Null or at most 2048 Unicode code points with no controls.",
      "entity.type": "One through 64 printable ASCII characters.",
      "entity.offset_utf16": "A canonical non-negative base-10 integer token from 0 through 9007199254740991, with no sign, fraction or exponent.",
      "entity.length_utf16": "A canonical positive base-10 integer token from 1 through 9007199254740991, with no sign, fraction or exponent.",
      "entity.value": "Null or at most 2048 Unicode code points with no controls."
    },
    "schemaRules": [
      "Every documented property is required. Use JSON null only where the schema permits it; omission is a schema error, not a detected revision.",
      "Version 1 supports source.platform equal to telegram only.",
      "source.scope_id is a 1 through 128 character ASCII identifier. Both snapshots must use the exact same platform and scope_id.",
      "message_id and reply_to_message_id are canonical decimal strings with no leading zero unless the value is exactly 0; values are compared as arbitrary-precision non-negative integers.",
      "captured_at_utc, coverage times and message times use uppercase UTC Z with seconds and optional exactly three millisecond digits.",
      "availability is present, tombstone or unknown. A tombstone is a supplied capture state, not proof of who removed anything.",
      "message_kind is text, media, service or unknown.",
      "native_payload_sha256 is a change detector for unrepresented native Telegram Desktop properties such as polls, todo lists, giveaways, rich messages, reactions and inline buttons. It does not authenticate those properties or media bytes.",
      "Entity offset and length tokens must use canonical unsigned base-10 integer syntax. Exponents, fractions, negative zero and values above the JavaScript safe-integer ceiling are rejected before comparison.",
      "Entity ranges apply to text when text is non-null and otherwise to caption. A message with entities must expose exactly one non-null target field; the UTF-16 range must remain inside it and neither boundary may split a surrogate pair.",
      "entities are normalized for semantic comparison by offset_utf16, length_utf16, type and value; raw array order is not evidence of a revision.",
      "Unknown object properties are rejected in version 1 so schema expansion requires an explicit version change.",
      "Strings are never trimmed, case-folded, compatibility-normalized or silently repaired. Line-ending and NFC equivalence may be annotated but never suppress an exact value difference."
    ],
    "limits": {
      "maximumBytesPerSnapshot": 524288,
      "maximumMessagesPerSnapshot": 2000,
      "maximumJsonDepth": 12,
      "maximumObjectMembers": 20000,
      "maximumArrayItems": 20000,
      "maximumStringCodePoints": 32768,
      "maximumMessageTextCodePoints": 16384,
      "maximumCaptionCodePoints": 8192,
      "maximumEntitiesPerMessage": 256,
      "maximumIssuesPerSnapshot": 200,
      "maximumComparisonRows": 4000,
      "maximumDisplayedComparisonRows": 500,
      "maximumTextDiffOperations": 200000,
      "maximumFileReadMilliseconds": 5000
    }
  },
  "telegramDesktopAdapter": {
    "version": "1.3.0",
    "officialExporterCommit": "a898b079c940b16f3e4de6faa7c85926b6f362e5",
    "officialSourcePath": "Telegram/SourceFiles/export/output/export_output_json.cpp",
    "officialSourceUrl": "https://github.com/telegramdesktop/tdesktop/blob/a898b079c940b16f3e4de6faa7c85926b6f362e5/Telegram/SourceFiles/export/output/export_output_json.cpp",
    "officialSourceSha256": "35c0101cbc20449e60103cc82e975a2b4851905971546d92e5fbe391da5bb466",
    "maximumBytes": 8388608,
    "maximumChats": 5000,
    "maximumSelectedMessages": 2000,
    "maximumJsonDepth": 64,
    "maximumObjectMembers": 500000,
    "maximumArrayItems": 500000,
    "maximumStringCodePoints": 1048576,
    "acceptedContainers": [
      "single_chat",
      "chats.list",
      "left_chats.list"
    ],
    "requiredUserMetadata": [
      "snapshot_id",
      "captured_at_utc",
      "coverage.start_utc",
      "coverage.end_utc",
      "coverage.completeness"
    ],
    "issueCodes": [
      "TG_EMPTY",
      "TG_TOO_LARGE",
      "TG_INVALID_UTF8",
      "TG_JSON",
      "TG_ENVELOPE",
      "TG_CHAT_LIMIT",
      "TG_CHAT_SELECTION",
      "TG_MESSAGE_LIMIT",
      "TG_MESSAGE_INVALID",
      "TG_METADATA_INVALID",
      "TG_OUTPUT_LIMIT"
    ],
    "mappingRules": [
      "Full exports require an explicit chat selection; the adapter never chooses among multiple chats by name, audience or position.",
      "source.scope_id is tdesktop plus a stable peer family and chat id: personal_chat maps to user, private_group maps to chat, and supergroup or channel visibility variants map to channel. A display name and public/private presentation type are locator metadata, not identity.",
      "Message id, date_unixtime and edited_unixtime are mapped only when they satisfy bounded canonical integer and UTC conversion rules.",
      "Telegram text strings or ordered text-part arrays are flattened without trimming, case folding, Unicode normalization or entity inference.",
      "The parser accepts Telegram Desktop's pinned writer-specific two-digit hexadecimal escape only for C0 controls from x00 through x1f during native result.json inspection; csr.message-snapshot.v1 continues to require standard JSON escapes.",
      "Service records map to service; records with recognized media fields map to media; unsupported records map to unknown availability and kind.",
      "Normal messages accept only the from/from_id/author sender family; service messages accept only actor/actor_id; unsupported records accept neither family. A channel signature in author takes precedence over a generic from display label, and nullable unresolved labels remain null.",
      "Same-scope reply IDs are mapped only when reply_to_peer_id is absent. A supplied cross-scope peer must use Telegram Desktop's user, chat or channel decimal identifier shape and is deliberately omitted from the converted same-scope reply field.",
      "Cross-scope replies, text-entity offsets, media-file bytes, reply markup and permalinks are not invented as readable fields when the native JSON does not supply a safe direct mapping.",
      "Every native message property except the identity field id is deterministically serialized with exact parsed numeric lexemes and retained as native_payload_sha256. Text-part metadata, sender variants, cross-scope replies and other native changes therefore cannot silently collapse to unchanged even when the readable projection is lossy.",
      "The original native file SHA-256 is retained as capture.archive_sha256; the hash identifies bytes but does not authenticate capture time, completeness or origin.",
      "The exact pretty-printed converted csr.message-snapshot.v1 bytes must pass the same byte, member, depth and closed-schema limits before conversion can report success or populate either comparison input."
    ],
    "selectionBoundary": "The adapter accepts official Telegram Desktop single-chat objects or full-export chats.list and left_chats.list containers for six bounded Telegram chat types. It rejects malformed or hybrid envelopes, ambiguous or stale selection keys, duplicate stable peer scopes, invalid message identities and supplied metadata or output sizes that cannot produce a directly comparable closed-schema snapshot.",
    "provenanceBoundary": "Capture time, coverage window and completeness are user-supplied assertions because Telegram Desktop result.json does not provide a trustworthy export-completion timestamp or the reader's intended coverage declaration. The adapter never derives those values from file metadata or the latest message."
  },
  "comparison": {
    "steps": [
      "Read each source as bytes, enforce the byte limit, reject malformed UTF-8, BOM, NUL and lone surrogate code units, and calculate an exact-byte SHA-256.",
      "Parse JSON with a duplicate-member-aware, depth-limited parser before schema validation. Native last-member-wins behavior is forbidden.",
      "Validate the closed csr.message-snapshot.v1 schema, every timestamp, digest, source scope, message and entity before comparison.",
      "Require the same exact telegram source scope and a strictly earlier before captured_at_utc. Scope or direction failure suppresses comparison.",
      "Reject every duplicated message_id within a snapshot before building a lookup map. No first-wins or last-wins behavior is allowed.",
      "Create a semantic snapshot representation with schema-ordered values, numerically sorted canonical decimal message IDs and normalized entity order. Preserve Unicode strings exactly.",
      "Serialize the supported semantic value subset with deterministic lexicographic object-member ordering and calculate a semantic SHA-256.",
      "Compare the union of exact scope-plus-message identities sorted by arbitrary-precision numeric message ID.",
      "For IDs in both snapshots, compare fields in the fixed schema order and label null-to-value, value-to-null or value-to-different-value states without hiding exact differences.",
      "Annotate line-ending-only, NFC-equivalent, timestamp-format-only, zero-width and bidirectional-control differences; annotations never suppress the exact field change.",
      "Classify each union record as unchanged, changed, only_before or only_after. Render only_before as Not present in later snapshot, never Deleted.",
      "Create a privacy-minimized deterministic report by default. Create a full-value report only after an explicit local opt-in.",
      "Suppress all comparison output and downloads when either snapshot is invalid; show snapshot-specific issues without guessing pairings."
    ],
    "statusLabels": [
      {
        "id": "unchanged",
        "label": "Unchanged in supplied fields",
        "meaning": "The exact scoped ID exists in both valid snapshots and every normalized semantic message field matches."
      },
      {
        "id": "changed",
        "label": "Changed supplied fields",
        "meaning": "The exact scoped ID exists in both valid snapshots and at least one compared field differs."
      },
      {
        "id": "only_before",
        "label": "Not present in later snapshot",
        "meaning": "The exact scoped ID exists only in the supplied before document. This does not prove deletion, concealment or platform state."
      },
      {
        "id": "only_after",
        "label": "Present only in later snapshot",
        "meaning": "The exact scoped ID exists only in the supplied after document. This does not prove creation, timing, cause, authorship or complete archive coverage."
      }
    ],
    "comparedFieldOrder": [
      "availability",
      "posted_at_utc",
      "edited_at_utc",
      "message_kind",
      "text",
      "caption",
      "entities",
      "media_sha256",
      "native_payload_sha256",
      "reply_to_message_id",
      "author_id",
      "author_label",
      "permalink",
      "reply_markup_sha256"
    ],
    "fieldStates": [
      "unchanged",
      "field_added",
      "field_missing",
      "field_changed"
    ],
    "differenceAnnotations": [
      "line_ending_only",
      "nfc_equivalent",
      "timestamp_format_only",
      "zero_width_present",
      "bidi_control_present",
      "entity_order_only",
      "diff_budget_exceeded"
    ],
    "timestampSubtypes": [
      "posted_time_changed",
      "edit_marker_added",
      "edit_marker_removed",
      "edit_time_advanced",
      "edit_time_regressed",
      "format_only"
    ],
    "identityBoundary": "Identity is the exact tuple source.platform, source.scope_id and canonical decimal message_id. No fuzzy matching, text similarity, permalink matching, timestamp proximity, Unicode normalization, case folding or guessed replacement is allowed.",
    "absenceBoundary": "Only the literal phrase Not present in later snapshot may describe only_before rows. Deleted, removed, hidden, concealed, fabricated, manipulated and loss deletion are forbidden conclusions.",
    "presenceBoundary": "Only the literal phrase Present only in later snapshot may describe only_after rows. New, created, added, restored, republished and first posted are forbidden conclusions unless separately established outside this comparison.",
    "coverageBoundary": "Different coverage windows or partial or unknown completeness make presence states coverage-limited. The analyzer still reports literal snapshot membership but cannot infer platform deletion, creation time or complete archive coverage.",
    "hashBoundary": "Exact-byte, semantic-snapshot and deterministic-report SHA-256 values identify supplied or normalized bytes under this implementation. report_payload_sha256 covers the canonical report object with report_payload_sha256 omitted and report_payload_sha256_basis retained. Hashes do not authenticate a source, timestamp, author, platform, capture process, completeness or truth."
  },
  "privacy": [
    "Pasted and selected files remain in the current browser context and are not intentionally sent to CryptoSignalsReview, analytics, storage, a service worker or another origin.",
    "The page must intercept and test fetch, XMLHttpRequest, WebSocket, EventSource, sendBeacon, form submission, localStorage, sessionStorage, indexedDB, Cache Storage and service-worker registration during analyzer interactions.",
    "The browser history, downloads folder, clipboard and screenshots remain user-controlled surfaces; do not call the report anonymous or unshareable.",
    "The default downloadable report omits raw message text, captions, author labels, permalinks, source scope and message IDs. It contains sequential record references, counts, issue codes, changed field names, method versions and hashes.",
    "An explicit Include full supplied values control may create a complete local report containing both validated snapshot envelopes, including capture, coverage, source and message values. It must be off by default and display Review before sharing beside the download action."
  ],
  "issueCodes": [
    {
      "code": "EMPTY_INPUT",
      "severity": "error",
      "meaning": "The selected snapshot contains no bytes."
    },
    {
      "code": "INPUT_TOO_LARGE",
      "severity": "error",
      "meaning": "The selected snapshot exceeds 524288 bytes."
    },
    {
      "code": "INVALID_UTF8",
      "severity": "error",
      "meaning": "The selected bytes are not strict UTF-8."
    },
    {
      "code": "BOM_FORBIDDEN",
      "severity": "error",
      "meaning": "The versioned JSON profile rejects a UTF-8 BOM."
    },
    {
      "code": "NUL_BYTE",
      "severity": "error",
      "meaning": "The selected snapshot contains a NUL byte."
    },
    {
      "code": "JSON_SYNTAX",
      "severity": "error",
      "meaning": "The selected bytes are not valid JSON under the bounded parser."
    },
    {
      "code": "JSON_DUPLICATE_MEMBER",
      "severity": "error",
      "meaning": "An object repeats a property name and is rejected before overwrite."
    },
    {
      "code": "JSON_DEPTH_LIMIT",
      "severity": "error",
      "meaning": "The selected document exceeds the configured nesting depth."
    },
    {
      "code": "JSON_LONE_SURROGATE",
      "severity": "error",
      "meaning": "A decoded string contains an unpaired UTF-16 surrogate."
    },
    {
      "code": "SCHEMA_PROPERTY_MISSING",
      "severity": "error",
      "meaning": "A required version-1 property is omitted."
    },
    {
      "code": "SCHEMA_PROPERTY_UNKNOWN",
      "severity": "error",
      "meaning": "An object contains a property outside the closed version-1 schema."
    },
    {
      "code": "SCHEMA_TYPE",
      "severity": "error",
      "meaning": "A property has a value type outside the version-1 schema."
    },
    {
      "code": "SCHEMA_VERSION",
      "severity": "error",
      "meaning": "schema_version is not csr.message-snapshot.v1."
    },
    {
      "code": "PLATFORM_UNSUPPORTED",
      "severity": "error",
      "meaning": "Version 1 supports telegram source snapshots only."
    },
    {
      "code": "SCOPE_ID_INVALID",
      "severity": "error",
      "meaning": "source.scope_id is empty, too long or outside the documented ASCII identifier alphabet."
    },
    {
      "code": "SOURCE_SCOPE_MISMATCH",
      "severity": "error",
      "meaning": "The before and after documents do not identify the same exact source platform and scope."
    },
    {
      "code": "TIMESTAMP_INVALID",
      "severity": "error",
      "meaning": "A timestamp is not a real date-time in the accepted uppercase UTC-Z profile."
    },
    {
      "code": "CAPTURE_ORDER_INVALID",
      "severity": "error",
      "meaning": "before.captured_at_utc is not strictly earlier than after.captured_at_utc."
    },
    {
      "code": "COVERAGE_ORDER_INVALID",
      "severity": "error",
      "meaning": "A coverage start instant is later than its end instant."
    },
    {
      "code": "COVERAGE_AFTER_CAPTURE",
      "severity": "error",
      "meaning": "A declared coverage end instant is later than the snapshot capture instant."
    },
    {
      "code": "MESSAGE_OUTSIDE_COVERAGE",
      "severity": "error",
      "meaning": "A present message has a supplied post time outside the snapshot's declared coverage window."
    },
    {
      "code": "COVERAGE_DIFFERENT",
      "severity": "warning",
      "meaning": "The snapshots use different coverage windows, so presence states are coverage-limited."
    },
    {
      "code": "COVERAGE_INCOMPLETE",
      "severity": "warning",
      "meaning": "At least one snapshot declares partial or unknown completeness."
    },
    {
      "code": "DIGEST_INVALID",
      "severity": "error",
      "meaning": "A non-null digest is not 64 lowercase hexadecimal SHA-256 characters."
    },
    {
      "code": "TOO_MANY_MESSAGES",
      "severity": "error",
      "meaning": "The snapshot exceeds 2000 message records."
    },
    {
      "code": "MESSAGE_ID_INVALID",
      "severity": "error",
      "meaning": "message_id is not a canonical non-negative decimal string."
    },
    {
      "code": "MESSAGE_ID_DUPLICATE",
      "severity": "error",
      "meaning": "The snapshot repeats an exact message_id within the source scope, so pairing is ambiguous."
    },
    {
      "code": "EDITED_BEFORE_POSTED",
      "severity": "warning",
      "meaning": "The supplied edited_at_utc instant is earlier than posted_at_utc; the record remains comparable but needs source review."
    },
    {
      "code": "MESSAGE_AFTER_CAPTURE",
      "severity": "warning",
      "meaning": "A supplied posted or edited instant is later than the snapshot capture instant."
    },
    {
      "code": "STRING_TOO_SHORT",
      "severity": "error",
      "meaning": "A required non-null string is shorter than its configured field minimum."
    },
    {
      "code": "STRING_TOO_LONG",
      "severity": "error",
      "meaning": "A string exceeds its configured field limit."
    },
    {
      "code": "ENTITY_INVALID",
      "severity": "error",
      "meaning": "An entity has an invalid type, offset, length or value."
    },
    {
      "code": "IDENTIFIER_CONTROL",
      "severity": "error",
      "meaning": "An identifier or locator contains a forbidden control character."
    },
    {
      "code": "ISSUE_LIMIT_REACHED",
      "severity": "error",
      "meaning": "The snapshot produced the configured issue cap; remaining issues are not enumerated."
    }
  ],
  "syntheticStarterExpected": {
    "beforeMessages": 3,
    "afterMessages": 3,
    "unionRows": 4,
    "unchanged": 1,
    "changed": 1,
    "onlyBefore": 1,
    "onlyAfter": 1,
    "changedIds": [
      "1001"
    ],
    "changedFields": {
      "1001": [
        "edited_at_utc",
        "text"
      ]
    },
    "onlyBeforeIds": [
      "1003"
    ],
    "onlyAfterIds": [
      "1004"
    ]
  },
  "syntheticStarterActual": {
    "beforeMessages": 3,
    "afterMessages": 3,
    "unionRows": 4,
    "unchanged": 1,
    "changed": 1,
    "onlyBefore": 1,
    "onlyAfter": 1
  },
  "fixtureReplay": {
    "fixtures": 66,
    "allPassed": true,
    "fixtureIds": [
      "starter-four-state",
      "message-order-does-not-matter",
      "object-property-order-does-not-matter",
      "arbitrary-precision-numeric-id-order",
      "leading-zero-id-rejected",
      "source-scope-mismatch",
      "capture-order-invalid",
      "different-coverage-warning",
      "coverage-format-equivalent",
      "partial-coverage-warning",
      "coverage-after-capture-rejected",
      "message-before-coverage-rejected",
      "message-after-coverage-rejected",
      "duplicate-before-fatal",
      "duplicate-after-fatal",
      "null-to-value-field-added",
      "value-to-null-field-missing",
      "line-ending-difference-visible",
      "nfc-equivalent-difference-visible",
      "compatibility-normalization-forbidden",
      "zero-width-and-bidi-visible",
      "timestamp-format-only",
      "edit-marker-added",
      "edit-marker-removed",
      "edit-time-regressed",
      "entity-order-semantic-equality",
      "entity-null-empty-order-semantic-equality",
      "entity-value-change",
      "entity-offset-underflow-rejected",
      "entity-offset-fractional-rounding-rejected",
      "entity-offset-exponent-rejected",
      "entity-offset-negative-zero-rejected",
      "entity-offset-outside-target-rejected",
      "entity-unsafe-integer-boundary-rejected",
      "entity-length-zero-rejected",
      "entity-length-fractional-rounding-rejected",
      "entity-length-exponent-rejected",
      "entity-length-negative-zero-rejected",
      "entity-length-outside-target-rejected",
      "entity-length-unsafe-integer-boundary-rejected",
      "entity-text-end-boundary-accepted",
      "entity-caption-range-accepted",
      "entity-ambiguous-target-rejected",
      "entity-surrogate-start-split-rejected",
      "entity-surrogate-end-split-rejected",
      "media-digest-change",
      "schema-version-rejected",
      "platform-unsupported-rejected",
      "scope-id-space-rejected",
      "timestamp-invalid-rejected",
      "coverage-order-rejected",
      "digest-invalid-rejected",
      "string-too-short-rejected",
      "string-too-long-rejected",
      "identifier-control-rejected",
      "too-many-messages-rejected",
      "issue-limit-reached",
      "required-property-omitted",
      "unknown-property-rejected",
      "duplicate-json-member-rejected",
      "lone-surrogate-rejected",
      "oversized-input-rejected",
      "depth-limit-rejected",
      "message-after-capture-warning",
      "edited-before-posted-warning",
      "tombstone-state-change"
    ]
  },
  "sourceBoundaries": {
    "readerFacing": "Render only Telegram export, the immutable Telegram Desktop JSON writer, Telegram TDLib identity, RFC 8785, Unicode UAX 15, RFC 3339, NIST and CFTC as reader-facing method or caution sources. Google, Bing, OpenAI and IndexNow remain operational release evidence and must not inflate the public financial-method source list.",
    "searchDemand": "The archive shows adjacent historical visibility, not exact-query demand. It does not prove current indexing, search volume, future rank, traffic, conversion, AI retrieval, crawler access or citation for this proposed canonical. The page is selected for information gain and a distinct user task, not keyword count.",
    "futureIntegration": "Do not generate repository outputs, edit inbound owners, Policy, sitemaps or shared runtime, stage, commit, push, deploy, purge, use Chrome or submit discovery until the current serialized Git and runtime owner sends its final live SHA and explicit release."
  }
}
