Repository navigation
Description
Outcome
A terminal UI that remains fast, private, keyboard-operable and recoverable under large workloads, hostile output and real platform behavior. This is a reusable gate, not a last-minute screenshot pass. Parent: #406.
Dependencies
- Harness work starts after [TUI v2][P0] T1: extract a typed presentation seam and support Classic/Next without runtime divergence #408/[TUI v2][P0] T2: build Brand-aligned terminal primitives, accessible themes, and safe customization #409 interfaces and primitives are stable, in parallel with [TUI v2][P0] T3: deliver the responsive transcript/composer shell and unified command navigation #410.
- M1 integrated acceptance requires [TUI v2][P0] T3: deliver the responsive transcript/composer shell and unified command navigation #410/[TUI v2][P0] T4: ship first-class tools, diffs, and authoritative approval workflows #411/[TUI v2][P0] T5: unify session/familiar navigation, identity visibility, and reconnect recovery #412.
- Later task/research/memory features ([TUI v2][P1] T6: expose Psyche-backed tasks, dependency tracking, lanes, and durable goals natively #413/[TUI v2][P1] T7: add a native research workbench with source provenance, citations, and resumable artifacts #414/[TUI v2][P1] T8: add a private, read-only familiar-memory inspector and explicit context selection #415/[TUI v2][P2] T9: expose governed memory-change proposals only behind qualified producer contracts #416) add their fixture journeys before exposure; their absence does not block building the harness or qualifying an explicitly narrower coding preview.
- Reuse Complete foreground shell descendant cancellation and Windows cleanup #373/Own Claude CLI stderr draining and bound diagnostic collection #377/Diagnose ACP smoke startup timeouts and preserve failure diagnostics #379/Track ACP overload, permission-turn ownership, and stdio authorization gates #383 lifecycle evidence and Redact transcription error bodies and sensitive endpoint URLs #372/Redact sensitive endpoint URLs from MCP connection errors #375 diagnostic-redaction work. Do not raise deadlines, skip failures or weaken assertions to make the new UI pass.
Ownership
Extend existing TUI tests, .github/workflows/tui-tests.yml, relevant scripts and src-rust/crates/tui/ tests/benchmarks. Keep terminal lifecycle ownership centralized. New test module names are implementation choices recorded in the spec; do not invent a second test runner or telemetry service.
Acceptance
- Snapshot matrix covers 20x6, 40x12, 60x20, 80x24, 120x40 and 180x50; truecolor/256/16/NO_COLOR; UTF-8 and ASCII fallback; default/terminal-native/high-contrast options; reduced motion and keyboard-only use.
- Content fixtures include CJK, combining marks, emoji, bidi/control characters, huge paths, 100,000-line transcript, 10,000-line diff, binary output, streaming bursts and rapid resize. Focus, approvals and cancellation stay usable.
- Virtualization/caching keeps work proportional to visible content where feasible. Bound queues and diagnostics; preserve semantic events while coalescing presentation frames. Measure memory growth rather than silently dropping history.
- Proposed release targets on the recorded reference machine: key-to-visible p95 <50 ms; normal resize p95 <100 ms; active render p95 <33 ms; cold usable-frame latency no more than 10% above Classic; comparable-workload RSS no more than 15% above Classic without reviewed justification. Report samples/hardware/terminal/settings and baseline variance. These are targets, not current measurements.
- Idle mode performs no decorative redraw loop. Optional activity animation is capped and disabled by reduced motion; no model calls or external telemetry are generated by benchmarks.
- Untrusted output cannot emit OSC52 clipboard writes, arbitrary hyperlinks, screen-clearing/cursor controls, fake permission chrome or hidden executable commands. Safe rendering is tested at the adapter and actual PTY boundary.
- Terminal guard restores raw mode, cursor, alternate screen and keyboard protocol on ordinary exit, handled interrupts, panic and cleanup-capable failures. Document unavoidable SIGKILL/host-crash limitations and recovery steps instead of promising impossible cleanup.
- Run actual Linux/macOS PTY and Windows ConPTY/native-console journeys; exercise tmux and a representative remote/SSH terminal. Compilation or Linux tmux is not proof of Windows acceptance. Unsupported combinations are documented honestly.
- All snapshots/logs/diagnostics use synthetic content. Secrets, private memory and prompt bodies are not uploaded in CI artifacts. Document readable plain-output/no-TTY fallback without changing existing headless protocol behavior.
Verification evidence
Use Ratatui Buffer/TestBackend assertions, property tests for size/layout/input, controlled real-binary PTY/ConPTY runs, benchmarks and failure injection. Verify required tests actually ran; zero matches, skipped gates and flaky reruns are not passes. Retain the initial failure alongside successful remediation. Run exact-head format/check/Clippy/workspace gates and applicable noninteractive contract suites.
Long-running goal prompt
Implement T10 of epic #406 as soon as #408/#409 are stable, coordinating test ownership with the shell team. Refresh source/instructions and record the reference machine, terminal and SHAs. Extend the existing harness rather than creating a parallel framework. Add adversarial terminal-content, Unicode/resize, large-transcript/diff, queue-pressure, lifecycle and privacy regressions first. Measure Classic and Next under comparable deterministic workloads, then fix the smallest actual rendering/lifecycle bottleneck without dropping semantic events or weakening checks. Qualify the M1 journeys once #410/#411/#412 land and provide hooks for later feature matrices. Obtain native-platform evidence where available and label missing evidence explicitly. Do not claim cleanup after uncatchable termination or privacy beyond terminal capture limits. Preserve existing lifecycle issues, release holds and Git authorization boundaries.
Follow-up prompt
Resume T10 from recorded commands, fixtures and benchmark data. Refresh current heads and existing lifecycle findings; rerun the original failing scenario before accepting a fix. Verify actual executed test counts, comparable performance samples, no secret-bearing artifacts and native-platform coverage. Finish the smallest remaining safety/performance defect, rerun the relevant matrix and report verified platforms, proposed targets met/missed and untested cases. Never substitute a timeout increase, skipped check or generated mockup for acceptance evidence.
Activity
test(tui-tests): reproduce false-green runner outcomes
fix(tui-tests): reject failed, empty, and skipped-only runs
ci(tui-tests): run runner and polling regressions before engine build
docs(tui-tests): distinguish runner evidence from terminal acceptance
fix(tui-tests): fail closed on missing or failed case execution (#422)
fix(tui): close the leaks the #417 review found and make the matrix r…
test(tui): scheme and motion matrix and large-content fixtures for Ne…
BunsDev commentedon Nov 2, 2026
Status, 2026-11-02: one slice is up as #438 (stacked on #436). This issue stays open. Against the acceptance list:
Covered by #438 (buffer level, with tmux case 11 at the PTY):
Open: