Skip to content

Commit da49ec6

Browse files
committed
docs(adr): record the release gates that block a fleet-ready verdict
Merging puts this in the next release, so the bar is fleet-ready rather than code-complete, and green CI is evidence for the code gate alone. Enumerates what is still open: the mutable protocol branch pin, mixed-version proof over a real connection, deployment ordering, observability of the adoption counter, NAT/canary, rollback rehearsal and fleet safety. Calls out that deployment ordering is the one gate that is not inert. The refusal machinery cannot fire while MIN and CURRENT are both the first declarable version, but against a fleet that cannot answer a versioned request every first contact still costs a probe wait, so releasing the client ahead of the nodes adds real latency to cold uploads.
1 parent 6b005a7 commit da49ec6

1 file changed

Lines changed: 17 additions & 0 deletions

File tree

docs/adr/ADR-0010-settlement-version-and-pre-payment-compatibility.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,23 @@ The cost of that is roughly two minutes per merkle E2E test for as long as the s
159159

160160
**Still outstanding:** the reverse direction, old client against an upgraded node, and a fleet with both. Those need a testnet built from this branch's `ant-node` rather than the published one, which is not available until the coordinated set lands. Also unproven end to end: structured refusal, lost refusal, and send failure against real peers, which are pinned at unit level only.
161161

162+
### Release gates
163+
164+
Merging puts this in the next release, so the bar is fleet-ready, not code-complete. Green CI covers the code gate and nothing else. **The set is not production ready while any of these is open:**
165+
166+
| Gate | Status |
167+
|---|---|
168+
| Code / CI | Proven across all three repos |
169+
| Dependency | Open: both downstream crates pin a mutable protocol branch |
170+
| Mixed-version | Partial: new-client against an old fleet is proven by the client suite; the gate itself has never run over a real connection, because the devnet speaks the pre-versioned dialect |
171+
| Deployment ordering | Open, and **not inert**: against a fleet that cannot answer a versioned request every first contact costs a probe wait, so releasing the client ahead of the nodes adds real latency to cold uploads |
172+
| Observability | Open: the unversioned-quote counter is the signal that retires the legacy path and has never been read in production |
173+
| NAT / canary | Open: no canary; relayed and NAT'd peers are the paths this adds work to |
174+
| Rollback | Argued, not rehearsed |
175+
| Fleet safety | Open: the corroboration quorum and the client-wide latch have never met a real fleet |
176+
177+
The refusal machinery is inert on arrival, since `MIN` and `CURRENT` are both the first declarable version, so nothing can be refused yet. That lowers the risk. It does not close a gate, and the client-side cost above is live regardless.
178+
162179
### Re-open triggers
163180

164181
- The unversioned-quote count failing to decay, which would mean a long tail of clients the gate can never protect and would raise the priority of option 3.

0 commit comments

Comments
 (0)