Files
2026-10-28 23:12:22 +02:00

4.5 KiB
Raw Permalink Blame History

Milestone 17 evidence: adaptive client list and state presentation

Recorded 2026-10-28T23:09:37+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: d49721ff8e6a40c1016e59b2648a6a622f84a4c4. This is a dirty working tree; the M17 Rust/README inputs at validation have SHA256:

Input SHA256
src/tui/render.rs 19fad8a9edfa571060c94fe34a1a484369f3601a3ffc52148081c935be2404f2
src/tui/state.rs b533427001c67fb2c1d8527fb8a2cc1d6bd7e824be8985fd8b773b09a144d0f9
src/tui/terminal.rs 591ad7498fb4bb8cb825dfba0bad26e28bd8432ef26d5527950863a7534689f6
tests/tui_workflow.rs f57d058d8538d5d1afdab7ddb7e88d23259804a9927ee4ac52982903dc1a6928
README.md 7c5eb0b58e81aaecbddae230211099db59560dfc5fe30991e7022d841d6b04a8

PLANS.md and docs/evidence/milestone-16.md are also dirty documentation inputs. The latter records user-directed M16 acceptance and an undocumented manual check; it is not M17 test evidence. No M17 dependency manifest or application adapter changed. The release binary target/release/wireguard-admin has SHA256 336103d76bb78225735411a76abdbf3f6d5dc49dd6ce0b96537dfd3dea46a578. file identified an x86-64 dynamically linked GNU/Linux PIE.

Implementation and acceptance mapping

  • M17-A1: the table allocates the actual list-pane width across wide, medium and compact columns. Synthetic buffers cover growing names, Latin/Cyrillic/ wide-character alignment, separate host IPv4/IPv6 cells, IPv4-only peers, and route markers. Full routes and public identity remain in details.
  • M17-A2/A3: shared visible records and selection drive the list, persistent pane and Enter details. Synthetic state/navigation/buffer checks cover first selection, duplicate and malformed peers, draft removals, document-only issues, refresh, dimension breakpoints and stable geometry. A loading-state regression covers side and stacked panes. Breakpoints use the content area: side-by-side at 140×13 or larger, stacked at 80×17 or larger (eight rows for details), compact summary at 60×12 or larger, otherwise list-only. These dimensions are independent of selected content and action availability.
  • M17-A4/A5: explicit Draft, Saved and Applied labels distinguish pending drafts from saved peers and runtime verification. The saved peer count comes from installed server bytes and includes nonmanaged peers; managed counts remain separately scoped. Tests cover state combinations, issue versus capability-limit counts, complete details and available observations.
  • M17-A6: focused TUI/workflow checks include navigation, forms, footer, QR and synthetic PTY lifecycle coverage. No Commit/restore/restart behavior changed.

Review and checks

One GPT-6-Luna/high implementer completed M17.1, M17.2 and M17.3 in order. A separate fresh GPT-6-Luna/high read-only reviewer inspected the integrated diff and ran cargo test --locked tui:: (70 passed) and cargo test --locked --test tui_workflow (8 passed). It found M17-R1 (P2): loading list and persistent detail messages conflicted. A separate GPT-6-Luna/high repairer fixed the pane and added a 140×20/80×24 buffer test; the reviewer rechecked and closed R1 (cargo test --locked tui::render::tests: 39 passed). The integrated Clippy gate then found M17-R2 (P2), two redundant closures. The repairer replaced them with function items; the reviewer checked semantics, reran exact Clippy, and closed R2. No actionable review finding remains.

Final integrated checks on the input hashes above:

Command Result
cargo fmt --all -- --check exit 0
cargo test --locked tui:: 71 passed, 0 failed
cargo test --locked --test tui_workflow 8 passed, 0 failed; includes synthetic PTY smoke
cargo clippy --locked --all-targets -- -D warnings exit 0 after R2 repair
cargo test --locked 384 passed, 0 failed, 3 explicitly ignored; 2 doctests passed
cargo build --locked --release exit 0; binary hash above
git diff --check exit 0

All tests used synthetic configuration and keys. The PTY smoke checks emitted terminal control behavior through an isolated script session; it is not a manual terminal-emulator usability test. Alpine Testcontainers, disposable-VM systemd paths, live WireGuard, production configuration, and phone QR scanning were not run for this presentation milestone. Those checks are not claimed by the fixture results. No host service was restarted and no Git commit was made.