Files
2026-10-29 00:01:35 +02:00

6.0 KiB
Raw Permalink Blame History

Milestone 18 evidence: in-app Help

Recorded 2026-10-28T23:59:51+02:00 on x86_64-unknown-linux-gnu with rustc/Cargo 1.97.1, rustfmt 1.9.0 and Clippy 0.1.97. Base commit: 4960c65f6511da50bac9d35e2b4a625adbaf86c3. The working tree is dirty; the M18 Rust/README inputs at final validation have SHA256:

Input SHA256
src/tui/render.rs dbf00298f1bf466f99688f790be5ae34e9a7434aa374bc61c7df31e41c8d842b
src/tui/terminal.rs 4658404e856c1acced9c115f1cfb4c9f87e714b2343c3996df7ee63504368b81
tests/tui_workflow.rs d7bc72c20eb9b4d3ba160e599d83f83111e418a9c3056b4e430aa17a555baacd
README.md 7352da8e13850b1b13e11bf2f828c8368dbd1b6b95320d6838ac26b7fa0532d6

PLANS.md is also dirty, recording the prior M18 plan and this milestone's progress. No dependency manifests or application adapters changed. Release target/release/wireguard-admin SHA256 is d179b2934565e12e0d90ad716730418a40b215c5ca68058fd76566c267e98488; file identified an x86-64 dynamically linked GNU/Linux PIE.

Shortcut audit and content basis

The implementer audited current src/tui/terminal.rs::handle_key and handle_navigation_key, src/tui/forms.rs::handle_key and src/tui/events.rs before writing Help. The guide's shortcut families map to the existing handlers and guards:

Keys Handler and actual availability
?, Up/Down, PageUp/PageDown, Enter, Esc terminal.rs: Help resets to top; Help scrolls by visual row/page; list arrows select and Enter opens details; Esc returns to list or cancels an active form/clears QR.
q, handled Ctrl-C terminal.rs: outside forms, exit is immediate without a draft or asks about draft discard; Ctrl-C is translated to q and is form-specific while a form is active.
n, r, d terminal.rs and forms.rs: create requires a loaded view; rename/delete require a supported unambiguous selected peer and confirmation. Blank paired addresses select automatic allocation.
p, c, x, R terminal.rs, forms.rs, events.rs: preview draft; confirmed Commit saves after backup; confirmed discard drops draft; uppercase restart previews saved state and requires confirmation, backup, service completion and verification.
o, O terminal.rs, forms.rs, events.rs: supported selected saved client only; first delivery after Commit is session-bound and retryable after file failure, while uppercase reissue requires a vault password per action; file precedes optional QR.
b, B terminal.rs and forms.rs: list/select backup and preview confirmed full restore versus create manual backup. Restore changes saved state only.
s, i, ! terminal.rs and forms.rs: setup only before vault initialization; import submits one configured-directory filename and preserves its source; issue summary is available after view load.

Actions remain guarded by the existing handlers. The Help navigation keys themselves do not submit application work. Existing action letters can still dispatch while Help is visible; the milestone did not change action dispatch. The guide says how to return to the list and accurately distinguishes lowercase and uppercase keys.

Implementation, review and acceptance mapping

The Help screen is one ordered document with an introduction and nine sections: quick start; list/details; state/observations; client changes; save/restart; delivery/reissue; backups/restore; vault/import/issues; navigation/exit. It uses styled headings, key labels, workflows and warnings, with display-cell wrapping at the actual inner viewport width. A visible row-range title and the fixed-height footer show navigation and overflow. Renderer and terminal share the same wrapped-row metrics: one-row arrows, viewport-page keys, bounded scrolling, resize clamping, ? reset and Esc return. These changes cover M18-A1–A5; synthetic buffers cover 34×8, 40×9, 60×16, 80×24, 100×30 and 180×50, including reachability of the last section. README Help instructions were updated.

One GPT-6-Luna/high implementer completed M18.1–M18.3 sequentially. A separate fresh GPT-6-Luna/high read-only reviewer compared content with the handlers and tested Help rendering/navigation. It found M18-R1 (P2): at 34×8, the Help footer omitted Esc return. A separate GPT-6-Luna/high repairer changed only Help's narrow hint packing and added 34×8/40×9 assertions. The reviewer rechecked the actual repair, ran the focused test and closed R1. No actionable finding remained in that pass. A coordinator content audit then found M18-R2: four missing explanations about Applied status, current observations, the first-delivery activation warning and masked password entry. The reviewer independently confirmed those gaps. The separate repairer amended Help and added a 34×8 semantic/reachability regression; independent re-review checked the claims against status/form code and SPEC.md and closed R2. No actionable finding remains, satisfying M18-A6. A proposed change to action-key dispatch was withdrawn after checking the explicit preserve-actions boundary.

Final checks and limits

Command Result
cargo fmt --all -- --check exit 0
cargo test --locked tui:: 79 passed, 0 failed
cargo test --locked --test tui_workflow 8 passed, 0 failed; includes synthetic PTY Help/resize flow
cargo clippy --locked --all-targets -- -D warnings exit 0
cargo test --locked 392 passed, 0 failed, 3 explicitly ignored; 2 doctests passed
cargo build --locked --release exit 0; binary hash above
git diff --check exit 0

Tests use synthetic fixtures and an isolated PTY. That PTY run checks emitted terminal behavior, not manual readability in a specific terminal emulator. Alpine Testcontainers, disposable-VM systemd, live WireGuard and production configuration were not used for this presentation milestone. The user-directed M16 manual check has no recorded environment/transport detail and is not M18 evidence. No host service was restarted and no Git commit was made.