# Slice 4g: challenge fixtures and first exhibit visuals Implemented September 6, 2026. `tools/visual-challenge-fixtures.mjs` authors all fourteen PRD 130 challenge compositions and first visuals for Exhibits A–D. Generated `.xzbt` files are under `exhibits/visual-challenges` and `exhibits/exhibit-{a,b,c,d}.xzbt`. Each composition uses only existing generic primitives, systems, fields, behaviors, bindings and effects. No subject-specific renderer branch was added. The challenge suite validates every document, executes 120 logical ticks twice with different draw frequencies, verifies finite geometry and nonempty frame plans, compares final plans, and verifies cleanup. A nineteenth test checks deterministic standalone generation, embedded fixture identity and JavaScript syntax. The standalone `prototypes/phase4/XZBT-visual-acceptance.html` embeds production code and all eighteen fixtures. It provides fixture selection, pause/resume, seed restart, transient spawning, synthetic audio/state sliders and user observation export. Rebuild with `npm run build:visual-acceptance`. Exhibit D uses static text labels and state-driven geometry/layer presentation under the 0.1 contract. Live numeric string formatting was not added. The audio-reactive fixture uses the shared signal-binding surface; its review-page slider supplies an explicitly synthetic signal. Full A–D audio, cadence, scenario and final reference-suite obligations remain assigned to their later phases. The PRD 130 visual judgment is still a user-observed gate, and this artifact is not the 4h benchmark. No browser/display judgment or measured GC6 result is claimed by these tests.