# Compositor fixture

This is the separate Phase 5 qualification fixture selected by ADR 0042. Its
authored package declares one `CloudCompositor : CompositorEffect`, its
immutable Main-to-Render snapshot controls, one Main-only local-device probe,
and the Render-only `_render_callback`, which receives the bridge-injected
`gd.Render_Call`. `RenderData` remains a callback-scoped engine-owned borrow.
The two small compute shaders are compiler-owned source inside the authored
package and are compiled on their owning global or local device. The global
path also retains the density-field-upload workload's 4 MiB staging owner; its
pure producer writes the Godot backing store and the shader verifies the
transferred tail before tinting.

Since the ADR 0050 migration this fixture is a generated-mode project: the
authored package under `declarations/` is the single source and the project
image is the generated bridge, so no handwritten image adapter exists. The
render bodies reach the reviewed render facade through
`call_authority.main_facade` and `render_facade`: the bridge binds one facade
API at bootstrap, installs it on the call authority, and the authority mirrors
its publication on every capability dispatch, so facade operations validate
against exactly the callback scope that produced them.

The exact pre-1.0 live matrix is macOS arm64 Forward+ with Metal on the pinned Godot snapshot
only. Global compositor work is submitted by Godot. The local-device probe alone
performs explicit submit, sync, and readback. Other exact Godot versions are
post-1.0 compatibility work.

This directory is also a configured Gododin project. `gododin.toml` declares the
Phase 4 native composition and, under
[ADR 0046](../../docs/decisions/0046-separate-gododin-authority-root-from-configured-project.md),
an `authority_root` of `../..`: declarations, the project image, the Godot
project, and the generated runtime are this project's, while the stable Host
source, the bindings, the stage tool, and the managed Odin distribution are the
repository's. `gododin.lock` is a byte-identical copy of the repository lock,
because the publication owner reads a lock beside the config; a Phase 5 case
requires that equality so the copy cannot become a second toolchain authority.
Everything the build owner needs beyond that is machine-specific and ignored:
create `.gododin/local.toml` here naming the same Godot executable and export
home as the repository's.

Generated catalog, documentation, the generated image bridge, and the
generator-owned typed MethodBind inventory live under `generated/`. The
inventory names the render support set the bridge binds; the build owner's
compile stage verifies the rendered image object's surviving
`godot::bind_*_prebound` symbols against it, so declaration and image cannot
drift. The inventory, the generated runtime, and the generated bridge are
covered by the same receipt. The live Host/image project, its checked-in
run/requalification/test harness, and the renderer evidence receipt live under
[`live/`](live/README.md); this fixture does not alter the completed
`native-basic` scene or Phase 4 recovery project.

The current dated receipts describe the same rendered result and share one
configured debug publication from the installed SDK selected by the current
lock. The harness switches its isolated copy to installed authority; the
checked-in project remains a checkout-authority fixture.

[`compositor-evidence-2026-10-19-sdk5.json`](compositor-evidence-2026-10-19-sdk5.json) and the inspected
[`compositor-evidence.png`](compositor-evidence.png) are the exact-target
Forward+/Metal rendering receipt for that harness. They record artifact
identities, the observed device line, the baseline and blue-dominant viewport
colors, the shader-verified 4 MiB bulk payload, and the zero-owner shutdown
counters.

[`phase4-evidence-2026-10-19-sdk5.json`](phase4-evidence-2026-10-19-sdk5.json) is the Phase 4 editor/build/export
requalification recorded with this artifact: the coordinator publication, a
recovery editor that loads no project image, an accepted editor that loads and
unloads the pair without making a call, a windowed current accepted run, and both
exports with their applications executed. Its binding to the rendering receipt is
the inspected PNG: the run and both exported applications each wrote it byte for
byte.

Neither receipt promotes macOS arm64 platform support. That promotion needs every
native, editor/export, and renderer gate to pass together under one release
toolchain and a clean-machine matrix; these record the recording host only.
Changes that invalidate the catalog, artifact, or toolchain evidence require
requalification and new dated receipts even when the inspected PNG stays stable.
The [September rendering receipt](compositor-evidence-2026-09-19-xcode27.json),
[September editor/export receipt](phase4-evidence-2026-09-19-xcode27.json), and
earlier undated receipts remain unchanged history. The first beta1
checkout-authority receipts also remain historical after this SDK reseat. The current pair also binds
a [retained trace archive](compositor-trace-2026-10-19-sdk5.tar.xz) with the
executed logs, artifact manifests and inspected images.
