Files
wireguard-admin/docs/evidence/milestone-20.md
T

4.5 KiB

Milestone 20 evidence: vocabulary and prepared contexts

Recorded 2026-10-29T22:38:53+02:00. Base commit ede45d224a9ad255a919900e556a03d7e575430f had a clean working tree. The final tree is dirty only for this milestone's PLANS.md, Rust source and test changes, and this evidence report. No Cargo.toml or Cargo.lock diff, new dependency, persisted-format change, production configuration, or secret fixture was introduced. The final Rust source/test patch fingerprint is SHA256 cba97207f926f1927c70643754db2743603e0f72892115ef8d959696d769992a, produced by:

git diff -- src/app.rs src/domain.rs src/persistence.rs src/container_driver.rs src/tui/events.rs src/tui/render.rs src/tui/state.rs src/tui/terminal.rs tests/client_delivery.rs tests/commit_restore.rs tests/runtime_restart.rs tests/tui_workflow.rs | sha256sum

The release artifact target/release/wireguard-admin built from those inputs has SHA256 7a6ee46b1d9c39bac9a7b3627b0b8ba30e70321126ebd16b1948b42b8658ac98. file target/release/wireguard-admin identified an x86-64 dynamically linked GNU/Linux PIE with interpreter /lib64/ld-linux-x86-64.so.2.

Implementation and acceptance mapping

  • M20.1 renamed the domain's current knowledge enum to ApplyStatus, retained runtime::RuntimeObservation for measured interface data, and migrated actual application, persistence, TUI and integration callers. The exact duplicate TUI AppliedState enum/mapping and now unnecessary Statistics, TechnicalObservation and ObservedRuntime aliases were removed. UI labels and current-versus-historical state transitions were preserved (M20-A1).
  • M20.2 replaced the six-value prepared delivery tuple and three-value restore tuple with private named contexts. A private DeliveryMode distinguishes first issue and reissue without changing public reissue flags. Neither context derives Clone or Debug; identity, attempt, generation, overwrite, cancellation, unrelated-command clearing, password ownership and QR/file order remain unchanged. A behavioral test covers cancel/unrelated-command clearing (M20-A2).
  • All affected production and test callers compile; no manifests, formats or transport behavior changed. Focused tests, final full RUST gates and independent review passed (M20-A3).

Independent review and repair

A GPT-6-Luna/high implementer completed M20.1 and M20.2 sequentially. A separate fresh GPT-6-Luna/high read-only reviewer inspected the integrated diff, production paths, callers, tests and secret-bearing contexts and found no behavior issue. The coordinator's first Clippy gate found M20-R1 (P2): two test/test-only .clone() calls on the now-Copy status. A separate GPT-6-Luna/high repairer changed only those two calls to dereferences in src/app.rs and src/container_driver.rs. The reviewer independently rechecked the repair and affected tests, closed R1 and found no new issue. No actionable finding remains.

Checks and limits

Environment at execution: rustc/Cargo 1.97.1 on x86_64-unknown-linux-gnu, rustfmt 1.9.0 and Clippy 0.1.97, matching the pinned compiler. Focused implementer/reviewer runs covered domain:: (13), runtime:: (25), tui::state:: (7), tui::events:: (7), --test commit_restore (9), --test runtime_restart (3), --test tui_workflow (8), and --test client_delivery (5). After R1, the repairer ran cargo test --locked app:: (58 passed) and cargo test --locked --lib container_driver:: (23 passed, 2 ignored). The reviewer reran affected app/event tests. These are host synthetic/PTY checks; ignored Alpine selectors were not run.

Final coordinator command Actual result
cargo fmt --all -- --check exit 0
cargo clippy --locked --all-targets -- -D warnings exit 0 after M20-R1 repair
cargo test --locked exit 0: 391 unit/integration tests passed, 3 ignored; 2 doctests passed; 0 failed
cargo build --locked --release exit 0; artifact SHA256 above
git diff --check exit 0

The initial Clippy run exited 101 on M20-R1 before repair and is not the final gate result. Default tests did not execute the three explicitly ignored Alpine/selected-daemon tests. No Alpine Testcontainers or disposable systemd VM run was required for this naming/context refactor or performed. Prior Alpine results are historical for earlier source and do not validate this artifact; real systemd/D-Bus and IPv6 limitations remain as previously recorded. No production, live VPN, host service or host network operation was performed.