7.1 KiB
id, name, status, depends_on, scope, risk, impact, level
| id | name | status | depends_on | scope | risk | impact | level | |
|---|---|---|---|---|---|---|---|---|
| w5-publish | Wave 5 — the publish of alkssh 0.1 | completed |
|
narrow | medium | project | implementation |
Description
The publish — the plan's closing act (docs/plans/implementation.md
§Wave 5: "then the publish of alkssh 0.1 — the gate review that
closes the plan"; the alkgit pattern: the gate stays a pure review,
the publish is its own task executing only over a green verdict).
The checklist:
- Manifest sanity — version 0.1.0 (already the manifest value —
verify, no bump needed),
rust-version1.89, edition 2024, the license files present, the dependency pins as ADR-002 records them (russh 0.65 / aws-lc-rs, alkcall 0.10, alkvault 0.1, the per-feature siblings), the package-policyexcludelist, the feature graph exactly ADR-003's. - The full verification set —
cargo testper build +--all-features, clippy ×2-D warnings, fmt,cargo doc --no-deps, the fuzz corpus gate, the matrix runner — all green at the publish commit. - The dry-run —
cargo publish --dry-run --allow-dirtyclean at the publish commit (the packaged file list spot-checked once more). - The tag — the crate-qualified
alkssh-v0.1.0(the alkgit convention: crate-qualified tags, a barev0.1.0would be ambiguous across the family's multi-crate repos). - The publish —
cargo publish; the published version verified resolvable on crates.io after (a freshcargo add/cargo searchor the index check). If the publish credential is unavailable, the task stops and books it — never a silent skip; everything before the credential step still lands (tag + records). - The plan's closure recorded —
docs/plans/implementation.mdupdated (the wave-5 row + the closure note: the plan closed at the publish commit; the freeze inventory's surfaces are one-way from here — the mapping contracts, the honest-advertisement posture, the decline-matrix behavior, the fingerprint format, the russh pin's wire posture; further wire-relevant change is a new ADR + a semver event).
Acceptance Criteria
- Manifest sanity verified + recorded (no version bump needed — 0.1.0 is the manifest value)
- The full verification set green at the publish commit
- The dry-run clean at the publish commit
- The
alkssh-v0.1.0tag on the publish commit cargo publishexecuted; the published 0.1.0 verified resolvable on crates.io (or the credential absence booked — never a silent skip)- The plan's closure recorded in
docs/plans/implementation.md
References
- docs/plans/implementation.md §Wave 5 (the publish bullet), §Scope authority (v0.1.0 publishes the crate)
- docs/architecture/decisions/002-russh-pin.md (the pin the manifest records), docs/architecture/decisions/001-alkssh-alpn-pin.md (the ledger entry the publish makes load-bearing)
- /workspace/@alkdev/alkgit tasks (the
core/w5-publishshape this mirrors: manifest sanity, verification, dry-run, the crate-qualified tag,cargo publish)
Notes
Filled by the implementation agent (2026-10-30), executing over the
green review-wave-5 verdict at 9383e95.
- No findings in the checklist itself — unlike the alkgit publish (which had to land missing LICENSE files), the wave-5 release readiness already landed every artifact; this task only verified.
- Manifest sanity verified (no bump — 0.1.0 is the manifest
value): version 0.1.0, edition 2024,
rust-version1.89,license = "MIT OR Apache-2.0"withLICENSE-MIT+LICENSE-APACHEpresent, the pins exactly as ADR-002 records them (russh 0.65default-features = false+aws-lc-rs; alkcall 0.10; alkvault 0.1; the optional siblings alktty 0.8.1 / alkgit 0.1.0 / alktunnels 0.4.1), the package-policyexcludelist in place, the feature graph exactly ADR-003's flat shape (default = [], no implies). - The full verification set green at the gate commit (the tree
was clean — gate commit == publish base):
scripts/matrix.shall six builds'cargo test+ clippy ×2 (--all-targets -D warnings, with and without--all-features) +cargo fmt --check+cargo doc --no-deps(doctests included — the twono_runusage doctests compile-checked per build); the fuzz corpus gatecargo test --manifest-path fuzz/shared/Cargo.toml11/11. - The dry-run clean:
cargo publish --dry-run --allow-dirty— 76 files packaged, the packaged tree compiled (verification compile passed), upload aborted by dry run as expected;cargo package --listspot-checked against the package policy — exactlysrc/(20),tests/(+common/+vectors/), the architecture docs (docs/architecture/),README.md,CHANGELOG.md, both licenses, the manifests, andscripts/matrix.sh; none of the excluded surface appears (AGENTS.md,.opencode/,docs/plans|reviews|research/,docs/sdd_process.md,tasks/,fuzz/). - The publish credential is present in this environment — the publish executes live, no operator handover, no silent skip.
- The closure records ride the publish commit: the plan file's
status →
closed, the wave-5 row →published, and the §Plan closure note (the freeze inventory one-way; the still-booked upstream asks) land in the tagged commit. - The publish-commit dry-run rider: the closure edits touch only
package-excluded paths (
docs/plans/,tasks/), but the dry-run was nonetheless re-executed at the publish commit itself (e59ef79) — clean again, same 76-file package.
Summary
alkssh 0.1.0 published — crates.io, 2026-10-30. Publish commit
e59ef79, tagged alkssh-v0.1.0 (crate-qualified, the alkgit
tag convention), pushed to origin/main with the tag. The checklist
ran in order over the green review-wave-5 verdict at 9383e95:
manifest sanity verified (no bump — 0.1.0 the manifest value;
edition 2024; rust-version 1.89; both license files; the pins
exactly as ADR-002 records them; the package-policy exclude list;
the feature graph exactly ADR-003's); the full verification set green
(scripts/matrix.sh — six builds' cargo test, clippy ×2 -D
warnings, fmt, doc with the doctests compile-checked; the fuzz
corpus gate 11/11); cargo publish --dry-run --allow-dirty clean
twice (76 files, packaged-compile verified, once pre-commit and once
at e59ef79; the package list against policy — architecture docs
ship, process surface and fuzz/ do not). cargo publish completed
live (Published alkssh v0.1.0 at registry crates-io — the
environment carried the credentials, no operator handover, no silent
skip). Resolvability verified post-publish: cargo search alkssh
lists alkssh = "0.1.0" and a fresh cargo add alkssh in a clean
scratch project resolved it off the index. The plan's closure is
recorded in docs/plans/implementation.md (§Plan closure) on the
publish commit: the freeze inventory (mapping contracts, honest
advertisement, decline-matrix behavior, fingerprint format, the
russh pin's wire posture) is one-way from here; the upstream asks
stay booked with their owners. The implementation plan is closed.