Files
alkssh/tasks/implementation/w3-decline-tracing.md
T
glm-5.3-flash d1f755f2d9 docs(tasks): decompose wave 3 — the server mappings
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.
2026-10-28 12:32:13 +00:00

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
w3-seam-config
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-deps pass

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.