chore(release): alkssh 0.2.0 — the sibling-adoption release

- version 0.2.0: the dep-req bumps (alkvault 0.2, alktunnels 0.5.0)
  are semver-significant for consumers; no alkssh public API change
  apart from what the bumps ripple through.
- CHANGELOG: the 0.2.0 entry (the three adoptions, the dropped wrap,
  the gate adoption, the harness fidelity fix, the new rows).
- tasks: record the w6-sibling-adoption wave (taskgraph validate:
  43 tasks).

Verification: scripts/matrix.sh green (exit 0 — the full suite per
feature build none/git/session/tunnel/sftp/--all-features + clippy x2
+ fmt + doc), cargo test --manifest-path fuzz/shared/Cargo.toml (11,
corpus replay), cargo publish --dry-run --allow-dirty (76 files,
342.6 KiB compressed).
This commit is contained in:
glm-5.3-flash committed 2026-11-04 09:45:39 +00:00
1 parent 9f443e982b
commit e471dbae13
2 files changed
+126

No files matched your search

+75
View File
@@ -4,6 +4,81 @@ All notable changes to this crate are documented here. The format is
based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and
this crate adheres to [Semantic Versioning](https://semver.org/).
## [0.2.0] - 2026-11-04
The sibling-adoption release: the three alkssh-filed upstream reviews
resolved across the family, and alkssh adopts the results. Two
dependency requirement bumps (the minor bump, not a patch: dep-req
changes are semver-significant for consumers) plus the review-003 W2
adoption wave — no alkssh-side wire-format change, no public API
change apart from what the dep bumps ripple through.
### Changed
- **alkvault 0.1 → 0.2** (breaking req): `VaultServiceHandle::decrypt`
returns `Zeroizing<String>` (alkvault review 001, consumer input
from alkssh — resolution paths 1+2). The adapter seam's own
`Zeroizing` wrap in `decrypt_and_decode` is **dropped** (it would be
a dead double wrap): the pre-wrap unfenced plaintext window ADR-005
decision 3 recorded is closed upstream — the vault fences the
plaintext from its return onward, on every path including its UTF-8
error path, and `rotate` never holds a bare plaintext either.
`decode_key_arm`'s signature is unchanged (it kept riding
`&Zeroizing<String>` — the posture now proven by the vault's return
type instead of the adapter seam).
- **alktunnels 0.4.1 → 0.5.0** (breaking req, additive API): the
review-003 W2 adoption — the forwarded serving surface
(`-R` leg's door-side arrival half) now registers
**`register_tunnel_forwarded_openable_with_establisher`** with a
`ForwardedGate` capturing the door's `ListenRouter`: a stale/missing
`listen` token fails the open **typed at the call plane**
(`channel:open_failed`, `details.reason == "unknown_resource"`)
*before any channel is born*, closing the phantom-channel shape
(call-plane success, then handler-side decline) ADR-008 Amendment 2
targets; a malformed arrival is likewise typed (`handler_error`)
instead of success-then-silent-birth-teardown. The handler-side
correlation re-lookup keeps the residual-race + cap-admission
teardown-at-birth fallback (the base shape's posture, retained).
The wire delta is empty (additive registration only); the ACL
(`tunnel:forwarded`) still runs before the establisher (now
double-pinned by the unscoped-arrival row, which uses a genuinely
minted token).
- **alktty 0.8.1 → 0.8.2** (patch): the PTY exit-signal-fidelity fix
(alktty review 004, consumer input from alkssh) — the requirement
resolves to 0.8.2 automatically; the pin text refreshed. **No
alkssh contract change**: the negative-code convention (OQ-10's
derivation contract) is consumed verbatim, so PTY-row signal
deaths now report `exit-signal(name)` through the door exactly as
pipe-mode already did — OQ-10's upstream constraint (the
portable-pty flattening) is retired.
### Documentation
- ADR-005 decision 3 amended (the gap is closed upstream; the
adapter's obligation shrinks to consuming the zeroized value in one
pass), the `Negative` consequence amended, OQ-07 and OQ-10 amended +
the two upstream watch items closed, `mapping.md`'s `forwarded-tcpip`
row (the gate shape) and derivation-contract rule 5 (the PTY
constraint retired) updated, `client.md`'s OQ-07 anchor updated.
### Fixed
- The test doubles' fidelity: `tests/tunnel_mapping.rs`'s harness
opener now maps the wire refusal's `details.reason` back into the
`TunnelEstablishError` taxonomy (the real opener's table) instead of
swallowing every call-plane refusal into `HandlerError` — the typed
`unknown_resource` survives the client side, which is exactly what
the new gate rows pin.
### New rows
- `a_correlation_miss_fails_the_open_typed_before_any_channel` (the
gate miss: typed refusal, no phantom channel, no acceptor row),
`a_gate_pass_arrival_serves_the_route_unchanged` (the gate-pass
posture: the serving flow is the unchanged shape), and the source
unit pin `the_pump_residual_miss_teardown_at_births_the_fabric_half`
(the handler-side residual miss stays teardown-at-birth).
## [0.1.0] - 2026-10-30
The founding entry — the crate's first release. `alkssh` is the alk
@@ -0,0 +1,51 @@
---
id: w6-sibling-adoption
name: Wave 6 — the sibling-adoption wave (alkvault 0.2 + alktunnels 0.5.0 gate + alktty 0.8.2 docs)
status: completed
depends_on: [w5-publish]
scope: moderate
risk: medium
impact: component
level: implementation
---
## Description
The three alkssh-filed upstream reviews all shipped: alkvault 0.2.0
(review 001, the decrypt plaintext window), alktunnels 0.5.0 (review
003 W1 absorbed in-repo; W2 is this adoption wave), alktty 0.8.2
(review 004, the PTY exit-signal fidelity fix; docs-only adoption
here). Adopt all three and publish as alkssh 0.2.0:
- **alkvault 0.2** — the breaking req bump; the adapter seam's
`Zeroizing` wrap dropped (the known-gap ADR-005 decision 3 recorded
is closed upstream); ADR-005 §3 + OQ-07 amended per the entry's own
predicted one-line doc touch.
- **alktunnels 0.5.0 + the W2 gate adoption** — the forwarded serving
surface registers
`register_tunnel_forwarded_openable_with_establisher` with a
`ForwardedGate` capturing the `ListenRouter`; stale-token arrivals
fail typed at the call plane before any channel is born; the
handler-side re-lookup stays as the residual-race +
cap-admission teardown-at-birth fallback. mapping.md's
`forwarded-tcpip` row updated; gate rows added (miss typed /
pass unchanged / residual-miss unit pin).
- **alktty 0.8.2** — patch-level; pin text refreshed; OQ-10's
upstream PTY constraint retired (mapping.md rule 5 amended); the
real-tool PTY signal-fidelity e2e row deferred (booked follow-up).
- Version 0.1.0 → 0.2.0 (dep-req changes are semver-significant for
consumers); CHANGELOG entry.
## Notes
- The e2e `real_git_push_creates_the_ref_through_the_door` row
flaked once under full-matrix load (prepared-assert raced the
accept_task abort; 6+ isolated passes on both parent and adoption
tree; no shared path with the gate adoption). Not a regression;
the row's abort-vs-record race is a standing e2e flake to watch.
## Summary
All three adoptions landed in one wave; the version is 0.2.0; the
decline-matrix matrix runner, clippy ×2, fmt, doc, and the fuzz
corpus gate are green.