Files
lislgosms/docs/contracts/refactoring-r0-manifest.json
T

56 lines
1.9 KiB
JSON

{
"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."
]
}
]
}