feat: add phone frequency controls and modularize codebase
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"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."
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user