74 lines
4.3 KiB
Markdown
74 lines
4.3 KiB
Markdown
# Dynamic output ownership source fixture
|
|
|
|
**EXPERIMENTAL / preserved source-only fixture.** Read the
|
|
[protocol and source audit](../../../docs/design/STEP20C_DYNAMIC_OUTPUT_OWNERSHIP_PROBE.md).
|
|
No production support or UX contract follows. Reconstruct in a full clone
|
|
containing `8345aff0f97d381b768233021fc5c881ec794094` and copy this local fixture.
|
|
Old temporary laboratories are not dependencies. No install or live IPC.
|
|
|
|
The preparer reuses pinned source-only fractional dependencies, builds private
|
|
SceneFX/Mosaic and pristine SwayFX 0.6, then compiles the per-event logical-extent
|
|
pointer and opaque SHM client with C17. Passive output traces preserve callback
|
|
order and clip/render decisions. All artifacts stay in its printed LAB.
|
|
|
|
Run each mode once in the same campaign. Never delete/reset the ledger or
|
|
create another lab to evade failed-action consumption. The runner reserves
|
|
D1/D2/D3/D5 before IPC; camera pairs are zero. Each run owns private runtime,
|
|
Wayland/IPC sockets and children, which its finally block removes.
|
|
|
|
```sh
|
|
sh tooling/probes/step20c-dynamic-output/prepare.sh
|
|
python tooling/probes/step20c-dynamic-output/test-budget.py
|
|
python tooling/probes/step20c-dynamic-output/run.py "$LAB" control
|
|
python tooling/probes/step20c-dynamic-output/run.py "$LAB" private_standard
|
|
python tooling/probes/step20c-dynamic-output/run.py "$LAB" private_mosaic
|
|
python tooling/probes/step20c-dynamic-output/analyze.py "$LAB"
|
|
```
|
|
|
|
Every IPC uses the private socket. Pointer coordinates derive from current
|
|
get_outputs logical bounds per event. No physical scaling in injection.
|
|
Failures remain scientific exclusions, not automatic clipping defects.
|
|
|
|
## Observed campaign
|
|
|
|
The one measured campaign at `/tmp/swayfx-mosaic-nested-grab-0zJrQnLj` applied
|
|
D1/D2/D3/D5 in all three modes: logical H1 width 800→960→800, workspace 6 and
|
|
tiled 8 preserved, H1→H2→H1 ownership and applied clips reassociated. It retained
|
|
230 PNGs. Mosaic completed; both controls completed transitions but failed
|
|
final calibration through temporary reference occlusion. Their generated
|
|
sources remain in their run directories; the final fixture relocates both
|
|
references before testing either. No failed dynamic action was replayed.
|
|
|
|
Result PARTIALLY_FEASIBLE. Stable vacated outputs are exact background;
|
|
Mosaic owner hits and both-output calibration pass at all scored stages.
|
|
Observed camera 640 remains within recalculated bounds; max-clamp is NOT TESTED.
|
|
Mapped popup boxes fit inside the Mosaic viewport at that camera: exterior
|
|
points are not proof of a clipped portion after migration. Opaque tiled spill
|
|
without a negative clip control, effects (disabled), newly included point hits,
|
|
intermediate frames, saved buffers and ABI/package remain unqualified.
|
|
|
|
Consumed budgets: six reconfigurations, six migrations, zero camera pairs.
|
|
The ledger is exhausted for dynamic operations: do not run any mode again in
|
|
this campaign. Only offline analysis/validation can be repeated. New campaign
|
|
measurements require a separately authorized scope and budget.
|
|
|
|
`scenario.py` stores source text as a Python constant; `run.py` inserts it into
|
|
the inherited bounded runner. Python AST checks cover the modules and all
|
|
retained generated runners. Clients compile under C17 -Werror. New patch hashes:
|
|
|
|
- pointer-dynamic-extents.patch: `b07b1549f541cc55e1170737ea7aa4b869cd97f3411c1b103be1b96b21971eef`
|
|
- ownership-trace.patch: `4a4a48566bd5d5fe8edf6146548cbcf4f93500cc62421780b75cd1dcb82abcb6`
|
|
|
|
The report distinguishes passive callback observation, settled capture and
|
|
client delivery. Raw runs, source/evidence manifests and structured analyses
|
|
remain outside Git. The original 529-entry evidence manifest and its expected
|
|
SHA-256 were verified before an offline analyzer rerun replaced that temporary
|
|
manifest with a 528-entry replay inventory. See the report's provenance note;
|
|
the original manifest bytes are no longer present in the lab.
|
|
|
|
For an independent wlroots source audit, fetch the authoritative wlroots Git
|
|
repository and inspect commit `d783533489e1f75d6886c2ab5c5960090ef268f8`
|
|
(tag 0.20.2). The campaign retains its complete source archive outside Git as
|
|
`wlroots-audited-source.tar`; replay binaries link installed wlroots 0.20.2,
|
|
without rebuilding or modifying that system library. pkg-config names are
|
|
`wlroots-0.20`, `scenefx-0.5` and `wayland-client`.
|