{ "version": "r0", "baselineCommit": "0af671b4ed4713912e703defd08791f164d4eb25", "purpose": "Freeze the cross-process contracts and characterization gates before production code is split.", "contracts": [ { "kind": "redis-stream", "schema": "docs/contracts/gateway-queue-messages.schema.json", "examples": [ "docs/contracts/examples/submit-command.json", "docs/contracts/examples/submit-result.json", "docs/contracts/examples/receipt-event.json", "docs/contracts/examples/uplink-event.json" ], "validator": "tools/spike/validate-gateway-queue-contract.mjs" }, { "kind": "cmpp-packet", "tests": [ "gateway/internal/cmpp/gocmpp_integration_test.go", "gateway/internal/upstream/submit_packet_test.go", "gateway/internal/inbound/server_test.go" ], "invariants": [ "CMPP 2.0 and 3.0 packets remain separately encoded and decoded.", "SubmitResp preserves the request Sequence_Id.", "Deliver receipts preserve Msg_Id and require a non-zero business acknowledgement." ] }, { "kind": "gateway-reconnect", "tests": [ "gateway/internal/upstream/reconnect_integration_test.go", "gateway/internal/upstream/connection_loss_test.go" ], "invariants": [ "Network reconnect uses capped backoff.", "Authentication failures use slow retry.", "An explicit disconnect does not start an automatic reconnect." ] }, { "kind": "send-and-billing", "tests": [ "api/src/send-chain/send-chain.service.spec.ts", "api/src/billing/billing.service.spec.ts" ], "invariants": [ "Concurrent claims cause one enqueue, retry, downstream delivery, or refund.", "Stale events cannot downgrade a later terminal state.", "Freeze, charge, release, and refund operations retain their idempotency keys." ] } ] }