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:
glm-5.3-flash committed 2026-10-13 09:04:13 +00:00
1 parent 944c300c17
commit 3317ea0963
10 files changed
+205 -43

No files matched your search

@@ -962,7 +962,11 @@ promises.
vice versa) as the smaller change; record the decision in ADR-047 §5
or a follow-on ADR. Then implement the adoption path: the
non-allocating side registers the remotely-assigned id in its
manager/mux.
manager/mux. **[RESOLVED 2026-10-06/13: the implemented odd/even
split (connect odd, accept even) + `ChannelManager::adopt_channel`;
the marked-pub contract rides it end-to-end — ADR-047 amendment 4;
the C-08-blocker stub class this decision previously gated on is
closed with reviews 010/011's single-publish fixes.]**
- C-12: reject `channel_id: 0` in the `channel/close` handler.
- C-13: `channel/close` must drain (signal EOF to the handler, await
pump completion) before `abort`/decrement; implement REQ-CH-06
+31 -1
View File
@@ -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),
@@ -2,13 +2,22 @@
## Status
Open — filed 2026-10-13. From alkblobs (the downstream crate paused on
Closed — filed 2026-10-13. From alkblobs (the downstream crate paused on
review 010 S-01; its ops-put task gates on this surface). Purpose:
correct review 010's S-01 remediation sketch before the amendment is
drafted, enumerate what the amendment must pin so one publish
(0.9.0) fixes all four stubs right, and record the downstream
requirements and non-requirements from the consumer seat.
**Closed 2026-10-13:** all seven §2 pins are implemented and pinned in
ADR-047 amendment 4 / ADR-052 / ADR-053 / ADR-022's 2026-10-13
amendment, with the §3 verification gates landed as tests
(`channels::operations::pub_open_tests`,
`channels::hub_leg::gate2_tests::gate_pub_relay_put_end_to_end`, the
registration-invariant tests in `registry::registration` and
`registry::op_register`), the guard is `tests/stub_guard.rs`, and the
docs rewrites below are done. The §6 sequencing concluded.
Input basis: alkblobs ADR-014
(`/workspace/@alkdev/alkblobs/docs/architecture/decisions/
014-marked-pub-put-contract-and-alkcall-gate.md`, committed 7ac0099)