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
This commit is contained in:
1 parent
0b1bc284fa
commit
78ae905b21
3 files changed
+2659
-22
No files matched your search
Generated
+2604
-1
File diff suppressed because it is too large.
Load diff
+24
-13
@@ -1,14 +1,14 @@
|
|||||||
# Single-crate protocol/door crate (the alktty template). No workspace:
|
# Single-crate protocol/door crate (the alktty template). No workspace:
|
||||||
# the composition story is deferred — alkssh's substance is the mappings
|
# the composition story is deferred — alkssh's substance is the mappings
|
||||||
# (family ADR-003); the russh pin is decided (ADR-002: 0.65.0, aws-lc-rs).
|
# (family ADR-003).
|
||||||
[workspace]
|
[workspace]
|
||||||
members = ["."]
|
members = ["."]
|
||||||
|
|
||||||
[package]
|
[package]
|
||||||
name = "alkssh"
|
name = "alkssh"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
edition = "2021"
|
edition = "2024"
|
||||||
rust-version = "1.88"
|
rust-version = "1.89"
|
||||||
license = "MIT OR Apache-2.0"
|
license = "MIT OR Apache-2.0"
|
||||||
description = "SSH adapter for the alk family: russh-wrapped vanilla-ssh termination bridged to/from alkcall channels — session/pty, tunnels, git exec — with every capability mapping a fail-closed cargo feature (no features: no capabilities)"
|
description = "SSH adapter for the alk family: russh-wrapped vanilla-ssh termination bridged to/from alkcall channels — session/pty, tunnels, git exec — with every capability mapping a fail-closed cargo feature (no features: no capabilities)"
|
||||||
repository = "https://git.alk.dev/alkdev/alkssh"
|
repository = "https://git.alk.dev/alkdev/alkssh"
|
||||||
@@ -24,20 +24,31 @@ exclude = [".opencode/", "AGENTS.md", "docs/reviews/", "docs/plans/", "docs/rese
|
|||||||
name = "alkssh"
|
name = "alkssh"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
# The capability feature graph (ADR-003) lands with implementation start:
|
# ADR-003: flat and independent — no feature implies another; `default = []`
|
||||||
# session (→ alktty), tunnel (→ alktunnels), git (→ alkgit), sftp (→
|
# by design (a default build has no capabilities; every unfeatured open
|
||||||
# alkfs, deferred placeholder). The default build carries no capabilities
|
# declines fail-closed). Features gate nothing yet — the wave-2 decline core
|
||||||
# by design — every mapping is opt-in and every unfeatured channel open
|
# is their first consumer; the per-feature sibling deps land with their
|
||||||
# declines fail-closed.
|
# first consuming wave.
|
||||||
default = []
|
default = []
|
||||||
|
session = []
|
||||||
|
git = []
|
||||||
|
tunnel = []
|
||||||
|
sftp = []
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
tokio = { version = "1.54.1", features = ["full"] }
|
# ADR-002: aws-lc-rs only; default features off — no flate2, no rsa
|
||||||
# Deliberately empty until implementation start — the russh pin is decided
|
# (ed25519-only; the tree stays RC-free except the ssh-key pin riding the
|
||||||
# (ADR-002: 0.65.0, aws-lc-rs); russh + alkcall + sibling-crate deps land
|
# russh keys path). Never enable russh's `des`/`dsa` features.
|
||||||
# with implementation.
|
russh = { version = "0.65", default-features = false, features = ["aws-lc-rs"] }
|
||||||
|
alkcall = "0.10"
|
||||||
|
alkvault = "0.1"
|
||||||
|
tokio = { version = "1.54", features = ["full"] }
|
||||||
|
thiserror = "2.0"
|
||||||
|
tracing = "0.1"
|
||||||
|
parking_lot = "0.12"
|
||||||
|
zeroize = "1.9"
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
|
|
||||||
[profile.release]
|
[profile.release]
|
||||||
lto = "thin"
|
lto = "thin"
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
id: w1-manifest
|
id: w1-manifest
|
||||||
name: Wave 1 — manifest landing (russh pin + the feature graph)
|
name: Wave 1 — manifest landing (russh pin + the feature graph)
|
||||||
status: pending
|
status: completed
|
||||||
depends_on: []
|
depends_on: []
|
||||||
scope: moderate
|
scope: moderate
|
||||||
risk: medium
|
risk: medium
|
||||||
@@ -49,16 +49,16 @@ not something to work around.
|
|||||||
|
|
||||||
## Acceptance Criteria
|
## Acceptance Criteria
|
||||||
|
|
||||||
- [ ] Manifest declares russh 0.65 with `aws-lc-rs` only;
|
- [x] Manifest declares russh 0.65 with `aws-lc-rs` only;
|
||||||
`cargo tree` shows no `rsa`/`pkcs1` packages and no `flate2`
|
`cargo tree` shows no `rsa`/`pkcs1` packages and no `flate2`
|
||||||
(the `ssh-key` RC pin excepted, recorded)
|
(the `ssh-key` RC pin excepted, recorded)
|
||||||
- [ ] `alkcall 0.10` and `alkvault 0.1` pinned by version; no path
|
- [x] `alkcall 0.10` and `alkvault 0.1` pinned by version; no path
|
||||||
deps anywhere
|
deps anywhere
|
||||||
- [ ] Features `session`/`git`/`tunnel`/`sftp` declared, `default =
|
- [x] Features `session`/`git`/`tunnel`/`sftp` declared, `default =
|
||||||
[]`; `cargo test --all-features` passes (features gate nothing
|
[]`; `cargo test --all-features` passes (features gate nothing
|
||||||
yet)
|
yet)
|
||||||
- [ ] `edition = "2024"`, `rust-version = "1.89"` set
|
- [x] `edition = "2024"`, `rust-version = "1.89"` set
|
||||||
- [ ] `cargo test`, `cargo clippy --all-targets -- -D warnings`,
|
- [x] `cargo test`, `cargo clippy --all-targets -- -D warnings`,
|
||||||
`cargo fmt --check` pass
|
`cargo fmt --check` pass
|
||||||
|
|
||||||
## References
|
## References
|
||||||
@@ -71,8 +71,31 @@ not something to work around.
|
|||||||
|
|
||||||
## Notes
|
## Notes
|
||||||
|
|
||||||
> To be filled by implementation agent
|
> 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
|
## Summary
|
||||||
|
|
||||||
> To be filled on completion
|
> 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.
|
||||||
Reference in new issue
Block a user