# Upstream maintenance The [CORE-C V2 dossier](design/STEP20C_COREC_V2_INTEGRATION_DECISION.md) records exact new pinned parents, private patch SHA256, three binary Build IDs and static-SceneFX/shared-wlroots provider checks. This is experimental source-only persistence, not a permanent library fork or production merge. Each changed source/dependency pair requires fresh impact review, rebuild, ABI/stage and relevant native qualification. Notices remain LEGAL_NOT_APPROVED; maintenance, release and security owners are unassigned. Rollback/coexistence is prepared around the distinct Mosaic binary and ordinary independently updatable SwayFX fallback, with no live rollback executed. Production availability remains UNDECIDED; STEP20C NEXT, production multi-output NOT_YET_SUPPORTED and authority FALSE. SwayFX Mosaic is an independent derivative of [SwayFX](https://github.com/WillPower3309/swayfx), which is based on [Sway](https://github.com/swaywm/sway). It is not endorsed by either project's maintainers. Preserve their license and attribution; see [LICENSE](../LICENSE) and [NOTICE](../NOTICE.md). ## Pinned source base | Item | Current value | | --- | --- | | SwayFX tag | `0.6` | | Upstream commit | `fd71a6bdc061bd633b488ae7b83e8a6981d22f86` | | Reported Sway base | 1.12.0 | | wlroots series | 0.20 | | SceneFX series | 0.5 | The historical locally installed Arch package was `swayfx 0.6-1`, but its exact source revision could not be reconstructed from available package metadata. The public SwayFX 0.6 tag is the verifiable project base; do not claim byte-for-byte equivalence with that older package. ## Remote policy and history `origin` is the canonical Forgejo project; `github` is the public mirror; `upstream` is SwayFX and is **fetch only**. No Mosaic branch or commit is pushed to SwayFX upstream. The project's `main` has clean public project history rooted in the imported SwayFX 0.6 base. The upstream remote remains an external source of new releases, not a project publication target. ## Delta and versioning The maintained production delta is `patches/0001-mosaic-layout-viewport.patch` on the pinned source commit. The package builds the full compositor because SwayFX has no stable external layout plugin ABI, then installs a distinct binary. Example versions are `swayfx 0.6` and `swayfx-mosaic 0.6+mosaic.1`. A SwayFX `0.7` release does not automatically validate a Mosaic `0.7` package. ## Forward-port procedure 1. Fetch upstream; inspect the release tag, commit, relevant source changes, and dependency versions. 2. Open a dedicated update branch and document changed architecture/UX/package assumptions before implementation. 3. Build the pristine upstream baseline at the candidate commit. 4. Rebase or manually forward-port the Mosaic patch. On conflict, inspect both implementations and adapt the delta deliberately; never force automatic patch application or accept rejected hunks. 5. Review exported patch scope; update pinned commit, package version, and checksums together. 6. Build Mosaic, run model and headless compositor tests, verify standard layouts, IPC, rendering, and package staging/file ownership. 7. Update [known limitations](KNOWN_LIMITATIONS.md), [roadmap](ROADMAP.md), and release notes with the observed result. A failed patch check or changed compositor contract blocks that candidate release until resolved. It does not justify modifying the ordinary SwayFX package or using an ABI-incompatible binary workaround. The normal SwayFX package must remain independently updatable. ## Approved private STEP20C static candidate — 2026-10-13 The user approved four decisions for documentation and private prototypes only: private static SceneFX; separate complete notices under `/usr/share/licenses/swayfx-mosaic/`; project responsibility for embedded SceneFX maintenance; and qualification of each exact SceneFX/wlroots pair. See the [decision register and bounded runtime gate](design/STEP20C_STATIC_RUNTIME_AND_PACKAGE_CONTRACT.md). The current PKGBUILD, system SceneFX dependency, one-binary package, production sources and cumulative patch remain unchanged. The future private stage may contain only `/usr/bin/swayfx-mosaic` and justified regular notice files below the license directory. No private shared library, session, service, config or Sway symlink is allowed. No real installation is authorized. Mosaic owns monitoring, impact review, rebuild and requalification of embedded SceneFX fixes, including renderer/shaders/dependencies/ABI/buffer lifetime/clip/ damage changes. Before public distribution, a release maintainer and security reviewer must be designated; no names or SLA are assigned. Preserve exact source, patch, compiler/options/dependency, notice, test and artifact manifests. A new relevant dependency build requires header/symbol/shared-layout inspection, rebuild, relocation/model/staging/headless checks and graphical requalification of relevant paths, then a separate publication decision. No automatic update subsystem is added. Ordinary SwayFX upgrades remain independent and standard SwayFX remains the fallback. All other pairs are NOT QUALIFIED. These decisions do not settle popup UX or close STEP20C production gates. STEP20A DONE; STEP20B EXPERIMENTAL; STEP20C NEXT; STEP20D–G PLANNED. Production multi-output remains NOT YET SUPPORTED. ## Overnight private maintenance evidence The [annotated reconstruction report](design/STEP20C_ANNOTATED_REBUILD_AND_PRIVATE_STAGE.md) qualifies only the exact private SceneFX 0.5 source and shared wlroots 0.20.2 build recorded there. Local header/layout/symbol/relocation checks establish no future semantic ABI guarantee. Any relevant source or dependency build change requires impact review, rebuild and fresh qualification of the new binary; no previous SHA's graphics results are inherited. Release and security roles remain unnamed, and no SLA is established. Future recipe and notices remain PARTIALLY_FEASIBLE: syntax/input correspondence passed, complete makepkg and human legal/distribution review remain open. The [decision draft](design/STEP20C_PRODUCTION_INTEGRATION_DECISION_DRAFT.md) records proposed monitoring, requalification and rollback without adopting a production integration or changing normal SwayFX upgrade independence.