--- model: openai/gpt-5.6-sol service: opencode session: d3e773b1-63ab-44da-a30f-33bc8a05e778 timestamp: 2026-08-31T21:56:40Z git_ref: 233fa590 scope: code substantive: true raw_file: 20260831T215640Z_233fa590_prompt_io.raw.md --- ## Prompt Continue Phase 1 of the human-facing E2E foundation from the existing worktree state: establish robust pytest-qt isolation and leak proofs, use real QtBot Ctrl-G input, replace arbitrary actor sleeps with typed deterministic synchronization, keep the test-harness reference current, and verify the work end to end. Preserve the user's staged snapshot, with permission to unstage if useful. After implementation, unstage the snapshot and prepare a complete multi-commit plan. ## Response summary Establishes import-time XDG isolation with exact pytest cleanup, adds same-process QApplication and mutable-state restoration proofs, and migrates Ctrl-G to real QtBot input. An explicit `--headless` option forces offscreen execution before imports even inside the Wayland development shell. The real input sequence exposed and fixed modifier-only event handling in the production keyboard path. The real Tractor regression now uses a typed receipt and explicit cancellation barrier instead of timing and logger instrumentation. ## Files changed - `tests/conftest.py` - own and restore process XDG config roots before importing Piker or Qt. - `tests/ui/conftest.py` - guard and restore mutable Qt, PyQtGraph, QSettings, filesystem, and Piker config state after each UI test. - `tests/ui/test_harness.py` - prove shared QApplication reuse, isolation, sentinel preservation, and leak-free teardown. - `piker/ui/_interaction.py` - ignore modifier-only chord events before action dispatch. - `tests/test_gap_overlays.py` - use real QtBot Ctrl-G and a typed, deterministic real-actor cancellation barrier. - `.claude/skills/run-tests/test-harness-reference.md` - document the verified fixture contract, commands, and results. ## Human edits The human directed continuation of the existing Phase 1 scope, authorized `nix develop` for runtime verification, requested Prompt-IO capture, and stated that the current staged snapshot may be unstaged if needed. After an unannounced test run opened real Wayland windows, the human identified the problem and required an explicit headless mode, while preserving separately authorized real-window coverage. This material correction added `--headless`, offscreen platform proof, and the rule that real-compositor runs must be announced and explicitly authorized. The staged snapshot was preserved; subsequent fixes and these provenance files initially remained unstaged. The human later explicitly requested a mixed reset before commit-plan generation. During review of the first staged boundary, the human required a TODO for a public config-path API and detailed rationale around each UI teardown check. The agent applied both changes and added authorized responses to the persisted local Tuicr session.