swayfx-mosaic/tooling/probes/step20c-static-rgb-input-retest
2026-10-13 08:24:56 +02:00
..
collect.py docs(mosaic): preserve static RGB input and standard return evidence 2026-10-13 08:24:56 +02:00
ipc_predicates.py docs(mosaic): preserve static RGB input and standard return evidence 2026-10-13 08:24:56 +02:00
pixels.py docs(mosaic): preserve static RGB input and standard return evidence 2026-10-13 08:24:56 +02:00
prepare.py docs(mosaic): preserve static RGB input and standard return evidence 2026-10-13 08:24:56 +02:00
README.md docs(mosaic): preserve static RGB input and standard return evidence 2026-10-13 08:24:56 +02:00
replay.py docs(mosaic): preserve static RGB input and standard return evidence 2026-10-13 08:24:56 +02:00
run.py docs(mosaic): preserve static RGB input and standard return evidence 2026-10-13 08:24:56 +02:00
support.py docs(mosaic): preserve static RGB input and standard return evidence 2026-10-13 08:24:56 +02:00
test-budget.py docs(mosaic): preserve static RGB input and standard return evidence 2026-10-13 08:24:56 +02:00
validate_results.py docs(mosaic): preserve static RGB input and standard return evidence 2026-10-13 08:24:56 +02:00
verify.py docs(mosaic): preserve static RGB input and standard return evidence 2026-10-13 08:24:56 +02:00

Static RGB, input and standard-return retest fixture

EXPERIMENTAL / FROZEN EVIDENCE. No production integration. Read the protocol. The historical failed campaign is frozen and must never be rerun.

ipc_predicates.py supplies pure validators shared by replay and the real runner. replay.py uses actual sealed historical IPC/scene/client observations and clearly labelled historical PNGs or synthetic input fixtures. Negative tests must reject wrong identities/ownership/geometry/focus/clip and malformed input. pixels.py compares every RGB pixel, preserves differences, measures actual paint and selects points with a 20-pixel interior margin. support.py and test-budget.py implement/test durable exclusive no-refund reservations.

Offline preparation, client-only C17 checks and gates:

PYTHONDONTWRITEBYTECODE=1 python tooling/probes/step20c-static-rgb-input-retest/test-budget.py
PYTHONDONTWRITEBYTECODE=1 python tooling/probes/step20c-static-rgb-input-retest/prepare.py
# LAB is the one newly printed path, registered in the exclusive owner file.
PYTHONDONTWRITEBYTECODE=1 python "$LAB/fixture/replay.py" --lab "$LAB"

Preparation copies the exact qualified static binary, verifies the unchanged historical manifests, builds only exact historical clients and freezes the fixture inventory. No Mosaic or SceneFX build is allowed. replay.py verifies source authority, syntax and ledger tests and records the two mandatory PASS markers. run.py verifies the immutable inventory and all gates before its first run reservation. Never replace the owner file, reset the ledger, modify the executed fixture or create a second lab to retry.

Only after every gate passes, execute the single retained runner:

PYTHONDONTWRITEBYTECODE=1 python "$LAB/fixture/run.py" "$LAB"
PYTHONDONTWRITEBYTECODE=1 python "$LAB/fixture/collect.py" "$LAB"
PYTHONDONTWRITEBYTECODE=1 python "$LAB/fixture/verify.py" "$LAB"

One static run, zero pristine runs/builds, one camera correction, three named right clicks, eight movements including click positioning, twelve PNGs and 150 seconds. Reservations precede work and remain consumed on failure. Headless/private mode-0700 runtime only, explicit swaymsg -s, owned process groups, bounded logs and cleanup. No inherited daily IPC or library override. The collector seals source/evidence once, verification never rewrites them. Generated C protocols, clients/binaries/builds/logs/PNG/sockets stay outside Git. Actual observations and final verdict are recorded below after collection.

Post-run collection distinction

The exact executed fixture remains immutable in LAB/fixture. The measurements completed, but its final swaymsg exit returned 1 after normal compositor exit. Raw runtime.json and runner code/status are preserved. validate_results.py independently rechecks actual PNG, IPC/scene, real recipient events, focus, layout/clip and cleanup, and rejects changed RGB, invisible delivery, retained clip or abnormal compositor exit. It accepts terminal transport only after all scientific measurements, explicit exit, compositor code 0 and terminal EPIPE. The post-run collector is retained separately in LAB/postrun-fixture, with its own source inventory. Run that collector/validator for this completed campaign; do not substitute it for the historical executed fixture or rerun the compositor.

Measured result (one run, no retry)

LAB /home/fy59/swayfx-mosaic-static-rgb-input-retest-hn67lnhq. Scientific FEASIBLE for the exact matrix, architecture STATIC_MOSAIC_RGB_INPUT_STANDARD_FEASIBLE_FOR_TESTED_MATRIX. The executed runner exited 1 only on final exit IPC; compositor exited 0 after every measured gate. Raw failure is retained, never rewritten as a successful runner execution. 271 damage traces are partial evidence, not every-frame qualification.

H2 six PNGs are whole-RGB identical; 182,214 target pixels on H1, zero H2. Actual target visible serials 35/36, reference 48/49, standard target 67/68; wrong clients have no button delivery. Real H1 splith/clip removal measured, standard H1 paint 226,908 pixels. Budget run 1, camera 1, PNG 8, clicks 3, movements 6 including click positioning, duration 9.142914 seconds. No second run.

Source manifest 31 entries SHA-256 cb812ae3a27c9715efce2e1b2cfd36f315ea897d003c77944f688bc931861f1e; evidence 93 entries SHA-256 209196b2857381db7a856347dcce45cd3ee33c48c2db0c73777fc982d01ad568. Every entry verifies; runner/pre-run inventory and post-run collector are separate retained sources. Result additions here are later documentation.

Read-only final validation (no recording into sealed results):

PYTHONDONTWRITEBYTECODE=1 python "$LAB/postrun-fixture/validate_results.py" "$LAB"
PYTHONDONTWRITEBYTECODE=1 python "$LAB/postrun-fixture/verify.py" "$LAB"

No production readiness, broad static/shared equivalence, popup/effect/buffer qualification, full damage/generation or exhaustive ABI approval. STEP20C NEXT, production multi-output NOT YET SUPPORTED. The completed retest sources and report are preserved for publication. Any later static nested-grab campaign is separate and remains local, uncommitted and unpublished. No installation or system/session change.