docs: step-3 rewrites — OQ-39/40 resolved, C-08 closed, channel-operations.md put/control/resources contracts, review 010/011 closed with the S-01 sketch corrected
- open-questions.md: OQ-39 → ADR-052, OQ-40 → ADR-053 (resolutions replace the deferred-until-needed posture) - channel-operations.md: the put contract (initiator allocates + streams, reserved input key, one response, acks-in-result sentence), the control routing (ADR-052), the enumerator aggregation (ADR-053), the connection-owner paragraph's pub-era correction, the ADR table rows - ADR-051 §6: PubTypedOpen → the put translation; ADR-047's 2026-09-06 amendment records its era honestly (the dynamic half is now ADR-053) - review 010: all four findings resolved (with the S-01 sketch correction so the published record stops carrying the wrong-graph reading) - review 011: closed (all seven pins implemented + gates landed) - review 001 C-08: resolved note (odd/even + adopt, implemented) - AGENTS.md: the 'Stub Guard' section — the not_implemented grep is part of cargo test; the registration invariants and the implement-or-stop ruling are release-blocking Verified: cargo test (696+guard), clippy -D warnings, fmt, doc clean.
This commit is contained in:
1 parent
944c300c17
commit
3317ea0963
10 files changed
+205
-43
No files matched your search
@@ -213,6 +213,28 @@ cargo clippy --target wasm32-unknown-unknown -- -D warnings
|
||||
cargo semver-checks check-release # before a release
|
||||
```
|
||||
|
||||
## Stub Guard (release-blocking)
|
||||
|
||||
Four registered-but-always-failing stubs shipped across nine published
|
||||
versions (reviews 010/011). This class is now release-blocking in both
|
||||
directions:
|
||||
|
||||
1. **Test guard**: `cargo test --test stub_guard` (part of `cargo
|
||||
test`) fails if the string `not_implemented` appears anywhere in
|
||||
`src/`. A "loud failure" stub is still a stub.
|
||||
2. **Registration-time invariants** (ADR-047 amendment 4 §4.8): a
|
||||
marked (`channel_open`) spec refuses the generic registration path
|
||||
(`OperationRegistry::register`, `CallConnection::register_imported`,
|
||||
`op/register`) and refuses `publish_schema`; the sanctioned
|
||||
registrations are the channel wrapper family
|
||||
(`register_openable*`, `register_pub_openable`,
|
||||
`register_relay_openable`).
|
||||
3. **The ruling**: implement-or-stop-advertising before any publish.
|
||||
The only permitted deferral statement is "not this session" — never
|
||||
"next version", "not v1", or any bucket that parks a decision on an
|
||||
unknown future release. Every handler that registers on a
|
||||
discoverable surface must be capable of succeeding.
|
||||
|
||||
## Architecture Context
|
||||
|
||||
- `docs/architecture/` — the authoritative spec. Read it before
|
||||
|
||||
Reference in new issue
Block a user