{
  "provenance": "synthetic protocol fixture; no named AI model produced this artifact",
  "question": "How should a JSON API carry decimal identifiers which may exceed JavaScript's safe integer range without changing identity?",
  "decision_boundary": "synthetic public wire contract with JavaScript clients and clients which may not expose JSON source text to a reviver",
  "hypotheses": [
    {
      "id": "H1",
      "claim": "ordinary JSON numbers are exactly interoperable for every decimal integer",
      "falsifier": "a conforming client parses one source integer as a different value"
    },
    {
      "id": "H2",
      "claim": "a conventional two-argument reviver can recover digits lost during Number conversion",
      "falsifier": "the reviver receives the already rounded Number"
    },
    {
      "id": "H3",
      "claim": "current source-text reviver context can recover a large primitive integer in the pinned runtime",
      "falsifier": "the runtime omits context.source or returns altered source text"
    },
    {
      "id": "H4",
      "claim": "BigInt can be serialized by ordinary JSON.stringify without a policy",
      "falsifier": "JSON.stringify throws for the BigInt value"
    },
    {
      "id": "H5",
      "claim": "canonical decimal strings preserve identifier identity across the declared clients",
      "falsifier": "parse and serialize change an accepted string or validation accepts ambiguous grammar"
    }
  ],
  "requested_evidence": [
    "RFC 8259 interoperability range",
    "ECMAScript safe-integer definition",
    "JSON.parse reviver conversion order and source context",
    "BigInt JSON serialization behavior",
    "pinned runtime observations",
    "wire compatibility and migration assumptions"
  ],
  "verification_status": "awaiting sources, reproduction, critique, and human decision"
}
