feat(review 008 Unit 3c): the gate-2 e2e harness; 0.8.0 release bookkeeping
- src/channels/gate2_tests.rs (ADR-051 gates 6/7, review 008 gate 2): the full consumer -> hub (HubLegTemplate) -> spoke relay e2e — the open resolves with the hub-allocated channel_id, `bound` survives the relay, data flows both directions with a fake 8-byte chunk header riding verbatim (the hub never parses the data plane, ADR-034/035), spoke-side close cascades to clean reclaim on both legs; hub-side disconnect (the consumer's duplex end dropped via a killable transport proxy) tears down both legs with the ledger decremented; the mid-establishment window (ADR-051 §6) pinned with its two reclaim signals — the consumer leg reclaims at its own transport EOF, the spoke channel (allocated before the establisher replied) is the honest residual, reclaimed when the spoke-leg transport ends; the channels/tty/sub standard-shape companion pins no derivation regression. - src/channels/relay.rs: the relay's adopted producer-leg channel entry now reclaims when the relayed pump completes (teardown after pump_bidi) — the consumer-leg wrapper's teardown cannot see the producer leg's manager; the RelayPlan carries the spoke id for the reclaim. - Release bookkeeping: 0.7.1 -> 0.8.0, the CHANGELOG entry covering Units 1-3 (Establishment reply projection, open_channel_with_reply, flavor-form discovery derivation, ChannelRelay, HubLegTemplate, gate-2 harness); review 008 Status -> Resolved with the U-1/U-2 commit refs and the 955->945 errata note; ADR-051 Status -> all units landed + the §6 mid-establishment residual expanded to the two-reclaim-signal shape the gate pins; the stale "0.7.2" version mentions in ADR-047/049 corrected to 0.8.0 (the units land unreleased). Verification: cargo test 669 passed / 0 failed; clippy --all-targets -- -D warnings clean; fmt --check clean; cargo doc --no-deps clean; cargo check + clippy on wasm32-unknown-unknown clean; cargo publish --dry-run --allow-dirty passed.
This commit is contained in:
1 parent
4e52bd496c
commit
50182d7298
10 files changed
+903
-21
No files matched your search
@@ -2,6 +2,24 @@
|
||||
|
||||
## Status
|
||||
|
||||
Resolved — all three remediation units landed in alkcall 0.8.0
|
||||
(2026-09-18): Unit 1 `82ddddf` (U-2, ADR-049 amendment 3), Unit 2
|
||||
`620180d` (U-1, ADR-047 amendment 3), Unit 3a `90c1820` (the in-tree
|
||||
`ChannelRelay`, ADR-051), Unit 3b `4e52bd4` (the hub-leg install
|
||||
template, ADR-051 §5), Unit 3c (the gate-2 e2e harness in
|
||||
`src/channels/gate2_tests.rs` + the relay's producer-leg teardown +
|
||||
this release's bookkeeping). Two notes on the as-filed text: the U-2
|
||||
line citation is 945, not 955 (see Errata), and U-1's gate 2 landed as
|
||||
an in-tree relay component plus a permanent e2e gate rather than a
|
||||
test-only harness (the escalation the remediation plan pinned above).
|
||||
Original findings below, retained as filed (verified against tree
|
||||
`3b36b40`, 0.7.1).
|
||||
|
||||
> **Errata (post-landing):** U-2 cites the reply construction at
|
||||
> `src/channels/operations.rs:955`; the cf-006/007 commit had already
|
||||
> shifted it to 945 by filing time. The citation in the finding below
|
||||
> is left as filed; the verified line is 945.
|
||||
|
||||
Open — filed 2026-09-16 from the alktunnels graduation spec work
|
||||
(ADRs 007/008 at
|
||||
`/workspace/@alkdev/alktunnels/docs/architecture/decisions/`;
|
||||
@@ -29,7 +47,11 @@ changes the channels data-plane wire format (ADR-034/071 untouched).
|
||||
|
||||
## U-1: Flavor-form open-op ids in discovery derivation
|
||||
|
||||
**Finding.** ADR-047 §1 pins the open-op naming to exactly two shapes
|
||||
**Finding.** *(Resolved — ADR-047 amendment 3, Unit 2 `620180d`; the
|
||||
explicit `channel_open_alpn` field plus the last-segment derivation,
|
||||
exactly the pinned (b)+(c) shape. Gate 2 landed as the in-tree relay +
|
||||
`src/channels/gate2_tests.rs`, Unit 3.)* ADR-047 §1 pins the open-op
|
||||
naming to exactly two shapes
|
||||
per ALPN — `channels/<alpn>/sub` and `channels/<alpn>/pub` — and Gap
|
||||
F's marker derivation (`rebuild_spec_for`,
|
||||
`src/client/from_call.rs:209` + `derive_alpn_from_op_name`,
|
||||
@@ -107,7 +129,10 @@ relay), which is the worst failure mode for a relay.
|
||||
|
||||
## U-2: Establisher → reply projection (`Establishment` contributing reply fields)
|
||||
|
||||
**Finding.** The open-op success reply is constructed by the wrapper
|
||||
**Finding.** *(Resolved — ADR-049 amendment 3, Unit 1 `82ddddf`: the
|
||||
`reply_fields` carrier, the `channel_id` reservation failing loudly,
|
||||
`open_channel_with_reply` on the client.)* The open-op success reply
|
||||
is constructed by the wrapper
|
||||
and hardcoded to the channel id:
|
||||
`ResponseEnvelope::ok(request_id, json!({ "channel_id": channel_id }))`
|
||||
(`src/channels/operations.rs:955` in `run_open_wrapper`). ADR-049 §1
|
||||
|
||||
Reference in new issue
Block a user