---
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.
