Files
alkssh/tasks/implementation/w1-manifest.md
T
glm-5.3-flash 78ae905b21 build(manifest): land wave-1 dependency set and ADR-003 feature graph
- russh = "0.65", default-features off, aws-lc-rs only (ADR-002:
  no flate2, no rsa; tree RC-free except the recorded ssh-key
  0.7.0-rc.11 pin riding the russh keys path)
- alkcall 0.10, alkvault 0.1 version-pinned; no path deps
- standing toolkit: tokio, thiserror, tracing, parking_lot, zeroize
- edition 2024, rust-version 1.89
- ADR-003 feature graph: session/git/tunnel/sftp, default = [],
  flat and independent — features gate nothing yet (wave-2
  decline core is the first consumer)
- task w1-manifest completed; notes/summary filled

Verified: cargo tree (no rsa/pkcs1/flate2), cargo test, cargo test
--all-features, cargo clippy --all-targets -- -D warnings (default +
all-features), cargo fmt --check, taskgraph validate
2026-10-28 06:20:20 +00:00

101 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
id: w1-manifest
name: Wave 1 — manifest landing (russh pin + the feature graph)
status: completed
depends_on: []
scope: moderate
risk: medium
impact: project
level: implementation
---
## Description
Land the implementation dependency set and the ADR-003 feature graph —
the first commit of wave 1; everything else lands inside it. Per
ADR-002 decision 6 ("manifest lands with the dependency") and
`overview.md` §lifecycle note:
- **`russh = "0.65"`** (caret stops at the minor), `default-features =
false, features = ["aws-lc-rs"]` — the family crypto posture
(decision 2), **no `flate2`** (decision 3), **no `rsa`** (decision 4:
ed25519-only; the tree must drop `rsa`/`pkcs1` RC deps entirely —
`ssh-key =0.7.0-rc.11` riding the russh keys path is the recorded
exception).
- **`alkcall 0.10`** (identity/ACL types at the wire layer —
`IdentityProvider`, `Identity`, `AccessControl`), **`alkvault 0.1`**
(the ADR-005 custody model). Both pinned by version, never
sibling-checkout paths.
- Standing toolkit: `tokio`, `thiserror`, `tracing`, `parking_lot`,
`zeroize` (the ADR-005 `Zeroizing` wrap).
- **`edition = "2024"`, `rust-version = "1.89"`** (supersedes the
current 1.88/2021 manifest).
- **The ADR-003 feature graph declared from the first commit**:
`session`, `git`, `tunnel`, `sftp`, `default = []` — flat,
independent, no feature implies another. Features gate nothing yet
(the wave-2 decline core is their first consumer); the per-feature
sibling deps (`alktty` under `session`, `alktunnels` under `tunnel`,
`alkgit` under `git`) land with their first consuming wave, not as
dead manifest entries — recorded interpretation, flagged for the
wave-1 gate.
- Update the manifest comments (the current "deliberately empty until
implementation start" notes are superseded); keep comments to the
non-obvious-constraint class only.
Pre-flight: verify every pin exists on crates.io at the declared
version (`russh 0.65`, `alkcall 0.10`, `alkvault 0.1`); if a
crate/version is not published, stop and escalate — a blocking issue,
not something to work around.
## Acceptance Criteria
- [x] Manifest declares russh 0.65 with `aws-lc-rs` only;
`cargo tree` shows no `rsa`/`pkcs1` packages and no `flate2`
(the `ssh-key` RC pin excepted, recorded)
- [x] `alkcall 0.10` and `alkvault 0.1` pinned by version; no path
deps anywhere
- [x] Features `session`/`git`/`tunnel`/`sftp` declared, `default =
[]`; `cargo test --all-features` passes (features gate nothing
yet)
- [x] `edition = "2024"`, `rust-version = "1.89"` set
- [x] `cargo test`, `cargo clippy --all-targets -- -D warnings`,
`cargo fmt --check` pass
## References
- docs/architecture/decisions/002-russh-pin.md (decisions 1–6)
- docs/architecture/decisions/003-feature-graph.md (decision 1, §2)
- docs/architecture/overview.md §lifecycle note, §bounded-resources
- docs/research/russh.md (the 2026-10-26 re-verification section —
feature names, tree inventory, MSRV)
## Notes
> Pre-flight executed: `cargo info` confirmed `russh 0.65.0`,
> `alkcall 0.10.0`, and `alkvault 0.1.0` all published on crates.io —
> no blocking issue. `alkcall` pinned as `"0.10"` (latest in-range is
> 0.10.1; the caret stops at the minor, matching the ADR-002-russh
> convention for family pins). Toolkit versions: `thiserror 2.0`,
> `tracing 0.1`, `parking_lot 0.12`, `zeroize 1.9`,
> `tokio 1.54` (as already pinned). `alktty`/`alktunnels`/`alkgit`
> sibling deps deliberately not added — they land with their first
> consuming wave (recorded interpretation, flagged for the wave-1
> gate as the task states; no dead manifest entries). Manifest
> comments trimmed to the non-obvious-constraint class: the
> russh/`default`-features posture (ADR-002 — must not be re-enabled
> by a future editor) and the fail-closed feature-graph note (ADR-003).
## Summary
> Manifest landed: `russh = "0.65"` with
> `default-features = false, features = ["aws-lc-rs"]`; `alkcall 0.10`
> and `alkvault 0.1` version-pinned (no path deps); standing toolkit
> (`tokio`, `thiserror`, `tracing`, `parking_lot`, `zeroize`);
> `edition = "2024"`, `rust-version = "1.89"`; ADR-003 feature graph
> (`session`/`git`/`tunnel`/`sftp`, `default = []`, flat and
> independent). Verified: `cargo tree` contains no `rsa`, `pkcs1`, or
> `flate2` — only the recorded `ssh-key 0.7.0-rc.11` exception riding
> the russh keys path; `cargo test`, `cargo test --all-features`,
> `cargo clippy --all-targets -- -D warnings` (default and
> all-features), and `cargo fmt --check` all pass. `taskgraph
> validate` clean.