# STEP20C static E2 transition and completion **EXPERIMENTAL. Phase B PASS; Phase C FEASIBLE for the tested matrix; Phase D initial candidate BUILDABLE, comment delta ACCEPTED / NOT REBUILT.** Independent B/C/D reviews accept these bounded findings. Phase E final deep audit is PASS / ACCEPTED, with no BLOCKING finding. Publication identities are recorded in Git history and the private closeout receipt; this report does not self-reference its publication commit. Ticket: `SWAYFX_MOSAIC_STEP20C_E2_COMPLETION_AND_PRIVATE_INTEGRATION_BATCH_V1`. Historical freeze: `c5f96a34e3924275179365938d02f3a318c0c4bf`, verified on Forgejo and GitHub. The historical runtime remains INCONCLUSIVE. ## Accepted bounded experiment contract Canonical [architecture](../ARCHITECTURE.md), [UX](../UX.md), [limitations](../KNOWN_LIMITATIONS.md), [roadmap](../ROADMAP.md), [development](../DEVELOPMENT.md), [packaging](../PACKAGING.md) and [upstream](../UPSTREAM.md) govern. This experiment changes no production or UX contract. All historical LAB bytes remain unchanged. Historical fixture scripts are unchanged, and the repository fixtures remain byte-identical to the Phase A publication baseline `c5f96a34` during B–E. The Phase A README status update and its earlier runtime-inventory binding are explicitly documented below. The derived fixture under `tooling/probes/step20c-static-e2-completion/` must share `validate_applied_standard_transition(...)` between offline replay and runtime. It verifies ordered applied Mosaic, targeted accepted splith IPC, applied standard and stabilized standard observations, with exact owner/root/ workspace/output attribution, absent tiled/root clips and live mapped popups. Pending state is insufficient. Multiple roots or ambiguous epochs are INCONCLUSIVE. Independent observations do not establish atomic generation. Negative tests cover all seventeen specified temporal/provenance failures, legitimate omissions and empty PASS records. The entire E2 assertion path and handoff must be independently accepted before any runtime reservation. ## Sole authorized runtime, conditional on offline gates One fresh private LAB, ticket-specific durable owner and exclusive consumed launch token. Unchanged static binary SHA256 `f82557c1a9978a5e9665b9b4291b74880253725359e3df1c5b8d554921f7603b`, build ID `942db64269640778ee433e5970ba1100bc60f94c`; actual mapped wlroots SHA256 `7edca9a7d65855addda68e29ba5db94d57c803eb5fa7d0f86db3136b90ca9837`. No SceneFX dynamic mapping, compositor rebuild or pristine control. Private headless H1(-800,0), H2(0,0), each800x600, scale1/normal; runtime0700, clean environment and explicit private IPC socket on every command. Limits: run1, chain1, grabs2, complete clicks4, camera1, transition1, PNG12, positions16, maximum150 seconds. Failed runs are never refunded/retried. Unique static H2 reference #303038, border none by actual con_id, full content. Two stabilized full-RGB references must be identical without mask/tolerance. A and B open from distinct real button serials with TOPLEVEL->A->B hierarchy, configure/ACK/map/protocol corroboration. Applied camera/owner geometry and root/tiled clips must explain measured Mosaic H1 pixels and whole-H2 equality. Targeted splith preserves workspace and mapped owner/A/B; shared temporal predicate qualifies observed clip removal. Standard H2 overflow is expected. B right press/release comes from a measured solid green interior. Explicit client close of B must be distinguished from popup_done; A retains its XDG object, map, pixels and input. Recalculate A right-click point from a new capture after B disappears. Normal owner close destroys popups; final whole H2 RGB must exactly equal the initial reference, with no A/B residual color. Preserve raw runner, terminal IPC, compositor/client codes and protocol logs, including cleanup/rescue. Terminal IPC1 alone does not undo completed science. ## Conditional private integration and publication Only runtime FEASIBLE plus accepted review permits a private integration candidate outside production Git. Pinned source/patch provenance is mandatory; limits are one SceneFX static build, one Mosaic build, one DESTDIR stage, zero graphical runs/installations. Stage only `/usr/bin/swayfx-mosaic` and justified notices under `/usr/share/licenses/swayfx-mosaic/`. BUILDABLE is not production readiness, and the candidate binary has no graphical qualification from E2. Reviewed documentation/fixture source may be committed and pushed normally; no production source, real PKGBUILD, cumulative patch, binary, PNG or build file. STEP20A DONE; STEP20B EXPERIMENTAL; STEP20C NEXT; STEP20D–G PLANNED. Production multi-output NOT YET SUPPORTED. ## Recorded completion — 2026-10-13 This is the current results record for the ticket. The original fixture [README](../../tooling/probes/step20c-static-e2-completion/README.md) is the **sealed pre-execution protocol**, preserved byte-for-byte in the accepted runtime manifest; its PREPARATION/NOT RUN wording describes that earlier state. Use [README_RESULTS](../../tooling/probes/step20c-static-e2-completion/README_RESULTS.md) for the synchronized current status. Historical reports and fixtures retain their original INCONCLUSIVE verdicts. This report adds evidence, not production architecture, final popup UX, a packaging change or STEP20D implementation. ### Phase A — historical preservation Initial batch HEAD was `54392cc0`; historical publication was verified at `c5f96a34e3924275179365938d02f3a318c0c4bf`, equal to origin/main and github/main at that gate with a clean tracked tree. This identifies the historical publication only; the completion batch has no recorded publication SHA yet. The 60-entry historical source manifest SHA256 is `263f5dbee5e96f2c49619802d063115f792718f6aeb71fa41c58c73b83eb8c91`; the 178-entry historical evidence manifest is `e8b2307612ce2402ff9b31e68b50a47d666ca38cd8cce1d67096297f8129034a`. All entries, thirteen PNGs and raw terminal codes were verified. Historical runner/dispatch1, IPC1 and compositor/clients0 remain unchanged. Historical standard input, explicit B close/A survival and final H2 restoration remain NOT TESTED in that campaign. The Phase A publication updated only historical repository documentation status, including the runtime fixture README. Its old 92-entry pre-execution inventory still records that README at SHA256 `12d324b8cc971565c1e1f59b370cc7ada5df2567f6c6573f8b4f6cf60b8e56d8`; the published README is now `9574f2ab2cd538d78f9bf57bf98484dd5fdd66203013658709ddeb02ba5332ed`. The inventory and LAB copies remain intact. No new PASS92 is claimed: the final source60/evidence178 seals used here and by replay verify every entry. The final reviewer classified this documentation provenance note NON_BLOCKING. ### Phase B — shared applied-transition validation, offline only `validate_applied_standard_transition(...)` is shared by replay and runner. It requires source-backed applied/current Mosaic, a targeted accepted splith request, applied standard and at least two coherent stabilized standard observations. Exact owner/root/workspace/output, live XDG hierarchy, protocol and capture identity are correlated, and observed clip reactivation is rejected. Pending state or ambiguous roots/epochs cannot qualify the gate. This bounded correlation does not establish atomic transaction generation. The old request-start timestamp was absent. Offline replay uses the explicit actual interval `[181922658327071,181923034516066]`, reply `181923035203192`, retained old root `181923034904618` and cleared standard roots `181923236944243` and `181923848675032`. No old row is discarded. The historical standard PNG has content origin `(-398,25)`, A `[-298,105,350,170]`, B `[-198,165,300,130]`, and H2 A3120/B13260 pixels. This is **OFFLINE replay**, not a new runtime or retroactive qualification of missing historical input. The final derived fixture corrects old-configure mixing and the pre-root opening window. All 104 targeted tests pass, including seventeen temporal/ provenance negatives and fifteen explicitly synthetic handoff tests. Nonempty executed receipts are required; the 277 static assertion inventory classifies source sites and is not graphical execution proof. The independent tester reproduced 104 PASS, C17 syntax for four clients and nineteen Python AST checks. The independent reviewer reran 88 pure tests and verified all 104 actual receipts, accepting B. All B gate markers pass before dispatch. The attempted fresh setup of the older 206-test suite retained 145 PASS and 61 errors from missing preflight native-SHM evidence and dependent source-audit setup. Its 145 preflight checks and replay passed. This setup limitation is separate from the new 104-test gate and does not rewrite the historical qualified 206 result. No synthetic execution receipts were substituted. Early failed bounded tester attempts are retained privately; the final C validation has 28 PASS. ### Phase C — sole new runtime, FEASIBLE for this E2 matrix Private LAB: `/home/fy59/swayfx-mosaic-e2-completion-dk1hq9an`. The exclusive launch token was consumed once; post-run refusal was verified. There was no E1/pristine-control build or runtime retry. Binary SHA256 remains `f82557c1a9978a5e9665b9b4291b74880253725359e3df1c5b8d554921f7603b`, build ID `942db64269640778ee433e5970ba1100bc60f94c`. Actual mapped wlroots is `7edca9a7d65855addda68e29ba5db94d57c803eb5fa7d0f86db3136b90ca9837`. No dynamic SceneFX mapping was observed. Actual rendering used FX/GLES; an environment renderer request is not evidence of Pixman execution. Outputs were H1 `(-800,0)` and H2 `(0,0)`, 800×600, scale1, normal transform. Reference container7/PID2130252 was solid `#303038` with empty decoration and full client size. Stored border width2 is valid under the observed border-none state. Owner9/PID2130263 stayed in workspace6. One camera scroll -320 changed 480→160; applied scene was `(-320,0,640,600)`, content origin `(-318,25)`. Native SHM420×320 remains distinct from assigned content636×573. Root `0x55b8d482ea30` carried local clip `[-482,-25,800,600]`, global `[-800,0,800,600]`. Real left serial33/ACK34 opened A; real left serial42/ACK43 opened B. The wire chain was TOPLEVEL XDG9 → A XDG12 → B XDG15. Configure/ACK/map and wire/client observations corroborate both valid grabs. Mosaic A was `[-218,105,350,170]`, B `[-118,165,300,130]`. | Settled capture | H1 A | H1 B | H2 A | H2 B | Whole H2 reference equality | | --- | ---: | ---: | ---: | ---: | --- | | Mosaic | 24080 | 15340 | 0 | 0 | Exact | | Standard A+B | 28880 | 25740 | 3120 | 13260 | Ordinary overflow expected | | Standard after explicit B close | 50660 | 0 | 8840 | 0 | Ordinary A overflow expected | | Final owner close | 0 | 0 | 0 | 0 | Exact | Targeted `[con_id=9] layout splith` request `191234782728967` received accepted reply `191234785087227`. First applied standard root was `191234987463354`, stabilized root `191235601727206`; four more standard callbacks through B input retained absent tiled/root clips. Owner/root/workspace/output and mapped popups were preserved. Standard content origin became `(-398,25)` with the same A/B rectangles as the old standard replay. Standard H2 popup pixels are expected ordinary overflow, not a reference-equality failure. Measured B point `(10,175)` delivered right pair53/54 at local `(208,10)`. Explicit `close_b` produced exact wire destruction and `COMMAND close_b DONE`, with no `popup_done`. A retained the same mapped objects and pixels. A new post-close capture selected point `(10,115)` and right pair59/60 at local `(308,10)`. Normal `close_owner` destroyed A before TOPLEVEL and exited0. Final H1/H2 contain zero A/B colors. Reference1, reference2, Mosaic H2 and final H2 all have PNG SHA256 `4471e93ccb6cf3ff4970f61fce405431a228af598d2f1f030a3b7586962ecd7a`; all 480000 RGB pixels match without mask or tolerance. Twelve captures and six exact A/B geometry/occlusion masks were independently verified. Runtime was 13.05365723601426 seconds of 150: run1, chain1, grabs2, complete clicks4, captures12, camera1, transition1, positions5/16. Runner and dispatch0; terminal IPC1 retained stderr `Unable to receive IPC response`; compositor, E2, filler, reference and pointer0. No rescue/watchdog was needed; private runtime `/tmp/msng-znx8zrw4` disappeared and owned PIDs were reaped. Response loss during normal shutdown is compatible with these observations, not causally proven. Two startup EGL_BAD_ALLOC enumeration entries are retained; they did not prevent the measured matrix or normal exits. The 256 damage traces are sampled coverage, not complete damage or atomic-generation proof. Independent C review ACCEPTED the FEASIBLE finding; final tester C has 28 PASS. ### Phase D — private initial candidate BUILDABLE, annotated delta NOT REBUILT C's accepted FEASIBLE gate enabled the conditional private integration dossier at `LAB/integration-candidate/`. Pinned sources: SwayFX `fd71a6bdc061bd633b488ae7b83e8a6981d22f86`, Mosaic `cd550382b311efdbfe3ed892f4e1d281d852e754`, SceneFX `37ccd723bef49e6891156ffafce8f549f01446cc`, wlroots `d783533489e1f75d6886c2ab5c5960090ef268f8`. Archive reconstruction and eight historical patches passed applicability and source-equivalence checks. One SceneFX static build, one Mosaic build, one model test1/1 and one DESTDIR stage passed. Zero graphical runs and zero installations occurred. The private initial binary is `616aa504334d88aada5b1596df624957f39b0f1ae975a1a04105fbf73aea6dd0`, build ID `a0a46860f3b0f1b9dcc7f9044acca7f8489cceec`; it differs from C and is graphically **NOT TESTED**. Private cumulative SwayFX patch SHA256 is `8acde9a9755e0db16fee4c49c479649414bd23f0dab399e4e6a4aa2e1053b1d3`, SceneFX `768372773f8755083aa02be5547863b1269ef9facb2131b0a7acc5574c822856`. These private patches are not published in the fixture or production patch. No additional Meson delta was needed beyond the existing private static pkg-config selection. `PKGBUILD.future` syntax passed; recipe execution is NOT RUN and the production PKGBUILD remains unchanged. The complete stage has exactly five regular owned files: - `/usr/bin/swayfx-mosaic`; - `/usr/share/licenses/swayfx-mosaic/INCORPORATED-NOTICES`; - `/usr/share/licenses/swayfx-mosaic/SceneFX-LICENSE`; - `/usr/share/licenses/swayfx-mosaic/SwayFX-LICENSE`; - `/usr/share/licenses/swayfx-mosaic/wlroots-LICENSE`. The one-binary Meson manifest is the intermediate stage before notice addition; the final five-file manifest is complete. An initial tester concern about absent notices was corrected against that final manifest. Relocation checks pass; 85 overlapping symbols are characterized, 17 structs/six offsets were locally checked with C17 and 71 transitive libraries inventoried. Semantic ABI maintenance is **NOT ESTABLISHED**. Conservative notice inventory covers 895 inputs, 599 headers,12 shaders,7 XML,16 generated inputs and282 full notice blocks. Exact extraction/header obligations and legal release clearance remain open: legal compliance **NOT APPROVED**. Named release/security roles remain required. The initial independent D review was CORRECTION_REQUIRED on P2 source comments. One bounded `comment-repair/` derivation annotated four files in two private patches: SceneFX `21f057ff4180bb5dd35af35070aa4a95923be83f81abb864793e5bfb93643b01`, Mosaic `7fee137101abc0cd5024cea172c5904268ddf995bc5855c570e4dfabd643c970`. Lexical checks preserve all active C tokens; exact patch application and parent/ annotated hashes pass. Delta review ACCEPTED / P2 RESOLVED. This is **COMMENT-ONLY / NOT REBUILT**: the original sources/builds/binary/manifests are unchanged; inserted lines may affect `__LINE__` diagnostics. The initial recipe was neither amended nor executed for these annotated copies. A future annotated recipe must add both patches after the eight historical patches and requires separate rebuild authorization. D BUILDABLE means initial build evidence plus resolved comment obligation, never a compiled annotated candidate. The sealed `results/final-gate.json` retains its original review-PENDING snapshot. The authoritative appended `/batch/phase-d-gate.json` records the accepted final D gate without rewriting that snapshot. ### Provenance and independent review bindings `/batch` below means `/home/fy59/swayfx-mosaic-e2-batch-hyrd8qm1`; `LAB` means the sole C laboratory above. All referenced private manifests and entries were verified; artifacts, raw logs, PNGs, builds and integration patches remain outside Git. The 23 accepted fixture source files, including the original README, remain byte-identical. The current results README is a documentation append, not a modification of the reviewed runtime inputs. | Record | Entries / status | SHA256 | | --- | --- | --- | | B/C source handoff | 73 verified entries | `b90bd1564acfdd78276843a5fe5ddb2ba1b5fb75fdd5f097fa64f073d0a89cbc` | | C evidence | 66 verified entries | `1f3723db89a6a5dca05f094d8e7c370feebcc640c922838b7abecb99167b6067` | | D initial source | 1003 verified entries | `fca097b0376694fd563b33fb49923086a19d1a5a9cfe5ba9fc045707b07bc61f` | | D initial evidence | 172 verified entries | `4be20af63e0ee4f4b5c2187584bbb7087ece1be5cd9d5576246ae5a62eda2957` | | `/batch/review-b-report.md` | ACCEPTED | `eddefb3dfbde5410c32b1addf940977d0b2a176c91009597bf4130ba4929ef82` | | `/batch/review-c-report.md` | ACCEPTED / FEASIBLE | `e506b42e64a18fd237cea5199f67d49745436ee9a10f01798f07eb2072050f68` | | `/batch/review-d-delta.md` | ACCEPTED / P2 RESOLVED | `6a7299e530ce3abde51997572b0bccccc61c5d88180c15925dcecc6cb76a32d7` | The original D review `/batch/review-d-initial.md`, earlier tester failures, raw terminal failures and historical fixtures remain available unchanged. ### Consolidated boundary and next gate | Domain | Evidence now recorded | Remaining qualification | | --- | --- | --- | | Static tiled clip | Prior static RGB/input/standard retest | Wider graphics/daily use NOT QUALIFIED | | Static grabbed popups in Mosaic | Historical E1 and new C E2 sampled pixels/hierarchy/grabs | Other popup families/geometries NOT TESTED by C | | Static standard return/input/lifecycle | C E2 FEASIBLE, B then A input and explicit normal close | Universal click-through/final popup UX UNDECIDED | | Hidden-owner guard | Historical private evidence | New static C hidden-owner matrix NOT TESTED | | Saved-buffer continuity | Separate historical saved-target evidence | Static C continuity NOT TESTED; lifetime gate open | | Blur/shadow/effects | Historical PARTIALLY_FEASIBLE with retained limits | New static C effects NOT TESTED | | Scale/rotation/vertical geometry | Historical bounded private probes | Generalized static pair NOT QUALIFIED | | Output migration/resize | Historical bounded ownership evidence | Static C/D migration NOT QUALIFIED | | Damage/stale pixels | Settled restoration and 256 sampled C traces | Complete/intermediate-frame coverage NOT QUALIFIED | | Transaction generation | Ordered applied observations | Atomic transaction/render/input identity NOT ESTABLISHED | | ABI and maintenance | D local header/symbol/relocation characterization | Maintained semantic ABI, upgrades/security gates open | | Private static packaging | D initial BUILDABLE, exact five-file stage | Annotated source NOT REBUILT; recipe NOT RUN; legal NOT APPROVED | | Production integration/distribution | No source/package/UX change | STEP20C NEXT, production multi-output NOT YET SUPPORTED | Phase E documentation prepares the authorized second publication with intended message `test(mosaic): qualify static nested standard return and integration readiness`. The final deep batch audit is PASS / ACCEPTED, with no BLOCKING finding. Normal publication identities are recorded by the accompanying Git commit and `/batch/closeout.json`; no self-referential commit SHA is embedded here. Any graphical qualification of the D binary or annotated rebuild requires a separate bounded authorization; C's result cannot qualify D. STEP20A DONE; STEP20B EXPERIMENTAL; STEP20C NEXT; STEP20D–G PLANNED. ## Final audit and gate record The independent Astra final review is preserved at `/batch/final-review.md`, SHA256 `088f1b0e9d32095d20c842400d865a3e880cf122ce51b952cbf342c99ee3fe3f`. It reran 88 pure tests, recalculated all claimed A/C/D manifest entries and C's actual geometry/RGB/input/lifecycle evidence, and accepted publication. No additional runtime, build or staging was executed during closeout. ```text STATIC_NESTED_RUNTIME_FREEZE=PASS E2_TEMPORAL_REPLAY=PASS E2_TEMPORAL_NEGATIVES=PASS E2_ASSERTION_AUDIT=PASS E2_OFFLINE_TESTS=PASS E2_INDEPENDENT_REVIEW=ACCEPTED STATIC_E2_RUNTIME_PREPARATION=PASS STATIC_E2_RUNTIME_HANDOFF=PASS SWAYFX_MOSAIC_STATIC_E2_COMPLETION=FEASIBLE STEP20C_PRIVATE_INTEGRATION_CANDIDATE=BUILDABLE ``` BUILDABLE refers to the initial D build; the accepted annotated source delta remains COMMENT-ONLY / NOT REBUILT. Final remote identities and publication outcome are recorded separately in `/batch/closeout.json` after direct checks.