Six implementation tasks + the gate under tasks/implementation/, chained sequentially (the mappings replace stubs in the same Handler impl and share the decline-matrix test binaries): - w3-seam-config: the serve-config's per-feature seam handles (alktty backends/ownership/selector; the alkgit quartet/pipeline/ push-options flag) + the optional sibling deps — wave 3's first course correction to the wave-1 config surface - w3-decline-tracing: the wave-2 gate's booked finding — the decline/serve-path tracing vocabulary, landed before the mappings - w3-git-mapping: the full exec grammar replaces the wave-2 probe + the serve_duplex_resolved dispatch + the store-and-take handoff - w3-tty-session: the translation bridge + the exit-derivation contract (rules 1-6, the signum table) - w3-tunnel-direct: the route-1 bridge (accept only after the fabric open succeeds) + set_identity propagation + the capacity-across- fabric-window mechanics - w3-tunnel-listen: the -R listen flow + the forwarded-tcpip data leg (the POC-untested leg; the stop-and-book provision) - review-wave-3: the gate The plan carries the wave-3 decomposition record with four interpretations flagged for the gate (the serve-config course correction, the already-discharged server-side sftp bullet, the w3-tunnel-listen open mechanics, the booked-items' wave-3 homes). taskgraph validate: 26 tasks, clean. Sibling pins verified against crates.io at decomposition time: alktty 0.8.1 / alkgit 0.1.0 / alktunnels 0.4.1 / alkcall 0.10.1.
3.2 KiB
3.2 KiB
id, name, status, depends_on, scope, risk, impact, level
| id | name | status | depends_on | scope | risk | impact | level | |
|---|---|---|---|---|---|---|---|---|
| w3-decline-tracing | Wave 3 — decline-path tracing (the wave-2 gate's booked finding) | pending |
|
narrow | low | component | implementation |
Description
Land the wave-2 review gate's booked finding: observability on the
decline paths. tracing rides the manifest per the ADR-002 toolkit but
so far nothing in src/ emits — a request-level decline's "reason" is
today only the routing decision documented per build. The real serving
paths land in this wave's mapping tasks, where serve/decline tracing
matters — so the event vocabulary lands first and the mappings
inherit it.
- The family-convention check first — before choosing the event
shape, read the family's established tracing posture (alktty /
alkgit / alktunnels / alkcall
src/: levels, event/field naming, what gets emitted on error and decline paths) and adopt it — no alkssh-private dialect; record what was read and chosen. - The event vocabulary — the deciding context on every decline: row + feature build + channel id (+ the decline class — open-level vs request-level vs serving-path, and where applicable the failure shape carried). The mapping tasks then emit at their sites.
- Instrument what exists now — the open-level declines
(unfeatured / never-feature / cap-exceeded), the request-level
capability declines (
subsystem/env/x11/agent, the unfeatured-parse routes), the seam-stub serving declines, and the serve-path skeleton (spawned path started / ended, failure) — the stubs' events carry into the mapping tasks' replaced paths. - Safety posture (conventions 6, OQ-03): no secret material ever enters an event, never the username; identity/fingerprint exposure on decline events is decided here against the family posture and recorded (auth.md: log exposure is deployment policy — the crate's events must be safe-by-default at every level).
Small, cross-cutting unit — one pass over the landed handler/dispatch sites with the vocabulary, so the three mapping branches never land inconsistent events.
Acceptance Criteria
- The family tracing posture read and recorded; the event
vocabulary established (row + build + channel + decline class)
and used at every decline site in
src/ - Serve-path skeleton events in place (start/ended/failure) so the mapping tasks' spawned paths inherit shaped rows
- The safety posture recorded (no secrets, no username; what identity detail may appear decided)
- A test pins the event presence at the decline sites (or the doc-test convention the family uses — decide + record)
cargo test,cargo clippy --all-targets -- -D warnings,cargo fmt --check,cargo doc --no-depspass
References
- docs/plans/implementation.md §Wave 2 (the booked finding, review-wave-2 §Notes)
- docs/architecture/mapping.md §Wire decline reasons (the two decline classes), §Decline matrix
- docs/architecture/auth.md §Dispositions (log exposure posture), docs/architecture/decisions/002-russh-pin.md (the toolkit)
- sibling
src/tracing usage — the convention read this task adopts
Notes
To be filled at implementation time.