{
  "schema": "ai-01-claim-ledger-v1",
  "claims": [
    {
      "id": "C1",
      "category": "source",
      "claim": "RFC 8259 identifies integers from -(2^53)+1 through (2^53)-1 as exactly interoperable across common implementations.",
      "provenance": ["SRC-RFC-8259"],
      "verification": "pending source retrieval",
      "decision_effect": "reject an unbounded numeric identifier contract"
    },
    {
      "id": "C2",
      "category": "source",
      "claim": "ECMAScript defines 9007199254740991 as Number.MAX_SAFE_INTEGER and shows 9007199254740992 and 9007199254740993 sharing one Number value.",
      "provenance": ["SRC-ECMA-NUMBER"],
      "verification": "pending source retrieval",
      "decision_effect": "sets the Number identity boundary"
    },
    {
      "id": "C3",
      "category": "observation",
      "claim": "ordinary JSON.parse changes source identifier 9007199254740993 to Number value 9007199254740992 in the pinned runtime.",
      "provenance": ["NUM-02"],
      "verification": "pending reproduction",
      "decision_effect": "reject ordinary Number parsing for the unbounded identifier"
    },
    {
      "id": "C4",
      "category": "observation",
      "claim": "a conventional reviver converts the already rounded Number to 9007199254740992n.",
      "provenance": ["REV-01"],
      "verification": "pending reproduction",
      "decision_effect": "reject the answer-first candidate"
    },
    {
      "id": "C5",
      "category": "source",
      "claim": "current JSON.parse revivers may receive primitive source text through context.source.",
      "provenance": ["SRC-JSON-PARSE"],
      "verification": "pending source retrieval",
      "decision_effect": "retain source-context parsing as a credible runtime-specific alternative"
    },
    {
      "id": "C6",
      "category": "observation",
      "claim": "Node 24.12.0 recovers 9007199254740993n from context.source.",
      "provenance": ["REV-02"],
      "verification": "pending reproduction",
      "decision_effect": "correct the overly broad claim that every reviver is too late"
    },
    {
      "id": "C7",
      "category": "observation",
      "claim": "ordinary JSON.stringify throws TypeError for BigInt in the pinned runtime.",
      "provenance": ["BIG-01"],
      "verification": "pending reproduction",
      "decision_effect": "require an explicit wire serialization policy"
    },
    {
      "id": "C8",
      "category": "assumption",
      "claim": "the synthetic public contract includes clients without source-context reviver support and treats identifiers as opaque.",
      "provenance": ["A2", "A3"],
      "verification": "declared, not proven",
      "decision_effect": "favor canonical decimal strings for this contract"
    },
    {
      "id": "C9",
      "category": "inference",
      "claim": "canonical decimal strings are the smallest interoperable choice under the declared client and identifier assumptions.",
      "provenance": ["C1", "C3", "C4", "C6", "C7", "C8", "STR-01", "VAL-01", "VAL-11"],
      "verification": "pending assembled evidence",
      "decision_effect": "supports the synthetic human decision"
    },
    {
      "id": "C10",
      "category": "unresolved",
      "claim": "a lossless numeric parser may be preferable when numeric wire compatibility is mandatory.",
      "provenance": ["U3"],
      "verification": "not evaluated by this fixture",
      "decision_effect": "reversal condition; do not dismiss the alternative"
    }
  ]
}
