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
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in new issue
Block a user