swayfx-mosaic/tooling/probes/step20c-saved-target-timeout-input/README.md

28 lines
1.8 KiB
Markdown

# Saved target natural timeout and input fixture
**EXPERIMENTAL / PARTIALLY_FEASIBLE.** The [protocol and result](../../../docs/design/STEP20C_SAVED_TARGET_TIMEOUT_INPUT_PROBE.md)
defines a single new Mosaic run with one natural timeout episode. The
previous crossing campaign and its exhausted ledger are immutable historical
evidence. This fixture reconstructs the pinned compositor privately, uses a
fixed opaque XDG SHM H2 reference, and stores all generated data under one
new `/tmp` LAB. No production source, package or installed library is changed.
Run `prepare.sh` to reconstruct the private binaries without launching a
compositor. Run the offline `test-budget.py` before the sole `run.py LAB`
invocation. The runner requires two identical H2 captures before any
transaction reservation, calculates no more than one relative camera delta,
and copies its exact source into the run directory. `analyze.py LAB` derives
structured results and SHA-256 manifests from retained raw files. Never
reuse an old LAB or reset a consumed ledger.
The sole run used `/tmp/swayfx-mosaic-nested-grab-iKwhINe5`. Its ledger
records one run, one episode, one camera adjustment and eight captures.
The exact executed Python source is saved as `runs/*/fixture-source.py`.
The static reference and the target retained their real configure/ACK
processing; the target held serial 50 until natural SwayFX timeout. Its
crossing saved node rendered on H1, the whole H2 RGB image remained
identical before/during/after, and the target tree was destroyed. One H2
pointer sample reached the static reference; the visible H1 sample hit the
saved scene buffer without a Wayland surface. Full damage and native GPU
lifetime remain unqualified. `analyze.py` is offline only and may be rerun
without spending a graphics budget; run it with `PYTHONDONTWRITEBYTECODE=1`.