65 lines
2.9 KiB
Markdown
65 lines
2.9 KiB
Markdown
|
|
---
|
||
|
|
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.
|