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
@@ -7,6 +7,12 @@ ops-put task hits `channel:pub_open_not_implemented` when its Sink op
|
||||
carrying the `channel_open` marker is invoked, exactly as the code
|
||||
comments predict. The downstream project is paused on this.
|
||||
|
||||
**All four findings resolved 2026-10-13** — implemented in alkcall
|
||||
main ahead of the single 0.9.0 publish (see the resolution note under
|
||||
S-01's remediation options; the pinned stub tests are deleted and the
|
||||
`not_implemented` source-tree guard is part of the test suite,
|
||||
`tests/stub_guard.rs`, wired into AGENTS.md's "Stub Guard" section).
|
||||
|
||||
Policy context: shipping stubs to crates.io is now a hard failure per
|
||||
the repo owner's ruling. Any handler that registers successfully and
|
||||
returns an error of the form `*:not_implemented` on every invocation
|
||||
@@ -94,13 +100,37 @@ least fails loudly.
|
||||
|
||||
**Remediation options (pick one before the next release):**
|
||||
|
||||
> **CORRECTED 2026-10-13 (reviews 011 + ADR-047 amendment 4):** the
|
||||
> implemented fix is option 1, but option 1's sketch below was the
|
||||
> wrong shape for marked ops and is superseded — the correct shape is
|
||||
> review 011's (also pinned as ADR-047 amendment 4): the initiator
|
||||
> allocates and streams bytes on the channel before the open
|
||||
> resolves; the responder adopts (`register_pub_openable`); the
|
||||
> wrapper is the responder of record, awaiting the handler and
|
||||
> merging ack fields + handler result into ONE response; zero
|
||||
> `call.published` on marked ops (chunks rejected loudly);
|
||||
> `RelayError::PubTypedOpen` is replaced by the relay put
|
||||
> translation. Handing the `OpenHandler` the serving loop's
|
||||
> `PublishStream` (the sketch below) is ADR-046's *unmarked* pub
|
||||
> semantics and would have re-validated MB-scale binary payloads as
|
||||
> JSON call chunks. The downstream agent caught this in review 011
|
||||
> before the amendment was implemented.
|
||||
|
||||
> **RESOLVED 2026-10-13** — implemented in alkcall main (the single
|
||||
> 0.9.0 publish, review 011 §6): S-01 via the marked-pub contract
|
||||
> above, S-02/S-03 implemented (ADR-052/ADR-053), S-04
|
||||
> forward-through (ADR-022, 2026-10-13 amendment), the
|
||||
> `not_implemented` source-tree guard wired into AGENTS.md's
|
||||
> "Stub Guard" section, and the pinned stub tests deleted.
|
||||
|
||||
1. **Implement the wrapper** — allocate the channel id, run the
|
||||
establishment phase (reply fields carry the offer ack, per ADR-047
|
||||
§1 and ops-put's acceptance criteria), hand the `OpenHandler` the
|
||||
`PublishStream` already produced by the serving loop along with the
|
||||
channel's `Connection`. All plumbing exists; this is wrapper glue,
|
||||
plus deciding the OpenHandler-reads-channel-vs-reads-PublishStream
|
||||
question in an amended ADR-047.
|
||||
question in an amended ADR-047. *[Superseded sketch — see the
|
||||
correction above; review 011's shape is the pinned one.]*
|
||||
2. **Reject at registration** — return an error from
|
||||
`register_openable_with_establisher` for `OperationType::Pub`,
|
||||
mirroring `RelayError::PubTypedOpen` (src/channels/relay.rs:147-156),
|
||||
|
||||
Reference in new issue
Block a user