fix: local-bridge robustness, scope-gate order, sentinel contract; packaging/docs closeout (P8-P11, P2/P3/P15)
Closes review #003 (prepublish review for v0.1.0). - P8: StdinSink::poll_shutdown parks an inflight reserve+send on a full channel (waker registered) — a stdin blast followed by EOF delivers the EOF instead of stranding it - P9: five poisoned-lock .expect() sites -> unwrap_or_else(into_inner) - P10: three thread-spawn .expect() sites -> TtyError::AllocFailed - P5: tty:open scope gate runs before carriage/cmd/backend-lookup checks (no backend-name enumeration differential for unscoped ids) - P11: recv_stdout terminates on the zero-length drained sentinel; the sentinel is no longer yielded as an item (doc was already the contract); stderr has no sentinel (doc noted) - P2: exclude AGENTS.md + docs/plans/, drop dead Cargo.lock and docs/research/ entries (package list: 42 files, 659.2KiB) - P3: AGENTS.md phase status (all five landed), ADR range 001..009 (+ alktty-native ADR-009 in the mapping), alkcall guidance corrected to v0.4.x / pin "0.4.0"; architecture README ADR-009 row + landed-phase status - P15: backend.rs doc typo; redundant tokio-stream dev-dep removed; NegotiationError::Io arm logs; set_identity failure logs; input_pump.abort() at session end; TtySessionError::Open carries the accept_bi StreamError (no io::Error flattening); borrowing deserialize in open_via_channels (no params.clone()); error_response_bytes guards an "error" key in fields; trivial inline comments promoted/removed; plan-doc test counts + doc front-matter refreshed; session tests that raced session teardown under the abort change use a GatedBackend (exit held until released) Verification: cargo test 104 lib / --all-features 147; clippy (all-targets + wasm32) -D warnings; fmt; wasm check; doc 0 warnings; publish dry-run OK.
This commit is contained in:
@@ -19,7 +19,7 @@ Syntax Tree) document for the wire format, and the ADRs.
|
||||
## Applicable ADRs
|
||||
|
||||
Ported from the alknet mono-repo and renumbered into alktty's ADR
|
||||
range (001..008). The alknet originals at
|
||||
range (001..009; ADR-009 is alktty-native). The alknet originals at
|
||||
`/workspace/@alkdev/alknet/docs/architecture/decisions/` remain the
|
||||
authoritative source for any ADR not yet ported, and for the alknet
|
||||
ADRs referenced by alknet number in the docs below (which are not
|
||||
@@ -35,6 +35,7 @@ tty-specific and therefore not ported into alktty's ADR range).
|
||||
| [006](decisions/006-negotiation-framing-self-contained.md) | Self-Contained Negotiation Framing (No alkcall-Internal-Wire-Types Dependency) | alknet ADR-057 | Accepted |
|
||||
| [007](decisions/007-tty-inside-channels.md) | TTY Inside Channels — Sub-Streams, Not Wire Format | alknet ADR-077 | Accepted (**reversed by ADR-008** — kept for historical context) |
|
||||
| [008](decisions/008-channels-pure-channel-multiplexing.md) | Channels Pure Channel Multiplexing (8-Byte Header, No `stream_type`) | alknet ADR-093 | Accepted (amends alknet ADR-071/074; reverses ADR-007) |
|
||||
| [009](decisions/009-channels-open-op-is-the-negotiation.md) | The Channels Open Op's `input` Is the Negotiation | alktty-native | Accepted (resolves review #001 L1; amended by review #002 R4 — parse failure is a client-visible error frame) |
|
||||
|
||||
## Key Design Principles
|
||||
|
||||
@@ -135,11 +136,10 @@ tty-specific and therefore not ported into alktty's ADR range).
|
||||
|
||||
## References
|
||||
|
||||
- `docs/plans/project-setup.md` — the current plan (phases 0–5).
|
||||
Phases 0–3 are landed; Phase 4 (this directory: architecture docs +
|
||||
BAST schema + renumbered ADRs) is landed by this commit; Phase 5
|
||||
(tests, including integration tests in `tests/` at the crate root) is
|
||||
not yet done.
|
||||
- `docs/plans/project-setup.md` — the current plan (phases 0–5). All
|
||||
five phases are landed: Phase 4 landed this directory (architecture
|
||||
docs + BAST schema + renumbered ADRs); Phase 5 landed the tests,
|
||||
including the integration tests in `tests/` at the crate root.
|
||||
- alknet originals of the ported ADRs (alknet ADR-052, 053, 054, 055,
|
||||
056, 057, 077, 093) at
|
||||
`/workspace/@alkdev/alknet/docs/architecture/decisions/` — the
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
status: draft (ported from alknet 2026-08-17; alknet-tty → alktty,
|
||||
alknet-tty-local → alktty's `local` feature module, alknet/tty →
|
||||
alk/tty, alknet-core → alkcall::core, alknet-call → alkcall, ADRs
|
||||
renumbered 052..093 → 001..008)
|
||||
last_updated: 2026-08-17
|
||||
renumbered 052..093 → 001..009)
|
||||
last_updated: 2026-09-05
|
||||
---
|
||||
|
||||
# alktty — Overview
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
---
|
||||
status: draft (ported from alknet 2026-08-17; alknet-tty → alktty,
|
||||
alknet/tty → alk/tty, alknet-core → alkcall::core, alknet-call →
|
||||
alkcall, ADRs renumbered 052..093 → 001..008)
|
||||
last_updated: 2026-08-17
|
||||
status: draft (ported from alknet 2026-08-17; alknet/tty → alk/tty,
|
||||
alknet-core → alkcall::core, alknet-call → alkcall, ADRs renumbered
|
||||
052..093 → 001..009)
|
||||
last_updated: 2026-09-05
|
||||
---
|
||||
|
||||
# alktty — TtyAdapter and Session Lifecycle
|
||||
|
||||
Reference in New Issue
Block a user