{
  "schema": "ai-01-human-decision-v1",
  "owner_role": "synthetic-api-contract-owner",
  "status": "accepted-for-synthetic-contract",
  "question": "How should this API carry opaque decimal identifiers beyond JavaScript's safe integer range?",
  "selected": "canonical decimal JSON string matching ^[1-9][0-9]*$",
  "reasoning": "The declared clients do not all expose source text during parsing, identifiers need no arithmetic, ordinary Number parsing changes identity, conventional reviver conversion preserves the rounded value, and ordinary BigInt serialization needs extra policy.",
  "evidence": ["C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "STR-01", "VAL-01", "VAL-11"],
  "rejected_or_deferred": [
    {
      "alternative": "unbounded JSON number parsed as Number",
      "disposition": "rejected",
      "reason": "identity changes beyond the safe integer range"
    },
    {
      "alternative": "conventional reviver to BigInt",
      "disposition": "rejected",
      "reason": "conversion occurs after Number precision has already been lost"
    },
    {
      "alternative": "context.source reviver",
      "disposition": "deferred",
      "reason": "works in the pinned runtime but is not a declared capability of every client"
    },
    {
      "alternative": "lossless JSON number parser",
      "disposition": "deferred",
      "reason": "preserves numeric wire syntax but its client support, performance, and maintenance were not evaluated"
    },
    {
      "alternative": "restrict every identifier to Number.MAX_SAFE_INTEGER",
      "disposition": "credible-if-domain-allows",
      "reason": "simpler numeric contract if the issuing system can enforce the bound permanently"
    }
  ],
  "consequences": [
    "schema and generated clients must expose the identifier as a string",
    "servers must reject non-canonical decimal syntax rather than coerce it",
    "an existing numeric contract requires an explicit versioned migration",
    "clients may convert the validated string to BigInt internally when needed"
  ],
  "unresolved": ["U1", "U2", "U3"],
  "reversal_conditions": [
    "all required clients adopt a verified lossless numeric representation",
    "the issuing domain guarantees identifiers never exceed Number.MAX_SAFE_INTEGER",
    "a versioned compatibility requirement mandates numeric JSON syntax"
  ],
  "authority": "The synthetic owner made this bounded decision; neither candidate artifact authorizes it.",
  "provenance": "synthetic decision; not Brian's API or preference"
}
