Files
glm-5.3-flash f4b5f896b4 docs: sweep em dashes from all markdown prose
Renames the written-usage rule into practice across the contract surface:
docs/ (architecture, research, plans, sdd), tasks/ (all 43 task files,
taskgraph validate passes), AGENTS.md, README.md, CHANGELOG.md, and the
.opencode/agents/ prompts. Every replacement is a sense-preserving
rewrite (colons, semicolons, commas, parentheses, sentence splits, varied),
never a mechanical swap; no spaced hyphens were substituted. Enum fields,
frontmatter, tables, wire data, and cited identifiers survive verbatim;
en dashes inside numeric ranges keep their meaning.

Verification: taskgraph validate (43 tasks), repo grep clean (single
exempt hit: the verification command's own search pattern in AGENTS.md),
cargo test, clippy --all-targets -D warnings, fmt --check, doc all green.
2026-11-04 20:28:00 +00:00

143 lines
7.1 KiB
Markdown
Raw Permalink 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: w5-publish
name: "Wave 5: the publish of alkssh 0.1"
status: completed
depends_on: [review-wave-5]
scope: narrow
risk: medium
impact: project
level: implementation
---
## Description
The publish, which is 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**, covering version 0.1.0 (already the manifest value, so
verify, no bump needed), `rust-version` 1.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-policy `exclude` list, the
feature graph exactly ADR-003's.
- **The full verification set**: `cargo test` per 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-dirty` clean 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 bare `v0.1.0` would be
ambiguous across the family's multi-crate repos).
- **The publish**: `cargo publish`; the published version verified
resolvable on crates.io after (a fresh `cargo add`/`cargo search`
or the index check). **If the publish credential is unavailable,
the task stops and books it, never silently skipping**; everything
before the credential step still lands (tag + records).
- **The plan's closure recorded**: `docs/plans/implementation.md`
updated (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
- [x] Manifest sanity verified and recorded (no version bump needed,
0.1.0 is the manifest value)
- [x] The full verification set green at the publish commit
- [x] The dry-run clean at the publish commit
- [x] The `alkssh-v0.1.0` tag on the publish commit
- [x] `cargo publish` executed; the published 0.1.0 verified
resolvable on crates.io (or the credential absence booked,
never a silent skip)
- [x] 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-publish` shape 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, since 0.1.0 is the manifest
value): version 0.1.0, edition 2024, `rust-version` 1.89,
`license = "MIT OR Apache-2.0"` with `LICENSE-MIT` +
`LICENSE-APACHE` present, the pins exactly as ADR-002 records them
(russh 0.65 `default-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-policy `exclude` list 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, so gate commit == publish base): `scripts/matrix.sh` all
six builds' `cargo test` + clippy ×2 (`--all-targets -D warnings`,
with and without `--all-features`) + `cargo fmt --check` +
`cargo doc --no-deps` (doctests included, with the two `no_run`
usage doctests compile-checked per build); the fuzz corpus gate
`cargo test --manifest-path fuzz/shared/Cargo.toml` 11/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 --list` spot-checked against the package policy:
exactly `src/` (20), `tests/` (+ `common/` + `vectors/`), the
architecture docs (`docs/architecture/`), `README.md`,
`CHANGELOG.md`, both licenses, the manifests, and
`scripts/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**, so 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`),
and was clean again with the same 76-file package.
## Summary
**`alkssh 0.1.0` published to crates.io on 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 being 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, where 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.**