# TUI-FL-001 evidence: stable keyboard footer Validated 2026-10-27T22:59:34+02:00 on the native `x86_64-unknown-linux-gnu` development host with synthetic Ratatui/TestBackend fixtures. No production configuration, host service, or systemd VM was used. ## Behavior and review The standard TUI layout now reserves four footer rows from the first draw: two hint rows and their borders. The client-list region therefore keeps the same height as selection and available actions change. Hints use a stable priority order and fit into two bounded rows. A first packing pass shows every hint when they fit; only actual overflow triggers a second pass reserving a visible `… more` marker on the last row. The existing `? Help` route remains visible in narrow list layouts. The source of context-sensitive hints and the keyboard action handlers were not changed. Terminals with 8 or 9 rows use the compact layout so the client pane retains visible content. Buffer-level tests cover empty/populated/selected list geometry at 80×24, narrow widths 34/36/40, the compact 80×9 case, and widths 102/103 where all actions fit without a false omission marker. Tests check complete rendered labels and the marker row, not just source-side packing. Existing TUI workflow tests cover the unchanged action behavior. An independent GPT-6-Luna/high reviewer found TUI-FL-001.2-R1 (P2, clipped marker on the first row) and R2 (P2, border-only list at height 9). A separate GPT-6-Luna/high repairer fixed both; re-review closed them. Re-review then found R3 (P3, unnecessary omission from reserving marker space too early). The repairer added a two-pass packer and a 102/103-column regression. Independent re-review closed R3 with no further actionable finding. ## Checks and identity Pinned `rustc`/Cargo 1.97.1, rustfmt 1.9.0 and Clippy 0.1.97 were verified. The final integrated revision passed from the repository root: - `cargo test --locked tui::render::tests`: 31 passed. - `cargo fmt --all -- --check`: exit 0. - `cargo clippy --locked --all-targets -- -D warnings`: exit 0. - `cargo test --locked`: 370 passed, 3 explicitly ignored, 0 failed, including 2 documentation tests. - `cargo build --locked --release`: exit 0. - `git diff --check`: exit 0. Base commit: `4b53aad20cff6cec5d23f779702b58f0de599d44`. Dirty Rust input `src/tui/render.rs` SHA256: `ceae0bec7add49304a38f38987fdac554fc83e9d7d23695cf148f2f8404d3016`. Native release artifact `target/release/wireguard-admin` SHA256: `a16214c426b0cc9b29ec03124e965352e4f64f07c82d3ac23e4caf8e45d6273b`. `PLANS.md` was also dirty with this maintenance record. The M16 private-systemd validation gap remains separate and unverified; no Alpine or VM suite was rerun. Very narrow layouts intentionally show only priority hints plus the Help affordance; additional shortcuts remain available through the existing Help screen. A physical-terminal visual check was not performed.