From ddd80fb73dc800f07751909f9bc1e1433f1b2172 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Paulo=20Furtado?= <30300459+jonit-dev@users.noreply.github.com> Date: Fri, 2 Oct 2026 00:09:09 -0700 Subject: [PATCH 01/41] docs(vq07): begin bounded volumetric fog implementation --- .../PRD-VQ-07-volumetric-fog.md | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md diff --git a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md new file mode 100644 index 0000000000..54cfa69488 --- /dev/null +++ b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md @@ -0,0 +1,64 @@ +--- +prd_contract: v1 +--- + +# PRD-VQ-07 — Local volumetric fog composes with depth, lights and existing atmosphere + +**Status:** PROPOSED — 2026-10-01. No implementation or qualification is claimed. +**Batch:** [Visual quality execution batch](https://github.com/ThreeNativeHQ/threenative/blob/docs/visual-quality-batch-2026-10-01/docs/PRDs/batch-2026-10-01-visual-quality/README.md). **Wave:** 2 / atmosphere. +**Dependencies:** Independent of clouds. Reuse VQ-06 only for any local-light feature it has actually qualified. + +## Grounding and intended outcome + +ThreeNative already has atmosphere LUTs and god-ray composition. Current upstream [VolumeNodeMaterial](https://threejs.org/docs/pages/VolumeNodeMaterial.html) and volumetric lighting machinery are reuse candidates, not proof of a finished ThreeNative fog product. Recheck the installed pin and the merged rain kit before introducing a new algorithm. + +**Outcome:** A bounded mist volume in an interior/exterior fixture responds to the main light and declared local lights, is occluded by solid geometry and blends into the existing atmosphere without becoming a uniformly bright screen overlay. + +## Design and ownership + +Start with the supported upstream volume/material or existing kit implementation. Density functions, phase function, color and artistic controls remain generated TSL/game source. Share only depth access, lifetime and ordered dispatch that the current render loop cannot already supply. Composite radiance with transmittance in the scene-linear graph before its one output transform; specify the relationship with aerial perspective and god rays so the same medium is not added twice. Keep history optional until its disocclusion behavior is qualified. + +A bounded volume and height-dependent density, one directional source and an explicitly supported local-light subset. No mandatory froxel engine, general weather manager, or promise that all point/spot shadow types work. + +## Required behavior + +- Zero density produces the no-fog image; an opaque foreground wall hides fog behind it. +- The fixture tests the camera both outside and inside the volume, a light toggle and overlapping density bounds. +- Step count and resolution are quality controls, with an explicit off/unsupported route and no dormant GPU allocations. +- Resizes, camera cuts and streamed occluder changes do not reuse invalid depth/history. + +## Execution phases + +All proof paths below are **planned implementation targets**, not existing passing tests. Reuse an existing equivalent test or scenario after inspecting current code, and update the canonical proof path rather than adding a duplicate. Follow [EXECUTE.md](https://github.com/ThreeNativeHQ/threenative/blob/docs/visual-quality-batch-2026-10-01/docs/PRDs/batch-2026-10-01-visual-quality/EXECUTE.md) for fixture setup, variables, review and repository gates. + +### Phase 1 — Depth-correct participating volume + +- [ ] Implement game-owned volumetric composition using the admitted upstream/kit mechanism and shared scene depth. proof: `pnpm exec vitest run packages/create-threenative/__tests__/vq-volumetric-fog.spec.ts`. +- [ ] Cover zero density, inside/outside camera positions and opaque occlusion with analytic or reference fixtures. proof: `pnpm exec vitest run packages/create-threenative/__tests__/vq-volumetric-fog.spec.ts`. + +### Phase 2 — Compose with the existing environment + +- [ ] Integrate directional and the declared local-light subset without double-applying atmosphere or god rays. proof: `pnpm exec vitest run packages/create-threenative/__tests__/vq-volumetric-fog.spec.ts`. +- [ ] Add bounded quality settings, history invalidation where used and deterministic resource disposal. proof: `pnpm exec vitest run packages/create-threenative/__tests__/vq-volumetric-fog.spec.ts`. + +### Phase 3 — Qualify the visible result + +- [ ] The fog fixture verifies occlusion, light response and zero-density identity on browser WebGPU with fixed-camera captures. proof: `node packages/playtest/dist/runner/cli.js examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json --url ${VQ_URL:?} --browser-recipe webgpu`. +- [ ] The same authored volume runs on Linux native and remains valid through resize and scene teardown. proof: `node packages/playtest/dist/runner/cli.js examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json --target desktop --executable ${VQ_NATIVE_EXECUTABLE:?}`. + +## Acceptance criteria + +- [ ] Fog is depth-correct and light-responsive, and turning it off restores the original graph and allocation baseline. proof: the completed Phase 3 scenario outputs, with the named fixture, package/cohort and adapter recorded inline here. +- [ ] The feature preserves its documented inactive/fallback path and releases owned resources after repeated lifecycle transitions. proof: `pnpm exec vitest run packages/create-threenative/__tests__/vq-volumetric-fog.spec.ts` plus the Phase 3 lifecycle scenario. + +## Performance and promotion + +Record pixels, ray steps, light count and cost on the same fixture. Choose tier admission from measurements, not an arbitrary AAA label. Numerical targets are proposed acceptance targets, not benchmark results. Pin the fixture, metrics and thresholds before changing the implementation; never relax a failing threshold just to mark this PRD complete. Shared abstractions must pass the repository's reuse/LOC admission rule. Appearance remains editable source. + +## Blocked on + +Phone performance and a wider local-shadow set are separate qualification work. + +## Completion record + +Update the phase boxes and this PRD only after the named proof runs. Record actual results inline, including any remaining exclusions. A merged planning or implementation PR alone is not proof that every acceptance criterion passed. Archive according to the parent PRD filing rules when the work is genuinely complete. From 8983a490b6d5d455d74bbe94408fd788475eff79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Paulo=20Furtado?= <30300459+jonit-dev@users.noreply.github.com> Date: Fri, 2 Oct 2026 01:38:47 -0700 Subject: [PATCH 02/41] fix(render): retain ownership of direct environment output graphs --- .../PRD-VQ-07-volumetric-fog.md | 10 +++- packages/core/__tests__/renderer.spec.ts | 42 ++++++++++++++ packages/core/src/renderer.ts | 12 +++- .../world-environment-lifetime.spec.ts | 58 +++++++++++++++++++ .../template-assets/worldEnvironment.ts | 56 ++++++++++++++---- .../action-rpg/src/render/worldEnvironment.ts | 56 ++++++++++++++---- .../minimal/src/render/worldEnvironment.ts | 56 ++++++++++++++---- .../platformer/src/render/worldEnvironment.ts | 56 ++++++++++++++---- .../puzzle/src/render/worldEnvironment.ts | 56 ++++++++++++++---- .../racing/src/render/worldEnvironment.ts | 56 ++++++++++++++---- .../rain/src/render/worldEnvironment.ts | 56 ++++++++++++++---- .../rts/src/render/worldEnvironment.ts | 56 ++++++++++++++---- .../runner/src/render/worldEnvironment.ts | 56 ++++++++++++++---- .../sailing/src/render/worldEnvironment.ts | 56 ++++++++++++++---- .../shooter/src/render/worldEnvironment.ts | 56 ++++++++++++++---- .../snow/src/render/worldEnvironment.ts | 56 ++++++++++++++---- .../starter/src/render/worldEnvironment.ts | 56 ++++++++++++++---- .../src/render/worldEnvironment.ts | 56 ++++++++++++++---- 18 files changed, 762 insertions(+), 144 deletions(-) diff --git a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md index 54cfa69488..0e4b76ed6a 100644 --- a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md +++ b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md @@ -4,7 +4,7 @@ prd_contract: v1 # PRD-VQ-07 — Local volumetric fog composes with depth, lights and existing atmosphere -**Status:** PROPOSED — 2026-10-01. No implementation or qualification is claimed. +**Status:** PARTIAL — 2026-10-02. Output-lifetime prerequisite implemented; fog and runtime qualification remain open. **Batch:** [Visual quality execution batch](https://github.com/ThreeNativeHQ/threenative/blob/docs/visual-quality-batch-2026-10-01/docs/PRDs/batch-2026-10-01-visual-quality/README.md). **Wave:** 2 / atmosphere. **Dependencies:** Independent of clouds. Reuse VQ-06 only for any local-light feature it has actually qualified. @@ -62,3 +62,11 @@ Phone performance and a wider local-shadow set are separate qualification work. ## Completion record Update the phase boxes and this PRD only after the named proof runs. Record actual results inline, including any remaining exclusions. A merged planning or implementation PR alone is not proof that every acceptance criterion passed. Archive according to the parent PRD filing rules when the work is genuinely complete. + +### Current checkpoint — 2026-10-02 + +The fresh checkout implements ownership-aware `clearOutputNode(expectedNode?)` without changing legacy no-argument calls. Generated `WorldEnvironment` now returns an idempotent disposer for a base-colour-only graph, passes its explicit scene pass to installation, releases its own scene pass and materialized base texture, and refuses an unsupported direct path before invoking the allocation factory. This prerequisite does not enable fog or change the default picture. + +Red-green proof: three new behavioral failures reproduced first; `pnpm exec vitest run packages/core/__tests__/renderer.spec.ts packages/create-threenative/__tests__/world-environment-lifetime.spec.ts packages/create-threenative/__tests__/shared-render-sources.spec.ts --maxWorkers=1` then passed 39/39. `pnpm exec tsc --noEmit -p packages/core/tsconfig.json`, focused strict renderer/generated-source compilation, API-surface and capability-manifest checks passed. Focused Biome passed with four complexity warnings, no errors. No runtime screenshot, native qualification, aggregate CI or fog acceptance is claimed. + +Reuse review at pinned `three@0.185.1`: `VolumetricLightingModel.direct()` skips a directional light because it has no `distance`; extinction is derived from accumulated light rather than independent density. Its material cannot satisfy the bounded directional radiance/transmittance contract unchanged. Existing `GodraysNode` provides the depth reconstruction and ordinary directional shadow coordinates to reuse in game-owned source. Rain's screen-quad coast and its god-ray composition do not provide bounded participating volumes. No new shared visual algorithm or renderer is admitted. diff --git a/packages/core/__tests__/renderer.spec.ts b/packages/core/__tests__/renderer.spec.ts index be278c8ea3..365ab43884 100644 --- a/packages/core/__tests__/renderer.spec.ts +++ b/packages/core/__tests__/renderer.spec.ts @@ -890,6 +890,48 @@ describe("createRenderer", () => { } }); + it("does not let an obsolete output owner clear its replacement", async () => { + const canvas = testCanvas(); + const descriptor = Object.getOwnPropertyDescriptor(globalThis, "navigator"); + Object.defineProperty(globalThis, "navigator", { configurable: true, value: { gpu: {} } }); + const renderPipeline = vi + .spyOn(RenderPipeline.prototype, "render") + .mockImplementation(() => {}); + const rawRender = vi.fn(); + const renderer = await createRenderer({ + canvas, + webgpuFactory: () => ({ + domElement: canvas, + init: async () => undefined, + render: rawRender, + setSize: () => undefined, + }), + }); + try { + const first = {}; + const replacement = {}; + renderer.setOutputNode(first); + renderer.setOutputNode(replacement); + renderer.clearOutputNode?.(first); + renderer.render(new Scene(), new PerspectiveCamera()); + expect(renderPipeline).toHaveBeenCalledTimes(1); + expect(rawRender).not.toHaveBeenCalled(); + renderer.clearOutputNode?.(replacement); + renderer.render(new Scene(), new PerspectiveCamera()); + expect(rawRender).toHaveBeenCalledTimes(1); + // Legacy no-argument calls keep their unconditional behavior. + renderer.setOutputNode(first); + renderer.clearOutputNode?.(); + renderer.render(new Scene(), new PerspectiveCamera()); + expect(rawRender).toHaveBeenCalledTimes(2); + } finally { + renderer.dispose(); + renderPipeline.mockRestore(); + if (descriptor === undefined) Reflect.deleteProperty(globalThis, "navigator"); + else Object.defineProperty(globalThis, "navigator", descriptor); + } + }); + it("replaces and disposes only the framework-owned output pipeline", async () => { const canvas = testCanvas(); const descriptor = Object.getOwnPropertyDescriptor(globalThis, "navigator"); diff --git a/packages/core/src/renderer.ts b/packages/core/src/renderer.ts index 824e9ba9d0..a544fb3e08 100644 --- a/packages/core/src/renderer.ts +++ b/packages/core/src/renderer.ts @@ -175,8 +175,8 @@ export interface IRendererLike { render(scene: Object3D, camera: Camera): void; /** Draws after the world without clearing or passing through the world's output pipeline. */ renderOverlay(scene: Object3D, camera: Camera): void; - /** Removes the output pipeline installed by a render-chain. */ - clearOutputNode?(): void; + /** Removes the output pipeline; an expected input only clears that still-current graph. */ + clearOutputNode?(expectedNode?: unknown): void; /** Creates the core-owned chain seam without making generated render source import the package. */ createRenderChain?: (options: Omit) => RenderChain; /** Feeds automatic render-chain tiers the completed frame-budget window. */ @@ -409,6 +409,8 @@ function wrapRenderer( softwareAdapter?: string, ): IRendererLike { let outputPipeline: RenderPipeline | undefined; + // Keep caller identity separately: RenderPipeline may wrap its public output node. + let outputInput: unknown; let outputPass: PassNode | undefined; const renderChains = new Set(); let renderChainUsesPerObjectVelocity = false; @@ -743,6 +745,7 @@ function wrapRenderer( renderChainUsesPerObjectVelocity = false; outputPipeline?.dispose(); outputPipeline = undefined; + outputInput = undefined; outputPass = undefined; pipelineCensus?.dispose(); raw.dispose?.(); @@ -776,10 +779,13 @@ function wrapRenderer( outputPipeline?.dispose(); outputPass = nextOutputPass; outputPipeline = nextPipeline; + outputInput = node; }, - clearOutputNode: () => { + clearOutputNode: (expectedNode) => { + if (expectedNode !== undefined && expectedNode !== outputInput) return; outputPipeline?.dispose(); outputPipeline = undefined; + outputInput = undefined; outputPass = undefined; }, renderChainUsesPerObjectVelocity: () => renderChainUsesPerObjectVelocity, diff --git a/packages/create-threenative/__tests__/world-environment-lifetime.spec.ts b/packages/create-threenative/__tests__/world-environment-lifetime.spec.ts index 1a3affec45..da98a462c0 100644 --- a/packages/create-threenative/__tests__/world-environment-lifetime.spec.ts +++ b/packages/create-threenative/__tests__/world-environment-lifetime.spec.ts @@ -38,3 +38,61 @@ it("releases the bloom effect and its materialized input when its chain is repla applied.dispose?.(); for (const release of releases) expect(release).toHaveBeenCalledTimes(1); }); + +it("owns the direct base-colour graph without requiring an unrelated post stage", () => { + const releases: ReturnType[] = []; + const worldPasses: unknown[] = []; + const outputs: unknown[] = []; + const clearOutputNode = vi.fn(); + const renderer = { + kind: "webgpu", + raw: {}, + clearOutputNode, + setOutputNode(node: Node, worldPass?: unknown) { + outputs.push(node); + worldPasses.push(worldPass); + node.traverse((candidate) => { + if (Reflect.get(candidate, "isRTTNode") !== true) return; + const scratch = candidate as unknown as { + renderTarget: { dispose(): void }; + _quadMesh: { material: { dispose(): void } }; + }; + releases.push(vi.spyOn(scratch.renderTarget, "dispose")); + releases.push(vi.spyOn(scratch._quadMesh.material, "dispose")); + }); + }, + }; + let suppliedPass: unknown; + const applied = new WorldEnvironment({ bloomEnabled: false, screenSpaceAA: "disabled" }).apply( + renderer, + new Scene(), + new PerspectiveCamera(), + { + baseColour(scenePass) { + suppliedPass = scenePass; + releases.push(vi.spyOn(scenePass, "dispose")); + return scenePass.getTextureNode("output").mul(0.5); + }, + }, + ); + expect(applied.stages).toEqual([]); + expect(applied.dispose).toBeTypeOf("function"); + expect(worldPasses).toEqual([suppliedPass]); + expect(releases).toHaveLength(3); + applied.dispose?.(); + applied.dispose?.(); + expect(clearOutputNode).toHaveBeenCalledExactlyOnceWith(outputs[0]); + for (const release of releases) expect(release).toHaveBeenCalledTimes(1); +}); + +it("refuses a direct graph on an unsupported renderer without invoking its allocation factory", () => { + const baseColour = vi.fn(); + const applied = new WorldEnvironment({ bloomEnabled: false, screenSpaceAA: "disabled" }).apply( + { kind: "webgl2", raw: {} }, + new Scene(), + new PerspectiveCamera(), + { baseColour }, + ); + expect(baseColour).not.toHaveBeenCalled(); + expect(applied.dropped).toEqual([{ name: "baseColour", reason: "renderer:webgl2" }]); +}); diff --git a/packages/create-threenative/template-assets/worldEnvironment.ts b/packages/create-threenative/template-assets/worldEnvironment.ts index f61ec7a8e9..037c3b8db6 100644 --- a/packages/create-threenative/template-assets/worldEnvironment.ts +++ b/packages/create-threenative/template-assets/worldEnvironment.ts @@ -335,7 +335,9 @@ export type OutputRenderer = { * stage is off: the chain installs nothing for an empty stage list, and dropping the game's * own composition on the floor would be the silent no-op this class exists to prevent. */ - setOutputNode?: (node: unknown) => void; + setOutputNode?: (node: unknown, worldPass?: unknown) => void; + /** Clear only the named current graph, so an obsolete scene cannot clear its replacement. */ + clearOutputNode?: (expectedNode?: unknown) => void; createRenderChain?: (options: { input?: unknown; worldPass?: unknown; @@ -466,6 +468,11 @@ export class WorldEnvironment { this.#reportApplied([], []); return { dropped: [], stages: [] }; } + if (requested.length === 0 && renderer.kind !== "webgpu") { + const dropped = [{ name: "baseColour", reason: `renderer:${renderer.kind}` }]; + this.#reportApplied([], dropped); + return { dropped, stages: [] }; + } raw.toneMappingExposure = 1; const scenePass = pass(scene, camera); @@ -500,7 +507,24 @@ export class WorldEnvironment { const view = camera as PerspectiveCamera; const base = target.baseColour?.(scenePass) ?? scenePass.getTextureNode("output"); - const exposed = convertToTexture(base).mul(options.exposure); + const baseTexture = convertToTexture(base); + const exposed = baseTexture.mul(options.exposure); + let released = false; + const releaseGraph = (): void => { + if (released) return; + released = true; + // convertToTexture creates an RTT only for a non-texture expression. An already supplied + // texture belongs to its caller; its lifetime must not be stolen by this environment. + if (baseTexture !== base) { + const owned = baseTexture as unknown as { + renderTarget: { dispose(): void }; + _quadMesh: { material: { dispose(): void } }; + }; + owned.renderTarget.dispose(); + owned._quadMesh.material.dispose(); + } + scenePass.dispose(); + }; const giDenoise = (node: ChainNode): ChainNode => options.denoiseEnabled ? denoised(denoise(node, depth(), normal(), view)) : node; @@ -727,15 +751,26 @@ export class WorldEnvironment { // A composed base colour with every stage off still has to reach the frame. The chain // installs nothing for an empty stage list, so this is the one path that goes direct. if (requested.length === 0) { - if (renderer.kind !== "webgpu") { - this.#reportApplied([], [{ name: "baseColour", reason: `renderer:${renderer.kind}` }]); - return { dropped: [], stages: [] }; + if (renderer.setOutputNode === undefined || renderer.clearOutputNode === undefined) { + releaseGraph(); + throw new Error("Output node installation and ownership-aware disposal are required."); + } + try { + renderer.setOutputNode(exposed, scenePass); + } catch (error) { + releaseGraph(); + throw error; } - if (renderer.setOutputNode === undefined) - throw new Error("setOutputNode is unavailable, so the composed base colour cannot run."); - renderer.setOutputNode(exposed); this.#reportApplied([], []); - return { dropped: [], stages: [] }; + return { + dropped: [], + stages: [], + dispose: () => { + if (released) return; + renderer.clearOutputNode?.(exposed); + releaseGraph(); + }, + }; } if (renderer.createRenderChain === undefined) throw new Error("RenderChain is unavailable."); @@ -750,8 +785,9 @@ export class WorldEnvironment { dropped: chain.applied.dropped, stages: chain.applied.stages, dispose: () => { + if (released) return; chain.dispose(); - scenePass.dispose(); + releaseGraph(); }, }; } diff --git a/packages/create-threenative/templates/action-rpg/src/render/worldEnvironment.ts b/packages/create-threenative/templates/action-rpg/src/render/worldEnvironment.ts index f61ec7a8e9..037c3b8db6 100644 --- a/packages/create-threenative/templates/action-rpg/src/render/worldEnvironment.ts +++ b/packages/create-threenative/templates/action-rpg/src/render/worldEnvironment.ts @@ -335,7 +335,9 @@ export type OutputRenderer = { * stage is off: the chain installs nothing for an empty stage list, and dropping the game's * own composition on the floor would be the silent no-op this class exists to prevent. */ - setOutputNode?: (node: unknown) => void; + setOutputNode?: (node: unknown, worldPass?: unknown) => void; + /** Clear only the named current graph, so an obsolete scene cannot clear its replacement. */ + clearOutputNode?: (expectedNode?: unknown) => void; createRenderChain?: (options: { input?: unknown; worldPass?: unknown; @@ -466,6 +468,11 @@ export class WorldEnvironment { this.#reportApplied([], []); return { dropped: [], stages: [] }; } + if (requested.length === 0 && renderer.kind !== "webgpu") { + const dropped = [{ name: "baseColour", reason: `renderer:${renderer.kind}` }]; + this.#reportApplied([], dropped); + return { dropped, stages: [] }; + } raw.toneMappingExposure = 1; const scenePass = pass(scene, camera); @@ -500,7 +507,24 @@ export class WorldEnvironment { const view = camera as PerspectiveCamera; const base = target.baseColour?.(scenePass) ?? scenePass.getTextureNode("output"); - const exposed = convertToTexture(base).mul(options.exposure); + const baseTexture = convertToTexture(base); + const exposed = baseTexture.mul(options.exposure); + let released = false; + const releaseGraph = (): void => { + if (released) return; + released = true; + // convertToTexture creates an RTT only for a non-texture expression. An already supplied + // texture belongs to its caller; its lifetime must not be stolen by this environment. + if (baseTexture !== base) { + const owned = baseTexture as unknown as { + renderTarget: { dispose(): void }; + _quadMesh: { material: { dispose(): void } }; + }; + owned.renderTarget.dispose(); + owned._quadMesh.material.dispose(); + } + scenePass.dispose(); + }; const giDenoise = (node: ChainNode): ChainNode => options.denoiseEnabled ? denoised(denoise(node, depth(), normal(), view)) : node; @@ -727,15 +751,26 @@ export class WorldEnvironment { // A composed base colour with every stage off still has to reach the frame. The chain // installs nothing for an empty stage list, so this is the one path that goes direct. if (requested.length === 0) { - if (renderer.kind !== "webgpu") { - this.#reportApplied([], [{ name: "baseColour", reason: `renderer:${renderer.kind}` }]); - return { dropped: [], stages: [] }; + if (renderer.setOutputNode === undefined || renderer.clearOutputNode === undefined) { + releaseGraph(); + throw new Error("Output node installation and ownership-aware disposal are required."); + } + try { + renderer.setOutputNode(exposed, scenePass); + } catch (error) { + releaseGraph(); + throw error; } - if (renderer.setOutputNode === undefined) - throw new Error("setOutputNode is unavailable, so the composed base colour cannot run."); - renderer.setOutputNode(exposed); this.#reportApplied([], []); - return { dropped: [], stages: [] }; + return { + dropped: [], + stages: [], + dispose: () => { + if (released) return; + renderer.clearOutputNode?.(exposed); + releaseGraph(); + }, + }; } if (renderer.createRenderChain === undefined) throw new Error("RenderChain is unavailable."); @@ -750,8 +785,9 @@ export class WorldEnvironment { dropped: chain.applied.dropped, stages: chain.applied.stages, dispose: () => { + if (released) return; chain.dispose(); - scenePass.dispose(); + releaseGraph(); }, }; } diff --git a/packages/create-threenative/templates/minimal/src/render/worldEnvironment.ts b/packages/create-threenative/templates/minimal/src/render/worldEnvironment.ts index f61ec7a8e9..037c3b8db6 100644 --- a/packages/create-threenative/templates/minimal/src/render/worldEnvironment.ts +++ b/packages/create-threenative/templates/minimal/src/render/worldEnvironment.ts @@ -335,7 +335,9 @@ export type OutputRenderer = { * stage is off: the chain installs nothing for an empty stage list, and dropping the game's * own composition on the floor would be the silent no-op this class exists to prevent. */ - setOutputNode?: (node: unknown) => void; + setOutputNode?: (node: unknown, worldPass?: unknown) => void; + /** Clear only the named current graph, so an obsolete scene cannot clear its replacement. */ + clearOutputNode?: (expectedNode?: unknown) => void; createRenderChain?: (options: { input?: unknown; worldPass?: unknown; @@ -466,6 +468,11 @@ export class WorldEnvironment { this.#reportApplied([], []); return { dropped: [], stages: [] }; } + if (requested.length === 0 && renderer.kind !== "webgpu") { + const dropped = [{ name: "baseColour", reason: `renderer:${renderer.kind}` }]; + this.#reportApplied([], dropped); + return { dropped, stages: [] }; + } raw.toneMappingExposure = 1; const scenePass = pass(scene, camera); @@ -500,7 +507,24 @@ export class WorldEnvironment { const view = camera as PerspectiveCamera; const base = target.baseColour?.(scenePass) ?? scenePass.getTextureNode("output"); - const exposed = convertToTexture(base).mul(options.exposure); + const baseTexture = convertToTexture(base); + const exposed = baseTexture.mul(options.exposure); + let released = false; + const releaseGraph = (): void => { + if (released) return; + released = true; + // convertToTexture creates an RTT only for a non-texture expression. An already supplied + // texture belongs to its caller; its lifetime must not be stolen by this environment. + if (baseTexture !== base) { + const owned = baseTexture as unknown as { + renderTarget: { dispose(): void }; + _quadMesh: { material: { dispose(): void } }; + }; + owned.renderTarget.dispose(); + owned._quadMesh.material.dispose(); + } + scenePass.dispose(); + }; const giDenoise = (node: ChainNode): ChainNode => options.denoiseEnabled ? denoised(denoise(node, depth(), normal(), view)) : node; @@ -727,15 +751,26 @@ export class WorldEnvironment { // A composed base colour with every stage off still has to reach the frame. The chain // installs nothing for an empty stage list, so this is the one path that goes direct. if (requested.length === 0) { - if (renderer.kind !== "webgpu") { - this.#reportApplied([], [{ name: "baseColour", reason: `renderer:${renderer.kind}` }]); - return { dropped: [], stages: [] }; + if (renderer.setOutputNode === undefined || renderer.clearOutputNode === undefined) { + releaseGraph(); + throw new Error("Output node installation and ownership-aware disposal are required."); + } + try { + renderer.setOutputNode(exposed, scenePass); + } catch (error) { + releaseGraph(); + throw error; } - if (renderer.setOutputNode === undefined) - throw new Error("setOutputNode is unavailable, so the composed base colour cannot run."); - renderer.setOutputNode(exposed); this.#reportApplied([], []); - return { dropped: [], stages: [] }; + return { + dropped: [], + stages: [], + dispose: () => { + if (released) return; + renderer.clearOutputNode?.(exposed); + releaseGraph(); + }, + }; } if (renderer.createRenderChain === undefined) throw new Error("RenderChain is unavailable."); @@ -750,8 +785,9 @@ export class WorldEnvironment { dropped: chain.applied.dropped, stages: chain.applied.stages, dispose: () => { + if (released) return; chain.dispose(); - scenePass.dispose(); + releaseGraph(); }, }; } diff --git a/packages/create-threenative/templates/platformer/src/render/worldEnvironment.ts b/packages/create-threenative/templates/platformer/src/render/worldEnvironment.ts index f61ec7a8e9..037c3b8db6 100644 --- a/packages/create-threenative/templates/platformer/src/render/worldEnvironment.ts +++ b/packages/create-threenative/templates/platformer/src/render/worldEnvironment.ts @@ -335,7 +335,9 @@ export type OutputRenderer = { * stage is off: the chain installs nothing for an empty stage list, and dropping the game's * own composition on the floor would be the silent no-op this class exists to prevent. */ - setOutputNode?: (node: unknown) => void; + setOutputNode?: (node: unknown, worldPass?: unknown) => void; + /** Clear only the named current graph, so an obsolete scene cannot clear its replacement. */ + clearOutputNode?: (expectedNode?: unknown) => void; createRenderChain?: (options: { input?: unknown; worldPass?: unknown; @@ -466,6 +468,11 @@ export class WorldEnvironment { this.#reportApplied([], []); return { dropped: [], stages: [] }; } + if (requested.length === 0 && renderer.kind !== "webgpu") { + const dropped = [{ name: "baseColour", reason: `renderer:${renderer.kind}` }]; + this.#reportApplied([], dropped); + return { dropped, stages: [] }; + } raw.toneMappingExposure = 1; const scenePass = pass(scene, camera); @@ -500,7 +507,24 @@ export class WorldEnvironment { const view = camera as PerspectiveCamera; const base = target.baseColour?.(scenePass) ?? scenePass.getTextureNode("output"); - const exposed = convertToTexture(base).mul(options.exposure); + const baseTexture = convertToTexture(base); + const exposed = baseTexture.mul(options.exposure); + let released = false; + const releaseGraph = (): void => { + if (released) return; + released = true; + // convertToTexture creates an RTT only for a non-texture expression. An already supplied + // texture belongs to its caller; its lifetime must not be stolen by this environment. + if (baseTexture !== base) { + const owned = baseTexture as unknown as { + renderTarget: { dispose(): void }; + _quadMesh: { material: { dispose(): void } }; + }; + owned.renderTarget.dispose(); + owned._quadMesh.material.dispose(); + } + scenePass.dispose(); + }; const giDenoise = (node: ChainNode): ChainNode => options.denoiseEnabled ? denoised(denoise(node, depth(), normal(), view)) : node; @@ -727,15 +751,26 @@ export class WorldEnvironment { // A composed base colour with every stage off still has to reach the frame. The chain // installs nothing for an empty stage list, so this is the one path that goes direct. if (requested.length === 0) { - if (renderer.kind !== "webgpu") { - this.#reportApplied([], [{ name: "baseColour", reason: `renderer:${renderer.kind}` }]); - return { dropped: [], stages: [] }; + if (renderer.setOutputNode === undefined || renderer.clearOutputNode === undefined) { + releaseGraph(); + throw new Error("Output node installation and ownership-aware disposal are required."); + } + try { + renderer.setOutputNode(exposed, scenePass); + } catch (error) { + releaseGraph(); + throw error; } - if (renderer.setOutputNode === undefined) - throw new Error("setOutputNode is unavailable, so the composed base colour cannot run."); - renderer.setOutputNode(exposed); this.#reportApplied([], []); - return { dropped: [], stages: [] }; + return { + dropped: [], + stages: [], + dispose: () => { + if (released) return; + renderer.clearOutputNode?.(exposed); + releaseGraph(); + }, + }; } if (renderer.createRenderChain === undefined) throw new Error("RenderChain is unavailable."); @@ -750,8 +785,9 @@ export class WorldEnvironment { dropped: chain.applied.dropped, stages: chain.applied.stages, dispose: () => { + if (released) return; chain.dispose(); - scenePass.dispose(); + releaseGraph(); }, }; } diff --git a/packages/create-threenative/templates/puzzle/src/render/worldEnvironment.ts b/packages/create-threenative/templates/puzzle/src/render/worldEnvironment.ts index f61ec7a8e9..037c3b8db6 100644 --- a/packages/create-threenative/templates/puzzle/src/render/worldEnvironment.ts +++ b/packages/create-threenative/templates/puzzle/src/render/worldEnvironment.ts @@ -335,7 +335,9 @@ export type OutputRenderer = { * stage is off: the chain installs nothing for an empty stage list, and dropping the game's * own composition on the floor would be the silent no-op this class exists to prevent. */ - setOutputNode?: (node: unknown) => void; + setOutputNode?: (node: unknown, worldPass?: unknown) => void; + /** Clear only the named current graph, so an obsolete scene cannot clear its replacement. */ + clearOutputNode?: (expectedNode?: unknown) => void; createRenderChain?: (options: { input?: unknown; worldPass?: unknown; @@ -466,6 +468,11 @@ export class WorldEnvironment { this.#reportApplied([], []); return { dropped: [], stages: [] }; } + if (requested.length === 0 && renderer.kind !== "webgpu") { + const dropped = [{ name: "baseColour", reason: `renderer:${renderer.kind}` }]; + this.#reportApplied([], dropped); + return { dropped, stages: [] }; + } raw.toneMappingExposure = 1; const scenePass = pass(scene, camera); @@ -500,7 +507,24 @@ export class WorldEnvironment { const view = camera as PerspectiveCamera; const base = target.baseColour?.(scenePass) ?? scenePass.getTextureNode("output"); - const exposed = convertToTexture(base).mul(options.exposure); + const baseTexture = convertToTexture(base); + const exposed = baseTexture.mul(options.exposure); + let released = false; + const releaseGraph = (): void => { + if (released) return; + released = true; + // convertToTexture creates an RTT only for a non-texture expression. An already supplied + // texture belongs to its caller; its lifetime must not be stolen by this environment. + if (baseTexture !== base) { + const owned = baseTexture as unknown as { + renderTarget: { dispose(): void }; + _quadMesh: { material: { dispose(): void } }; + }; + owned.renderTarget.dispose(); + owned._quadMesh.material.dispose(); + } + scenePass.dispose(); + }; const giDenoise = (node: ChainNode): ChainNode => options.denoiseEnabled ? denoised(denoise(node, depth(), normal(), view)) : node; @@ -727,15 +751,26 @@ export class WorldEnvironment { // A composed base colour with every stage off still has to reach the frame. The chain // installs nothing for an empty stage list, so this is the one path that goes direct. if (requested.length === 0) { - if (renderer.kind !== "webgpu") { - this.#reportApplied([], [{ name: "baseColour", reason: `renderer:${renderer.kind}` }]); - return { dropped: [], stages: [] }; + if (renderer.setOutputNode === undefined || renderer.clearOutputNode === undefined) { + releaseGraph(); + throw new Error("Output node installation and ownership-aware disposal are required."); + } + try { + renderer.setOutputNode(exposed, scenePass); + } catch (error) { + releaseGraph(); + throw error; } - if (renderer.setOutputNode === undefined) - throw new Error("setOutputNode is unavailable, so the composed base colour cannot run."); - renderer.setOutputNode(exposed); this.#reportApplied([], []); - return { dropped: [], stages: [] }; + return { + dropped: [], + stages: [], + dispose: () => { + if (released) return; + renderer.clearOutputNode?.(exposed); + releaseGraph(); + }, + }; } if (renderer.createRenderChain === undefined) throw new Error("RenderChain is unavailable."); @@ -750,8 +785,9 @@ export class WorldEnvironment { dropped: chain.applied.dropped, stages: chain.applied.stages, dispose: () => { + if (released) return; chain.dispose(); - scenePass.dispose(); + releaseGraph(); }, }; } diff --git a/packages/create-threenative/templates/racing/src/render/worldEnvironment.ts b/packages/create-threenative/templates/racing/src/render/worldEnvironment.ts index f61ec7a8e9..037c3b8db6 100644 --- a/packages/create-threenative/templates/racing/src/render/worldEnvironment.ts +++ b/packages/create-threenative/templates/racing/src/render/worldEnvironment.ts @@ -335,7 +335,9 @@ export type OutputRenderer = { * stage is off: the chain installs nothing for an empty stage list, and dropping the game's * own composition on the floor would be the silent no-op this class exists to prevent. */ - setOutputNode?: (node: unknown) => void; + setOutputNode?: (node: unknown, worldPass?: unknown) => void; + /** Clear only the named current graph, so an obsolete scene cannot clear its replacement. */ + clearOutputNode?: (expectedNode?: unknown) => void; createRenderChain?: (options: { input?: unknown; worldPass?: unknown; @@ -466,6 +468,11 @@ export class WorldEnvironment { this.#reportApplied([], []); return { dropped: [], stages: [] }; } + if (requested.length === 0 && renderer.kind !== "webgpu") { + const dropped = [{ name: "baseColour", reason: `renderer:${renderer.kind}` }]; + this.#reportApplied([], dropped); + return { dropped, stages: [] }; + } raw.toneMappingExposure = 1; const scenePass = pass(scene, camera); @@ -500,7 +507,24 @@ export class WorldEnvironment { const view = camera as PerspectiveCamera; const base = target.baseColour?.(scenePass) ?? scenePass.getTextureNode("output"); - const exposed = convertToTexture(base).mul(options.exposure); + const baseTexture = convertToTexture(base); + const exposed = baseTexture.mul(options.exposure); + let released = false; + const releaseGraph = (): void => { + if (released) return; + released = true; + // convertToTexture creates an RTT only for a non-texture expression. An already supplied + // texture belongs to its caller; its lifetime must not be stolen by this environment. + if (baseTexture !== base) { + const owned = baseTexture as unknown as { + renderTarget: { dispose(): void }; + _quadMesh: { material: { dispose(): void } }; + }; + owned.renderTarget.dispose(); + owned._quadMesh.material.dispose(); + } + scenePass.dispose(); + }; const giDenoise = (node: ChainNode): ChainNode => options.denoiseEnabled ? denoised(denoise(node, depth(), normal(), view)) : node; @@ -727,15 +751,26 @@ export class WorldEnvironment { // A composed base colour with every stage off still has to reach the frame. The chain // installs nothing for an empty stage list, so this is the one path that goes direct. if (requested.length === 0) { - if (renderer.kind !== "webgpu") { - this.#reportApplied([], [{ name: "baseColour", reason: `renderer:${renderer.kind}` }]); - return { dropped: [], stages: [] }; + if (renderer.setOutputNode === undefined || renderer.clearOutputNode === undefined) { + releaseGraph(); + throw new Error("Output node installation and ownership-aware disposal are required."); + } + try { + renderer.setOutputNode(exposed, scenePass); + } catch (error) { + releaseGraph(); + throw error; } - if (renderer.setOutputNode === undefined) - throw new Error("setOutputNode is unavailable, so the composed base colour cannot run."); - renderer.setOutputNode(exposed); this.#reportApplied([], []); - return { dropped: [], stages: [] }; + return { + dropped: [], + stages: [], + dispose: () => { + if (released) return; + renderer.clearOutputNode?.(exposed); + releaseGraph(); + }, + }; } if (renderer.createRenderChain === undefined) throw new Error("RenderChain is unavailable."); @@ -750,8 +785,9 @@ export class WorldEnvironment { dropped: chain.applied.dropped, stages: chain.applied.stages, dispose: () => { + if (released) return; chain.dispose(); - scenePass.dispose(); + releaseGraph(); }, }; } diff --git a/packages/create-threenative/templates/rain/src/render/worldEnvironment.ts b/packages/create-threenative/templates/rain/src/render/worldEnvironment.ts index f61ec7a8e9..037c3b8db6 100644 --- a/packages/create-threenative/templates/rain/src/render/worldEnvironment.ts +++ b/packages/create-threenative/templates/rain/src/render/worldEnvironment.ts @@ -335,7 +335,9 @@ export type OutputRenderer = { * stage is off: the chain installs nothing for an empty stage list, and dropping the game's * own composition on the floor would be the silent no-op this class exists to prevent. */ - setOutputNode?: (node: unknown) => void; + setOutputNode?: (node: unknown, worldPass?: unknown) => void; + /** Clear only the named current graph, so an obsolete scene cannot clear its replacement. */ + clearOutputNode?: (expectedNode?: unknown) => void; createRenderChain?: (options: { input?: unknown; worldPass?: unknown; @@ -466,6 +468,11 @@ export class WorldEnvironment { this.#reportApplied([], []); return { dropped: [], stages: [] }; } + if (requested.length === 0 && renderer.kind !== "webgpu") { + const dropped = [{ name: "baseColour", reason: `renderer:${renderer.kind}` }]; + this.#reportApplied([], dropped); + return { dropped, stages: [] }; + } raw.toneMappingExposure = 1; const scenePass = pass(scene, camera); @@ -500,7 +507,24 @@ export class WorldEnvironment { const view = camera as PerspectiveCamera; const base = target.baseColour?.(scenePass) ?? scenePass.getTextureNode("output"); - const exposed = convertToTexture(base).mul(options.exposure); + const baseTexture = convertToTexture(base); + const exposed = baseTexture.mul(options.exposure); + let released = false; + const releaseGraph = (): void => { + if (released) return; + released = true; + // convertToTexture creates an RTT only for a non-texture expression. An already supplied + // texture belongs to its caller; its lifetime must not be stolen by this environment. + if (baseTexture !== base) { + const owned = baseTexture as unknown as { + renderTarget: { dispose(): void }; + _quadMesh: { material: { dispose(): void } }; + }; + owned.renderTarget.dispose(); + owned._quadMesh.material.dispose(); + } + scenePass.dispose(); + }; const giDenoise = (node: ChainNode): ChainNode => options.denoiseEnabled ? denoised(denoise(node, depth(), normal(), view)) : node; @@ -727,15 +751,26 @@ export class WorldEnvironment { // A composed base colour with every stage off still has to reach the frame. The chain // installs nothing for an empty stage list, so this is the one path that goes direct. if (requested.length === 0) { - if (renderer.kind !== "webgpu") { - this.#reportApplied([], [{ name: "baseColour", reason: `renderer:${renderer.kind}` }]); - return { dropped: [], stages: [] }; + if (renderer.setOutputNode === undefined || renderer.clearOutputNode === undefined) { + releaseGraph(); + throw new Error("Output node installation and ownership-aware disposal are required."); + } + try { + renderer.setOutputNode(exposed, scenePass); + } catch (error) { + releaseGraph(); + throw error; } - if (renderer.setOutputNode === undefined) - throw new Error("setOutputNode is unavailable, so the composed base colour cannot run."); - renderer.setOutputNode(exposed); this.#reportApplied([], []); - return { dropped: [], stages: [] }; + return { + dropped: [], + stages: [], + dispose: () => { + if (released) return; + renderer.clearOutputNode?.(exposed); + releaseGraph(); + }, + }; } if (renderer.createRenderChain === undefined) throw new Error("RenderChain is unavailable."); @@ -750,8 +785,9 @@ export class WorldEnvironment { dropped: chain.applied.dropped, stages: chain.applied.stages, dispose: () => { + if (released) return; chain.dispose(); - scenePass.dispose(); + releaseGraph(); }, }; } diff --git a/packages/create-threenative/templates/rts/src/render/worldEnvironment.ts b/packages/create-threenative/templates/rts/src/render/worldEnvironment.ts index f61ec7a8e9..037c3b8db6 100644 --- a/packages/create-threenative/templates/rts/src/render/worldEnvironment.ts +++ b/packages/create-threenative/templates/rts/src/render/worldEnvironment.ts @@ -335,7 +335,9 @@ export type OutputRenderer = { * stage is off: the chain installs nothing for an empty stage list, and dropping the game's * own composition on the floor would be the silent no-op this class exists to prevent. */ - setOutputNode?: (node: unknown) => void; + setOutputNode?: (node: unknown, worldPass?: unknown) => void; + /** Clear only the named current graph, so an obsolete scene cannot clear its replacement. */ + clearOutputNode?: (expectedNode?: unknown) => void; createRenderChain?: (options: { input?: unknown; worldPass?: unknown; @@ -466,6 +468,11 @@ export class WorldEnvironment { this.#reportApplied([], []); return { dropped: [], stages: [] }; } + if (requested.length === 0 && renderer.kind !== "webgpu") { + const dropped = [{ name: "baseColour", reason: `renderer:${renderer.kind}` }]; + this.#reportApplied([], dropped); + return { dropped, stages: [] }; + } raw.toneMappingExposure = 1; const scenePass = pass(scene, camera); @@ -500,7 +507,24 @@ export class WorldEnvironment { const view = camera as PerspectiveCamera; const base = target.baseColour?.(scenePass) ?? scenePass.getTextureNode("output"); - const exposed = convertToTexture(base).mul(options.exposure); + const baseTexture = convertToTexture(base); + const exposed = baseTexture.mul(options.exposure); + let released = false; + const releaseGraph = (): void => { + if (released) return; + released = true; + // convertToTexture creates an RTT only for a non-texture expression. An already supplied + // texture belongs to its caller; its lifetime must not be stolen by this environment. + if (baseTexture !== base) { + const owned = baseTexture as unknown as { + renderTarget: { dispose(): void }; + _quadMesh: { material: { dispose(): void } }; + }; + owned.renderTarget.dispose(); + owned._quadMesh.material.dispose(); + } + scenePass.dispose(); + }; const giDenoise = (node: ChainNode): ChainNode => options.denoiseEnabled ? denoised(denoise(node, depth(), normal(), view)) : node; @@ -727,15 +751,26 @@ export class WorldEnvironment { // A composed base colour with every stage off still has to reach the frame. The chain // installs nothing for an empty stage list, so this is the one path that goes direct. if (requested.length === 0) { - if (renderer.kind !== "webgpu") { - this.#reportApplied([], [{ name: "baseColour", reason: `renderer:${renderer.kind}` }]); - return { dropped: [], stages: [] }; + if (renderer.setOutputNode === undefined || renderer.clearOutputNode === undefined) { + releaseGraph(); + throw new Error("Output node installation and ownership-aware disposal are required."); + } + try { + renderer.setOutputNode(exposed, scenePass); + } catch (error) { + releaseGraph(); + throw error; } - if (renderer.setOutputNode === undefined) - throw new Error("setOutputNode is unavailable, so the composed base colour cannot run."); - renderer.setOutputNode(exposed); this.#reportApplied([], []); - return { dropped: [], stages: [] }; + return { + dropped: [], + stages: [], + dispose: () => { + if (released) return; + renderer.clearOutputNode?.(exposed); + releaseGraph(); + }, + }; } if (renderer.createRenderChain === undefined) throw new Error("RenderChain is unavailable."); @@ -750,8 +785,9 @@ export class WorldEnvironment { dropped: chain.applied.dropped, stages: chain.applied.stages, dispose: () => { + if (released) return; chain.dispose(); - scenePass.dispose(); + releaseGraph(); }, }; } diff --git a/packages/create-threenative/templates/runner/src/render/worldEnvironment.ts b/packages/create-threenative/templates/runner/src/render/worldEnvironment.ts index f61ec7a8e9..037c3b8db6 100644 --- a/packages/create-threenative/templates/runner/src/render/worldEnvironment.ts +++ b/packages/create-threenative/templates/runner/src/render/worldEnvironment.ts @@ -335,7 +335,9 @@ export type OutputRenderer = { * stage is off: the chain installs nothing for an empty stage list, and dropping the game's * own composition on the floor would be the silent no-op this class exists to prevent. */ - setOutputNode?: (node: unknown) => void; + setOutputNode?: (node: unknown, worldPass?: unknown) => void; + /** Clear only the named current graph, so an obsolete scene cannot clear its replacement. */ + clearOutputNode?: (expectedNode?: unknown) => void; createRenderChain?: (options: { input?: unknown; worldPass?: unknown; @@ -466,6 +468,11 @@ export class WorldEnvironment { this.#reportApplied([], []); return { dropped: [], stages: [] }; } + if (requested.length === 0 && renderer.kind !== "webgpu") { + const dropped = [{ name: "baseColour", reason: `renderer:${renderer.kind}` }]; + this.#reportApplied([], dropped); + return { dropped, stages: [] }; + } raw.toneMappingExposure = 1; const scenePass = pass(scene, camera); @@ -500,7 +507,24 @@ export class WorldEnvironment { const view = camera as PerspectiveCamera; const base = target.baseColour?.(scenePass) ?? scenePass.getTextureNode("output"); - const exposed = convertToTexture(base).mul(options.exposure); + const baseTexture = convertToTexture(base); + const exposed = baseTexture.mul(options.exposure); + let released = false; + const releaseGraph = (): void => { + if (released) return; + released = true; + // convertToTexture creates an RTT only for a non-texture expression. An already supplied + // texture belongs to its caller; its lifetime must not be stolen by this environment. + if (baseTexture !== base) { + const owned = baseTexture as unknown as { + renderTarget: { dispose(): void }; + _quadMesh: { material: { dispose(): void } }; + }; + owned.renderTarget.dispose(); + owned._quadMesh.material.dispose(); + } + scenePass.dispose(); + }; const giDenoise = (node: ChainNode): ChainNode => options.denoiseEnabled ? denoised(denoise(node, depth(), normal(), view)) : node; @@ -727,15 +751,26 @@ export class WorldEnvironment { // A composed base colour with every stage off still has to reach the frame. The chain // installs nothing for an empty stage list, so this is the one path that goes direct. if (requested.length === 0) { - if (renderer.kind !== "webgpu") { - this.#reportApplied([], [{ name: "baseColour", reason: `renderer:${renderer.kind}` }]); - return { dropped: [], stages: [] }; + if (renderer.setOutputNode === undefined || renderer.clearOutputNode === undefined) { + releaseGraph(); + throw new Error("Output node installation and ownership-aware disposal are required."); + } + try { + renderer.setOutputNode(exposed, scenePass); + } catch (error) { + releaseGraph(); + throw error; } - if (renderer.setOutputNode === undefined) - throw new Error("setOutputNode is unavailable, so the composed base colour cannot run."); - renderer.setOutputNode(exposed); this.#reportApplied([], []); - return { dropped: [], stages: [] }; + return { + dropped: [], + stages: [], + dispose: () => { + if (released) return; + renderer.clearOutputNode?.(exposed); + releaseGraph(); + }, + }; } if (renderer.createRenderChain === undefined) throw new Error("RenderChain is unavailable."); @@ -750,8 +785,9 @@ export class WorldEnvironment { dropped: chain.applied.dropped, stages: chain.applied.stages, dispose: () => { + if (released) return; chain.dispose(); - scenePass.dispose(); + releaseGraph(); }, }; } diff --git a/packages/create-threenative/templates/sailing/src/render/worldEnvironment.ts b/packages/create-threenative/templates/sailing/src/render/worldEnvironment.ts index f61ec7a8e9..037c3b8db6 100644 --- a/packages/create-threenative/templates/sailing/src/render/worldEnvironment.ts +++ b/packages/create-threenative/templates/sailing/src/render/worldEnvironment.ts @@ -335,7 +335,9 @@ export type OutputRenderer = { * stage is off: the chain installs nothing for an empty stage list, and dropping the game's * own composition on the floor would be the silent no-op this class exists to prevent. */ - setOutputNode?: (node: unknown) => void; + setOutputNode?: (node: unknown, worldPass?: unknown) => void; + /** Clear only the named current graph, so an obsolete scene cannot clear its replacement. */ + clearOutputNode?: (expectedNode?: unknown) => void; createRenderChain?: (options: { input?: unknown; worldPass?: unknown; @@ -466,6 +468,11 @@ export class WorldEnvironment { this.#reportApplied([], []); return { dropped: [], stages: [] }; } + if (requested.length === 0 && renderer.kind !== "webgpu") { + const dropped = [{ name: "baseColour", reason: `renderer:${renderer.kind}` }]; + this.#reportApplied([], dropped); + return { dropped, stages: [] }; + } raw.toneMappingExposure = 1; const scenePass = pass(scene, camera); @@ -500,7 +507,24 @@ export class WorldEnvironment { const view = camera as PerspectiveCamera; const base = target.baseColour?.(scenePass) ?? scenePass.getTextureNode("output"); - const exposed = convertToTexture(base).mul(options.exposure); + const baseTexture = convertToTexture(base); + const exposed = baseTexture.mul(options.exposure); + let released = false; + const releaseGraph = (): void => { + if (released) return; + released = true; + // convertToTexture creates an RTT only for a non-texture expression. An already supplied + // texture belongs to its caller; its lifetime must not be stolen by this environment. + if (baseTexture !== base) { + const owned = baseTexture as unknown as { + renderTarget: { dispose(): void }; + _quadMesh: { material: { dispose(): void } }; + }; + owned.renderTarget.dispose(); + owned._quadMesh.material.dispose(); + } + scenePass.dispose(); + }; const giDenoise = (node: ChainNode): ChainNode => options.denoiseEnabled ? denoised(denoise(node, depth(), normal(), view)) : node; @@ -727,15 +751,26 @@ export class WorldEnvironment { // A composed base colour with every stage off still has to reach the frame. The chain // installs nothing for an empty stage list, so this is the one path that goes direct. if (requested.length === 0) { - if (renderer.kind !== "webgpu") { - this.#reportApplied([], [{ name: "baseColour", reason: `renderer:${renderer.kind}` }]); - return { dropped: [], stages: [] }; + if (renderer.setOutputNode === undefined || renderer.clearOutputNode === undefined) { + releaseGraph(); + throw new Error("Output node installation and ownership-aware disposal are required."); + } + try { + renderer.setOutputNode(exposed, scenePass); + } catch (error) { + releaseGraph(); + throw error; } - if (renderer.setOutputNode === undefined) - throw new Error("setOutputNode is unavailable, so the composed base colour cannot run."); - renderer.setOutputNode(exposed); this.#reportApplied([], []); - return { dropped: [], stages: [] }; + return { + dropped: [], + stages: [], + dispose: () => { + if (released) return; + renderer.clearOutputNode?.(exposed); + releaseGraph(); + }, + }; } if (renderer.createRenderChain === undefined) throw new Error("RenderChain is unavailable."); @@ -750,8 +785,9 @@ export class WorldEnvironment { dropped: chain.applied.dropped, stages: chain.applied.stages, dispose: () => { + if (released) return; chain.dispose(); - scenePass.dispose(); + releaseGraph(); }, }; } diff --git a/packages/create-threenative/templates/shooter/src/render/worldEnvironment.ts b/packages/create-threenative/templates/shooter/src/render/worldEnvironment.ts index f61ec7a8e9..037c3b8db6 100644 --- a/packages/create-threenative/templates/shooter/src/render/worldEnvironment.ts +++ b/packages/create-threenative/templates/shooter/src/render/worldEnvironment.ts @@ -335,7 +335,9 @@ export type OutputRenderer = { * stage is off: the chain installs nothing for an empty stage list, and dropping the game's * own composition on the floor would be the silent no-op this class exists to prevent. */ - setOutputNode?: (node: unknown) => void; + setOutputNode?: (node: unknown, worldPass?: unknown) => void; + /** Clear only the named current graph, so an obsolete scene cannot clear its replacement. */ + clearOutputNode?: (expectedNode?: unknown) => void; createRenderChain?: (options: { input?: unknown; worldPass?: unknown; @@ -466,6 +468,11 @@ export class WorldEnvironment { this.#reportApplied([], []); return { dropped: [], stages: [] }; } + if (requested.length === 0 && renderer.kind !== "webgpu") { + const dropped = [{ name: "baseColour", reason: `renderer:${renderer.kind}` }]; + this.#reportApplied([], dropped); + return { dropped, stages: [] }; + } raw.toneMappingExposure = 1; const scenePass = pass(scene, camera); @@ -500,7 +507,24 @@ export class WorldEnvironment { const view = camera as PerspectiveCamera; const base = target.baseColour?.(scenePass) ?? scenePass.getTextureNode("output"); - const exposed = convertToTexture(base).mul(options.exposure); + const baseTexture = convertToTexture(base); + const exposed = baseTexture.mul(options.exposure); + let released = false; + const releaseGraph = (): void => { + if (released) return; + released = true; + // convertToTexture creates an RTT only for a non-texture expression. An already supplied + // texture belongs to its caller; its lifetime must not be stolen by this environment. + if (baseTexture !== base) { + const owned = baseTexture as unknown as { + renderTarget: { dispose(): void }; + _quadMesh: { material: { dispose(): void } }; + }; + owned.renderTarget.dispose(); + owned._quadMesh.material.dispose(); + } + scenePass.dispose(); + }; const giDenoise = (node: ChainNode): ChainNode => options.denoiseEnabled ? denoised(denoise(node, depth(), normal(), view)) : node; @@ -727,15 +751,26 @@ export class WorldEnvironment { // A composed base colour with every stage off still has to reach the frame. The chain // installs nothing for an empty stage list, so this is the one path that goes direct. if (requested.length === 0) { - if (renderer.kind !== "webgpu") { - this.#reportApplied([], [{ name: "baseColour", reason: `renderer:${renderer.kind}` }]); - return { dropped: [], stages: [] }; + if (renderer.setOutputNode === undefined || renderer.clearOutputNode === undefined) { + releaseGraph(); + throw new Error("Output node installation and ownership-aware disposal are required."); + } + try { + renderer.setOutputNode(exposed, scenePass); + } catch (error) { + releaseGraph(); + throw error; } - if (renderer.setOutputNode === undefined) - throw new Error("setOutputNode is unavailable, so the composed base colour cannot run."); - renderer.setOutputNode(exposed); this.#reportApplied([], []); - return { dropped: [], stages: [] }; + return { + dropped: [], + stages: [], + dispose: () => { + if (released) return; + renderer.clearOutputNode?.(exposed); + releaseGraph(); + }, + }; } if (renderer.createRenderChain === undefined) throw new Error("RenderChain is unavailable."); @@ -750,8 +785,9 @@ export class WorldEnvironment { dropped: chain.applied.dropped, stages: chain.applied.stages, dispose: () => { + if (released) return; chain.dispose(); - scenePass.dispose(); + releaseGraph(); }, }; } diff --git a/packages/create-threenative/templates/snow/src/render/worldEnvironment.ts b/packages/create-threenative/templates/snow/src/render/worldEnvironment.ts index f61ec7a8e9..037c3b8db6 100644 --- a/packages/create-threenative/templates/snow/src/render/worldEnvironment.ts +++ b/packages/create-threenative/templates/snow/src/render/worldEnvironment.ts @@ -335,7 +335,9 @@ export type OutputRenderer = { * stage is off: the chain installs nothing for an empty stage list, and dropping the game's * own composition on the floor would be the silent no-op this class exists to prevent. */ - setOutputNode?: (node: unknown) => void; + setOutputNode?: (node: unknown, worldPass?: unknown) => void; + /** Clear only the named current graph, so an obsolete scene cannot clear its replacement. */ + clearOutputNode?: (expectedNode?: unknown) => void; createRenderChain?: (options: { input?: unknown; worldPass?: unknown; @@ -466,6 +468,11 @@ export class WorldEnvironment { this.#reportApplied([], []); return { dropped: [], stages: [] }; } + if (requested.length === 0 && renderer.kind !== "webgpu") { + const dropped = [{ name: "baseColour", reason: `renderer:${renderer.kind}` }]; + this.#reportApplied([], dropped); + return { dropped, stages: [] }; + } raw.toneMappingExposure = 1; const scenePass = pass(scene, camera); @@ -500,7 +507,24 @@ export class WorldEnvironment { const view = camera as PerspectiveCamera; const base = target.baseColour?.(scenePass) ?? scenePass.getTextureNode("output"); - const exposed = convertToTexture(base).mul(options.exposure); + const baseTexture = convertToTexture(base); + const exposed = baseTexture.mul(options.exposure); + let released = false; + const releaseGraph = (): void => { + if (released) return; + released = true; + // convertToTexture creates an RTT only for a non-texture expression. An already supplied + // texture belongs to its caller; its lifetime must not be stolen by this environment. + if (baseTexture !== base) { + const owned = baseTexture as unknown as { + renderTarget: { dispose(): void }; + _quadMesh: { material: { dispose(): void } }; + }; + owned.renderTarget.dispose(); + owned._quadMesh.material.dispose(); + } + scenePass.dispose(); + }; const giDenoise = (node: ChainNode): ChainNode => options.denoiseEnabled ? denoised(denoise(node, depth(), normal(), view)) : node; @@ -727,15 +751,26 @@ export class WorldEnvironment { // A composed base colour with every stage off still has to reach the frame. The chain // installs nothing for an empty stage list, so this is the one path that goes direct. if (requested.length === 0) { - if (renderer.kind !== "webgpu") { - this.#reportApplied([], [{ name: "baseColour", reason: `renderer:${renderer.kind}` }]); - return { dropped: [], stages: [] }; + if (renderer.setOutputNode === undefined || renderer.clearOutputNode === undefined) { + releaseGraph(); + throw new Error("Output node installation and ownership-aware disposal are required."); + } + try { + renderer.setOutputNode(exposed, scenePass); + } catch (error) { + releaseGraph(); + throw error; } - if (renderer.setOutputNode === undefined) - throw new Error("setOutputNode is unavailable, so the composed base colour cannot run."); - renderer.setOutputNode(exposed); this.#reportApplied([], []); - return { dropped: [], stages: [] }; + return { + dropped: [], + stages: [], + dispose: () => { + if (released) return; + renderer.clearOutputNode?.(exposed); + releaseGraph(); + }, + }; } if (renderer.createRenderChain === undefined) throw new Error("RenderChain is unavailable."); @@ -750,8 +785,9 @@ export class WorldEnvironment { dropped: chain.applied.dropped, stages: chain.applied.stages, dispose: () => { + if (released) return; chain.dispose(); - scenePass.dispose(); + releaseGraph(); }, }; } diff --git a/packages/create-threenative/templates/starter/src/render/worldEnvironment.ts b/packages/create-threenative/templates/starter/src/render/worldEnvironment.ts index f61ec7a8e9..037c3b8db6 100644 --- a/packages/create-threenative/templates/starter/src/render/worldEnvironment.ts +++ b/packages/create-threenative/templates/starter/src/render/worldEnvironment.ts @@ -335,7 +335,9 @@ export type OutputRenderer = { * stage is off: the chain installs nothing for an empty stage list, and dropping the game's * own composition on the floor would be the silent no-op this class exists to prevent. */ - setOutputNode?: (node: unknown) => void; + setOutputNode?: (node: unknown, worldPass?: unknown) => void; + /** Clear only the named current graph, so an obsolete scene cannot clear its replacement. */ + clearOutputNode?: (expectedNode?: unknown) => void; createRenderChain?: (options: { input?: unknown; worldPass?: unknown; @@ -466,6 +468,11 @@ export class WorldEnvironment { this.#reportApplied([], []); return { dropped: [], stages: [] }; } + if (requested.length === 0 && renderer.kind !== "webgpu") { + const dropped = [{ name: "baseColour", reason: `renderer:${renderer.kind}` }]; + this.#reportApplied([], dropped); + return { dropped, stages: [] }; + } raw.toneMappingExposure = 1; const scenePass = pass(scene, camera); @@ -500,7 +507,24 @@ export class WorldEnvironment { const view = camera as PerspectiveCamera; const base = target.baseColour?.(scenePass) ?? scenePass.getTextureNode("output"); - const exposed = convertToTexture(base).mul(options.exposure); + const baseTexture = convertToTexture(base); + const exposed = baseTexture.mul(options.exposure); + let released = false; + const releaseGraph = (): void => { + if (released) return; + released = true; + // convertToTexture creates an RTT only for a non-texture expression. An already supplied + // texture belongs to its caller; its lifetime must not be stolen by this environment. + if (baseTexture !== base) { + const owned = baseTexture as unknown as { + renderTarget: { dispose(): void }; + _quadMesh: { material: { dispose(): void } }; + }; + owned.renderTarget.dispose(); + owned._quadMesh.material.dispose(); + } + scenePass.dispose(); + }; const giDenoise = (node: ChainNode): ChainNode => options.denoiseEnabled ? denoised(denoise(node, depth(), normal(), view)) : node; @@ -727,15 +751,26 @@ export class WorldEnvironment { // A composed base colour with every stage off still has to reach the frame. The chain // installs nothing for an empty stage list, so this is the one path that goes direct. if (requested.length === 0) { - if (renderer.kind !== "webgpu") { - this.#reportApplied([], [{ name: "baseColour", reason: `renderer:${renderer.kind}` }]); - return { dropped: [], stages: [] }; + if (renderer.setOutputNode === undefined || renderer.clearOutputNode === undefined) { + releaseGraph(); + throw new Error("Output node installation and ownership-aware disposal are required."); + } + try { + renderer.setOutputNode(exposed, scenePass); + } catch (error) { + releaseGraph(); + throw error; } - if (renderer.setOutputNode === undefined) - throw new Error("setOutputNode is unavailable, so the composed base colour cannot run."); - renderer.setOutputNode(exposed); this.#reportApplied([], []); - return { dropped: [], stages: [] }; + return { + dropped: [], + stages: [], + dispose: () => { + if (released) return; + renderer.clearOutputNode?.(exposed); + releaseGraph(); + }, + }; } if (renderer.createRenderChain === undefined) throw new Error("RenderChain is unavailable."); @@ -750,8 +785,9 @@ export class WorldEnvironment { dropped: chain.applied.dropped, stages: chain.applied.stages, dispose: () => { + if (released) return; chain.dispose(); - scenePass.dispose(); + releaseGraph(); }, }; } diff --git a/packages/create-threenative/templates/tower-defense/src/render/worldEnvironment.ts b/packages/create-threenative/templates/tower-defense/src/render/worldEnvironment.ts index f61ec7a8e9..037c3b8db6 100644 --- a/packages/create-threenative/templates/tower-defense/src/render/worldEnvironment.ts +++ b/packages/create-threenative/templates/tower-defense/src/render/worldEnvironment.ts @@ -335,7 +335,9 @@ export type OutputRenderer = { * stage is off: the chain installs nothing for an empty stage list, and dropping the game's * own composition on the floor would be the silent no-op this class exists to prevent. */ - setOutputNode?: (node: unknown) => void; + setOutputNode?: (node: unknown, worldPass?: unknown) => void; + /** Clear only the named current graph, so an obsolete scene cannot clear its replacement. */ + clearOutputNode?: (expectedNode?: unknown) => void; createRenderChain?: (options: { input?: unknown; worldPass?: unknown; @@ -466,6 +468,11 @@ export class WorldEnvironment { this.#reportApplied([], []); return { dropped: [], stages: [] }; } + if (requested.length === 0 && renderer.kind !== "webgpu") { + const dropped = [{ name: "baseColour", reason: `renderer:${renderer.kind}` }]; + this.#reportApplied([], dropped); + return { dropped, stages: [] }; + } raw.toneMappingExposure = 1; const scenePass = pass(scene, camera); @@ -500,7 +507,24 @@ export class WorldEnvironment { const view = camera as PerspectiveCamera; const base = target.baseColour?.(scenePass) ?? scenePass.getTextureNode("output"); - const exposed = convertToTexture(base).mul(options.exposure); + const baseTexture = convertToTexture(base); + const exposed = baseTexture.mul(options.exposure); + let released = false; + const releaseGraph = (): void => { + if (released) return; + released = true; + // convertToTexture creates an RTT only for a non-texture expression. An already supplied + // texture belongs to its caller; its lifetime must not be stolen by this environment. + if (baseTexture !== base) { + const owned = baseTexture as unknown as { + renderTarget: { dispose(): void }; + _quadMesh: { material: { dispose(): void } }; + }; + owned.renderTarget.dispose(); + owned._quadMesh.material.dispose(); + } + scenePass.dispose(); + }; const giDenoise = (node: ChainNode): ChainNode => options.denoiseEnabled ? denoised(denoise(node, depth(), normal(), view)) : node; @@ -727,15 +751,26 @@ export class WorldEnvironment { // A composed base colour with every stage off still has to reach the frame. The chain // installs nothing for an empty stage list, so this is the one path that goes direct. if (requested.length === 0) { - if (renderer.kind !== "webgpu") { - this.#reportApplied([], [{ name: "baseColour", reason: `renderer:${renderer.kind}` }]); - return { dropped: [], stages: [] }; + if (renderer.setOutputNode === undefined || renderer.clearOutputNode === undefined) { + releaseGraph(); + throw new Error("Output node installation and ownership-aware disposal are required."); + } + try { + renderer.setOutputNode(exposed, scenePass); + } catch (error) { + releaseGraph(); + throw error; } - if (renderer.setOutputNode === undefined) - throw new Error("setOutputNode is unavailable, so the composed base colour cannot run."); - renderer.setOutputNode(exposed); this.#reportApplied([], []); - return { dropped: [], stages: [] }; + return { + dropped: [], + stages: [], + dispose: () => { + if (released) return; + renderer.clearOutputNode?.(exposed); + releaseGraph(); + }, + }; } if (renderer.createRenderChain === undefined) throw new Error("RenderChain is unavailable."); @@ -750,8 +785,9 @@ export class WorldEnvironment { dropped: chain.applied.dropped, stages: chain.applied.stages, dispose: () => { + if (released) return; chain.dispose(); - scenePass.dispose(); + releaseGraph(); }, }; } From 23146870c95e307c99274bf42e77aa04204de12e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Paulo=20Furtado?= <30300459+jonit-dev@users.noreply.github.com> Date: Fri, 2 Oct 2026 01:46:40 -0700 Subject: [PATCH 03/41] fix(render): distinguish borrowed pass textures from owned RTTs --- .../PRD-VQ-07-volumetric-fog.md | 2 + .../world-environment-lifetime.spec.ts | 40 +++++++++++++++++-- .../template-assets/worldEnvironment.ts | 6 +-- .../action-rpg/src/render/worldEnvironment.ts | 6 +-- .../minimal/src/render/worldEnvironment.ts | 6 +-- .../platformer/src/render/worldEnvironment.ts | 6 +-- .../puzzle/src/render/worldEnvironment.ts | 6 +-- .../racing/src/render/worldEnvironment.ts | 6 +-- .../rain/src/render/worldEnvironment.ts | 6 +-- .../rts/src/render/worldEnvironment.ts | 6 +-- .../runner/src/render/worldEnvironment.ts | 6 +-- .../sailing/src/render/worldEnvironment.ts | 6 +-- .../shooter/src/render/worldEnvironment.ts | 6 +-- .../snow/src/render/worldEnvironment.ts | 6 +-- .../starter/src/render/worldEnvironment.ts | 6 +-- .../src/render/worldEnvironment.ts | 6 +-- 16 files changed, 81 insertions(+), 45 deletions(-) diff --git a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md index 0e4b76ed6a..d9d6a4b066 100644 --- a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md +++ b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md @@ -70,3 +70,5 @@ The fresh checkout implements ownership-aware `clearOutputNode(expectedNode?)` w Red-green proof: three new behavioral failures reproduced first; `pnpm exec vitest run packages/core/__tests__/renderer.spec.ts packages/create-threenative/__tests__/world-environment-lifetime.spec.ts packages/create-threenative/__tests__/shared-render-sources.spec.ts --maxWorkers=1` then passed 39/39. `pnpm exec tsc --noEmit -p packages/core/tsconfig.json`, focused strict renderer/generated-source compilation, API-surface and capability-manifest checks passed. Focused Biome passed with four complexity warnings, no errors. No runtime screenshot, native qualification, aggregate CI or fog acceptance is claimed. Reuse review at pinned `three@0.185.1`: `VolumetricLightingModel.direct()` skips a directional light because it has no `distance`; extinction is derived from accumulated light rather than independent density. Its material cannot satisfy the bounded directional radiance/transmittance contract unchanged. Existing `GodraysNode` provides the depth reconstruction and ordinary directional shadow coordinates to reuse in game-owned source. Rain's screen-quad coast and its god-ray composition do not provide bounded participating volumes. No new shared visual algorithm or renderer is admitted. + +Review correction: pinned `convertToTexture(PassNode)` returns a borrowed pass texture, not an owned RTT. A new PassNode-return regression reproduced the disposal TypeError; the ownership test now additionally requires `isRTTNode === true`. PassNode disposal and caller-owned texture/RTT preservation are covered. The same focused suite passes 42/42 and strict touched-source/test typechecking passes; this supersedes the earlier 39-test checkpoint for the lifecycle code. diff --git a/packages/create-threenative/__tests__/world-environment-lifetime.spec.ts b/packages/create-threenative/__tests__/world-environment-lifetime.spec.ts index da98a462c0..2ec7428c76 100644 --- a/packages/create-threenative/__tests__/world-environment-lifetime.spec.ts +++ b/packages/create-threenative/__tests__/world-environment-lifetime.spec.ts @@ -1,5 +1,6 @@ -import { PerspectiveCamera, Scene } from "three"; +import { PerspectiveCamera, Scene, Texture } from "three"; import BloomNode from "three/addons/tsl/display/BloomNode.js"; +import { rtt, texture, vec4 } from "three/tsl"; import type { Node } from "three/webgpu"; import { expect, it, vi } from "vitest"; import { type OutputRenderer, WorldEnvironment } from "../template-assets/worldEnvironment.js"; @@ -48,10 +49,10 @@ it("owns the direct base-colour graph without requiring an unrelated post stage" kind: "webgpu", raw: {}, clearOutputNode, - setOutputNode(node: Node, worldPass?: unknown) { + setOutputNode(node: unknown, worldPass?: unknown) { outputs.push(node); worldPasses.push(worldPass); - node.traverse((candidate) => { + (node as Node).traverse((candidate) => { if (Reflect.get(candidate, "isRTTNode") !== true) return; const scratch = candidate as unknown as { renderTarget: { dispose(): void }; @@ -96,3 +97,36 @@ it("refuses a direct graph on an unsupported renderer without invoking its alloc expect(baseColour).not.toHaveBeenCalled(); expect(applied.dropped).toEqual([{ name: "baseColour", reason: "renderer:webgl2" }]); }); + +it("disposes a base-colour PassNode without mistaking its borrowed texture for an owned RTT", () => { + let releasePass: ReturnType | undefined; + const applied = new WorldEnvironment({ bloomEnabled: false, screenSpaceAA: "disabled" }).apply( + { kind: "webgpu", raw: {}, setOutputNode: () => {}, clearOutputNode: () => {} }, + new Scene(), + new PerspectiveCamera(), + { + baseColour(scenePass) { + releasePass = vi.spyOn(scenePass, "dispose"); + return scenePass; + }, + }, + ); + expect(() => applied.dispose?.()).not.toThrow(); + applied.dispose?.(); + expect(releasePass).toHaveBeenCalledTimes(1); +}); + +it.each(["texture", "rtt"])("leaves caller-owned %s resources alive", (kind) => { + const supplied = kind === "rtt" ? rtt(vec4(0.2, 0.3, 0.4, 1)) : texture(new Texture()); + const release = vi.spyOn(supplied.value, "dispose"); + const applied = new WorldEnvironment({ bloomEnabled: false, screenSpaceAA: "disabled" }).apply( + { kind: "webgpu", raw: {}, setOutputNode: () => {}, clearOutputNode: () => {} }, + new Scene(), + new PerspectiveCamera(), + { baseColour: () => supplied }, + ); + applied.dispose?.(); + applied.dispose?.(); + expect(release).not.toHaveBeenCalled(); + supplied.value.dispose(); +}); diff --git a/packages/create-threenative/template-assets/worldEnvironment.ts b/packages/create-threenative/template-assets/worldEnvironment.ts index 037c3b8db6..e5ee804bc0 100644 --- a/packages/create-threenative/template-assets/worldEnvironment.ts +++ b/packages/create-threenative/template-assets/worldEnvironment.ts @@ -513,9 +513,9 @@ export class WorldEnvironment { const releaseGraph = (): void => { if (released) return; released = true; - // convertToTexture creates an RTT only for a non-texture expression. An already supplied - // texture belongs to its caller; its lifetime must not be stolen by this environment. - if (baseTexture !== base) { + // Only a newly created RTT is ours. A PassNode converts to a borrowed PassTextureNode; + // supplied TextureNodes/RTTs belong to the caller even when their resources are shared. + if (baseTexture !== base && Reflect.get(baseTexture, "isRTTNode") === true) { const owned = baseTexture as unknown as { renderTarget: { dispose(): void }; _quadMesh: { material: { dispose(): void } }; diff --git a/packages/create-threenative/templates/action-rpg/src/render/worldEnvironment.ts b/packages/create-threenative/templates/action-rpg/src/render/worldEnvironment.ts index 037c3b8db6..e5ee804bc0 100644 --- a/packages/create-threenative/templates/action-rpg/src/render/worldEnvironment.ts +++ b/packages/create-threenative/templates/action-rpg/src/render/worldEnvironment.ts @@ -513,9 +513,9 @@ export class WorldEnvironment { const releaseGraph = (): void => { if (released) return; released = true; - // convertToTexture creates an RTT only for a non-texture expression. An already supplied - // texture belongs to its caller; its lifetime must not be stolen by this environment. - if (baseTexture !== base) { + // Only a newly created RTT is ours. A PassNode converts to a borrowed PassTextureNode; + // supplied TextureNodes/RTTs belong to the caller even when their resources are shared. + if (baseTexture !== base && Reflect.get(baseTexture, "isRTTNode") === true) { const owned = baseTexture as unknown as { renderTarget: { dispose(): void }; _quadMesh: { material: { dispose(): void } }; diff --git a/packages/create-threenative/templates/minimal/src/render/worldEnvironment.ts b/packages/create-threenative/templates/minimal/src/render/worldEnvironment.ts index 037c3b8db6..e5ee804bc0 100644 --- a/packages/create-threenative/templates/minimal/src/render/worldEnvironment.ts +++ b/packages/create-threenative/templates/minimal/src/render/worldEnvironment.ts @@ -513,9 +513,9 @@ export class WorldEnvironment { const releaseGraph = (): void => { if (released) return; released = true; - // convertToTexture creates an RTT only for a non-texture expression. An already supplied - // texture belongs to its caller; its lifetime must not be stolen by this environment. - if (baseTexture !== base) { + // Only a newly created RTT is ours. A PassNode converts to a borrowed PassTextureNode; + // supplied TextureNodes/RTTs belong to the caller even when their resources are shared. + if (baseTexture !== base && Reflect.get(baseTexture, "isRTTNode") === true) { const owned = baseTexture as unknown as { renderTarget: { dispose(): void }; _quadMesh: { material: { dispose(): void } }; diff --git a/packages/create-threenative/templates/platformer/src/render/worldEnvironment.ts b/packages/create-threenative/templates/platformer/src/render/worldEnvironment.ts index 037c3b8db6..e5ee804bc0 100644 --- a/packages/create-threenative/templates/platformer/src/render/worldEnvironment.ts +++ b/packages/create-threenative/templates/platformer/src/render/worldEnvironment.ts @@ -513,9 +513,9 @@ export class WorldEnvironment { const releaseGraph = (): void => { if (released) return; released = true; - // convertToTexture creates an RTT only for a non-texture expression. An already supplied - // texture belongs to its caller; its lifetime must not be stolen by this environment. - if (baseTexture !== base) { + // Only a newly created RTT is ours. A PassNode converts to a borrowed PassTextureNode; + // supplied TextureNodes/RTTs belong to the caller even when their resources are shared. + if (baseTexture !== base && Reflect.get(baseTexture, "isRTTNode") === true) { const owned = baseTexture as unknown as { renderTarget: { dispose(): void }; _quadMesh: { material: { dispose(): void } }; diff --git a/packages/create-threenative/templates/puzzle/src/render/worldEnvironment.ts b/packages/create-threenative/templates/puzzle/src/render/worldEnvironment.ts index 037c3b8db6..e5ee804bc0 100644 --- a/packages/create-threenative/templates/puzzle/src/render/worldEnvironment.ts +++ b/packages/create-threenative/templates/puzzle/src/render/worldEnvironment.ts @@ -513,9 +513,9 @@ export class WorldEnvironment { const releaseGraph = (): void => { if (released) return; released = true; - // convertToTexture creates an RTT only for a non-texture expression. An already supplied - // texture belongs to its caller; its lifetime must not be stolen by this environment. - if (baseTexture !== base) { + // Only a newly created RTT is ours. A PassNode converts to a borrowed PassTextureNode; + // supplied TextureNodes/RTTs belong to the caller even when their resources are shared. + if (baseTexture !== base && Reflect.get(baseTexture, "isRTTNode") === true) { const owned = baseTexture as unknown as { renderTarget: { dispose(): void }; _quadMesh: { material: { dispose(): void } }; diff --git a/packages/create-threenative/templates/racing/src/render/worldEnvironment.ts b/packages/create-threenative/templates/racing/src/render/worldEnvironment.ts index 037c3b8db6..e5ee804bc0 100644 --- a/packages/create-threenative/templates/racing/src/render/worldEnvironment.ts +++ b/packages/create-threenative/templates/racing/src/render/worldEnvironment.ts @@ -513,9 +513,9 @@ export class WorldEnvironment { const releaseGraph = (): void => { if (released) return; released = true; - // convertToTexture creates an RTT only for a non-texture expression. An already supplied - // texture belongs to its caller; its lifetime must not be stolen by this environment. - if (baseTexture !== base) { + // Only a newly created RTT is ours. A PassNode converts to a borrowed PassTextureNode; + // supplied TextureNodes/RTTs belong to the caller even when their resources are shared. + if (baseTexture !== base && Reflect.get(baseTexture, "isRTTNode") === true) { const owned = baseTexture as unknown as { renderTarget: { dispose(): void }; _quadMesh: { material: { dispose(): void } }; diff --git a/packages/create-threenative/templates/rain/src/render/worldEnvironment.ts b/packages/create-threenative/templates/rain/src/render/worldEnvironment.ts index 037c3b8db6..e5ee804bc0 100644 --- a/packages/create-threenative/templates/rain/src/render/worldEnvironment.ts +++ b/packages/create-threenative/templates/rain/src/render/worldEnvironment.ts @@ -513,9 +513,9 @@ export class WorldEnvironment { const releaseGraph = (): void => { if (released) return; released = true; - // convertToTexture creates an RTT only for a non-texture expression. An already supplied - // texture belongs to its caller; its lifetime must not be stolen by this environment. - if (baseTexture !== base) { + // Only a newly created RTT is ours. A PassNode converts to a borrowed PassTextureNode; + // supplied TextureNodes/RTTs belong to the caller even when their resources are shared. + if (baseTexture !== base && Reflect.get(baseTexture, "isRTTNode") === true) { const owned = baseTexture as unknown as { renderTarget: { dispose(): void }; _quadMesh: { material: { dispose(): void } }; diff --git a/packages/create-threenative/templates/rts/src/render/worldEnvironment.ts b/packages/create-threenative/templates/rts/src/render/worldEnvironment.ts index 037c3b8db6..e5ee804bc0 100644 --- a/packages/create-threenative/templates/rts/src/render/worldEnvironment.ts +++ b/packages/create-threenative/templates/rts/src/render/worldEnvironment.ts @@ -513,9 +513,9 @@ export class WorldEnvironment { const releaseGraph = (): void => { if (released) return; released = true; - // convertToTexture creates an RTT only for a non-texture expression. An already supplied - // texture belongs to its caller; its lifetime must not be stolen by this environment. - if (baseTexture !== base) { + // Only a newly created RTT is ours. A PassNode converts to a borrowed PassTextureNode; + // supplied TextureNodes/RTTs belong to the caller even when their resources are shared. + if (baseTexture !== base && Reflect.get(baseTexture, "isRTTNode") === true) { const owned = baseTexture as unknown as { renderTarget: { dispose(): void }; _quadMesh: { material: { dispose(): void } }; diff --git a/packages/create-threenative/templates/runner/src/render/worldEnvironment.ts b/packages/create-threenative/templates/runner/src/render/worldEnvironment.ts index 037c3b8db6..e5ee804bc0 100644 --- a/packages/create-threenative/templates/runner/src/render/worldEnvironment.ts +++ b/packages/create-threenative/templates/runner/src/render/worldEnvironment.ts @@ -513,9 +513,9 @@ export class WorldEnvironment { const releaseGraph = (): void => { if (released) return; released = true; - // convertToTexture creates an RTT only for a non-texture expression. An already supplied - // texture belongs to its caller; its lifetime must not be stolen by this environment. - if (baseTexture !== base) { + // Only a newly created RTT is ours. A PassNode converts to a borrowed PassTextureNode; + // supplied TextureNodes/RTTs belong to the caller even when their resources are shared. + if (baseTexture !== base && Reflect.get(baseTexture, "isRTTNode") === true) { const owned = baseTexture as unknown as { renderTarget: { dispose(): void }; _quadMesh: { material: { dispose(): void } }; diff --git a/packages/create-threenative/templates/sailing/src/render/worldEnvironment.ts b/packages/create-threenative/templates/sailing/src/render/worldEnvironment.ts index 037c3b8db6..e5ee804bc0 100644 --- a/packages/create-threenative/templates/sailing/src/render/worldEnvironment.ts +++ b/packages/create-threenative/templates/sailing/src/render/worldEnvironment.ts @@ -513,9 +513,9 @@ export class WorldEnvironment { const releaseGraph = (): void => { if (released) return; released = true; - // convertToTexture creates an RTT only for a non-texture expression. An already supplied - // texture belongs to its caller; its lifetime must not be stolen by this environment. - if (baseTexture !== base) { + // Only a newly created RTT is ours. A PassNode converts to a borrowed PassTextureNode; + // supplied TextureNodes/RTTs belong to the caller even when their resources are shared. + if (baseTexture !== base && Reflect.get(baseTexture, "isRTTNode") === true) { const owned = baseTexture as unknown as { renderTarget: { dispose(): void }; _quadMesh: { material: { dispose(): void } }; diff --git a/packages/create-threenative/templates/shooter/src/render/worldEnvironment.ts b/packages/create-threenative/templates/shooter/src/render/worldEnvironment.ts index 037c3b8db6..e5ee804bc0 100644 --- a/packages/create-threenative/templates/shooter/src/render/worldEnvironment.ts +++ b/packages/create-threenative/templates/shooter/src/render/worldEnvironment.ts @@ -513,9 +513,9 @@ export class WorldEnvironment { const releaseGraph = (): void => { if (released) return; released = true; - // convertToTexture creates an RTT only for a non-texture expression. An already supplied - // texture belongs to its caller; its lifetime must not be stolen by this environment. - if (baseTexture !== base) { + // Only a newly created RTT is ours. A PassNode converts to a borrowed PassTextureNode; + // supplied TextureNodes/RTTs belong to the caller even when their resources are shared. + if (baseTexture !== base && Reflect.get(baseTexture, "isRTTNode") === true) { const owned = baseTexture as unknown as { renderTarget: { dispose(): void }; _quadMesh: { material: { dispose(): void } }; diff --git a/packages/create-threenative/templates/snow/src/render/worldEnvironment.ts b/packages/create-threenative/templates/snow/src/render/worldEnvironment.ts index 037c3b8db6..e5ee804bc0 100644 --- a/packages/create-threenative/templates/snow/src/render/worldEnvironment.ts +++ b/packages/create-threenative/templates/snow/src/render/worldEnvironment.ts @@ -513,9 +513,9 @@ export class WorldEnvironment { const releaseGraph = (): void => { if (released) return; released = true; - // convertToTexture creates an RTT only for a non-texture expression. An already supplied - // texture belongs to its caller; its lifetime must not be stolen by this environment. - if (baseTexture !== base) { + // Only a newly created RTT is ours. A PassNode converts to a borrowed PassTextureNode; + // supplied TextureNodes/RTTs belong to the caller even when their resources are shared. + if (baseTexture !== base && Reflect.get(baseTexture, "isRTTNode") === true) { const owned = baseTexture as unknown as { renderTarget: { dispose(): void }; _quadMesh: { material: { dispose(): void } }; diff --git a/packages/create-threenative/templates/starter/src/render/worldEnvironment.ts b/packages/create-threenative/templates/starter/src/render/worldEnvironment.ts index 037c3b8db6..e5ee804bc0 100644 --- a/packages/create-threenative/templates/starter/src/render/worldEnvironment.ts +++ b/packages/create-threenative/templates/starter/src/render/worldEnvironment.ts @@ -513,9 +513,9 @@ export class WorldEnvironment { const releaseGraph = (): void => { if (released) return; released = true; - // convertToTexture creates an RTT only for a non-texture expression. An already supplied - // texture belongs to its caller; its lifetime must not be stolen by this environment. - if (baseTexture !== base) { + // Only a newly created RTT is ours. A PassNode converts to a borrowed PassTextureNode; + // supplied TextureNodes/RTTs belong to the caller even when their resources are shared. + if (baseTexture !== base && Reflect.get(baseTexture, "isRTTNode") === true) { const owned = baseTexture as unknown as { renderTarget: { dispose(): void }; _quadMesh: { material: { dispose(): void } }; diff --git a/packages/create-threenative/templates/tower-defense/src/render/worldEnvironment.ts b/packages/create-threenative/templates/tower-defense/src/render/worldEnvironment.ts index 037c3b8db6..e5ee804bc0 100644 --- a/packages/create-threenative/templates/tower-defense/src/render/worldEnvironment.ts +++ b/packages/create-threenative/templates/tower-defense/src/render/worldEnvironment.ts @@ -513,9 +513,9 @@ export class WorldEnvironment { const releaseGraph = (): void => { if (released) return; released = true; - // convertToTexture creates an RTT only for a non-texture expression. An already supplied - // texture belongs to its caller; its lifetime must not be stolen by this environment. - if (baseTexture !== base) { + // Only a newly created RTT is ours. A PassNode converts to a borrowed PassTextureNode; + // supplied TextureNodes/RTTs belong to the caller even when their resources are shared. + if (baseTexture !== base && Reflect.get(baseTexture, "isRTTNode") === true) { const owned = baseTexture as unknown as { renderTarget: { dispose(): void }; _quadMesh: { material: { dispose(): void } }; From 02f1be50c6b2fed6c240d22f8188910e29950c12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Paulo=20Furtado?= <30300459+jonit-dev@users.noreply.github.com> Date: Fri, 2 Oct 2026 01:54:23 -0700 Subject: [PATCH 04/41] fix(render): keep superseded chains from clearing or reinstalling output --- .../PRD-VQ-07-volumetric-fog.md | 2 + packages/core/__tests__/renderer.spec.ts | 82 +++++++++++++++++++ packages/core/src/render/chain.ts | 24 ++++-- packages/core/src/renderer.ts | 3 + .../world-environment-lifetime.spec.ts | 15 ++++ 5 files changed, 121 insertions(+), 5 deletions(-) diff --git a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md index d9d6a4b066..017eddeb7c 100644 --- a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md +++ b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md @@ -72,3 +72,5 @@ Red-green proof: three new behavioral failures reproduced first; `pnpm exec vite Reuse review at pinned `three@0.185.1`: `VolumetricLightingModel.direct()` skips a directional light because it has no `distance`; extinction is derived from accumulated light rather than independent density. Its material cannot satisfy the bounded directional radiance/transmittance contract unchanged. Existing `GodraysNode` provides the depth reconstruction and ordinary directional shadow coordinates to reuse in game-owned source. Rain's screen-quad coast and its god-ray composition do not provide bounded participating volumes. No new shared visual algorithm or renderer is admitted. Review correction: pinned `convertToTexture(PassNode)` returns a borrowed pass texture, not an owned RTT. A new PassNode-return regression reproduced the disposal TypeError; the ownership test now additionally requires `isRTTNode === true`. PassNode disposal and caller-owned texture/RTT preservation are covered. The same focused suite passes 42/42 and strict touched-source/test typechecking passes; this supersedes the earlier 39-test checkpoint for the lifecycle code. + +Mixed ownership correction: actual-renderer regressions reproduced an obsolete chain clearing a newer direct graph and automatic budget observation rebuilding the obsolete chain. `RenderChain` now retains the installed input identity, clears only owned/attempted output, and skips automatic observation when the renderer says it was superseded. Replacement does not implicitly dispose caller dependencies; explicit disposal remains available. Borrowed RTT target and material preservation are both asserted directly. Focused renderer/render-chain/environment/shared-source suite passes 88/88; core typecheck passes. This proves the exercised lifecycle transitions, not GPU behavior. diff --git a/packages/core/__tests__/renderer.spec.ts b/packages/core/__tests__/renderer.spec.ts index 365ab43884..41571819e6 100644 --- a/packages/core/__tests__/renderer.spec.ts +++ b/packages/core/__tests__/renderer.spec.ts @@ -932,6 +932,88 @@ describe("createRenderer", () => { } }); + it("keeps a direct replacement when an older render chain is disposed", async () => { + const canvas = testCanvas(); + const descriptor = Object.getOwnPropertyDescriptor(globalThis, "navigator"); + Object.defineProperty(globalThis, "navigator", { configurable: true, value: { gpu: {} } }); + const renderPipeline = vi + .spyOn(RenderPipeline.prototype, "render") + .mockImplementation(() => {}); + const rawRender = vi.fn(); + const renderer = await createRenderer({ + canvas, + webgpuFactory: () => ({ + domElement: canvas, + init: async () => undefined, + render: rawRender, + setSize: () => undefined, + }), + }); + try { + const previous = renderer.createRenderChain?.({ + input: {}, + request: { stages: ["bloom"], tier: "high" }, + stages: [{ name: "bloom", build: (input) => input }], + }); + expect(previous?.applied.stages).toEqual(["bloom"]); + const direct = {}; + renderer.setOutputNode(direct); + previous?.dispose(); + renderer.render(new Scene(), new PerspectiveCamera()); + expect(renderPipeline).toHaveBeenCalledTimes(1); + expect(rawRender).not.toHaveBeenCalled(); + renderer.clearOutputNode?.(direct); + renderer.render(new Scene(), new PerspectiveCamera()); + expect(rawRender).toHaveBeenCalledTimes(1); + } finally { + renderer.dispose(); + renderPipeline.mockRestore(); + if (descriptor === undefined) Reflect.deleteProperty(globalThis, "navigator"); + else Object.defineProperty(globalThis, "navigator", descriptor); + } + }); + + it("does not resurrect a superseded automatic chain during budget observation", async () => { + const canvas = testCanvas(); + const descriptor = Object.getOwnPropertyDescriptor(globalThis, "navigator"); + Object.defineProperty(globalThis, "navigator", { configurable: true, value: { gpu: {} } }); + const renderPipeline = vi + .spyOn(RenderPipeline.prototype, "render") + .mockImplementation(() => {}); + const renderer = await createRenderer({ + canvas, + webgpuFactory: () => ({ + domElement: canvas, + init: async () => undefined, + render: () => {}, + setSize: () => undefined, + }), + }); + try { + const build = vi.fn((input) => input); + const previous = renderer.createRenderChain?.({ + input: {}, + request: { stages: ["bloom"], tier: "auto" }, + stages: [{ name: "bloom", build }], + }); + renderer.setOutputNode({}); + for (let index = 0; index < 4; index += 1) { + renderer.observeRenderChainBudget?.({ phases: { render: { p95: 40 } } }); + renderer.observeRenderChainFrame?.(); + } + expect(build).toHaveBeenCalledTimes(1); + expect(previous?.disposed).toBe(false); + previous?.dispose(); + renderer.render(new Scene(), new PerspectiveCamera()); + expect(renderPipeline).toHaveBeenCalledTimes(1); + } finally { + renderer.dispose(); + renderPipeline.mockRestore(); + if (descriptor === undefined) Reflect.deleteProperty(globalThis, "navigator"); + else Object.defineProperty(globalThis, "navigator", descriptor); + } + }); + it("replaces and disposes only the framework-owned output pipeline", async () => { const canvas = testCanvas(); const descriptor = Object.getOwnPropertyDescriptor(globalThis, "navigator"); diff --git a/packages/core/src/render/chain.ts b/packages/core/src/render/chain.ts index 1e8d74bec6..a33eb3d5b4 100644 --- a/packages/core/src/render/chain.ts +++ b/packages/core/src/render/chain.ts @@ -53,7 +53,8 @@ export interface IRenderChainVelocityResult { export interface IRenderChainRenderer { readonly kind: RendererKind; readonly raw: unknown; - clearOutputNode?(): void; + clearOutputNode?(expectedNode?: unknown): void; + isOutputNodeCurrent?(node: unknown): boolean; /** Internal renderer seam used to turn on core-owned previous-frame bookkeeping for active temporal stages. */ setRenderChainVelocityEnabled?(enabled: boolean): void; /** Install a graph and identify the authored world pass that follows the rendered scene root. */ @@ -275,6 +276,7 @@ export class RenderChain { #ownedVelocityPass: IVelocityRenderPass | undefined = undefined; #ownedVelocityMrt: MRTNode | null | undefined = undefined; #disposed = false; + #installedNode: unknown; #applied: IRenderChainApplied; constructor(renderer: IRenderChainRenderer, options?: Omit); @@ -422,6 +424,7 @@ export class RenderChain { if (stages.length > 0) { try { this.#renderer.setOutputNode(node, this.#worldPass ?? this.#requestVelocity.pass); + this.#installedNode = node; } catch (error) { const reason = `install:${errorMessage(error)}`; dropped.push(...stages.map((name) => ({ name, reason }))); @@ -429,10 +432,13 @@ export class RenderChain { contributions.length = 0; for (const definition of builtStageDefinitions) definition.dispose?.(); builtStageDefinitions.length = 0; - this.#renderer.clearOutputNode?.(); + // A renderer may throw after partially installing this attempt. Clear that identity, + // then the prior owned graph, without touching an unrelated replacement. + this.#renderer.clearOutputNode?.(node); + this.#clearOwnedOutput(); } } else { - this.#renderer.clearOutputNode?.(); + this.#clearOwnedOutput(); } const activeVelocity = stages.some((name) => @@ -467,6 +473,7 @@ export class RenderChain { /** Samples the active temporal stage's completed velocity result after rendering. */ observeFrame(): IRenderChainApplied { if (this.#disposed) throw new Error("RenderChain.observeFrame called after dispose()."); + if (this.#renderer.isOutputNodeCurrent?.(this.#installedNode) === false) return this.#applied; const requiresMeasurement = this.#applied.stages.some((name) => requiresVelocityFor(this.#stageDefinitions.get(name), name), ); @@ -492,7 +499,8 @@ export class RenderChain { /** Feed the chain the same render-window evidence used by the frame budget. */ observeFrameBudget(window: IRenderChainBudgetWindow): RenderChainTier { if (this.#disposed) throw new Error("RenderChain.observeFrameBudget called after dispose()."); - if (!this.#automatic) return this.#tier; + if (!this.#automatic || this.#renderer.isOutputNodeCurrent?.(this.#installedNode) === false) + return this.#tier; const renderP95 = window.phases.render?.p95; if (typeof renderP95 !== "number" || !Number.isFinite(renderP95) || renderP95 < 0) { throw new Error("RenderChain frame budget render.p95 must be a finite non-negative number."); @@ -530,10 +538,16 @@ export class RenderChain { this.#disposeActiveStages(); this.#restoreOwnedVelocityOutput(); this.#renderer.setRenderChainVelocityEnabled?.(false); - this.#renderer.clearOutputNode?.(); + this.#clearOwnedOutput(); forgetReport(this.#renderer); } + #clearOwnedOutput(): void { + if (this.#installedNode === undefined) return; + this.#renderer.clearOutputNode?.(this.#installedNode); + this.#installedNode = undefined; + } + #setMeasurement(measurement: IRenderChainVelocityMeasurement | undefined, emit: boolean): void { const { provisioned, required, source } = this.#applied.velocity; this.#applied = { diff --git a/packages/core/src/renderer.ts b/packages/core/src/renderer.ts index a544fb3e08..4139c289bc 100644 --- a/packages/core/src/renderer.ts +++ b/packages/core/src/renderer.ts @@ -177,6 +177,8 @@ export interface IRendererLike { renderOverlay(scene: Object3D, camera: Camera): void; /** Removes the output pipeline; an expected input only clears that still-current graph. */ clearOutputNode?(expectedNode?: unknown): void; + /** Internal ownership query: superseded chains stop automatic observation without disposal. */ + isOutputNodeCurrent?(node: unknown): boolean; /** Creates the core-owned chain seam without making generated render source import the package. */ createRenderChain?: (options: Omit) => RenderChain; /** Feeds automatic render-chain tiers the completed frame-budget window. */ @@ -781,6 +783,7 @@ function wrapRenderer( outputPipeline = nextPipeline; outputInput = node; }, + isOutputNodeCurrent: (node) => outputPipeline !== undefined && node === outputInput, clearOutputNode: (expectedNode) => { if (expectedNode !== undefined && expectedNode !== outputInput) return; outputPipeline?.dispose(); diff --git a/packages/create-threenative/__tests__/world-environment-lifetime.spec.ts b/packages/create-threenative/__tests__/world-environment-lifetime.spec.ts index 2ec7428c76..53b76cbcdd 100644 --- a/packages/create-threenative/__tests__/world-environment-lifetime.spec.ts +++ b/packages/create-threenative/__tests__/world-environment-lifetime.spec.ts @@ -119,6 +119,17 @@ it("disposes a base-colour PassNode without mistaking its borrowed texture for a it.each(["texture", "rtt"])("leaves caller-owned %s resources alive", (kind) => { const supplied = kind === "rtt" ? rtt(vec4(0.2, 0.3, 0.4, 1)) : texture(new Texture()); const release = vi.spyOn(supplied.value, "dispose"); + const borrowedRtt = + Reflect.get(supplied, "isRTTNode") === true + ? (supplied as unknown as { + renderTarget: { dispose(): void }; + _quadMesh: { material: { dispose(): void } }; + }) + : undefined; + const targetRelease = + borrowedRtt === undefined ? undefined : vi.spyOn(borrowedRtt.renderTarget, "dispose"); + const materialRelease = + borrowedRtt === undefined ? undefined : vi.spyOn(borrowedRtt._quadMesh.material, "dispose"); const applied = new WorldEnvironment({ bloomEnabled: false, screenSpaceAA: "disabled" }).apply( { kind: "webgpu", raw: {}, setOutputNode: () => {}, clearOutputNode: () => {} }, new Scene(), @@ -128,5 +139,9 @@ it.each(["texture", "rtt"])("leaves caller-owned %s resources alive", (kind) => applied.dispose?.(); applied.dispose?.(); expect(release).not.toHaveBeenCalled(); + if (targetRelease !== undefined) expect(targetRelease).not.toHaveBeenCalled(); + if (materialRelease !== undefined) expect(materialRelease).not.toHaveBeenCalled(); + borrowedRtt?.renderTarget.dispose(); + borrowedRtt?._quadMesh.material.dispose(); supplied.value.dispose(); }); From 1bb878e033d29e084b912bc9266a15b72d6cbf16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Paulo=20Furtado?= <30300459+jonit-dev@users.noreply.github.com> Date: Fri, 2 Oct 2026 02:20:05 -0700 Subject: [PATCH 05/41] feat(vq07): add opt-in bounded fog and hosted runtime capture fixture --- .../workflows/integration-volumetric-fog.yml | 41 ++ .../PRD-VQ-07-volumetric-fog.md | 6 + .../playtests/vq-volumetric-fog.playtest.json | 45 +++ examples/abyss-framework/vq-fog/README.md | 36 ++ examples/abyss-framework/vq-fog/index.html | 2 + examples/abyss-framework/vq-fog/package.json | 6 + examples/abyss-framework/vq-fog/src/game.ts | 228 ++++++++++++ examples/abyss-framework/vq-fog/src/main.ts | 6 + .../abyss-framework/vq-fog/vite.config.ts | 6 + .../__tests__/scaffold.spec.ts | 29 +- .../__tests__/vq-volumetric-fog.spec.ts | 190 ++++++++++ .../starter/src/render/volumetricFog.ts | 349 ++++++++++++++++++ .../__tests__/verify-volumetric-fog.spec.ts | 59 +++ scripts/verify-volumetric-fog.ts | 173 +++++++++ 14 files changed, 1163 insertions(+), 13 deletions(-) create mode 100644 .github/workflows/integration-volumetric-fog.yml create mode 100644 examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json create mode 100644 examples/abyss-framework/vq-fog/README.md create mode 100644 examples/abyss-framework/vq-fog/index.html create mode 100644 examples/abyss-framework/vq-fog/package.json create mode 100644 examples/abyss-framework/vq-fog/src/game.ts create mode 100644 examples/abyss-framework/vq-fog/src/main.ts create mode 100644 examples/abyss-framework/vq-fog/vite.config.ts create mode 100644 packages/create-threenative/__tests__/vq-volumetric-fog.spec.ts create mode 100644 packages/create-threenative/templates/starter/src/render/volumetricFog.ts create mode 100644 scripts/__tests__/verify-volumetric-fog.spec.ts create mode 100644 scripts/verify-volumetric-fog.ts diff --git a/.github/workflows/integration-volumetric-fog.yml b/.github/workflows/integration-volumetric-fog.yml new file mode 100644 index 0000000000..47408647b0 --- /dev/null +++ b/.github/workflows/integration-volumetric-fog.yml @@ -0,0 +1,41 @@ +name: Integration volumetric fog +on: + workflow_dispatch: + pull_request: + paths: + - 'packages/create-threenative/templates/starter/src/render/volumetricFog.ts' + - 'examples/abyss-framework/vq-fog/**' + - 'examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json' + - 'scripts/verify-volumetric-fog.ts' + - '.github/workflows/integration-volumetric-fog.yml' +permissions: + contents: read +concurrency: + group: integration-volumetric-fog-${{ github.event.pull_request.head.ref || github.ref_name }} + cancel-in-progress: true +jobs: + capture: + runs-on: ubuntu-24.04 + timeout-minutes: 20 + steps: + - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 + with: + persist-credentials: false + ref: ${{ github.event.pull_request.head.sha || github.sha }} + - uses: ./.github/actions/pnpm + - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 + with: + node-version: '22' + cache: pnpm + - run: pnpm install --frozen-lockfile + - uses: ./.github/actions/playwright-chromium + - run: pnpm --filter @threenative/playtest build + - run: pnpm --filter abyss-framework exec vite build --config vq-fog/vite.config.ts + - run: node --import tsx scripts/verify-volumetric-fog.ts + - uses: actions/upload-artifact@v7 + if: always() + with: + name: volumetric-fog-${{ github.event.pull_request.head.sha || github.sha }} + path: artifacts/volumetric-fog/ + retention-days: 30 + if-no-files-found: error diff --git a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md index 017eddeb7c..9be2cac4c1 100644 --- a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md +++ b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md @@ -74,3 +74,9 @@ Reuse review at pinned `three@0.185.1`: `VolumetricLightingModel.direct()` skips Review correction: pinned `convertToTexture(PassNode)` returns a borrowed pass texture, not an owned RTT. A new PassNode-return regression reproduced the disposal TypeError; the ownership test now additionally requires `isRTTNode === true`. PassNode disposal and caller-owned texture/RTT preservation are covered. The same focused suite passes 42/42 and strict touched-source/test typechecking passes; this supersedes the earlier 39-test checkpoint for the lifecycle code. Mixed ownership correction: actual-renderer regressions reproduced an obsolete chain clearing a newer direct graph and automatic budget observation rebuilding the obsolete chain. `RenderChain` now retains the installed input identity, clears only owned/attempted output, and skips automatic observation when the renderer says it was superseded. Replacement does not implicitly dispose caller dependencies; explicit disposal remains available. Borrowed RTT target and material preservation are both asserted directly. Focused renderer/render-chain/environment/shared-source suite passes 88/88; core typecheck passes. This proves the exercised lifecycle transitions, not GPU behavior. + +Fog implementation checkpoint: opt-in generated `templates/starter/src/render/volumetricFog.ts` now builds bounded overlapping height-density transport before exposure, with independent extinction, directional shadow lookup and explicitly unshadowed finite-range point lights. It owns a half-float nearest-filtered RTT, supports full/half resolution with per-pixel depth-discontinuity fallback, retains no history, and returns before graph allocation when off/unsupported/zero-density. No default tier enables it. The standalone fixture at `examples/abyss-framework/vq-fog/` exercises that exact source with outside/inside camera, light, wall, overlap, quality and rebuild controls. + +Fresh proof: the fog and verifier contract suites pass 23/23, including generation of the actual depth/shadow transport WGSL with/without lights; focused strict source/test/fixture/verifier typechecks and the production Vite fixture build pass. These are not rendered-pixel tests: analytic/wall-depth image proof and all Phase 3 qualification remain open. The hosted `integration-volumetric-fog.yml` uses the built public playtest runner for actual canvas captures and adapter/source-SHA provenance, rejects software device loss, and retains diagnostic captures on failure. The local executor has no display tooling and its Unix-socket restriction was verified, so local screenshot execution was not attempted through an alternate route. + +Scaffold validation initially failed only its whole-tree byte snapshot because the deliberate shared lifetime changes affect all thirteen kits and the new optional fog file affects starter. After inspecting that source-only delta, the expected generated-tree hashes were refreshed with an inline rationale; the unchanged starter-copy assertions now include the new file. The full scaffold suite passes 66/66. Fog/verifier plus CI structure/needs suites pass 164/164; relative documentation-link checks pass. No runtime evidence is inferred from these checks. diff --git a/examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json b/examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json new file mode 100644 index 0000000000..20862736fe --- /dev/null +++ b/examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json @@ -0,0 +1,45 @@ +{ + "schemaVersion": 1, + "name": "vq-volumetric-fog-lifecycle", + "target": "web", + "viewport": { "width": 640, "height": 400 }, + "warmupFrames": 60, + "steps": [ + { "press": ["KeyI"], "holdTicks": 1, "release": true }, + { "kind": "wait", "waitFrames": 20 }, + { "press": ["KeyO"], "holdTicks": 1, "release": true }, + { "kind": "wait", "waitFrames": 20 }, + { "press": ["KeyF"], "holdTicks": 1, "release": true }, + { "kind": "wait", "waitFrames": 20 }, + { "press": ["KeyC"], "holdTicks": 1, "release": true }, + { "kind": "wait", "waitFrames": 60 } + ], + "assert": { + "components": [ + { + "entity": "fog", + "component": "ready", + "equals": true, + "allowTrivial": "The graph must be ready after repeated reconstruction." + }, + { + "entity": "fog", + "component": "mode", + "equals": "fog", + "allowTrivial": "The fixture returns to the initial authored medium." + }, + { + "entity": "fog", + "component": "targets", + "equals": 1, + "allowTrivial": "Exactly the current fog RTT remains after replacement." + }, + { "entity": "fog", "component": "disposedGraphs", "gte": 4, "changed": true } + ], + "diagnostics": { "noConsoleErrors": true, "noRuntimeDiagnostics": true, "runtimeReady": true }, + "visual": [ + { "region": { "x": 0, "y": 0, "width": 640, "height": 400, "minNonblankPixelRatio": 0.05 } } + ] + }, + "artifacts": { "screenshots": "after", "console": true, "runtimeTrace": true } +} diff --git a/examples/abyss-framework/vq-fog/README.md b/examples/abyss-framework/vq-fog/README.md new file mode 100644 index 0000000000..454739dc18 --- /dev/null +++ b/examples/abyss-framework/vq-fog/README.md @@ -0,0 +1,36 @@ +# Bounded volumetric-fog fixture + +This opt-in fixture uses the starter's generated `volumetricFog.ts` and `WorldEnvironment` directly. The default game and template picture are unchanged. The fixture starts with fog off, warms the ordinary directional shadow map, and uses the named keyboard variants below. + +- F: bounded height fog, 48 steps, full resolution +- O / Z: off / zero density (both own zero fog targets) +- I: camera inside the bounds +- S / P: directional / point-light intensity off +- B: overlapping density bounds +- H: half-resolution fog with depth-discontinuity fallback +- W: remove the foreground wall so current depth changes +- C: dispose and rebuild the current graph + +The medium replaces scene fog, aerial haze and god rays. The only local light admitted here is an unshadowed finite-range point source. No temporal history is retained. The source rejects orthographic, logarithmic and reversed-depth configurations rather than pretending they are qualified. + +## Browser capture + +Run from the repository root: + +```sh +pnpm --filter @threenative/playtest build +pnpm --filter abyss-framework exec vite build --config vq-fog/vite.config.ts +node --import tsx scripts/verify-volumetric-fog.ts +``` + +The existing public runner provides headed Chromium, a private Xvfb, canvas captures and adapter provenance. The feature-specific hosted integration workflow invokes these commands on Ubuntu 24.04 and preserves PNGs, reports, observations and the tested source SHA under `artifacts/volumetric-fog/`. Software adapters qualify correctness only. A device-loss warning invalidates the result even if the runner reports a pass. The current verifier checks zero-density image identity; foreground-wall/shaft appearance still requires inspecting the actual captures. Do not treat the source build or WGSL generation test as runtime proof. + +## Native entry and lifecycle + +`src/game.ts` is the same portable default-exported game for both runtimes; `package.json` names it for existing project-mode conformance: + +```sh +pnpm parity --project examples/abyss-framework/vq-fog --target desktop +``` + +The reusable repeated-lifecycle scenario is `../playtests/vq-volumetric-fog.playtest.json`. Native execution and screenshot proof remain unverified until the host runs it; browser captures do not establish native support or hardware performance. diff --git a/examples/abyss-framework/vq-fog/index.html b/examples/abyss-framework/vq-fog/index.html new file mode 100644 index 0000000000..28ef8c9a6a --- /dev/null +++ b/examples/abyss-framework/vq-fog/index.html @@ -0,0 +1,2 @@ + +VQ07 bounded fog fixture diff --git a/examples/abyss-framework/vq-fog/package.json b/examples/abyss-framework/vq-fog/package.json new file mode 100644 index 0000000000..be5ced5381 --- /dev/null +++ b/examples/abyss-framework/vq-fog/package.json @@ -0,0 +1,6 @@ +{ + "name": "vq-volumetric-fog-fixture", + "private": true, + "type": "module", + "threenative": { "nativeEntry": "src/game.ts" } +} diff --git a/examples/abyss-framework/vq-fog/src/game.ts b/examples/abyss-framework/vq-fog/src/game.ts new file mode 100644 index 0000000000..f25bc2080f --- /dev/null +++ b/examples/abyss-framework/vq-fog/src/game.ts @@ -0,0 +1,228 @@ +import { + Box3, + BoxGeometry, + Color, + DirectionalLight, + Group, + HemisphereLight, + Mesh, + MeshStandardMaterial, + type PerspectiveCamera, + PointLight, + Vector3, +} from "three"; +import { Scene as GameScene, type ICtx, defineGame } from "../../../../packages/core/src/index.js"; +import { playtest } from "../../../../packages/core/src/playtest.js"; +import { createVolumetricFog } from "../../../../packages/create-threenative/templates/starter/src/render/volumetricFog.js"; +import { WorldEnvironment } from "../../../../packages/create-threenative/templates/starter/src/render/worldEnvironment.js"; + +const initialState = { + mode: "off", + ready: false, + builds: 0, + disposedGraphs: 0, + targets: 0, + pixels: 0, + steps: 0, + inside: false, + sun: true, + point: true, + overlaps: false, +}; +type FogState = typeof initialState; +type FogCtx = ICtx; +const modes = [ + "fog", + "off", + "zero", + "inside", + "sunOff", + "pointOff", + "overlap", + "half", + "wallOff", +] as const; +type Mode = (typeof modes)[number]; + +class FogProbe extends GameScene { + static override readonly initialState = initialState; + #geometry = new BoxGeometry(); + #material = new MeshStandardMaterial({ color: 0x7c8a91, roughness: 0.85 }); + #sun = new DirectionalLight(0xffedce, 3); + #point = new PointLight(0xffad60, 30, 8); + #wall: Mesh | undefined; + #fog: ReturnType; + #release: (() => void) | undefined; + #mode: Mode = "off"; + #applied: Mode | undefined; + #builds = 0; + #disposedGraphs = 0; + + override enter(ctx: FogCtx): void { + ctx.scene.background = new Color(0x131e2a); + ctx.scene.fog = null; + const box = (position: Vector3, scale: Vector3): Mesh => { + const mesh = new Mesh(this.#geometry, this.#material); + mesh.position.copy(position); + mesh.scale.copy(scale); + mesh.castShadow = true; + mesh.receiveShadow = true; + ctx.add(mesh); + return mesh; + }; + box(new Vector3(0, -0.2, -3), new Vector3(14, 0.4, 18)); + box(new Vector3(0, 2, -10), new Vector3(10, 4, 0.3)); + box(new Vector3(-5, 2, -5), new Vector3(0.3, 4, 10)); + box(new Vector3(-2.9, 4, -5), new Vector3(4, 0.3, 10)); + box(new Vector3(3.6, 4, -5), new Vector3(2.8, 0.3, 10)); + box(new Vector3(-1.4, 1, -5), new Vector3(1, 2, 1)); + this.#wall = box(new Vector3(0.4, 1.6, 3.6), new Vector3(2, 3.2, 0.4)); + this.#sun.position.set(-3, 7, 1); + this.#sun.target.position.set(0, 0, -5); + this.#sun.castShadow = true; + Object.assign(this.#sun.shadow.camera, { + left: -9, + right: 9, + top: 9, + bottom: -9, + near: 0.1, + far: 30, + }); + this.#sun.shadow.mapSize.set(512, 512); + this.#sun.shadow.bias = -0.0002; + this.#point.position.set(2, 1.3, -3); + ctx.add(this.#sun); + ctx.add(this.#sun.target); + ctx.add(this.#point); + ctx.add(new HemisphereLight(0xb3cced, 0x201d1a, 0.35)); + const raw = ctx.renderer.raw as { shadowMap: { enabled: boolean } }; + raw.shadowMap.enabled = true; + ctx.entities.add("fog", { object: new Group(), debug: () => ({ ...ctx.state.getState() }) }); + this.#positionCamera(ctx); + } + + override update(ctx: FogCtx): void { + for (const mode of modes) if (ctx.input.justPressed(mode)) this.#mode = mode; + if (ctx.input.justPressed("rebuild")) this.#applied = undefined; + this.#positionCamera(ctx); + this.#sun.intensity = this.#mode === "sunOff" ? 0 : 3; + this.#point.intensity = this.#mode === "pointOff" ? 0 : 30; + if (this.#wall !== undefined) this.#wall.visible = this.#mode !== "wallOff"; + // Warm the ordinary directional shadow map with the first real scene frame before composing. + if (this.#applied !== this.#mode && this.#sun.shadow.map !== null) this.#compose(ctx); + const observation = this.#fog?.diagnostics(); + ctx.state.set({ + mode: this.#mode, + ready: this.#applied === this.#mode, + builds: this.#builds, + disposedGraphs: this.#disposedGraphs, + targets: observation?.renderTargets ?? 0, + pixels: observation?.pixels ?? 0, + steps: observation?.steps ?? 0, + inside: this.#mode === "inside", + sun: this.#sun.intensity > 0, + point: this.#point.intensity > 0, + overlaps: this.#mode === "overlap", + }); + } + + #positionCamera(ctx: FogCtx): void { + if (this.#mode === "inside") ctx.camera.position.set(0, 1.5, -1); + else ctx.camera.position.set(6.5, 3, 11); + ctx.camera.lookAt(0, 1.4, -5); + } + + #compose(ctx: FogCtx): void { + this.#disposeGraph(); + const volumes = [ + { + bounds: new Box3(new Vector3(-4.5, 0, -9.5), new Vector3(4.5, 4, 3)), + density: this.#mode === "zero" ? 0 : 0.18, + baseHeight: 0.5, + heightFalloff: 0.35, + }, + ]; + if (this.#mode === "overlap") + volumes.push({ + bounds: new Box3(new Vector3(-2, 0, -7), new Vector3(3, 2.5, 1)), + density: 0.14, + baseHeight: 0.5, + heightFalloff: 0.6, + }); + const raw = ctx.renderer.raw as { + logarithmicDepthBuffer?: boolean; + reversedDepthBuffer?: boolean; + }; + const fog = createVolumetricFog(ctx.camera as PerspectiveCamera, { + enabled: this.#mode !== "off", + renderer: ctx.renderer.kind, + logarithmicDepth: raw.logarithmicDepthBuffer, + reversedDepth: raw.reversedDepthBuffer, + steps: 48, + resolutionScale: this.#mode === "half" ? 0.5 : 1, + volumes, + albedo: new Color(0.86, 0.9, 0.95), + ambient: new Color(0.055, 0.075, 0.11), + anisotropy: 0.35, + sun: this.#sun, + points: [this.#point], + environment: { aerialPerspective: false, godRays: false, sceneFog: false }, + }); + const world = new WorldEnvironment({ + bloomEnabled: false, + screenSpaceAA: "disabled", + tonemapMode: "neutral", + exposure: 1, + }); + const applied = world.apply( + ctx.renderer, + ctx.scene, + ctx.camera, + fog === undefined ? {} : { baseColour: (scenePass) => fog.compose(scenePass) }, + ); + this.#fog = fog; + this.#release = () => { + applied.dispose?.(); + fog?.dispose(); + }; + this.#builds += 1; + this.#applied = this.#mode; + } + + #disposeGraph(): void { + if (this.#release === undefined) return; + this.#release(); + this.#release = undefined; + this.#fog = undefined; + this.#disposedGraphs += 1; + } + override exit(): void { + this.#disposeGraph(); + this.#geometry.dispose(); + this.#material.dispose(); + this.#sun.dispose(); + this.#point.dispose(); + } +} + +export default defineGame({ + camera: { far: 80, near: 0.1, fov: 52, projection: "perspective" }, + initialState, + input: { + fog: { keys: ["KeyF"] }, + off: { keys: ["KeyO"] }, + zero: { keys: ["KeyZ"] }, + inside: { keys: ["KeyI"] }, + sunOff: { keys: ["KeyS"] }, + pointOff: { keys: ["KeyP"] }, + overlap: { keys: ["KeyB"] }, + half: { keys: ["KeyH"] }, + wallOff: { keys: ["KeyW"] }, + rebuild: { keys: ["KeyC"] }, + }, + plugins: [playtest()], + renderer: { preferWebGPU: true, resolutionScale: 1, pixelRatio: 1 }, + scenes: { fog: FogProbe }, + seed: 20261002, + start: "fog", +}); diff --git a/examples/abyss-framework/vq-fog/src/main.ts b/examples/abyss-framework/vq-fog/src/main.ts new file mode 100644 index 0000000000..d1ff30dfc2 --- /dev/null +++ b/examples/abyss-framework/vq-fog/src/main.ts @@ -0,0 +1,6 @@ +import game from "./game.js"; +void game.start().then(() => { + const canvas = game.ctx?.renderer.domElement; + if (canvas === undefined) throw new Error("Fog fixture did not produce a canvas."); + document.body.appendChild(canvas); +}); diff --git a/examples/abyss-framework/vq-fog/vite.config.ts b/examples/abyss-framework/vq-fog/vite.config.ts new file mode 100644 index 0000000000..b7e44f6423 --- /dev/null +++ b/examples/abyss-framework/vq-fog/vite.config.ts @@ -0,0 +1,6 @@ +import { fileURLToPath } from "node:url"; +import { defineConfig } from "vite"; +export default defineConfig({ + root: fileURLToPath(new URL(".", import.meta.url)), + build: { outDir: "dist", emptyOutDir: true }, +}); diff --git a/packages/create-threenative/__tests__/scaffold.spec.ts b/packages/create-threenative/__tests__/scaffold.spec.ts index b15916be70..7220480e51 100644 --- a/packages/create-threenative/__tests__/scaffold.spec.ts +++ b/packages/create-threenative/__tests__/scaffold.spec.ts @@ -163,6 +163,8 @@ const BUG_REPORT_SKILL_PATHS = [ // all ten hashes to the values above, so nothing else in this lane reaches a scaffold. The docs // arrive through the templating step rather than a verbatim copy, which is why a content-hash // matcher does not list them and this ablation is the evidence instead. +// VQ07 intentionally changes shared output-lifetime source in every kit and adds the opt-in +// starter fog source; no preset enables fog. Recomputed from the generated trees after those edits. const PRD_201_PARENT_SCAFFOLD_HASHES: Readonly> = { // Recomputed 2026-10-01 on the merge of develop a602467db (PRD-458/473): every template's frame // budget now comes from resolveTargetFps, so ten trees move and `rts` does not; the capability reference (365 -> 368 entries) then moved all eleven, because it ships in every scaffold. @@ -183,19 +185,19 @@ const PRD_201_PARENT_SCAFFOLD_HASHES: Readonly> = { // Recomputed 2026-10-01 on the merge of develop (PRD-470/471/472/474) into the rain + snow // branch (PRD-469, PRD-473): the merged tree carries both sides' engine and manifest bytes, so // all thirteen trees, rain and snow included, were re-measured through createProject. - "action-rpg": "27ffb8848810701f1a4223d905df82bc232c80792bde054299860e014fd9b2e6", - minimal: "a00b35afaf128b64d79334d38a4023b9f7df99c3c333e7f5fb3061cd711c26b6", - platformer: "50cbcd00f96329d8dd4b38c9202579648b3f43864fb4ac5da4790c584ebace24", - puzzle: "181fee3456efd8a0ea22214b3bed8e3d70550d32f37ac3e68f9bc17cdb4b8916", - racing: "16d72f0576fffd0080fc4feb5dea122e8d8b0075b63c128f75d41cd288a294da", - rain: "819b63af62cd6d5b94cefd383e3a1574ed24f2eff9d101e61a0973d132607673", - rts: "822da647ae54c3d16b890dd29f74f06828ec08651f4ad30e89c4286f76aa0405", - runner: "98673f4075d8e66e5f199137d7d5aa8f8b1052c4d9cf9cfb5e5383a8812a3cb7", - sailing: "93f7526320547acd320a340774e5384b2c42c109379bff2437cb2b01e1b0e149", - shooter: "d5a0cf3706e7a0b621fa9290564ac896467b256154d7f6abdf75ca4c36aade91", - snow: "d59cab83418e9636bb9b48f8b802b3c36defdc5889e4a03c96b1167b7a4f2623", - starter: "d6d685a7ddba9d074869bf76afa1400357503ece29e96d857a3322c8ca61c078", - "tower-defense": "d50982f0cdfe90786e0042e7d7113d847856c9d9eed71673adfb42e6a9349287", + "action-rpg": "7e245a89396cb372e81b30607583e8047d8cb37fd073215e40cec61057132d12", + minimal: "a07aba83d5f576c943eec9201955aaeb7773178e4207303a9dba6c85f3274d64", + platformer: "91abe84959d599c7c7fcf676b0c09596bfd09017976350649941539e1dd51003", + puzzle: "6e47791f5adc872715ecad22ec09b5437039def2bbc689d3f6fae1bd64e973e2", + racing: "08f71b94ee94e19165278a7bfe42888772f1125b9b7242f71a4ed70719c69a12", + rain: "79df918785707d0f47cbf35edb22b55d9980e20f7882ca727ae60662a59fffae", + rts: "09230e7eb29441f55acac473f2f73f02b0ad918038e0b43c37522dbf964b2aee", + runner: "50191f843787d7a8267846ceae8e9f69daa4a24b5403d406e5552bf68f82b61c", + sailing: "da6621de99aacfb80cd2459e9bdbb04421160df57d28122e0abb6638d61f0f9d", + shooter: "494e877394128762d70bb0b7ad95a3e72ee6e6f6a5f5d956cbf2c2e1b4d565ed", + snow: "c5d9630d80557145bbde1ff03fc8cb3619f5514c3bf6903fd5ad1deb0e38e4a2", + starter: "64e651980e3f8e9f39a4f0fa23b5d7913a7e1c99f606a4ea737aec112ae2e435", + "tower-defense": "00af2e6b3584af6d8c03ab81ec89590ebbb8af6a9e10bdea8e0b9c1b5558c564", }; const GENERATED_SCAFFOLD_METADATA = @@ -293,6 +295,7 @@ const STARTER_PATHS = [ "src/render/lighting.ts", "src/render/postprocessing.ts", "src/render/worldEnvironment.ts", + "src/render/volumetricFog.ts", "src/render/palette.ts", "src/render/materials.ts", "src/render/arena.ts", diff --git a/packages/create-threenative/__tests__/vq-volumetric-fog.spec.ts b/packages/create-threenative/__tests__/vq-volumetric-fog.spec.ts new file mode 100644 index 0000000000..3ee182870d --- /dev/null +++ b/packages/create-threenative/__tests__/vq-volumetric-fog.spec.ts @@ -0,0 +1,190 @@ +import { + Box3, + BoxGeometry, + Color, + DepthTexture, + DirectionalLight, + Mesh, + MeshBasicMaterial, + OrthographicCamera, + PerspectiveCamera, + PointLight, + RenderTarget, + Scene, + Vector3, +} from "three"; +import { pass } from "three/tsl"; +import { type Node, WGSLNodeBuilder } from "three/webgpu"; +import { describe, expect, it, vi } from "vitest"; +import { + type IVolumetricFogOptions, + createVolumetricFog, +} from "../templates/starter/src/render/volumetricFog.js"; + +function required(value: T | undefined | null): T { + if (value == null) throw new Error("Missing fixture value"); + return value; +} +function settings(): IVolumetricFogOptions { + return { + enabled: true, + renderer: "webgpu", + steps: 32, + resolutionScale: 1, + volumes: [ + { + bounds: new Box3(new Vector3(-2, -1, -8), new Vector3(2, 3, -2)), + density: 0.2, + baseHeight: 0, + heightFalloff: 0, + }, + ], + albedo: new Color(0.8, 0.8, 0.8), + ambient: new Color(0.1, 0.1, 0.1), + anisotropy: 0, + environment: { aerialPerspective: false, godRays: false, sceneFog: false }, + }; +} + +describe("opt-in generated volumetric fog", () => { + it.each(["disabled", "unsupported", "zero", "empty"])( + "%s returns no controller before graph allocation", + (reason) => { + const options = settings(); + if (reason === "disabled") options.enabled = false; + if (reason === "unsupported") options.renderer = "webgl2"; + if (reason === "zero") required(options.volumes[0]).density = 0; + if (reason === "empty") options.volumes = []; + expect(createVolumetricFog(new PerspectiveCamera(), options)).toBeUndefined(); + }, + ); + it.each([0, -1, 8.5, 129, Number.NaN])("rejects invalid steps %s", (steps) => { + expect(() => createVolumetricFog(new PerspectiveCamera(), { ...settings(), steps })).toThrow( + /steps/, + ); + }); + it.each([0, 0.25, 2, Number.NaN])("rejects unsupported resolution %s", (resolutionScale) => { + expect(() => + createVolumetricFog(new PerspectiveCamera(), { ...settings(), resolutionScale }), + ).toThrow(/resolutionScale/); + }); + it("refuses unqualified camera and depth encodings", () => { + expect(() => + createVolumetricFog(new OrthographicCamera() as unknown as PerspectiveCamera, settings()), + ).toThrow(/perspective/); + expect(() => + createVolumetricFog(new PerspectiveCamera(), { ...settings(), logarithmicDepth: true }), + ).toThrow(/depth/); + expect(() => + createVolumetricFog(new PerspectiveCamera(), { ...settings(), reversedDepth: true }), + ).toThrow(/depth/); + }); + it("rejects double-counted atmosphere or shafts before allocation", () => { + for (const name of ["aerialPerspective", "godRays", "sceneFog"] as const) { + const options = settings(); + options.environment[name] = true; + expect(() => createVolumetricFog(new PerspectiveCamera(), options)).toThrow(/same medium/); + } + }); + it("rejects invalid density, bounds, albedo and phase", () => { + const options = settings(); + required(options.volumes[0]).density = -1; + expect(() => createVolumetricFog(new PerspectiveCamera(), options)).toThrow(/density/); + required(options.volumes[0]).density = 0.2; + required(options.volumes[0]).bounds.makeEmpty(); + expect(() => createVolumetricFog(new PerspectiveCamera(), options)).toThrow(/bounds/); + expect(() => + createVolumetricFog(new PerspectiveCamera(), { ...settings(), anisotropy: 1 }), + ).toThrow(/anisotropy/); + expect(() => + createVolumetricFog(new PerspectiveCamera(), { ...settings(), albedo: new Color(2, 0, 0) }), + ).toThrow(/albedo/); + }); + it("refuses missing directional maps and unsupported local-light shadows", () => { + const sun = new DirectionalLight(); + sun.castShadow = true; + expect(() => createVolumetricFog(new PerspectiveCamera(), { ...settings(), sun })).toThrow( + /shadow map/, + ); + const point = new PointLight(); + expect(() => + createVolumetricFog(new PerspectiveCamera(), { ...settings(), points: [point] }), + ).toThrow(/finite-range/); + point.distance = 5; + point.castShadow = true; + expect(() => + createVolumetricFog(new PerspectiveCamera(), { ...settings(), points: [point] }), + ).toThrow(/unshadowed/); + }); + it("owns no history and disposes its own target and material exactly once", () => { + const camera = new PerspectiveCamera(); + const fog = required(createVolumetricFog(camera, settings())); + const scenePass = pass(new Scene(), camera); + expect(fog.compose(scenePass)).toBeDefined(); + expect(fog.diagnostics()).toMatchObject({ + steps: 32, + resolutionScale: 1, + history: false, + volumes: 1, + localLights: 0, + }); + const targetDispose = vi.spyOn(required(fog.target), "dispose"); + const materialDispose = vi.spyOn(required(fog.material), "dispose"); + const depthDispose = vi.spyOn(required(scenePass.renderTarget.depthTexture), "dispose"); + fog.dispose(); + fog.dispose(); + expect(targetDispose).toHaveBeenCalledTimes(1); + expect(materialDispose).toHaveBeenCalledTimes(1); + expect(depthDispose).not.toHaveBeenCalled(); + expect(() => fog.compose(scenePass)).toThrow(/disposed/); + scenePass.dispose(); + }); +}); + +it.each([false, true])("builds the actual depth-clipped transport WGSL (lights=%s)", (lights) => { + const camera = new PerspectiveCamera(); + const options = settings(); + if (lights) { + const sun = new DirectionalLight(); + sun.castShadow = true; + sun.shadow.map = new RenderTarget(32, 32); + sun.shadow.map.depthTexture = new DepthTexture(32, 32); + options.sun = sun; + options.points = [new PointLight(0xffffff, 1, 4)]; + } + const fog = required(createVolumetricFog(camera, options)); + const scenePass = pass(new Scene(), camera); + fog.compose(scenePass); + const object = new Mesh(new BoxGeometry(), new MeshBasicMaterial()); + const renderer = { + backend: { + isWebGPUBackend: true, + capabilities: { getUniformBufferLimit: () => 65_536 }, + utils: { getTextureSampleData: () => ({ primarySamples: 1 }) }, + }, + coordinateSystem: 2001, + hasCompatibility: () => true, + hasFeature: () => false, + getRenderTarget: () => null, + getOutputBufferType: () => 1016, + samples: 0, + getMRT: () => null, + library: { fromMaterial: () => null }, + shadowMap: { enabled: true, type: 1 }, + }; + const builder = new WGSLNodeBuilder(object, renderer as never) as unknown as { + camera: PerspectiveCamera; + setShaderStage(stage: string): void; + flowStagesNode(node: Node, output: string): { code: string }; + }; + builder.camera = camera; + builder.setShaderStage("fragment"); + const flow = builder.flowStagesNode(required(fog.transport), "vec4"); + expect(flow.code).toContain("exp("); + expect(flow.code).toContain("for ("); + expect(flow.code).toContain("32"); + if (lights) expect(flow.code).toContain("textureSampleCompare"); + fog.dispose(); + scenePass.dispose(); + options.sun?.shadow.map?.dispose(); +}); diff --git a/packages/create-threenative/templates/starter/src/render/volumetricFog.ts b/packages/create-threenative/templates/starter/src/render/volumetricFog.ts new file mode 100644 index 0000000000..8fcbf8073a --- /dev/null +++ b/packages/create-threenative/templates/starter/src/render/volumetricFog.ts @@ -0,0 +1,349 @@ +// Generated for you: opt-in Three.js, with no default tier or picture change. +// Compose this medium before exposure/bloom/output. Disable its scene fog, aerial haze and +// god rays; a separate clear-air sky remains valid. Density/phase/colour belong to this game. +// Pinned Three 0.185.1 VolumeNodeMaterial skips directional lights and couples extinction to +// illumination. This bounded integrator reuses GodraysNode's depth/shadow coordinates instead. +import { + type Box3, + type Color, + type DirectionalLight, + HalfFloatType, + NearestFilter, + type PerspectiveCamera, + type PointLight, + Vector3, +} from "three"; +import { + Fn, + If, + Loop, + float, + getViewPosition, + lightShadowMatrix, + max, + min, + type pass, + reference, + rtt, + screenUV, + texture, + uniform, + vec2, + vec3, + vec4, +} from "three/tsl"; +import type { Node, NodeMaterial, RenderTarget } from "three/webgpu"; + +type ScenePass = ReturnType; +type FogTexture = ReturnType & { + renderTarget: RenderTarget; + _quadMesh: { material: NodeMaterial }; +}; +export interface IFogVolume { + bounds: Box3; + /** Extinction per metre at/below baseHeight, independent of light intensity. */ + density: number; + baseHeight: number; + heightFalloff: number; +} +export interface IVolumetricFogOptions { + enabled: boolean; + renderer: string; + /** Explicit unqualified budget, 8–128. No automatic tier admission before measurements. */ + steps: number; + resolutionScale: number; + volumes: IFogVolume[]; + albedo: Color; + ambient: Color; + anisotropy: number; + sun?: DirectionalLight; + /** At most four unshadowed finite-range PointLights; spot/cube shadows are excluded. */ + points?: PointLight[]; + logarithmicDepth?: boolean; + reversedDepth?: boolean; + environment: { aerialPerspective: boolean; godRays: boolean; sceneFog: boolean }; +} +function finite(name: string, value: number, low: number, high = Number.POSITIVE_INFINITY): void { + if (!Number.isFinite(value) || value < low || value > high) + throw new Error(`volumetricFog: ${name} must be finite in [${low}, ${high}].`); +} +function validateVolumes(volumes: IFogVolume[]): void { + if (volumes.length > 8) throw new Error("volumetricFog: at most eight bounds."); + for (const volume of volumes) { + finite("density", volume.density, 0); + finite("heightFalloff", volume.heightFalloff, 0); + finite("baseHeight", volume.baseHeight, Number.NEGATIVE_INFINITY); + const { min: low, max: high } = volume.bounds; + if ( + ![...low, ...high].every(Number.isFinite) || + low.x >= high.x || + low.y >= high.y || + low.z >= high.z + ) + throw new Error("volumetricFog: bounds need finite positive extent."); + } +} +function validateOptions(camera: PerspectiveCamera, options: IVolumetricFogOptions): void { + if (!camera.isPerspectiveCamera) throw new Error("volumetricFog: perspective camera required."); + if (options.logarithmicDepth || options.reversedDepth) + throw new Error("volumetricFog: only ordinary perspective depth is qualified for this graph."); + finite("steps", options.steps, 8, 128); + if (!Number.isInteger(options.steps)) throw new Error("volumetricFog: steps must be integer."); + if (options.resolutionScale !== 1 && options.resolutionScale !== 0.5) + throw new Error("volumetricFog: resolutionScale must be 1 or 0.5."); + finite("anisotropy", options.anisotropy, -0.9, 0.9); + validateVolumes(options.volumes); + for (const channel of options.albedo.toArray()) finite("albedo", channel, 0, 1); + for (const channel of options.ambient.toArray()) finite("ambient", channel, 0); + if (Object.values(options.environment).some(Boolean)) + throw new Error( + "volumetricFog: disable aerial perspective, scene fog and god rays for the same medium.", + ); + const sun = options.sun; + if ( + sun !== undefined && + (!sun.castShadow || sun.shadow.map?.depthTexture == null || sun.shadow.shadowNode != null) + ) + throw new Error("volumetricFog: sun needs an initialized ordinary directional shadow map."); + const points = options.points ?? []; + if (points.length > 4) throw new Error("volumetricFog: at most four local lights."); + for (const point of points) { + if ( + !point.isPointLight || + point.castShadow || + !Number.isFinite(point.distance) || + point.distance <= 0 + ) + throw new Error("volumetricFog: local lights must be unshadowed finite-range PointLights."); + finite("point decay", point.decay, 0, 4); + } +} +function lightRadiance(light: DirectionalLight | PointLight) { + const value = new Vector3(); + return uniform(value).onRenderUpdate(() => + value + .set(light.color.r, light.color.g, light.color.b) + .multiplyScalar(light.visible ? light.intensity : 0), + ); +} + +/** Off, unsupported and zero-density return before allocating any graph/target/material. */ +export function createVolumetricFog(camera: PerspectiveCamera, supplied: IVolumetricFogOptions) { + if (!supplied.enabled || supplied.renderer !== "webgpu") return undefined; + const options = { ...supplied }; + validateOptions(camera, options); + const volumes = options.volumes.filter((volume) => volume.density > 0); + if (volumes.length === 0) return undefined; + const bounds = volumes.map((volume) => ({ + ...volume, + low: uniform(volume.bounds.min.clone()), + high: uniform(volume.bounds.max.clone()), + })); + const cameraMatrix = uniform(camera.matrixWorld); + const inverseProjection = uniform(camera.projectionMatrixInverse); + const cameraPosition = new Vector3(); + const origin = uniform(cameraPosition).onRenderUpdate(() => + camera.getWorldPosition(cameraPosition), + ); + const ambient = uniform(new Vector3(options.ambient.r, options.ambient.g, options.ambient.b)); + const albedo = uniform(new Vector3(options.albedo.r, options.albedo.g, options.albedo.b)); + const sun = options.sun; + const shadowDepth = sun?.shadow.map?.depthTexture; + const directionValue = new Vector3(); + const targetValue = new Vector3(); + const sunDirection = + sun === undefined + ? undefined + : uniform(directionValue).onRenderUpdate(() => + sun + .getWorldPosition(directionValue) + .sub(sun.target.getWorldPosition(targetValue)) + .normalize(), + ); + const sunRadiance = sun === undefined ? undefined : lightRadiance(sun); + const localLights = (options.points ?? []).map((point) => { + const position = new Vector3(); + return { + point, + radiance: lightRadiance(point), + position: uniform(position).onRenderUpdate(() => point.getWorldPosition(position)), + }; + }); + const phase = (cosine: Node<"float">) => + float(1 - options.anisotropy ** 2).div( + float(1 + options.anisotropy ** 2) + .sub(cosine.mul(2 * options.anisotropy)) + .pow(1.5) + .mul(4 * Math.PI), + ); + let scratch: FogTexture | undefined; + let transport: Node<"vec4"> | undefined; + let disposed = false; + return { + get target(): RenderTarget | undefined { + return scratch?.renderTarget; + }, + get material(): NodeMaterial | undefined { + return scratch?._quadMesh.material; + }, + get transport(): Node<"vec4"> | undefined { + return transport; + }, + diagnostics: () => ({ + steps: options.steps, + resolutionScale: options.resolutionScale, + volumes: volumes.length, + localLights: localLights.length, + history: false, + renderTargets: scratch === undefined ? 0 : 1, + pixels: scratch === undefined ? 0 : scratch.renderTarget.width * scratch.renderTarget.height, + disposed, + }), + compose(scenePass: ScenePass): Node<"vec4"> { + if (disposed) throw new Error("volumetricFog: disposed controller."); + if (scratch !== undefined) throw new Error("volumetricFog: compose once per owned graph."); + if (scenePass.camera !== camera) + throw new Error("volumetricFog: scene depth must come from this camera."); + if (Reflect.get(scenePass.scene, "fog") != null) + throw new Error("volumetricFog: scene fog duplicates the same medium."); + const depth = scenePass.getTextureNode("depth"); + const scene = scenePass.getTextureNode("output"); + const integrate = Fn(() => { + const endpoint = cameraMatrix.mul( + vec4(getViewPosition(screenUV, depth.r, inverseProjection), 1), + ).xyz; + const toSurface = endpoint.sub(origin).toVar(); + const distance = toSurface.length().max(0.000001).toVar(); + const direction = toSurface.div(distance).toVar(); + const safeDirection = direction + .greaterThanEqual(0) + .select(direction.abs().max(0.000001), direction.abs().max(0.000001).negate()); + const near = distance.toVar(); + const far = float(0).toVar(); + for (const volume of bounds) { + const a = volume.low.sub(origin).div(safeDirection); + const b = volume.high.sub(origin).div(safeDirection); + const entry = min(a, b); + const exit = max(a, b); + const start = max(max(entry.x, entry.y), max(entry.z, 0)); + const end = min(min(exit.x, exit.y), min(exit.z, distance)); + If(end.greaterThan(start), () => { + near.assign(min(near, start)); + far.assign(max(far, end)); + }); + } + const transmission = float(1).toVar(); + const scattering = vec3(0).toVar(); + If(far.greaterThan(near), () => { + const ds = far.sub(near).div(options.steps).toVar(); + Loop(options.steps, ({ i }) => { + const position = origin.add(direction.mul(near.add(float(i).add(0.5).mul(ds)))).toVar(); + const extinction = float(0).toVar(); + for (const volume of bounds) { + If( + position + .greaterThanEqual(volume.low) + .all() + .and(position.lessThanEqual(volume.high).all()), + () => { + extinction.addAssign( + position.y + .sub(volume.baseHeight) + .max(0) + .mul(-volume.heightFalloff) + .exp() + .mul(volume.density), + ); + }, + ); + } + const illumination = vec3(ambient).toVar(); + if ( + sun !== undefined && + shadowDepth != null && + sunDirection !== undefined && + sunRadiance !== undefined + ) { + const projected = lightShadowMatrix(sun).mul(vec4(position, 1)); + const coordinate = projected.xyz.div(projected.w).toVar(); + const visibility = float(0).toVar(); + If( + coordinate.greaterThanEqual(0).all().and(coordinate.lessThanEqual(1).all()), + () => { + visibility.assign( + texture(shadowDepth, vec2(coordinate.x, coordinate.y.oneMinus())).compare( + coordinate.z.add(reference("bias", "float", sun.shadow)), + ), + ); + }, + ); + illumination.addAssign( + sunRadiance.mul(phase(direction.dot(sunDirection))).mul(visibility), + ); + } + for (const local of localLights) { + const toLight = local.position.sub(position); + const radius = toLight.length().max(0.01); + const attenuation = radius + .div(local.point.distance) + .pow(4) + .oneMinus() + .max(0) + .pow(2) + .div(radius.pow(local.point.decay)); + illumination.addAssign( + local.radiance.mul(attenuation).mul(phase(direction.dot(toLight.div(radius)))), + ); + } + // Exact homogeneous-step solution. Extinction persists when every light is off. + const stepTransmission = extinction.mul(ds).negate().exp(); + scattering.addAssign( + transmission.mul(stepTransmission.oneMinus()).mul(albedo).mul(illumination), + ); + transmission.mulAssign(stepTransmission); + }); + }); + return vec4(scattering, transmission); + }); + transport = integrate(); + const rendered = rtt(transport, null, null, { + depthBuffer: false, + type: HalfFloatType, + minFilter: NearestFilter, + magFilter: NearestFilter, + }) as FogTexture; + scratch = rendered; + rendered.setResolutionScale(options.resolutionScale); + const sizeValue = new Vector3(); + const size = uniform(sizeValue).onRenderUpdate(() => + sizeValue.set(rendered.renderTarget.width, rendered.renderTarget.height, 0), + ); + return Fn(() => { + const result = rendered.sample(screenUV).toVar(); + // Half-resolution nearest sampling cannot blend fog across a wall. At a depth mismatch, + // integrate the full-resolution pixel instead; do not borrow stale/foreground history. + if (options.resolutionScale < 1) { + const lowUV = screenUV.mul(size.xy).floor().add(0.5).div(size.xy); + const fullZ = getViewPosition(screenUV, depth.r, inverseProjection).z; + const lowZ = getViewPosition(lowUV, depth.sample(lowUV).r, inverseProjection).z; + If( + fullZ + .sub(lowZ) + .abs() + .greaterThan(max(fullZ.abs().mul(0.01), 0.01)), + () => result.assign(integrate()), + ); + } + return vec4(scene.rgb.mul(result.a).add(result.rgb), scene.a); + })(); + }, + dispose(): void { + if (disposed) return; + disposed = true; + scratch?.renderTarget.dispose(); + scratch?._quadMesh.material.dispose(); + scratch = undefined; + transport = undefined; + }, + }; +} diff --git a/scripts/__tests__/verify-volumetric-fog.spec.ts b/scripts/__tests__/verify-volumetric-fog.spec.ts new file mode 100644 index 0000000000..fe7199bd43 --- /dev/null +++ b/scripts/__tests__/verify-volumetric-fog.spec.ts @@ -0,0 +1,59 @@ +import { mkdtemp, rm, writeFile } from "node:fs/promises"; +import os from "node:os"; +import path from "node:path"; +import { describe, expect, it } from "vitest"; +import { loadPlaytestScenario } from "../../packages/playtest/dist/index.js"; +import { fogCaptureIsValid, fogCaptureScenario } from "../verify-volumetric-fog.js"; + +describe("volumetric fog runtime evidence", () => { + it("rejects software device loss even when the runner reports a pass", () => { + const good = { + pass: true, + capture: { + rendererKind: "webgpu", + adapter: { description: "SwiftShader" }, + viewport: { width: 640, height: 400 }, + }, + diagnostics: [], + }; + expect(fogCaptureIsValid(good)).toBe(true); + expect( + fogCaptureIsValid({ + ...good, + diagnostics: [{ code: "TN_PLAYTEST_SOFTWARE_DEVICE_LOST", severity: "warning" }], + }), + ).toBe(false); + expect( + fogCaptureIsValid({ ...good, diagnostics: [{ code: "UNRELATED_ERROR", severity: "error" }] }), + ).toBe(false); + expect(fogCaptureIsValid({ ...good, capture: undefined })).toBe(false); + expect(fogCaptureIsValid({ ...good, capture: { rendererKind: "webgl2" } })).toBe(false); + expect(fogCaptureIsValid({ ...good, capture: { ...good.capture, adapter: {} } })).toBe(false); + expect( + fogCaptureIsValid({ + ...good, + capture: { ...good.capture, viewport: { width: 1, height: 1 } }, + }), + ).toBe(false); + expect(fogCaptureIsValid({ ...good, pass: false })).toBe(false); + }); + it("loads the generated pixel-bearing scenario with the public validator", async () => { + const root = await mkdtemp(path.join(os.tmpdir(), "vq07-scenario-")); + try { + const file = path.join(root, "fog.playtest.json"); + await writeFile(file, JSON.stringify(fogCaptureScenario("fog", "KeyF"))); + const scenario = await loadPlaytestScenario(root, file); + expect(scenario.assert?.visual).toHaveLength(1); + expect(scenario.artifacts?.screenshots).toBe("after"); + } finally { + await rm(root, { recursive: true, force: true }); + } + }); + it("loads the committed repeated-lifecycle scenario", async () => { + const scenario = await loadPlaytestScenario( + process.cwd(), + "examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json", + ); + expect(scenario.steps).toHaveLength(8); + }); +}); diff --git a/scripts/verify-volumetric-fog.ts b/scripts/verify-volumetric-fog.ts new file mode 100644 index 0000000000..36dc1ddd32 --- /dev/null +++ b/scripts/verify-volumetric-fog.ts @@ -0,0 +1,173 @@ +import { execFileSync } from "node:child_process"; +import { mkdir, readFile, writeFile } from "node:fs/promises"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; +import { PNG } from "pngjs"; +import { loadPlaytestScenario } from "../packages/playtest/dist/index.js"; +// Use the built public runner: source-runner browser callbacks under tsx may capture __name. +import { + WEBGPU_BROWSER_ARGS, + runStandalonePlaytest, +} from "../packages/playtest/dist/runner/index.js"; + +const root = fileURLToPath(new URL("..", import.meta.url)); +const fixture = path.join(root, "examples/abyss-framework/vq-fog"); +const artifacts = path.join(root, "artifacts/volumetric-fog"); +const cases = [ + ["off", "KeyO"], + ["zero", "KeyZ"], + ["fog", "KeyF"], + ["inside", "KeyI"], + ["sunOff", "KeyS"], + ["pointOff", "KeyP"], + ["overlap", "KeyB"], + ["half", "KeyH"], + ["wallOff", "KeyW"], +] as const; + +export function fogCaptureScenario(mode: string, key: string) { + return { + schemaVersion: 1, + name: `vq-volumetric-fog-${mode}`, + target: "web", + viewport: { width: 640, height: 400 }, + warmupFrames: 60, + steps: [ + { press: [key], holdTicks: 1, release: true }, + { kind: "wait", waitFrames: 60 }, + ], + assert: { + components: [ + { + entity: "fog", + component: "ready", + equals: true, + allowTrivial: "Capture only the ready graph.", + }, + { + entity: "fog", + component: "mode", + equals: mode, + allowTrivial: "A fixed named variant is the screenshot subject.", + }, + { + entity: "fog", + component: "targets", + equals: mode === "off" || mode === "zero" ? 0 : 1, + allowTrivial: "Observe the owned allocation baseline for this variant.", + }, + ], + diagnostics: { noConsoleErrors: true, noRuntimeDiagnostics: true, runtimeReady: true }, + visual: [{ region: { x: 0, y: 0, width: 640, height: 400, minNonblankPixelRatio: 0.05 } }], + }, + artifacts: { screenshots: "after", console: true, runtimeTrace: true }, + }; +} + +export function fogCaptureIsValid(report: { + pass: boolean; + capture?: { + rendererKind?: string; + adapter?: Record; + viewport?: { width: number; height: number }; + }; + diagnostics: readonly { code: string; severity: string }[]; +}): boolean { + return ( + report.pass && + report.capture?.rendererKind === "webgpu" && + report.capture.viewport?.width === 640 && + report.capture.viewport.height === 400 && + Object.values(report.capture.adapter ?? {}).some( + (value) => value.trim() !== "" && !/^(unknown|unavailable)$/i.test(value), + ) && + !report.diagnostics.some( + (diagnostic) => + diagnostic.severity === "error" || diagnostic.code === "TN_PLAYTEST_SOFTWARE_DEVICE_LOST", + ) + ); +} + +async function main(): Promise { + await mkdir(artifacts, { recursive: true }); + const dirty = execFileSync("git", ["status", "--porcelain"], { + cwd: root, + encoding: "utf8", + }).trim(); + if (dirty !== "") + throw new Error("VQ07 captures require a clean committed source tree for SHA provenance."); + const sourceSha = execFileSync("git", ["rev-parse", "HEAD"], { + cwd: root, + encoding: "utf8", + }).trim(); + const results: Record[] = []; + const summary = { + sourceSha, + qualification: + "Software correctness captures only; no hardware performance or native claim. Wall/shaft appearance awaits pixel inspection.", + results, + }; + try { + for (const [mode, key] of cases) { + const directory = path.join(artifacts, mode); + await mkdir(directory, { recursive: true }); + const scenarioPath = path.join(directory, "scenario.playtest.json"); + await writeFile(scenarioPath, `${JSON.stringify(fogCaptureScenario(mode, key), null, 2)}\n`); + await loadPlaytestScenario(root, scenarioPath); + const report = await runStandalonePlaytest({ + artifactDirectory: directory, + projectPath: fixture, + scenarioPath, + target: "browser", + headless: false, + allowSoftwareAdapter: true, + browserArgs: WEBGPU_BROWSER_ARGS, + port: 0, + url: "http://127.0.0.1:5173/", + timeoutMs: 120_000, + trace: false, + server: { + cwd: root, + command: + "node examples/abyss-framework/node_modules/vite/bin/vite.js preview --config examples/abyss-framework/vq-fog/vite.config.ts --host 127.0.0.1 --port ${PORT}", + timeoutMs: 60_000, + }, + }); + await writeFile(path.join(directory, "report.json"), `${JSON.stringify(report, null, 2)}\n`); + await writeFile( + path.join(directory, "observations.json"), + `${JSON.stringify(report.observations, null, 2)}\n`, + ); + const valid = fogCaptureIsValid(report); + results.push({ + mode, + sourceSha, + pass: valid, + capture: report.capture, + diagnostics: report.diagnostics, + }); + await writeFile( + path.join(artifacts, "summary.json"), + `${JSON.stringify(summary, null, 2)}\n`, + ); + if (!valid) + throw new Error( + `VQ07 ${mode}: rejected runtime/capture diagnostics; preserve artifacts as diagnostic only.`, + ); + await readFile(path.join(directory, "after.png")); + } + const off = PNG.sync.read(await readFile(path.join(artifacts, "off/after.png"))); + const zero = PNG.sync.read(await readFile(path.join(artifacts, "zero/after.png"))); + if (off.width !== zero.width || off.height !== zero.height || !off.data.equals(zero.data)) + throw new Error("VQ07 zero-density identity failed: rendered off/zero pixels differ."); + results.push({ assertion: "zero-density pixel identity", pass: true }); + } finally { + await writeFile(path.join(artifacts, "summary.json"), `${JSON.stringify(summary, null, 2)}\n`); + } +} +if ( + process.argv[1] !== undefined && + path.resolve(process.argv[1]) === fileURLToPath(import.meta.url) +) { + await main(); +} From 76db7cc7fd63fea9c60f877363e606b591c9a86d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Paulo=20Furtado?= <30300459+jonit-dev@users.noreply.github.com> Date: Fri, 2 Oct 2026 02:30:33 -0700 Subject: [PATCH 06/41] test(vq07): preserve baseline screenshot and identify failed HTTP resources --- .../PRD-VQ-07-volumetric-fog.md | 2 + .../vq07-progress/1bb878e03/off-baseline.png | Bin 0 -> 28892 bytes .../vq07-progress/1bb878e03/provenance.json | 43 ++++++++++++++++++ .../abyss-framework/vq-fog/vite.config.ts | 23 ++++++++++ scripts/verify-volumetric-fog.ts | 1 + 5 files changed, 69 insertions(+) create mode 100644 docs/verification/vq07-progress/1bb878e03/off-baseline.png create mode 100644 docs/verification/vq07-progress/1bb878e03/provenance.json diff --git a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md index 9be2cac4c1..39f9682aae 100644 --- a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md +++ b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md @@ -80,3 +80,5 @@ Fog implementation checkpoint: opt-in generated `templates/starter/src/render/vo Fresh proof: the fog and verifier contract suites pass 23/23, including generation of the actual depth/shadow transport WGSL with/without lights; focused strict source/test/fixture/verifier typechecks and the production Vite fixture build pass. These are not rendered-pixel tests: analytic/wall-depth image proof and all Phase 3 qualification remain open. The hosted `integration-volumetric-fog.yml` uses the built public playtest runner for actual canvas captures and adapter/source-SHA provenance, rejects software device loss, and retains diagnostic captures on failure. The local executor has no display tooling and its Unix-socket restriction was verified, so local screenshot execution was not attempted through an alternate route. Scaffold validation initially failed only its whole-tree byte snapshot because the deliberate shared lifetime changes affect all thirteen kits and the new optional fog file affects starter. After inspecting that source-only delta, the expected generated-tree hashes were refreshed with an inline rationale; the unchanged starter-copy assertions now include the new file. The full scaffold suite passes 66/66. Fog/verifier plus CI structure/needs suites pass 164/164; relative documentation-link checks pass. No runtime evidence is inferred from these checks. + +Actual diagnostic progress: [hosted run 36989192897](https://github.com/ThreeNativeHQ/threenative/actions/runs/36989192897) rendered the off baseline at source `1bb878e033d29e084b912bc9266a15b72d6cbf16`, Chromium WebGPU / Google SwiftShader / 640×400. The [unchanged captured PNG](../../verification/vq07-progress/1bb878e03/off-baseline.png) and [provenance](../../verification/vq07-progress/1bb878e03/provenance.json) are retained for the requested progress screenshots. The run failed closed on one HTTP404 console error; all baseline image/component assertions passed, but fog-on variants did not run. This is diagnostic baseline progress, not fog qualification or a hardware/native claim. The first report omitted the failing resource URL; fixture-only preview diagnostics now record HTTP error status and URL without relaxing the error gate. diff --git a/docs/verification/vq07-progress/1bb878e03/off-baseline.png b/docs/verification/vq07-progress/1bb878e03/off-baseline.png new file mode 100644 index 0000000000000000000000000000000000000000..e4d4f428459ba3e911747efb769a3330b91a8b4a GIT binary patch literal 28892 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 { + response.on("finish", () => { + if (response.statusCode >= 400) + appendFileSync( + log, + `${JSON.stringify({ url: request.url, status: response.statusCode })}\n`, + ); + }); + next(); + }); + }, + }, + ], }); diff --git a/scripts/verify-volumetric-fog.ts b/scripts/verify-volumetric-fog.ts index 36dc1ddd32..9e1d5fcdbb 100644 --- a/scripts/verify-volumetric-fog.ts +++ b/scripts/verify-volumetric-fog.ts @@ -129,6 +129,7 @@ async function main(): Promise { server: { cwd: root, command: + `VQ_FOG_HTTP_LOG=${JSON.stringify(path.join(directory, "http-errors.jsonl"))} ` + "node examples/abyss-framework/node_modules/vite/bin/vite.js preview --config examples/abyss-framework/vq-fog/vite.config.ts --host 127.0.0.1 --port ${PORT}", timeoutMs: 60_000, }, From 4f8fe47b1801282827c9b5d0f0cba40b99c7c2a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Paulo=20Furtado?= <30300459+jonit-dev@users.noreply.github.com> Date: Fri, 2 Oct 2026 02:34:58 -0700 Subject: [PATCH 07/41] fix(vq07): avoid the confirmed missing favicon request --- .../PRD-VQ-07-volumetric-fog.md | 2 ++ examples/abyss-framework/vq-fog/index.html | 2 +- scripts/__tests__/verify-volumetric-fog.spec.ts | 7 ++++++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md index 39f9682aae..aecd495ab4 100644 --- a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md +++ b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md @@ -82,3 +82,5 @@ Fresh proof: the fog and verifier contract suites pass 23/23, including generati Scaffold validation initially failed only its whole-tree byte snapshot because the deliberate shared lifetime changes affect all thirteen kits and the new optional fog file affects starter. After inspecting that source-only delta, the expected generated-tree hashes were refreshed with an inline rationale; the unchanged starter-copy assertions now include the new file. The full scaffold suite passes 66/66. Fog/verifier plus CI structure/needs suites pass 164/164; relative documentation-link checks pass. No runtime evidence is inferred from these checks. Actual diagnostic progress: [hosted run 36989192897](https://github.com/ThreeNativeHQ/threenative/actions/runs/36989192897) rendered the off baseline at source `1bb878e033d29e084b912bc9266a15b72d6cbf16`, Chromium WebGPU / Google SwiftShader / 640×400. The [unchanged captured PNG](../../verification/vq07-progress/1bb878e03/off-baseline.png) and [provenance](../../verification/vq07-progress/1bb878e03/provenance.json) are retained for the requested progress screenshots. The run failed closed on one HTTP404 console error; all baseline image/component assertions passed, but fog-on variants did not run. This is diagnostic baseline progress, not fog qualification or a hardware/native claim. The first report omitted the failing resource URL; fixture-only preview diagnostics now record HTTP error status and URL without relaxing the error gate. + +The unchanged-HTML diagnostic rerun [36990205268](https://github.com/ThreeNativeHQ/threenative/actions/runs/36990205268) identifies the exact failed resource in `off/http-errors.jsonl`: `/favicon.ico`, HTTP404. The fixture now uses the repository's existing inline-favicon convention. Its new source regression failed first; fog/verifier tests then pass 24/24 and the production bundle builds. No error assertion was weakened. The next hosted run must verify that this removes the console failure and reaches fog-on capture. diff --git a/examples/abyss-framework/vq-fog/index.html b/examples/abyss-framework/vq-fog/index.html index 28ef8c9a6a..9932a858a4 100644 --- a/examples/abyss-framework/vq-fog/index.html +++ b/examples/abyss-framework/vq-fog/index.html @@ -1,2 +1,2 @@ -VQ07 bounded fog fixture +VQ07 bounded fog fixture diff --git a/scripts/__tests__/verify-volumetric-fog.spec.ts b/scripts/__tests__/verify-volumetric-fog.spec.ts index fe7199bd43..e9ba000775 100644 --- a/scripts/__tests__/verify-volumetric-fog.spec.ts +++ b/scripts/__tests__/verify-volumetric-fog.spec.ts @@ -1,4 +1,4 @@ -import { mkdtemp, rm, writeFile } from "node:fs/promises"; +import { mkdtemp, readFile, rm, writeFile } from "node:fs/promises"; import os from "node:os"; import path from "node:path"; import { describe, expect, it } from "vitest"; @@ -57,3 +57,8 @@ describe("volumetric fog runtime evidence", () => { expect(scenario.steps).toHaveLength(8); }); }); + +it("uses an inline favicon instead of the confirmed missing /favicon.ico", async () => { + const html = await readFile("examples/abyss-framework/vq-fog/index.html", "utf8"); + expect(html).toMatch(//); +}); From a5ff6ff0d110c1a507045b726723c76131e1ce1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Paulo=20Furtado?= <30300459+jonit-dev@users.noreply.github.com> Date: Fri, 2 Oct 2026 02:46:28 -0700 Subject: [PATCH 08/41] docs(vq07): preserve actual fog variant screenshots and provenance --- .../PRD-VQ-07-volumetric-fog.md | 2 + .../vq07-progress/4f8fe47b1/fog.png | Bin 0 -> 42747 bytes .../vq07-progress/4f8fe47b1/half.png | Bin 0 -> 36554 bytes .../vq07-progress/4f8fe47b1/inside.png | Bin 0 -> 76219 bytes .../vq07-progress/4f8fe47b1/off.png | Bin 0 -> 28892 bytes .../vq07-progress/4f8fe47b1/overlap.png | Bin 0 -> 42750 bytes .../vq07-progress/4f8fe47b1/pointOff.png | Bin 0 -> 33309 bytes .../vq07-progress/4f8fe47b1/provenance.json | 293 ++++++++++++++++++ .../vq07-progress/4f8fe47b1/sunOff.png | Bin 0 -> 36588 bytes .../vq07-progress/4f8fe47b1/wallOff.png | Bin 0 -> 43828 bytes .../vq07-progress/4f8fe47b1/zero.png | Bin 0 -> 28892 bytes 11 files changed, 295 insertions(+) create mode 100644 docs/verification/vq07-progress/4f8fe47b1/fog.png create mode 100644 docs/verification/vq07-progress/4f8fe47b1/half.png create mode 100644 docs/verification/vq07-progress/4f8fe47b1/inside.png create mode 100644 docs/verification/vq07-progress/4f8fe47b1/off.png create mode 100644 docs/verification/vq07-progress/4f8fe47b1/overlap.png create mode 100644 docs/verification/vq07-progress/4f8fe47b1/pointOff.png create mode 100644 docs/verification/vq07-progress/4f8fe47b1/provenance.json create mode 100644 docs/verification/vq07-progress/4f8fe47b1/sunOff.png create mode 100644 docs/verification/vq07-progress/4f8fe47b1/wallOff.png create mode 100644 docs/verification/vq07-progress/4f8fe47b1/zero.png diff --git a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md index aecd495ab4..3d9cbcb52d 100644 --- a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md +++ b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md @@ -84,3 +84,5 @@ Scaffold validation initially failed only its whole-tree byte snapshot because t Actual diagnostic progress: [hosted run 36989192897](https://github.com/ThreeNativeHQ/threenative/actions/runs/36989192897) rendered the off baseline at source `1bb878e033d29e084b912bc9266a15b72d6cbf16`, Chromium WebGPU / Google SwiftShader / 640×400. The [unchanged captured PNG](../../verification/vq07-progress/1bb878e03/off-baseline.png) and [provenance](../../verification/vq07-progress/1bb878e03/provenance.json) are retained for the requested progress screenshots. The run failed closed on one HTTP404 console error; all baseline image/component assertions passed, but fog-on variants did not run. This is diagnostic baseline progress, not fog qualification or a hardware/native claim. The first report omitted the failing resource URL; fixture-only preview diagnostics now record HTTP error status and URL without relaxing the error gate. The unchanged-HTML diagnostic rerun [36990205268](https://github.com/ThreeNativeHQ/threenative/actions/runs/36990205268) identifies the exact failed resource in `off/http-errors.jsonl`: `/favicon.ico`, HTTP404. The fixture now uses the repository's existing inline-favicon convention. Its new source regression failed first; fog/verifier tests then pass 24/24 and the production bundle builds. No error assertion was weakened. The next hosted run must verify that this removes the console failure and reaches fog-on capture. + +First successful actual fog captures: [run 36990624761](https://github.com/ThreeNativeHQ/threenative/actions/runs/36990624761), source `4f8fe47b1801282827c9b5d0f0cba40b99c7c2a7`, Chromium WebGPU / Google SwiftShader / 640×400. All nine named variants passed with empty diagnostic lists, and off/zero images were pixel-identical. The unchanged [fog-on PNG](../../verification/vq07-progress/4f8fe47b1/fog.png), [inside-volume PNG](../../verification/vq07-progress/4f8fe47b1/inside.png), [off baseline](../../verification/vq07-progress/4f8fe47b1/off.png) and [all-variant provenance](../../verification/vq07-progress/4f8fe47b1/provenance.json) are retained. Visual inspection confirms bounded mist and light response. The fixed wall-center patch (x184, y216, 18×18) has exactly zero changed pixels against off; full/half fog mean absolute difference is 0.0695/255. This is browser software-rendered correctness progress, not native or hardware-performance qualification. Same-node replacement ownership still needs a unique installation receipt; a green screenshot run does not close that review finding. diff --git a/docs/verification/vq07-progress/4f8fe47b1/fog.png b/docs/verification/vq07-progress/4f8fe47b1/fog.png new file mode 100644 index 0000000000000000000000000000000000000000..93faf81b388a5558c1f51b55cb6ced7e30f455f8 GIT binary patch literal 42747 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 literal 0 HcmV?d00001 diff --git a/docs/verification/vq07-progress/4f8fe47b1/inside.png b/docs/verification/vq07-progress/4f8fe47b1/inside.png new file mode 100644 index 0000000000000000000000000000000000000000..b7183fc11e33c810e423f00aa3ab90a1fe936d7d GIT binary patch literal 76219 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%0AX{2q086H} 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 literal 0 HcmV?d00001 diff --git a/docs/verification/vq07-progress/4f8fe47b1/pointOff.png b/docs/verification/vq07-progress/4f8fe47b1/pointOff.png new file mode 100644 index 0000000000000000000000000000000000000000..7ef2846e4ba473356e89dbd36f3adc8c523cca97 GIT binary patch literal 33309 zcmeF1<9DS&v$td06Wg|v9oyKkt%+@GV%x@!ZQJG~6Kj%8oXMHzdDr;|-p}W2-L-0U zclEEj>*_mNMM)YN0UrSj3=COTMnVk?3?c{&3_KAI;-3YSB;^7Ih6W}p0nqTuz3SC& zrj$+J_f#sK>uGY+_WU#RW6J6d6(WikUTZH$NX| z)xf=`Ug7)^?Iz$ycjSbx`su5?`yN`o*z5khGin02@D~?c2q|1hqYefd6aWp%qcG57>YpANX$oXo(=`{{%q% zzX1QY2LHDY{y(+g@J~`e3<)m;xnNSbf6DqEC#VV_uvBX@_|+MUged*vpZcyyauSvE zq?r@F4L$gFI{cO-k7=mL;d~SReX|d4WjK>#A6T+L;$arIe8-X0u*L$W0(sg0$@7q{ zRucfyxk$jNrAg~$b{Rq>!BL~L2&L7m?8FEK@(N1?g;SVP5EUr?dPs`SU=+cx_MF6* z%dfD;G^F(msKsaykJ#65>0vVJ5qxO-I3G_C@q++t;E)dt<=>gx3~V9q-Dt)xzL~$$ zB`5r$7$eu6A^L@?F%fB<# zNd2D2c*5Ej?18FFgcdeS4#B9g1SCpNN|FKY^gKc{YKC#aTb)4}M*pQ0TxBt>e$B2q z;V@!XpPQFL3oftUkQ((czA>+t1EgK)_9EFm_<&d^=f=((tQ#A3B!W=!{YLUD!vB~G z14^|DojQMMsYR_`oa*{0XYfpYU3jt-7`&~WzHY+XqcG|*@P~p=UiMcDcEvatl_6bH zV|Cl=hT?KqdxGnc!Vv(VytH+igvZmM;D@4o#@f7f8_7P3g~X&kq=y&q}}TjtS#3y*ixVqgcaXNCOE z;!rsnI5YS<@iDrlMKgZ~qd6p*k)_eY@Hh-xY>d__RL!b5CJs0rn5@m#lsWxpG`(PE1bHl#O8N(d_ zvX@R#1og;B&C+as{guE=x|UlcksK~6Wj@-2OGj(R-4A(0E!?MF(fMn1E%G@_kl z0d$9yrQER#*HCVF?WJzZ^;1&}v1`u!@&IWaMsuPhVy_D}{1SFqi21Y@l2eQAeW_tD z@AJKvhcklV5SWz}MZe!6h|XnZLff0s;9la3(egYzQ{1Hb%s^KD(iw+$l9DgJ8B8-k zEF{Hx&HD2ycU8s5rN%8ITA}ynv1}Tm!{pPaGXS>zsXVKK(H0_FKo>{@YXe?lbzp36 zd;3Q?n zC{NplDR!+vbx6NS^GQYOcsMQd_V@Mts8(42<_C^C5C}QG3Okd!u~n6?WLCAJrPl+r zy)w=Jm+z?=K5$1G zv!^1J%jT)WK1{ce|ON#hM(-p-d-|)=Y65^nJrt8s31t zOfovFxB83Qp|p;00)!{S&O)N#zor@~4fVpE2M9A>;g8SbB!Ml1IEZPUHv!MPp0T6k zY<;nl=3D1259*JfBqF6bT@@QdV&eC>;TC&xChml{q_y{6vy7QP6Kd`j9EMKdEtblb zjE>XS`01C}Kamhe#aIKmZL%bOrq&5VXoAu;o36DOa3=;LlMpNEY?D2a#LZ5;)oj`3 zSdr$7aDN+yC!QY+EuUm8r2lRxj?Bup@>+tlV&yfUv z&=thev)r5W&oWzI1ivh|SMgWZl8_u$X!=lK`c7Vl!>-*&nCPykk3hbJe0k4v4md&s8Y1-bWRfEg_4y+|$5DG7xpeK5XU z>X4OpqRY*-rgOhxxEakqrz8nyG{~>DJiKWXeT*{H#*5(rG7~w?wponzBKw(~Y3qzD z7nNxZ+vf{V`~6>h?@Fpkd0ezKDX)>J`3poC#gFHI@+lhIXbxj6l_OQg-E zPnEgR%_<^-@-Kt^ol0;1E$bppZ{adJ>R{ADw->Um{ib5`b1XY}qSd$$ENmR6Ak}>Z z>DdDwGk7yc1WYP!Lo2htYN5QIs>k@b^~~&S0jYo;{fK{C{BUwY0hkaxK?~LpY6_?k zJJH;$ISpmm?|TdheDiy71CLnJ?dgg!a<;6I`#gCYJ7LXHoFyNthZ)HcL)#vUvuL5i z50*MDRMG6m^Bg|e{dgVo2HB?JaS*kXWNgCMI_qZSU-fYCF4NYHYel#)b@%le%vfd8 zPatu~mWxkfVzLYN$#C}tbQ{B`OR?^m*&*X{gEUPYF+<_=bGo&PVh2t{F)d+h6hd98 z0>b_?=usjj!GGOHgcUgH*JU&v%;A(8;;fM}b->4Wqx>25LHt1KS_$rk2B)ET+oJb} z1th~(J=bT7zmLnXy9wL2W$ppOGUN4s?}nu-={WXNk15Kw5-$PC-W7TMsR%8B@T@W% z9XHG}Y#0o5+&n(sJ6(-OE(SfVx$y9oVc&|MvR&S-U^>?zx;zhK#7FK9K7Z-!#)g9SPOfm{+d|0YWHyH3!S*`VD_yj<5yu%VEJYBs@3OUa%qy_8|@L{88{wTD9KfAk8{$Y;z_i@nZh+KO2&!9l?pwp zcOt(K${%v6Qf({enSaO=$<0`Shk z=0;a#8g?yAfrxyl4Xixjv5Wfji-e@Jz+aE;mUyGlU75-w%zPL zA-4R*wo^Yv&hoRW$cGhB&Q^nth&4ZBLe@A1stxAOO&crxR2iG4eaP= zQ3gKqu=(U}Ezs+Y0&k9gHL2vtj*aS?!USwGp$Qy4tuynr!g$Uh{N}zb40Zj%VC3lf zTpw%hp-!+drT=#N;U>X!a=G1I%awBe+YhDXSmo;utD!fPsCo=)^%7NU&jaiYAG52( zw14b_i9Z5_cJf$f2F5V#`n-MDXGcEFt`pgaBuzO0?5Cp7Dr(}EBP@=*v1d?$C5ETVI1NDbQCrz+mC&~t}9@?Ws`%xSJ_$UMFHxLQ%> zb1VUP7cK4&wB$M|M0KY53r0Q3)2kVp0Z#>R#w^Z|;PlMY>&m>xptzcJOJU-psD3HQ z{Jg%e2a7nxd$ql?jgZ|esEuKni>u!-F?>`oOGX9ffX6Nf0n3-w$ke&o~(G52;0(~?*>i(_sdppdeTGdcPc0r;f_5ABc zmW{G&y*RwrU)N+n7O}P`n>cske6B6j^N$pwM1>K&9V*cDu!(jO+6acnEHkdx0-MQv zWwuiJ(GKYA{9$+XG*YmI%T_&hm)?yHW{a*x{nHpRGt{}?Q8P*HLIaaxOfr%Ur=U^4 zl2YB&0k%fR5^erMFX+Reto(=t>W~&1IGR>1#W^dN^|i?pOKQq$a)m09J0FlwO)9(0 zg2}@P;zW+ZHqy+6Hq`(fWOcJn&b*<79=wSW9G3_;&3M9CUcC2(mNNCaeIa)hLO6|lT z$sZ0?6h_e&1Tyz^v+{TGXqB4u_aCsVlCC?h4A=11x2Ldy7}*a3#EqGZLmZNIPQ+Yk zPc1`yIUPc3a}RoTY2=eNh(ACJh_i?FrlZ-wfxEM4UzgRP^$qAl)0Z#w9lULW7zNTH z;;Un_a9t%;jQa$WP&-5Xc(I%Ph0@kc`179J_?43-7(msH8%uE$o6I;E90JirYwH%3tIes_xYaCV5t8w+%D4Z<8lAIZ@9nPE-JVn z#!-sefneXm*5}Lj&`vI-_9bQMfAAhm2mYeRmK~~H8)IBOv4sy>f%&tVmQET_Su}Qv zDVBsmtDIzwV;-hs>}N(g6P~{ipvrlVZe#Cdqop_Ffq)X&uznm>dK7Lp{*9yFpR8R@ zFHQ@Br@mvsWLa?F1F3ZF(Vn}%v$I6%JD)zl3_Q_>6{Cpx$D~($jXFcAKkwCLApht( z%d&Zc@UGwca4XJe!a8b6!0B7S)-5F}=5EkHo+moB~{LhIWYCr5C%28KRj1H22&{=%pWf431fij(>r z^;@)Uzc+HI5sIVv4DjU7vk}mQwQk4w6v&!+9COoVxei|?KH9YR_)3iM^UBPPgYoo4 z4K;BR%(qon8ecv1?N#d9S|&T~HS|oL+eyB$ZEvm0h>83moITUE+jh?a7zr%Q+|{ir z18&Twu_HcFlAbFX55`q{ZaLHyiWu13wsdvL_TRb*$&b_5cyG;RTGA;rfr9vfU4ks^ z1s3N@9NL471Qfgm9p;PnGrkTC?~b5)cyhReLoaAN0w=d_h)uXKoYxo{ggufIw~xnH zErC{R+fjO{)NleReg7nQLqmhHDWXNQ`3O6&)^k7a4FM zxeP_vJKF_=2QK5gh{-I%Wx27{^Nu?k5BDA z{lRT4C2LNe0c6;@9uvzy$a&`{Jl~ycwcM%Y#$SLRQFKkryd-(ETCb?c zg8a4%Xm=OL$7YGdJsNFFMLVl(613^2;AK3ffW_LhaGgf)#O4M-_|EzeW7>Bie#YZP z&sA$PZW?CO#A9vfn_HdONxWY)zD63y3E!idF~O=MyrYJA9S~+8lgOic2M668ygOtK z^2#|Nk$P{+;IVk8$L-$SOSn-%yQC+X&#h)q%PgZ5pAipEQfjkh&bG8wf8fSA+lIec z=KVOA;$hLzBHUt`Q-5B2WwWR$RW+q@F1bY zBIU8n*(8F{lZdymZ|}J``T6!LYuby;xJb@`#DhcdLieZn{zlqR3jpNsWge)3pqSS) zn8l0`C*G~0>k)zb?G->~@8zb)y78?vMD)*m3|rknttBq_BChTMKo)`-wcS)K;{^1CwYFj`@RZm;TIG_q8@L0zLv4S^=V;zjYnHAOqV>AM7sF462G_jFZq>F? zt_l@%tl79xzMZ2$CelFGh6giak=}pA9M3K=#A%L$fynP4kZa>8h4+K-I=Q?;gKw!$ zr~4g3LP2E!5B1J%9_zi0SWAzKKGgTap+?sFkwcF_4hhWP9+~Q4hc`Kclr|LkCND-F^| z3B>IHmW^DHQP-;&w03fZtTGW@{5>~_t0fYnJZy1#TIv`&_;Y!77}ucUysi8F_h>O5 zK2A_l{U%J_$QcZOQS}wQ)K>H*bD;>mJg)LHl;_sbx&2{ygdZ)g;to~JY*$sHn@Ua? z>z)o19K$iNhpOB|6_gE+hL3K;Jx(tbJbu}3)Dt9Af3|)h$k#;1IyWGo zKXQ+uZx~mYN{(0aG8LMa_l9}Qj#)$L(((Fs0{EJC(>6J7q@a(I2uBab6~OXLR;e7> zv9TX+kI^Z&HkEv-M%eCQ4R`ZHk3|LpNleoB?uH0}$vH}k*xbT6($r0w^W#14Age--U|U>0_ii3B^T50!@bUOJ1A0Zupz$~M}}k* z6x&%m&SpFM{x3m<(%1zGc9eeV7x5>LoZhnxhF%ENlg7oVy2^^+)9xcbUaI~ZG$ zcDUM9B@r@iOQAMh1h`vR-GJwhO0x;u0-mNn2~Wah7(MSa*#Oakt5;La2q?`(B!dorMnHy9+1uL6^YLfPFjl(3d#r- zYWC10tzZv=uxBY!t7}6g3$wnwLR5Am5=ihImFZ-CY>cW^>;|~=A<0=e1o~bSOR>7g-pLdA zXF{9IMnT(?%vSGLpIzCYaB{2hNIi2;LJx<()>#H$;SA<70xDag2z(TbCVu$CEo{k-<>u&SR(JeWpybMzxswvEiUG zdhe|0#q-4(NG5>ju*~stsz789p!rSw4|M)g(W0z~u3n(m1mm~I$ZtBT++y+dJR5d| zWnVe#GS`ygE(TSm=?1nmh4qS}ZYaf(XuZF7dML~1v2BuAJ;*nbAO(=^_0GcAzAT%= zui@(jZU+qrZ(75P17{6um3Q@A&YBl5TkJ!Jb5HMLB;t&hL;$8lgUggx)Y4S{ZmteE z@D!K8G%1Y=inLyBno+f`9zjIc;TS)ZC=hpWMeGG@=MNulsuX?lu2&_}`g1?XW>&>d zB=lAKzc2;0()0;ex_swl7RFtXY@G;?DTMU`NVrTF;V{OA)=}YwSr@{_{!_BA;&7_Yt|di9Fe4d=9&{vio?Y8wS+zCMY=J9L=9}lHQvlXJVPxgnmbNh)Aa|ud^g{v8A$2gg@1&WU{Fr7 z&sf&ICoBq=ca*>k8(IEo$)=_8*!!kMZ#ZC_80?Z=G?}#bgOdfyQ!He6R7>zfT494< z`aGl_NjzT>2RXF&_r+L!VSh!-)TH{@eV$^9AYluXb;4QUehrG0`wAw2VG_)c>zeyF zsijeEw0O7^dLVK-Ev=O2w`Hx@F6nR#8?1h?LDjC^VB9Uj(se)9XSV)rdz+@ig*HaF zMCT2+xKv8=nqvntVx|C8*T5!`bM8*YVL)VgjDGl_fIqj#M=HXQ2d@e)=URkyN3Sqh zTv$n(6y`&FrMsi!?a?dip~cu;g)-0gC}VDTlR7X+A7+cwL+FZbYC?$O^~2a;KhnBN z9Vc=Qyob9rL`Ah*WzoY_`r9M*t1RGo-G6;q`V1wPYCY&De z0JOF7;I2Y~mm;lKDvt=Mbl?aY+=!_?S##>Mq%)QmhfOky{3u zN&q0=JIjD--RRWn*^jA;87DFAQuVC>4{X7vJd*-)De~XYVUP_tZan4<>(|d+tAl^1 z_dk#^!d{xeac%uYSTG~rMw$rTOEwq4?*YTDdU z2ogI?%aG2`1jvVxJmCtFrn9(%%(uqX1)zK1>|E_Q8jEL1VqW@=PsfUV8|+93!yGL6 z6w_-6ZSqIgsCsTN)TdQHlV60^BzMbFrY3inII`Dpi}=NYRcFjiF~4UQv1y1S;VlcM zIs@@oFrjPrQa1;s;_9~WQdbIb1`^Lf^5$Scot>*>;O4cY+%hCa(M!XvbK zuGvAA0pA9ezSmnufgo1S_BeGz*T6Mkrlw=b(PTSQ&i|E=*SnTIBAA{C?j=*=Jf z#qR@WN_~&r;_hfk7C$5PHONDYvq%O0xUwt#t-zP;ONljCLJ@d%{R{4u4ogRJod(k~ zxlB0Gn+Oxv;R-Z9whBctu#88+Ovuj=y@(OrLKMnUU~`GooS=u&y{2=K_bfA+$Jew$@djNAivID5o2WFlfQ_&t05piGI%88c|Tn>Z31Ywg$5**|HBd zV8031YT2o^Z}DrBDD^VV#xOMY6y#LC(*=k70CrA&C(y%Hdxo@Q)aek~nghPjjb4;<4ya;FQY1AFx!Wc1Kc zu-@MI`EQ}xeGv0#afA(tPV8h7=Xf`6JP0}pWpSO_rWEu}%vlX>Nr%f94dTQC^LjQv z^`n2%m<#z5_jLlv0hqfxO$Pm58&D=vmZ!4ES=X8#>KrnwyV^gOt7* z1S)Lp&oIfmAjlC6?Zy;_`rk!#3SuUdg7WLNHsJYlmLRvEDP8HNrrEFZXlEcbe<eW>19g2ZefThtj` zg4{PgnM{Cw#t0LsXz}O=Cmqh~cbit-P(Z&h;U5~vy7y>YjA;u7%%3AMjo3oPu|XPW zxj~z4`B~SzpA|hTI)nNqGD)wFm|>A_lCz-PUHlF9hZS4m++p55SoA<-otm)6 zP`+wnsT-SH)JGHHvFCNT(9x<9WxAH)7~w{+c{v`WgoP=b?4tG%*a@b)=+FKHr6P z6(C7T8JsA1eYLI$4W^=1)0C$Tiq3N&Z2`&DY3eR~RxF>#MGS8lhl_mk6WFj}1Rk18 z8Dh|;e=Gh)M;WW#QP?@OVHeNH5OB!m(Yn(c0#<~(g+l~{teaTkC|x8*P~6)QkU{n{ zF1w$x$8qP+W5VGwvUp0JF=}JzWZ5GMB~g^bfL@XV)!Trv=ehU!vYvUw76B*ZG%TSw z2B|XUSj4<$p-e0YSD%9l5{*axW$z%V4B>&t_Rq^}vu@brUGV)KE3qtJdi0xNm+ zW{eeV=$|vS+25ZF<|Ml|&F~{L4`K{7l*~e=?-<{H7KfK39|YG+9u}*lLBPde9rUcB z*HKn5lEiT3Nn@~1vVf1tfwwFseYKXEc9OnDW<}1-fA3DqwKB9Ww4$2WQx1JeCMA|f zTbls&!_L?is;u-_HM5hc%iq!BDFA)xkBjhEdf6w^Q@)iQ!JATYd)?b(2#TDe`ZD#A?4n9&;+S0? z^D%hSLz_?$KG0etaPP}$qGg3GiPk!D^^fEau>xwDB}ZQU7P!Qd4?g`r*AsIcU)?*9 z(V_|}a=|79Li0rN1lHvwlJH%w#STuK(X%+4gMOW2M`9sWQQwuZv$VKpFVl7T*_hB1 zrw?Y(RKLZBXV2pTvXU6Z5Aekftdfq8_TNqD2Aw97TPFxMM#U#gSZPCv_sT(XP5ABV+YF^PtM~dgr zsQkAk@{01_8+e$glS%E*`wZwY<0K(!iGamen|dwl-C;302dL$Y>4^~eX@OtDG6DZO zM#3zxg0&$dz>Coo zd|j}}LK7?KwmlXWxov!A-*h>$rrX-Bya#LsPI%|S1O(jK-Cu_>yGIl?7;MYI9!#Ms zw5*Q~qXh6oWIv&w()4APpilOTrN;8{hb!g?{4WdeVsaGTzl6xiYx$92O($PK2>&82 zmhjE=eAxleClTd$w41ef{w|~5C7+Z-z=lHufx~v~(wO53-4Rq&6U8Mt>v0_}Oz>wx zghWQ}{AW`I>IPLMZv=kw8+8dO@Yuuoj-T}}TEriHpgTkZnHMxh6()%B7b~KctH!rE zSkYuk#qwgPJv4F`Q!VUX7<#S6@}Xz|QNwzgOBMDxU0?9=1%`PYRbQc;6ZGvx@<7>c zKGim)>ai_OZv9K$X)DXJqp=01S{qT7M!o^R()5k|`aPIjy9m2gSJQG@CKaY!Cr2KO zaelzxF6|^SuUyIyrbgXTao8>Rxl>8@aE4sBR|a2PT6H)rX21p^EZG3PA&us$`UY>y zCXwA{id1XOOv(KWIjJnFe6>i!h2@-8JG||5?|REtycFP6ttb_f=YFuL7Q)jC(Lu4` zi*^)=%4#SZO{bb#lo>7?uORLuN{Tub5QD`EO)9vWo>ByDFH; z=HR6#ynGaEjxD@lrt`TBlTJy6am$SL_ay%{gcvwFx)5@B=gu&E1ld-_Aj9_M+cxTF zIdJT?S~soLUF6~^M5w>RRBw#6*(L2kX0}&Zuz1^-uNS7ltQ!O?34#@kduxI7^U~TU zDbh2qR}kEp4bG^Gc|T?ujSm#@wa>dSrLOiEQ}vWLJi}Oj3&)Q)uyY|ecq~tbBF6wE zj&MSWkb8|f++lM8Lzp8REV>mgXcG@#QOT+I=StH?2X z;?#COuM`D=$Z!G&#cMbVCgFx=x)z*)A(g^feZ@YVk$BxYJ@YYokCDAGCuBnat?!D0 zb}fJ9hVS74{trBPlY9w%GK7sI>!J3+FL35QBPbCDI0fJARX6_IXRL?>(JEH5XRz_l zo;8)Z;~(LqC*9;j*120MGM&?avM;5G-sQoU3y*Ry@;Nw5^0+pvRago*hSLrh6O#up zLn_Q>DOQXHNAjOHs~&KF#dL52@ReFYlw)LUS>-D*&3}z8=2O^veW{}edcv5Kccc1L zve1DaV%brnq)ejqzLs&Vy<3axxiZX3{=t?=vYrY$ih4bI@0Rcq_GNGoLooOpOfZ_di25MGgcc{gwVvlcYqHk4_W&tGs~0ivg7 zsw)I`glx=8b93bCk9pwJC4GL>t6g(%w=b>t3x(8oV5)fWt|L#&U94yu!;<5;Se!TB zv6_9g!B$_9749yB!dYqXbR83{Pb?$c7FO`;{a!dUIRH*|GR~2QZaaC|U&aDoMhb4R zG)BCft~7^)cnmE<%Ev?2xzPNZP7_`jAejbJmw3VeS@*`iXx*+E2E$)B@r8K9gcFDp zmgbTRvGbC2FXYm9ztn$4HS`m97|NTFm;wh{(I8k*p5RF3G7<_jslQ+ijgj?KxT?mw z#wOK;R0KC|u}NvyKrXg0t&2CP5uFr8!C&-rZ`>K7c2$f?u(d}($zNo=NP4vG{t9V=?D^8ala|4r5>+VIP9m?k8cyw2Da=^~0p9>U6Sv2!w z5L{4i0i`;>4@Q4WaH0tfLNvl&wSicmy3as4jURtU?l!Q(is}%-&O@VnKnGM=X>Dl- zlZ^sbtunmFlfKdknlK>J+Q?zt1B-l$Fd$*AZfjaA3y3l9`AWK4`rq5=v+BJqa)Z;& z0h&##-p19>U(5!SQVhxE37}BLk&GFP2_?>(7ak_3li2>?%uAsP$a~ zLl>UK+Kz)n@u7qC7%N+Dww%546BGz=h|Y5HE|-%BFKyQ8f_x?x==;({#XM_!K7hsKXLQ5@1bDznor@}5e$EhY zP7mW5ha<6v2zpmKvP74~Slqy^okj2XeWi*t$`(8m2t0XY(tG2{Gi#GSGQM?>=#QR7 z{aGScEjLkeHXG$MdLOKSXhDk16$}gKr@U~rPs4UunIlM;yDMWF`lu+A8tA-Qe5$fZ z2((3}B?ZCrHry2ZJ9;1Ui<1$kvt+yUr2dcQ2N{h?U(C#3DdW_AdJ=c5s4ugj1N)x< zxZSN|oIC}~sjnCEMrYdt9_}m{_255q#z+n5U`qCEUX?(MVZ(}bB^f>$d`h*KmUJu$ zG_4sncvcuh3-FMNMsrk~(n#;b3V{{NYN!_azRu1B93-3Xk1j$p7h>`TDf8&~A5*vr z4Gv^cYiaUs*)izJUSKOW$UBCXYxSyfB7sop29+UCw%OewJGh|B>Y%dF{KCf2-^wzy zY3Pviort7i9Z%{lxIWx^BO#l$2GzChlQ%kX(X1oH4B4IXV=-)Y@|kv!=e5A=6o3HP zW=Bu}BBTS3-@J*i{?L!_ZaDu2%H_+3L#id|^Y3Pnr@=+ZP(21<)MMIkOA33cYa1?J zKJV$MEntv>M)antws+UJr>Dg1L__nPkK+}q$VEedW3K{O1q-Npz{4g>aRxPXQ{&^B zuP0CZSPW#Mad}PJi8b5~sg9+iPFxD=A1c`}h?SHGDuG{E^>Ti_{*m-@#h>^ImjrdK zsq_hDRbsfu6gw!(qj$}O!D(u0fgOfT&U}W&Xaooh4ijU+7`wCw6P+hJ6;s!Y*P`Ku zq#Qj6L`nDP=E~R7ew=YtP>%FJisClPC9+Q&wPhM(WX8bHd|$qOrTQ6*j?1}>@<{Jh z(QRHrURJ2;fEjeb(zL5&z+0pN4P9CVKIYVD|KP^2mx?r6-N|qy)p!olPNI~P17yfG z+qWj0G!O|^C%J}!X(kkq*8cm8Icjy!!epRE1PnqOXESmUpEc33i>$>8c32pgL7<3> zsvpo=#Y3#TCEHvgaY7*FRG^r`^COWi;}k8vGj8#^@y+3ysj;n^qosFxHg{8$!GEu6 z+HFlFJy{5JeO4?%)K%(t7L6{2J^5DrXLS)DNz-`Ys<5nhw8ZZ3>rdHx3P5)}Zg%b- zrR<#4?g)2K(g-PTXaRxKKV~|Lj=)+6C)b*CL$L~w6$9HVnSIL0?w`34ZO8t=AY=HZ z3@Z{SJhPto=^uS1!}uarbej? z@D8H&@Ion~koj zL)~*WSw0;vOALD087+gzD?31TN4e=PoEZqq%8B6oh7_``FCVpQBUjaxe{e9-)5A)= z*q0JyfG*N#SMZXMEy;8Aw%g{r;>RW(cE$w>0P>IzL}Usb@K+8P8I!$e83vBb7?I{o zUE-!AOfx4BA1=xzFMeNeT-_}W4`I8l7n+wD-@qaeM5ZUF8|~9Cy~=Qlx}mH1?JaZQ zT|9~DGK`DvXG1mSqY^byXDT;vqvXb;LR%J`ZhV!1%dujet*aox_P)1b&;1;4j2&pU zCSn(SRjN4^8~1ZA?F(qDO~1tLr^(*C5%RVB(Xe@lqZ?rh45VG1=Cr1>4G z(G5$plYfWynF^z2_xmjH5#dCM`K|}e+KEZby6;Uk%kLx7bY;GxOd?;LQ#(jJpfqgv zrwUXDfNA#(gkT47B0Kx_r$+q^R)?}_md91WJZ=q2X6fhZA2MxhT|{LiDP(*+IH`1( zL&mnHsqH-R>H%h9sYg_t6Lq;)VM#1HK=r-UOgv*JVq__6-)20Tp~!KcO@Kh6{*d~C zMxIKQ`RXUU(6HxdVF4?gdcIXD=j1Ow&+ zU09G?CNgf{uQ&~-U_$(br|{3;m@FtLdB!QCQazQzK4A-c4R8B&7xopsu zs`lY?VVje6HEpIREQngVB2a;qh;J7cn1nd=c^82A@gt?~6C9@8-X~znbBGxLa%}u=_{a3si6H}z5C1N+#Zx#QG8~E-uvLU!ZlAKOLy`?^94Cl zAPWG3n}SyuUkf7*o8TqM(qbCk5~2Q9k2qN?bpbpe0kp=OP6iPi0Pr8G`?wbASn-HsT842|O(5Mo^rQj5=L8B3ixtX~>UF+h zH{G<}i(_?UR#ktUh6N0hlI-QKpS^~FGShm~=SpWV9?M%w zy{i%wpl+p8UB|A#1NO0Yb!%<9m%8P9411;MomR*qV$RLZBOur zf70T~PM{LN9}(#~{|JRcXYsiBH79(T>Ya(rzRsTw_-+oR-xhTvuQDYu)1V8oMa7!s zGp>KPFWa_B@VS1U3<>lp_M*roR0cs}uRJ>;4q@^dB5v44FC$=HhAdy7F=b_A=``gF zN>>|n8Kw)#cfW)Sh2wWyv~1V0?CWd6fG?9=%)zt%LqZWJ2)0JNYJ$;>KS1V_FgfMe zwT&+Ao8+>=Si{Zg!RcDzz5|(#dmwrb#;fm1pG+aRrdXE8GzlNVe^xR?82>6(2q2#P zepNezj}kPjheqQh@1-z{UN9{Y5<`kP_my;;SS%Dcqdede>aoMj{ZmfKju_cU_%j6N z3;vFXrI?O~R-b@1fhj$GtEOM|X z=9o=YQ~*GRajF4evm8Bief-HfJx#hj4ZNAkrKo*#1u}@{>)35zG&>E$a}U8#&W&yh zeAkBOjEW5*bGTNgc{Fn}TsSA-U+Md)BvW$CEd0{es^%8Ihg1}`Y3{(nrZ(L`$=Sgv z%Y2g#AciyZ_Vy&6oGB0r)$38}-{2wpSvG@e-3OdGmG>u!#v(i-OCl-tr!Iljmtf77 zE1<`hAyMic&BYf)^UgF`Ct)}Qvx$EsIxT8sjHaToDW&5Q%L>i=qlG z5f(wCco^h9bvrCW-J{Yc$C1`1l%O9p(LqdUv$aM2LR`F_u#+{ij*eQ>Z7#am^2%F- zzk;#F?y~dt!n3O$Mk`{Pi&dLRne@bG8!bMOa+Ql`*&>8dIc3M|g{~N)W_#3_=j)&S zpPJq}F0STx8%Byd#i6)sp}4zSafij7;_k(v6nCe%yDnDTp}4!d?qbj0-}n9fx1V$N zWM(o+W+s#5qI8yo0%o`QhBrc{%V0bH&r%nAydR-)^&3W^*$6xD zM`hwLo^}*#hctnKBEOOcYV~AO1HN>@Y0-D!IJ~#$alz_;Ez4AZLslZHK*uQh5Wl~{VtM2;fHl*%!V>!iklJ1cHDDN_{jFR^{9EK-c< z$o{AK6Y88zFD$GKIU-YFaBFqhmu4-bj+VK{pENuNnd8by& zdJm`Q+>)O+2WWFa0MfIE*#(^cU4Cc%J;sFx-2BLN?mqRaeHK3`yx8@WS**h7Dl zDz2{)N#DQirQCX=9@L0#QsBWS;8DB9--P1__PeWdeJ2P z<{GxAS&p4%Ox3TLhfheQ-uzQr3YMid?a{^6P4o??#N0hahv`ovf@2QfNS7F zvsVn^DevUlFnT(Ctl?L5UY!{&cX+^Ag>RqEILnB0R1sENV3ot$;&fldr_tpE z```v9hQPDId^6ZEc4N`&>}fM7`9Z*6`K>Ic`YAW(zSA;w9)3E0_1K?{1Wjfq$3uDrnRZ4(uKs#`Mka+a5CTs zF)yh=?UQ#Ef29ZdW4`31dX{a|SYbWjE)FDg(HAq=snBGlku-qoS zoSa6c*WBtqJr&)Ik7RR$DF~uEm3AaZa`YmXP0l`-%Ea}tfc0#f;tH)v7TqV=z5a51 zfU(m7G@pz$VRPRalWB;`6BJQ){`+_%hAKZvwzd0ryKc*d?pz$HKb(&Pdg$2HTb5a6 zK=2CcyTcH99j;1im|Vrm)B=tI@`2p-*mB3Enwy0%!M}Ux595!+t>;~7@y9)j-7PG*m@KBg0q7B8i z(7>*W*0%_Q;acL*jLcD0-b`oD!%PZ~y83YX;;LYJCP2oh)T_Bf#VTYgyhI)^IX?}{ z=peoVn@h5pKwO^Bf_zp06~5E&umme1T^-`21l`pHKbulQZ-|B@Obv7u$RrPoEqj=6 zWEx|Hx#6lkIw66CGLuGdQzE3Y{_rOXN;-;!1yJXoK4?>sqg4%L1awn5HhNa73+=~1 zX6lOR0(WChZB;^e?&eXw^tf=US$!uI>Uqnfm z_02q6L9-V`*AF%H@j?T|F}=BNjoEorcg^9Hbx0P#Zq=XCU$;DhC)MkpPS;PAZ`lmQ%sY0b_}#rj{}kE}`lKTy9r^n` zDvA&-h`9+#bTFxsHEBWqF3l0+n-vl!A4N>O75*O{I)S>gwKZwzoLk)!7RD3h(r#I~ zC#)-azEY3RKJz9koZermL#`#*mRVD3?)9v|QuxP-OCZ%Lc7R5n!bERrr9;E` z@u<=8b+@|KBt*mS;@)ad{Co2GnZ~87G@_rI&kgh+u^w0Nxi^qcS5ka%C$xnKh|>T5BN^h}>B%j*P3c81$x3i4Rv5uuX3>HqWoi@%#=ae3 zcXc6O)m&n`dG7vDeIZiQ0)?pOdFU@Kk3v$QnD#$Cz@$6&cIgedxDLqEK6p#JP-h<7 zQDCxjn{~%Flpmv+{aiKhqH_vkvC@uhu71t>%SZttr&_^Z9X3!uu~F6ftb|y)RP)v7 zAJF5FcHvF8!bioK?kJUuxpStK#aXw+Auv zA)`&fx9k{Lxh0vm$B46fy^a}yJ}>^B?rsqQkx6ai9zS$)m@XBP4ye7o5OVP-q3Czh z2Ue#3nt-UR9*r4)@Ed7zM}At;X7>zaM<`bm&n~)Juy)zh+?@QTeg_ha$$Q(sD#dew ze_X3?kK`?-UP1g<2OA{n{M%5wb+$3jA9jhhI=Xie(LftJ=x6b0? zlLvK0x>lyG`(gn3;Gd}9{pNx0WE~z~o7OBEQ_2&~c9+!^@e(qoYE**Ta&xr%NJUYc z0Y0SgZ#9d%|9p(f!md_i*Cggws#5Y<{afdAC-9_}+!HrHbufI74OsI3tG9a;mrK0< ze1teWKgis(5cak|1E&*aN(g<%{n_R|Cl%!AR`9hU#)fO|?~42*WSQAnX>>(Y`0OdB zy=)WvmbjU{;^v`#6f)$v%0F9kFlr9JZIB?EB_^9aGIHkQYlQQmV36K*tL1%F(@9kE z)%yasS$jRQX)UxW#gg?8lO~{In5`^Hw4^WBy)rh$$G=-cpuCjNDKo!x#l}MrYZHEU zE{i{VL$W~g34bxXuJ8Q7Rj5Dx$yMNn#z)a$Mi*~PAe@pW)?&e?wWj8(=k3HX^~A2G zS=S7$k;^|7+dn(Tt;(puI;kEJrNn!z#?c_?2t_L1+l}KBpq97d`;1OK%|8hzvUx-L z8xaA+V$;}qsG1%EIUg~tL4No@MLn&peOJp_ z>786xev2ye@?e#RB%J}e*BlY+y;UMnLp|0ogE~acBTbnFG_tagqX*a;Jkd1-%T3hp zxhd#$4nktz#GJk!6FxZj1g7M<1J|;pW4U~0a~X)@g#p&e^$sJ~kFiL#khHx(zrb(f zMh04gnDyCGk8H-OHm!}jdmYU)iGj zEGXjw%0y$K)2mFQsMkdP^&hn13AcufIx&yE-+d*8q!N~+9p-pc3e(Kv;}+l`#WQ>8 zTtp=2nb2)m_VJ9^(0e{)?ju)y#($H@ANq0WB=gNSlP@JDDwNp*%I+ak3QsC4Cy#fI?C#>z+T_D6qZo2L{82h8w5^vV|o~0GXyz@S}0iz z<_k!qNDorbChH5HQrzvg(z-KTbWenciEs%k%IbC9+Yg+zyTRfdRIpIyRYz}OesrF$ zsB2ubOn9~}hn5l{R*N?IOOlhz;CtD^)4+z8qxq8d)&z{va$x7$Xob)Wm=GG^#HWbw z7Pg~~GQ?ug8VUSz<{@elmy*>}C4iZI#$hxwKVP6kyNchnRAWhI(VZg)3BgeO`PB!`H*U zKwt;x@NLqoWxEyCU7)nX&fE()j- zii>th+lZyEDH3!Ra-A?Iws?sD_6de!(=#N~5t!bpKMCKWIxtO-lR`W=bo4xBLv0r5 z0y~C!J=%I>Y`Y4>-hWQ(sC2ZXoH1UxPCP)3tfo#7;<|%kqgWCAYluSxWWs@+d89%zH8tNUfKlg_*G9+&7c z$1xcWX1x`q#q>$Iru0K-sMn#?2D=GHO-MScXIeXDf`WnXgt9}7$ffW7IlF563vN{1 z3mZ|p*GU1y+a1soBe&oFL#_&q+99}WdDB1_#HY4Rf^AJK=Gd34fooZB^!yCEe93d7 zYlK@cy2Ep>0b2Gw=K)&V{dHm?WpeBnFL8by=Qy$rg`!~KKZR2LJK6IBI<%-I{O>F4jV*zm2;U^f7RH!pF92pj}VNXe!(vg$W$_)!xm zl8D>x_etD|^P&@1(7tKrNYwX6`nxW8EOGs-o?qJXlb^Jz)Gz~ODv!^E1iqk0bZd?K zQa{cA2TbenTZ%pYzFu7Q ze2E|4Z&$lAdK6p!{A&T`(QUyVMaHC_>s~vr?!5}Yd#%l*iHW#mRUYc!$Z!Bj`i5k)J#19eumA@@+_i$dqFy`sRV)T|N`h?CSi zy$Ym1ci))hcVH#3!Z(6u%sm?JGEmWeM|e&>8ycXZ-@W4>p~R|Jm0StqkKe=>^H_v( zEC`Q0>Z?8`wK%n(wf6GyeldI#>+w1_r1icy8OeTwSUZw3F6xBU zeF1Fo*=d)Am;S0WU}LFKYla3(w1R?Mw}wcHv2r;tq0&1Er|5BA2H z^w1N9NZ|7sUcX$eM;1stj&8mwD?Iz67U=aj`63crhXJ{qf^ivGFusTQmA{n1;}h## zvGpDdMj83sf!p7|pc_n2y75nzgdb@-X54vuqHb%xT)0Vj2a437&tIJc?79j2Z-ba# z-s9#T{+V)TsgyQOP-n761E$a4bU&PgjT_Wnu^AmPUW!^>9cwzQlvZbrmKaz*j`L9=qCUZcu$LeaidT1+1U6Wxl?i9y6L^fx@%8bQi&jWxe%sER?v`Ff@9DcN#d)@%KzHUKARp*iu#b9Ze&?26}4 znq$!xv%^(Yck2Ns^lgQk7A4#~A{g=seoFQ8GbhZ6Z!?o1OMoa4{~7wr{6kie)2MNe?}>L*Za_*{ zoU&|Bp=&@;bhasn zu}r4z>eb8p9dp(ha`boT+&gbENLa)&&%IdB$2F+3H3|AA&(I({xQ>n_0?KRvQ*t9n z)@}wGRrB4-@85cMhjUr<8VXkKT)R zNQ*99;^LM;ro&=!e&o6@Qw9^6I0ItwO69YES=Q4_M}HJ~Rdq=_N5R87li~;;#%uG4 zyuX4T18g%T|AHp|EwNq=XA@f(Y!tI-)Yd%j>OOU1C>{R5ZJ7Wd)!7y{!!t9kTpQP~ zVUT*F+8POq_}vsuCYBxu#MdJ>l*6bDq8X;aru~*PBlseUv8tWldu0x9ge>*m zDra}Hko)KecKP0JMwj|ZrK1*}1&^A?b?}~Ev(*plP(nNJkP|T)QJM7;!Eo^ew@p=7 zb>ETp>rvCc`3h92ZG~xY=%GOCwT$tr6{AhOnuC&|dThQvGspsD*jiD|$ z=RPxMb1r#o$}py!hLLkTfx7axEwSl&GUr&B(qySWiMW;J`gdQ(t#x;^xGC5o{Isud=7?Po#5*+W!5ydtHy05z?Ef@B7t{r1W?BzGUFyVqjV% zaM2-2+__Or=VbDoZ`u`z{K9=Co%}Lt;CaUs0Mirja+~#ZD;F-bO#nx5p~7d}CGW7l z^$z}mlLte+v-H+$nYSa6UOA`6A>qZs(e*85&Ys)ub_#VqOI)>`o(U2rG9j7rl5XgR z>-Ai?STB;#xV*Rcs=Q{e=;o}==qr{2dcHPeyP|6T!N;z(U{f}v%eC%6q^2D6&`vC( zC}O7^de%#qM ze!ay1&3K8}5_~b<7^wMoOEF+l4P1Zkrgx?JkG9hs<5<3N>8yF4ZC7(D_9{?`!gL`& z$AlyPH{3UP;>I6$KFFsVH_lb_MRnfW;T^ug@@EhCBS2|&C#?I? zwikzr-u&h^lKTVeNsUw%9|i`-ysoAcX!y!eG=)Fg73V7wpkF`no8b)tbtNS`f9lE~ ze50S~n)VaCY&i8r<)PqFPEI)+qzruk=oxT%IyyHFLuq?8aNC@h2cRd zv1veMiLDGjG7&ZWZPcwq;FCu)1b(n* zX=tU=&zNmwFN2Cr*!vS8%okT=YCGvc<_M$9p)nB(!Fzs1QxRO?D779>UVVAhIx(A zE~?!GdSx^tOiz;uNvt6&{^lrLfGTmSD_*Wj(mG>%-<>u&N!B7UyQ7w~c_jGi$cakxgT~+MHGMXVXHIB<)!AzjY{-AHtKY4{z z0Spvd=0aBr>Iqo+0AGyTqlV;Q9iBY>DdZCUruFa@XIiszp$4s0GVx`=oWq7riP?m; zzF-?35*GX&H|v~C3dkV)+Q-f78!yXOeh=XqJhtS83EQ_UavXJ&MCiF~PX->X-RDa> zcMO^Nim_@Ad0b>~FP40aJ;-IOj&Wtu_m3Swp=X@?HwR0%rHq~!KU#EpzbV_=EpVKR zNUloB{LO$DZ!!ku1(`2fFKDUsuf{Bvef0BQ&kgW<+Z~;ZBYtSJBbYG0^YhyA$a7#8NP4 zBi@R~j4P*)f?c2ff)Pao>Gkpg#rw0((~1c6=I`B_Jd27hI_-F0`tILyI~yB@iwIrC zQ4ztTXUqWHxN+3)ceZNva0;Ok+hnxSXS5cFHx5bUoK zukqqe65tN89B&Db-xMsa4ECHBh(*Y9NKZ+Lksip(&W1fPMGWACjcE*s;weba2zL9Ajly`6y zIPg2VrGhHhIQd00ZOllCoiyoDWBM8LOclLvmM1Q=wGxj5XHH%(d3yd;_J9_a#C~fO zm(JUi&bPl;O`dc*_4sbt(rmrCLA-%AbJGU>i-aop-HzJ$4GW3!Kamjrm#{Jk2jN)|5QM_-UAwVWMlc3Moy|D4S8*FFysAcAEQAKJ;zqg*$7>q#K`Aqwb3-{{)58@Hp*qBAC zhqP;&TbO=l`Z7}Yjqc({RnRY^fb(+_qbAGNv5u~J;fHWG=5pZQsP4^D%0MSo{X+25 zbl}T)^lyxn<$7oSf~Rvx_1jW1k#$tx3o;QQMa%29f|VRCeuTD`@uR!2Cx8jyY2_D` zlcqC|w9YvEw!B?v@imZfhFMW-=LtmjF`NAuoRc~{lBtb3Q2?*PG! z$wTct;g6fnyudae0*|ElR^>kkhF$@SFO`A!XI5$Wv!rF7Y`$Av#=EYo{f8^rP3FKTs-*&Z+vTA;-9c<6?<;z$b-uGSY-49SJbAsV zA)-KC2d1F_ldO5FjR{p(atdZ;XINNIAzuUHczOqunrYaqWYNk+514iE2k*!hv(Lk= z?xq3@38@{<_M5uFm@VnrPwZ%8Ug8w?FpgY$c$-*VgtvtW+sPgI;#Y5*` zgn!492sd@lr`s($b4R&%;g6{LwQBkxB^}!0U|79BGA)0m$#bGGuj!Nn>xNG|u{TF~ z5k+1u@$denqrTiL{Al1E&8bf_XofDLn1u_)v`or)mPjAZ`Ogz9 zvU9=aLp-{x=*30-jJY`O0@IZj{X)O99u|S`Swx^OmDTfv(F`l6QKyPk;+V!$Yu*wy zmQATi+!_;nTJ|!;rWD&&i;Lx8vE|2@(01&nt5MvYW#L-gMl`OyB8EOL=OmY|>d$U~ z_b|!3ep4MG5eG$_boXf z|956yUzKKW*NWc{Ja9>k=@}+}OLreYF;w$!9sF{ch*Z60&{hRfnmj|}I#D@WBpBIO z;%n&f_b&2#HzJ{(xXNJK!(JB#Qq#Sp}e^(WYk!uB{rQ!=Th@o)+h>4tpRiJ+Izz zP1d-!;u6<`3Gi<&A8J-RggtW6%?i{4Hgp$Uyg(f>{pHL<~tVK&3yPma3xfDOdWBf#@uM`e?KbvpN+<%*%(E< zq=-W9{siz4pAiTx*(sceFfNoG3~$j@MJv6MGan5Q${1Tz+f=ky&#? zDVlwkqs2+XU%lmi9jX8Ga?cgCNNO+JQZ{^!B_ML>A((T$Que6-?bSPjpf74z6b~!) zg2kw8aB}i3UL+7mHjVw4hiy7MG?!JsCr$aEg-C=W0v+s~x&TI_Qi40t%ZgMrp9ogt zN;i&TXW5>Owz^AR?X=9~1_mi|Xvyc)>gc=nPlSt&dnEBt`ePLdDMI}Ui|X-}i@*N# zpFDPy($TpWB7o_nV7ew^L4S0Y0Dl^4{SB5$tT zr|3Qxv-v#6%&b$=Zvha`LCm?pIkC?I`Pwrmi9Nj=zBZ9kmr2&-h0rIdPzdGZ0sMJp||CuJpOf@IQ8eSYZAaf& zeHqlQ1-|KSO0IsF3|b1;ZWY<2=e2EmU0<61iR&zI))Bz*pWE91Wng%^H7VZnPN!)i zn1tHmiI7IR^zWGNK-hi=S74)(L3*R+pmy*SQw|d6tUdF@<;%@EK=9@IM7cHqA+PVR z9Zfsbp7l(-AlZpSjDj9#fab4zURu%W1&Q{2MX>hm1Sh5M zXSq*aGFZ??LeWGfsYJtW)x#ZP4z7{7iHnIwt@>XM!FSVER(jDU{5k%wZjful$*m8s zZ-!o44mNI1L0F9Z#|#+xGZ~GT&wuJQ(sP!GAoBYN!;8^Sm|7U4!?|~;d&N0*W6R$I zeie16Z;acy^(*7@;XSrVAVq&E0vNM3tz8U?F9hm(`!lbdpe&p+8TRy3K(76LtPwJ9 zlX>(UI8RxP!o;sA=1=bbi?y2Adf!nAe7@WnFg%d`?D_sYLfesrYNloo6?a*QdAYa;&K^`(qcx3|AD2N610$U{8SExszDB-aY>K$SS_YzJJ@CwSVQ ziV3~>DUOlXPkujCDrVxXO^mGWOzMHVK?%z{dws3-rbwQ)u+ZZhdopf)L0p%<&GhHl7AFA^xDwy0w5TsXg2rhH8{>)A<`9x$f%{#w zBOq=6{CYs*ky1!7A5#T6`d3plU24{M@h;T0h43UGJ! z;ef<`bCC@(c;Z#DPD8Hd?@Dr5{F@*eyny{#7#EtVZ#ROr=z|F}(_56b{xnN}i&rSW=Q6 z*gQ*1qoW(Je~cgQ*W_Cr(ajyMti9%iV9R_QzQvQDlT!9FS{zdGu zJ?IIsw3AE$?DiUQr<*Le+2JiKk-?!+Uy0$k^z`omrpsjZ)Y1k1PU-H{pPgD<<&U)L zjL7a+Lj#U3vW|*oO_TkottCyq!MR*p{ZL{knx%rVP&EQbA499810aUTEmXp0 zb79;zShVR9gN19mHm(8X(5CSukc(nGW%(?JYw9%eD}HEoP-LYp92h$x=HLM#iCIt1 zh5NMo<@P{swJ|FoMy@^72b@!us{7!16aNkVhH(LZPhZkMFB;gLE7A!Cpu>U=z^3dz zljhly82}^&iFTk2FsWDZ%v&Kg4Jb=~pDmnW+|ZeLBG z&u{NRcQKBo8;*@r0j42C=1vMGC-T%JTJ~5M{v5Zob5js&P9W*YBc0eJ90;sIvy`S1 zi;HOt=60Q>nX|^3&8(A_@AHaO3wmY1tI%3|FbtZ<; z!bR7_G~N1{Ii_@(Ma?ZzAf1Zd_ls-IXVHAWo#2@O9;y(Hp zi+>Q`Cn%%TaPzep7}DL zWYF2l=gOzAajq=Rd(LJ{x+nAo?+cGkwJ}}<6I6R%=zgC68%gZ;8+{k5~LBMoHV}j^EiyZ#;SZP(n z*5k!agg!N;Y(i*jzdiXJ!NlNz&B?6)`5`4(yYkTd-@cUae-MEJk7Dz`q&yjxmUv=1 z7*cOH2rw+|?n@xS6+xe9hdik9+_~)NKr8v~0dpVVO6^j*fyPG7fPm&PVRQ+NFnyHq z7J@oXEKOW-9XKaefvv!*JPqY#YRX=Q2=Zoy>PhJvEBm_+KGcIX+gS4E>@F+ff zPAs#RFtN9-gED`QxtGS;t!&#DQvy%6+SC%YvncM%XlgTNw=y7QpIza+(F+SBa}473 zCDRi2+?s7O#yJgFQ?1@TP#F2_N<$}+2Fh9NGkbvZDk(aDASkOgqNvYg zrWR}CVN2&BF}D6kmZnA3%J(Y^e60|OGbxm$8Hz0N{?LtoLyPH)kwA`ev*1KC(N#Ms z8(vJrP21Wm0$1p8f&8Mv&lPaJ>)lgvT6Uh>$1RU>PHwLCtV0%I`KeQ`&(qB*!$lDq ztiyt*L#*L}1J+{1|A?1Ek>%d&-PXc9`JB`)?)mMRCXD@8x>-1mV~a|2aWYb@C#|Z; zgOw*u#?bH1@BZ-M0KeAQ`lWL%N|2U-x^GaDU2Y|Dl_l+B2;Mua#uB1_GNZFd*U$=1 zaP5poJ$Ti_tNrsmPft(3{VfqZFboA9K20B<0Ub|^^SXT9A9q0@VwR3ClXLO#v+-R` zvlIa96yXNLYQxY}yp@!-8)dscXP!j{Mvyx?Gm-=-veJ94-vX7*jQSFMo(4yUw*vzb zA#1g`?iB7kKMtP_yB7lZdm*#b;}>uPK5%t7sp&$(c127x95hI&9JZc;G*iOajwf-R}5QVofciZe)i5c$fnlj;h5~!HoWVjtEuT}WnjQl zmBSu)?2j>v*73p*SBlLeb`{V+5|oyzO|B{qed|FQg&yR<}etPjBWU> z>YCA8(cXSuUrHLKK8Jk=SH_6=XRD+XI^CiBK0j2>L-g6%!^g#iIyT07DBlbmOVM=j{(8h9caL7-KI5DwjuSgwU(_` z_#?UYm-0)F@=I3UU8I+=BGAkE_HulwNbFb4n_MtK zM*bFA$^844!`-FDRn`*+rjPcr88qIB5NYw4(dYQqM4o>|%!m6i2g8!+dpU_R}HHFu&!>g*S8&$lQ}AwNfFN`IBW z{FT*>we7EIT%P)KFW;jKGOW%Zh_&i=P5w| z0^8|<0HU3{RBg*Yy32Sk#V`3irDpliwzgs56#SeGdH-{dViV!~-YfCcnJ#JPfpD0z z8$z|ee%2aOi*=ygIh%mc@lTZrYTEz)%^lu_+$F$VogV|T|IS;fUPUU>ugel%3;E(O z0kUc#s&D~Zg%%SzN2~T7cdBZ5ehpsZLU49}W#IN8WRL$)uKdfpsW6~jtd03oVrOFw zf2%7kcxKHiE~m|dTDxYfozyOI5q;{N;y;qZ|Jhe6K~0n_yQGCZlC!GK7E%a*Al=j7 zmfL;8@s8%N6xcvhQDZ!1LKM&5D2Lk5!iyN&gYydWEIq2)jC5w6V?vbagBF}r5&Wsz zbD&iGWhVi-b>i>_7q3ju|VdXOGIB6-t? z!5*^1bmhoUj=KwIodo&-IHs}}y8mP^K&(?;(a2pZU|*@&(8LCMvk)A<&yj5wx0n83 zC;My2G1ghh|06q&bj>Qlx5zs+3jQ@;bmrEnIa|zu390|5l1`pn{}amTLd-{FNO$Xo zgmUV1Q9Tj&Qvr;3#is(kPGLklO$<&?E#keldB{|e#*AFNyHG%ALRC+hJnw>}9NKbD z!Tz=tC|uL&%Cz7uQ+9263K&zE5b|WIXkXda*Y}8NPgl$qnU~s+wUqbLwD;3ie7#Vk z?zXNr-Upa3iQsS@EB9ZnT68R!KZ|4}wJ{ez?cNzj=zpv@u{}7k4n4?Yhb9A9LmG2!hA zmE(5hnmKEs_y$MTKy)TP5RKvU-r2`}gq`eQ+r#OKtip^_;2oD>Sa&sP;nXR$?-ju( zz*^)bG6iH0ycmVi?}Lml@jQrsB$vp{GK8Qf*QB<_>u?-NijpNMsa3-J?mH;9dI zUZu}oD0gQbs=xM<^bC`M%&|jSoU&BL+TV{U-_DcW`*bD@?gqVBGXSBa8yui^Wz}Hj zPc0D{`=V}6rAy7QDG3T`VP}8EZ|&gLab>?)iuZ~e=NR@+Il~(@gt{y~e#!qe8C>sb zEOBeZg~#5aNV~4Pv2QorFGfDcRD}e&Y3sCi!(3D!8Ps8WeOwwA$nQX9|Am1)YY2cH z$&%GKKk7lSr)S=qFm@PxUg`leCO9Fc5)2m(`$iwvkdq+!QuX364%M_S&QD0s~UYWk%AvJj(pZ} ztsXM5HgG>dqw5DT)O(AtDyvAFf^_-Pt&H8~Q07Nri~WcEG55R{BJYtq!y(Eq^-C&< zK_m8#-9W~kFpW{1bzt6JH+HX-YL4lg8FJGM(Y@*)u`r6D9ow7GjHkV4cnuz0xM|+0 z2c6hGS_m6MREO$OzW%}7GxP2|xtaTYcJr?)x{*Ix7Gho&NN(wmHJu|(yI9>Zt+*g< zzWmoFi)2um<%coXX0|9v)_)e{oC+dUEtvTCbAN%hT{32E+!a_5Ax0?wpQ-$BN12ol zTk&z)n$~t^+NG57gQ~q@A=Ft5Vg+7){YUUGTsPkPESt*e#Utc|-AO$pP>u6)T!nXn ziw+Ml&RUo#UM#PWk}yf{ASdnLaXTG?7lCgJXVuX+H8Fz$e3eo@aAIEkl)ZLz5b?U~ z3AjU8UhN|DEy3?R{~rg=J5~=(A@ToFz=O2+46bzW8JcSEcCn; zLB_577iN?0{fx&G{3P=F{tW`Ccf6&21HDj4E(}>cb^po`z&HzSAn6ODrPSRyp?h5>Qh?4fP`BAA>64Kgu@ zSSZgk^g}-y^(JmGhWFWnDIfu1y}H&m+o&1NI_Z8TH1J3+sB61d|Lui1CI zZL=}T@Yrj}`RgW6Z>Sp+J9n$_J^={LF;jcVop?qGYLbWJ81VOWmSrG1gGPl{*P9RF z;=FO5St3azfe1K`b(+@^_p^DlGX#QOg4v`1EAX*n?V=?xAzn7N-N*L8gBXAT2rRwAXNZnHo(>*RMBUIHVJ9UR zg#2iNJXfLoyvOw1$<+OND(L;f=$`}#gh(@(Gq)Ypcc}ijzK#&0HfU5Z%vG^uA}j%~ z$&Ahr3v_n}D4l=5+d7XUxLT!Ng^cazfHXV+DQmknz!y5hLNJd_ulkcmeD}-GFy6{A z_y5cuc70Ho(lvx>7J=0S15a!zFVTAhX)Phy{)3fd%%MA8*_rU#i64qxx=)QMICI0R;u^A}1-PkwK+i z_Mh}aPLKUHckg$*Z%5*>uH#-D8E<<%uegG#d&!&h((xA5Y2^0Mggr zh!hTCLgS%l8^juSw+V_Y))LhcLtYSQYv;WW_PoZESCKi3p&%&Vczn+IsqojU8M35e zl13ob{gC`=`uckNx^lorjtBuO9a;BeWt|dRhG3=lCt&A1Nigp%P(n=YPvl|@9ZZ60 zw+!O$i}%B7uQ~4>AmK zD#=)$sELGjL&&^OlEW}VAdK=}PpcN>A;?I)L!ATljX~hCs1-y%91tWCL#Y13K3^q literal 0 HcmV?d00001 diff --git a/docs/verification/vq07-progress/4f8fe47b1/provenance.json b/docs/verification/vq07-progress/4f8fe47b1/provenance.json new file mode 100644 index 0000000000..ed7fdc91db --- /dev/null +++ b/docs/verification/vq07-progress/4f8fe47b1/provenance.json @@ -0,0 +1,293 @@ +{ + "sourceSha": "4f8fe47b1801282827c9b5d0f0cba40b99c7c2a7", + "runId": 36990624761, + "runUrl": "https://github.com/ThreeNativeHQ/threenative/actions/runs/36990624761", + "artifactId": 11219149473, + "artifactSha256": "cd497a2b3353c270bca238cc3101f66064eb12c0eb6bf7c88e2d4d1618244c84", + "qualification": "Actual browser WebGPU software-rendered correctness progress. No native or hardware-performance claim. Ownership receipt and remaining lifecycle work still open.", + "images": { + "off": { + "file": "off.png", + "sha256": "fa3486dd2033281d2ec1db552cf46fba7971f4fbe0ab1cea731a5092e55a5935", + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "diagnostics": [], + "pass": true + }, + "zero": { + "file": "zero.png", + "sha256": "fa3486dd2033281d2ec1db552cf46fba7971f4fbe0ab1cea731a5092e55a5935", + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "diagnostics": [], + "pass": true + }, + "fog": { + "file": "fog.png", + "sha256": "0ac40bc66226495a430c379c039abdadff54a867d19c97e81895083b2c64a190", + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "diagnostics": [], + "pass": true + }, + "inside": { + "file": "inside.png", + "sha256": "433893ec04051f081f42b98911aa744d8e3dd01313bb668bc44294c4dc8cb88f", + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "diagnostics": [], + "pass": true + }, + "sunOff": { + "file": "sunOff.png", + "sha256": "89cc1d8c5a80146b387b62ac4a12a727cc85b6b4383f5ebe7ad31b7d8f222ee2", + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "diagnostics": [], + "pass": true + }, + "pointOff": { + "file": "pointOff.png", + "sha256": "b9773b188bae64544605bf0ce3a7f669abd244045d16b6ef4a0b31c3065710d0", + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "diagnostics": [], + "pass": true + }, + "overlap": { + "file": "overlap.png", + "sha256": "96c723eb30bce2932eda3632b07a02df390759f71b57da1cfe1292ca468e8cd7", + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "diagnostics": [], + "pass": true + }, + "half": { + "file": "half.png", + "sha256": "c37f6762da0bf849312b17a755da754473a478712fa27f67b945fdef47678123", + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "diagnostics": [], + "pass": true + }, + "wallOff": { + "file": "wallOff.png", + "sha256": "764c5c6cf0f217f7e81538b1929a6e9cae55ce2d3ba10656b4f1f6bb3c4151c4", + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "diagnostics": [], + "pass": true + } + }, + "zeroDensityPixelsIdentical": true, + "foregroundWallReference": { + "region": { + "x": 184, + "y": 216, + "width": 18, + "height": 18 + }, + "basis": "Fixed fixture camera projection of foreground wall center; region is interior to its solid face.", + "fogVsOffMeanAbsoluteByteDifference": 0, + "changedPixels": 0 + }, + "halfVsFullMeanAbsoluteByteDifference": 0.06948697916666667 +} diff --git a/docs/verification/vq07-progress/4f8fe47b1/sunOff.png b/docs/verification/vq07-progress/4f8fe47b1/sunOff.png new file mode 100644 index 0000000000000000000000000000000000000000..c6bfb50cdd084daacfcc1384280fbd632bf7c40e GIT binary patch literal 36588 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 J%>M-@{~x9cT%Z5| literal 0 HcmV?d00001 diff --git a/docs/verification/vq07-progress/4f8fe47b1/wallOff.png b/docs/verification/vq07-progress/4f8fe47b1/wallOff.png new file mode 100644 index 0000000000000000000000000000000000000000..0fb14c6f812fae026a6abdbd826043540721b3a4 GIT binary patch literal 43828 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 Md!nn3P_+vGAAz$;-~a#s literal 0 HcmV?d00001 diff --git a/docs/verification/vq07-progress/4f8fe47b1/zero.png b/docs/verification/vq07-progress/4f8fe47b1/zero.png new file mode 100644 index 0000000000000000000000000000000000000000..e4d4f428459ba3e911747efb769a3330b91a8b4a GIT binary patch literal 28892 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 Date: Fri, 2 Oct 2026 03:18:19 -0700 Subject: [PATCH 09/41] fix(render): identify output installations with ownership receipts --- .../workflows/integration-volumetric-fog.yml | 3 + .../PRD-VQ-07-volumetric-fog.md | 11 ++- packages/core/__tests__/renderer.spec.ts | 79 +++++++++++++++++++ packages/core/src/render/chain.ts | 31 +++++--- packages/core/src/renderer.ts | 30 +++++-- .../__tests__/scaffold.spec.ts | 26 +++--- .../world-environment-lifetime.spec.ts | 20 +++++ .../template-assets/worldEnvironment.ts | 22 +++++- .../action-rpg/src/render/worldEnvironment.ts | 22 +++++- .../minimal/src/render/worldEnvironment.ts | 22 +++++- .../platformer/src/render/worldEnvironment.ts | 22 +++++- .../puzzle/src/render/worldEnvironment.ts | 22 +++++- .../racing/src/render/worldEnvironment.ts | 22 +++++- .../rain/src/render/worldEnvironment.ts | 22 +++++- .../rts/src/render/worldEnvironment.ts | 22 +++++- .../runner/src/render/worldEnvironment.ts | 22 +++++- .../sailing/src/render/worldEnvironment.ts | 22 +++++- .../shooter/src/render/worldEnvironment.ts | 22 +++++- .../snow/src/render/worldEnvironment.ts | 22 +++++- .../starter/src/render/worldEnvironment.ts | 22 +++++- .../src/render/worldEnvironment.ts | 22 +++++- 21 files changed, 422 insertions(+), 86 deletions(-) diff --git a/.github/workflows/integration-volumetric-fog.yml b/.github/workflows/integration-volumetric-fog.yml index 47408647b0..6f13f802d3 100644 --- a/.github/workflows/integration-volumetric-fog.yml +++ b/.github/workflows/integration-volumetric-fog.yml @@ -4,6 +4,9 @@ on: pull_request: paths: - 'packages/create-threenative/templates/starter/src/render/volumetricFog.ts' + - 'packages/create-threenative/template-assets/worldEnvironment.ts' + - 'packages/core/src/renderer.ts' + - 'packages/core/src/render/chain.ts' - 'examples/abyss-framework/vq-fog/**' - 'examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json' - 'scripts/verify-volumetric-fog.ts' diff --git a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md index 3d9cbcb52d..acb7bf2b9e 100644 --- a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md +++ b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md @@ -4,7 +4,7 @@ prd_contract: v1 # PRD-VQ-07 — Local volumetric fog composes with depth, lights and existing atmosphere -**Status:** PARTIAL — 2026-10-02. Output-lifetime prerequisite implemented; fog and runtime qualification remain open. +**Status:** PARTIAL — 2026-10-02. Phase 1 browser reference proof is complete; receipt review and broader lifecycle/native qualification remain open. **Batch:** [Visual quality execution batch](https://github.com/ThreeNativeHQ/threenative/blob/docs/visual-quality-batch-2026-10-01/docs/PRDs/batch-2026-10-01-visual-quality/README.md). **Wave:** 2 / atmosphere. **Dependencies:** Independent of clouds. Reuse VQ-06 only for any local-light feature it has actually qualified. @@ -33,8 +33,8 @@ All proof paths below are **planned implementation targets**, not existing passi ### Phase 1 — Depth-correct participating volume -- [ ] Implement game-owned volumetric composition using the admitted upstream/kit mechanism and shared scene depth. proof: `pnpm exec vitest run packages/create-threenative/__tests__/vq-volumetric-fog.spec.ts`. -- [ ] Cover zero density, inside/outside camera positions and opaque occlusion with analytic or reference fixtures. proof: `pnpm exec vitest run packages/create-threenative/__tests__/vq-volumetric-fog.spec.ts`. +- [x] Implement game-owned volumetric composition using the admitted upstream/kit mechanism and shared scene depth. Verified: generated source builds on the pinned shader compiler and hosted WebGPU run 36990624761 renders it; proof: `pnpm exec vitest run packages/create-threenative/__tests__/vq-volumetric-fog.spec.ts`. +- [x] Cover zero density, inside/outside camera positions and opaque occlusion with analytic or reference fixtures. Verified: run 36990624761 captured all positions, exact off/zero image identity and the unchanged foreground-wall reference patch recorded below; proof: `pnpm exec vitest run packages/create-threenative/__tests__/vq-volumetric-fog.spec.ts`. ### Phase 2 — Compose with the existing environment @@ -86,3 +86,8 @@ Actual diagnostic progress: [hosted run 36989192897](https://github.com/ThreeNat The unchanged-HTML diagnostic rerun [36990205268](https://github.com/ThreeNativeHQ/threenative/actions/runs/36990205268) identifies the exact failed resource in `off/http-errors.jsonl`: `/favicon.ico`, HTTP404. The fixture now uses the repository's existing inline-favicon convention. Its new source regression failed first; fog/verifier tests then pass 24/24 and the production bundle builds. No error assertion was weakened. The next hosted run must verify that this removes the console failure and reaches fog-on capture. First successful actual fog captures: [run 36990624761](https://github.com/ThreeNativeHQ/threenative/actions/runs/36990624761), source `4f8fe47b1801282827c9b5d0f0cba40b99c7c2a7`, Chromium WebGPU / Google SwiftShader / 640×400. All nine named variants passed with empty diagnostic lists, and off/zero images were pixel-identical. The unchanged [fog-on PNG](../../verification/vq07-progress/4f8fe47b1/fog.png), [inside-volume PNG](../../verification/vq07-progress/4f8fe47b1/inside.png), [off baseline](../../verification/vq07-progress/4f8fe47b1/off.png) and [all-variant provenance](../../verification/vq07-progress/4f8fe47b1/provenance.json) are retained. Visual inspection confirms bounded mist and light response. The fixed wall-center patch (x184, y216, 18×18) has exactly zero changed pixels against off; full/half fog mean absolute difference is 0.0695/255. This is browser software-rendered correctness progress, not native or hardware-performance qualification. Same-node replacement ownership still needs a unique installation receipt; a green screenshot run does not close that review finding. + + +Installation ownership correction: `setOutputNode` now returns a unique optional receipt with `isCurrent()` / `dispose()`, capturing the actual `RenderPipeline` installation. Same-node reinstall regressions failed first; old observers and disposers now respect the receipt, as does the generated direct base-colour path. Legacy void-style adapters (including historically ignored return values) retain compatibility behavior but do not gain installation-level guarantees. Receipts own only the installed pipeline; graph dependencies still belong to their explicit caller. The superseded node-equality query was removed. The focused renderer/chain/environment/shared-source/scaffold suite passes 157/157, core and touched-source/test typechecks pass, and API/capability checks pass. Generated-source hashes are refreshed only for this intentional shared lifecycle edit. Fresh hosted capture is selected for subsequent renderer/chain/canonical-environment changes. + +Independent receipt review of staged tree `2062ba7783c53bc27a5ba6537a8b60874b9c06fa` passed for pipeline-installation ownership: the reviewer reran renderer/render-chain/WorldEnvironment tests, 89/89 passed, with no blocking defect in that delta. This explicitly does not transfer or guarantee arbitrary shared graph-dependency lifetimes. Hosted pixel proof will be rerun at the published receipt head. diff --git a/packages/core/__tests__/renderer.spec.ts b/packages/core/__tests__/renderer.spec.ts index 41571819e6..17db1b63e0 100644 --- a/packages/core/__tests__/renderer.spec.ts +++ b/packages/core/__tests__/renderer.spec.ts @@ -1014,6 +1014,85 @@ describe("createRenderer", () => { } }); + it("gives same-node output installations distinct ownership receipts", async () => { + const canvas = testCanvas(); + const descriptor = Object.getOwnPropertyDescriptor(globalThis, "navigator"); + Object.defineProperty(globalThis, "navigator", { configurable: true, value: { gpu: {} } }); + const renderPipeline = vi + .spyOn(RenderPipeline.prototype, "render") + .mockImplementation(() => {}); + const rawRender = vi.fn(); + const renderer = await createRenderer({ + canvas, + webgpuFactory: () => ({ + domElement: canvas, + init: async () => undefined, + render: rawRender, + setSize: () => undefined, + }), + }); + try { + const shared = {}; + const first = renderer.setOutputNode(shared); + const second = renderer.setOutputNode(shared); + if (!first || !second) throw new Error("Missing installation receipt"); + expect(first.isCurrent()).toBe(false); + expect(second.isCurrent()).toBe(true); + first.dispose(); + renderer.render(new Scene(), new PerspectiveCamera()); + expect(renderPipeline).toHaveBeenCalledTimes(1); + second.dispose(); + second.dispose(); + expect(second.isCurrent()).toBe(false); + renderer.render(new Scene(), new PerspectiveCamera()); + expect(rawRender).toHaveBeenCalledTimes(1); + } finally { + renderer.dispose(); + renderPipeline.mockRestore(); + if (descriptor === undefined) Reflect.deleteProperty(globalThis, "navigator"); + else Object.defineProperty(globalThis, "navigator", descriptor); + } + }); + + it("does not observe or clear an obsolete chain after a same-node direct reinstall", async () => { + const canvas = testCanvas(); + const descriptor = Object.getOwnPropertyDescriptor(globalThis, "navigator"); + Object.defineProperty(globalThis, "navigator", { configurable: true, value: { gpu: {} } }); + const renderPipeline = vi + .spyOn(RenderPipeline.prototype, "render") + .mockImplementation(() => {}); + const renderer = await createRenderer({ + canvas, + webgpuFactory: () => ({ + domElement: canvas, + init: async () => undefined, + render: () => {}, + setSize: () => undefined, + }), + }); + try { + const shared = {}; + const build = vi.fn((input) => input); + const chain = renderer.createRenderChain?.({ + input: shared, + request: { stages: ["bloom"], tier: "auto" }, + stages: [{ name: "bloom", build }], + }); + renderer.setOutputNode(shared); + for (let index = 0; index < 2; index += 1) + renderer.observeRenderChainBudget?.({ phases: { render: { p95: 40 } } }); + expect(build).toHaveBeenCalledTimes(1); + chain?.dispose(); + renderer.render(new Scene(), new PerspectiveCamera()); + expect(renderPipeline).toHaveBeenCalledTimes(1); + } finally { + renderer.dispose(); + renderPipeline.mockRestore(); + if (descriptor === undefined) Reflect.deleteProperty(globalThis, "navigator"); + else Object.defineProperty(globalThis, "navigator", descriptor); + } + }); + it("replaces and disposes only the framework-owned output pipeline", async () => { const canvas = testCanvas(); const descriptor = Object.getOwnPropertyDescriptor(globalThis, "navigator"); diff --git a/packages/core/src/render/chain.ts b/packages/core/src/render/chain.ts index a33eb3d5b4..c2393b6fc8 100644 --- a/packages/core/src/render/chain.ts +++ b/packages/core/src/render/chain.ts @@ -1,7 +1,7 @@ import type { MRTNode, Node } from "three/webgpu"; import type { IFrameBudgetWindow } from "../frame-budget.js"; -import type { RendererKind } from "../renderer.js"; +import type { IRenderOutputInstallation, RenderOutputSetter, RendererKind } from "../renderer.js"; import { velocityTexture, withVelocityContext } from "./velocity.js"; import type { IVelocityRenderPass } from "./velocity.js"; @@ -54,11 +54,10 @@ export interface IRenderChainRenderer { readonly kind: RendererKind; readonly raw: unknown; clearOutputNode?(expectedNode?: unknown): void; - isOutputNodeCurrent?(node: unknown): boolean; /** Internal renderer seam used to turn on core-owned previous-frame bookkeeping for active temporal stages. */ setRenderChainVelocityEnabled?(enabled: boolean): void; /** Install a graph and identify the authored world pass that follows the rendered scene root. */ - setOutputNode(node: unknown, worldPass?: unknown): void; + setOutputNode: RenderOutputSetter; } const TIER_LEVEL: Record = { @@ -277,6 +276,7 @@ export class RenderChain { #ownedVelocityMrt: MRTNode | null | undefined = undefined; #disposed = false; #installedNode: unknown; + #installation: IRenderOutputInstallation | undefined; #applied: IRenderChainApplied; constructor(renderer: IRenderChainRenderer, options?: Omit); @@ -423,7 +423,18 @@ export class RenderChain { if (stages.length > 0) { try { - this.#renderer.setOutputNode(node, this.#worldPass ?? this.#requestVelocity.pass); + const installation = this.#renderer.setOutputNode( + node, + this.#worldPass ?? this.#requestVelocity.pass, + ); + // Historical void-style callbacks can return an ignored value (for example Array.push). + // Only an explicit receipt upgrades that adapter to installation ownership. + this.#installation = + installation && + typeof installation.isCurrent === "function" && + typeof installation.dispose === "function" + ? installation + : undefined; this.#installedNode = node; } catch (error) { const reason = `install:${errorMessage(error)}`; @@ -473,7 +484,7 @@ export class RenderChain { /** Samples the active temporal stage's completed velocity result after rendering. */ observeFrame(): IRenderChainApplied { if (this.#disposed) throw new Error("RenderChain.observeFrame called after dispose()."); - if (this.#renderer.isOutputNodeCurrent?.(this.#installedNode) === false) return this.#applied; + if (this.#installation?.isCurrent() === false) return this.#applied; const requiresMeasurement = this.#applied.stages.some((name) => requiresVelocityFor(this.#stageDefinitions.get(name), name), ); @@ -499,8 +510,7 @@ export class RenderChain { /** Feed the chain the same render-window evidence used by the frame budget. */ observeFrameBudget(window: IRenderChainBudgetWindow): RenderChainTier { if (this.#disposed) throw new Error("RenderChain.observeFrameBudget called after dispose()."); - if (!this.#automatic || this.#renderer.isOutputNodeCurrent?.(this.#installedNode) === false) - return this.#tier; + if (!this.#automatic || this.#installation?.isCurrent() === false) return this.#tier; const renderP95 = window.phases.render?.p95; if (typeof renderP95 !== "number" || !Number.isFinite(renderP95) || renderP95 < 0) { throw new Error("RenderChain frame budget render.p95 must be a finite non-negative number."); @@ -543,8 +553,11 @@ export class RenderChain { } #clearOwnedOutput(): void { - if (this.#installedNode === undefined) return; - this.#renderer.clearOutputNode?.(this.#installedNode); + if (this.#installation !== undefined) this.#installation.dispose(); + // Compatibility only: a void-returning adapter cannot distinguish same-node reinstalls. + else if (this.#installedNode !== undefined) + this.#renderer.clearOutputNode?.(this.#installedNode); + this.#installation = undefined; this.#installedNode = undefined; } diff --git a/packages/core/src/renderer.ts b/packages/core/src/renderer.ts index 4139c289bc..3f72e809cc 100644 --- a/packages/core/src/renderer.ts +++ b/packages/core/src/renderer.ts @@ -15,6 +15,17 @@ import { export type RendererKind = "webgpu" | "webgl2"; +/** Owns one output-pipeline installation, not the lifetime of its input graph dependencies. */ +export interface IRenderOutputInstallation { + isCurrent(): boolean; + dispose(): void; +} + +/** Union of callbacks preserves TypeScript's legacy void-callback return-value compatibility. */ +export type RenderOutputSetter = + | ((node: unknown, worldPass?: unknown) => void) + | ((node: unknown, worldPass?: unknown) => IRenderOutputInstallation); + type WarmableSurface = { clone: () => WarmableSurface; opacity?: number; @@ -175,10 +186,8 @@ export interface IRendererLike { render(scene: Object3D, camera: Camera): void; /** Draws after the world without clearing or passing through the world's output pipeline. */ renderOverlay(scene: Object3D, camera: Camera): void; - /** Removes the output pipeline; an expected input only clears that still-current graph. */ + /** Legacy input-filtered clear; use an installation receipt for same-node replacement safety. */ clearOutputNode?(expectedNode?: unknown): void; - /** Internal ownership query: superseded chains stop automatic observation without disposal. */ - isOutputNodeCurrent?(node: unknown): boolean; /** Creates the core-owned chain seam without making generated render source import the package. */ createRenderChain?: (options: Omit) => RenderChain; /** Feeds automatic render-chain tiers the completed frame-budget window. */ @@ -190,7 +199,9 @@ export interface IRendererLike { /** Internal callback used by RenderChain; games should request velocity through the chain. */ setRenderChainVelocityEnabled?: (enabled: boolean) => void; /** Installs a graph; pass the authored world pass when the graph contains auxiliary passes. */ - setOutputNode(node: unknown, worldPass?: unknown): void; + // The owned renderer returns a unique receipt. Legacy adapters may return void, without + // installation-level replacement safety; callers still own graph dependency disposal. + setOutputNode: RenderOutputSetter; setSize(width: number, height: number, updateStyle?: boolean): void; /** * The GPU time the last resolved frame actually cost, in milliseconds, or `undefined` when the @@ -782,8 +793,17 @@ function wrapRenderer( outputPass = nextOutputPass; outputPipeline = nextPipeline; outputInput = node; + return { + isCurrent: () => outputPipeline === nextPipeline, + dispose: () => { + if (outputPipeline !== nextPipeline) return; + outputPipeline = undefined; + outputInput = undefined; + outputPass = undefined; + nextPipeline.dispose(); + }, + }; }, - isOutputNodeCurrent: (node) => outputPipeline !== undefined && node === outputInput, clearOutputNode: (expectedNode) => { if (expectedNode !== undefined && expectedNode !== outputInput) return; outputPipeline?.dispose(); diff --git a/packages/create-threenative/__tests__/scaffold.spec.ts b/packages/create-threenative/__tests__/scaffold.spec.ts index 7220480e51..0e03ff7359 100644 --- a/packages/create-threenative/__tests__/scaffold.spec.ts +++ b/packages/create-threenative/__tests__/scaffold.spec.ts @@ -185,19 +185,19 @@ const PRD_201_PARENT_SCAFFOLD_HASHES: Readonly> = { // Recomputed 2026-10-01 on the merge of develop (PRD-470/471/472/474) into the rain + snow // branch (PRD-469, PRD-473): the merged tree carries both sides' engine and manifest bytes, so // all thirteen trees, rain and snow included, were re-measured through createProject. - "action-rpg": "7e245a89396cb372e81b30607583e8047d8cb37fd073215e40cec61057132d12", - minimal: "a07aba83d5f576c943eec9201955aaeb7773178e4207303a9dba6c85f3274d64", - platformer: "91abe84959d599c7c7fcf676b0c09596bfd09017976350649941539e1dd51003", - puzzle: "6e47791f5adc872715ecad22ec09b5437039def2bbc689d3f6fae1bd64e973e2", - racing: "08f71b94ee94e19165278a7bfe42888772f1125b9b7242f71a4ed70719c69a12", - rain: "79df918785707d0f47cbf35edb22b55d9980e20f7882ca727ae60662a59fffae", - rts: "09230e7eb29441f55acac473f2f73f02b0ad918038e0b43c37522dbf964b2aee", - runner: "50191f843787d7a8267846ceae8e9f69daa4a24b5403d406e5552bf68f82b61c", - sailing: "da6621de99aacfb80cd2459e9bdbb04421160df57d28122e0abb6638d61f0f9d", - shooter: "494e877394128762d70bb0b7ad95a3e72ee6e6f6a5f5d956cbf2c2e1b4d565ed", - snow: "c5d9630d80557145bbde1ff03fc8cb3619f5514c3bf6903fd5ad1deb0e38e4a2", - starter: "64e651980e3f8e9f39a4f0fa23b5d7913a7e1c99f606a4ea737aec112ae2e435", - "tower-defense": "00af2e6b3584af6d8c03ab81ec89590ebbb8af6a9e10bdea8e0b9c1b5558c564", + "action-rpg": "88a0c2b6a5de858b825b48163aa6baaf0247a6c37adf7cd22804ca2aece99537", + minimal: "2f4a541b17adc6ac92ac469dd2a3d2adb6c2c819d49302d0c69e2b0b758d4f27", + platformer: "eeae46b7bd30b454c86bb69f9962c99d014d5ec486f0cce9dff331ad2e3dc5f8", + puzzle: "66e94555c964bc98ee57ad5a2bdaaac9e3555a5e0d372817d7563b5c10698afe", + racing: "9e7d23bcc707ceb0e764ee8aba8a1d47feeb32941a87fdf80de1e786d8fd7116", + rain: "145eab4d9196781dec520645944daa4ec6f94ede6b5e9a67565df3e50e7fa762", + rts: "c105e4ee6b31452e75891f82c62a0d9dc7ccdb952ffdf3ca6228730848e3647a", + runner: "7579c2d75ea26c4b17afc01c43a5f9db5b507910edf39833aa05e6996d5151a9", + sailing: "515123a0e72b1989f7a762d0c1ab03d6bdaeaf4e8b7e3e010c670d6f278ce514", + shooter: "626dfe4c6745ff4229c7f0a87b5520e919c7bc7564a6b3be0c546e5042ea5f60", + snow: "59970d8620faa76537fc95da8d0a26c0aa5ce05e772470c5b96711a2e789feb7", + starter: "94188f510247a627d559cbce020b5c9ce1701a3a63a426cfb04ffd9378e3c527", + "tower-defense": "afb52872545273c7bd566f0f432aba102f93dde33bf480a1ac264b9964e052a6", }; const GENERATED_SCAFFOLD_METADATA = diff --git a/packages/create-threenative/__tests__/world-environment-lifetime.spec.ts b/packages/create-threenative/__tests__/world-environment-lifetime.spec.ts index 53b76cbcdd..f44c0cd516 100644 --- a/packages/create-threenative/__tests__/world-environment-lifetime.spec.ts +++ b/packages/create-threenative/__tests__/world-environment-lifetime.spec.ts @@ -145,3 +145,23 @@ it.each(["texture", "rtt"])("leaves caller-owned %s resources alive", (kind) => borrowedRtt?._quadMesh.material.dispose(); supplied.value.dispose(); }); + +it("releases the unique direct installation receipt rather than the legacy node identity", () => { + const dispose = vi.fn(); + const clearOutputNode = vi.fn(); + const applied = new WorldEnvironment({ bloomEnabled: false, screenSpaceAA: "disabled" }).apply( + { + kind: "webgpu", + raw: {}, + clearOutputNode, + setOutputNode: () => ({ isCurrent: () => true, dispose }), + }, + new Scene(), + new PerspectiveCamera(), + { baseColour: (scenePass) => scenePass }, + ); + applied.dispose?.(); + applied.dispose?.(); + expect(dispose).toHaveBeenCalledTimes(1); + expect(clearOutputNode).not.toHaveBeenCalled(); +}); diff --git a/packages/create-threenative/template-assets/worldEnvironment.ts b/packages/create-threenative/template-assets/worldEnvironment.ts index e5ee804bc0..db8c58ad10 100644 --- a/packages/create-threenative/template-assets/worldEnvironment.ts +++ b/packages/create-threenative/template-assets/worldEnvironment.ts @@ -327,6 +327,11 @@ function stage(definition: { function denoised(node: ReturnType): ChainNode { return node as unknown as ChainNode; } +type OutputInstallation = { isCurrent(): boolean; dispose(): void }; +type OutputSetter = + | ((node: unknown, worldPass?: unknown) => void) + | ((node: unknown, worldPass?: unknown) => OutputInstallation); + export type OutputRenderer = { kind: string; raw: unknown; @@ -335,8 +340,8 @@ export type OutputRenderer = { * stage is off: the chain installs nothing for an empty stage list, and dropping the game's * own composition on the floor would be the silent no-op this class exists to prevent. */ - setOutputNode?: (node: unknown, worldPass?: unknown) => void; - /** Clear only the named current graph, so an obsolete scene cannot clear its replacement. */ + setOutputNode?: OutputSetter; + /** Legacy node-only clear. The returned receipt distinguishes same-node reinstalls. */ clearOutputNode?: (expectedNode?: unknown) => void; createRenderChain?: (options: { input?: unknown; @@ -755,8 +760,15 @@ export class WorldEnvironment { releaseGraph(); throw new Error("Output node installation and ownership-aware disposal are required."); } + let installation: OutputInstallation | undefined; try { - renderer.setOutputNode(exposed, scenePass); + const returned = renderer.setOutputNode(exposed, scenePass); + installation = + returned && + typeof returned.isCurrent === "function" && + typeof returned.dispose === "function" + ? returned + : undefined; } catch (error) { releaseGraph(); throw error; @@ -767,7 +779,9 @@ export class WorldEnvironment { stages: [], dispose: () => { if (released) return; - renderer.clearOutputNode?.(exposed); + if (installation) installation.dispose(); + // Legacy adapters returning void retain node-only, not installation-level safety. + else renderer.clearOutputNode?.(exposed); releaseGraph(); }, }; diff --git a/packages/create-threenative/templates/action-rpg/src/render/worldEnvironment.ts b/packages/create-threenative/templates/action-rpg/src/render/worldEnvironment.ts index e5ee804bc0..db8c58ad10 100644 --- a/packages/create-threenative/templates/action-rpg/src/render/worldEnvironment.ts +++ b/packages/create-threenative/templates/action-rpg/src/render/worldEnvironment.ts @@ -327,6 +327,11 @@ function stage(definition: { function denoised(node: ReturnType): ChainNode { return node as unknown as ChainNode; } +type OutputInstallation = { isCurrent(): boolean; dispose(): void }; +type OutputSetter = + | ((node: unknown, worldPass?: unknown) => void) + | ((node: unknown, worldPass?: unknown) => OutputInstallation); + export type OutputRenderer = { kind: string; raw: unknown; @@ -335,8 +340,8 @@ export type OutputRenderer = { * stage is off: the chain installs nothing for an empty stage list, and dropping the game's * own composition on the floor would be the silent no-op this class exists to prevent. */ - setOutputNode?: (node: unknown, worldPass?: unknown) => void; - /** Clear only the named current graph, so an obsolete scene cannot clear its replacement. */ + setOutputNode?: OutputSetter; + /** Legacy node-only clear. The returned receipt distinguishes same-node reinstalls. */ clearOutputNode?: (expectedNode?: unknown) => void; createRenderChain?: (options: { input?: unknown; @@ -755,8 +760,15 @@ export class WorldEnvironment { releaseGraph(); throw new Error("Output node installation and ownership-aware disposal are required."); } + let installation: OutputInstallation | undefined; try { - renderer.setOutputNode(exposed, scenePass); + const returned = renderer.setOutputNode(exposed, scenePass); + installation = + returned && + typeof returned.isCurrent === "function" && + typeof returned.dispose === "function" + ? returned + : undefined; } catch (error) { releaseGraph(); throw error; @@ -767,7 +779,9 @@ export class WorldEnvironment { stages: [], dispose: () => { if (released) return; - renderer.clearOutputNode?.(exposed); + if (installation) installation.dispose(); + // Legacy adapters returning void retain node-only, not installation-level safety. + else renderer.clearOutputNode?.(exposed); releaseGraph(); }, }; diff --git a/packages/create-threenative/templates/minimal/src/render/worldEnvironment.ts b/packages/create-threenative/templates/minimal/src/render/worldEnvironment.ts index e5ee804bc0..db8c58ad10 100644 --- a/packages/create-threenative/templates/minimal/src/render/worldEnvironment.ts +++ b/packages/create-threenative/templates/minimal/src/render/worldEnvironment.ts @@ -327,6 +327,11 @@ function stage(definition: { function denoised(node: ReturnType): ChainNode { return node as unknown as ChainNode; } +type OutputInstallation = { isCurrent(): boolean; dispose(): void }; +type OutputSetter = + | ((node: unknown, worldPass?: unknown) => void) + | ((node: unknown, worldPass?: unknown) => OutputInstallation); + export type OutputRenderer = { kind: string; raw: unknown; @@ -335,8 +340,8 @@ export type OutputRenderer = { * stage is off: the chain installs nothing for an empty stage list, and dropping the game's * own composition on the floor would be the silent no-op this class exists to prevent. */ - setOutputNode?: (node: unknown, worldPass?: unknown) => void; - /** Clear only the named current graph, so an obsolete scene cannot clear its replacement. */ + setOutputNode?: OutputSetter; + /** Legacy node-only clear. The returned receipt distinguishes same-node reinstalls. */ clearOutputNode?: (expectedNode?: unknown) => void; createRenderChain?: (options: { input?: unknown; @@ -755,8 +760,15 @@ export class WorldEnvironment { releaseGraph(); throw new Error("Output node installation and ownership-aware disposal are required."); } + let installation: OutputInstallation | undefined; try { - renderer.setOutputNode(exposed, scenePass); + const returned = renderer.setOutputNode(exposed, scenePass); + installation = + returned && + typeof returned.isCurrent === "function" && + typeof returned.dispose === "function" + ? returned + : undefined; } catch (error) { releaseGraph(); throw error; @@ -767,7 +779,9 @@ export class WorldEnvironment { stages: [], dispose: () => { if (released) return; - renderer.clearOutputNode?.(exposed); + if (installation) installation.dispose(); + // Legacy adapters returning void retain node-only, not installation-level safety. + else renderer.clearOutputNode?.(exposed); releaseGraph(); }, }; diff --git a/packages/create-threenative/templates/platformer/src/render/worldEnvironment.ts b/packages/create-threenative/templates/platformer/src/render/worldEnvironment.ts index e5ee804bc0..db8c58ad10 100644 --- a/packages/create-threenative/templates/platformer/src/render/worldEnvironment.ts +++ b/packages/create-threenative/templates/platformer/src/render/worldEnvironment.ts @@ -327,6 +327,11 @@ function stage(definition: { function denoised(node: ReturnType): ChainNode { return node as unknown as ChainNode; } +type OutputInstallation = { isCurrent(): boolean; dispose(): void }; +type OutputSetter = + | ((node: unknown, worldPass?: unknown) => void) + | ((node: unknown, worldPass?: unknown) => OutputInstallation); + export type OutputRenderer = { kind: string; raw: unknown; @@ -335,8 +340,8 @@ export type OutputRenderer = { * stage is off: the chain installs nothing for an empty stage list, and dropping the game's * own composition on the floor would be the silent no-op this class exists to prevent. */ - setOutputNode?: (node: unknown, worldPass?: unknown) => void; - /** Clear only the named current graph, so an obsolete scene cannot clear its replacement. */ + setOutputNode?: OutputSetter; + /** Legacy node-only clear. The returned receipt distinguishes same-node reinstalls. */ clearOutputNode?: (expectedNode?: unknown) => void; createRenderChain?: (options: { input?: unknown; @@ -755,8 +760,15 @@ export class WorldEnvironment { releaseGraph(); throw new Error("Output node installation and ownership-aware disposal are required."); } + let installation: OutputInstallation | undefined; try { - renderer.setOutputNode(exposed, scenePass); + const returned = renderer.setOutputNode(exposed, scenePass); + installation = + returned && + typeof returned.isCurrent === "function" && + typeof returned.dispose === "function" + ? returned + : undefined; } catch (error) { releaseGraph(); throw error; @@ -767,7 +779,9 @@ export class WorldEnvironment { stages: [], dispose: () => { if (released) return; - renderer.clearOutputNode?.(exposed); + if (installation) installation.dispose(); + // Legacy adapters returning void retain node-only, not installation-level safety. + else renderer.clearOutputNode?.(exposed); releaseGraph(); }, }; diff --git a/packages/create-threenative/templates/puzzle/src/render/worldEnvironment.ts b/packages/create-threenative/templates/puzzle/src/render/worldEnvironment.ts index e5ee804bc0..db8c58ad10 100644 --- a/packages/create-threenative/templates/puzzle/src/render/worldEnvironment.ts +++ b/packages/create-threenative/templates/puzzle/src/render/worldEnvironment.ts @@ -327,6 +327,11 @@ function stage(definition: { function denoised(node: ReturnType): ChainNode { return node as unknown as ChainNode; } +type OutputInstallation = { isCurrent(): boolean; dispose(): void }; +type OutputSetter = + | ((node: unknown, worldPass?: unknown) => void) + | ((node: unknown, worldPass?: unknown) => OutputInstallation); + export type OutputRenderer = { kind: string; raw: unknown; @@ -335,8 +340,8 @@ export type OutputRenderer = { * stage is off: the chain installs nothing for an empty stage list, and dropping the game's * own composition on the floor would be the silent no-op this class exists to prevent. */ - setOutputNode?: (node: unknown, worldPass?: unknown) => void; - /** Clear only the named current graph, so an obsolete scene cannot clear its replacement. */ + setOutputNode?: OutputSetter; + /** Legacy node-only clear. The returned receipt distinguishes same-node reinstalls. */ clearOutputNode?: (expectedNode?: unknown) => void; createRenderChain?: (options: { input?: unknown; @@ -755,8 +760,15 @@ export class WorldEnvironment { releaseGraph(); throw new Error("Output node installation and ownership-aware disposal are required."); } + let installation: OutputInstallation | undefined; try { - renderer.setOutputNode(exposed, scenePass); + const returned = renderer.setOutputNode(exposed, scenePass); + installation = + returned && + typeof returned.isCurrent === "function" && + typeof returned.dispose === "function" + ? returned + : undefined; } catch (error) { releaseGraph(); throw error; @@ -767,7 +779,9 @@ export class WorldEnvironment { stages: [], dispose: () => { if (released) return; - renderer.clearOutputNode?.(exposed); + if (installation) installation.dispose(); + // Legacy adapters returning void retain node-only, not installation-level safety. + else renderer.clearOutputNode?.(exposed); releaseGraph(); }, }; diff --git a/packages/create-threenative/templates/racing/src/render/worldEnvironment.ts b/packages/create-threenative/templates/racing/src/render/worldEnvironment.ts index e5ee804bc0..db8c58ad10 100644 --- a/packages/create-threenative/templates/racing/src/render/worldEnvironment.ts +++ b/packages/create-threenative/templates/racing/src/render/worldEnvironment.ts @@ -327,6 +327,11 @@ function stage(definition: { function denoised(node: ReturnType): ChainNode { return node as unknown as ChainNode; } +type OutputInstallation = { isCurrent(): boolean; dispose(): void }; +type OutputSetter = + | ((node: unknown, worldPass?: unknown) => void) + | ((node: unknown, worldPass?: unknown) => OutputInstallation); + export type OutputRenderer = { kind: string; raw: unknown; @@ -335,8 +340,8 @@ export type OutputRenderer = { * stage is off: the chain installs nothing for an empty stage list, and dropping the game's * own composition on the floor would be the silent no-op this class exists to prevent. */ - setOutputNode?: (node: unknown, worldPass?: unknown) => void; - /** Clear only the named current graph, so an obsolete scene cannot clear its replacement. */ + setOutputNode?: OutputSetter; + /** Legacy node-only clear. The returned receipt distinguishes same-node reinstalls. */ clearOutputNode?: (expectedNode?: unknown) => void; createRenderChain?: (options: { input?: unknown; @@ -755,8 +760,15 @@ export class WorldEnvironment { releaseGraph(); throw new Error("Output node installation and ownership-aware disposal are required."); } + let installation: OutputInstallation | undefined; try { - renderer.setOutputNode(exposed, scenePass); + const returned = renderer.setOutputNode(exposed, scenePass); + installation = + returned && + typeof returned.isCurrent === "function" && + typeof returned.dispose === "function" + ? returned + : undefined; } catch (error) { releaseGraph(); throw error; @@ -767,7 +779,9 @@ export class WorldEnvironment { stages: [], dispose: () => { if (released) return; - renderer.clearOutputNode?.(exposed); + if (installation) installation.dispose(); + // Legacy adapters returning void retain node-only, not installation-level safety. + else renderer.clearOutputNode?.(exposed); releaseGraph(); }, }; diff --git a/packages/create-threenative/templates/rain/src/render/worldEnvironment.ts b/packages/create-threenative/templates/rain/src/render/worldEnvironment.ts index e5ee804bc0..db8c58ad10 100644 --- a/packages/create-threenative/templates/rain/src/render/worldEnvironment.ts +++ b/packages/create-threenative/templates/rain/src/render/worldEnvironment.ts @@ -327,6 +327,11 @@ function stage(definition: { function denoised(node: ReturnType): ChainNode { return node as unknown as ChainNode; } +type OutputInstallation = { isCurrent(): boolean; dispose(): void }; +type OutputSetter = + | ((node: unknown, worldPass?: unknown) => void) + | ((node: unknown, worldPass?: unknown) => OutputInstallation); + export type OutputRenderer = { kind: string; raw: unknown; @@ -335,8 +340,8 @@ export type OutputRenderer = { * stage is off: the chain installs nothing for an empty stage list, and dropping the game's * own composition on the floor would be the silent no-op this class exists to prevent. */ - setOutputNode?: (node: unknown, worldPass?: unknown) => void; - /** Clear only the named current graph, so an obsolete scene cannot clear its replacement. */ + setOutputNode?: OutputSetter; + /** Legacy node-only clear. The returned receipt distinguishes same-node reinstalls. */ clearOutputNode?: (expectedNode?: unknown) => void; createRenderChain?: (options: { input?: unknown; @@ -755,8 +760,15 @@ export class WorldEnvironment { releaseGraph(); throw new Error("Output node installation and ownership-aware disposal are required."); } + let installation: OutputInstallation | undefined; try { - renderer.setOutputNode(exposed, scenePass); + const returned = renderer.setOutputNode(exposed, scenePass); + installation = + returned && + typeof returned.isCurrent === "function" && + typeof returned.dispose === "function" + ? returned + : undefined; } catch (error) { releaseGraph(); throw error; @@ -767,7 +779,9 @@ export class WorldEnvironment { stages: [], dispose: () => { if (released) return; - renderer.clearOutputNode?.(exposed); + if (installation) installation.dispose(); + // Legacy adapters returning void retain node-only, not installation-level safety. + else renderer.clearOutputNode?.(exposed); releaseGraph(); }, }; diff --git a/packages/create-threenative/templates/rts/src/render/worldEnvironment.ts b/packages/create-threenative/templates/rts/src/render/worldEnvironment.ts index e5ee804bc0..db8c58ad10 100644 --- a/packages/create-threenative/templates/rts/src/render/worldEnvironment.ts +++ b/packages/create-threenative/templates/rts/src/render/worldEnvironment.ts @@ -327,6 +327,11 @@ function stage(definition: { function denoised(node: ReturnType): ChainNode { return node as unknown as ChainNode; } +type OutputInstallation = { isCurrent(): boolean; dispose(): void }; +type OutputSetter = + | ((node: unknown, worldPass?: unknown) => void) + | ((node: unknown, worldPass?: unknown) => OutputInstallation); + export type OutputRenderer = { kind: string; raw: unknown; @@ -335,8 +340,8 @@ export type OutputRenderer = { * stage is off: the chain installs nothing for an empty stage list, and dropping the game's * own composition on the floor would be the silent no-op this class exists to prevent. */ - setOutputNode?: (node: unknown, worldPass?: unknown) => void; - /** Clear only the named current graph, so an obsolete scene cannot clear its replacement. */ + setOutputNode?: OutputSetter; + /** Legacy node-only clear. The returned receipt distinguishes same-node reinstalls. */ clearOutputNode?: (expectedNode?: unknown) => void; createRenderChain?: (options: { input?: unknown; @@ -755,8 +760,15 @@ export class WorldEnvironment { releaseGraph(); throw new Error("Output node installation and ownership-aware disposal are required."); } + let installation: OutputInstallation | undefined; try { - renderer.setOutputNode(exposed, scenePass); + const returned = renderer.setOutputNode(exposed, scenePass); + installation = + returned && + typeof returned.isCurrent === "function" && + typeof returned.dispose === "function" + ? returned + : undefined; } catch (error) { releaseGraph(); throw error; @@ -767,7 +779,9 @@ export class WorldEnvironment { stages: [], dispose: () => { if (released) return; - renderer.clearOutputNode?.(exposed); + if (installation) installation.dispose(); + // Legacy adapters returning void retain node-only, not installation-level safety. + else renderer.clearOutputNode?.(exposed); releaseGraph(); }, }; diff --git a/packages/create-threenative/templates/runner/src/render/worldEnvironment.ts b/packages/create-threenative/templates/runner/src/render/worldEnvironment.ts index e5ee804bc0..db8c58ad10 100644 --- a/packages/create-threenative/templates/runner/src/render/worldEnvironment.ts +++ b/packages/create-threenative/templates/runner/src/render/worldEnvironment.ts @@ -327,6 +327,11 @@ function stage(definition: { function denoised(node: ReturnType): ChainNode { return node as unknown as ChainNode; } +type OutputInstallation = { isCurrent(): boolean; dispose(): void }; +type OutputSetter = + | ((node: unknown, worldPass?: unknown) => void) + | ((node: unknown, worldPass?: unknown) => OutputInstallation); + export type OutputRenderer = { kind: string; raw: unknown; @@ -335,8 +340,8 @@ export type OutputRenderer = { * stage is off: the chain installs nothing for an empty stage list, and dropping the game's * own composition on the floor would be the silent no-op this class exists to prevent. */ - setOutputNode?: (node: unknown, worldPass?: unknown) => void; - /** Clear only the named current graph, so an obsolete scene cannot clear its replacement. */ + setOutputNode?: OutputSetter; + /** Legacy node-only clear. The returned receipt distinguishes same-node reinstalls. */ clearOutputNode?: (expectedNode?: unknown) => void; createRenderChain?: (options: { input?: unknown; @@ -755,8 +760,15 @@ export class WorldEnvironment { releaseGraph(); throw new Error("Output node installation and ownership-aware disposal are required."); } + let installation: OutputInstallation | undefined; try { - renderer.setOutputNode(exposed, scenePass); + const returned = renderer.setOutputNode(exposed, scenePass); + installation = + returned && + typeof returned.isCurrent === "function" && + typeof returned.dispose === "function" + ? returned + : undefined; } catch (error) { releaseGraph(); throw error; @@ -767,7 +779,9 @@ export class WorldEnvironment { stages: [], dispose: () => { if (released) return; - renderer.clearOutputNode?.(exposed); + if (installation) installation.dispose(); + // Legacy adapters returning void retain node-only, not installation-level safety. + else renderer.clearOutputNode?.(exposed); releaseGraph(); }, }; diff --git a/packages/create-threenative/templates/sailing/src/render/worldEnvironment.ts b/packages/create-threenative/templates/sailing/src/render/worldEnvironment.ts index e5ee804bc0..db8c58ad10 100644 --- a/packages/create-threenative/templates/sailing/src/render/worldEnvironment.ts +++ b/packages/create-threenative/templates/sailing/src/render/worldEnvironment.ts @@ -327,6 +327,11 @@ function stage(definition: { function denoised(node: ReturnType): ChainNode { return node as unknown as ChainNode; } +type OutputInstallation = { isCurrent(): boolean; dispose(): void }; +type OutputSetter = + | ((node: unknown, worldPass?: unknown) => void) + | ((node: unknown, worldPass?: unknown) => OutputInstallation); + export type OutputRenderer = { kind: string; raw: unknown; @@ -335,8 +340,8 @@ export type OutputRenderer = { * stage is off: the chain installs nothing for an empty stage list, and dropping the game's * own composition on the floor would be the silent no-op this class exists to prevent. */ - setOutputNode?: (node: unknown, worldPass?: unknown) => void; - /** Clear only the named current graph, so an obsolete scene cannot clear its replacement. */ + setOutputNode?: OutputSetter; + /** Legacy node-only clear. The returned receipt distinguishes same-node reinstalls. */ clearOutputNode?: (expectedNode?: unknown) => void; createRenderChain?: (options: { input?: unknown; @@ -755,8 +760,15 @@ export class WorldEnvironment { releaseGraph(); throw new Error("Output node installation and ownership-aware disposal are required."); } + let installation: OutputInstallation | undefined; try { - renderer.setOutputNode(exposed, scenePass); + const returned = renderer.setOutputNode(exposed, scenePass); + installation = + returned && + typeof returned.isCurrent === "function" && + typeof returned.dispose === "function" + ? returned + : undefined; } catch (error) { releaseGraph(); throw error; @@ -767,7 +779,9 @@ export class WorldEnvironment { stages: [], dispose: () => { if (released) return; - renderer.clearOutputNode?.(exposed); + if (installation) installation.dispose(); + // Legacy adapters returning void retain node-only, not installation-level safety. + else renderer.clearOutputNode?.(exposed); releaseGraph(); }, }; diff --git a/packages/create-threenative/templates/shooter/src/render/worldEnvironment.ts b/packages/create-threenative/templates/shooter/src/render/worldEnvironment.ts index e5ee804bc0..db8c58ad10 100644 --- a/packages/create-threenative/templates/shooter/src/render/worldEnvironment.ts +++ b/packages/create-threenative/templates/shooter/src/render/worldEnvironment.ts @@ -327,6 +327,11 @@ function stage(definition: { function denoised(node: ReturnType): ChainNode { return node as unknown as ChainNode; } +type OutputInstallation = { isCurrent(): boolean; dispose(): void }; +type OutputSetter = + | ((node: unknown, worldPass?: unknown) => void) + | ((node: unknown, worldPass?: unknown) => OutputInstallation); + export type OutputRenderer = { kind: string; raw: unknown; @@ -335,8 +340,8 @@ export type OutputRenderer = { * stage is off: the chain installs nothing for an empty stage list, and dropping the game's * own composition on the floor would be the silent no-op this class exists to prevent. */ - setOutputNode?: (node: unknown, worldPass?: unknown) => void; - /** Clear only the named current graph, so an obsolete scene cannot clear its replacement. */ + setOutputNode?: OutputSetter; + /** Legacy node-only clear. The returned receipt distinguishes same-node reinstalls. */ clearOutputNode?: (expectedNode?: unknown) => void; createRenderChain?: (options: { input?: unknown; @@ -755,8 +760,15 @@ export class WorldEnvironment { releaseGraph(); throw new Error("Output node installation and ownership-aware disposal are required."); } + let installation: OutputInstallation | undefined; try { - renderer.setOutputNode(exposed, scenePass); + const returned = renderer.setOutputNode(exposed, scenePass); + installation = + returned && + typeof returned.isCurrent === "function" && + typeof returned.dispose === "function" + ? returned + : undefined; } catch (error) { releaseGraph(); throw error; @@ -767,7 +779,9 @@ export class WorldEnvironment { stages: [], dispose: () => { if (released) return; - renderer.clearOutputNode?.(exposed); + if (installation) installation.dispose(); + // Legacy adapters returning void retain node-only, not installation-level safety. + else renderer.clearOutputNode?.(exposed); releaseGraph(); }, }; diff --git a/packages/create-threenative/templates/snow/src/render/worldEnvironment.ts b/packages/create-threenative/templates/snow/src/render/worldEnvironment.ts index e5ee804bc0..db8c58ad10 100644 --- a/packages/create-threenative/templates/snow/src/render/worldEnvironment.ts +++ b/packages/create-threenative/templates/snow/src/render/worldEnvironment.ts @@ -327,6 +327,11 @@ function stage(definition: { function denoised(node: ReturnType): ChainNode { return node as unknown as ChainNode; } +type OutputInstallation = { isCurrent(): boolean; dispose(): void }; +type OutputSetter = + | ((node: unknown, worldPass?: unknown) => void) + | ((node: unknown, worldPass?: unknown) => OutputInstallation); + export type OutputRenderer = { kind: string; raw: unknown; @@ -335,8 +340,8 @@ export type OutputRenderer = { * stage is off: the chain installs nothing for an empty stage list, and dropping the game's * own composition on the floor would be the silent no-op this class exists to prevent. */ - setOutputNode?: (node: unknown, worldPass?: unknown) => void; - /** Clear only the named current graph, so an obsolete scene cannot clear its replacement. */ + setOutputNode?: OutputSetter; + /** Legacy node-only clear. The returned receipt distinguishes same-node reinstalls. */ clearOutputNode?: (expectedNode?: unknown) => void; createRenderChain?: (options: { input?: unknown; @@ -755,8 +760,15 @@ export class WorldEnvironment { releaseGraph(); throw new Error("Output node installation and ownership-aware disposal are required."); } + let installation: OutputInstallation | undefined; try { - renderer.setOutputNode(exposed, scenePass); + const returned = renderer.setOutputNode(exposed, scenePass); + installation = + returned && + typeof returned.isCurrent === "function" && + typeof returned.dispose === "function" + ? returned + : undefined; } catch (error) { releaseGraph(); throw error; @@ -767,7 +779,9 @@ export class WorldEnvironment { stages: [], dispose: () => { if (released) return; - renderer.clearOutputNode?.(exposed); + if (installation) installation.dispose(); + // Legacy adapters returning void retain node-only, not installation-level safety. + else renderer.clearOutputNode?.(exposed); releaseGraph(); }, }; diff --git a/packages/create-threenative/templates/starter/src/render/worldEnvironment.ts b/packages/create-threenative/templates/starter/src/render/worldEnvironment.ts index e5ee804bc0..db8c58ad10 100644 --- a/packages/create-threenative/templates/starter/src/render/worldEnvironment.ts +++ b/packages/create-threenative/templates/starter/src/render/worldEnvironment.ts @@ -327,6 +327,11 @@ function stage(definition: { function denoised(node: ReturnType): ChainNode { return node as unknown as ChainNode; } +type OutputInstallation = { isCurrent(): boolean; dispose(): void }; +type OutputSetter = + | ((node: unknown, worldPass?: unknown) => void) + | ((node: unknown, worldPass?: unknown) => OutputInstallation); + export type OutputRenderer = { kind: string; raw: unknown; @@ -335,8 +340,8 @@ export type OutputRenderer = { * stage is off: the chain installs nothing for an empty stage list, and dropping the game's * own composition on the floor would be the silent no-op this class exists to prevent. */ - setOutputNode?: (node: unknown, worldPass?: unknown) => void; - /** Clear only the named current graph, so an obsolete scene cannot clear its replacement. */ + setOutputNode?: OutputSetter; + /** Legacy node-only clear. The returned receipt distinguishes same-node reinstalls. */ clearOutputNode?: (expectedNode?: unknown) => void; createRenderChain?: (options: { input?: unknown; @@ -755,8 +760,15 @@ export class WorldEnvironment { releaseGraph(); throw new Error("Output node installation and ownership-aware disposal are required."); } + let installation: OutputInstallation | undefined; try { - renderer.setOutputNode(exposed, scenePass); + const returned = renderer.setOutputNode(exposed, scenePass); + installation = + returned && + typeof returned.isCurrent === "function" && + typeof returned.dispose === "function" + ? returned + : undefined; } catch (error) { releaseGraph(); throw error; @@ -767,7 +779,9 @@ export class WorldEnvironment { stages: [], dispose: () => { if (released) return; - renderer.clearOutputNode?.(exposed); + if (installation) installation.dispose(); + // Legacy adapters returning void retain node-only, not installation-level safety. + else renderer.clearOutputNode?.(exposed); releaseGraph(); }, }; diff --git a/packages/create-threenative/templates/tower-defense/src/render/worldEnvironment.ts b/packages/create-threenative/templates/tower-defense/src/render/worldEnvironment.ts index e5ee804bc0..db8c58ad10 100644 --- a/packages/create-threenative/templates/tower-defense/src/render/worldEnvironment.ts +++ b/packages/create-threenative/templates/tower-defense/src/render/worldEnvironment.ts @@ -327,6 +327,11 @@ function stage(definition: { function denoised(node: ReturnType): ChainNode { return node as unknown as ChainNode; } +type OutputInstallation = { isCurrent(): boolean; dispose(): void }; +type OutputSetter = + | ((node: unknown, worldPass?: unknown) => void) + | ((node: unknown, worldPass?: unknown) => OutputInstallation); + export type OutputRenderer = { kind: string; raw: unknown; @@ -335,8 +340,8 @@ export type OutputRenderer = { * stage is off: the chain installs nothing for an empty stage list, and dropping the game's * own composition on the floor would be the silent no-op this class exists to prevent. */ - setOutputNode?: (node: unknown, worldPass?: unknown) => void; - /** Clear only the named current graph, so an obsolete scene cannot clear its replacement. */ + setOutputNode?: OutputSetter; + /** Legacy node-only clear. The returned receipt distinguishes same-node reinstalls. */ clearOutputNode?: (expectedNode?: unknown) => void; createRenderChain?: (options: { input?: unknown; @@ -755,8 +760,15 @@ export class WorldEnvironment { releaseGraph(); throw new Error("Output node installation and ownership-aware disposal are required."); } + let installation: OutputInstallation | undefined; try { - renderer.setOutputNode(exposed, scenePass); + const returned = renderer.setOutputNode(exposed, scenePass); + installation = + returned && + typeof returned.isCurrent === "function" && + typeof returned.dispose === "function" + ? returned + : undefined; } catch (error) { releaseGraph(); throw error; @@ -767,7 +779,9 @@ export class WorldEnvironment { stages: [], dispose: () => { if (released) return; - renderer.clearOutputNode?.(exposed); + if (installation) installation.dispose(); + // Legacy adapters returning void retain node-only, not installation-level safety. + else renderer.clearOutputNode?.(exposed); releaseGraph(); }, }; From beedf1e8703b8d7318f11dea0f183764075cc153 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Paulo=20Furtado?= <30300459+jonit-dev@users.noreply.github.com> Date: Fri, 2 Oct 2026 03:34:11 -0700 Subject: [PATCH 10/41] test(vq07): isolate scattering and exercise graph teardown --- .../PRD-VQ-07-volumetric-fog.md | 8 + .../vq07-progress/4f8fe47b1/provenance.json | 286 +++++++++++++++++- .../playtests/vq-volumetric-fog.playtest.json | 102 ++++++- examples/abyss-framework/vq-fog/README.md | 4 +- examples/abyss-framework/vq-fog/src/game.ts | 55 +++- .../__tests__/vq-fog-fixture.spec.ts | 98 ++++++ .../__tests__/verify-volumetric-fog.spec.ts | 78 ++++- scripts/verify-volumetric-fog.ts | 161 +++++++++- 8 files changed, 756 insertions(+), 36 deletions(-) create mode 100644 packages/create-threenative/__tests__/vq-fog-fixture.spec.ts diff --git a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md index acb7bf2b9e..1871f02c17 100644 --- a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md +++ b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md @@ -91,3 +91,11 @@ First successful actual fog captures: [run 36990624761](https://github.com/Three Installation ownership correction: `setOutputNode` now returns a unique optional receipt with `isCurrent()` / `dispose()`, capturing the actual `RenderPipeline` installation. Same-node reinstall regressions failed first; old observers and disposers now respect the receipt, as does the generated direct base-colour path. Legacy void-style adapters (including historically ignored return values) retain compatibility behavior but do not gain installation-level guarantees. Receipts own only the installed pipeline; graph dependencies still belong to their explicit caller. The superseded node-equality query was removed. The focused renderer/chain/environment/shared-source/scaffold suite passes 157/157, core and touched-source/test typechecks pass, and API/capability checks pass. Generated-source hashes are refreshed only for this intentional shared lifecycle edit. Fresh hosted capture is selected for subsequent renderer/chain/canonical-environment changes. Independent receipt review of staged tree `2062ba7783c53bc27a5ba6537a8b60874b9c06fa` passed for pipeline-installation ownership: the reviewer reran renderer/render-chain/WorldEnvironment tests, 89/89 passed, with no blocking defect in that delta. This explicitly does not transfer or guarantee arbitrary shared graph-dependency lifetimes. Hosted pixel proof will be rerun at the published receipt head. + + +Receipt-head runtime revalidation: [run 36994760252](https://github.com/ThreeNativeHQ/threenative/actions/runs/36994760252) passed all nine variants at exact source `9b2bcd7a1e9db2aa181a34c2c7fd5a060724138a`, Google SwiftShader WebGPU, 640×400, no diagnostics. Downloaded artifact `11220323995` matched SHA256 `658c454f4f1888f2b98f9b78054b7f3ae6cebedbe6327372ec844f21a058e71d`; all nine PNGs are byte-identical to the retained successful captures. [Existing provenance](../../verification/vq07-progress/4f8fe47b1/provenance.json) now includes that source/run revalidation. This closes receipt-head visual regression evidence, not the remaining fog acceptance. + +The next fixture-only qualification slice removes surface illumination from light-response evidence: black unlit override surfaces plus a black background preserve geometry/depth/shadow casters. A black no-fog arm must produce exactly zero RGB across the whole image. Both fog light toggles must add at least 1 mean RGB byte and change more than 2 RGB bytes on at least 10% of the pinned room ROI (x260, y155, 150×90), excluding the foreground plate; its interior patch (x184, y216, 18×18) must remain exactly black in all four arms. These gates were pinned before hosted execution. Normal positive-arm nonblank checks and all runtime/error/device-loss checks remain unchanged. The verifier now actually runs the committed repeated-lifecycle scenario and its return-to-off extension, checks actual target/material disposal events, and requires the restored pixels to equal the off baseline. Fixture/verifier/source tests pass 29/29 after the new behavioral assertions failed first; strict types and the production build pass. New hosted light/lifecycle evidence remains pending, as do resize/native/performance qualification. + + +Aggregate verification for this slice: root `pnpm typecheck` passed; root `pnpm lint` passed with 1,017 warnings and no errors. Root `pnpm test` exited 2 before suite phases because the installed `tsx` CLI cannot create `/tmp/threenative-suite…/tsx-1000/482.pipe` (`listen EPERM`), the confirmed environment Unix-socket restriction. Two positive `evidence-budget.spec.ts` subprocess fixtures fail for the same `tsx` restriction; no gate was weakened or represented as passed. Full aggregate tests and native execution remain unrun here. Expanded public scenario round-trip validation also caught and corrected the lifecycle loader's metadata (`sourcePath`) being serialized back as an invalid authored key, before hosted execution. diff --git a/docs/verification/vq07-progress/4f8fe47b1/provenance.json b/docs/verification/vq07-progress/4f8fe47b1/provenance.json index ed7fdc91db..5b212febfb 100644 --- a/docs/verification/vq07-progress/4f8fe47b1/provenance.json +++ b/docs/verification/vq07-progress/4f8fe47b1/provenance.json @@ -289,5 +289,289 @@ "fogVsOffMeanAbsoluteByteDifference": 0, "changedPixels": 0 }, - "halfVsFullMeanAbsoluteByteDifference": 0.06948697916666667 + "halfVsFullMeanAbsoluteByteDifference": 0.06948697916666667, + "receiptHeadRevalidation": { + "sourceSha": "9b2bcd7a1e9db2aa181a34c2c7fd5a060724138a", + "runId": 36994760252, + "runUrl": "https://github.com/ThreeNativeHQ/threenative/actions/runs/36994760252", + "artifactId": 11220323995, + "artifactSha256": "658c454f4f1888f2b98f9b78054b7f3ae6cebedbe6327372ec844f21a058e71d", + "allNinePngBytesIdentical": true, + "results": [ + { + "mode": "off", + "sourceSha": "9b2bcd7a1e9db2aa181a34c2c7fd5a060724138a", + "pass": true, + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "diagnostics": [] + }, + { + "mode": "zero", + "sourceSha": "9b2bcd7a1e9db2aa181a34c2c7fd5a060724138a", + "pass": true, + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "diagnostics": [] + }, + { + "mode": "fog", + "sourceSha": "9b2bcd7a1e9db2aa181a34c2c7fd5a060724138a", + "pass": true, + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "diagnostics": [] + }, + { + "mode": "inside", + "sourceSha": "9b2bcd7a1e9db2aa181a34c2c7fd5a060724138a", + "pass": true, + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "diagnostics": [] + }, + { + "mode": "sunOff", + "sourceSha": "9b2bcd7a1e9db2aa181a34c2c7fd5a060724138a", + "pass": true, + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "diagnostics": [] + }, + { + "mode": "pointOff", + "sourceSha": "9b2bcd7a1e9db2aa181a34c2c7fd5a060724138a", + "pass": true, + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "diagnostics": [] + }, + { + "mode": "overlap", + "sourceSha": "9b2bcd7a1e9db2aa181a34c2c7fd5a060724138a", + "pass": true, + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "diagnostics": [] + }, + { + "mode": "half", + "sourceSha": "9b2bcd7a1e9db2aa181a34c2c7fd5a060724138a", + "pass": true, + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "diagnostics": [] + }, + { + "mode": "wallOff", + "sourceSha": "9b2bcd7a1e9db2aa181a34c2c7fd5a060724138a", + "pass": true, + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "diagnostics": [] + }, + { + "assertion": "zero-density pixel identity", + "pass": true + } + ] + } } diff --git a/examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json b/examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json index 20862736fe..17d42e871c 100644 --- a/examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json +++ b/examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json @@ -2,17 +2,48 @@ "schemaVersion": 1, "name": "vq-volumetric-fog-lifecycle", "target": "web", - "viewport": { "width": 640, "height": 400 }, + "viewport": { + "width": 640, + "height": 400 + }, "warmupFrames": 60, "steps": [ - { "press": ["KeyI"], "holdTicks": 1, "release": true }, - { "kind": "wait", "waitFrames": 20 }, - { "press": ["KeyO"], "holdTicks": 1, "release": true }, - { "kind": "wait", "waitFrames": 20 }, - { "press": ["KeyF"], "holdTicks": 1, "release": true }, - { "kind": "wait", "waitFrames": 20 }, - { "press": ["KeyC"], "holdTicks": 1, "release": true }, - { "kind": "wait", "waitFrames": 60 } + { + "press": ["KeyI"], + "holdTicks": 1, + "release": true + }, + { + "kind": "wait", + "waitFrames": 20 + }, + { + "press": ["KeyO"], + "holdTicks": 1, + "release": true + }, + { + "kind": "wait", + "waitFrames": 20 + }, + { + "press": ["KeyF"], + "holdTicks": 1, + "release": true + }, + { + "kind": "wait", + "waitFrames": 20 + }, + { + "press": ["KeyC"], + "holdTicks": 1, + "release": true + }, + { + "kind": "wait", + "waitFrames": 60 + } ], "assert": { "components": [ @@ -34,12 +65,57 @@ "equals": 1, "allowTrivial": "Exactly the current fog RTT remains after replacement." }, - { "entity": "fog", "component": "disposedGraphs", "gte": 4, "changed": true } + { + "entity": "fog", + "component": "disposedGraphs", + "gte": 4, + "changed": true + }, + { + "entity": "fog", + "component": "createdTargets", + "equals": 3, + "allowTrivial": "Observe actual owned teardown events and the live target balance after reconstruction." + }, + { + "entity": "fog", + "component": "releasedTargets", + "equals": 2, + "allowTrivial": "Observe actual owned teardown events and the live target balance after reconstruction." + }, + { + "entity": "fog", + "component": "releasedMaterials", + "equals": 2, + "allowTrivial": "Observe actual owned teardown events and the live target balance after reconstruction." + }, + { + "entity": "fog", + "component": "liveTargets", + "equals": 1, + "allowTrivial": "Observe actual owned teardown events and the live target balance after reconstruction." + } ], - "diagnostics": { "noConsoleErrors": true, "noRuntimeDiagnostics": true, "runtimeReady": true }, + "diagnostics": { + "noConsoleErrors": true, + "noRuntimeDiagnostics": true, + "runtimeReady": true + }, "visual": [ - { "region": { "x": 0, "y": 0, "width": 640, "height": 400, "minNonblankPixelRatio": 0.05 } } + { + "region": { + "x": 0, + "y": 0, + "width": 640, + "height": 400, + "minNonblankPixelRatio": 0.05 + } + } ] }, - "artifacts": { "screenshots": "after", "console": true, "runtimeTrace": true } + "artifacts": { + "screenshots": "after", + "console": true, + "runtimeTrace": true + } } diff --git a/examples/abyss-framework/vq-fog/README.md b/examples/abyss-framework/vq-fog/README.md index 454739dc18..754ff0db0a 100644 --- a/examples/abyss-framework/vq-fog/README.md +++ b/examples/abyss-framework/vq-fog/README.md @@ -10,6 +10,8 @@ This opt-in fixture uses the starter's generated `volumetricFog.ts` and `WorldEn - H: half-resolution fog with depth-discontinuity fallback - W: remove the foreground wall so current depth changes - C: dispose and rebuild the current graph +- L / K / J: scattering-only black-surface control, then directional / point light off +- N: black no-fog control (exact zero RGB expected) The medium replaces scene fog, aerial haze and god rays. The only local light admitted here is an unshadowed finite-range point source. No temporal history is retained. The source rejects orthographic, logarithmic and reversed-depth configurations rather than pretending they are qualified. @@ -23,7 +25,7 @@ pnpm --filter abyss-framework exec vite build --config vq-fog/vite.config.ts node --import tsx scripts/verify-volumetric-fog.ts ``` -The existing public runner provides headed Chromium, a private Xvfb, canvas captures and adapter provenance. The feature-specific hosted integration workflow invokes these commands on Ubuntu 24.04 and preserves PNGs, reports, observations and the tested source SHA under `artifacts/volumetric-fog/`. Software adapters qualify correctness only. A device-loss warning invalidates the result even if the runner reports a pass. The current verifier checks zero-density image identity; foreground-wall/shaft appearance still requires inspecting the actual captures. Do not treat the source build or WGSL generation test as runtime proof. +The existing public runner provides headed Chromium, a private Xvfb, canvas captures and adapter provenance. The feature-specific hosted integration workflow invokes these commands on Ubuntu 24.04 and preserves PNGs, reports, observations and the tested source SHA under `artifacts/volumetric-fog/`. Software adapters qualify correctness only. A device-loss warning invalidates the result even if the runner reports a pass. The verifier checks zero-density identity, isolated directional/point scattering in a pinned room region with an exact-black foreground plate, actual teardown events over repeated graph replacement, and return-to-off pixel identity. It retains named light identities and source/adapter provenance. Foreground-wall/shaft appearance also requires inspecting the actual captures. Do not treat the source build or WGSL generation test as runtime proof. ## Native entry and lifecycle diff --git a/examples/abyss-framework/vq-fog/src/game.ts b/examples/abyss-framework/vq-fog/src/game.ts index f25bc2080f..cc15201145 100644 --- a/examples/abyss-framework/vq-fog/src/game.ts +++ b/examples/abyss-framework/vq-fog/src/game.ts @@ -6,6 +6,7 @@ import { Group, HemisphereLight, Mesh, + MeshBasicMaterial, MeshStandardMaterial, type PerspectiveCamera, PointLight, @@ -21,6 +22,11 @@ const initialState = { ready: false, builds: 0, disposedGraphs: 0, + createdTargets: 0, + releasedTargets: 0, + releasedMaterials: 0, + liveTargets: 0, + scatteringOnly: false, targets: 0, pixels: 0, steps: 0, @@ -41,13 +47,20 @@ const modes = [ "overlap", "half", "wallOff", + "scatter", + "scatterSunOff", + "scatterPointOff", + "blackOff", ] as const; type Mode = (typeof modes)[number]; -class FogProbe extends GameScene { +export class FogProbe extends GameScene { static override readonly initialState = initialState; #geometry = new BoxGeometry(); #material = new MeshStandardMaterial({ color: 0x7c8a91, roughness: 0.85 }); + #black = new MeshBasicMaterial({ color: 0x000000 }); + #background = new Color(0x131e2a); + #blackBackground = new Color(0x000000); #sun = new DirectionalLight(0xffedce, 3); #point = new PointLight(0xffad60, 30, 8); #wall: Mesh | undefined; @@ -57,9 +70,12 @@ class FogProbe extends GameScene { #applied: Mode | undefined; #builds = 0; #disposedGraphs = 0; + #createdTargets = 0; + #releasedTargets = 0; + #releasedMaterials = 0; override enter(ctx: FogCtx): void { - ctx.scene.background = new Color(0x131e2a); + ctx.scene.background = this.#background; ctx.scene.fog = null; const box = (position: Vector3, scale: Vector3): Mesh => { const mesh = new Mesh(this.#geometry, this.#material); @@ -77,6 +93,8 @@ class FogProbe extends GameScene { box(new Vector3(3.6, 4, -5), new Vector3(2.8, 0.3, 10)); box(new Vector3(-1.4, 1, -5), new Vector3(1, 2, 1)); this.#wall = box(new Vector3(0.4, 1.6, 3.6), new Vector3(2, 3.2, 0.4)); + this.#sun.name = "fog-directional"; + this.#point.name = "fog-point"; this.#sun.position.set(-3, 7, 1); this.#sun.target.position.set(0, 0, -5); this.#sun.castShadow = true; @@ -105,8 +123,11 @@ class FogProbe extends GameScene { for (const mode of modes) if (ctx.input.justPressed(mode)) this.#mode = mode; if (ctx.input.justPressed("rebuild")) this.#applied = undefined; this.#positionCamera(ctx); - this.#sun.intensity = this.#mode === "sunOff" ? 0 : 3; - this.#point.intensity = this.#mode === "pointOff" ? 0 : 30; + const scatteringOnly = this.#mode.startsWith("scatter") || this.#mode === "blackOff"; + ctx.scene.overrideMaterial = scatteringOnly ? this.#black : null; + ctx.scene.background = scatteringOnly ? this.#blackBackground : this.#background; + this.#sun.intensity = this.#mode === "sunOff" || this.#mode === "scatterSunOff" ? 0 : 3; + this.#point.intensity = this.#mode === "pointOff" || this.#mode === "scatterPointOff" ? 0 : 30; if (this.#wall !== undefined) this.#wall.visible = this.#mode !== "wallOff"; // Warm the ordinary directional shadow map with the first real scene frame before composing. if (this.#applied !== this.#mode && this.#sun.shadow.map !== null) this.#compose(ctx); @@ -116,6 +137,11 @@ class FogProbe extends GameScene { ready: this.#applied === this.#mode, builds: this.#builds, disposedGraphs: this.#disposedGraphs, + createdTargets: this.#createdTargets, + releasedTargets: this.#releasedTargets, + releasedMaterials: this.#releasedMaterials, + liveTargets: this.#createdTargets - this.#releasedTargets, + scatteringOnly, targets: observation?.renderTargets ?? 0, pixels: observation?.pixels ?? 0, steps: observation?.steps ?? 0, @@ -154,7 +180,7 @@ class FogProbe extends GameScene { reversedDepthBuffer?: boolean; }; const fog = createVolumetricFog(ctx.camera as PerspectiveCamera, { - enabled: this.#mode !== "off", + enabled: this.#mode !== "off" && this.#mode !== "blackOff", renderer: ctx.renderer.kind, logarithmicDepth: raw.logarithmicDepthBuffer, reversedDepth: raw.reversedDepthBuffer, @@ -181,9 +207,23 @@ class FogProbe extends GameScene { fog === undefined ? {} : { baseColour: (scenePass) => fog.compose(scenePass) }, ); this.#fog = fog; + const target = fog?.target; + const material = fog?.material; + if (target !== undefined) this.#createdTargets += 1; this.#release = () => { applied.dispose?.(); + // Count actual teardown events, not resize-driven RenderTarget invalidations. + const onTarget = () => { + this.#releasedTargets += 1; + }; + const onMaterial = () => { + this.#releasedMaterials += 1; + }; + target?.addEventListener("dispose", onTarget); + material?.addEventListener("dispose", onMaterial); fog?.dispose(); + target?.removeEventListener("dispose", onTarget); + material?.removeEventListener("dispose", onMaterial); }; this.#builds += 1; this.#applied = this.#mode; @@ -200,6 +240,7 @@ class FogProbe extends GameScene { this.#disposeGraph(); this.#geometry.dispose(); this.#material.dispose(); + this.#black.dispose(); this.#sun.dispose(); this.#point.dispose(); } @@ -218,6 +259,10 @@ export default defineGame({ overlap: { keys: ["KeyB"] }, half: { keys: ["KeyH"] }, wallOff: { keys: ["KeyW"] }, + scatter: { keys: ["KeyL"] }, + scatterSunOff: { keys: ["KeyK"] }, + scatterPointOff: { keys: ["KeyJ"] }, + blackOff: { keys: ["KeyN"] }, rebuild: { keys: ["KeyC"] }, }, plugins: [playtest()], diff --git a/packages/create-threenative/__tests__/vq-fog-fixture.spec.ts b/packages/create-threenative/__tests__/vq-fog-fixture.spec.ts new file mode 100644 index 0000000000..e4516f7242 --- /dev/null +++ b/packages/create-threenative/__tests__/vq-fog-fixture.spec.ts @@ -0,0 +1,98 @@ +import { + type Color, + DepthTexture, + DirectionalLight, + Mesh, + MeshBasicMaterial, + type Object3D, + PerspectiveCamera, + PointLight, + RenderTarget, + Scene, +} from "three"; +import { describe, expect, it } from "vitest"; +import { FogProbe } from "../../../examples/abyss-framework/vq-fog/src/game.js"; +import { Registry } from "../../core/src/entities.js"; +import { createGameStore } from "../../core/src/state.js"; + +type Ctx = Parameters[0]; +function fixture() { + const probe = new FogProbe(); + const scene = new Scene(); + const state = createGameStore({ ...FogProbe.initialState }); + let action = ""; + // No GPU is available in a unit test. Use real scene/state/TSL ownership objects; + // only the input edge and renderer installation boundary are replaced. + const ctx = { + scene, + state, + camera: new PerspectiveCamera(52, 1.6, 0.1, 80), + entities: new Registry(), + add: (object: T): T => { + scene.add(object); + return object; + }, + input: { justPressed: (name: string) => name === action }, + renderer: { + kind: "webgpu", + raw: { shadowMap: { enabled: false } }, + setOutputNode: () => {}, + clearOutputNode: () => {}, + }, + } as unknown as Ctx; + probe.enter(ctx); + const sun = scene.children.find( + (object): object is DirectionalLight => object instanceof DirectionalLight, + ); + if (sun === undefined) throw new Error("Missing authored directional light"); + sun.shadow.map = new RenderTarget(16, 16); + sun.shadow.map.depthTexture = new DepthTexture(16, 16); + return { + probe, + scene, + state, + sun, + select(mode: string) { + action = mode; + probe.update(ctx); + action = ""; + }, + }; +} + +describe("fog qualification fixture", () => { + it("isolates scattering with black unlit surfaces while retaining geometry and shadow casters", () => { + const f = fixture(); + const meshes = f.scene.children.filter((object) => object instanceof Mesh); + f.select("scatter"); + expect(f.scene.overrideMaterial).toBeInstanceOf(MeshBasicMaterial); + expect((f.scene.overrideMaterial as MeshBasicMaterial).color.getHex()).toBe(0); + expect((f.scene.background as Color).getHex()).toBe(0); + expect(meshes.every((mesh) => mesh.castShadow && mesh.visible)).toBe(true); + f.select("scatterSunOff"); + expect(f.sun.intensity).toBe(0); + expect(f.scene.children.find((object) => object instanceof PointLight)?.intensity).toBe(30); + f.select("scatterPointOff"); + expect(f.sun.intensity).toBe(3); + expect(f.scene.children.find((object) => object instanceof PointLight)?.intensity).toBe(0); + f.select("blackOff"); + expect(f.state.getState().targets).toBe(0); + expect((f.scene.background as Color).getHex()).toBe(0); + f.select("fog"); + expect(f.scene.overrideMaterial).toBeNull(); + expect((f.scene.background as Color).getHex()).toBe(0x131e2a); + f.probe.exit(); + }); + it("observes actual target/material release events across rebuild and off", () => { + const f = fixture(); + for (const mode of ["inside", "off", "fog", "rebuild", "off"]) f.select(mode); + expect(f.state.getState()).toMatchObject({ + createdTargets: 3, + releasedTargets: 3, + releasedMaterials: 3, + liveTargets: 0, + targets: 0, + }); + f.probe.exit(); + }); +}); diff --git a/scripts/__tests__/verify-volumetric-fog.spec.ts b/scripts/__tests__/verify-volumetric-fog.spec.ts index e9ba000775..955247f861 100644 --- a/scripts/__tests__/verify-volumetric-fog.spec.ts +++ b/scripts/__tests__/verify-volumetric-fog.spec.ts @@ -3,7 +3,12 @@ import os from "node:os"; import path from "node:path"; import { describe, expect, it } from "vitest"; import { loadPlaytestScenario } from "../../packages/playtest/dist/index.js"; -import { fogCaptureIsValid, fogCaptureScenario } from "../verify-volumetric-fog.js"; +import { + fogCaptureIsValid, + fogCaptureScenario, + fogCaptureScenarios, + fogLightPixelMetrics, +} from "../verify-volumetric-fog.js"; describe("volumetric fog runtime evidence", () => { it("rejects software device loss even when the runner reports a pass", () => { @@ -40,11 +45,13 @@ describe("volumetric fog runtime evidence", () => { it("loads the generated pixel-bearing scenario with the public validator", async () => { const root = await mkdtemp(path.join(os.tmpdir(), "vq07-scenario-")); try { - const file = path.join(root, "fog.playtest.json"); - await writeFile(file, JSON.stringify(fogCaptureScenario("fog", "KeyF"))); - const scenario = await loadPlaytestScenario(root, file); - expect(scenario.assert?.visual).toHaveLength(1); - expect(scenario.artifacts?.screenshots).toBe("after"); + for (const { mode, scenario: authored } of await fogCaptureScenarios()) { + const file = path.join(root, `${mode}.playtest.json`); + await writeFile(file, JSON.stringify(authored)); + const scenario = await loadPlaytestScenario(root, file); + expect(scenario.assert?.visual).toHaveLength(1); + expect(scenario.artifacts?.screenshots).toBe("after"); + } } finally { await rm(root, { recursive: true, force: true }); } @@ -62,3 +69,62 @@ it("uses an inline favicon instead of the confirmed missing /favicon.ico", async const html = await readFile("examples/abyss-framework/vq-fog/index.html", "utf8"); expect(html).toMatch(//); }); + +it("requires a black no-fog control without weakening the positive-arm visual guard", () => { + expect(fogCaptureScenario("blackOff", "KeyN").assert?.visual?.[0]?.region).toMatchObject({ + maxLuminance: 0, + minDarkPixelRatio: 1, + }); + expect( + fogCaptureScenario("scatter", "KeyL").assert?.visual?.[0]?.region?.minNonblankPixelRatio, + ).toBe(0.05); +}); + +it("qualifies both lights in a fixed scattering ROI and rejects stray-pixel evidence", () => { + // Synthetic buffers exercise the verifier only; they are never runtime screenshot evidence. + const frame = () => ({ width: 640, height: 400, data: Buffer.alloc(640 * 400 * 4) }); + const black = frame(); + const both = frame(); + const sunOff = frame(); + const pointOff = frame(); + for (let y = 155; y < 245; y += 1) + for (let x = 260; x < 410; x += 1) { + const i = (y * 640 + x) * 4; + for (let c = 0; c < 3; c += 1) { + both.data[i + c] = 30; + sunOff.data[i + c] = 20; + pointOff.data[i + c] = 10; + } + } + expect(fogLightPixelMetrics(black, both, sunOff, pointOff).pass).toBe(true); + expect(fogLightPixelMetrics(black, both, both, pointOff).pass).toBe(false); + const stray = frame(); + stray.data[(180 * 640 + 300) * 4] = 255; + expect(fogLightPixelMetrics(black, stray, black, black).pass).toBe(false); + const outside = frame(); + outside.data[(10 * 640 + 10) * 4] = 255; + expect(fogLightPixelMetrics(black, outside, black, black).pass).toBe(false); + both.data[(224 * 640 + 193) * 4] = 1; + expect(fogLightPixelMetrics(black, both, sunOff, pointOff).pass).toBe(false); + both.data[(224 * 640 + 193) * 4] = 0; + black.data[0] = 1; + expect(fogLightPixelMetrics(black, both, sunOff, pointOff).pass).toBe(false); + expect(() => fogLightPixelMetrics({ ...black, width: 1 }, both, sunOff, pointOff)).toThrow(/640/); +}); + +it("runs the committed lifecycle and return-to-off scenarios, with actual release counts", async () => { + const scenarios = await fogCaptureScenarios(); + const lifecycle = scenarios.find(({ mode }) => mode === "lifecycle")?.scenario; + const off = scenarios.find(({ mode }) => mode === "lifecycleOff")?.scenario; + expect(lifecycle?.steps).toHaveLength(8); + expect(off?.steps).toHaveLength(10); + expect(lifecycle?.assert?.components).toEqual( + expect.arrayContaining([expect.objectContaining({ component: "releasedTargets", equals: 2 })]), + ); + expect(off?.assert?.components).toEqual( + expect.arrayContaining([ + expect.objectContaining({ component: "releasedTargets", equals: 3 }), + expect.objectContaining({ component: "liveTargets", equals: 0 }), + ]), + ); +}); diff --git a/scripts/verify-volumetric-fog.ts b/scripts/verify-volumetric-fog.ts index 9e1d5fcdbb..af5a4d407e 100644 --- a/scripts/verify-volumetric-fog.ts +++ b/scripts/verify-volumetric-fog.ts @@ -3,7 +3,7 @@ import { mkdir, readFile, writeFile } from "node:fs/promises"; import path from "node:path"; import { fileURLToPath } from "node:url"; import { PNG } from "pngjs"; -import { loadPlaytestScenario } from "../packages/playtest/dist/index.js"; +import { type IPlaytestScenario, loadPlaytestScenario } from "../packages/playtest/dist/index.js"; // Use the built public runner: source-runner browser callbacks under tsx may capture __name. import { WEBGPU_BROWSER_ARGS, @@ -23,9 +23,13 @@ const cases = [ ["overlap", "KeyB"], ["half", "KeyH"], ["wallOff", "KeyW"], + ["blackOff", "KeyN"], + ["scatter", "KeyL"], + ["scatterSunOff", "KeyK"], + ["scatterPointOff", "KeyJ"], ] as const; -export function fogCaptureScenario(mode: string, key: string) { +export function fogCaptureScenario(mode: string, key: string): IPlaytestScenario { return { schemaVersion: 1, name: `vq-volumetric-fog-${mode}`, @@ -34,7 +38,7 @@ export function fogCaptureScenario(mode: string, key: string) { warmupFrames: 60, steps: [ { press: [key], holdTicks: 1, release: true }, - { kind: "wait", waitFrames: 60 }, + { kind: "wait", waitFrames: 60, release: true }, ], assert: { components: [ @@ -53,17 +57,132 @@ export function fogCaptureScenario(mode: string, key: string) { { entity: "fog", component: "targets", - equals: mode === "off" || mode === "zero" ? 0 : 1, + equals: ["off", "zero", "blackOff"].includes(mode) ? 0 : 1, allowTrivial: "Observe the owned allocation baseline for this variant.", }, + ...[ + ["sun", mode !== "sunOff" && mode !== "scatterSunOff"], + ["point", mode !== "pointOff" && mode !== "scatterPointOff"], + ["scatteringOnly", mode.startsWith("scatter") || mode === "blackOff"], + ].map(([component, equals]) => ({ + entity: "fog", + component: String(component), + equals, + allowTrivial: "Observe the declared lighting and surface isolation for this arm.", + })), ], diagnostics: { noConsoleErrors: true, noRuntimeDiagnostics: true, runtimeReady: true }, - visual: [{ region: { x: 0, y: 0, width: 640, height: 400, minNonblankPixelRatio: 0.05 } }], + visual: [ + { + region: { + x: 0, + y: 0, + width: 640, + height: 400, + ...(mode === "blackOff" + ? { minNonblankPixelRatio: 0, minDarkPixelRatio: 1, maxLuminance: 0 } + : { minNonblankPixelRatio: 0.05 }), + }, + }, + ], }, artifacts: { screenshots: "after", console: true, runtimeTrace: true }, }; } +export async function fogCaptureScenarios() { + const result = cases.map(([mode, key]) => ({ + mode: String(mode), + scenario: fogCaptureScenario(mode, key), + })); + const { sourcePath: _sourcePath, ...lifecycle } = await loadPlaytestScenario( + root, + "examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json", + ); + result.push({ mode: "lifecycle", scenario: lifecycle }); + const off = fogCaptureScenario("off", "KeyO"); + off.name = "vq-volumetric-fog-lifecycle-off"; + off.steps = [...lifecycle.steps, ...off.steps]; + off.assert?.components?.push( + ...["createdTargets", "releasedTargets", "releasedMaterials", "liveTargets"].map( + (component) => ({ + entity: "fog", + component, + equals: component === "liveTargets" ? 0 : 3, + allowTrivial: "After three actual fog graphs, off returns the owned allocation baseline.", + }), + ), + ); + result.push({ mode: "lifecycleOff", scenario: off }); + return result; +} + +interface IPixelFrame { + width: number; + height: number; + data: Uint8Array; +} +// Pinned before capture: room interior excludes the foreground plate (x < 238), +// while the second patch lies wholly inside that plate. No single bright pixel can pass. +const SCATTER_ROI = { x: 260, y: 155, width: 150, height: 90 }; +const WALL_ROI = { x: 184, y: 216, width: 18, height: 18 }; +export function fogLightPixelMetrics( + black: IPixelFrame, + both: IPixelFrame, + sunOff: IPixelFrame, + pointOff: IPixelFrame, +) { + const images = [black, both, sunOff, pointOff]; + if ( + images.some( + (image) => image.width !== 640 || image.height !== 400 || image.data.length !== 640 * 400 * 4, + ) + ) + throw new Error("VQ07 scattering evidence requires complete 640x400 RGBA pixels."); + const maxRgb = (image: IPixelFrame, roi: typeof SCATTER_ROI) => { + let maximum = 0; + for (let y = roi.y; y < roi.y + roi.height; y += 1) + for (let x = roi.x; x < roi.x + roi.width; x += 1) + for (let c = 0; c < 3; c += 1) + maximum = Math.max(maximum, image.data[(y * image.width + x) * 4 + c] ?? Number.NaN); + return maximum; + }; + const delta = (without: IPixelFrame) => { + let total = 0; + let changed = 0; + for (let y = SCATTER_ROI.y; y < SCATTER_ROI.y + SCATTER_ROI.height; y += 1) + for (let x = SCATTER_ROI.x; x < SCATTER_ROI.x + SCATTER_ROI.width; x += 1) { + let strongest = 0; + for (let c = 0; c < 3; c += 1) { + const i = (y * both.width + x) * 4 + c; + const difference = (both.data[i] ?? Number.NaN) - (without.data[i] ?? Number.NaN); + total += difference; + strongest = Math.max(strongest, difference); + } + if (strongest > 2) changed += 1; + } + const pixels = SCATTER_ROI.width * SCATTER_ROI.height; + return { meanRgbDelta: total / (pixels * 3), changedPixelRatio: changed / pixels }; + }; + const baselineMaxRgb = maxRgb(black, { x: 0, y: 0, width: 640, height: 400 }); + const wallMaxRgb = Math.max(...images.map((image) => maxRgb(image, WALL_ROI))); + const sun = delta(sunOff); + const point = delta(pointOff); + return { + baselineMaxRgb, + wallMaxRgb, + roi: SCATTER_ROI, + wallRoi: WALL_ROI, + sun, + point, + thresholds: { minMeanRgbDelta: 1, minChangedPixelRatio: 0.1, maxBlackRgb: 0 }, + pass: + baselineMaxRgb === 0 && + wallMaxRgb === 0 && + [sun, point].every((metric) => metric.meanRgbDelta >= 1 && metric.changedPixelRatio >= 0.1), + }; +} + export function fogCaptureIsValid(report: { pass: boolean; capture?: { @@ -108,11 +227,11 @@ async function main(): Promise { results, }; try { - for (const [mode, key] of cases) { + for (const { mode, scenario } of await fogCaptureScenarios()) { const directory = path.join(artifacts, mode); await mkdir(directory, { recursive: true }); const scenarioPath = path.join(directory, "scenario.playtest.json"); - await writeFile(scenarioPath, `${JSON.stringify(fogCaptureScenario(mode, key), null, 2)}\n`); + await writeFile(scenarioPath, `${JSON.stringify(scenario, null, 2)}\n`); await loadPlaytestScenario(root, scenarioPath); const report = await runStandalonePlaytest({ artifactDirectory: directory, @@ -128,9 +247,7 @@ async function main(): Promise { trace: false, server: { cwd: root, - command: - `VQ_FOG_HTTP_LOG=${JSON.stringify(path.join(directory, "http-errors.jsonl"))} ` + - "node examples/abyss-framework/node_modules/vite/bin/vite.js preview --config examples/abyss-framework/vq-fog/vite.config.ts --host 127.0.0.1 --port ${PORT}", + command: `VQ_FOG_HTTP_LOG=${JSON.stringify(path.join(directory, "http-errors.jsonl"))} node examples/abyss-framework/node_modules/vite/bin/vite.js preview --config examples/abyss-framework/vq-fog/vite.config.ts --host 127.0.0.1 --port \${PORT}`, timeoutMs: 60_000, }, }); @@ -146,6 +263,14 @@ async function main(): Promise { pass: valid, capture: report.capture, diagnostics: report.diagnostics, + lights: { + directional: { + name: "fog-directional", + type: "DirectionalLight", + shadow: "ordinary-map", + }, + point: { name: "fog-point", type: "PointLight", shadow: "none", range: 8 }, + }, }); await writeFile( path.join(artifacts, "summary.json"), @@ -162,6 +287,22 @@ async function main(): Promise { if (off.width !== zero.width || off.height !== zero.height || !off.data.equals(zero.data)) throw new Error("VQ07 zero-density identity failed: rendered off/zero pixels differ."); results.push({ assertion: "zero-density pixel identity", pass: true }); + const restored = PNG.sync.read(await readFile(path.join(artifacts, "lifecycleOff/after.png"))); + if (!off.data.equals(restored.data)) + throw new Error("VQ07 lifecycle off did not restore the baseline pixels."); + results.push({ assertion: "repeated lifecycle restores baseline pixels", pass: true }); + const lightFrames = await Promise.all( + ["blackOff", "scatter", "scatterSunOff", "scatterPointOff"].map(async (mode) => + PNG.sync.read(await readFile(path.join(artifacts, mode, "after.png"))), + ), + ); + const [black, both, sunOff, pointOff] = lightFrames; + if (!black || !both || !sunOff || !pointOff) + throw new Error("Missing scattering-control frame."); + const metrics = fogLightPixelMetrics(black, both, sunOff, pointOff); + results.push({ assertion: "isolated light-scattering pixels", ...metrics }); + if (!metrics.pass) + throw new Error("VQ07 isolated light-scattering/black-control pixel gates failed."); } finally { await writeFile(path.join(artifacts, "summary.json"), `${JSON.stringify(summary, null, 2)}\n`); } From 001b934008cbc6e3ab196678506ae9b14f751f1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Paulo=20Furtado?= <30300459+jonit-dev@users.noreply.github.com> Date: Fri, 2 Oct 2026 03:46:31 -0700 Subject: [PATCH 11/41] test(vq07): calibrate black controls without weakening capture guards --- .../PRD-VQ-07-volumetric-fog.md | 3 ++ examples/abyss-framework/vq-fog/README.md | 4 +- examples/abyss-framework/vq-fog/src/game.ts | 27 ++++++++++ .../__tests__/vq-fog-fixture.spec.ts | 6 +++ .../__tests__/verify-volumetric-fog.spec.ts | 15 ++++-- scripts/verify-volumetric-fog.ts | 51 +++++++++++++++++-- 6 files changed, 96 insertions(+), 10 deletions(-) diff --git a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md index fca06e3bc0..be95edd7cd 100644 --- a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md +++ b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md @@ -101,3 +101,6 @@ The next fixture-only qualification slice removes surface illumination from ligh Aggregate verification for this slice: root `pnpm typecheck` passed; root `pnpm lint` passed with 1,017 warnings and no errors. Root `pnpm test` exited 2 before suite phases because the installed `tsx` CLI cannot create `/tmp/threenative-suite…/tsx-1000/482.pipe` (`listen EPERM`), the confirmed environment Unix-socket restriction. Two positive `evidence-budget.spec.ts` subprocess fixtures fail for the same `tsx` restriction; no gate was weakened or represented as passed. Full aggregate tests and native execution remain unrun here. Expanded public scenario round-trip validation also caught and corrected the lifecycle loader's metadata (`sourcePath`) being serialized back as an invalid authored key, before hosted execution. Moving-base reconciliation: `beedf1e8703b8d7318f11dea0f183764075cc153` is merged with exact develop `6c8858d74ae0c76887c4387ffbd90cf6b32fb6a1`. The sole conflict was the generated scaffold digest table: current 0.2.8 package pins and rain's corrected `.ts` verifier import are retained alongside VQ07's receipt/fog source. All thirteen hashes were remeasured from the combined isolated tree after the old table failed. The combined scaffold/doctor/renderer/chain/environment/fog/fixture/verifier suites pass 282/282, create-threenative types and the fixture production build pass. No shared rendering source was changed by the reconciliation. + + +Pre-run calibration correction: source inspection shows the public runner rejects uniform blank captures before evaluating black-region assertions. Rather than accept a failed capture or weaken any normal guard, the four scattering-control arms now share a fixture-owned gradient calibration card at x510–630, y20–140, ahead of the volume. The full fog evaluation area (x0, y0, 500×400) must still be exactly black without fog; the room/light and foreground-wall ROIs are unchanged. An interior calibration patch (x515, y25, 110×110) must have RGB channels at least 32 and be byte-identical across all four controls. The normal full-frame nonblank gate remains 5% in every arm, and every arm must pass all runtime/error/device-loss guards. This revised control design was pinned before any hosted scattering-control execution; no failed pixel threshold was relaxed. The card is visible only in the four fixed-outside-camera controls, so the original normal variants retain their authored picture. New fixture/verifier regressions failed first and pass 9/9; types pass. diff --git a/examples/abyss-framework/vq-fog/README.md b/examples/abyss-framework/vq-fog/README.md index 754ff0db0a..adfaa19b1d 100644 --- a/examples/abyss-framework/vq-fog/README.md +++ b/examples/abyss-framework/vq-fog/README.md @@ -11,7 +11,9 @@ This opt-in fixture uses the starter's generated `volumetricFog.ts` and `WorldEn - W: remove the foreground wall so current depth changes - C: dispose and rebuild the current graph - L / K / J: scattering-only black-surface control, then directional / point light off -- N: black no-fog control (exact zero RGB expected) +- N: black no-fog control (exact zero RGB in the 500×400 fog evaluation area) + +The four scattering controls share a visible gradient calibration card outside the measured fog area, with an identical-pixel check, so a working black control still satisfies the runner's normal nonblank guard. The medium replaces scene fog, aerial haze and god rays. The only local light admitted here is an unshadowed finite-range point source. No temporal history is retained. The source rejects orthographic, logarithmic and reversed-depth configurations rather than pretending they are qualified. diff --git a/examples/abyss-framework/vq-fog/src/game.ts b/examples/abyss-framework/vq-fog/src/game.ts index cc15201145..528aa19bfc 100644 --- a/examples/abyss-framework/vq-fog/src/game.ts +++ b/examples/abyss-framework/vq-fog/src/game.ts @@ -3,12 +3,14 @@ import { BoxGeometry, Color, DirectionalLight, + Float32BufferAttribute, Group, HemisphereLight, Mesh, MeshBasicMaterial, MeshStandardMaterial, type PerspectiveCamera, + PlaneGeometry, PointLight, Vector3, } from "three"; @@ -61,6 +63,7 @@ export class FogProbe extends GameScene { #black = new MeshBasicMaterial({ color: 0x000000 }); #background = new Color(0x131e2a); #blackBackground = new Color(0x000000); + #calibration = new Mesh(new PlaneGeometry(1, 1), new MeshBasicMaterial({ vertexColors: true })); #sun = new DirectionalLight(0xffedce, 3); #point = new PointLight(0xffad60, 30, 8); #wall: Mesh | undefined; @@ -77,6 +80,17 @@ export class FogProbe extends GameScene { override enter(ctx: FogCtx): void { ctx.scene.background = this.#background; ctx.scene.fog = null; + // Same calibration card in every scattering-control arm, outside the measured room ROI. + // It satisfies the ordinary nonblank capture guard without altering any proof threshold. + this.#calibration.name = "fog-calibration"; + this.#calibration.material.allowOverride = false; + this.#calibration.geometry.setAttribute( + "color", + new Float32BufferAttribute([0.3, 0.3, 0.3, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.9, 0.9, 0.9], 3), + ); + this.#calibration.visible = false; + ctx.camera.add(this.#calibration); + ctx.add(ctx.camera); const box = (position: Vector3, scale: Vector3): Mesh => { const mesh = new Mesh(this.#geometry, this.#material); mesh.position.copy(position); @@ -125,6 +139,7 @@ export class FogProbe extends GameScene { this.#positionCamera(ctx); const scatteringOnly = this.#mode.startsWith("scatter") || this.#mode === "blackOff"; ctx.scene.overrideMaterial = scatteringOnly ? this.#black : null; + this.#calibration.visible = scatteringOnly; ctx.scene.background = scatteringOnly ? this.#blackBackground : this.#background; this.#sun.intensity = this.#mode === "sunOff" || this.#mode === "scatterSunOff" ? 0 : 3; this.#point.intensity = this.#mode === "pointOff" || this.#mode === "scatterPointOff" ? 0 : 30; @@ -156,6 +171,15 @@ export class FogProbe extends GameScene { if (this.#mode === "inside") ctx.camera.position.set(0, 1.5, -1); else ctx.camera.position.set(6.5, 3, 11); ctx.camera.lookAt(0, 1.4, -5); + const camera = ctx.camera as PerspectiveCamera; + const halfHeight = Math.tan((camera.fov * Math.PI) / 360); + const halfWidth = halfHeight * camera.aspect; + this.#calibration.position.set( + ((570 / 640) * 2 - 1) * halfWidth, + (1 - (80 / 400) * 2) * halfHeight, + -1, + ); + this.#calibration.scale.set((120 / 640) * 2 * halfWidth, (120 / 400) * 2 * halfHeight, 1); } #compose(ctx: FogCtx): void { @@ -241,6 +265,9 @@ export class FogProbe extends GameScene { this.#geometry.dispose(); this.#material.dispose(); this.#black.dispose(); + this.#calibration.removeFromParent(); + this.#calibration.geometry.dispose(); + this.#calibration.material.dispose(); this.#sun.dispose(); this.#point.dispose(); } diff --git a/packages/create-threenative/__tests__/vq-fog-fixture.spec.ts b/packages/create-threenative/__tests__/vq-fog-fixture.spec.ts index e4516f7242..4fb94ebca7 100644 --- a/packages/create-threenative/__tests__/vq-fog-fixture.spec.ts +++ b/packages/create-threenative/__tests__/vq-fog-fixture.spec.ts @@ -65,6 +65,12 @@ describe("fog qualification fixture", () => { const f = fixture(); const meshes = f.scene.children.filter((object) => object instanceof Mesh); f.select("scatter"); + const calibration = f.scene.getObjectByName("fog-calibration"); + expect(calibration).toBeInstanceOf(Mesh); + expect((calibration as Mesh).material).toBeInstanceOf(MeshBasicMaterial); + expect(((calibration as Mesh).material as MeshBasicMaterial).allowOverride).toBe(false); + expect(calibration?.castShadow).toBe(false); + expect(calibration?.visible).toBe(true); expect(f.scene.overrideMaterial).toBeInstanceOf(MeshBasicMaterial); expect((f.scene.overrideMaterial as MeshBasicMaterial).color.getHex()).toBe(0); expect((f.scene.background as Color).getHex()).toBe(0); diff --git a/scripts/__tests__/verify-volumetric-fog.spec.ts b/scripts/__tests__/verify-volumetric-fog.spec.ts index 955247f861..a8e7df624e 100644 --- a/scripts/__tests__/verify-volumetric-fog.spec.ts +++ b/scripts/__tests__/verify-volumetric-fog.spec.ts @@ -49,7 +49,7 @@ describe("volumetric fog runtime evidence", () => { const file = path.join(root, `${mode}.playtest.json`); await writeFile(file, JSON.stringify(authored)); const scenario = await loadPlaytestScenario(root, file); - expect(scenario.assert?.visual).toHaveLength(1); + expect(scenario.assert?.visual).toHaveLength(mode === "blackOff" ? 2 : 1); expect(scenario.artifacts?.screenshots).toBe("after"); } } finally { @@ -71,7 +71,7 @@ it("uses an inline favicon instead of the confirmed missing /favicon.ico", async }); it("requires a black no-fog control without weakening the positive-arm visual guard", () => { - expect(fogCaptureScenario("blackOff", "KeyN").assert?.visual?.[0]?.region).toMatchObject({ + expect(fogCaptureScenario("blackOff", "KeyN").assert?.visual?.[1]?.region).toMatchObject({ maxLuminance: 0, minDarkPixelRatio: 1, }); @@ -87,6 +87,10 @@ it("qualifies both lights in a fixed scattering ROI and rejects stray-pixel evid const both = frame(); const sunOff = frame(); const pointOff = frame(); + for (const image of [black, both, sunOff, pointOff]) + for (let y = 25; y < 135; y += 1) + for (let x = 515; x < 625; x += 1) + for (let c = 0; c < 3; c += 1) image.data[(y * 640 + x) * 4 + c] = 128; for (let y = 155; y < 245; y += 1) for (let x = 260; x < 410; x += 1) { const i = (y * 640 + x) * 4; @@ -98,15 +102,18 @@ it("qualifies both lights in a fixed scattering ROI and rejects stray-pixel evid } expect(fogLightPixelMetrics(black, both, sunOff, pointOff).pass).toBe(true); expect(fogLightPixelMetrics(black, both, both, pointOff).pass).toBe(false); - const stray = frame(); + const stray = { ...black, data: Buffer.from(black.data) }; stray.data[(180 * 640 + 300) * 4] = 255; expect(fogLightPixelMetrics(black, stray, black, black).pass).toBe(false); - const outside = frame(); + const outside = { ...black, data: Buffer.from(black.data) }; outside.data[(10 * 640 + 10) * 4] = 255; expect(fogLightPixelMetrics(black, outside, black, black).pass).toBe(false); both.data[(224 * 640 + 193) * 4] = 1; expect(fogLightPixelMetrics(black, both, sunOff, pointOff).pass).toBe(false); both.data[(224 * 640 + 193) * 4] = 0; + both.data[(30 * 640 + 520) * 4] = 127; + expect(fogLightPixelMetrics(black, both, sunOff, pointOff).pass).toBe(false); + both.data[(30 * 640 + 520) * 4] = 128; black.data[0] = 1; expect(fogLightPixelMetrics(black, both, sunOff, pointOff).pass).toBe(false); expect(() => fogLightPixelMetrics({ ...black, width: 1 }, both, sunOff, pointOff)).toThrow(/640/); diff --git a/scripts/verify-volumetric-fog.ts b/scripts/verify-volumetric-fog.ts index af5a4d407e..3b828397d0 100644 --- a/scripts/verify-volumetric-fog.ts +++ b/scripts/verify-volumetric-fog.ts @@ -79,11 +79,24 @@ export function fogCaptureScenario(mode: string, key: string): IPlaytestScenario y: 0, width: 640, height: 400, - ...(mode === "blackOff" - ? { minNonblankPixelRatio: 0, minDarkPixelRatio: 1, maxLuminance: 0 } - : { minNonblankPixelRatio: 0.05 }), + minNonblankPixelRatio: 0.05, }, }, + ...(mode === "blackOff" + ? [ + { + region: { + x: 0, + y: 0, + width: 500, + height: 400, + minNonblankPixelRatio: 0, + minDarkPixelRatio: 1, + maxLuminance: 0, + }, + }, + ] + : []), ], }, artifacts: { screenshots: "after", console: true, runtimeTrace: true }, @@ -125,6 +138,8 @@ interface IPixelFrame { // Pinned before capture: room interior excludes the foreground plate (x < 238), // while the second patch lies wholly inside that plate. No single bright pixel can pass. const SCATTER_ROI = { x: 260, y: 155, width: 150, height: 90 }; +const FOG_EVALUATION_ROI = { x: 0, y: 0, width: 500, height: 400 }; +const CALIBRATION_ROI = { x: 515, y: 25, width: 110, height: 110 }; const WALL_ROI = { x: 184, y: 216, width: 18, height: 18 }; export function fogLightPixelMetrics( black: IPixelFrame, @@ -164,7 +179,21 @@ export function fogLightPixelMetrics( const pixels = SCATTER_ROI.width * SCATTER_ROI.height; return { meanRgbDelta: total / (pixels * 3), changedPixelRatio: changed / pixels }; }; - const baselineMaxRgb = maxRgb(black, { x: 0, y: 0, width: 640, height: 400 }); + const baselineMaxRgb = maxRgb(black, FOG_EVALUATION_ROI); + let calibrationMinimum = 255; + let calibrationMaxDifference = 0; + for (let y = CALIBRATION_ROI.y; y < CALIBRATION_ROI.y + CALIBRATION_ROI.height; y += 1) + for (let x = CALIBRATION_ROI.x; x < CALIBRATION_ROI.x + CALIBRATION_ROI.width; x += 1) + for (let c = 0; c < 3; c += 1) { + const i = (y * 640 + x) * 4 + c; + const reference = black.data[i] ?? Number.NaN; + calibrationMinimum = Math.min(calibrationMinimum, reference); + for (const image of images) + calibrationMaxDifference = Math.max( + calibrationMaxDifference, + Math.abs((image.data[i] ?? Number.NaN) - reference), + ); + } const wallMaxRgb = Math.max(...images.map((image) => maxRgb(image, WALL_ROI))); const sun = delta(sunOff); const point = delta(pointOff); @@ -173,11 +202,23 @@ export function fogLightPixelMetrics( wallMaxRgb, roi: SCATTER_ROI, wallRoi: WALL_ROI, + evaluationRoi: FOG_EVALUATION_ROI, + calibrationRoi: CALIBRATION_ROI, + calibrationMinimum, + calibrationMaxDifference, sun, point, - thresholds: { minMeanRgbDelta: 1, minChangedPixelRatio: 0.1, maxBlackRgb: 0 }, + thresholds: { + minMeanRgbDelta: 1, + minChangedPixelRatio: 0.1, + maxBlackRgb: 0, + minCalibrationRgb: 32, + maxCalibrationDifference: 0, + }, pass: baselineMaxRgb === 0 && + calibrationMinimum >= 32 && + calibrationMaxDifference === 0 && wallMaxRgb === 0 && [sun, point].every((metric) => metric.meanRgbDelta >= 1 && metric.changedPixelRatio >= 0.1), }; From 1c9534fe9fdd29458d880afe70c45dc4aa5f22ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Paulo=20Furtado?= <30300459+jonit-dev@users.noreply.github.com> Date: Fri, 2 Oct 2026 03:56:23 -0700 Subject: [PATCH 12/41] test(vq07): retain scattering proof and exercise four owned fog graphs --- .../PRD-VQ-07-volumetric-fog.md | 4 + .../vq07-progress/001b93400/blackOff.png | Bin 0 -> 2481 bytes .../vq07-progress/001b93400/provenance.json | 289 ++++++++++++++++++ .../vq07-progress/001b93400/scatter.png | Bin 0 -> 32743 bytes .../001b93400/scatterPointOff.png | Bin 0 -> 28692 bytes .../vq07-progress/001b93400/scatterSunOff.png | Bin 0 -> 30117 bytes .../playtests/vq-volumetric-fog.playtest.json | 16 +- .../__tests__/vq-fog-fixture.spec.ts | 8 +- .../__tests__/verify-volumetric-fog.spec.ts | 11 +- scripts/verify-volumetric-fog.ts | 4 +- 10 files changed, 318 insertions(+), 14 deletions(-) create mode 100644 docs/verification/vq07-progress/001b93400/blackOff.png create mode 100644 docs/verification/vq07-progress/001b93400/provenance.json create mode 100644 docs/verification/vq07-progress/001b93400/scatter.png create mode 100644 docs/verification/vq07-progress/001b93400/scatterPointOff.png create mode 100644 docs/verification/vq07-progress/001b93400/scatterSunOff.png diff --git a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md index be95edd7cd..09125f6928 100644 --- a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md +++ b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md @@ -104,3 +104,7 @@ Moving-base reconciliation: `beedf1e8703b8d7318f11dea0f183764075cc153` is merged Pre-run calibration correction: source inspection shows the public runner rejects uniform blank captures before evaluating black-region assertions. Rather than accept a failed capture or weaken any normal guard, the four scattering-control arms now share a fixture-owned gradient calibration card at x510–630, y20–140, ahead of the volume. The full fog evaluation area (x0, y0, 500×400) must still be exactly black without fog; the room/light and foreground-wall ROIs are unchanged. An interior calibration patch (x515, y25, 110×110) must have RGB channels at least 32 and be byte-identical across all four controls. The normal full-frame nonblank gate remains 5% in every arm, and every arm must pass all runtime/error/device-loss guards. This revised control design was pinned before any hosted scattering-control execution; no failed pixel threshold was relaxed. The card is visible only in the four fixed-outside-camera controls, so the original normal variants retain their authored picture. New fixture/verifier regressions failed first and pass 9/9; types pass. + +Isolated-scattering progress: [run 36997361343](https://github.com/ThreeNativeHQ/threenative/actions/runs/36997361343) at source `001b934008cbc6e3ab196678506ae9b14f751f1e` passes all thirteen independent captures with empty diagnostics, including the four calibration controls. Downloaded artifact `11221669862` matches SHA256 `2c88ec8b13a525986867301a735ede33f5b76ab3b6d9db3c46459554b5b7a4ca`. The [unchanged scattering PNG](../../verification/vq07-progress/001b93400/scatter.png), [black control](../../verification/vq07-progress/001b93400/blackOff.png) and [four-arm provenance/pixel metrics](../../verification/vq07-progress/001b93400/provenance.json) are retained. The pinned room ROI passes: directional mean RGB delta 15.9585/255, changed ratio 0.99333; point mean delta 48.7755/255, changed ratio 1.0. The 500×400 black area and foreground plate are exactly zero; calibration minimum RGB is 146 and cross-arm difference is exactly zero. These isolates show scattering response rather than changed surface illumination. + +The overall run fails closed on lifecycle's old logical `disposedGraphs >= 4` assertion: the sampled initial state had `builds=0`, so four installs yielded three logical releases. Actual targets/materials were created=3, released=2, live=1 as asserted; there was no device loss or other runtime error. This is preserved as a setup mismatch, not a complete lifecycle pass. The corrected scenario explicitly executes **fog → inside → off → fog → rebuild**, then a separate final-off extension. It now requires exactly four real fog targets created, three target/material releases and one live target at the final fog frame; final off requires all four target/material releases and zero live targets. No dummy resources, manually advanced counters or lowered thresholds are used. New sequence assertions failed first; source/fixture/verifier tests pass 29/29. The stronger sequence and return-to-off pixels await the next hosted run. diff --git a/docs/verification/vq07-progress/001b93400/blackOff.png b/docs/verification/vq07-progress/001b93400/blackOff.png new file mode 100644 index 0000000000000000000000000000000000000000..54a83bcc63c8f6baa549da03c9ed8b18d2703a83 GIT binary patch literal 2481 zcmeHJZA?>F7(Q)TK|zCAA}Hl!LDwJC*kOj%hL0iRV_S+VIM_!i8^L6843#KCdug|2 zBWAOdA#TZZj7&Egkt!3hk=}Ocj|RtwM%Ef3t<1#EUa*qx?$TQ*JLmRv$r6^B`IkR8 z?>+DL^FHsr=fpmF@w&B}*8%|6m6jAL0O0EY;2Glh@Z@qw(GdXF94IY(x#IYlS(ogq zEshP~mThyxVCD4Q&Wel#$=Ur&o05Ld>Dj(>kK)(`l>jVWLk}rWsM7&Ke!h;EkzoUg zi8UZDP6A?Lk^!He0C-QPzLzJkWog5ULCRzeH!XyidHR>f3$7Hc>Mix*Whd>Q@q4UZ zH9z5!o^{`~9$m`Pz=YWf&ljPgeitQ!3Ikg`Z9Qt)@7YkJJ3GnTrgIKd>3GgJJi}zB z4a6J$8j^Gf<0ZBtpX>voSjXF_@EAGIPBz?loNDRwzi8(Ypf|P!n^g8EQB-`gPTNCH zC_P;C&n6i&m4aQ}7Wc)dquWASP%@dZ;T=>4G>rABM=t?E-w$Mxsr!OIPGXb$)Wc+z zN@W9@^Q43N3CFogr}BhVC4}~S(viSbIpu7MNv?U09>W&nZB#T?xhtYt`j}<;!h5RT zXue&hNQ%%yHf`rN8=!g{sxcssro<20*GO!8d}?Oyb|4nU&ZI5jza9o_xvs0Vp+6T( zI8e)6%s21BYKn;fs|SMFb7Vb6BfU4$YX|FA%ErBNe0=?&BlzhUN?qhr6LZq;5bnlg zO7#XRkkv7T=LKlh#aY1`>gJ@@fgohghbu+T&9M$5CB&_4qM<(bc^gPE`kxJWv#k(c zs+SYf6KixQCmH9WdCUR3Nu@0>Y3l-zad%3HDOC8jb7V8leSfiQ%xs7>)gGwK_7-48 z@DM@p1dqE|xe@_2ILX|Y*^8>bQ%aab)yC*-t9NUzL}u&1Z;uSkz~<%-!x^qTE^?rm z8bM=9rHQ(LvoiuX@evdw)k4uMMmbMT4qZgp75Kj8=DMA>Tnpa74xEVFL#LTsdwEJv z?dQ*+*im-0{xR|{$FBlks7Kr=MpQn48#IQ>oID*Gr`Q50@hj#8X+j`|c`=6IEI0`v`NYn~B0QYrB zq_-m^ASl1iNHwqPc&8Pf%Jq(!4vq;Xs5b9=pW~itx2UbL=imDj;rH9V&@DFYHOTLj ze>N@3d^OB9UXJOvBTa8_zKTK|g!?~0I+9o3|JEkydT%OrvdTnlfgcejedkFPEN$3? z2miJGuyhxtp1sTwlT%$^sXn;kb<%V^4Jev^W0GrOPp=Z`30^xU7Zd~Z((+vZ@*cV1 zL;h4B(5L(Su6qBUpVlgBtEfHs6(`D;g&pv|wY>bMev1+cLUiL2fSU`YH@`gLjD;tl N^c8twe?iSBe*;trK8gSU literal 0 HcmV?d00001 diff --git a/docs/verification/vq07-progress/001b93400/provenance.json b/docs/verification/vq07-progress/001b93400/provenance.json new file mode 100644 index 0000000000..056d719d3c --- /dev/null +++ b/docs/verification/vq07-progress/001b93400/provenance.json @@ -0,0 +1,289 @@ +{ + "sourceSha": "001b934008cbc6e3ab196678506ae9b14f751f1e", + "runId": 36997361343, + "runUrl": "https://github.com/ThreeNativeHQ/threenative/actions/runs/36997361343", + "artifactId": 11221669862, + "artifactSha256": "2c88ec8b13a525986867301a735ede33f5b76ab3b6d9db3c46459554b5b7a4ca", + "overallRunPass": false, + "qualification": "Actual browser WebGPU software correctness progress. All isolated-scattering arms pass normal runtime/capture guards and the pinned pixel metrics. Overall run stops at lifecycle setup-count mismatch; no complete lifecycle, resize, native or performance claim.", + "images": { + "blackOff": { + "file": "blackOff.png", + "sha256": "8949e59556dd3e14b91756277782d8a98c2fd4af47bc27b232266540c2e1d3c0", + "mode": "blackOff", + "sourceSha": "001b934008cbc6e3ab196678506ae9b14f751f1e", + "pass": true, + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "diagnostics": [], + "lights": { + "directional": { + "name": "fog-directional", + "type": "DirectionalLight", + "shadow": "ordinary-map" + }, + "point": { + "name": "fog-point", + "type": "PointLight", + "shadow": "none", + "range": 8 + } + } + }, + "scatter": { + "file": "scatter.png", + "sha256": "89df2275163ca948f5ef8b5e18b3f94e57b9e01e5a6f5137dcf2fbe32aece809", + "mode": "scatter", + "sourceSha": "001b934008cbc6e3ab196678506ae9b14f751f1e", + "pass": true, + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "diagnostics": [], + "lights": { + "directional": { + "name": "fog-directional", + "type": "DirectionalLight", + "shadow": "ordinary-map" + }, + "point": { + "name": "fog-point", + "type": "PointLight", + "shadow": "none", + "range": 8 + } + } + }, + "scatterSunOff": { + "file": "scatterSunOff.png", + "sha256": "b10e9a6bea07b1f01b9b2b239882653d1538c115bc6911c20de95c0d517fe429", + "mode": "scatterSunOff", + "sourceSha": "001b934008cbc6e3ab196678506ae9b14f751f1e", + "pass": true, + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "diagnostics": [], + "lights": { + "directional": { + "name": "fog-directional", + "type": "DirectionalLight", + "shadow": "ordinary-map" + }, + "point": { + "name": "fog-point", + "type": "PointLight", + "shadow": "none", + "range": 8 + } + } + }, + "scatterPointOff": { + "file": "scatterPointOff.png", + "sha256": "d05cd825f2b4779e2abadd111517195bfb2b0fdca593b371992a23b534cd761f", + "mode": "scatterPointOff", + "sourceSha": "001b934008cbc6e3ab196678506ae9b14f751f1e", + "pass": true, + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "diagnostics": [], + "lights": { + "directional": { + "name": "fog-directional", + "type": "DirectionalLight", + "shadow": "ordinary-map" + }, + "point": { + "name": "fog-point", + "type": "PointLight", + "shadow": "none", + "range": 8 + } + } + } + }, + "pixelMetrics": { + "computedWithVerifierSourceSha": "001b934008cbc6e3ab196678506ae9b14f751f1e", + "baselineMaxRgb": 0, + "wallMaxRgb": 0, + "roi": { + "x": 260, + "y": 155, + "width": 150, + "height": 90 + }, + "wallRoi": { + "x": 184, + "y": 216, + "width": 18, + "height": 18 + }, + "evaluationRoi": { + "x": 0, + "y": 0, + "width": 500, + "height": 400 + }, + "calibrationRoi": { + "x": 515, + "y": 25, + "width": 110, + "height": 110 + }, + "calibrationMinimum": 146, + "calibrationMaxDifference": 0, + "sun": { + "meanRgbDelta": 15.958518518518519, + "changedPixelRatio": 0.9933333333333333 + }, + "point": { + "meanRgbDelta": 48.77553086419753, + "changedPixelRatio": 1 + }, + "thresholds": { + "minMeanRgbDelta": 1, + "minChangedPixelRatio": 0.1, + "maxBlackRgb": 0, + "minCalibrationRgb": 32, + "maxCalibrationDifference": 0 + }, + "pass": true + }, + "lifecycleFailure": { + "mode": "lifecycle", + "sourceSha": "001b934008cbc6e3ab196678506ae9b14f751f1e", + "pass": false, + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "diagnostics": [ + { + "code": "TN_PLAYTEST_COMPONENT_ASSERTION_FAILED", + "message": "Component 'disposedGraphs' on entity 'fog' did not satisfy the assertion.", + "observedRuntimePath": "observations.json/components/fog/disposedGraphs", + "severity": "error", + "suggestion": "Expected {\"changed\":true,\"component\":\"disposedGraphs\",\"entity\":\"fog\",\"gte\":4}, observed before=0 after=3. Check the owning script and runtime component synchronization." + } + ], + "lights": { + "directional": { + "name": "fog-directional", + "type": "DirectionalLight", + "shadow": "ordinary-map" + }, + "point": { + "name": "fog-point", + "type": "PointLight", + "shadow": "none", + "range": 8 + } + } + } +} diff --git a/docs/verification/vq07-progress/001b93400/scatter.png b/docs/verification/vq07-progress/001b93400/scatter.png new file mode 100644 index 0000000000000000000000000000000000000000..1e1e0c5a5058978b583c324ea40c4867c4c29e4b GIT binary patch literal 32743 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 literal 0 HcmV?d00001 diff --git a/docs/verification/vq07-progress/001b93400/scatterPointOff.png b/docs/verification/vq07-progress/001b93400/scatterPointOff.png new file mode 100644 index 0000000000000000000000000000000000000000..031989becaf12764530cf1ac73bf656f6a504a9c GIT binary patch literal 28692 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 ZJfi>jMtbXz3|oSu^j`g4*;~_~{|_NAEiM26 literal 0 HcmV?d00001 diff --git a/examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json b/examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json index 17d42e871c..9e35df94a4 100644 --- a/examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json +++ b/examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json @@ -8,6 +8,16 @@ }, "warmupFrames": 60, "steps": [ + { + "press": ["KeyF"], + "holdTicks": 1, + "release": true, + "label": "install-fog-baseline" + }, + { + "kind": "wait", + "waitFrames": 60 + }, { "press": ["KeyI"], "holdTicks": 1, @@ -74,19 +84,19 @@ { "entity": "fog", "component": "createdTargets", - "equals": 3, + "equals": 4, "allowTrivial": "Observe actual owned teardown events and the live target balance after reconstruction." }, { "entity": "fog", "component": "releasedTargets", - "equals": 2, + "equals": 3, "allowTrivial": "Observe actual owned teardown events and the live target balance after reconstruction." }, { "entity": "fog", "component": "releasedMaterials", - "equals": 2, + "equals": 3, "allowTrivial": "Observe actual owned teardown events and the live target balance after reconstruction." }, { diff --git a/packages/create-threenative/__tests__/vq-fog-fixture.spec.ts b/packages/create-threenative/__tests__/vq-fog-fixture.spec.ts index 4fb94ebca7..dc2d531506 100644 --- a/packages/create-threenative/__tests__/vq-fog-fixture.spec.ts +++ b/packages/create-threenative/__tests__/vq-fog-fixture.spec.ts @@ -91,11 +91,11 @@ describe("fog qualification fixture", () => { }); it("observes actual target/material release events across rebuild and off", () => { const f = fixture(); - for (const mode of ["inside", "off", "fog", "rebuild", "off"]) f.select(mode); + for (const mode of ["fog", "inside", "off", "fog", "rebuild", "off"]) f.select(mode); expect(f.state.getState()).toMatchObject({ - createdTargets: 3, - releasedTargets: 3, - releasedMaterials: 3, + createdTargets: 4, + releasedTargets: 4, + releasedMaterials: 4, liveTargets: 0, targets: 0, }); diff --git a/scripts/__tests__/verify-volumetric-fog.spec.ts b/scripts/__tests__/verify-volumetric-fog.spec.ts index a8e7df624e..b57f5dce89 100644 --- a/scripts/__tests__/verify-volumetric-fog.spec.ts +++ b/scripts/__tests__/verify-volumetric-fog.spec.ts @@ -61,7 +61,7 @@ describe("volumetric fog runtime evidence", () => { process.cwd(), "examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json", ); - expect(scenario.steps).toHaveLength(8); + expect(scenario.steps).toHaveLength(10); }); }); @@ -123,14 +123,15 @@ it("runs the committed lifecycle and return-to-off scenarios, with actual releas const scenarios = await fogCaptureScenarios(); const lifecycle = scenarios.find(({ mode }) => mode === "lifecycle")?.scenario; const off = scenarios.find(({ mode }) => mode === "lifecycleOff")?.scenario; - expect(lifecycle?.steps).toHaveLength(8); - expect(off?.steps).toHaveLength(10); + expect(lifecycle?.steps).toHaveLength(10); + expect(lifecycle?.steps[0]?.press).toEqual(["KeyF"]); + expect(off?.steps).toHaveLength(12); expect(lifecycle?.assert?.components).toEqual( - expect.arrayContaining([expect.objectContaining({ component: "releasedTargets", equals: 2 })]), + expect.arrayContaining([expect.objectContaining({ component: "releasedTargets", equals: 3 })]), ); expect(off?.assert?.components).toEqual( expect.arrayContaining([ - expect.objectContaining({ component: "releasedTargets", equals: 3 }), + expect.objectContaining({ component: "releasedTargets", equals: 4 }), expect.objectContaining({ component: "liveTargets", equals: 0 }), ]), ); diff --git a/scripts/verify-volumetric-fog.ts b/scripts/verify-volumetric-fog.ts index 3b828397d0..d0d2574011 100644 --- a/scripts/verify-volumetric-fog.ts +++ b/scripts/verify-volumetric-fog.ts @@ -121,8 +121,8 @@ export async function fogCaptureScenarios() { (component) => ({ entity: "fog", component, - equals: component === "liveTargets" ? 0 : 3, - allowTrivial: "After three actual fog graphs, off returns the owned allocation baseline.", + equals: component === "liveTargets" ? 0 : 4, + allowTrivial: "After four actual fog graphs, off returns the owned allocation baseline.", }), ), ); From 0d9c1c537b5883081a6c746ec4313ab7236a6207 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Paulo=20Furtado?= <30300459+jonit-dev@users.noreply.github.com> Date: Fri, 2 Oct 2026 04:09:00 -0700 Subject: [PATCH 13/41] test(vq07): qualify live target resize and settled texture ownership --- .../PRD-VQ-07-volumetric-fog.md | 14 +- .../vq07-progress/001b93400/provenance.json | 298 ++++++++++++++++++ .../playtests/vq-volumetric-fog.playtest.json | 12 + examples/abyss-framework/vq-fog/README.md | 5 +- examples/abyss-framework/vq-fog/src/game.ts | 46 +++ .../__tests__/vq-fog-fixture.spec.ts | 50 +++ .../__tests__/verify-volumetric-fog.spec.ts | 27 ++ scripts/verify-volumetric-fog.ts | 88 ++++++ 8 files changed, 535 insertions(+), 5 deletions(-) diff --git a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md index 09125f6928..ea7f81d2f4 100644 --- a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md +++ b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md @@ -4,7 +4,7 @@ prd_contract: v1 # PRD-VQ-07 — Local volumetric fog composes with depth, lights and existing atmosphere -**Status:** PARTIAL — 2026-10-02. Phase 1 browser reference proof is complete; receipt review and broader lifecycle/native qualification remain open. +**Status:** PARTIAL — 2026-10-02. Browser scattering/lifecycle proof is complete; target resize, native qualification and promotion gates remain open. **Batch:** [Visual quality execution batch](https://github.com/ThreeNativeHQ/threenative/blob/docs/visual-quality-batch-2026-10-01/docs/PRDs/batch-2026-10-01-visual-quality/README.md). **Wave:** 2 / atmosphere. **Dependencies:** Independent of clouds. Reuse VQ-06 only for any local-light feature it has actually qualified. @@ -38,12 +38,12 @@ All proof paths below are **planned implementation targets**, not existing passi ### Phase 2 — Compose with the existing environment -- [ ] Integrate directional and the declared local-light subset without double-applying atmosphere or god rays. proof: `pnpm exec vitest run packages/create-threenative/__tests__/vq-volumetric-fog.spec.ts`. -- [ ] Add bounded quality settings, history invalidation where used and deterministic resource disposal. proof: `pnpm exec vitest run packages/create-threenative/__tests__/vq-volumetric-fog.spec.ts`. +- [x] Integrate directional and the declared local-light subset without double-applying atmosphere or god rays. proof: `pnpm exec vitest run packages/create-threenative/__tests__/vq-volumetric-fog.spec.ts`. +- [x] Add bounded quality settings, history invalidation where used and deterministic resource disposal. proof: `pnpm exec vitest run packages/create-threenative/__tests__/vq-volumetric-fog.spec.ts`. ### Phase 3 — Qualify the visible result -- [ ] The fog fixture verifies occlusion, light response and zero-density identity on browser WebGPU with fixed-camera captures. proof: `node packages/playtest/dist/runner/cli.js examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json --url ${VQ_URL:?} --browser-recipe webgpu`. +- [x] The fog fixture verifies occlusion, light response and zero-density identity on browser WebGPU with fixed-camera captures. proof: `node packages/playtest/dist/runner/cli.js examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json --url ${VQ_URL:?} --browser-recipe webgpu`. - [ ] The same authored volume runs on Linux native and remains valid through resize and scene teardown. proof: `node packages/playtest/dist/runner/cli.js examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json --target desktop --executable ${VQ_NATIVE_EXECUTABLE:?}`. ## Acceptance criteria @@ -108,3 +108,9 @@ Pre-run calibration correction: source inspection shows the public runner reject Isolated-scattering progress: [run 36997361343](https://github.com/ThreeNativeHQ/threenative/actions/runs/36997361343) at source `001b934008cbc6e3ab196678506ae9b14f751f1e` passes all thirteen independent captures with empty diagnostics, including the four calibration controls. Downloaded artifact `11221669862` matches SHA256 `2c88ec8b13a525986867301a735ede33f5b76ab3b6d9db3c46459554b5b7a4ca`. The [unchanged scattering PNG](../../verification/vq07-progress/001b93400/scatter.png), [black control](../../verification/vq07-progress/001b93400/blackOff.png) and [four-arm provenance/pixel metrics](../../verification/vq07-progress/001b93400/provenance.json) are retained. The pinned room ROI passes: directional mean RGB delta 15.9585/255, changed ratio 0.99333; point mean delta 48.7755/255, changed ratio 1.0. The 500×400 black area and foreground plate are exactly zero; calibration minimum RGB is 146 and cross-arm difference is exactly zero. These isolates show scattering response rather than changed surface illumination. The overall run fails closed on lifecycle's old logical `disposedGraphs >= 4` assertion: the sampled initial state had `builds=0`, so four installs yielded three logical releases. Actual targets/materials were created=3, released=2, live=1 as asserted; there was no device loss or other runtime error. This is preserved as a setup mismatch, not a complete lifecycle pass. The corrected scenario explicitly executes **fog → inside → off → fog → rebuild**, then a separate final-off extension. It now requires exactly four real fog targets created, three target/material releases and one live target at the final fog frame; final off requires all four target/material releases and zero live targets. No dummy resources, manually advanced counters or lowered thresholds are used. New sequence assertions failed first; source/fixture/verifier tests pass 29/29. The stronger sequence and return-to-off pixels await the next hosted run. + + +Successful lifecycle/control rerun: [run 36998309685](https://github.com/ThreeNativeHQ/threenative/actions/runs/36998309685) at `1c9534fe9fdd29458d880afe70c45dc4aa5f22ce` passed all 15 captures with empty diagnostics on Google SwiftShader WebGPU, 640×400. Artifact `11222836638` matches SHA256 `9f0c207b9ba0cbc024b78104cc025a09acb8c925e13cba6fc22e17d78195c551`. Observed counts are exactly 4 created / 3 target and material releases / 1 live target after reconstruction, then 4 releases / 0 live targets at final off. Final-off pixels equal the independent off baseline; zero-density identity and isolated-light metrics also pass. All four scattering PNGs remain byte-identical to the durable images; [provenance](../../verification/vq07-progress/001b93400/provenance.json) includes this successful revalidation. Phase 2 and the browser Phase 3 box are now verified. Acceptance remains open for portable target/depth resizing, independent renderer texture-baseline observation, native execution and repository promotion gates; OS-window lifecycle and hardware performance are not inferred. + + +Next bounded proof slice (runtime pending): existing portable `renderer.setSize` drives 320×240 then 640×400 on the same fog controller, updating the camera projection; actual fog target dimensions, one creation/zero teardown and exact restored fog pixels are required. Independent upstream `renderer.info.memory.textures` samples must agree with the off baseline, after at least three distinct completed render frames with stable counts since each graph/size transition. Repeated simulation ticks without a new renderer frame cannot advance this boundary. These assertions qualify target/depth resize and observed resource accounting, not OS-window lifecycle. Fixture and verifier guards were red-green before the change; no engine API or fog shader change is involved. diff --git a/docs/verification/vq07-progress/001b93400/provenance.json b/docs/verification/vq07-progress/001b93400/provenance.json index 056d719d3c..c675ccfe9f 100644 --- a/docs/verification/vq07-progress/001b93400/provenance.json +++ b/docs/verification/vq07-progress/001b93400/provenance.json @@ -285,5 +285,303 @@ "range": 8 } } + }, + "successfulRevalidation": { + "sourceSha": "1c9534fe9fdd29458d880afe70c45dc4aa5f22ce", + "runId": 36998309685, + "runUrl": "https://github.com/ThreeNativeHQ/threenative/actions/runs/36998309685", + "artifactId": 11222836638, + "artifactSha256": "9f0c207b9ba0cbc024b78104cc025a09acb8c925e13cba6fc22e17d78195c551", + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "allFourControlPngBytesIdentical": true, + "results": [ + { + "mode": "off", + "pass": true, + "diagnostics": [] + }, + { + "mode": "zero", + "pass": true, + "diagnostics": [] + }, + { + "mode": "fog", + "pass": true, + "diagnostics": [] + }, + { + "mode": "inside", + "pass": true, + "diagnostics": [] + }, + { + "mode": "sunOff", + "pass": true, + "diagnostics": [] + }, + { + "mode": "pointOff", + "pass": true, + "diagnostics": [] + }, + { + "mode": "overlap", + "pass": true, + "diagnostics": [] + }, + { + "mode": "half", + "pass": true, + "diagnostics": [] + }, + { + "mode": "wallOff", + "pass": true, + "diagnostics": [] + }, + { + "mode": "blackOff", + "pass": true, + "diagnostics": [] + }, + { + "mode": "scatter", + "pass": true, + "diagnostics": [] + }, + { + "mode": "scatterSunOff", + "pass": true, + "diagnostics": [] + }, + { + "mode": "scatterPointOff", + "pass": true, + "diagnostics": [] + }, + { + "mode": "lifecycle", + "pass": true, + "diagnostics": [] + }, + { + "mode": "lifecycleOff", + "pass": true, + "diagnostics": [] + }, + { + "assertion": "zero-density pixel identity", + "pass": true + }, + { + "assertion": "repeated lifecycle restores baseline pixels", + "pass": true + }, + { + "assertion": "isolated light-scattering pixels", + "baselineMaxRgb": 0, + "wallMaxRgb": 0, + "roi": { + "x": 260, + "y": 155, + "width": 150, + "height": 90 + }, + "wallRoi": { + "x": 184, + "y": 216, + "width": 18, + "height": 18 + }, + "evaluationRoi": { + "x": 0, + "y": 0, + "width": 500, + "height": 400 + }, + "calibrationRoi": { + "x": 515, + "y": 25, + "width": 110, + "height": 110 + }, + "calibrationMinimum": 146, + "calibrationMaxDifference": 0, + "sun": { + "meanRgbDelta": 15.958518518518519, + "changedPixelRatio": 0.9933333333333333 + }, + "point": { + "meanRgbDelta": 48.77553086419753, + "changedPixelRatio": 1 + }, + "thresholds": { + "minMeanRgbDelta": 1, + "minChangedPixelRatio": 0.1, + "maxBlackRgb": 0, + "minCalibrationRgb": 32, + "maxCalibrationDifference": 0 + }, + "pass": true + } + ], + "lifecycleObservations": { + "lifecycle": { + "mode": { + "before": "off", + "after": "fog" + }, + "ready": { + "before": false, + "after": true + }, + "builds": { + "before": 0, + "after": 5 + }, + "disposedGraphs": { + "before": 0, + "after": 4 + }, + "createdTargets": { + "before": 0, + "after": 4 + }, + "releasedTargets": { + "before": 0, + "after": 3 + }, + "releasedMaterials": { + "before": 0, + "after": 3 + }, + "liveTargets": { + "before": 0, + "after": 1 + }, + "scatteringOnly": { + "before": false, + "after": false + }, + "targets": { + "before": 0, + "after": 1 + }, + "pixels": { + "before": 0, + "after": 256000 + }, + "steps": { + "before": 0, + "after": 48 + }, + "inside": { + "before": false, + "after": false + }, + "sun": { + "before": true, + "after": true + }, + "point": { + "before": true, + "after": true + }, + "overlaps": { + "before": false, + "after": false + } + }, + "lifecycleOff": { + "mode": { + "before": "off", + "after": "off" + }, + "ready": { + "before": false, + "after": true + }, + "builds": { + "before": 0, + "after": 6 + }, + "disposedGraphs": { + "before": 0, + "after": 5 + }, + "createdTargets": { + "before": 0, + "after": 4 + }, + "releasedTargets": { + "before": 0, + "after": 4 + }, + "releasedMaterials": { + "before": 0, + "after": 4 + }, + "liveTargets": { + "before": 0, + "after": 0 + }, + "scatteringOnly": { + "before": false, + "after": false + }, + "targets": { + "before": 0, + "after": 0 + }, + "pixels": { + "before": 0, + "after": 0 + }, + "steps": { + "before": 0, + "after": 0 + }, + "inside": { + "before": false, + "after": false + }, + "sun": { + "before": true, + "after": true + }, + "point": { + "before": true, + "after": true + }, + "overlaps": { + "before": false, + "after": false + } + } + } } } diff --git a/examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json b/examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json index 9e35df94a4..e6ae2d008e 100644 --- a/examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json +++ b/examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json @@ -104,6 +104,18 @@ "component": "liveTargets", "equals": 1, "allowTrivial": "Observe actual owned teardown events and the live target balance after reconstruction." + }, + { + "entity": "fog", + "component": "settledRenderFrames", + "gte": 3, + "allowTrivial": "Resource counts must be observed stable over completed rendered frames." + }, + { + "entity": "fog", + "component": "stableTextureFrames", + "gte": 3, + "allowTrivial": "Resource counts must be observed stable over completed rendered frames." } ], "diagnostics": { diff --git a/examples/abyss-framework/vq-fog/README.md b/examples/abyss-framework/vq-fog/README.md index adfaa19b1d..03035c6f2c 100644 --- a/examples/abyss-framework/vq-fog/README.md +++ b/examples/abyss-framework/vq-fog/README.md @@ -10,6 +10,7 @@ This opt-in fixture uses the starter's generated `volumetricFog.ts` and `WorldEn - H: half-resolution fog with depth-discontinuity fallback - W: remove the foreground wall so current depth changes - C: dispose and rebuild the current graph +- R / T: resize the existing render target to 320×240 / restore 640×400 - L / K / J: scattering-only black-surface control, then directional / point light off - N: black no-fog control (exact zero RGB in the 500×400 fog evaluation area) @@ -37,4 +38,6 @@ The existing public runner provides headed Chromium, a private Xvfb, canvas capt pnpm parity --project examples/abyss-framework/vq-fog --target desktop ``` -The reusable repeated-lifecycle scenario is `../playtests/vq-volumetric-fog.playtest.json`. Native execution and screenshot proof remain unverified until the host runs it; browser captures do not establish native support or hardware performance. +The reusable repeated-lifecycle scenario is `../playtests/vq-volumetric-fog.playtest.json`. Portable target/depth resize scenarios retain the same fog controller and require exact restored pixels. Allocation comparisons require unchanged texture counts over at least three observed completed render frames, not just elapsed time. These do not establish operating-system window resize behavior. + +Native execution and screenshot proof remain unverified until the host runs it; browser captures do not establish native support or hardware performance. diff --git a/examples/abyss-framework/vq-fog/src/game.ts b/examples/abyss-framework/vq-fog/src/game.ts index 528aa19bfc..583408251e 100644 --- a/examples/abyss-framework/vq-fog/src/game.ts +++ b/examples/abyss-framework/vq-fog/src/game.ts @@ -29,6 +29,11 @@ const initialState = { releasedMaterials: 0, liveTargets: 0, scatteringOnly: false, + textures: -1, + settledRenderFrames: 0, + stableTextureFrames: 0, + targetWidth: 0, + targetHeight: 0, targets: 0, pixels: 0, steps: 0, @@ -39,6 +44,10 @@ const initialState = { }; type FogState = typeof initialState; type FogCtx = ICtx; +interface IProbeInfo { + frame: number; + memory: { textures: number }; +} const modes = [ "fog", "off", @@ -76,6 +85,10 @@ export class FogProbe extends GameScene { #createdTargets = 0; #releasedTargets = 0; #releasedMaterials = 0; + #lastRenderFrame = -1; + #lastTextures = -1; + #settledRenderFrames = 0; + #stableTextureFrames = 0; override enter(ctx: FogCtx): void { ctx.scene.background = this.#background; @@ -136,6 +149,8 @@ export class FogProbe extends GameScene { override update(ctx: FogCtx): void { for (const mode of modes) if (ctx.input.justPressed(mode)) this.#mode = mode; if (ctx.input.justPressed("rebuild")) this.#applied = undefined; + if (ctx.input.justPressed("resizeSmall")) this.#resize(ctx, 320, 240); + if (ctx.input.justPressed("resizeRestore")) this.#resize(ctx, 640, 400); this.#positionCamera(ctx); const scatteringOnly = this.#mode.startsWith("scatter") || this.#mode === "blackOff"; ctx.scene.overrideMaterial = scatteringOnly ? this.#black : null; @@ -147,6 +162,14 @@ export class FogProbe extends GameScene { // Warm the ordinary directional shadow map with the first real scene frame before composing. if (this.#applied !== this.#mode && this.#sun.shadow.map !== null) this.#compose(ctx); const observation = this.#fog?.diagnostics(); + const info = ctx.renderer.info as IProbeInfo; + if (info.frame !== this.#lastRenderFrame) { + this.#lastRenderFrame = info.frame; + this.#settledRenderFrames += 1; + this.#stableTextureFrames = + info.memory.textures === this.#lastTextures ? this.#stableTextureFrames + 1 : 1; + this.#lastTextures = info.memory.textures; + } ctx.state.set({ mode: this.#mode, ready: this.#applied === this.#mode, @@ -157,6 +180,11 @@ export class FogProbe extends GameScene { releasedMaterials: this.#releasedMaterials, liveTargets: this.#createdTargets - this.#releasedTargets, scatteringOnly, + textures: info.memory.textures, + settledRenderFrames: this.#settledRenderFrames, + stableTextureFrames: this.#stableTextureFrames, + targetWidth: this.#fog?.target?.width ?? 0, + targetHeight: this.#fog?.target?.height ?? 0, targets: observation?.renderTargets ?? 0, pixels: observation?.pixels ?? 0, steps: observation?.steps ?? 0, @@ -182,7 +210,23 @@ export class FogProbe extends GameScene { this.#calibration.scale.set((120 / 640) * 2 * halfWidth, (120 / 400) * 2 * halfHeight, 1); } + #resetObservation(ctx: FogCtx): void { + this.#lastRenderFrame = (ctx.renderer.info as IProbeInfo).frame; + this.#lastTextures = -1; + this.#settledRenderFrames = 0; + this.#stableTextureFrames = 0; + } + + #resize(ctx: FogCtx, width: number, height: number): void { + ctx.renderer.setSize(width, height); + const camera = ctx.camera as PerspectiveCamera; + camera.aspect = width / height; + camera.updateProjectionMatrix(); + this.#resetObservation(ctx); + } + #compose(ctx: FogCtx): void { + this.#resetObservation(ctx); this.#disposeGraph(); const volumes = [ { @@ -290,6 +334,8 @@ export default defineGame({ scatterSunOff: { keys: ["KeyK"] }, scatterPointOff: { keys: ["KeyJ"] }, blackOff: { keys: ["KeyN"] }, + resizeSmall: { keys: ["KeyR"] }, + resizeRestore: { keys: ["KeyT"] }, rebuild: { keys: ["KeyC"] }, }, plugins: [playtest()], diff --git a/packages/create-threenative/__tests__/vq-fog-fixture.spec.ts b/packages/create-threenative/__tests__/vq-fog-fixture.spec.ts index dc2d531506..8cf08ad055 100644 --- a/packages/create-threenative/__tests__/vq-fog-fixture.spec.ts +++ b/packages/create-threenative/__tests__/vq-fog-fixture.spec.ts @@ -21,6 +21,8 @@ function fixture() { const scene = new Scene(); const state = createGameStore({ ...FogProbe.initialState }); let action = ""; + const info = { frame: 0, memory: { textures: 2 } }; + const sizes: number[][] = []; // No GPU is available in a unit test. Use real scene/state/TSL ownership objects; // only the input edge and renderer installation boundary are replaced. const ctx = { @@ -35,6 +37,8 @@ function fixture() { input: { justPressed: (name: string) => name === action }, renderer: { kind: "webgpu", + info, + setSize: (width: number, height: number) => sizes.push([width, height]), raw: { shadowMap: { enabled: false } }, setOutputNode: () => {}, clearOutputNode: () => {}, @@ -49,6 +53,9 @@ function fixture() { sun.shadow.map.depthTexture = new DepthTexture(16, 16); return { probe, + info, + sizes, + camera: ctx.camera as PerspectiveCamera, scene, state, sun, @@ -102,3 +109,46 @@ describe("fog qualification fixture", () => { f.probe.exit(); }); }); + +it("resizes the live graph without rebuilding and restores camera projection", () => { + const f = fixture(); + f.select("fog"); + f.select("resizeSmall"); + expect(f.sizes).toEqual([[320, 240]]); + expect(f.camera.aspect).toBe(4 / 3); + expect(f.state.getState()).toMatchObject({ + createdTargets: 1, + releasedTargets: 0, + liveTargets: 1, + }); + f.select("resizeRestore"); + expect(f.sizes).toEqual([ + [320, 240], + [640, 400], + ]); + expect(f.camera.aspect).toBe(1.6); + expect(f.state.getState().builds).toBe(1); + f.probe.exit(); +}); +it("counts texture stability only across observed completed render frames", () => { + const f = fixture(); + f.select("fog"); + for (let i = 0; i < 5; i += 1) f.select(""); + expect(f.state.getState()).toMatchObject({ settledRenderFrames: 0, stableTextureFrames: 0 }); + for (let i = 1; i <= 3; i += 1) { + f.info.frame = i; + f.select(""); + } + expect(f.state.getState()).toMatchObject({ + settledRenderFrames: 3, + stableTextureFrames: 3, + textures: 2, + }); + f.info.memory.textures = 3; + f.info.frame = 4; + f.select(""); + expect(f.state.getState().stableTextureFrames).toBe(1); + f.select("off"); + expect(f.state.getState()).toMatchObject({ settledRenderFrames: 0, stableTextureFrames: 0 }); + f.probe.exit(); +}); diff --git a/scripts/__tests__/verify-volumetric-fog.spec.ts b/scripts/__tests__/verify-volumetric-fog.spec.ts index b57f5dce89..207e2655a1 100644 --- a/scripts/__tests__/verify-volumetric-fog.spec.ts +++ b/scripts/__tests__/verify-volumetric-fog.spec.ts @@ -8,6 +8,7 @@ import { fogCaptureScenario, fogCaptureScenarios, fogLightPixelMetrics, + fogTextureBaselineMatches, } from "../verify-volumetric-fog.js"; describe("volumetric fog runtime evidence", () => { @@ -136,3 +137,29 @@ it("runs the committed lifecycle and return-to-off scenarios, with actual releas ]), ); }); + +it("requires observed rendered-frame stability before claiming the texture baseline restored", () => { + const baseline = { textures: 2, settledRenderFrames: 3, stableTextureFrames: 3 }; + expect(fogTextureBaselineMatches(baseline, baseline)).toBe(true); + expect(fogTextureBaselineMatches(baseline, { ...baseline, textures: 3 })).toBe(false); + expect(fogTextureBaselineMatches(baseline, { ...baseline, settledRenderFrames: 0 })).toBe(false); + expect(fogTextureBaselineMatches(baseline, { ...baseline, stableTextureFrames: 2 })).toBe(false); + expect(fogTextureBaselineMatches({}, baseline)).toBe(false); +}); +it("captures the live target at both sizes without replacing the fog controller", async () => { + const cases = await fogCaptureScenarios(); + for (const [mode, width, height] of [ + ["resizeSmall", 320, 240], + ["resizeRestore", 640, 400], + ] as const) { + const scenario = cases.find((entry) => entry.mode === mode)?.scenario; + expect(scenario?.assert?.components).toEqual( + expect.arrayContaining([ + expect.objectContaining({ component: "targetWidth", equals: width }), + expect.objectContaining({ component: "targetHeight", equals: height }), + expect.objectContaining({ component: "createdTargets", equals: 1 }), + expect.objectContaining({ component: "releasedTargets", equals: 0 }), + ]), + ); + } +}); diff --git a/scripts/verify-volumetric-fog.ts b/scripts/verify-volumetric-fog.ts index d0d2574011..a76f0f24f1 100644 --- a/scripts/verify-volumetric-fog.ts +++ b/scripts/verify-volumetric-fog.ts @@ -60,6 +60,12 @@ export function fogCaptureScenario(mode: string, key: string): IPlaytestScenario equals: ["off", "zero", "blackOff"].includes(mode) ? 0 : 1, allowTrivial: "Observe the owned allocation baseline for this variant.", }, + ...["settledRenderFrames", "stableTextureFrames"].map((component) => ({ + entity: "fog", + component, + gte: 3, + allowTrivial: "Resource counts must be observed stable over completed rendered frames.", + })), ...[ ["sun", mode !== "sunOff" && mode !== "scatterSunOff"], ["point", mode !== "pointOff" && mode !== "scatterPointOff"], @@ -127,9 +133,58 @@ export async function fogCaptureScenarios() { ), ); result.push({ mode: "lifecycleOff", scenario: off }); + for (const [mode, width, height] of [ + ["resizeSmall", 320, 240], + ["resizeRestore", 640, 400], + ] as const) { + const scenario = fogCaptureScenario("fog", "KeyF"); + scenario.name = `vq-volumetric-fog-${mode}`; + scenario.steps.push( + { press: ["KeyR"], holdTicks: 1, release: true }, + { kind: "wait", waitFrames: 60, release: true }, + ); + if (mode === "resizeRestore") + scenario.steps.push( + { press: ["KeyT"], holdTicks: 1, release: true }, + { kind: "wait", waitFrames: 60, release: true }, + ); + scenario.assert?.components?.push( + ...[ + ["targetWidth", width], + ["targetHeight", height], + ["pixels", width * height], + ["createdTargets", 1], + ["releasedTargets", 0], + ["liveTargets", 1], + ].map(([component, equals]) => ({ + entity: "fog", + component: String(component), + equals, + allowTrivial: + "The existing fog target follows real renderer dimensions without graph replacement.", + })), + ); + result.push({ mode, scenario }); + } return result; } +export function fogTextureBaselineMatches( + baseline: Record, + restored: Record, +): boolean { + return ( + [baseline, restored].every((observation) => + ["textures", "settledRenderFrames", "stableTextureFrames"].every( + (key) => + typeof observation[key] === "number" && + Number.isInteger(observation[key]) && + observation[key] >= (key === "textures" ? 0 : 3), + ), + ) && baseline.textures === restored.textures + ); +} + interface IPixelFrame { width: number; height: number; @@ -303,6 +358,12 @@ async function main(): Promise { sourceSha, pass: valid, capture: report.capture, + resources: Object.fromEntries( + ["textures", "settledRenderFrames", "stableTextureFrames"].map((key) => [ + key, + report.observations?.components?.fog?.[key]?.after, + ]), + ), diagnostics: report.diagnostics, lights: { directional: { @@ -332,6 +393,33 @@ async function main(): Promise { if (!off.data.equals(restored.data)) throw new Error("VQ07 lifecycle off did not restore the baseline pixels."); results.push({ assertion: "repeated lifecycle restores baseline pixels", pass: true }); + const baselineResources = results.find((result) => result.mode === "off")?.resources as + | Record + | undefined; + const restoredResources = results.find((result) => result.mode === "lifecycleOff")?.resources as + | Record + | undefined; + const texturesRestored = + baselineResources !== undefined && + restoredResources !== undefined && + fogTextureBaselineMatches(baselineResources, restoredResources); + results.push({ + assertion: "renderer texture allocation baseline", + baselineResources, + restoredResources, + pass: texturesRestored, + }); + if (!texturesRestored) + throw new Error("VQ07 renderer texture allocation baseline did not settle and restore."); + const fog = PNG.sync.read(await readFile(path.join(artifacts, "fog/after.png"))); + const resized = PNG.sync.read(await readFile(path.join(artifacts, "resizeRestore/after.png"))); + if ( + fog.width !== resized.width || + fog.height !== resized.height || + !fog.data.equals(resized.data) + ) + throw new Error("VQ07 target resize restore did not recover the exact fog pixels."); + results.push({ assertion: "target/depth resize restores exact pixels", pass: true }); const lightFrames = await Promise.all( ["blackOff", "scatter", "scatterSunOff", "scatterPointOff"].map(async (mode) => PNG.sync.read(await readFile(path.join(artifacts, mode, "after.png"))), From 47464cca247eeb2391de7057276cef9cb8aa36fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Paulo=20Furtado?= <30300459+jonit-dev@users.noreply.github.com> Date: Fri, 2 Oct 2026 04:14:47 -0700 Subject: [PATCH 14/41] fix(vq07): observe completed renders under the game-owned loop --- .../PRD-VQ-07-volumetric-fog.md | 3 +++ examples/abyss-framework/vq-fog/src/game.ts | 13 ++++++++----- .../__tests__/vq-fog-fixture.spec.ts | 6 +++--- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md index ea7f81d2f4..00aa7d0812 100644 --- a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md +++ b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md @@ -114,3 +114,6 @@ Successful lifecycle/control rerun: [run 36998309685](https://github.com/ThreeNa Next bounded proof slice (runtime pending): existing portable `renderer.setSize` drives 320×240 then 640×400 on the same fog controller, updating the camera projection; actual fog target dimensions, one creation/zero teardown and exact restored fog pixels are required. Independent upstream `renderer.info.memory.textures` samples must agree with the off baseline, after at least three distinct completed render frames with stable counts since each graph/size transition. Repeated simulation ticks without a new renderer frame cannot advance this boundary. These assertions qualify target/depth resize and observed resource accounting, not OS-window lifecycle. Fixture and verifier guards were red-green before the change; no engine API or fog shader change is involved. + + +Render-boundary correction: [run 36999492881](https://github.com/ThreeNativeHQ/threenative/actions/runs/36999492881) at `0d9c1c537b5883081a6c746ec4313ab7236a6207` failed closed on the first off-arm stability assertions. Artifact `11223002573` (SHA256 `a6c57e6bb2b4cd54026bb0ce94ba093902c4af69dfd10c8a0f78937871c22c6b`) shows a valid texture count of 5 but zero counted render boundaries after setup. Pinned Three updates `info.frame` in its own Animation loop, which the framework does not use. The fixture now samples cumulative `info.render.calls` at the next game update, counting one completed render interval even if it contained multiple passes; simulation-only updates still cannot advance it. A regression that leaves `info.frame` fixed at zero and advances only render calls failed first. All three-frame stability and image/count thresholds remain unchanged; new runtime proof is pending. diff --git a/examples/abyss-framework/vq-fog/src/game.ts b/examples/abyss-framework/vq-fog/src/game.ts index 583408251e..831b013ea6 100644 --- a/examples/abyss-framework/vq-fog/src/game.ts +++ b/examples/abyss-framework/vq-fog/src/game.ts @@ -45,7 +45,7 @@ const initialState = { type FogState = typeof initialState; type FogCtx = ICtx; interface IProbeInfo { - frame: number; + render: { calls: number }; memory: { textures: number }; } const modes = [ @@ -85,7 +85,7 @@ export class FogProbe extends GameScene { #createdTargets = 0; #releasedTargets = 0; #releasedMaterials = 0; - #lastRenderFrame = -1; + #lastRenderCalls = -1; #lastTextures = -1; #settledRenderFrames = 0; #stableTextureFrames = 0; @@ -163,8 +163,11 @@ export class FogProbe extends GameScene { if (this.#applied !== this.#mode && this.#sun.shadow.map !== null) this.#compose(ctx); const observation = this.#fog?.diagnostics(); const info = ctx.renderer.info as IProbeInfo; - if (info.frame !== this.#lastRenderFrame) { - this.#lastRenderFrame = info.frame; + // Three's info.frame is driven by its Animation loop; this game owns the loop instead. + // A new cumulative render.calls value at update means the previous render interval returned. + // Count one observation boundary regardless of the number of internal passes in that interval. + if (info.render.calls !== this.#lastRenderCalls) { + this.#lastRenderCalls = info.render.calls; this.#settledRenderFrames += 1; this.#stableTextureFrames = info.memory.textures === this.#lastTextures ? this.#stableTextureFrames + 1 : 1; @@ -211,7 +214,7 @@ export class FogProbe extends GameScene { } #resetObservation(ctx: FogCtx): void { - this.#lastRenderFrame = (ctx.renderer.info as IProbeInfo).frame; + this.#lastRenderCalls = (ctx.renderer.info as IProbeInfo).render.calls; this.#lastTextures = -1; this.#settledRenderFrames = 0; this.#stableTextureFrames = 0; diff --git a/packages/create-threenative/__tests__/vq-fog-fixture.spec.ts b/packages/create-threenative/__tests__/vq-fog-fixture.spec.ts index 8cf08ad055..5e99009c0d 100644 --- a/packages/create-threenative/__tests__/vq-fog-fixture.spec.ts +++ b/packages/create-threenative/__tests__/vq-fog-fixture.spec.ts @@ -21,7 +21,7 @@ function fixture() { const scene = new Scene(); const state = createGameStore({ ...FogProbe.initialState }); let action = ""; - const info = { frame: 0, memory: { textures: 2 } }; + const info = { frame: 0, render: { calls: 0 }, memory: { textures: 2 } }; const sizes: number[][] = []; // No GPU is available in a unit test. Use real scene/state/TSL ownership objects; // only the input edge and renderer installation boundary are replaced. @@ -136,7 +136,7 @@ it("counts texture stability only across observed completed render frames", () = for (let i = 0; i < 5; i += 1) f.select(""); expect(f.state.getState()).toMatchObject({ settledRenderFrames: 0, stableTextureFrames: 0 }); for (let i = 1; i <= 3; i += 1) { - f.info.frame = i; + f.info.render.calls = i * 4; f.select(""); } expect(f.state.getState()).toMatchObject({ @@ -145,7 +145,7 @@ it("counts texture stability only across observed completed render frames", () = textures: 2, }); f.info.memory.textures = 3; - f.info.frame = 4; + f.info.render.calls = 16; f.select(""); expect(f.state.getState().stableTextureFrames).toBe(1); f.select("off"); From 1505e018aa38630b91893ab8265c447833e99a51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Paulo=20Furtado?= <30300459+jonit-dev@users.noreply.github.com> Date: Fri, 2 Oct 2026 04:24:15 -0700 Subject: [PATCH 15/41] test(vq07): wait on observed render stability before captures --- .../PRD-VQ-07-volumetric-fog.md | 2 ++ .../playtests/vq-volumetric-fog.playtest.json | 9 +++++++ .../__tests__/verify-volumetric-fog.spec.ts | 27 ++++++++++++++++--- scripts/verify-volumetric-fog.ts | 9 +++++++ 4 files changed, 44 insertions(+), 3 deletions(-) diff --git a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md index 00aa7d0812..00455eb501 100644 --- a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md +++ b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md @@ -117,3 +117,5 @@ Next bounded proof slice (runtime pending): existing portable `renderer.setSize` Render-boundary correction: [run 36999492881](https://github.com/ThreeNativeHQ/threenative/actions/runs/36999492881) at `0d9c1c537b5883081a6c746ec4313ab7236a6207` failed closed on the first off-arm stability assertions. Artifact `11223002573` (SHA256 `a6c57e6bb2b4cd54026bb0ce94ba093902c4af69dfd10c8a0f78937871c22c6b`) shows a valid texture count of 5 but zero counted render boundaries after setup. Pinned Three updates `info.frame` in its own Animation loop, which the framework does not use. The fixture now samples cumulative `info.render.calls` at the next game update, counting one completed render interval even if it contained multiple passes; simulation-only updates still cannot advance it. A regression that leaves `info.frame` fixed at zero and advances only render calls failed first. All three-frame stability and image/count thresholds remain unchanged; new runtime proof is pending. + +Measured-settle correction: [run 37000014054](https://github.com/ThreeNativeHQ/threenative/actions/runs/37000014054) at `47464cca247eeb2391de7057276cef9cb8aa36fc` observed one completed render interval before the fixed-tick sequence ended, so it correctly failed the three-frame predicate. Artifact `11222909308` matches SHA256 `54d4a610d60770663f3bfefc790c07ffc22cf76b69ed63a318751c2d6a441eba`. `FixedStepLoop.advance()` simulates only; the bridge interprets these authored waitFrames as ticks. Each capture and each resize transition now uses the existing `waitForResource` observer for `state.stableTextureFrames >= 3`, bounded to 30 seconds. That mechanism advances one fixed tick between bounded polls, allowing the real render loop to progress and the game to sample its actual counters; elapsed time or poll count alone cannot satisfy it. Public scenario round-trip tests validate every arm. All resource/image thresholds remain unchanged. The existing desktop project bundler also compiled this same portable game source successfully (entry `src/game.ts`); that compile is not native execution proof. diff --git a/examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json b/examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json index e6ae2d008e..e26a694c2e 100644 --- a/examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json +++ b/examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json @@ -53,6 +53,15 @@ { "kind": "wait", "waitFrames": 60 + }, + { + "waitForResource": { + "id": "state", + "path": "stableTextureFrames", + "gte": 3 + }, + "timeoutMs": 30000, + "release": true } ], "assert": { diff --git a/scripts/__tests__/verify-volumetric-fog.spec.ts b/scripts/__tests__/verify-volumetric-fog.spec.ts index 207e2655a1..46adbe7142 100644 --- a/scripts/__tests__/verify-volumetric-fog.spec.ts +++ b/scripts/__tests__/verify-volumetric-fog.spec.ts @@ -62,7 +62,7 @@ describe("volumetric fog runtime evidence", () => { process.cwd(), "examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json", ); - expect(scenario.steps).toHaveLength(10); + expect(scenario.steps).toHaveLength(11); }); }); @@ -124,9 +124,9 @@ it("runs the committed lifecycle and return-to-off scenarios, with actual releas const scenarios = await fogCaptureScenarios(); const lifecycle = scenarios.find(({ mode }) => mode === "lifecycle")?.scenario; const off = scenarios.find(({ mode }) => mode === "lifecycleOff")?.scenario; - expect(lifecycle?.steps).toHaveLength(10); + expect(lifecycle?.steps).toHaveLength(11); expect(lifecycle?.steps[0]?.press).toEqual(["KeyF"]); - expect(off?.steps).toHaveLength(12); + expect(off?.steps).toHaveLength(14); expect(lifecycle?.assert?.components).toEqual( expect.arrayContaining([expect.objectContaining({ component: "releasedTargets", equals: 3 })]), ); @@ -163,3 +163,24 @@ it("captures the live target at both sizes without replacing the fog controller" ); } }); + +it("waits for measured render stability instead of treating fixed ticks as rendered frames", async () => { + for (const { scenario } of await fogCaptureScenarios()) { + expect(scenario.steps.at(-1)).toMatchObject({ + waitForResource: { id: "state", path: "stableTextureFrames", gte: 3 }, + timeoutMs: 30000, + }); + } + const restore = (await fogCaptureScenarios()).find( + ({ mode }) => mode === "resizeRestore", + )?.scenario; + const steps = restore?.steps ?? []; + const restoreAt = steps.findIndex( + (step) => Array.isArray(step.press) && step.press.includes("KeyT"), + ); + expect(steps[restoreAt - 1]?.waitForResource).toMatchObject({ + id: "state", + path: "stableTextureFrames", + gte: 3, + }); +}); diff --git a/scripts/verify-volumetric-fog.ts b/scripts/verify-volumetric-fog.ts index a76f0f24f1..65f55e9cfc 100644 --- a/scripts/verify-volumetric-fog.ts +++ b/scripts/verify-volumetric-fog.ts @@ -29,6 +29,12 @@ const cases = [ ["scatterPointOff", "KeyJ"], ] as const; +const textureBoundary = { + waitForResource: { id: "state", path: "stableTextureFrames", gte: 3 }, + timeoutMs: 30_000, + release: true, +}; + export function fogCaptureScenario(mode: string, key: string): IPlaytestScenario { return { schemaVersion: 1, @@ -39,6 +45,7 @@ export function fogCaptureScenario(mode: string, key: string): IPlaytestScenario steps: [ { press: [key], holdTicks: 1, release: true }, { kind: "wait", waitFrames: 60, release: true }, + textureBoundary, ], assert: { components: [ @@ -142,11 +149,13 @@ export async function fogCaptureScenarios() { scenario.steps.push( { press: ["KeyR"], holdTicks: 1, release: true }, { kind: "wait", waitFrames: 60, release: true }, + textureBoundary, ); if (mode === "resizeRestore") scenario.steps.push( { press: ["KeyT"], holdTicks: 1, release: true }, { kind: "wait", waitFrames: 60, release: true }, + textureBoundary, ); scenario.assert?.components?.push( ...[ From bc628ac578c96e9ea6b6e5dd7581909fc24513de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Paulo=20Furtado?= <30300459+jonit-dev@users.noreply.github.com> Date: Fri, 2 Oct 2026 05:01:47 -0700 Subject: [PATCH 16/41] test(vq07): retain resize proof and qualify the native host route --- .../workflows/integration-volumetric-fog.yml | 59 ++ .../PRD-VQ-07-volumetric-fog.md | 11 +- .../vq07-progress/1505e018a/provenance.json | 598 ++++++++++++++++++ .../vq07-progress/1505e018a/resizeRestore.png | Bin 0 -> 42747 bytes .../vq07-progress/1505e018a/resizeSmall.png | Bin 0 -> 39908 bytes examples/abyss-framework/vq-fog/README.md | 9 + .../__tests__/verify-volumetric-fog.spec.ts | 9 + scripts/__tests__/vq-fog-native-proof.spec.ts | 114 ++++ scripts/verify-volumetric-fog.ts | 232 +++++-- 9 files changed, 993 insertions(+), 39 deletions(-) create mode 100644 docs/verification/vq07-progress/1505e018a/provenance.json create mode 100644 docs/verification/vq07-progress/1505e018a/resizeRestore.png create mode 100644 docs/verification/vq07-progress/1505e018a/resizeSmall.png create mode 100644 scripts/__tests__/vq-fog-native-proof.spec.ts diff --git a/.github/workflows/integration-volumetric-fog.yml b/.github/workflows/integration-volumetric-fog.yml index 6f13f802d3..d8fc5f4d6b 100644 --- a/.github/workflows/integration-volumetric-fog.yml +++ b/.github/workflows/integration-volumetric-fog.yml @@ -10,6 +10,7 @@ on: - 'examples/abyss-framework/vq-fog/**' - 'examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json' - 'scripts/verify-volumetric-fog.ts' + - 'scripts/__tests__/vq-fog-native-proof.spec.ts' - '.github/workflows/integration-volumetric-fog.yml' permissions: contents: read @@ -42,3 +43,61 @@ jobs: path: artifacts/volumetric-fog/ retention-days: 30 if-no-files-found: error + native: + name: Linux native fog correctness + needs: [capture] + # Reuse the proven native-platforms / native-assets ARM QuickJS route without changing defaults. + runs-on: ubuntu-24.04-arm + timeout-minutes: 60 + env: + CMAKE_BUILD_PARALLEL_LEVEL: '2' + TN_PLAYTEST_ALLOW_SOFTWARE: '1' + TN_PLAYTEST_NATIVE_SCREENSHOT_TIMEOUT_MS: '30000' + steps: + - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 + with: + persist-credentials: false + ref: ${{ github.event.pull_request.head.sha || github.sha }} + - uses: ./.github/actions/pnpm + - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 + with: + node-version: '22' + cache: pnpm + - uses: actions/setup-python@v7 + with: + python-version: '3.12' + - run: pnpm install --frozen-lockfile + - name: Build this source's public JavaScript packages + uses: ./.github/actions/workspace-dist + with: + save-bundles: 'false' + pack-archives: 'false' + - name: Verify native preflight and capture rejection controls + run: pnpm exec vitest run scripts/__tests__/vq-fog-native-proof.spec.ts --maxWorkers=1 + - name: Restore checksum-provisioned native dependencies + uses: actions/cache/restore@v4 + with: + path: packages/runtime-native/third_party + key: native-third-party-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('packages/runtime-native/scripts/download-deps.mjs', 'packages/runtime-native/scripts/package-android.mjs') }} + - name: Install the existing native lane's system prerequisites + run: >- + sudo apt-get update && sudo apt-get install -y + libasound2-dev libcurl4-openssl-dev libfontconfig1-dev libfreetype6-dev + libpulse-dev libudev-dev libx11-dev libxext-dev libxrandr-dev + libxcursor-dev libxi-dev libxfixes-dev libxss-dev libxkbcommon-dev + libgtk-3-dev libwebkit2gtk-4.1-dev libxcomposite-dev xcompmgr + libvulkan1 mesa-vulkan-drivers vulkan-tools xvfb zlib1g-dev + - name: Build the ordinary ARM desktop host + run: pnpm --filter @threenative/runtime-native native:build + - name: Run the same authored fog and pixel gates on the native host + env: + THREENATIVE_RUNTIME_BINARY: ${{ github.workspace }}/packages/runtime-native/build/tn-linux/mystral + run: node --import tsx scripts/verify-volumetric-fog.ts + - name: Retain native screenshots, host console and executable identities + if: always() + uses: actions/upload-artifact@v7 + with: + name: volumetric-fog-native-${{ github.event.pull_request.head.sha || github.sha }} + path: artifacts/volumetric-fog-native/ + retention-days: 30 + if-no-files-found: warn diff --git a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md index 00455eb501..c16a9e3095 100644 --- a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md +++ b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md @@ -4,7 +4,7 @@ prd_contract: v1 # PRD-VQ-07 — Local volumetric fog composes with depth, lights and existing atmosphere -**Status:** PARTIAL — 2026-10-02. Browser scattering/lifecycle proof is complete; target resize, native qualification and promotion gates remain open. +**Status:** PARTIAL — 2026-10-02. Browser reference, lifecycle, target-resize and texture-accounting checks pass; Linux native proof and repository promotion remain pending. **Batch:** [Visual quality execution batch](https://github.com/ThreeNativeHQ/threenative/blob/docs/visual-quality-batch-2026-10-01/docs/PRDs/batch-2026-10-01-visual-quality/README.md). **Wave:** 2 / atmosphere. **Dependencies:** Independent of clouds. Reuse VQ-06 only for any local-light feature it has actually qualified. @@ -119,3 +119,12 @@ Next bounded proof slice (runtime pending): existing portable `renderer.setSize` Render-boundary correction: [run 36999492881](https://github.com/ThreeNativeHQ/threenative/actions/runs/36999492881) at `0d9c1c537b5883081a6c746ec4313ab7236a6207` failed closed on the first off-arm stability assertions. Artifact `11223002573` (SHA256 `a6c57e6bb2b4cd54026bb0ce94ba093902c4af69dfd10c8a0f78937871c22c6b`) shows a valid texture count of 5 but zero counted render boundaries after setup. Pinned Three updates `info.frame` in its own Animation loop, which the framework does not use. The fixture now samples cumulative `info.render.calls` at the next game update, counting one completed render interval even if it contained multiple passes; simulation-only updates still cannot advance it. A regression that leaves `info.frame` fixed at zero and advances only render calls failed first. All three-frame stability and image/count thresholds remain unchanged; new runtime proof is pending. Measured-settle correction: [run 37000014054](https://github.com/ThreeNativeHQ/threenative/actions/runs/37000014054) at `47464cca247eeb2391de7057276cef9cb8aa36fc` observed one completed render interval before the fixed-tick sequence ended, so it correctly failed the three-frame predicate. Artifact `11222909308` matches SHA256 `54d4a610d60770663f3bfefc790c07ffc22cf76b69ed63a318751c2d6a441eba`. `FixedStepLoop.advance()` simulates only; the bridge interprets these authored waitFrames as ticks. Each capture and each resize transition now uses the existing `waitForResource` observer for `state.stableTextureFrames >= 3`, bounded to 30 seconds. That mechanism advances one fixed tick between bounded polls, allowing the real render loop to progress and the game to sample its actual counters; elapsed time or poll count alone cannot satisfy it. Public scenario round-trip tests validate every arm. All resource/image thresholds remain unchanged. The existing desktop project bundler also compiled this same portable game source successfully (entry `src/game.ts`); that compile is not native execution proof. + +Target/depth resize and renderer-accounting proof: [run 37000862324](https://github.com/ThreeNativeHQ/threenative/actions/runs/37000862324) at `1505e018aa38630b91893ab8265c447833e99a51` passed all 17 cases with empty diagnostics. Artifact `11224155982` matches SHA256 `a21b102966a09371896a4d796fd278525925a5c4b6ce70b2a81cb1eb79ac45d4`. Actual target sizes were 320×240 then 640×400 with one controller/target creation and zero teardown; restored fog pixels exactly equal the original fixed-size fog frame. Independent renderer texture count returns to 5 at final off, equal to the off baseline, after three observed stable render intervals in both arms. The [small-target capture](../../verification/vq07-progress/1505e018a/resizeSmall.png), [restored capture](../../verification/vq07-progress/1505e018a/resizeRestore.png) and [provenance/observations](../../verification/vq07-progress/1505e018a/provenance.json) are retained unchanged. Browser implementation qualification now includes all these controls; native execution, OS-window lifecycle, hardware performance and repository promotion gates remain separately unproven. + + +Measured workload/cost record for source `1505e018aa38630b91893ab8265c447833e99a51`, run `37000862324`, Google SwiftShader (`vendor=google`, `architecture=swiftshader`), browser WebGPU / 640×400: full fog renders 256,000 transport pixels at 48 steps, half fog 64,000 transport pixels at 48 steps, with one ordinary shadowed directional light and one unshadowed finite-range point light. The overlap arm uses two bounds; the normal arm uses one. Half-resolution edge fallback can perform additional full-resolution work, so the pixel ratio is not a claimed cost reduction. Renderer texture counts are 5 off and 10 active, returning to 5 after teardown. Pipeline-census creation service totals over each entire boot/capture window were 1.4 ms off (5 events), 2.5 ms full fog (8 events), and 1.9 ms half fog (8 events). These coarse host-side pipeline-creation timings are **not per-frame fog time, GPU duration or hardware performance**. Timestamp tracking was disabled; per-frame GPU cost and hardware tier admission remain unmeasured. No default tier is enabled from these numbers. + +Native qualification slice (not yet run): the existing built public `runDesktopPlaytest` and desktop project bundler now reuse the same 17 authored controls and external pixel metrics. Native scenarios map identical state predicates to supported resources/startup assertions, retaining strict native console/readiness/device-loss and actual `device.screenshot` / named-WebGPU-adapter provenance checks. Real-handshake preflight uses the QuickJS descriptor captured by PR396 plus the actual mailbox transport capabilities, including host key injection. The native source reconfigures its backing surface from canvas dimensions; only the small-target arm therefore declares a 320×240 native PNG, while the restored and other native captures remain 640×400 (browser CSS captures stay 640×400 throughout). This distinction is pinned before native execution; no image or error threshold is lowered. The dependent ARM Linux job reuses the proven native lane's checksummed provisioning/build and records actual host/bundle/source hashes. Unknown adapter feature lists cannot substitute for a named identity. Native acceptance stays unticked until that host executes and its real screenshots pass. + +Native-slice local validation: source/fixture/capture/native-handshake/CI-structure/CI-needs/document suites pass 191/191; strict verifier/test types, the exact desktop `--native-backend` bundle command and evidence budget pass. This validates the route and fail-closed guards, not native runtime rendering. The public runner must now execute on the hosted ARM host and preserve its actual PNGs before native acceptance can advance. diff --git a/docs/verification/vq07-progress/1505e018a/provenance.json b/docs/verification/vq07-progress/1505e018a/provenance.json new file mode 100644 index 0000000000..aa7daed582 --- /dev/null +++ b/docs/verification/vq07-progress/1505e018a/provenance.json @@ -0,0 +1,598 @@ +{ + "sourceSha": "1505e018aa38630b91893ab8265c447833e99a51", + "runId": 37000862324, + "runUrl": "https://github.com/ThreeNativeHQ/threenative/actions/runs/37000862324", + "artifactId": 11224155982, + "artifactSha256": "a21b102966a09371896a4d796fd278525925a5c4b6ce70b2a81cb1eb79ac45d4", + "qualification": "Browser WebGPU software-rendered target/depth resize and texture-accounting proof. No operating-system window resize, native runtime or hardware-performance claim.", + "images": { + "resizeSmall": { + "file": "resizeSmall.png", + "sha256": "d7e3e7adbe608ea141c07cdf5cfc86b8869728e7e830f9dd1513ef47c2a154b2", + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "components": { + "mode": { + "before": "off", + "after": "fog" + }, + "ready": { + "before": false, + "after": true + }, + "builds": { + "before": 0, + "after": 1 + }, + "disposedGraphs": { + "before": 0, + "after": 0 + }, + "createdTargets": { + "before": 0, + "after": 1 + }, + "releasedTargets": { + "before": 0, + "after": 0 + }, + "releasedMaterials": { + "before": 0, + "after": 0 + }, + "liveTargets": { + "before": 0, + "after": 1 + }, + "scatteringOnly": { + "before": false, + "after": false + }, + "textures": { + "before": 2, + "after": 10 + }, + "settledRenderFrames": { + "before": 1, + "after": 3 + }, + "stableTextureFrames": { + "before": 1, + "after": 3 + }, + "targetWidth": { + "before": 0, + "after": 320 + }, + "targetHeight": { + "before": 0, + "after": 240 + }, + "targets": { + "before": 0, + "after": 1 + }, + "pixels": { + "before": 0, + "after": 76800 + }, + "steps": { + "before": 0, + "after": 48 + }, + "inside": { + "before": false, + "after": false + }, + "sun": { + "before": true, + "after": true + }, + "point": { + "before": true, + "after": true + }, + "overlaps": { + "before": false, + "after": false + } + } + }, + "resizeRestore": { + "file": "resizeRestore.png", + "sha256": "0ac40bc66226495a430c379c039abdadff54a867d19c97e81895083b2c64a190", + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "components": { + "mode": { + "before": "off", + "after": "fog" + }, + "ready": { + "before": false, + "after": true + }, + "builds": { + "before": 0, + "after": 1 + }, + "disposedGraphs": { + "before": 0, + "after": 0 + }, + "createdTargets": { + "before": 0, + "after": 1 + }, + "releasedTargets": { + "before": 0, + "after": 0 + }, + "releasedMaterials": { + "before": 0, + "after": 0 + }, + "liveTargets": { + "before": 0, + "after": 1 + }, + "scatteringOnly": { + "before": false, + "after": false + }, + "textures": { + "before": 2, + "after": 10 + }, + "settledRenderFrames": { + "before": 1, + "after": 3 + }, + "stableTextureFrames": { + "before": 1, + "after": 3 + }, + "targetWidth": { + "before": 0, + "after": 640 + }, + "targetHeight": { + "before": 0, + "after": 400 + }, + "targets": { + "before": 0, + "after": 1 + }, + "pixels": { + "before": 0, + "after": 256000 + }, + "steps": { + "before": 0, + "after": 48 + }, + "inside": { + "before": false, + "after": false + }, + "sun": { + "before": true, + "after": true + }, + "point": { + "before": true, + "after": true + }, + "overlaps": { + "before": false, + "after": false + } + } + } + }, + "results": [ + { + "mode": "off", + "pass": true, + "resources": { + "textures": 5, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [] + }, + { + "mode": "zero", + "pass": true, + "resources": { + "textures": 5, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [] + }, + { + "mode": "fog", + "pass": true, + "resources": { + "textures": 10, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [] + }, + { + "mode": "inside", + "pass": true, + "resources": { + "textures": 10, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [] + }, + { + "mode": "sunOff", + "pass": true, + "resources": { + "textures": 10, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [] + }, + { + "mode": "pointOff", + "pass": true, + "resources": { + "textures": 10, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [] + }, + { + "mode": "overlap", + "pass": true, + "resources": { + "textures": 10, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [] + }, + { + "mode": "half", + "pass": true, + "resources": { + "textures": 10, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [] + }, + { + "mode": "wallOff", + "pass": true, + "resources": { + "textures": 10, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [] + }, + { + "mode": "blackOff", + "pass": true, + "resources": { + "textures": 5, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [] + }, + { + "mode": "scatter", + "pass": true, + "resources": { + "textures": 10, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [] + }, + { + "mode": "scatterSunOff", + "pass": true, + "resources": { + "textures": 10, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [] + }, + { + "mode": "scatterPointOff", + "pass": true, + "resources": { + "textures": 10, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [] + }, + { + "mode": "lifecycle", + "pass": true, + "resources": { + "textures": 10, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [] + }, + { + "mode": "lifecycleOff", + "pass": true, + "resources": { + "textures": 5, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [] + }, + { + "mode": "resizeSmall", + "pass": true, + "resources": { + "textures": 10, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [] + }, + { + "mode": "resizeRestore", + "pass": true, + "resources": { + "textures": 10, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [] + }, + { + "assertion": "zero-density pixel identity", + "pass": true + }, + { + "assertion": "repeated lifecycle restores baseline pixels", + "pass": true + }, + { + "assertion": "renderer texture allocation baseline", + "baselineResources": { + "textures": 5, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "restoredResources": { + "textures": 5, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "pass": true + }, + { + "assertion": "target/depth resize restores exact pixels", + "pass": true + }, + { + "assertion": "isolated light-scattering pixels", + "baselineMaxRgb": 0, + "wallMaxRgb": 0, + "roi": { + "x": 260, + "y": 155, + "width": 150, + "height": 90 + }, + "wallRoi": { + "x": 184, + "y": 216, + "width": 18, + "height": 18 + }, + "evaluationRoi": { + "x": 0, + "y": 0, + "width": 500, + "height": 400 + }, + "calibrationRoi": { + "x": 515, + "y": 25, + "width": 110, + "height": 110 + }, + "calibrationMinimum": 146, + "calibrationMaxDifference": 0, + "sun": { + "meanRgbDelta": 15.958518518518519, + "changedPixelRatio": 0.9933333333333333 + }, + "point": { + "meanRgbDelta": 48.77553086419753, + "changedPixelRatio": 1 + }, + "thresholds": { + "minMeanRgbDelta": 1, + "minChangedPixelRatio": 0.1, + "maxBlackRgb": 0, + "minCalibrationRgb": 32, + "maxCalibrationDifference": 0 + }, + "pass": true + } + ], + "workloadAndCost": { + "sourceSha": "1505e018aa38630b91893ab8265c447833e99a51", + "runId": 37000862324, + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "scope": "Coarse host-side pipeline-creation service over each entire boot/capture window. Not per-frame fog time, GPU duration or a performance comparison. Timestamp tracking was disabled. No hardware tier admission.", + "cases": { + "off": { + "transportPixels": 0, + "raySteps": 0, + "rendererTextures": 5, + "bounds": 0, + "declaredDirectionalLights": 1, + "declaredUnshadowedPoints": 1, + "pipelineCounts": { + "lookups": 5, + "creations": 5, + "failures": 0, + "pending": 0, + "uniquePrograms": 4, + "uniquePipelines": 5, + "recordedEvents": 5, + "droppedEvents": 0, + "deviceCreations": 5, + "directCreations": 0 + }, + "pipelineCreationServiceMs": 1.3999999999359716 + }, + "fog": { + "transportPixels": 256000, + "raySteps": 48, + "rendererTextures": 10, + "bounds": 1, + "declaredDirectionalLights": 1, + "declaredUnshadowedPoints": 1, + "pipelineCounts": { + "lookups": 8, + "creations": 8, + "failures": 0, + "pending": 0, + "uniquePrograms": 7, + "uniquePipelines": 8, + "recordedEvents": 8, + "droppedEvents": 0, + "deviceCreations": 8, + "directCreations": 0 + }, + "pipelineCreationServiceMs": 2.500000000029104 + }, + "half": { + "transportPixels": 64000, + "raySteps": 48, + "rendererTextures": 10, + "bounds": 1, + "declaredDirectionalLights": 1, + "declaredUnshadowedPoints": 1, + "pipelineCounts": { + "lookups": 8, + "creations": 8, + "failures": 0, + "pending": 0, + "uniquePrograms": 7, + "uniquePipelines": 8, + "recordedEvents": 8, + "droppedEvents": 0, + "deviceCreations": 8, + "directCreations": 0 + }, + "pipelineCreationServiceMs": 1.900000000023283 + }, + "overlap": { + "transportPixels": 256000, + "raySteps": 48, + "rendererTextures": 10, + "bounds": 2, + "declaredDirectionalLights": 1, + "declaredUnshadowedPoints": 1, + "pipelineCounts": { + "lookups": 8, + "creations": 8, + "failures": 0, + "pending": 0, + "uniquePrograms": 7, + "uniquePipelines": 8, + "recordedEvents": 8, + "droppedEvents": 0, + "deviceCreations": 8, + "directCreations": 0 + }, + "pipelineCreationServiceMs": 2.1000000000058208 + } + } + } +} diff --git a/docs/verification/vq07-progress/1505e018a/resizeRestore.png b/docs/verification/vq07-progress/1505e018a/resizeRestore.png new file mode 100644 index 0000000000000000000000000000000000000000..93faf81b388a5558c1f51b55cb6ced7e30f455f8 GIT binary patch literal 42747 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 u!2Pdm-jIPnH#gOS*pB}=$~fFOfNiwUcFE4 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Ð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�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 DYfeh4 literal 0 HcmV?d00001 diff --git a/examples/abyss-framework/vq-fog/README.md b/examples/abyss-framework/vq-fog/README.md index 03035c6f2c..919a470593 100644 --- a/examples/abyss-framework/vq-fog/README.md +++ b/examples/abyss-framework/vq-fog/README.md @@ -41,3 +41,12 @@ pnpm parity --project examples/abyss-framework/vq-fog --target desktop The reusable repeated-lifecycle scenario is `../playtests/vq-volumetric-fog.playtest.json`. Portable target/depth resize scenarios retain the same fog controller and require exact restored pixels. Allocation comparisons require unchanged texture counts over at least three observed completed render frames, not just elapsed time. These do not establish operating-system window resize behavior. Native execution and screenshot proof remain unverified until the host runs it; browser captures do not establish native support or hardware performance. + + +The same verifier can use an already-built Linux desktop host: + +```sh +THREENATIVE_RUNTIME_BINARY=/absolute/path/to/mystral node --import tsx scripts/verify-volumetric-fog.ts +``` + +It bundles the same `src/game.ts`, uses the public desktop mailbox runner, and retains host/game hashes plus native screenshots under `artifacts/volumetric-fog-native/`. Native scenarios use resources/startup; unsupported browser diagnostics/visual assertion families are replaced by mandatory native host-console/readiness/provenance checks and the same external pixel gates. Native `renderer.setSize` changes the backing surface, so the small-target PNG is 320×240; the restored PNG remains 640×400. The integration workflow's native job reuses the normal ARM Linux host setup after browser proof passes. Native execution is still pending; a bundle build alone does not qualify it. diff --git a/scripts/__tests__/verify-volumetric-fog.spec.ts b/scripts/__tests__/verify-volumetric-fog.spec.ts index 46adbe7142..26d6e9c497 100644 --- a/scripts/__tests__/verify-volumetric-fog.spec.ts +++ b/scripts/__tests__/verify-volumetric-fog.spec.ts @@ -35,6 +35,15 @@ describe("volumetric fog runtime evidence", () => { expect(fogCaptureIsValid({ ...good, capture: undefined })).toBe(false); expect(fogCaptureIsValid({ ...good, capture: { rendererKind: "webgl2" } })).toBe(false); expect(fogCaptureIsValid({ ...good, capture: { ...good.capture, adapter: {} } })).toBe(false); + expect( + fogCaptureIsValid({ + ...good, + capture: { + ...good.capture, + adapter: { features: "timestamp-query", vendor: "unknown", architecture: "unavailable" }, + }, + }), + ).toBe(false); expect( fogCaptureIsValid({ ...good, diff --git a/scripts/__tests__/vq-fog-native-proof.spec.ts b/scripts/__tests__/vq-fog-native-proof.spec.ts new file mode 100644 index 0000000000..78e404cb06 --- /dev/null +++ b/scripts/__tests__/vq-fog-native-proof.spec.ts @@ -0,0 +1,114 @@ +import { expect, it } from "vitest"; +import { + ANDROID_TRANSPORT_CAPABILITIES, + type IBridgeTransport, + connectPlaytestBridgeTransport, +} from "../../packages/playtest/dist/runner/index.js"; +import { requiredPlaytestCapabilities } from "../../packages/playtest/src/assertion-schema.js"; +import { PLAYTEST_PROTOCOL_LIMITS } from "../../packages/playtest/src/protocol.js"; +import { validatePlaytestScenario } from "../../packages/playtest/src/scenario.js"; +import { + fogCaptureScenarios, + fogNativeCaptureIsValid, + nativeFogScenario, +} from "../verify-volumetric-fog.js"; + +const consoleEvidence = [{ type: "log", text: "TN_NATIVE_SMOKE_FIRST_FRAME" }]; +function report(): Parameters[0] { + return { + pass: true, + runtime: "native", + target: "desktop", + diagnostics: [], + startup: { phase: "ready", progress: 1, compileSettled: true, rule: "compile-settled" }, + assertionResults: [{ id: "resources.0", pass: true }], + capture: { + target: "desktop", + rendererKind: "webgpu", + captureMethod: "device.screenshot", + browserArgs: [], + adapter: { description: "llvmpipe" }, + viewport: { width: 640, height: 400 }, + }, + }; +} +it("requires actual native provenance, assertions, readiness and console evidence", () => { + expect(fogNativeCaptureIsValid(report(), consoleEvidence)).toBe(true); + for (const mutation of [ + { pass: false }, + { runtime: "browser" }, + { target: "web" }, + { capture: undefined }, + { assertionResults: [] }, + { startup: undefined }, + { diagnostics: [{ severity: "warning", code: "TN_PLAYTEST_SOFTWARE_DEVICE_LOST" }] }, + ]) + expect( + fogNativeCaptureIsValid( + { ...report(), ...mutation } as Parameters[0], + consoleEvidence, + ), + ).toBe(false); + for (const badConsole of [ + [], + undefined, + [{ type: "error", text: "other error" }], + [{ type: "log", text: "[WebGPU] Device error (Validation): invalid texture" }], + [{ type: "log", text: "TypeError: unsupported graph" }], + [{ type: "log", text: "no first-frame marker" }], + ]) + expect(fogNativeCaptureIsValid(report(), badConsole)).toBe(false); +}); +it("preserves every fog state predicate through supported native resources", async () => { + for (const { mode, scenario } of await fogCaptureScenarios()) { + const native = nativeFogScenario(scenario); + expect(native.assert?.resources).toEqual( + scenario.assert?.components?.map(({ entity: _entity, component, ...predicate }) => ({ + id: "state", + path: component, + ...predicate, + })), + ); + expect(native.assert?.diagnostics).toBeUndefined(); + expect(native.assert?.visual).toBeUndefined(); + expect(native.assert?.startup?.maxReadyMs).toBe(120000); + expect(requiredPlaytestCapabilities(native, "desktop")).not.toContain("runtime.diagnostics"); + expect(validatePlaytestScenario(native, mode).target).toBe("desktop"); + } +}); +it("passes the real native handshake preflight for every generated arm", async () => { + // Minimal real QuickJS handshake captured by PR396 run36996645116, plus the actual + // shared mailbox transport capabilities (including host key injection). Not a native render claim. + const transport: IBridgeTransport = { + capabilities: ANDROID_TRANSPORT_CAPABILITIES, + waitForBridge: async () => true, + close: async () => {}, + async call(method: string): Promise { + if (method === "describe") + return { + capabilities: ["runtime.resources", "runtime.fixedStep", "runtime.startup"], + limits: PLAYTEST_PROTOCOL_LIMITS, + name: "@threenative/playtest/three", + protocolVersion: 1, + } as T; + if (method === "ready") return { ready: true } as T; + throw new Error(`Unexpected preflight call ${method}`); + }, + }; + for (const { scenario } of await fogCaptureScenarios()) + await expect( + connectPlaytestBridgeTransport(transport, nativeFogScenario(scenario), 1000, "desktop"), + ).resolves.toBeDefined(); +}); + +it("declares the native backing-surface size for the small-target capture without weakening defaults", async () => { + const authored = (await fogCaptureScenarios()).find( + ({ mode }) => mode === "resizeSmall", + )?.scenario; + if (authored === undefined) throw new Error("Missing small-target scenario"); + const viewport = { width: 320, height: 240 }; + expect(nativeFogScenario(authored, viewport).viewport).toEqual(viewport); + const small = { ...report(), capture: { ...report().capture!, viewport } }; + expect(fogNativeCaptureIsValid(small, consoleEvidence)).toBe(false); + expect(fogNativeCaptureIsValid(small, consoleEvidence, viewport)).toBe(true); +}); diff --git a/scripts/verify-volumetric-fog.ts b/scripts/verify-volumetric-fog.ts index 65f55e9cfc..6f1a4f1040 100644 --- a/scripts/verify-volumetric-fog.ts +++ b/scripts/verify-volumetric-fog.ts @@ -1,4 +1,5 @@ import { execFileSync } from "node:child_process"; +import { createHash } from "node:crypto"; import { mkdir, readFile, writeFile } from "node:fs/promises"; import path from "node:path"; import { fileURLToPath } from "node:url"; @@ -6,13 +7,14 @@ import { PNG } from "pngjs"; import { type IPlaytestScenario, loadPlaytestScenario } from "../packages/playtest/dist/index.js"; // Use the built public runner: source-runner browser callbacks under tsx may capture __name. import { + type IStandalonePlaytestReport, WEBGPU_BROWSER_ARGS, + runDesktopPlaytest, runStandalonePlaytest, } from "../packages/playtest/dist/runner/index.js"; const root = fileURLToPath(new URL("..", import.meta.url)); const fixture = path.join(root, "examples/abyss-framework/vq-fog"); -const artifacts = path.join(root, "artifacts/volumetric-fog"); const cases = [ ["off", "KeyO"], ["zero", "KeyZ"], @@ -288,23 +290,29 @@ export function fogLightPixelMetrics( }; } -export function fogCaptureIsValid(report: { - pass: boolean; - capture?: { - rendererKind?: string; - adapter?: Record; - viewport?: { width: number; height: number }; - }; - diagnostics: readonly { code: string; severity: string }[]; -}): boolean { +export function fogCaptureIsValid( + report: { + pass: boolean; + capture?: { + rendererKind?: string; + adapter?: Record; + viewport?: { width: number; height: number }; + }; + diagnostics: readonly { code: string; severity: string }[]; + }, + viewport = { width: 640, height: 400 }, +): boolean { return ( report.pass && report.capture?.rendererKind === "webgpu" && - report.capture.viewport?.width === 640 && - report.capture.viewport.height === 400 && - Object.values(report.capture.adapter ?? {}).some( - (value) => value.trim() !== "" && !/^(unknown|unavailable)$/i.test(value), - ) && + report.capture.viewport?.width === viewport.width && + report.capture.viewport.height === viewport.height && + ["vendor", "architecture", "device", "description"].some((key) => { + const value = report.capture?.adapter?.[key]; + return ( + typeof value === "string" && value.trim() !== "" && !/^(unknown|unavailable)$/i.test(value) + ); + }) && !report.diagnostics.some( (diagnostic) => diagnostic.severity === "error" || diagnostic.code === "TN_PLAYTEST_SOFTWARE_DEVICE_LOST", @@ -312,7 +320,75 @@ export function fogCaptureIsValid(report: { ); } +export function nativeFogScenario( + scenario: IPlaytestScenario, + viewport = scenario.viewport, +): IPlaytestScenario { + if (!scenario.assert?.components?.length) + throw new Error("Native fog proof requires state predicates."); + return { + ...scenario, + target: "desktop", + viewport, + artifacts: { screenshots: "after", console: true }, + assert: { + resources: scenario.assert.components.map(({ entity: _entity, component, ...predicate }) => ({ + id: "state", + path: component, + ...predicate, + })), + startup: { maxEnteredMs: 120_000, maxReadyMs: 120_000 }, + }, + }; +} + +export function fogNativeCaptureIsValid( + report: Pick< + IStandalonePlaytestReport, + "pass" | "capture" | "diagnostics" | "runtime" | "target" | "startup" | "assertionResults" + >, + nativeConsole: unknown, + viewport = { width: 640, height: 400 }, +): boolean { + return ( + fogCaptureIsValid(report, viewport) && + report.runtime === "native" && + report.target === "desktop" && + report.capture?.target === "desktop" && + report.capture.captureMethod === "device.screenshot" && + report.startup?.phase === "ready" && + report.startup.compileSettled === true && + (report.assertionResults?.length ?? 0) > 0 && + report.assertionResults?.every((result) => result.pass) === true && + !report.diagnostics.some((diagnostic) => /DEVICE_LOST|BRIDGE_MISSING/u.test(diagnostic.code)) && + Array.isArray(nativeConsole) && + nativeConsole.length > 0 && + nativeConsole.every( + (entry) => + entry && + typeof entry.text === "string" && + typeof entry.type === "string" && + entry.type !== "error" && + !/\[FATAL\]|\[WebGPU\].*(?:Device error|Device lost|Failed)|validation error|device(?:[ _-]| was )?lost|(?:Type|Reference|Range|Syntax)Error|TN_(?:NATIVE_START_FAILED|ASSETS_UNRESOLVED)/iu.test( + entry.text, + ), + ) && + nativeConsole.some((entry) => entry.text.includes("TN_NATIVE_SMOKE_FIRST_FRAME")) + ); +} + async function main(): Promise { + const nativeRuntime = process.env.THREENATIVE_RUNTIME_BINARY; + const artifacts = path.join( + root, + "artifacts", + nativeRuntime === undefined ? "volumetric-fog" : "volumetric-fog-native", + ); + const nativeBundle = path.join(artifacts, "fog-native.js"); + const hash = async (file: string) => + createHash("sha256") + .update(await readFile(file)) + .digest("hex"); await mkdir(artifacts, { recursive: true }); const dirty = execFileSync("git", ["status", "--porcelain"], { cwd: root, @@ -327,41 +403,110 @@ async function main(): Promise { const results: Record[] = []; const summary = { sourceSha, + pass: false, + executionHost: { platform: process.platform, architecture: process.arch }, + nativeArtifacts: undefined as { runtimeSha256: string; bundleSha256: string } | undefined, qualification: - "Software correctness captures only; no hardware performance or native claim. Wall/shaft appearance awaits pixel inspection.", + nativeRuntime === undefined + ? "Browser WebGPU software correctness; no native or hardware-performance claim." + : "Linux native host software-rendered correctness; no Android, iOS, OS-window lifecycle or hardware-performance claim.", results, }; + await writeFile( + path.join(artifacts, "attempt.json"), + JSON.stringify({ + sourceSha, + runId: process.env.GITHUB_RUN_ID, + target: nativeRuntime === undefined ? "browser" : "desktop", + }), + ); try { - for (const { mode, scenario } of await fogCaptureScenarios()) { + if (nativeRuntime !== undefined) { + execFileSync( + process.execPath, + [ + "packages/runtime-native/scripts/bundle.mjs", + "--project", + fixture, + "--entry", + "src/game.ts", + "--target", + "desktop", + "--native-backend", + "--output", + nativeBundle, + ], + { cwd: root, stdio: "inherit" }, + ); + summary.nativeArtifacts = { + runtimeSha256: await hash(nativeRuntime), + bundleSha256: await hash(nativeBundle), + }; + } + for (const { mode, scenario: authored } of await fogCaptureScenarios()) { + const scenario = + nativeRuntime === undefined + ? authored + : nativeFogScenario( + authored, + mode === "resizeSmall" ? { width: 320, height: 240 } : authored.viewport, + ); const directory = path.join(artifacts, mode); await mkdir(directory, { recursive: true }); const scenarioPath = path.join(directory, "scenario.playtest.json"); await writeFile(scenarioPath, `${JSON.stringify(scenario, null, 2)}\n`); await loadPlaytestScenario(root, scenarioPath); - const report = await runStandalonePlaytest({ - artifactDirectory: directory, - projectPath: fixture, - scenarioPath, - target: "browser", - headless: false, - allowSoftwareAdapter: true, - browserArgs: WEBGPU_BROWSER_ARGS, - port: 0, - url: "http://127.0.0.1:5173/", - timeoutMs: 120_000, - trace: false, - server: { - cwd: root, - command: `VQ_FOG_HTTP_LOG=${JSON.stringify(path.join(directory, "http-errors.jsonl"))} node examples/abyss-framework/node_modules/vite/bin/vite.js preview --config examples/abyss-framework/vq-fog/vite.config.ts --host 127.0.0.1 --port \${PORT}`, - timeoutMs: 60_000, - }, - }); + const report = + nativeRuntime === undefined + ? await runStandalonePlaytest({ + artifactDirectory: directory, + projectPath: fixture, + scenarioPath, + target: "browser", + headless: false, + allowSoftwareAdapter: true, + browserArgs: WEBGPU_BROWSER_ARGS, + port: 0, + url: "http://127.0.0.1:5173/", + timeoutMs: 120_000, + trace: false, + server: { + cwd: root, + command: `VQ_FOG_HTTP_LOG=${JSON.stringify(path.join(directory, "http-errors.jsonl"))} node examples/abyss-framework/node_modules/vite/bin/vite.js preview --config examples/abyss-framework/vq-fog/vite.config.ts --host 127.0.0.1 --port \${PORT}`, + timeoutMs: 60_000, + }, + }) + : await runDesktopPlaytest({ + artifactDirectory: directory, + projectPath: fixture, + scenarioPath, + target: "desktop", + desktop: { + executable: nativeRuntime, + hostArgs: ["run", nativeBundle, "--windowed", "--width", "640", "--height", "400"], + }, + allowSoftwareAdapter: true, + headless: false, + timeoutMs: 120_000, + trace: false, + url: "", + }); await writeFile(path.join(directory, "report.json"), `${JSON.stringify(report, null, 2)}\n`); await writeFile( path.join(directory, "observations.json"), `${JSON.stringify(report.observations, null, 2)}\n`, ); - const valid = fogCaptureIsValid(report); + const nativeConsole = + nativeRuntime === undefined + ? undefined + : JSON.parse(await readFile(path.join(directory, "console.json"), "utf8")); + const valid = + nativeRuntime === undefined + ? fogCaptureIsValid(report) + : fogNativeCaptureIsValid(report, nativeConsole, scenario.viewport); + const observedState = report.observations?.resources?.state?.after as + | Record + | undefined; results.push({ mode, sourceSha, @@ -370,7 +515,7 @@ async function main(): Promise { resources: Object.fromEntries( ["textures", "settledRenderFrames", "stableTextureFrames"].map((key) => [ key, - report.observations?.components?.fog?.[key]?.after, + observedState?.[key], ]), ), diagnostics: report.diagnostics, @@ -391,7 +536,11 @@ async function main(): Promise { throw new Error( `VQ07 ${mode}: rejected runtime/capture diagnostics; preserve artifacts as diagnostic only.`, ); - await readFile(path.join(directory, "after.png")); + const png = PNG.sync.read(await readFile(path.join(directory, "after.png"))); + if (png.width !== scenario.viewport.width || png.height !== scenario.viewport.height) + throw new Error( + `VQ07 ${mode}: actual screenshot dimensions do not match the declared capture viewport.`, + ); } const off = PNG.sync.read(await readFile(path.join(artifacts, "off/after.png"))); const zero = PNG.sync.read(await readFile(path.join(artifacts, "zero/after.png"))); @@ -441,6 +590,13 @@ async function main(): Promise { results.push({ assertion: "isolated light-scattering pixels", ...metrics }); if (!metrics.pass) throw new Error("VQ07 isolated light-scattering/black-control pixel gates failed."); + if ( + nativeRuntime !== undefined && + ((await hash(nativeRuntime)) !== summary.nativeArtifacts?.runtimeSha256 || + (await hash(nativeBundle)) !== summary.nativeArtifacts?.bundleSha256) + ) + throw new Error("VQ07 native executable or game bundle changed during proof."); + summary.pass = true; } finally { await writeFile(path.join(artifacts, "summary.json"), `${JSON.stringify(summary, null, 2)}\n`); } From 1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Paulo=20Furtado?= <30300459+jonit-dev@users.noreply.github.com> Date: Fri, 2 Oct 2026 05:13:53 -0700 Subject: [PATCH 17/41] test(vq07): render each owned graph before lifecycle replacement --- .../PRD-VQ-07-volumetric-fog.md | 2 + .../playtests/vq-volumetric-fog.playtest.json | 43 ++++++++++++++++++- .../__tests__/verify-volumetric-fog.spec.ts | 19 ++++++-- 3 files changed, 60 insertions(+), 4 deletions(-) diff --git a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md index c16a9e3095..0512424e64 100644 --- a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md +++ b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md @@ -128,3 +128,5 @@ Measured workload/cost record for source `1505e018aa38630b91893ab8265c447833e99a Native qualification slice (not yet run): the existing built public `runDesktopPlaytest` and desktop project bundler now reuse the same 17 authored controls and external pixel metrics. Native scenarios map identical state predicates to supported resources/startup assertions, retaining strict native console/readiness/device-loss and actual `device.screenshot` / named-WebGPU-adapter provenance checks. Real-handshake preflight uses the QuickJS descriptor captured by PR396 plus the actual mailbox transport capabilities, including host key injection. The native source reconfigures its backing surface from canvas dimensions; only the small-target arm therefore declares a 320×240 native PNG, while the restored and other native captures remain 640×400 (browser CSS captures stay 640×400 throughout). This distinction is pinned before native execution; no image or error threshold is lowered. The dependent ARM Linux job reuses the proven native lane's checksummed provisioning/build and records actual host/bundle/source hashes. Unknown adapter feature lists cannot substitute for a named identity. Native acceptance stays unticked until that host executes and its real screenshots pass. Native-slice local validation: source/fixture/capture/native-handshake/CI-structure/CI-needs/document suites pass 191/191; strict verifier/test types, the exact desktop `--native-backend` bundle command and evidence budget pass. This validates the route and fail-closed guards, not native runtime rendering. The public runner must now execute on the hosted ARM host and preserve its actual PNGs before native acceptance can advance. + +Independent review passed for native-route source staged at tree `15da770ebf0915f8f53abf3276e29a413e00f558`: the reviewer reran verifier/native-proof tests, 14/14 passed, and found no blocker in the supported predicate mapping or native provenance/console/pixel guards. A final scenario strengthening also waits for three observed render intervals after **every** fog/inside/off/rebuild transition, with labeled snapshots, rather than only after the last transition. The prior disposal events prove real controller/target-object release; these additional boundaries establish that each intermediate graph actually rendered before replacement. Exact create/release/live and restored-pixel thresholds are unchanged. Native execution remains pending. diff --git a/examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json b/examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json index e26a694c2e..dd6d2fdd64 100644 --- a/examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json +++ b/examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json @@ -18,6 +18,16 @@ "kind": "wait", "waitFrames": 60 }, + { + "waitForResource": { + "id": "state", + "path": "stableTextureFrames", + "gte": 3 + }, + "timeoutMs": 30000, + "release": true, + "label": "initial-fog-rendered" + }, { "press": ["KeyI"], "holdTicks": 1, @@ -27,6 +37,16 @@ "kind": "wait", "waitFrames": 20 }, + { + "waitForResource": { + "id": "state", + "path": "stableTextureFrames", + "gte": 3 + }, + "timeoutMs": 30000, + "release": true, + "label": "inside-rendered" + }, { "press": ["KeyO"], "holdTicks": 1, @@ -36,6 +56,16 @@ "kind": "wait", "waitFrames": 20 }, + { + "waitForResource": { + "id": "state", + "path": "stableTextureFrames", + "gte": 3 + }, + "timeoutMs": 30000, + "release": true, + "label": "off-rendered" + }, { "press": ["KeyF"], "holdTicks": 1, @@ -45,6 +75,16 @@ "kind": "wait", "waitFrames": 20 }, + { + "waitForResource": { + "id": "state", + "path": "stableTextureFrames", + "gte": 3 + }, + "timeoutMs": 30000, + "release": true, + "label": "fog-return-rendered" + }, { "press": ["KeyC"], "holdTicks": 1, @@ -61,7 +101,8 @@ "gte": 3 }, "timeoutMs": 30000, - "release": true + "release": true, + "label": "rebuild-rendered" } ], "assert": { diff --git a/scripts/__tests__/verify-volumetric-fog.spec.ts b/scripts/__tests__/verify-volumetric-fog.spec.ts index 26d6e9c497..ee36441647 100644 --- a/scripts/__tests__/verify-volumetric-fog.spec.ts +++ b/scripts/__tests__/verify-volumetric-fog.spec.ts @@ -71,7 +71,7 @@ describe("volumetric fog runtime evidence", () => { process.cwd(), "examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json", ); - expect(scenario.steps).toHaveLength(11); + expect(scenario.steps).toHaveLength(15); }); }); @@ -133,9 +133,9 @@ it("runs the committed lifecycle and return-to-off scenarios, with actual releas const scenarios = await fogCaptureScenarios(); const lifecycle = scenarios.find(({ mode }) => mode === "lifecycle")?.scenario; const off = scenarios.find(({ mode }) => mode === "lifecycleOff")?.scenario; - expect(lifecycle?.steps).toHaveLength(11); + expect(lifecycle?.steps).toHaveLength(15); expect(lifecycle?.steps[0]?.press).toEqual(["KeyF"]); - expect(off?.steps).toHaveLength(14); + expect(off?.steps).toHaveLength(18); expect(lifecycle?.assert?.components).toEqual( expect.arrayContaining([expect.objectContaining({ component: "releasedTargets", equals: 3 })]), ); @@ -193,3 +193,16 @@ it("waits for measured render stability instead of treating fixed ticks as rende gte: 3, }); }); + +it("presents each intermediate lifecycle graph before the following transition", async () => { + const scenario = (await fogCaptureScenarios()).find(({ mode }) => mode === "lifecycle")?.scenario; + const steps = scenario?.steps ?? []; + const inputs = steps.flatMap((step, index) => (step.press === undefined ? [] : [index])); + expect(inputs).toHaveLength(5); + for (const [at, index] of inputs.entries()) { + const boundary = steps[(inputs[at + 1] ?? steps.length) - 1]; + expect(boundary?.waitForResource).toEqual({ id: "state", path: "stableTextureFrames", gte: 3 }); + expect(boundary?.label).toMatch(/rendered$/); + expect((inputs[at + 1] ?? steps.length) - 1).toBeGreaterThan(index); + } +}); From 08f4fe551b41e3fef148102640b66657e9f57a60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Paulo=20Furtado?= <30300459+jonit-dev@users.noreply.github.com> Date: Fri, 2 Oct 2026 05:41:19 -0700 Subject: [PATCH 18/41] docs(vq07): preserve native fog progress and resize failure --- .../PRD-VQ-07-volumetric-fog.md | 7 +- .../1f73e559c-native/blackOff.png | Bin 0 -> 12170 bytes .../vq07-progress/1f73e559c-native/fog.png | Bin 0 -> 72875 bytes .../vq07-progress/1f73e559c-native/inside.png | Bin 0 -> 130454 bytes .../vq07-progress/1f73e559c-native/off.png | Bin 0 -> 47812 bytes .../1f73e559c-native/provenance.json | 1895 +++++++++++++++++ .../1f73e559c-native/scatter.png | Bin 0 -> 63703 bytes .../1f73e559c-native/scatterPointOff.png | Bin 0 -> 55848 bytes .../1f73e559c-native/scatterSunOff.png | Bin 0 -> 58185 bytes 9 files changed, 1901 insertions(+), 1 deletion(-) create mode 100644 docs/verification/vq07-progress/1f73e559c-native/blackOff.png create mode 100644 docs/verification/vq07-progress/1f73e559c-native/fog.png create mode 100644 docs/verification/vq07-progress/1f73e559c-native/inside.png create mode 100644 docs/verification/vq07-progress/1f73e559c-native/off.png create mode 100644 docs/verification/vq07-progress/1f73e559c-native/provenance.json create mode 100644 docs/verification/vq07-progress/1f73e559c-native/scatter.png create mode 100644 docs/verification/vq07-progress/1f73e559c-native/scatterPointOff.png create mode 100644 docs/verification/vq07-progress/1f73e559c-native/scatterSunOff.png diff --git a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md index 0512424e64..1cb3b83347 100644 --- a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md +++ b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md @@ -4,7 +4,7 @@ prd_contract: v1 # PRD-VQ-07 — Local volumetric fog composes with depth, lights and existing atmosphere -**Status:** PARTIAL — 2026-10-02. Browser reference, lifecycle, target-resize and texture-accounting checks pass; Linux native proof and repository promotion remain pending. +**Status:** PARTIAL — 2026-10-02. Browser reference, lifecycle, target-resize and texture-accounting checks pass. Fifteen Linux native capture arms pass; native resize aborts the host, so native completion and repository promotion remain pending. **Batch:** [Visual quality execution batch](https://github.com/ThreeNativeHQ/threenative/blob/docs/visual-quality-batch-2026-10-01/docs/PRDs/batch-2026-10-01-visual-quality/README.md). **Wave:** 2 / atmosphere. **Dependencies:** Independent of clouds. Reuse VQ-06 only for any local-light feature it has actually qualified. @@ -130,3 +130,8 @@ Native qualification slice (not yet run): the existing built public `runDesktopP Native-slice local validation: source/fixture/capture/native-handshake/CI-structure/CI-needs/document suites pass 191/191; strict verifier/test types, the exact desktop `--native-backend` bundle command and evidence budget pass. This validates the route and fail-closed guards, not native runtime rendering. The public runner must now execute on the hosted ARM host and preserve its actual PNGs before native acceptance can advance. Independent review passed for native-route source staged at tree `15da770ebf0915f8f53abf3276e29a413e00f558`: the reviewer reran verifier/native-proof tests, 14/14 passed, and found no blocker in the supported predicate mapping or native provenance/console/pixel guards. A final scenario strengthening also waits for three observed render intervals after **every** fog/inside/off/rebuild transition, with labeled snapshots, rather than only after the last transition. The prior disposal events prove real controller/target-object release; these additional boundaries establish that each intermediate graph actually rendered before replacement. Exact create/release/live and restored-pixel thresholds are unchanged. Native execution remains pending. + + +Native progress and exact failure: [run 37005493900](https://github.com/ThreeNativeHQ/threenative/actions/runs/37005493900), source `1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7`, built the ordinary Linux ARM64 host and accepted all fifteen pre-resize arms with actual `device.screenshot`, named Mesa llvmpipe WebGPU adapter and empty runtime diagnostics: off, zero, fog, inside, sunOff, pointOff, overlap, half, wallOff, blackOff, scatter, scatterSunOff, scatterPointOff, lifecycle and lifecycleOff. Actual [native fog](../../verification/vq07-progress/1f73e559c-native/fog.png), [inside](../../verification/vq07-progress/1f73e559c-native/inside.png), [isolated scattering](../../verification/vq07-progress/1f73e559c-native/scatter.png) and [full provenance with unchanged controls](../../verification/vq07-progress/1f73e559c-native/provenance.json) are retained. Native artifact `11226555526` matches SHA256 `cc5cc8f973b8edc9f16a188f3ae68f1e0afb6b2f508ee4a392df222191587af5`. After download, the exact source's pinned pixel metric function passes these native controls: zero/off and final-off/off are identical, evaluation/wall RGB is zero, calibration difference is zero, directional mean delta is 15.9577/255 (changed ratio 0.99333), and point mean delta is 48.7721/255 (ratio 1.0). These cross-arm metrics were recomputed locally from real PNGs because the hosted script stopped before its final metric phase. Native lifecycle observed 4 created / 3 target and material releases / 1 live target, then 4 releases / 0 live targets, textures back to 5 after at least three actual stable render intervals. + +The native gate is **failed**, not complete: `resizeSmall/report.json` records `TN_PLAYTEST_HOST_EXITED`, `wgpuSurfaceGetCurrentTexture` validation **“Surface image is already acquired”**, then SIGABRT. No resize screenshot or console.json was produced. The verifier's subsequent console-file read raised ENOENT and obscured this primary report in the job log; neither is waived. Native resize/restore remains unverified and the native phase/acceptance boxes remain open. The same exact source's browser job passed all 17 cases and all identity/scattering/resource/resize metrics, artifact `11225682361` SHA256 `5cc58198f77714817c43c486cf8b83d7b7e3ef23730e4010c1026b2918740c35`. This includes labeled render settling after every intermediate lifecycle graph. Available native console logs contain no `TN_FRAME_BUDGET`/`TN_HOST_GAP` windows; no per-frame fog cost is claimed from pipeline-creation timings. diff --git a/docs/verification/vq07-progress/1f73e559c-native/blackOff.png b/docs/verification/vq07-progress/1f73e559c-native/blackOff.png new file mode 100644 index 0000000000000000000000000000000000000000..117b78c9f8bd2c0caf3915cdc3604695319e97e6 GIT binary patch literal 12170 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 literal 0 HcmV?d00001 diff --git a/docs/verification/vq07-progress/1f73e559c-native/fog.png b/docs/verification/vq07-progress/1f73e559c-native/fog.png new file mode 100644 index 0000000000000000000000000000000000000000..c24d7d8ce18cc90d20876fb50188d845298871c1 GIT binary patch literal 72875 zcmeFZYgm%m`!)>R2∈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 Af&c&j literal 0 HcmV?d00001 diff --git a/docs/verification/vq07-progress/1f73e559c-native/inside.png b/docs/verification/vq07-progress/1f73e559c-native/inside.png new file mode 100644 index 0000000000000000000000000000000000000000..5a1d63c9cbf7daa1451031d441a7d1308737c5f0 GIT binary patch literal 130454 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%0D>w+ezv7&{DNDq?9 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%0AorxZ0o7+cLK2v1DQs0mW ze-kMzW}=qvqE{`@-WmCSpy0@zoYf~KiFTKlts2sjSYTVwzkB*EZ@rAU5k{mmeBxvc ztsC<^PAZY}Zi`O${r(U8qKeVOA_>cM%-Y^_;lYlAWHiwCg0d+T?ngemiP$E>iFU$K zu{x`4e0K^vh+l1A^+=bW{7<#`4|w3yvs~WqI1Vm)d|gmV<W^5Cb}MFSW{s9Z>o7O zhptjR5;3f1B9-g%zTnL8Q1ArqD3@nZagO%`=8CIRV%PGQ;T+L70rmQIMeP`H{jxw zX4F3#sGWb7-a4xg9TSqg^2V>10q%zUHhm&>vi0mwGKEP9oO#59N5_#c=T>_H!uG94 znIF--)^H%m*h?m@L)33Yqr(r#mCQX;%wci7!8#9Ua5w#m9EHCTnBrAV9xDWGdGu

R8)geK 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

Yj+uB;H7li_SHp6t@yI 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 literal 0 HcmV?d00001 diff --git a/docs/verification/vq07-progress/1f73e559c-native/off.png b/docs/verification/vq07-progress/1f73e559c-native/off.png new file mode 100644 index 0000000000000000000000000000000000000000..f15131eb8b2d54698702017df518ddf6ec0cfabf GIT binary patch literal 47812 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%0D7JdUT&~wV((NAO2=c7tnin8&@@;$pS>x?etNj z4!(g;-0;A@YpC|;*w)tBt%7b!cIiBad2%@nHNxQQ=mL{qz}UyZ+7F24Mn=YJ#)mDT z#!LGaL3&{3i;i;57lo!Bj7Bsuh{a!D`%wf zcbB@$mz^>I9drp_JCY;Zw_nuv;OBCbpVkNExPc#~dN;t8?JtT=oBUx7^{||wxc`id zZ}ErWZG89Kr#QAeP!Bz~)B`fTOMnXF6bcDT->I?5*H$#&FobP0Q9Xnn#!?s7rHqyd z!ZW^yp#siFcJ>>e^t0PoUs#-$dvyioc9v{22%-cr%`J zcEHh;9RHzo!&>kr8hjt6qSd6S6|3j6PH6k6F6}sCg+WV4qUsbSt!w`g5x71s2iGt^ zEd1EMzW4XPqCV`+LQU){MYZR~uAIG|fMBg1)!s1{56rkgcbFMS@7=8tv-~8vedG5X zQCZqgD6%gQ!;RhuIe{=rXmO&09>v6QqvK*Uqr(j7P|cm!xADRZIJc^xsIRRMK$UYm z>Lw9B>;pn@+8Z}$%@$bD)$#}3{7l-oMLW!`i*Hs4=j|;;Jv5M1~ zBlr?!X$ovgrE{J!7Y2_WD6AEe-3zg6@A&N?(dG8JID6Jw)oO5RonHW?!dwY9S+o2s zhpRw*z39^rP?MMBndQTZ9SG6ecf!Wm-PeVj%o5?j&s(?;FfTTn^aDDyci1t5uqFWN zZW4xP(ipD=H1BeDD<2#n>Ukc9PaD@X(dL)4+skgJDJava&7c=|9=6?As7HV9gxjdv zO#&Z%+*wAbZh;X_+{}1HnQ1Rqn>0N6W5epwKAOzJ!W2{hxfz$Ho3IjHI)+tD&iINS ztcK}DyYUvv9Qhr!VcN;OI*_B{FHD3$gQ?rv(xHAo90AYV5G!_M;0f8|&+)#Q;}7I* z4~!DEd!j*Z9^~6;kIE^S-lZ5)QDv;M*)#CoOcRr3Vg~;RA?a1t5&|RhJK@vUXIm(7 zdvrQOfTBe zVGtPYD7M|B`Yid}Y(4ra$@wjl7K?KQMWqzc*-NBu?Aq&nNN6p+)jCGQ`N7TcF8%_b z8a#PBDjfW+pHk0$8!O8Svv=Jq&(o(2rMN6Oz?EWROM$O|t#J-31@(xE3lW~*hX)+% zF1EIVZe092Mpo5ejA_t3-PmE=rH_yvI{f8h#3mB`vKC8MtwMY&*7uR-K7H2+)y2O-G<#`t;Is_Jg zbn174zI@ZuL9zzN;0+WESP6%g?h4B@0SCPZ8T#|I!)C4U(Rukhij0J!jbqp1$yVnL za=qx|05-iNVTkd<+dnaBx-GLWNQZfmeNXWKNt*i;k)#!p41E?K0e20Fl-yh(H@nku z@cBCi_99#=Qv59=jOiH!ILYs&_ z=`6$r?6-o6$S!Q2cR$0h2<-w_ob&AcsmCKqDKqhlVBaJ;b!KtyzRj+dP2QgJq1|Yb zHFUFIxm_^tu|{8hiw2nG1Y6r?RAuw0mcv%+hr|!pOKadv7t*0m#vx+%BSeDg#|AoRePo1zw z_;}gyAYa{1Ns5~ccyQYxiF1D^ejKux({yMI&lx8Cu4>$=o)dVQ{v8fXKNV~r2C5?Z zHGInrbt->~L;lG%^_<2$Xc`<)<0mXwW;^Q}5R?5Cpsr$1PK?IE-c#T zsqopCsN+wia(fuZ(pzG`BMs@Zdlc7Tn4JZphNkt;&g)C95vvlki-J;>u5az8JKQE3 z^_z7tano?%zb5++TFEcp&#at)dXZEo;$oP-WodQO*LI#?4;SC2&7V=R(8c&8Up)4e zK@SYtYi2z!G+tZ8Ltfvpci%o|hr73<8+J?@wD5=Sk`n2cC?-d_*7mglvst6jpUxuI z8Wu0`NR;=-u{3x&IxixjE~X9@bI~yVtlRW^qAL z5ZKteme7T4+zl8g9+ATy+j0KJ*b7cm1HZ67QW%k*;H99P#T3jWdF~B;GKtY=b8|H> z=rjc;3ktHcPt4xr%F9OzBZHp{9=^9qPmwP8Ov_b3RfP01-#s?!R&vc<14Wl)Mr0%v zp1wAurl?%aYz=g8%5L&=Acele9-$v!p-t6b3f#83S+GTj|h-<2_YYDsw*(IvvVE51|(> zy22O5Bc18o*Q*}UU+BN|>HxMNe9FVPI7SS*bz+QH-fs-Vp zAn>Cn^NBAG{e8xx4g0SUvbpvBhNl`D)k{VO>DKftFS~&xi##@GLa*9o8F_D z-vk1T|I|0sE>2CL_17od9?GbxQO(Vk7FZ)~)Z@I=EN#|FR#?R3_|Gk_mKE8cN}=ZM z%Prz-TV6+^$(M%BO{61 zPQ<*J7~(1A*%a567yyf3`ljm4F$q@w>~EXTA!cUfdb||HjkK|OkkC2VNSk5RmyjX% z1Fh7(J)VniV()8x&1?bl%-0146$_8%67Eg_d2s6LfJpsj$-_5?-NQ(#4$8vQ@b^*< zF69}8Gynmce%UdLrdFm=W7EC~y#vx4GlyecLk+V*vuDqSn$4_2X=dF3n|v;EF<7#J z-KTh0hALz1sqi^eS5HJlbzxr803q5nGjrJ|onrS!T9MREcDG6@S2}NZh1J+hWyXb} z$iRH#=(AQW(&8qYa}1&78=X#ix=DKBoKrh|PUa*bG7i*_;@7}ReTGU7oPKmdvEOcO z72lJ{7g3LkP6?+A-a#&@=7*x<*jV$hz&hlQ#lL0>Y$~g* zor5a7l~F|>MHkTHA_=TJ$VH!-+5KZ=9o=X5kF3703{#H|RDTg;u;o6y7X`UN#$Tn9 zoZZlyP?a-=fljxqu$D-_L01T17Ht!VE^Ss;?$fu5I;Q-K8U20&+~OuL;*OXc5Dz=} z`Zj<%M*1|EtD>B(=e%Wgwud03sP!q3Y5WPTTXi3sb&JpueXjhcunEei0Jb>>G-xTP z7Xb2odI*cQ<9=4Ie;{1?El^+HHxNl{u_KD8|T)e8-f|@ZF+4m4Af!m#{d?1mIU^*$HD! z9GKGrfV{X0Kl77n$s8d7Fn-M3zW&>Ye#qM1H9Se$olT=poz;mNtek(-D&hV3r#nOQ zxPHQkU+wq{uWv=K;Y6}UuNIXaKbQ`CXA3FH=@N|p%oX-^pZiO$GsEG0T8R8|m>jbH z+1biU#a<9CJKs`o#mm`DL}Dd|(Ke~*vGYE5Eo)su~R zc`f7!y}!e`F=JE=u7?RqVgmlWN=c0_>>4aw?l=^P?+j~;gviD z(0}8Yys-WIulDVdxr&YegfG4sZR&~9b)THFy85dY4q&>|s#d4UV^8GOVMWJ|IdmEM zyq`A9;MAgdap*ThIOwXSe7rUKQS@3#cp+ZFrzB%ctf%V(dhYR^yszfGQ&XDt;!t=%*&bW zZ!d!$HH5BS9i!@xa(uDIGcRV(EVxcqZMhy~lf`|q7(r$R=Ba)`WOehmGuwDB}N z4AwvhE(F<~!sQ*Bo_unP&-)XNA#!EZ7QF*#!xSuA5JII;h}f+JMHIXP*re?EFir#+}6n%lX3zmwJp z^gey?B`j;k=jcsCf;+*ZTEsGFMB_FQ_?D>jUKJmD6D2a#Q>38qViq$``kg~LKPpJu zdsL}k$KK7ZFyxe8aZvC00qH*;C=xN_#ZpR3eOby`LPM(ujW)m|+B(DJRD;c(8M^QL z`tCow5Q_P$$<*poVj}9^y;PLLu)K%ZuEGj}RK;ya8D0(hWeGsx}C$taC>{C*v>vCqR`$sK>RyU}0iayz+N`+V^MS7!XcX1d!Q)_XrD zQy@Gz?d>dx)TjE~^%5Nu!`^n8e%Vw^XyJV1@nh?Q$<(R*{lS5%);<^Jga6p`3Q9frdP5TJ+0`>jvgZW|r=)^eNFIZ>NDxB@k4G3U`91<4ggO}5=&o5|* zNuGo44~adl1r{5sR`vgP);0$BKF!O<&p#XPv++$Xri{b3SdOfN?gWYEJ<4^URz7YD zc21jhRvFDr_ILH%t8O#nxwK!g+L?cg09#W`?6`br#foB7@nZ=0bo9;{hs4&Q$gN%G z5ouBPDn0;(Ke*qOIHdzuxB4JkgQyja)-? zARD$@yJvDDx9|Sp3kr9Xmsby=Ck$sbJGdEQV;9y8FC*>ZMLw7Z1l+%>2Oem!&(wj~ z*oozx@g=CYHIqNb$WTkm8O{0CU8_8wngr)~)P7i76IVB3SV(e;6jZ{S^d1R@V%XA= z(0(&yW8K%apz+1aSQhCf_|h-=$W8Fx7Zh=DsYbW5twgyiMo)e^=`AbPr*@*=1m(fW4{@sE)i0_r8h&bAP{^>P*c|zbCJF1+OzWv$81toHlaLE zC4M{TSdtp^6>hWisXk+LObPETA%3bmxwl(#+Id!ml?R3~o|`8=TM1v5RYm%2+d3oP zx*~!BxcFph55xc_2hA3H3ZBRxJFh@33A_f6Dl_7kWa<4Tocazmd7pRUxWO~(V~t;F z{73>@&t7b&I)k1191QXUZChngv!c56DYPd{%Xkrd$4aUan*>oJF?D(t;w(4>M?FIs zz8Gm~T2zzbCNm^he3w*h)N{XIAJl^H8Lky8@sL1+A3V08x(@ad?o28szl!FT6wS&| zp^YVaS^)r)(;xf|@ix<#iT3S`ci{`?vanX&NZ3moPMH|H=kcgs@WXdKT_r>_ zuSOmz%+ATdn;)lk`zhwkH@eE~L{R9pwuR49O@X&odtHeR7Hh}`n4BqSCx3$Xi zsa7|66r6q6ork>xZb&k?(%cyy)#BPge@buOA_3iZYAyf^Yy78G?Ra}Kw!D~U5juYO z5r5`lOHrc_bUWn00dstsrt^_Owl`@_U8LEJ`8PPmb;<;NZDUSt2m()4_YJ&L23MpY z>6hyS0qyc`)VGN|g6Dd~>jBVaWTnR^*|@*kM6fx_DksL>c~L=7(12*pBz9?ea%0-J zS;;SUYur~fq&EkFtIc^gk1M&cS-pA( zU+34YtANp(`WPH|ZICLf4#%hg(V!pNDbT2x;83pG=5KJyg7X~XAD(+A25Aa}szB9O z>I6X7T@SjK3Tw<=(1Fi4IRG5E<`}TJRX@essRi}>=L%|S=%wM+emm-2maPby7=Gsn z#dvtcpV=Z4JMm!H=QM}So}8|uq`Flqu9M8$e;p=~l=!?`7IAAKr}5^VpGiH3mek6X zTNW)!fiEIt_P)8xyZ(y+Q<=k4b|%61@_;X(nxiN5}JCZd6+c~sX? zR_+P2)^}$7`YN7PEnd#KufLK=nLnk0AZV}+H`5u!S*|AFPJ5Z&4ULVwue#7zg1_i? zx6>n?B7UDotc&*lV}9P|Hsk<(`N<0rd!o~TB+c7}oyhW9(uYa8UBJvBTl{8pfkm%= zql13qp(n<%NY(6sfcs%*PvSozSeTn2-SU==ayz$f?%pC^D76*0f79!mRm@l9UUlckzwUX09%8Xr6&Y^4fDzVKJa3k=fiB*%`Spk~HyQQPWq9^uSFF=*!0 z<-ZN>D6m%H>v)21jb7_R1%KbUOwB#@w35}GX3v8k?Vyis zO--dEjg5=fm?$eFB@=xm72-F8T!n80{!u)kcD7hzQj_9I3deI-J?izC-lPAe~}dZ zwpg=4p@vQB)5|09I^1PZlx$6qYAZ-jU?aIJXu=yGzP{SitbQ|mIP&NkRvaW~5iPAi*AU#B zb2{6zjhBZ*f(JR|Whdp4E}bUrw-ww$32x}{*z1rz-p)6mof&>luELwuKQT5Y9~);- z+VvfbnUa@Pe zsbM%&GxmtbiQ-bIpYlWYo_hOj;2CPm>qZ4~sG_^4_05Lh0KY|xP6&rSrro`DZD+lk zSLwO{HfZXq!!~_aEG8QiQk9X`VPJh6a>KYJKYnNpr#xhd`;OE}VHZjM!WlmiozEq! zdJQF{B&5501fbR1k)L0F7q;?gG9ks_Gty$(jCYw_pQ?*J#J!&TKk^2W>;3RvQ{UES zeevj5+*Ss&jKQg#ail@N{?o_nwA6XEh^<#fz9`753D@sODfHt=GhMXd9ymNEq|_tL z0i9fzX^Lir6x@u|eExeUx0G;0aW1=Gx^Le;R(KF;rmo29&R~F1=I#KiJyiy}cGU0K zyQla0lc<7Tz3rMJJf9UEYh!cp5x}oOyTWUidWN#15L(Iy?nTze!M%>YHKa8y_}o)( z-#-~ckr^4yL?nPnUuJ)A4-?SKy-s;~skRv+w_`l>`2j#J_FByXaZ-^FskDB*BA7r0X=WjWoTH}Q*^>WyZamXEPC0&B+8ItehNj;92`F3HgD>C$6z_T#2!#(p;^%YdXf&qC;FSrT`__L+R?DvdazWsin z>rEcAgVT9NB?k{4Y*dqDM$KuBmG+P3x1;Ab7y=d2MxckdJJ4H)d2EL=G4n&4Xp`FB zx^+&P@w3Ua_9;pj1qAIp)-xwFcmA{MGfI{X1%Bo^Yo!+pgXVP8g|xxp(%h zUw^F2knepB?R7m24>RZ?lz2Aa@z1a0GhM#1wBN`%%>&nf8j&dQoOuW5706^H61~Pp zxRhce&s3y4xPDP(Ef-}y$PN2G(6&WfNM_)UXYyW#o=RYwm3ma4oR07D;tKcDk}n$W zFDByyX8+Qo{|jK-<@|zQtkDtte!?ZGZ*^yMbX>IN`{>`YKw)EJE$Y*;IjUA0+6+fU zA#e;u&b;KLje{+VWItNQjzHv{qawb~iJf4&!f~<8J9YK5Iv-2|6NPl zm9Re+n3B&Z#ZTgs-?UGtuM2ccI2PmgM>4Vh*L~=cc#G=ZbiGS;9;Q_sBLC>Gp`G=fxAvv{fr7}Pg>SEm0 z6CJlPMx)C;*oUbTjvDM3hY9D=95R!y_cPMG7-#3K9tCiJ@%zvm8GglL=oMUhhrFGm z@>$r~y|%h@ys#Cqc#?f15*pLQAiin<6AiLGdYO?~vp3QPnNxymr>4lv$J(zJ?N8tx!c@Q&9dVEo2WQT*Mf&`BYw+VubyJ&Fu;>{A7i0-m+v_Hl zX5FvrKHgKBfpsae%A~tzbGo5XBL5-|lJ$b>hXNv9p-ZrZyN?8~J1<$%6Mo5`bXRn; zPeV>a+TIugfQ81545p4Bcpv@zE7DTLsnN05-3mne+1a-omY~|D^5x`AmqtEd(*rtS zH=lqm)#h|-py|l^MMhono4dbGPj2(+I5|`yZH;Sjp2(fOjsEyEk0#TL=Ot6%dPgl) z{o%oGI2gRah@G1nzTg4icbYJ~(*# zt8m(!X{Y3!R-W8AwgR`-h-NXaiAP$%NYno#L$(w4)d=eE|Id~wDX;?@kQ&_ zN&D{H---fsehRG30p7Ualai4!Zn&~wsMY<|2Dojf;q-{r+@*6N>vQiz)_F?Z^?XSR6&Sz;ErURgGQ3iNk|LLBeVY3LGCNH<}O9=8O4f6L7J?d`StBx%H zkn2fXK{L4;_K`vRaAS7|hcdCvF?p9+tVx4gUMS0%PL~t2>RdpPw?Mne;UZ^K>yj8T zcp)pd`bbf4ST1jHASx>PsvB4JPT?E$r~@_g1+GqZ6tbCYg3rK z+c0MBj4P~t>SD+X>P#36rq`rtPapTpO7t1q zsh6mB>h(aKQ!>uWV2MK`6MbtrW3AvC8w9oJQTE%7oU0c5K z=K4kcCSm)rf3WqcZW`MUgvUzcA6;a-M_?j&`0|w0i_Xa@b#$$^tyw*aNVbD}ZVwC+ z6>2!v^DHOZJWDX?Mi$qL5G#<+ZyLE6|7^vU*dQm#nUj{DHwCpnG5VVoG5h6-<+&y0 zv=v-m+>@r7Rlc}0#odO7nO50_xj9YEq5D{VeiC8Nwq_C!C0()d zhmFFaJauYe=G|Dmjff^HHQEk|t5+h>0rdjS@H-52=1RFFQI4j`w~H9~5<;f@5V+!; zRaI@u82NH!ZV^o8BW%f*%A3UNxoGc_9fMLzJID4RiVYATHSbZNv4znJq#oK1_sp;c4re2AJ`Bsb1#$jw&(TO#eClPJuQpe(_J355W7J zDwmDgo(<{!2x4W5+6d}*$OECT&uH6;6pk^jBSYnIk_aG$mq&@M@{A$xD&hRxDO$wN#0lfNQfT-vxX zdZWxVHahLc56j=CmeeUdHmQaL@xN-4yS2e=ZN5%3zQ0ee3T3k)7S)ukDa*F#0^(JX zs~Ld>ep|_Xt=5;!EKi5C%YC_@++{2A7tabwKOtkzy)OXu)fpXD zl*w8YzpudGo!qR$*sSm`^J8OZoJ6Olyhe#6xy89ZZ>jBmn5g6cR&*u@r(VzKFF-`K z?BAu@p$pi@u$#AQJ)Q0>GsznvrDjxwWhs`)CfW*5I32r{mfPo;j3zB1w2(NVr=9h_ ziI1BrJ<*AvvoldZ${$$Bs7X}mdKwEy>;dm zm^=Hulpc$@xaOR!t~~aNv2)1!WuzXp3;fIXnCbJM$*ZjIF@G?cgE`00#BGd<(%d8M zeb0~Q$pv?uD!R>^9|EXH!Y8-h&3hHAnHY7fzKGb|#Qv0XrsYdQ7^*58e9AKTxTqLe zz84sXr}&|P<*AasC&C4E;bIV>=lNQKEC9snz8AEY?vpvWt=_^)uZT%E6JlI%GV2ol4w@$=`Y*jFcyV>SaAP$#;OTX5VJ=!cHf18imHXA$e0x@s@AH81=k?b)QmDtef;c#(|0vDycntWI^phnLU=JD!OiLt9#a zWD&5RYv7bnq#(WIHDo$KzbxP+o`FJ)GP>PtbaOOp$_1_WzC!{{41bq}Hb$8cU-%MB<-hjDI}!nxW)0^Gq?GI&7J z6aDQOIfh}YwVwySadb~TxSej)KK0iMnyCw5_yAt{$kkfPJ989aQ zEic@1dk`wx4)Y-`?PSj25uipIkX&UlPdWz?Q}sUgk0sv^7aas|I{1?u?m^REME4#{ zD8=0{GPW(az8Ig0Xy?PlK+P-AN7#d`ix-)_hVzL~_m}(DZ&7?|nSn6&A2j47{^jU& z36!7i7p8AxE?Rn!#S8{bzd?P)c0nz^p*U(@WM$)EL?x}?)zsf!1l>+pvLJTlUhriX zFgkhLeA&QJa1!pv0bSqZ46*UMEp+YVIO2sS8g{L_FB0me)ng4;HGgQ;Zj_|1b-@ZK zE^*o=OkJA!C+lp_)E6xBb^mYVy?*~6Q(qdFRQmo69z39efSR(XfS6fXfqR>R7*b=U zwpqUxTryKLv(3sB1d%C7bXqK1G@YWR8Y*k7X$oAitkBHNtgxJNY#FjFOXWOw&Hu&o zu8)0OIOkrj>wA3{II?0iiZNT>eP6V*o)l<1N~rzlu-{7l=R^39(`4R%ODYdg990p- zbzkd^oO43k^^5QMLm^wTO0vhf*JgfQxJ5vWd&+b#-sMf)&L%GXLz;>i35T-T_J3JN zi07e_#)Jzz0KjkaTB#%zy+@@;0zZq(XPebL7;f;;n>v~OLI;zYqS?bpbn4k1BP$t0 zXM4_LlO~}yL!DO&RLYDxnVyJaro$psRn(n|dMDET^88tH09uw%l@&d^n@dQ|$H7r13*;Y@ym5#Q4YLh*uu2>u&xoIg-@;Hx8hH`u;_Ic>MA? zD{!pa5xSejj4*$TgN684jCJ9z39@}s^ahMUXEz0(Fo;N-n>aQbbHtJRsM?vaOSg?h zrJJN3ND)anfD1l?rB4^AmP!Ve>2|0{T#aX0m`P2{3O0#Et5nI14$l||va1~T#XsU8 zhd*2HS9~ueG7buG3Jk(6!p?B)t6yf`6ncxf4>P5>jxv@MIphrW{ADU(d+&gguZV#z zp5vv!a6dD0)5Kjnm?w;$hgd!oN_(nPLqbH#~WMdK^Snjez%m-2{bJ$8q1_M9=k z;-4Pq9psFq{!D5kMb6!jwFF5>_{2C~%Q^VPP_3!AOPQ8ES|`Mu2;bF`^}b`gV&j@T zf1SVATia{4iJkfVUO44Mrqi`eKw4t}&6GeB>gQ>Ap)$T%NUaofkOKJrxCdlAbRsNI z=53mlwvy}hs|Vbr^oF40R}@MMG%+!m_Y+^V?L*dPf89lcu$$%7Umo#8-Jv1r3MWU89&|b5rG~(aWm7_17iD3imv(993(L}dDKCtNc&$nM+Yhu0CWOr>@6lt-eP|S|=Z| z^}z<8K;L!7!eEh1~Qs&C(9V@nMMcOdTmA*fF7x@pu zE>W4GbqB_xXloK9Z$C!3o2OT+Av-oc#2|3&rA4OtGiN}&?}J7Eo*UV+-Y>wkWp|nL z^_5ceL{IU0w`&PXPgkXog|vUr&?kCOP%=Cq%0HSRtQD zYL9A|$*!)%l?sf4@7g6ol*?u5QADMw`pG(46s+I{#t@xfhHI{vn^*xlU?6b@`ezKg zU-p4N6c~^-VVd7VeJMqIWYq44sdvoH2ac~IRv$VxE^cd8;3y@wkz#&7$K!)+Ns~%d z+sKav6HpjT;`SSG%Yc1D9p4HO-khO0 zs$!)8J$>d|RylFe-VD#ysYV>Nfyx=n+N$cJ$uvgA;o{@RvVutb0p3mQdD+-75Gp^e zpFqjW8)?xu;Wt>2qAuG^(^!$5qqGTmTcP&PVH4j@?I8%1<;<|iOo}yXPozjjeC5`+ z36RD13t6G5;+v5Tj8JJktsE~phK`JAqOitai8bE8)1tpUW5wD4mCadz-KWv!NB0$> zsxuloihs)0$%hbw^FQ)pDc`;osc4%Ov&8oIIx3|yXqsr;Iers3+AL%1BtaT;qDlk= zao$^FY{i=?R(9vGw1eXnG^)=K!oqVecw1E}yoxe#xN?A>t?|M>KF=X&s*bX@jX_IK zt;ri*J3RQyVf3qztSVwl27E4)|Hlck`(tfp#Kz%-be#W51v)gB5-a>l8W##Jp2C*t zYW!uo>OctlbNb8@dMfibCbt#0P)ku?L9|aNm(7~BR!?V}UJ)1Dq!7Jqxsv~_v^05k zWXq>(8Zbe&ZC%Oo?&3gNGs;bNjd0fCh#XQ*D4$t2#wa!O zdS&s`aeLjAY4Sfz!{(|IO>4o#$o75iJ|=H?NnzG35rNLh;57@!hClp*9)n5K*T{#UV;WT9uK)HRjBX_C85d%iKPS6q*V1xKf(-Qyi9|e zF6?V!x8pq69iDJ?lQ+8tZMPkAfSlvQFVR|IPxkd)x)0QncTJ7(wQ(m8lUr8DH@4zD z;v(f!yk~Q{m;H@eD#v1PU*}9=ljjoH)2&hI9n#j};?6Rg^oaCf{X>3qWG3Dk1sK4A zP6=vnE!)a|Jj7^R4Xgf%*9LYK;R2AC8{Dl$uEZF(0{YgCt8b;$Zhl9rcQb#Qrj>qV zw9MB{6l+FG=yFnUMj-L8Se!?Y91gqDi`x@j_870^Scz)|sY-~Ik*kh~nIuskI(dl| z>*$XT`Wzb>Q-?nI%*u{)=sKptEsJ>I-|xDgp=Vd=fOXTzm*O91%zuL!!$0s}7bhsM zE`K@lWg|YHJ9X8B@p=k2YzsnshJ%-|!F=}Cwj$XvHJ_A|p*(XK-8q!fUpYn(J!^A4 zefa5cq2<}1JKS=r>VVafUeIWTCKF8Wms{#K1A%0Z+P4p8tw>T!(P5XG8ZEAp>(#$)}fUcT!mdkx;vf!WuW#_V5cP)T~VW5~7>zBkMw8$aM(+1LO6`x+)YAEBCr-!z?8Lm$xg=EY2}9jR0=<}l908gT)?NYPi9lHMkJZ`u;p zwNU)8Ac{>TsprFG!}+3}iIUs=>&{5;qW8>WU{ zPYYh)3FnciFgkV<+%O|T6s>;=P4u+<+JuPKk82$zrY~jErZLBm5?VmO*Ju*8D3cwd*1`$hpjG=tjrLB!Ww#@w1@k^9l3}3oxoO$Y6VsN9ya5b>^}+D zaYxw^vsTi5AGNVuTE59F3_J+4yqkE_?OrSpO{#myjGRYMnNTU>$UtXmnXO z#V=p2Lhooo9qbI9{ume#057#41G9v(OkkEWeLWfG#F*Vp5Dq>QDS!% zpAR}m45@QCDVg_MB!!|2d|Q!5p<2Kw@2*X;AIi2iRC)&``IGRsOCNJ*Zwlw6h5sI_ z_OfCYM9FCT)`aa&9Cpa?y}9EvCbWHcZ*O?kr{U)(p5wLZfXJ7`^3cx;_ZT9OKX>qC zA){p^!cU@lLRSS8f~OkP0Y1sWCI<6M1WjjBFuGPovPmprz#($j?Uvj3TA1FIM*ZDs zKmt~Ff_&zpz5NE!sJ^@d->=@9amKk5CHG!cEyQKZ2-W1n#B@I{GbmHj)vvC~M=Gll z;~z4G-J}5uS?#0q6e_@5oCL>1B(;^e$#)=?-SCJrwnoCvyZ`U=6x8uS;P3@(&e~C< z#2|X=zu|B-IedSUM`CH?4A!^h2=u<==5vgV-EI$rq9#aX_d zmm4|uu;4p-SHz!z2^xmell~og^GD5WtOYTtd8R4M==`#|gQy#ZCebk=qq>wIX-G`r+7;oRXi;8Q!e;=Fq$vAm(!4N1raT|Q4ibFhtUrar@gM(4~6*N4XwcBWU z{fG#gb~c8G-;AKCC_n@TcK{QHwkFIHY-R_azKg^4@mUPT@;^D}V}7JehF2_2S;SM66 zjrV2Cv%au{9D!Aw9HBB(xSWW3bc!dNUDFFYFhnnj?Oo7BoAD@3X6mV7;#yfL+HZs8 z0j89uaSvR{pBJ{&%)uc)cm%UTqIO&e^S1Hy$%zKm2B`lILsARLR?*zqX zX?aYSu8o_#!$+7UAlHzgiT% zBh4ZDCJH@k_RD2v(aULYiZE5?c!t~DD(^PRK1%BgT4T17xIS>qOVX;@lP6>yC#)zlVv#HmGBw2Sun5`cKaawfh**pm;3B8+MlFjz=) zACv7BJhaM8;%i9EY=lGzFAGhTzkd!)ZK6k*RT-A1@wFwk^z})}!$n~aZ|jwm7APcx zY9O53`241SZmyj>6(~t(y>mz(=D(F4`N(Lmjo8pvN6X-Z2%^R)8hSQq=3#3<#lFSX zC>6^O1r?X&)G~0n_)z8 ze<2T$`}@uL@z=vcn{GIH_D#enMKlOe2lrQEoijW7ny}9JzyM zY)BT1BWRTk@c~9ux|S_mxam|6f>)NXed%la-i2pu!FOw*kbYB_9)7yUw0L5)V<9mu z09hw7*3;CyF@&V%cQmn#86w#LW6x8K!u@24a>iPRusUpa)>u(r@vVF*;q$Z;l;h8C z7*VvRYu6^&gk&OPvMwk+2l%g~cwSmA$~c7pOO|sVaP1ChR>|qZ2s?;ZLOUIeBoLOT z*5flBPjYd@?Qoe#WFXAn#;JQj>NZDGJ(4l&_91xD=Yk}6Z^vwmw_36{INnE)J}TXh zd>uQ{`}Z9pzPK7K|s<}A7wr7N&+9fVhQvPv9vym)`L;6b?m3o z*D?0Hni5PF0sS3Re2GtwDJ!2&i4ped)!{z8s%n7=|jDy7TC)8W*Y8uA6tlW^kH3~y4qc#h}0`lD0V@zU^##i5w&6IGJAAL)|K; z+!{w0NEJh1+AsGwO4y(`^d-EKP1r>R1*VnKTeZzNXpRkoy{D%pIVNLoUk?XTaE5bD zWmALl=DlL{43AdS3D*?hSjJ-KsVx7jHq~&W@r!@=4+!vQ4wHf#ay6d)+VN1wLQcK_ zDj<6{Y4n9)B}Z2d#{3dm@P%=Elz7ZdkyWX7&v|LzDULYuVyq|?V{L3v1lv>+q9WPk zcB9QlgdO6-BHYN=b4H8WagnMn{;6ZqP4y@;6x7NioZh(RmVfS;l>Ac2Kj1cV=FF_KC8lqH^)YOj^b%G4jmxBM#jBKU)A|5> zq6qDF;VkyN+Ei@PGH#S$+nePbI1CN7dZZawURtQ?k#^Jz--@et`c~yegVW8`C$)TmqXslK)sny3jalwS-ImaXeBu{hC4o`e`)@c_~>E?M)L zDe|bL)}t5~ZPYKM!b4U*O{V)t9Fz2(sIB~Rs7%4CjwL*mfmJ2uYRl0vt%uTC= zqAGm5Sr&{(1gG92V?{=;RTh|b6WTbO^QA8gAeAfTr})HNR@#N7eI<7HLub}T`2Rxg z*4q?LH*OSPmL!_Vv&9v9S`w0VNxBKM5pVO9a61T?B0bM<@MYy(KT?9e_!UaVZrSo4 z$!}O;$XDS-3HamyuRfAGvLD9?b*%hgbN9UYiNGot;_~PP=22PxVp7;IHb2cY`G0tG zXbpbjvm0wQB_+Ix-qgx%0pBM~Oz!tQkuzn@VHC>4Pr9KH7Dg;smfxSdD)4 zHsCV(@yU_!!NIB8-j6SviQvys&TK(G%ZT{*A_InQsGk9Rrq=E!O;t=^VwZkHKj3au zy4Ixe{T;&E3r~M2ienf$xO&F*o^?Ufc(HnO zRyX$W2xI&<{$aZwN}^;RKB3a^=!Ah58I9M>Jj7RXbK=qTe7(X!%Q9jze&wPc_3`V* zbywKl=JL7P56w8jgM5Tyc;dlRGb>z;qN!V+n%8JfRI)czG*P3ch?<}0-=f^KDTa1_ zHN!a%9G#)+LR>JA%k;Q6A*ArJ5#rW>7!URq7g97dp0_U0D(n781czau)hY-%g4!@z z+^SF|*3p_&oau0kT_bKb{#$r$t<7%S|9rZTSV)FC-tmU=6<%Fom8K;+MJ;ALK%zQgD9S>a8z{akB&Tr;GUSljK)Y zHT12%jzzwx5;6WfAf}P`hza4HqQ#PohvoD3z{X!4dCd6^)ZMmryE_BzUnWJK26*M>iP$IFb(I zs@?pLx8e>*6@Gggo}F%!<`ED_lbu@+%^OXUM9y~Zh>md}C7W*{rphq5f7GwFjkL>( z$O2F0<)JTp-St7zi=1GX6~XM*^~}wOD_+T7Z{~mFsl!eCIdVegEGg}9MMY9U;B9@? zakG`|g|V`~+HILd05AH3?L`}|J@$|wO~-GjU}vdJ!l(JlJk276)o9zg64cs10bTTD zm8pph?FUXG0-F+Yd+iu;33fr7h`{e!|5zgoOWs00IKU$CVT2|GhTq6`!*c%e90=c zm<4+SgmAoU7_3_`HLH$w{Dfz##u#UTB=)_N>r8~odjmLM<93f&j`u!z@*00j8ugdt zRBr-%Sp_)?&Z;U#SCQ>9Hx>w)RAz$1igY8u!!eTzgZi!LA%E$qDk%#!3;6CZ%HVyU zr9B4J`qnW)QULFvqz6R{lK)B)RXIA{(!P988aZ6S9c2gufTQJ_k}r&bsUl^4#87yF zL-9+*95}@2Ot&dyg`VfsIZqBHaCx*!CS;-);J6}z#UT*341OU zEwZ0m09@R#%T{oikur#`$e7kqAF4~A#aOA&TMA#>1oNU z7|EM$GwR`tyPnmXAkV6T3)=<3jH09x8nYsG_zS|QCz=(-C!XJu1Z^JN!;y5g;-m4m zB#-_YLy#iyuD&w-uj8GuUmcTO*^Ax%o#4-bv+mZldu+Mn(*2Lb8>4jhp}S<7rBT8@ zOg(DB+GvEO&X-SXd&uEAd7L9-HxwiVI#ErJto%AlcvooZ3dwX&muo80NN?44-6xy9 z+jXv_d%rUtJ5-^ z#>I@iC`?nq(JDRA!kRwnumxkBgKBTts}03hiG@RBXw&!2)2 zA3Ch>)K3Z*vEMMN*EZ@g8-lH}`Ev^z_#d}bG*NU{J~L*uHlwz&YBxdW&L2hulaqan zZ~sOR4S`s3CB1@t`j$@3jMkQm%zr8nX(!pbj+e3YYjN2n#nNZy^=X>_={G4TLxSjs zy?diSDI){Fi4As{RzCC%$rmM&A_ABjQh42D{9@S+XUaBre8!<^xtE*6s{?E*)xwVY zN~E4xWFf1elp zui$xDzD;mup6qw0(Xo*U^$gR~2Nm88xODr7(?IDL^$(L%F+QM6%l3|BB{(iPg|OD! z9PO_#5FS^5U{vl$r?LDzsb+hs`Fux>fm=sF&T>fOWg z(vkT(1Ypf;@X9kSpi%X>id3#cTbpNnA@<-#i*p+sQpY?X=mlv#ll}}R*NzmW1mCV~ zL#Q!ALc+{cet}UvC!S_=jZt%f((yFmrCBUq`&w*vc1qBHa!Z5Uwv+|---ssVA+HFK zw)gYbv6Np&8d0>DaPe1LjzYC8WQ#-*i%bh z$jL!@l<#iD=zbB->Bx&%&XT+ zP7;y}DZ`3WZ7{Rm7l=g_8=$P3iy@)eXsw=cx3~)kgibcJwAf8G*%gu52fa>w(%3!> zG6w7yJL?OyDf|f`hH>AZyWznDUs-{zZe46V~z`9(fqzHz_bxi&1_Mea@_P~XYkX4wW$;=j2q zaWWs%@d9{Nd8Dl>^OHGcRB}{{6usE2Dtj## ze`LX&4Y`$TxqW`vbuuq9ZIKQqh{dWlW~if5tLq2H`E8VZH6Un3_%Jw!W_xzfQf#0dk@&oJCFW-E5(|$ zK3BiLV10~-{SxTxE%Bm5%yry~7B26N9?|`?P&+HP>qWR@l;l{w5p`PAF_t8WerE_C zFPS7XU7Bqvp{YpIE%Qmd;G9*SCW-~;1wQyXLFYmPa89Gm+U<~r@sBvQnO|-%Zf<3U zV8|IAAK^{M=NNI*l}E@9ca6%j>GF30@W^rUuC&4{bY3Oab54?&7np5DnzI*9JNE&* zVgH!Gk`PkJ6TW4tFXtmMrsT~w zv6CW{=2y&7#Y$Pl2xY}|J&lsuZae@VCA8VBx^T}Z39|w->XK}> zIjbbE*dZ;BlO8Fi^gusFq)pd;Lt+B>54JF$^Eq+#L?7Z=ROOt7fin`#r}S8Wok zg&xP%5b0sn%F>y4*gPEh0>w8IXn16r!^Q55g_0 z9x@*q#~0dIe9N#^Q3j66=0$`!CIl6GzuP&5GW%_I;Bw;cBr#^;BI&8u$|1L!DTPa> zuXHr>JU`TTK*y93%f2vX{N%9V29K7Z*+ch(f^aK)ne;s|xJ_>7gawo2(e?pM_3_an zN7o4Yd_3N)m{?uXfP2dQ#+V1aTPKhHP5LA*Cb%mh~^ ziC;MPN<9{T5savFt2?xg4a4}>-Mz`dTCrn{|)QJ9t zN|Zjrn>uHkTTLbQGm6cwjkN)GD(@ukQzA2Q5q&HII;;MDcnx}pap?llKf-PUv#yc( z24TJjHQxp10Ky-$FNag)*WLVS!;EJn!FrOvwdnoZ!ZK-3SAD9tKaVEW34IgylevS~ z@=}==T{ydAp{dNaxSv;UP>C+8dp@BqSALME;=E{46+ypP)^{KpA*oW>o4-;$r@C#% zaK9H+%`M`lePM71uzED1#b?_)4KdCipKI` zzn4mUnK>MqgW4a*Tl5DrDL#HVrM8yUWVaW`HBP>rRHi;U)m++e{lJeYbT5gbgMqCO zv9GnQ?XR}J8SN3M4l!!V0LVM?YI#$!2i+-29A22nCM7#-out8K`Xnh*dCCBYLW^!1 z#}R9fU?#6k7V|=F!cN*8zErUEf8eY&rMaFQ$Nh%wWuGeGZ!0*5o{tpJ3Y4%{yVjf^ znM7(c+XP2YDy#DGq$73%6Ow~;LT0=Q9XyCVJP3!_7!vUonTD0Zdn*eZWo8y#j(y8Z z1IaP1lCMS567*&QHLevYY9uVix1%CAx>tTc*uz?NX!XSZ!L!sez#-cj7WuMRicT8y zgrLMdhtO>zSek(*z#m*IgTYM%iIFbnMnJ!Y#N@XU>$L|ak z3gwE6I8a)ZCERt4REgyLuh{sFqD6zTZa09A?Oz$*v>nsqt0Y=d#ZM6FV&+1R zx7xO*XQ>131ayq;7;$A8f?41|cJox>fz}|IBwrA~qDh%al-`+J61Gy<`=wiFP!@0G z)4h>OLV$6DE8e$WVg3eR*oTh$%8B?bD7Bva?5wo2P)p#)K&Wtc-*o&Anlvk99%I#%={HVQJNfXJB)O}P(q+ev`^?&J&Wg*FDOe4ne$ zSooDZ{q?^ko^x3{ua=3wIAw~?ri`7I57R(MGM1qBT!&^wEnZC zLrA$zn+3!BVfWm5ZhrT`j8~6o_SpH-sc%*UAto>=H4`CT*(*gq4Ac6<4WE1)&f~Uz zzgRnTVqUOY<^(xV7~Yq(HwlPI$~TqU_(QB%d{*$jgYMTk3V-)+6pcRLtAj&A^IGP* zgdQ>KL69*p5REKEJp>9|^452;d&lv{^Iy93{0o!C z8KNqi#r%jBo;o2c@@%yd&ts?w>S@XiD#{CzGqprG&fq0-l|J#yiW-gbC#6lUiG{9~ zmjKWmzdjKF6D#+aV9&pkBv&Sr)#Ekux^T=|mhB0z6nzH1Kn_r~z<%wMe3Q}hWG{A* zJDAGMxJ|hhi(B6z{lq?{Vh!>xQz%q%hVF?N;4<+7r*29zFVK%g4+Dp0>-PiLFFql` z@il@F89~s`V?}_-vnL_&E!ec_P{IH!kX-dMkh^LL!ScT}ithYC@bE-0#EwvDIV((B z3~>D0{6KyO>z@Rkf4NjTs$g`8;M5Z~o`Xoq+d?~Q(PYJ|aj>`L1bWFdf8uF(XsP9d z^s1!f=aL`$`yz`M`=b&+ViF1@mq@577{uzaQ#!NeL!>b>W_-cQR`#&w$ha+tZ#LND zo@K=IIn>Hh-ECaDz!JXLjU7iPUO<;q7CY@&OuBXz8X@vz9H#J|RZvG@5z}*6LA0M^>m{ic z11-9LTV3NOE$|Z$zGOr#1H6NChtS;>b4rQ|ZL=x*QkOu&Xw<8!qH$22BkX{*L$lGfDMxxRJF`IC75vvA+C)b@hkBnmeb zvHV-(!%*mqEJS0iD*lwP5quAIxx5UzI23+~Zml|kUa&c42VCYJ$SSzYOB8f?(N_5q zrUOQtAM`4f(RwT9B}KfA^|2RJVmbBHI;w$d14*YD+PY9c~)3R$B!k#Dz-l>0|oGe*LmZ`BJE{5MwfR!*uWYVA76HAjJ z2@lR|(#Sn!BgFOQN}$zd4p7VwjI~jO1a_|R!5zXtT?z z^7?nS4b^9OFZHOqqVFajyN*AA^PC9Dj~XQmI9r$_%wGVT=cxXF4$7@)tp=MA z$tJFt>viRhcpUm6tpH?10+_c{V}Y zc-;wfp}9&4HkLsM7SJR(_}}o8v2faw0(v&!pz$>`I3wYss0_<~ZpJDG1Sm5@6Cmi- z&M+g+I|6_TR?vOK<#P0Q3x^Mpr(D_;#ACid+Jfit0@=dX)_VF1Eqj}2ksdEn&xSkN z_?q=dJ-efAyaYSPL_Jll(a zt*qO_pX3{#M0)E6#(ZC;oLl@TO9V2~X^cgFAn zUzxK3wZo7`>a}|%7&jJ``PR_LOsVq`#L}~H+x4f9QpE$T3sI^bzBe;i@TtD|~z4SGqF+(PcGY(XY4i!(zYdtQL+-D7wPs^w8x zb}e3ZHuB)o{o|5yKBa7#zyW{?#m28H;lH%fEEei|*uV(U!D-@_;-OnsT(@M#)!ZW9(HM+7?Iu22#k zllw@WSxIuWdj#||x#f;3W{!%pojJ#mO)lB%zEZ1ZxU;38euyliTADmU?{VlQ##heA z+Y93{A@n}C>KY59uz31yaBe>?ll_AZVr&|rPh3A1l^DR>%ifX{P$We!VqDtA`I~iW zG%6ThL^VF>!HZCPm%=O444DZ$4L;QzzOb17^7?klz*^SVjl=KEJU#`HKysj_EzpdQg%jZ^m`p z(!}ybGScErU|fHPJ>OPF`;HG)sc(PKCtmTgP$axv>)wzGTa2DZ2_SY6 zdNV@Y@V0mHN5(VC*WzlpRsN)C?OE3W-?Aqpf=Fr1-?BsdSmaWl?_F%TYdGon$~B$@ zxb?P3$%;9~?0)t5=-sKWDzak7q<)2&j&lj&;I_?GhicE`DWC;tGIFjTLH?5}10x_9 zq@z;79>Yt+^$vZHyOc(S?%=)rj@xqbnK@E`Ooar3kp=VLx{kUIeg`iyp(?)XA*y)U z*DuArcTO+F|9?|#I}pJ z-8jzas)8xz}y&PPvJGtlXNV>2xygTUN|W-^Y7(2~~VG z!NybDjJxq--x^Vw)VYh(2Y(|cAFR+YA*|a3$RQx0mXE#$7n2_%oT)WVn9bn&(=^ew zb;3+@Bm!J7+fw+OqR&cqAkFE}NYT1@^2{DLHE+ z_c68iV`+@k1L2Y28QfGb6C>@B#nZyJir2Ba1>kh%_ElPki{E2)BMBFTBCiqhy{3U> z%Hv3Ceadhhjx9o7rn`7W*9H53Ie~TCKfQnFLrF8gao44stZ$T%WRJ^JZ`b3LFXQ;zrKH&`5UX59@p zwdd5+8A@S&G{Tv0Po)uJX;* z9-^4ve5O>qECS)FosI=vF^CmASx*_CEa`0R>O>5uO6=wYX6KF-9Vv?BR_sYQe5!Dg z;;@YJl^ro<<-hrG?Jkcm6CB#*O+8mncTp<*W6$kd=UPlDj5DxG5EbGUGb|&aE^fqgP#6FzlQM#_IMO92(qD% zP8ExO!JOWl71+-kxEKsqZoLP_jMOj`eHZY^O3KN3jjq4HF`Q~eZ0A~winWFe#k=FS zAsPycy%Ticv&v=z3(eiW>;fh`fgtSf_EGN8s`>Kci1zg$*S`*oOe1JT%>vCr8bisq?`CtBp zOTtzU~9rx?qB5-$M3eGVcQ z=qO=3yRHgcx1s%cqs587DFWP_*{+w#nffiWuCMBUzgFK%{9g6D=K?6?M1a^fbhKdp zyL{Nokl$)?b{>~VnQgB~a3TF?nCJB4`bEdo%RRbKtefYe&i(R@;Qn|Q;@D+`_Pu?2 zGw($2qx-isO)f@G6VOx>vo_QzJG}V61&KHRF5apv(PC~3?T4TK ziMs-LZD*D!FLUUd#6d{gr_l))xJKM&?C6mY&2%lhynIA@omGq`CO%r#`4*(7y%+SJIHG9Qfir((>8S zb}QQJDD;uylcbS;%EhYOuD26TeNYTAv@+ed189QT<4qFtLNAW%^cx-Y1&H_Ab>Ht7 z$$#d{F5Le%xUdJf7b>?Ijy)ktt9DJJtPV#SB>ql?&$@>1D>=?PgY9b1V>Xua9)WzT zfm4X(@`zqNyB|kOKIUGX2nCgj-@M|%vJO@VY#0RTwG-Gko0vD+;Prj1R;kJ-LWrVj zg!Zgg1y8ihd=SiTVGWyv&+|p>QuMD}5CAB}{8>(}blbAU;Rd<|b&=jvVQZh4JLKN8 zbHrjlcXr3iR=*5=gm?>iguN6&?~t!%}eZ)7g9$$*_20QqR;NMtyf1Qb=L4yg2i$Wogfyx#2XJ%4p%=_`LgW7T`PE=JeGt(J=_kp}D3Hw@ z;g=ZM4rRLgGimz(F=$5FPLb>&In8kZ$9DWHCV-rlu*jt075s?~ozi-{$)KMGGQQy+ zNnJx-9qP|r;|5md^zerF2cZ!`Jtf6A``2Q>qWSJi0Jo=I|e~IyV{NFr`RnXl+N;pNG+Rr{;bWvkI3H7CYUVj>mV6-Ivfc z;`gtot@&>*@SkM??Z541`qT$p%D`gD7ypFGnPd;0yNF(&!39o2bd{x>u;PCeSHeMF zql~%Sgrk%x-k`aZl2=oZdOAV;u~I!{e+eHJ9l(_~AN3T{8)YH=nohJo#~kmhOl<&? z;x@tYIK}X|whGy*bnM1+d~sy(w%808Qai=A2=)t=D0I4u0iv_o0E>gY zl=zn-dJ22AcxA8brR`rq4SKy^IpNf%Ac}HB7VA^ei9LmPkSLF#x@nFjjaL_tUX9Cr zFIc$Gcdi<35Nv~bR=Ot?IxP?#MXD83Vt1AZ4(Mc-Yv|=67YD@r$kLq^K4Ggp;T^Ht z6h*)1`+p~6>i@GAtogs~Q(v;YtmHE5+<^v3a7d$3LfI_|Vw=*kfkYCQJm9pO=GOR| zX?m zG~rdvw8$yRdtBQnk%ynHl~5e%Ta$sqa9wjxMjehChWQiQE|S;0*T1(7K$4Cw$Hn2V zKa~HEr{ph&L;t>WpE%2S#KGM~ry#Q97V~AcFK5jZrgo7QmAs6T{Z(ljtNu+2A1tIP zGp1&4k|*MaL_cHK$Vk=r?Ny|NNkIIW9ygwJrJ!}I9ohE%CK5e{%IvgrE z{&bEreUSjLkYu1@7$46jJ9Vj)l~Yph60bsY z!v~EXB4X~@;qWakj;9Wy*Mommla<|}kw>1{QsrSYh8dk%m|X|aZK3ku&(@@k@h2G@ zp!Vk527?~mGt8O_Eq{ZZv61AOsZ#_&(8)?EWe6G}jkovx%^17&W#&q5MYO@|&9~yd zn8llXi3bvSpWVvTuh3hN(dHKhB=wa30Ey%9G!ypf2;iX=0UC@hlq_(|48r?PnRjD= z5`%6_yV!t+envf>Y8Q(Jg4~~e6s5I4o=Idoe6bLB{kp-#OiuBfpHf@;`1dupD7DgM zzmkvP4P^U2(`}|-<$m8amVOuZUIc}B1S@3riLxnwrn-|xkalMRMv zd?K%(-HRZ=%L8xkU`zF`A}Fo?sF^*%x$xNH~y-ki+gf@8%li?!;+)>V}zZN0}sWRq$I ze{03-4T)r?FW(wP+)tc1V@#h*&EfcOd+S_;KzcLdn&pzo_d+wj z&(A;n>wRDDJ@>iio^$Rw=iyu{&IKGg+O0H1+UhGe%H30f%#G%@=vwugtRna9semva zI5!Aw2eI=a<6+snP}lD2w_GI2Ph-;i3%D(GV)Q=9k&%z1Q+VRf?Jq)*TlPmBjM%Hy z+_64Igp6ER^e&>zi<3MtTh*$H+{?T?fl|fCbi9xN^8}W4Jo};DyNkujVZwxYRCd zRR)}gsv4sD?w{VmSJ{al*-Q3njsrs$u{OmHko|kM-1b?QgdW6f1AhmE$sVOAYc{H|dJ_On5kv{;^KF*Z}-Qp%rMj+L{ zh&z^@tqxo*VGU+(h&1rC_giS_rxj)}2ZgRm(k*2}x5@A2HRnZ&)Ks0G%krE->2g>v z^v)}3vGpb+PUMJp)dA!weiKL$v2)=$Gl&!3zJ(UXJgk?1Un&4C^ZP!c*2rY|oB@Sk zrQtPuRH6xxN#K+PFgwDCb()E0pbU=);?}ZquhN^udeCfJ;GV|N88azyTzdKfK&R^`^F)Bu*K^|{Ydu+E-$ym>F8$+!chQL2#`$xy zk=z4Kn6V$D$-NK0ifWL*dh~DH`+mZb5TK_^1c zus1x8WBJ)P-|w3G?Q?niKb?B?JPN}3zIB>CfTX!u zr}bd5ZoGNZHBQP3_#X3FHX(Ro0fmQ3sTTe6ix8S& zNOT&b7za=K2>UBw8rs!;MRr3979Z+=k+{yT?5@Tx{FJ%g4r?pPueqO!Eted_<9+0_ z=jM>+{gx(0mQN=rqVWCZM4?}l&Q&Sf)1Z%&L>vX=*V_)u@@Wu5lz|tX*$sZ5!Dk}X9T?~;nYBoq3iG45K2SAwgdUwQ_&1;nvPoJv@(VY?M6(IU*wFuS^+ zcR$&nY|8x5cJ9ejGQR=`k0amssteC%<)k0m?^rZ%kHfy0D3lz|iziK*_h-$`>pzP7 z2JYY*4-CGH$Kyg>!l{u6Jr-8a!5XzpU5j=HZ=HyCpw{f7)zDs6_I4TUi^7iVWaqbm zb#{JC+zn}eKo8p}>uCqv&7i>fu=6&g*Wk?>hkcLH6{b%Dr9lMQ2c46vA|icvs;L|I z2y01#J}OY}avY*=T^zRkChz35Mhsu!#>C_WdMY$(dG{qYouJ2n4HL9iVpWDDw#WaI zIZn>Py|*ZvF+XPsU-hHI;32Id>ii?BG11@Ca9#BP@4;q+(^KcTDe3kc=DRXLf1Ay@ z^!=<-dQ4Pz%R)tm?G)+j?k0QRZ6jGVwloYOa3duwgPrZQLFQ-?q^`Jd$sR>e@H*`u z3rxsk1`eGEY6)&jydO-rO4M7Mbp|vc_o46hPOL<}=)Bj~LtMV1ji`C%;W9(r$ib13 zaEQ=^oV+7~njnxSzX4Pii5PkVj{JU<=;6u0Ta$F0QSWy(`Epz{uGGMo_Z}l#uTz3L zUJK|p`^9c8_bkv;ifY$6>c_95s||!dFkUGwAz|tj*?(tRJRqoihZ5Icxxuu?3P4@XG6Lp8v zvJNpZ8CT))e|=1=dYP>oIZA3kU&+K{`5YTLWJ;Ww@uG_illE7Q1-+}^jH-*^h| zr#X)^O#GntKEqc)tJ1u`6We#3wiH#iurAJk4$p>aNo!6)cdcr(wG-HQhxB1zgh(ky zD>?VQ&J4SmqKb(l8R5@vNGIG_Q4jKTv)r zYE)fVK61rUV8Zt?I~wWZfcvSHUqHiCK;8=qkE=+q-diZH{DW}Sgm^Pr+RMFzO0OAy zA__1M{DBhDn_@lph-yl`vS!m>^SzhF2GKET zOG~aQgJ?#jNKe8ddTSmiB!A@O0Qw;WtgI%&vdyqCR_n3NO6(d+UNcb(_<*J?{3qSs{nq&Q zcR!8vbqUsyx0^-U!CkIK1R3%(G>!R0t%{S8eE0Gd;y;>toVPw;>RU#82hS@;Fwoe&MmZad<3{#54H<+cO!Ib~(p5i>Yk zPbX{u(T?=E{Sk0KZQY<(>&G=)QRw^pn7zf*XSHKekI^c(ln%swZW`7Zn}8qMco$f; z6(;Ga*a)LEO+y*zRvJ0@K6ZC+Z%8b}`3v>5OKEBEvq{ogt-5SJqZEWJwcj%>Untm^ zWlW@Pf_lW5BC0sb#~w27#2kOpiotlyn(u!v(Ih-tcSE(NGFn0%0lJKHLp7R^$d9s}il>%H92% zJE@FhFD=f)y#S%oTW|8MP}IQrS$G;6P55E7D?iic!pgKuZ3M5;dLy43S=)TqTH>zs z^@DqXpF+g1Z(_TtVHBcW`VCw3V)_~M*jPR~J>5gRqqV08m&9BjI_ZMd);KdJ4`go1 zm0w;E4WxCnoHBY~%WMh=C(*Jf%N|B{zO_c+3tZJJ{q&xgEv_$c(1^EgPaJQ?M$Kks zoy|$(7-SA^3Xo#=b>u_W4_K_3n{vx?n+?5h)ZcMbl~chXD;v05S_u^$7B-kOtEqpr zT%i##m(Yomy$EN}kU9Gj7amlw1pinB*jI8YbRC1W4>n$B0CMbVswHX zBbX8!;wvH|&WD|KRot%o!cLJVSd~bdIhQrftJvwJ#;)UWx6dxFcq~`g`0A(BBhd5f z&rhGS*gwg(O8l5v-bZY*2T6r!6)%n+zO94I!|dF}G0q9x$~;b$!{bp|0Lx!Q|GdRh zF+Q;-@ws6cYR*S!5>DpQ61n5UXg$_o~iKce4o+kJSRxOI{Vw^_Yf=aw`VfTm$9l#ZHZFVwIAdsC9E{63xNDz zqxbCMXv1S;If2fN7CTOV`T9H=*?WN1@O4+_(j4@**1=jILM=&apSPCdHe1jY~T31Nz$@`nEwtu6@!NwfCvoTdW3A=ZJGhtb3bQsjH6`QW78Ft1-()KX3$Y zWQNu&c-rU4VjsguOVaA7jRku~3Uno#{afUnzJFfKAGxIQl$!6A|5PsmaxK49QSxPL z%4m1eDo;)3FyVdYksadPyrFNWGF9%CSb0hamU}LmPsj1m=4k$fyer2$2Ml5@r%N0f zbpbho+S_Po91*6~sZij;6Li#94!l^?k1H+9o3swetAMP9d#^U?keqsp!{K@X^7E*| z2+)=va^wV!5sGWs%gd!Pw;baNm$|jGM*7w?*Fp)xjj%(bl?kNf{!?S?jwANV(Yq}h z_jUiOU2tw_>-w~cW zS-N!%&I|VPsQK-q9U=G89%*GKvWsc!f=g-GmiOvSpG5F9EyxdAAiW(<-aNd_bLC*o zaEUa@F7I9_npA5P)RyT$;8OxLT!>TE>$570E<;4y6m?kMNGZ26*O!63cN1-S{U7hw z_irfRA@}b2gAMNX{d@-cd7oI zQxQt<-DJmpz6ySVg~|N3a0jvtE?Bd!qr3awXy(T1p*UWS?TqK3yKk(%2b|FIGWt&|e&H!0wj_{1+|TphQkUx$8Z zk6CZ<~ zuDq7})2ep;!v2ScJGK;)MaC8)TvpZ?IC{_u&gl>w_sP{vZtkwA1YFii+upW*4-XSi zHLr*ahnb-;183UMi3W`g6i4g(DHLnS^M9r$Q|v?jbW=}V{b$md!GNev=Qz|r_5)2@ zrhXkdVa(ER^|46wQA;Onx#@H!WEzwIOSC&D?4#9Pld5Gp(HoPokBo;<-fiG=fccWM zl^)*d3{mLJM^meGmP9o_H_{;iEp6F?L^S77FK^E#=IP)ZXCxrz?2>kN_7GS9@Id(Ci_D~DydTq*j^ z9#a2#YV%UXhv>Y}OLTQ%iw$;!0#=sBfTmJjKV# zL_v~4Rkq!#pR6^OhBnL}lV^13UN5!6q~b8GZdFp+Nc@T8de9<>mubB|lL0YcV z1||tXLyYB!!MJ61@<=D&94cJ*r(2Sut5eR_SeL;jtsl9ZYUr-AHn+k?eR&L-mff-p z9XqYq(;FJaHS&|urmu=NlNPtv%>Jjmwq3l7 zwS;zzCs&C=LK&Mx838%mnA>tE&&LeNk7nVPH4=(1Q)g;{i_|S_(0LO3ik7u5ws#q| zdM&#lErRV*g|}w!6rFqxcrzMElxhNpd~s?v)9Kg39Eg&PS)#eC)fgdUBtDc}ySk(w zdfrjHxYMmaUpVwkMy?S#mma$Z>_f>l)IJpYF35KRtELN3I8UO^uwN4QnCMMp7+W2a zFX5J?rUpZdb*#d!S$5u969y-*@88T2FJ^pdnA@KiW+TA`8OZ=PH@&K@tB;sK z+)(ZrCr>kRh#_N47c!fCh-(lCP=JOHa`q)rr#=2jW;3uatx3*=Y>6a8@*x#avF=8N z^to9!JG%&S#&ZrZvb)X__KXNmW`T^L>)494O7p}L>>7y!xqgM^fw8pIzGNpQ(Vz?i z%_rnGRFIpA5hg)*+_E?w@nY$Il|0;nJlR{PDvFZJ9;0?R)Emo?F{#@6k!eoeg{L{ zrv*!t@Ee#UwjGJBK0PQjcS!dPi!6%$9qfroEO9xZsOiO!+#)_Yx>pHrt;nrF6p-qJ zT<$At#2PVvBC)+qZf#=vnef01z*mpXF@8tzG%l84ewQ!0sTd=JQR3H-YE~uh4bdmr z;PIjF0xA#!Ck-Vwgh_-~^Nz3IGA^=uEIj{NW08{fZafYF4WjL=8>?zslSfD{g; z@onk0Qam+5lNQ+-WGX6J5XKgR=>lF8+9)ie+5N#a1;+V z{CvIa+QGze@mFE!q3>^=`rn&vcvxR;t_n)8E3m{?s9Omkv!%-T8J2&SEYhPJXZOr) zyvu$b?_{K!Jm3^$qe8GSc&M<@OwF-8Ixh*L-Q8v0Jjya#-ucWrIwp$2ChS=hzOVRy zKLQ0U#OsZj$2&tbxRuwD;^03D2m9>xKe6M%ivRai4zPhr2|>>~)*w)zV^9nd7tR_w z?H(HwLwI2SpLC32JX_#+?H8bQv4e!5a}ttNn)>Mr<4hZ+JVFpa0#;Ip1j`2`fjy9R z?~L@Qxo=+qC2eLV>-Y;cN;P(%pH9#rn^qU|SY(JZf(mwX&Rv-{^rY4yFCb@Y9D1`F z$AHW$6%c{<|IZ-0jP!Wro#wOHnCDZYeN*fg-xn6f2u}@{%ce(pqhLrD=eaC?SSk*%=H;(;P|8f>zv?JZU{4Zt-YH$ZUZRyL; zzP;2q4X72;FEj%Q?uX3X=rZ4KF(K!?&Mk~pV2_mdD~qMU(z>9O7Ze7BMIi)P04heM z7X6S@y+gX%YcVQq3fgbo`HWco4mE^YIW)P4g5P6M6x$D8ngfxM6k$!fO5Q_Qn1Lyr zS5LFHkUfxU-YEES^SUIb><|*7;cO7f*fg5!^Lq61pYmuIV^|5eYT+e0seNDmPHe^4 z8jct_v^&Kut42iI*cI9C0dm#q0vic@$$3X+>*80VwEEY(WFI4E5++JZsfWx&XM^0r z&Vb!}8PIcYU_R+$qbL*=dNe1KV3h|aQ7QHmS-`X-#opc?`;=&6S9iAv7F!K=5_5>n zH2*-Ngq0M&2T+lsxi{6<1CHl!`<>WKHmditl~@P(7+$Zwp|s=sk@}|Vc8+iCk}P*w z=cjkL1RINO36-ILagQZ~pD0PARXfTM zX3MaHXqW|imV@XWtpAyQQLw4Vs)-Bok$`S&C4Ap0&@n#beu$3mjogi*%cSaUGs>q7 zX)_?Lg87ym2Iw;eRFELAjlr}A5&Md?`#&Eb?%#ZZrE{TX_davwk2hO`xGnhR0`N`; za+TvGyPmj$KJ;4$3&k~43oMPA?(= z(=_-s5FAqNUg!c}+F%aEh>KV&WU){m&P_0ZqA@&B0U$RgtWh$bm8xVnQUfx1h$maj z_h7XXbHcL$*5XWx06NYTTu_ea>TV|l(gop_KG)e0@#wsqjpHiG-u^BnL0-n8B@q}p ziROijAaUhH$zIeV(%k#gxgpm+v)I9j<$=9~KqeuZ;XN+|f-MmLyTmHoL-cgjCndXa zZ{VA~qp2prc2c7Bk!yKTof)h)hz|<)!N!*vCkpA!@`Q;TA7c|RY{O;$DV;RswYx8K zd&RkRsFzzUR$54<_d6a)J&v3=RYHfNlMDHD@sdhC17ht zCZm)%-?#BE5Zlw-tC;Ta&N*eyk??+h%L`&8VT+2e$MmEn&dV|wge-}K&y!FI;J00V z26?A!W!vqw9e+OeW=RtG%KJ_+Qn%<=8mciq^@9Cn$c2pkP;lfYdJc_RlP3IIl>+p1 z|Mw)}c`M^nsRD8u56d=M*v1DS3_Zzi?ZRx$ie-2%_63uotSL&p=zcpBd49SDD|1Hvj z>LSx(uOMTlr`M|>Wz?0#9DV@?{auW}mQjk)VdIxkgGox>p*?D5$SsD3pvP|;EdvZT zo{7!{yY*iLe7okkgVHxt&W)*LJyu)Z=;g~3o!@223llHJVH2Gv$qx#g-ylqBBFSk-){ zhXId^Ti5`X0qG-_Ad0YAZt?f_Z9<=rTd6t2^d0AGZM6E4&;R^mj>IC%X1^MZJPh6{!8#p9 zyXWVaTxUkHn;`$$48WDznYamtZ1AVA51GxJ6h#a+##Tya+$irKab>9WNTsj)Z07ASzzMm$nn#Az_u zGI^kinVw?@kd=ks_8~GAk3brtH6?u? z-5A^uHp+U0+UH1-3806JuTty_KRVSUH({^ZBc5TSIUn7bX3I@}aW}K`Re?mg$yIp_ zPIt7+v1y7E+@WtrWjV*Re)pzSfRg}p>;6?>ap*@1m|ZhdWl0QyG-?JQ4^@iO=3pvj zkgefdO_x$PL&o38b?IY11kWNqUilNz;OnE`&w>@#RMQJoCQ*@jMD-5#R$d5T-kKT3 z>qQ;g`4@B;tQI&K>^T1oEBt%<`*cn!3b6X2r8ZGw*35}{Jgy9fXA<}=k^>bwSzXO- zh~~2?sdhtb?)QQxW7rHhT7b|?TrM%Fp=X3#p)i}albN2%$KswaJ{XFXhiZGA6Jiu( zF#{Bx+2raDa|>$+7vL?5X`^1ybT7&4md=+I(NP-aX?$@(fqwdl*S>x*#)M|e|MzZW z6`dNOG+H&{l9gMiy|5O`G4cGwg}TI`6R=sZ2)AV0d2e*&;hDsCc{`|URL!jRJLPMi zQxya9hKR_4u{|qs-ugU)N!#|JKH{QxA*ka5FTfH3MIr$PgDpyE?sR&%QqCIyjj;y_ zVoWl4|5s!gLvj|*9buf;8=xy*HasMMp1+8yTIy8qeC3%b844{ zhkwxtKT>;Uo!h`1&u3g|6dL|({6c$_cUDC;`5=a2k3fD^>T2(HU3d2b9_14(r7~e2 zQ7IFp0R%YkYVT4H8U^?XdcTd9$-B%yTkKB-$Y*kk-t*yQEE1pdb=JmZ%c<}?7YaIV*e@f@;jgu zhDC%*dMyA;U{Yab7^r(L1e_>U>4E6S!|BnxcDWAB5n3!gj?}+qPuZI=lul7`@nseW zD7!Wk-dij{p3CM0mUHRJyLP{ai}7aA$&RSdVJsqCr-` zYlK6&6_~j=7o@8zN6m2kP?SW$+Z{yyj4C_}GPj?MD#x-0ppNH(=uQ4XcQ7_QM63t7 z9=3T~lG9R7II0jlAJnWm!r|b|B6B2hDL^gLP|}0OA{SKd`h8$8BCeE`ma#sK0Ymb; zidxFsql8lh7zzaq9g*ywt803a=2VGJ2P?DZ}n=s<`Be>;qgSQM2ur(AtU`zq zSPTdm@#bhmc-rhc{jDZWVS;qSA)r>%EK7kQ#B^K&!yd=tOra(ZpsJ5s=5mz#rNr7C z&YlXsL7(7X$sIJ0IAg;#;^|6Wt+t2uyVv4 zD-tJTrtqwTH(Xzz+@T!p@)j_^++?T&I2tD}n?MYb*R`#^Ggboue}3zNeJ<0(v;Gh4 Cfj(UT literal 0 HcmV?d00001 diff --git a/docs/verification/vq07-progress/1f73e559c-native/provenance.json b/docs/verification/vq07-progress/1f73e559c-native/provenance.json new file mode 100644 index 0000000000..6a48d34901 --- /dev/null +++ b/docs/verification/vq07-progress/1f73e559c-native/provenance.json @@ -0,0 +1,1895 @@ +{ + "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", + "pass": false, + "executionHost": { + "platform": "linux", + "architecture": "arm64" + }, + "nativeArtifacts": { + "runtimeSha256": "da16138cc37938a14ce6831476aa58972a0d469ba2172b6a06faf6d1d56c6042", + "bundleSha256": "d2be9b3d0efa3247ff63c772421f75b77e8ea1fd9b271c4791ec7934f88c3e86" + }, + "qualification": "Partial Linux ARM64 native-host software-rendered correctness on Mesa llvmpipe. Fifteen captures passed strict per-arm native guards; native resize aborted the host and the full native gate failed. No completed native resize or hardware-performance claim.", + "runId": 37005493900, + "runUrl": "https://github.com/ThreeNativeHQ/threenative/actions/runs/37005493900", + "artifactId": 11226555526, + "artifactSha256": "cc5cc8f973b8edc9f16a188f3ae68f1e0afb6b2f508ee4a392df222191587af5", + "acceptedArms": [ + { + "mode": "off", + "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", + "pass": true, + "capture": { + "adapter": { + "architecture": "unknown", + "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", + "device": "llvmpipe (LLVM 20.1.2, 128 bits)", + "vendor": "llvmpipe" + }, + "browserArgs": [], + "captureMethod": "device.screenshot", + "rendererKind": "webgpu", + "target": "desktop", + "viewport": { + "height": 400, + "width": 640 + } + }, + "resources": { + "textures": 5, + "settledRenderFrames": 4, + "stableTextureFrames": 4 + }, + "diagnostics": [], + "lights": { + "directional": { + "name": "fog-directional", + "type": "DirectionalLight", + "shadow": "ordinary-map" + }, + "point": { + "name": "fog-point", + "type": "PointLight", + "shadow": "none", + "range": 8 + } + } + }, + { + "mode": "zero", + "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", + "pass": true, + "capture": { + "adapter": { + "architecture": "unknown", + "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", + "device": "llvmpipe (LLVM 20.1.2, 128 bits)", + "vendor": "llvmpipe" + }, + "browserArgs": [], + "captureMethod": "device.screenshot", + "rendererKind": "webgpu", + "target": "desktop", + "viewport": { + "height": 400, + "width": 640 + } + }, + "resources": { + "textures": 5, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [], + "lights": { + "directional": { + "name": "fog-directional", + "type": "DirectionalLight", + "shadow": "ordinary-map" + }, + "point": { + "name": "fog-point", + "type": "PointLight", + "shadow": "none", + "range": 8 + } + } + }, + { + "mode": "fog", + "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", + "pass": true, + "capture": { + "adapter": { + "architecture": "unknown", + "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", + "device": "llvmpipe (LLVM 20.1.2, 128 bits)", + "vendor": "llvmpipe" + }, + "browserArgs": [], + "captureMethod": "device.screenshot", + "rendererKind": "webgpu", + "target": "desktop", + "viewport": { + "height": 400, + "width": 640 + } + }, + "resources": { + "textures": 10, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [], + "lights": { + "directional": { + "name": "fog-directional", + "type": "DirectionalLight", + "shadow": "ordinary-map" + }, + "point": { + "name": "fog-point", + "type": "PointLight", + "shadow": "none", + "range": 8 + } + } + }, + { + "mode": "inside", + "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", + "pass": true, + "capture": { + "adapter": { + "architecture": "unknown", + "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", + "device": "llvmpipe (LLVM 20.1.2, 128 bits)", + "vendor": "llvmpipe" + }, + "browserArgs": [], + "captureMethod": "device.screenshot", + "rendererKind": "webgpu", + "target": "desktop", + "viewport": { + "height": 400, + "width": 640 + } + }, + "resources": { + "textures": 10, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [], + "lights": { + "directional": { + "name": "fog-directional", + "type": "DirectionalLight", + "shadow": "ordinary-map" + }, + "point": { + "name": "fog-point", + "type": "PointLight", + "shadow": "none", + "range": 8 + } + } + }, + { + "mode": "sunOff", + "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", + "pass": true, + "capture": { + "adapter": { + "architecture": "unknown", + "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", + "device": "llvmpipe (LLVM 20.1.2, 128 bits)", + "vendor": "llvmpipe" + }, + "browserArgs": [], + "captureMethod": "device.screenshot", + "rendererKind": "webgpu", + "target": "desktop", + "viewport": { + "height": 400, + "width": 640 + } + }, + "resources": { + "textures": 10, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [], + "lights": { + "directional": { + "name": "fog-directional", + "type": "DirectionalLight", + "shadow": "ordinary-map" + }, + "point": { + "name": "fog-point", + "type": "PointLight", + "shadow": "none", + "range": 8 + } + } + }, + { + "mode": "pointOff", + "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", + "pass": true, + "capture": { + "adapter": { + "architecture": "unknown", + "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", + "device": "llvmpipe (LLVM 20.1.2, 128 bits)", + "vendor": "llvmpipe" + }, + "browserArgs": [], + "captureMethod": "device.screenshot", + "rendererKind": "webgpu", + "target": "desktop", + "viewport": { + "height": 400, + "width": 640 + } + }, + "resources": { + "textures": 10, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [], + "lights": { + "directional": { + "name": "fog-directional", + "type": "DirectionalLight", + "shadow": "ordinary-map" + }, + "point": { + "name": "fog-point", + "type": "PointLight", + "shadow": "none", + "range": 8 + } + } + }, + { + "mode": "overlap", + "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", + "pass": true, + "capture": { + "adapter": { + "architecture": "unknown", + "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", + "device": "llvmpipe (LLVM 20.1.2, 128 bits)", + "vendor": "llvmpipe" + }, + "browserArgs": [], + "captureMethod": "device.screenshot", + "rendererKind": "webgpu", + "target": "desktop", + "viewport": { + "height": 400, + "width": 640 + } + }, + "resources": { + "textures": 10, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [], + "lights": { + "directional": { + "name": "fog-directional", + "type": "DirectionalLight", + "shadow": "ordinary-map" + }, + "point": { + "name": "fog-point", + "type": "PointLight", + "shadow": "none", + "range": 8 + } + } + }, + { + "mode": "half", + "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", + "pass": true, + "capture": { + "adapter": { + "architecture": "unknown", + "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", + "device": "llvmpipe (LLVM 20.1.2, 128 bits)", + "vendor": "llvmpipe" + }, + "browserArgs": [], + "captureMethod": "device.screenshot", + "rendererKind": "webgpu", + "target": "desktop", + "viewport": { + "height": 400, + "width": 640 + } + }, + "resources": { + "textures": 10, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [], + "lights": { + "directional": { + "name": "fog-directional", + "type": "DirectionalLight", + "shadow": "ordinary-map" + }, + "point": { + "name": "fog-point", + "type": "PointLight", + "shadow": "none", + "range": 8 + } + } + }, + { + "mode": "wallOff", + "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", + "pass": true, + "capture": { + "adapter": { + "architecture": "unknown", + "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", + "device": "llvmpipe (LLVM 20.1.2, 128 bits)", + "vendor": "llvmpipe" + }, + "browserArgs": [], + "captureMethod": "device.screenshot", + "rendererKind": "webgpu", + "target": "desktop", + "viewport": { + "height": 400, + "width": 640 + } + }, + "resources": { + "textures": 10, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [], + "lights": { + "directional": { + "name": "fog-directional", + "type": "DirectionalLight", + "shadow": "ordinary-map" + }, + "point": { + "name": "fog-point", + "type": "PointLight", + "shadow": "none", + "range": 8 + } + } + }, + { + "mode": "blackOff", + "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", + "pass": true, + "capture": { + "adapter": { + "architecture": "unknown", + "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", + "device": "llvmpipe (LLVM 20.1.2, 128 bits)", + "vendor": "llvmpipe" + }, + "browserArgs": [], + "captureMethod": "device.screenshot", + "rendererKind": "webgpu", + "target": "desktop", + "viewport": { + "height": 400, + "width": 640 + } + }, + "resources": { + "textures": 5, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [], + "lights": { + "directional": { + "name": "fog-directional", + "type": "DirectionalLight", + "shadow": "ordinary-map" + }, + "point": { + "name": "fog-point", + "type": "PointLight", + "shadow": "none", + "range": 8 + } + } + }, + { + "mode": "scatter", + "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", + "pass": true, + "capture": { + "adapter": { + "architecture": "unknown", + "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", + "device": "llvmpipe (LLVM 20.1.2, 128 bits)", + "vendor": "llvmpipe" + }, + "browserArgs": [], + "captureMethod": "device.screenshot", + "rendererKind": "webgpu", + "target": "desktop", + "viewport": { + "height": 400, + "width": 640 + } + }, + "resources": { + "textures": 10, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [], + "lights": { + "directional": { + "name": "fog-directional", + "type": "DirectionalLight", + "shadow": "ordinary-map" + }, + "point": { + "name": "fog-point", + "type": "PointLight", + "shadow": "none", + "range": 8 + } + } + }, + { + "mode": "scatterSunOff", + "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", + "pass": true, + "capture": { + "adapter": { + "architecture": "unknown", + "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", + "device": "llvmpipe (LLVM 20.1.2, 128 bits)", + "vendor": "llvmpipe" + }, + "browserArgs": [], + "captureMethod": "device.screenshot", + "rendererKind": "webgpu", + "target": "desktop", + "viewport": { + "height": 400, + "width": 640 + } + }, + "resources": { + "textures": 10, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [], + "lights": { + "directional": { + "name": "fog-directional", + "type": "DirectionalLight", + "shadow": "ordinary-map" + }, + "point": { + "name": "fog-point", + "type": "PointLight", + "shadow": "none", + "range": 8 + } + } + }, + { + "mode": "scatterPointOff", + "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", + "pass": true, + "capture": { + "adapter": { + "architecture": "unknown", + "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", + "device": "llvmpipe (LLVM 20.1.2, 128 bits)", + "vendor": "llvmpipe" + }, + "browserArgs": [], + "captureMethod": "device.screenshot", + "rendererKind": "webgpu", + "target": "desktop", + "viewport": { + "height": 400, + "width": 640 + } + }, + "resources": { + "textures": 10, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [], + "lights": { + "directional": { + "name": "fog-directional", + "type": "DirectionalLight", + "shadow": "ordinary-map" + }, + "point": { + "name": "fog-point", + "type": "PointLight", + "shadow": "none", + "range": 8 + } + } + }, + { + "mode": "lifecycle", + "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", + "pass": true, + "capture": { + "adapter": { + "architecture": "unknown", + "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", + "device": "llvmpipe (LLVM 20.1.2, 128 bits)", + "vendor": "llvmpipe" + }, + "browserArgs": [], + "captureMethod": "device.screenshot", + "rendererKind": "webgpu", + "target": "desktop", + "viewport": { + "height": 400, + "width": 640 + } + }, + "resources": { + "textures": 10, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [], + "lights": { + "directional": { + "name": "fog-directional", + "type": "DirectionalLight", + "shadow": "ordinary-map" + }, + "point": { + "name": "fog-point", + "type": "PointLight", + "shadow": "none", + "range": 8 + } + } + }, + { + "mode": "lifecycleOff", + "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", + "pass": true, + "capture": { + "adapter": { + "architecture": "unknown", + "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", + "device": "llvmpipe (LLVM 20.1.2, 128 bits)", + "vendor": "llvmpipe" + }, + "browserArgs": [], + "captureMethod": "device.screenshot", + "rendererKind": "webgpu", + "target": "desktop", + "viewport": { + "height": 400, + "width": 640 + } + }, + "resources": { + "textures": 5, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [], + "lights": { + "directional": { + "name": "fog-directional", + "type": "DirectionalLight", + "shadow": "ordinary-map" + }, + "point": { + "name": "fog-point", + "type": "PointLight", + "shadow": "none", + "range": 8 + } + } + } + ], + "postCaptureMetrics": { + "zeroIdentity": true, + "offIdentity": true, + "lights": { + "baselineMaxRgb": 0, + "wallMaxRgb": 0, + "roi": { + "x": 260, + "y": 155, + "width": 150, + "height": 90 + }, + "wallRoi": { + "x": 184, + "y": 216, + "width": 18, + "height": 18 + }, + "evaluationRoi": { + "x": 0, + "y": 0, + "width": 500, + "height": 400 + }, + "calibrationRoi": { + "x": 515, + "y": 25, + "width": 110, + "height": 110 + }, + "calibrationMinimum": 146, + "calibrationMaxDifference": 0, + "sun": { + "meanRgbDelta": 15.957703703703704, + "changedPixelRatio": 0.9933333333333333 + }, + "point": { + "meanRgbDelta": 48.772123456790126, + "changedPixelRatio": 1 + }, + "thresholds": { + "minMeanRgbDelta": 1, + "minChangedPixelRatio": 0.1, + "maxBlackRgb": 0, + "minCalibrationRgb": 32, + "maxCalibrationDifference": 0 + }, + "pass": true + } + }, + "postCaptureMetricMethod": "After downloading and digest-checking the failed-run artifact, decoded actual PNGs were evaluated with fogLightPixelMetrics exported from the exact source verifier; exact pixel identities were compared from decoded bytes. These cross-arm checks did not execute in the hosted script because resize aborted first.", + "resizeFailure": { + "reportSha256": "82f0d784bd28aaae09a4f2e2120710604d3fedd413ba2140c0d8d595f76d7e33", + "diagnostics": [ + { + "code": "TN_PLAYTEST_HOST_EXITED", + "fix": { + "instruction": "Inspect the named host output for the first native or JavaScript error; rerun the same scenario after fixing it." + }, + "message": "Device mailbox operation '20' exceeded 120000ms.; the host process has exited \u2014 last host output: Error in wgpuSurfaceGetCurrentTexture: Validation Error | Caused by: | Surface image is already acquired | note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace | fatal runtime error: failed to initiate panic, error 3656715680, aborting | [Mystral] Caught signal SIGABRT, exiting gracefully", + "severity": "error", + "suggestion": "Inspect the named host output for the first native or JavaScript error; rerun the same scenario after fixing it." + } + ], + "consoleFilePresent": false, + "screenshotPresent": false, + "note": "Missing console.json causes a secondary verifier ENOENT. The preserved report identifies the primary native surface acquisition validation failure and SIGABRT." + }, + "images": { + "off": { + "file": "off.png", + "sha256": "340699e0cb4c8740fd083df7b0ed1484e3364efae2b6ce17f0e117f1e73e9d15", + "capture": { + "adapter": { + "architecture": "unknown", + "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", + "device": "llvmpipe (LLVM 20.1.2, 128 bits)", + "vendor": "llvmpipe" + }, + "browserArgs": [], + "captureMethod": "device.screenshot", + "rendererKind": "webgpu", + "target": "desktop", + "viewport": { + "height": 400, + "width": 640 + } + }, + "diagnostics": [], + "state": { + "mode": "off", + "ready": true, + "builds": 1, + "disposedGraphs": 0, + "createdTargets": 0, + "releasedTargets": 0, + "releasedMaterials": 0, + "liveTargets": 0, + "scatteringOnly": false, + "textures": 5, + "settledRenderFrames": 4, + "stableTextureFrames": 4, + "targetWidth": 0, + "targetHeight": 0, + "targets": 0, + "pixels": 0, + "steps": 0, + "inside": false, + "sun": true, + "point": true, + "overlaps": false + } + }, + "fog": { + "file": "fog.png", + "sha256": "95e2d1a14559df4a6778916e3192d15127d59e4e83b9a76f433e7c829add464a", + "capture": { + "adapter": { + "architecture": "unknown", + "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", + "device": "llvmpipe (LLVM 20.1.2, 128 bits)", + "vendor": "llvmpipe" + }, + "browserArgs": [], + "captureMethod": "device.screenshot", + "rendererKind": "webgpu", + "target": "desktop", + "viewport": { + "height": 400, + "width": 640 + } + }, + "diagnostics": [], + "state": { + "mode": "fog", + "ready": true, + "builds": 2, + "disposedGraphs": 1, + "createdTargets": 1, + "releasedTargets": 0, + "releasedMaterials": 0, + "liveTargets": 1, + "scatteringOnly": false, + "textures": 10, + "settledRenderFrames": 3, + "stableTextureFrames": 3, + "targetWidth": 640, + "targetHeight": 400, + "targets": 1, + "pixels": 256000, + "steps": 48, + "inside": false, + "sun": true, + "point": true, + "overlaps": false + } + }, + "inside": { + "file": "inside.png", + "sha256": "1bec85d68b3bed2d79b8eeb7e3fd4f3aa4f64140f1e9e44165971c49b123c9bf", + "capture": { + "adapter": { + "architecture": "unknown", + "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", + "device": "llvmpipe (LLVM 20.1.2, 128 bits)", + "vendor": "llvmpipe" + }, + "browserArgs": [], + "captureMethod": "device.screenshot", + "rendererKind": "webgpu", + "target": "desktop", + "viewport": { + "height": 400, + "width": 640 + } + }, + "diagnostics": [], + "state": { + "mode": "inside", + "ready": true, + "builds": 2, + "disposedGraphs": 1, + "createdTargets": 1, + "releasedTargets": 0, + "releasedMaterials": 0, + "liveTargets": 1, + "scatteringOnly": false, + "textures": 10, + "settledRenderFrames": 3, + "stableTextureFrames": 3, + "targetWidth": 640, + "targetHeight": 400, + "targets": 1, + "pixels": 256000, + "steps": 48, + "inside": true, + "sun": true, + "point": true, + "overlaps": false + } + }, + "blackOff": { + "file": "blackOff.png", + "sha256": "b3d4f1282739ab51813d412fc278fe6ec8555ab44baaf68e145e4007ca4bc0ea", + "capture": { + "adapter": { + "architecture": "unknown", + "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", + "device": "llvmpipe (LLVM 20.1.2, 128 bits)", + "vendor": "llvmpipe" + }, + "browserArgs": [], + "captureMethod": "device.screenshot", + "rendererKind": "webgpu", + "target": "desktop", + "viewport": { + "height": 400, + "width": 640 + } + }, + "diagnostics": [], + "state": { + "mode": "blackOff", + "ready": true, + "builds": 2, + "disposedGraphs": 1, + "createdTargets": 0, + "releasedTargets": 0, + "releasedMaterials": 0, + "liveTargets": 0, + "scatteringOnly": true, + "textures": 5, + "settledRenderFrames": 3, + "stableTextureFrames": 3, + "targetWidth": 0, + "targetHeight": 0, + "targets": 0, + "pixels": 0, + "steps": 0, + "inside": false, + "sun": true, + "point": true, + "overlaps": false + } + }, + "scatter": { + "file": "scatter.png", + "sha256": "eca0f87d4e38a72c378753f62cdeaadbdc14901193b33716ebe64daef3e0be26", + "capture": { + "adapter": { + "architecture": "unknown", + "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", + "device": "llvmpipe (LLVM 20.1.2, 128 bits)", + "vendor": "llvmpipe" + }, + "browserArgs": [], + "captureMethod": "device.screenshot", + "rendererKind": "webgpu", + "target": "desktop", + "viewport": { + "height": 400, + "width": 640 + } + }, + "diagnostics": [], + "state": { + "mode": "scatter", + "ready": true, + "builds": 2, + "disposedGraphs": 1, + "createdTargets": 1, + "releasedTargets": 0, + "releasedMaterials": 0, + "liveTargets": 1, + "scatteringOnly": true, + "textures": 10, + "settledRenderFrames": 3, + "stableTextureFrames": 3, + "targetWidth": 640, + "targetHeight": 400, + "targets": 1, + "pixels": 256000, + "steps": 48, + "inside": false, + "sun": true, + "point": true, + "overlaps": false + } + }, + "scatterSunOff": { + "file": "scatterSunOff.png", + "sha256": "d1412a75a5612ff4653692c1c9314102124e135335f17ef0d4daff9857e4be49", + "capture": { + "adapter": { + "architecture": "unknown", + "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", + "device": "llvmpipe (LLVM 20.1.2, 128 bits)", + "vendor": "llvmpipe" + }, + "browserArgs": [], + "captureMethod": "device.screenshot", + "rendererKind": "webgpu", + "target": "desktop", + "viewport": { + "height": 400, + "width": 640 + } + }, + "diagnostics": [], + "state": { + "mode": "scatterSunOff", + "ready": true, + "builds": 2, + "disposedGraphs": 1, + "createdTargets": 1, + "releasedTargets": 0, + "releasedMaterials": 0, + "liveTargets": 1, + "scatteringOnly": true, + "textures": 10, + "settledRenderFrames": 3, + "stableTextureFrames": 3, + "targetWidth": 640, + "targetHeight": 400, + "targets": 1, + "pixels": 256000, + "steps": 48, + "inside": false, + "sun": false, + "point": true, + "overlaps": false + } + }, + "scatterPointOff": { + "file": "scatterPointOff.png", + "sha256": "5b272a565aa3eca8c45b4dea7671f3183d6f91c0f2cde2bf95ced43151b144dc", + "capture": { + "adapter": { + "architecture": "unknown", + "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", + "device": "llvmpipe (LLVM 20.1.2, 128 bits)", + "vendor": "llvmpipe" + }, + "browserArgs": [], + "captureMethod": "device.screenshot", + "rendererKind": "webgpu", + "target": "desktop", + "viewport": { + "height": 400, + "width": 640 + } + }, + "diagnostics": [], + "state": { + "mode": "scatterPointOff", + "ready": true, + "builds": 2, + "disposedGraphs": 1, + "createdTargets": 1, + "releasedTargets": 0, + "releasedMaterials": 0, + "liveTargets": 1, + "scatteringOnly": true, + "textures": 10, + "settledRenderFrames": 3, + "stableTextureFrames": 3, + "targetWidth": 640, + "targetHeight": 400, + "targets": 1, + "pixels": 256000, + "steps": 48, + "inside": false, + "sun": true, + "point": false, + "overlaps": false + } + } + }, + "sameSourceBrowser": { + "artifactId": 11225682361, + "artifactSha256": "5cc58198f77714817c43c486cf8b83d7b7e3ef23730e4010c1026b2918740c35", + "pass": true, + "cases": 17, + "results": [ + { + "mode": "off", + "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", + "pass": true, + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "resources": { + "textures": 5, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [], + "lights": { + "directional": { + "name": "fog-directional", + "type": "DirectionalLight", + "shadow": "ordinary-map" + }, + "point": { + "name": "fog-point", + "type": "PointLight", + "shadow": "none", + "range": 8 + } + } + }, + { + "mode": "zero", + "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", + "pass": true, + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "resources": { + "textures": 5, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [], + "lights": { + "directional": { + "name": "fog-directional", + "type": "DirectionalLight", + "shadow": "ordinary-map" + }, + "point": { + "name": "fog-point", + "type": "PointLight", + "shadow": "none", + "range": 8 + } + } + }, + { + "mode": "fog", + "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", + "pass": true, + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "resources": { + "textures": 10, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [], + "lights": { + "directional": { + "name": "fog-directional", + "type": "DirectionalLight", + "shadow": "ordinary-map" + }, + "point": { + "name": "fog-point", + "type": "PointLight", + "shadow": "none", + "range": 8 + } + } + }, + { + "mode": "inside", + "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", + "pass": true, + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "resources": { + "textures": 10, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [], + "lights": { + "directional": { + "name": "fog-directional", + "type": "DirectionalLight", + "shadow": "ordinary-map" + }, + "point": { + "name": "fog-point", + "type": "PointLight", + "shadow": "none", + "range": 8 + } + } + }, + { + "mode": "sunOff", + "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", + "pass": true, + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "resources": { + "textures": 10, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [], + "lights": { + "directional": { + "name": "fog-directional", + "type": "DirectionalLight", + "shadow": "ordinary-map" + }, + "point": { + "name": "fog-point", + "type": "PointLight", + "shadow": "none", + "range": 8 + } + } + }, + { + "mode": "pointOff", + "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", + "pass": true, + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "resources": { + "textures": 10, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [], + "lights": { + "directional": { + "name": "fog-directional", + "type": "DirectionalLight", + "shadow": "ordinary-map" + }, + "point": { + "name": "fog-point", + "type": "PointLight", + "shadow": "none", + "range": 8 + } + } + }, + { + "mode": "overlap", + "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", + "pass": true, + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "resources": { + "textures": 10, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [], + "lights": { + "directional": { + "name": "fog-directional", + "type": "DirectionalLight", + "shadow": "ordinary-map" + }, + "point": { + "name": "fog-point", + "type": "PointLight", + "shadow": "none", + "range": 8 + } + } + }, + { + "mode": "half", + "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", + "pass": true, + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "resources": { + "textures": 10, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [], + "lights": { + "directional": { + "name": "fog-directional", + "type": "DirectionalLight", + "shadow": "ordinary-map" + }, + "point": { + "name": "fog-point", + "type": "PointLight", + "shadow": "none", + "range": 8 + } + } + }, + { + "mode": "wallOff", + "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", + "pass": true, + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "resources": { + "textures": 10, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [], + "lights": { + "directional": { + "name": "fog-directional", + "type": "DirectionalLight", + "shadow": "ordinary-map" + }, + "point": { + "name": "fog-point", + "type": "PointLight", + "shadow": "none", + "range": 8 + } + } + }, + { + "mode": "blackOff", + "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", + "pass": true, + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "resources": { + "textures": 5, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [], + "lights": { + "directional": { + "name": "fog-directional", + "type": "DirectionalLight", + "shadow": "ordinary-map" + }, + "point": { + "name": "fog-point", + "type": "PointLight", + "shadow": "none", + "range": 8 + } + } + }, + { + "mode": "scatter", + "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", + "pass": true, + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "resources": { + "textures": 10, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [], + "lights": { + "directional": { + "name": "fog-directional", + "type": "DirectionalLight", + "shadow": "ordinary-map" + }, + "point": { + "name": "fog-point", + "type": "PointLight", + "shadow": "none", + "range": 8 + } + } + }, + { + "mode": "scatterSunOff", + "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", + "pass": true, + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "resources": { + "textures": 10, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [], + "lights": { + "directional": { + "name": "fog-directional", + "type": "DirectionalLight", + "shadow": "ordinary-map" + }, + "point": { + "name": "fog-point", + "type": "PointLight", + "shadow": "none", + "range": 8 + } + } + }, + { + "mode": "scatterPointOff", + "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", + "pass": true, + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "resources": { + "textures": 10, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [], + "lights": { + "directional": { + "name": "fog-directional", + "type": "DirectionalLight", + "shadow": "ordinary-map" + }, + "point": { + "name": "fog-point", + "type": "PointLight", + "shadow": "none", + "range": 8 + } + } + }, + { + "mode": "lifecycle", + "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", + "pass": true, + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "resources": { + "textures": 10, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [], + "lights": { + "directional": { + "name": "fog-directional", + "type": "DirectionalLight", + "shadow": "ordinary-map" + }, + "point": { + "name": "fog-point", + "type": "PointLight", + "shadow": "none", + "range": 8 + } + } + }, + { + "mode": "lifecycleOff", + "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", + "pass": true, + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "resources": { + "textures": 5, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [], + "lights": { + "directional": { + "name": "fog-directional", + "type": "DirectionalLight", + "shadow": "ordinary-map" + }, + "point": { + "name": "fog-point", + "type": "PointLight", + "shadow": "none", + "range": 8 + } + } + }, + { + "mode": "resizeSmall", + "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", + "pass": true, + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "resources": { + "textures": 10, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [], + "lights": { + "directional": { + "name": "fog-directional", + "type": "DirectionalLight", + "shadow": "ordinary-map" + }, + "point": { + "name": "fog-point", + "type": "PointLight", + "shadow": "none", + "range": 8 + } + } + }, + { + "mode": "resizeRestore", + "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", + "pass": true, + "capture": { + "adapter": { + "architecture": "swiftshader", + "vendor": "google", + "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", + "limit.maxBindGroups": "4", + "limit.maxTextureDimension2D": "8192", + "limit.maxStorageBufferBindingSize": "1073741824" + }, + "browserArgs": [ + "--ozone-platform=x11", + "--enable-unsafe-webgpu", + "--disable-gpu-sandbox", + "--ignore-gpu-blocklist", + "--enable-features=Vulkan" + ], + "captureMethod": "page.screenshot", + "rendererKind": "webgpu", + "target": "web", + "viewport": { + "height": 400, + "width": 640 + } + }, + "resources": { + "textures": 10, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "diagnostics": [], + "lights": { + "directional": { + "name": "fog-directional", + "type": "DirectionalLight", + "shadow": "ordinary-map" + }, + "point": { + "name": "fog-point", + "type": "PointLight", + "shadow": "none", + "range": 8 + } + } + }, + { + "assertion": "zero-density pixel identity", + "pass": true + }, + { + "assertion": "repeated lifecycle restores baseline pixels", + "pass": true + }, + { + "assertion": "renderer texture allocation baseline", + "baselineResources": { + "textures": 5, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "restoredResources": { + "textures": 5, + "settledRenderFrames": 3, + "stableTextureFrames": 3 + }, + "pass": true + }, + { + "assertion": "target/depth resize restores exact pixels", + "pass": true + }, + { + "assertion": "isolated light-scattering pixels", + "baselineMaxRgb": 0, + "wallMaxRgb": 0, + "roi": { + "x": 260, + "y": 155, + "width": 150, + "height": 90 + }, + "wallRoi": { + "x": 184, + "y": 216, + "width": 18, + "height": 18 + }, + "evaluationRoi": { + "x": 0, + "y": 0, + "width": 500, + "height": 400 + }, + "calibrationRoi": { + "x": 515, + "y": 25, + "width": 110, + "height": 110 + }, + "calibrationMinimum": 146, + "calibrationMaxDifference": 0, + "sun": { + "meanRgbDelta": 15.958518518518519, + "changedPixelRatio": 0.9933333333333333 + }, + "point": { + "meanRgbDelta": 48.77553086419753, + "changedPixelRatio": 1 + }, + "thresholds": { + "minMeanRgbDelta": 1, + "minChangedPixelRatio": 0.1, + "maxBlackRgb": 0, + "minCalibrationRgb": 32, + "maxCalibrationDifference": 0 + }, + "pass": true + } + ], + "qualification": "Google SwiftShader browser WebGPU software correctness; includes each intermediate graph rendering before replacement, full teardown and portable target/depth resize." + } +} diff --git a/docs/verification/vq07-progress/1f73e559c-native/scatter.png b/docs/verification/vq07-progress/1f73e559c-native/scatter.png new file mode 100644 index 0000000000000000000000000000000000000000..a5cd123ab052296707cee69c2dc8b0882194d703 GIT binary patch literal 63703 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 literal 0 HcmV?d00001 diff --git a/docs/verification/vq07-progress/1f73e559c-native/scatterPointOff.png b/docs/verification/vq07-progress/1f73e559c-native/scatterPointOff.png new file mode 100644 index 0000000000000000000000000000000000000000..f07fee174029fda24369f5545be67924469aa4a5 GIT binary patch literal 55848 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 Date: Fri, 2 Oct 2026 06:12:08 -0700 Subject: [PATCH 19/41] test(vq07): isolate native resize and enforce authored pixel guard --- .../workflows/integration-volumetric-fog.yml | 16 ++- .../PRD-VQ-07-volumetric-fog.md | 5 + .../1f73e559c-native/provenance.json | 97 ++++++++++++++++++- examples/abyss-framework/vq-fog/README.md | 4 +- scripts/__tests__/vq-fog-native-proof.spec.ts | 64 ++++++++++++ scripts/verify-volumetric-fog.ts | 84 +++++++++++++++- 6 files changed, 262 insertions(+), 8 deletions(-) diff --git a/.github/workflows/integration-volumetric-fog.yml b/.github/workflows/integration-volumetric-fog.yml index d8fc5f4d6b..b538b312c5 100644 --- a/.github/workflows/integration-volumetric-fog.yml +++ b/.github/workflows/integration-volumetric-fog.yml @@ -89,15 +89,29 @@ jobs: libvulkan1 mesa-vulkan-drivers vulkan-tools xvfb zlib1g-dev - name: Build the ordinary ARM desktop host run: pnpm --filter @threenative/runtime-native native:build + - name: Isolate native resize with no fog allocation + id: resize-control + # Preserve the original fog sequence even when this diagnostic reproduces the abort. + # The final step below still fails the job if this control fails. + continue-on-error: true + env: + VQ_FOG_RESIZE_CONTROL: '1' + THREENATIVE_RUNTIME_BINARY: ${{ github.workspace }}/packages/runtime-native/build/tn-linux/mystral + run: node --import tsx scripts/verify-volumetric-fog.ts - name: Run the same authored fog and pixel gates on the native host env: THREENATIVE_RUNTIME_BINARY: ${{ github.workspace }}/packages/runtime-native/build/tn-linux/mystral run: node --import tsx scripts/verify-volumetric-fog.ts + - name: Require the no-fog resize control + if: always() && steps.resize-control.outcome != 'success' + run: exit 1 - name: Retain native screenshots, host console and executable identities if: always() uses: actions/upload-artifact@v7 with: name: volumetric-fog-native-${{ github.event.pull_request.head.sha || github.sha }} - path: artifacts/volumetric-fog-native/ + path: | + artifacts/volumetric-fog-native/ + artifacts/volumetric-fog-native-resize-control/ retention-days: 30 if-no-files-found: warn diff --git a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md index 1cb3b83347..69bfc83fe1 100644 --- a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md +++ b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md @@ -135,3 +135,8 @@ Independent review passed for native-route source staged at tree `15da770ebf0915 Native progress and exact failure: [run 37005493900](https://github.com/ThreeNativeHQ/threenative/actions/runs/37005493900), source `1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7`, built the ordinary Linux ARM64 host and accepted all fifteen pre-resize arms with actual `device.screenshot`, named Mesa llvmpipe WebGPU adapter and empty runtime diagnostics: off, zero, fog, inside, sunOff, pointOff, overlap, half, wallOff, blackOff, scatter, scatterSunOff, scatterPointOff, lifecycle and lifecycleOff. Actual [native fog](../../verification/vq07-progress/1f73e559c-native/fog.png), [inside](../../verification/vq07-progress/1f73e559c-native/inside.png), [isolated scattering](../../verification/vq07-progress/1f73e559c-native/scatter.png) and [full provenance with unchanged controls](../../verification/vq07-progress/1f73e559c-native/provenance.json) are retained. Native artifact `11226555526` matches SHA256 `cc5cc8f973b8edc9f16a188f3ae68f1e0afb6b2f508ee4a392df222191587af5`. After download, the exact source's pinned pixel metric function passes these native controls: zero/off and final-off/off are identical, evaluation/wall RGB is zero, calibration difference is zero, directional mean delta is 15.9577/255 (changed ratio 0.99333), and point mean delta is 48.7721/255 (ratio 1.0). These cross-arm metrics were recomputed locally from real PNGs because the hosted script stopped before its final metric phase. Native lifecycle observed 4 created / 3 target and material releases / 1 live target, then 4 releases / 0 live targets, textures back to 5 after at least three actual stable render intervals. The native gate is **failed**, not complete: `resizeSmall/report.json` records `TN_PLAYTEST_HOST_EXITED`, `wgpuSurfaceGetCurrentTexture` validation **“Surface image is already acquired”**, then SIGABRT. No resize screenshot or console.json was produced. The verifier's subsequent console-file read raised ENOENT and obscured this primary report in the job log; neither is waived. Native resize/restore remains unverified and the native phase/acceptance boxes remain open. The same exact source's browser job passed all 17 cases and all identity/scattering/resource/resize metrics, artifact `11225682361` SHA256 `5cc58198f77714817c43c486cf8b83d7b7e3ef23730e4010c1026b2918740c35`. This includes labeled render settling after every intermediate lifecycle graph. Available native console logs contain no `TN_FRAME_BUDGET`/`TN_HOST_GAP` windows; no per-frame fog cost is claimed from pipeline-creation timings. + + +Whole-feature review identified three corrections and remaining qualification: sunlight outside the ordinary directional shadow map must follow pinned Three's unshadowed convention; native captures must retain the authored 5% nonblank predicate; and primary failed-host reports must be surfaced before optional console artifacts are read. It also requires camera/occluder changes on the retained controller, actual scene exit/re-entry, and same-fixture per-frame cost from the maintained frame-budget meter. These remain actionable work, without widening phone/local-shadow scope or claiming full acceptance. + +The next diagnostic slice changes only proof tooling: native PNGs now run the existing playtest `regionMetrics` against the frozen 5% whole-frame minimum, and a failed report surfaces its primary diagnostic before console-file access. All fifteen original native PNGs were independently rechecked and pass (minimum 0.05625); per-image values are added to the existing native provenance. A separate no-fog control keeps the same geometry, renderer, authored key-driven resize and observed-render waits, asserting zero fog controller/target allocations. The unchanged original17-case sequence still runs, and the workflow requires both invocations. This isolates native surface lifetime from fog integration before any C++ runtime change. New verifier/control tests were red-green and strict types pass; actual control execution is pending. The outside-shadow-map shader correction is not included in this diagnostic slice. diff --git a/docs/verification/vq07-progress/1f73e559c-native/provenance.json b/docs/verification/vq07-progress/1f73e559c-native/provenance.json index 6a48d34901..c28a77d825 100644 --- a/docs/verification/vq07-progress/1f73e559c-native/provenance.json +++ b/docs/verification/vq07-progress/1f73e559c-native/provenance.json @@ -675,7 +675,7 @@ "fix": { "instruction": "Inspect the named host output for the first native or JavaScript error; rerun the same scenario after fixing it." }, - "message": "Device mailbox operation '20' exceeded 120000ms.; the host process has exited \u2014 last host output: Error in wgpuSurfaceGetCurrentTexture: Validation Error | Caused by: | Surface image is already acquired | note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace | fatal runtime error: failed to initiate panic, error 3656715680, aborting | [Mystral] Caught signal SIGABRT, exiting gracefully", + "message": "Device mailbox operation '20' exceeded 120000ms.; the host process has exited — last host output: Error in wgpuSurfaceGetCurrentTexture: Validation Error | Caused by: | Surface image is already acquired | note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace | fatal runtime error: failed to initiate panic, error 3656715680, aborting | [Mystral] Caught signal SIGABRT, exiting gracefully", "severity": "error", "suggestion": "Inspect the named host output for the first native or JavaScript error; rerun the same scenario after fixing it." } @@ -1891,5 +1891,100 @@ } ], "qualification": "Google SwiftShader browser WebGPU software correctness; includes each intermediate graph rendering before replacement, full teardown and portable target/depth resize." + }, + "authoredNonblankRevalidation": { + "method": "Existing playtest regionMetrics on decoded original native PNGs, full frame, luminance >0.01, alpha >0, frozen minimum0.05; independently recomputed after whole-feature review.", + "images": { + "off": { + "darkPixelRatio": 0.67553515625, + "nonblankPixelRatio": 0.99937109375, + "minimum": 0.05, + "pass": true + }, + "zero": { + "darkPixelRatio": 0.67553515625, + "nonblankPixelRatio": 0.99937109375, + "minimum": 0.05, + "pass": true + }, + "fog": { + "darkPixelRatio": 0.62978515625, + "nonblankPixelRatio": 0.99998828125, + "minimum": 0.05, + "pass": true + }, + "inside": { + "darkPixelRatio": 0.17884765625, + "nonblankPixelRatio": 1, + "minimum": 0.05, + "pass": true + }, + "sunOff": { + "darkPixelRatio": 0.92972265625, + "nonblankPixelRatio": 0.999984375, + "minimum": 0.05, + "pass": true + }, + "pointOff": { + "darkPixelRatio": 0.65212890625, + "nonblankPixelRatio": 0.99893359375, + "minimum": 0.05, + "pass": true + }, + "overlap": { + "darkPixelRatio": 0.62975, + "nonblankPixelRatio": 0.99998828125, + "minimum": 0.05, + "pass": true + }, + "half": { + "darkPixelRatio": 0.6297734375, + "nonblankPixelRatio": 0.9999921875, + "minimum": 0.05, + "pass": true + }, + "wallOff": { + "darkPixelRatio": 0.62996484375, + "nonblankPixelRatio": 0.99998828125, + "minimum": 0.05, + "pass": true + }, + "blackOff": { + "darkPixelRatio": 0.94375, + "nonblankPixelRatio": 0.05625, + "minimum": 0.05, + "pass": true + }, + "scatter": { + "darkPixelRatio": 0.86383203125, + "nonblankPixelRatio": 0.23834375, + "minimum": 0.05, + "pass": true + }, + "scatterSunOff": { + "darkPixelRatio": 0.88630078125, + "nonblankPixelRatio": 0.236296875, + "minimum": 0.05, + "pass": true + }, + "scatterPointOff": { + "darkPixelRatio": 0.9053125, + "nonblankPixelRatio": 0.23907421875, + "minimum": 0.05, + "pass": true + }, + "lifecycle": { + "darkPixelRatio": 0.62978515625, + "nonblankPixelRatio": 0.99998828125, + "minimum": 0.05, + "pass": true + }, + "lifecycleOff": { + "darkPixelRatio": 0.67553515625, + "nonblankPixelRatio": 0.99937109375, + "minimum": 0.05, + "pass": true + } + } } } diff --git a/examples/abyss-framework/vq-fog/README.md b/examples/abyss-framework/vq-fog/README.md index 919a470593..17b9b5c820 100644 --- a/examples/abyss-framework/vq-fog/README.md +++ b/examples/abyss-framework/vq-fog/README.md @@ -40,7 +40,7 @@ pnpm parity --project examples/abyss-framework/vq-fog --target desktop The reusable repeated-lifecycle scenario is `../playtests/vq-volumetric-fog.playtest.json`. Portable target/depth resize scenarios retain the same fog controller and require exact restored pixels. Allocation comparisons require unchanged texture counts over at least three observed completed render frames, not just elapsed time. These do not establish operating-system window resize behavior. -Native execution and screenshot proof remain unverified until the host runs it; browser captures do not establish native support or hardware performance. +Native run37005493900 rendered fifteen pre-resize arms on the actual ARM64 host with Mesa llvmpipe. Fog, inside/outside, isolated-light controls and teardown passed; resizeSmall aborted with “Surface image is already acquired”. Native resize/restore and full qualification remain open. The PRD retains the original PNGs, executable identities and failure report. Browser captures do not establish native support or hardware performance. The same verifier can use an already-built Linux desktop host: @@ -49,4 +49,4 @@ The same verifier can use an already-built Linux desktop host: THREENATIVE_RUNTIME_BINARY=/absolute/path/to/mystral node --import tsx scripts/verify-volumetric-fog.ts ``` -It bundles the same `src/game.ts`, uses the public desktop mailbox runner, and retains host/game hashes plus native screenshots under `artifacts/volumetric-fog-native/`. Native scenarios use resources/startup; unsupported browser diagnostics/visual assertion families are replaced by mandatory native host-console/readiness/provenance checks and the same external pixel gates. Native `renderer.setSize` changes the backing surface, so the small-target PNG is 320×240; the restored PNG remains 640×400. The integration workflow's native job reuses the normal ARM Linux host setup after browser proof passes. Native execution is still pending; a bundle build alone does not qualify it. +It bundles the same `src/game.ts`, uses the public desktop mailbox runner, and retains host/game hashes plus native screenshots under `artifacts/volumetric-fog-native/`. Native scenarios use resources/startup; unsupported browser diagnostics/visual assertion families are replaced by mandatory native host-console/readiness/provenance checks and the same external pixel gates. Native `renderer.setSize` changes the backing surface, so the small-target PNG is 320×240; the restored PNG remains 640×400. The integration workflow's native job reuses the normal ARM Linux host setup after browser proof passes. A separate `VQ_FOG_RESIZE_CONTROL=1` invocation isolates the same renderer/scene resize path with fog off and requires zero fog allocations. It writes `artifacts/volumetric-fog-native-resize-control/`. Both the diagnostic control and the unchanged original sequence are required by the native workflow. The external native guard now applies the same authored 5% whole-frame nonblank threshold using the existing playtest pixel metric; the native runner’s generic dark-frame exemption does not replace that assertion. diff --git a/scripts/__tests__/vq-fog-native-proof.spec.ts b/scripts/__tests__/vq-fog-native-proof.spec.ts index 78e404cb06..3fba96fed4 100644 --- a/scripts/__tests__/vq-fog-native-proof.spec.ts +++ b/scripts/__tests__/vq-fog-native-proof.spec.ts @@ -1,4 +1,6 @@ +import { PNG } from "pngjs"; import { expect, it } from "vitest"; +import { assertCaptureNotBlank } from "../../packages/playtest/dist/capture.js"; import { ANDROID_TRANSPORT_CAPABILITIES, type IBridgeTransport, @@ -10,10 +12,72 @@ import { validatePlaytestScenario } from "../../packages/playtest/src/scenario.j import { fogCaptureScenarios, fogNativeCaptureIsValid, + fogNativePixelMetrics, + fogResizeControlScenarios, nativeFogScenario, + readFogNativeConsole, } from "../verify-volumetric-fog.js"; const consoleEvidence = [{ type: "log", text: "TN_NATIVE_SMOKE_FIRST_FRAME" }]; +it("rejects a native frame below the authored five-percent nonblank threshold", () => { + // Verifier-only synthetic input, never screenshot evidence. The native generic dark-frame + // exemption accepts this image, but the authored fog scenario requires five percent. + const png = new PNG({ width: 640, height: 400 }); + for (let pixel = 0; pixel < 640 * 400; pixel += 1) png.data[pixel * 4 + 3] = 255; + for (let pixel = 0; pixel < 10000; pixel += 1) + for (let channel = 0; channel < 3; channel += 1) + png.data[pixel * 4 + channel] = 32 + (pixel % 96); + expect(() => assertCaptureNotBlank(PNG.sync.write(png), "synthetic unit input")).not.toThrow(); + expect(fogNativePixelMetrics(png).nonblankPixelRatio).toBe(0.0390625); + expect(fogNativePixelMetrics(png).pass).toBe(false); + for (let pixel = 10000; pixel < 12800; pixel += 1) + for (let channel = 0; channel < 3; channel += 1) png.data[pixel * 4 + channel] = 128; + expect(fogNativePixelMetrics(png).pass).toBe(true); +}); +it("surfaces the primary host failure before trying a missing console file", async () => { + await expect( + readFogNativeConsole( + { + ...report(), + pass: false, + diagnostics: [ + { + code: "TN_PLAYTEST_HOST_EXITED", + severity: "error", + message: "Surface image is already acquired; SIGABRT", + }, + ], + }, + "/does-not-exist/vq07/console.json", + ), + ).rejects.toThrow(/TN_PLAYTEST_HOST_EXITED.*Surface image is already acquired/u); +}); +it("isolates native resize with fog off while preserving the original fog sequence", async () => { + const original = await fogCaptureScenarios(); + const controls = fogResizeControlScenarios(); + expect(controls.map(({ mode }) => mode)).toEqual(["resizeOff", "resizeOffRestore"]); + for (const { scenario, mode } of controls) { + expect(validatePlaytestScenario(scenario, mode)).toBeDefined(); + expect(scenario.steps[0]).toMatchObject({ press: ["KeyO"] }); + expect(scenario.steps.some((step) => "press" in step && step.press?.includes("KeyF"))).toBe( + false, + ); + expect(scenario.steps.some((step) => "press" in step && step.press?.includes("KeyR"))).toBe( + true, + ); + for (const component of ["createdTargets", "releasedTargets", "liveTargets"]) + expect(scenario.assert?.components).toContainEqual( + expect.objectContaining({ component, equals: 0 }), + ); + } + expect( + controls[1]?.scenario.steps.some((step) => "press" in step && step.press?.includes("KeyT")), + ).toBe(true); + expect(original).toHaveLength(17); + expect(original.find(({ mode }) => mode === "resizeSmall")?.scenario.steps[0]).toMatchObject({ + press: ["KeyF"], + }); +}); function report(): Parameters[0] { return { pass: true, diff --git a/scripts/verify-volumetric-fog.ts b/scripts/verify-volumetric-fog.ts index 6f1a4f1040..9141e7fc50 100644 --- a/scripts/verify-volumetric-fog.ts +++ b/scripts/verify-volumetric-fog.ts @@ -5,6 +5,7 @@ import path from "node:path"; import { fileURLToPath } from "node:url"; import { PNG } from "pngjs"; import { type IPlaytestScenario, loadPlaytestScenario } from "../packages/playtest/dist/index.js"; +import { regionMetrics } from "../packages/playtest/src/runner/steps.js"; // Use the built public runner: source-runner browser callbacks under tsx may capture __name. import { type IStandalonePlaytestReport, @@ -180,6 +181,48 @@ export async function fogCaptureScenarios() { return result; } +// A one-variable diagnostic: retain this fixture's geometry, renderer and resize path, +// while never creating a fog controller. The ordinary 17-case acceptance sequence is separate. +export function fogResizeControlScenarios() { + return ["resizeOff", "resizeOffRestore"].map((mode) => { + const scenario = fogCaptureScenario("off", "KeyO"); + scenario.name = `vq-volumetric-fog-${mode}`; + for (const key of mode === "resizeOff" ? ["KeyR"] : ["KeyR", "KeyT"]) + scenario.steps.push( + { press: [key], holdTicks: 1, release: true }, + { kind: "wait", waitFrames: 60, release: true }, + textureBoundary, + ); + scenario.assert?.components?.push( + ...["createdTargets", "releasedTargets", "liveTargets"].map((component) => ({ + entity: "fog", + component, + equals: 0, + allowTrivial: "The resize control must never allocate a fog controller or target.", + })), + ); + return { mode, scenario }; + }); +} + +export function fogNativePixelMetrics(png: PNG) { + const metrics = regionMetrics(png, { x: 0, y: 0, width: png.width, height: png.height }); + return { ...metrics, minimum: 0.05, pass: metrics.nonblankPixelRatio >= 0.05 }; +} + +export async function readFogNativeConsole( + report: Pick, + consolePath: string, + viewport = { width: 640, height: 400 }, +): Promise { + // Failed hosts can exit before writing console.json. Preserve their actual diagnostic. + if (!fogCaptureIsValid(report, viewport)) + throw new Error( + `VQ07 native capture failed: ${report.diagnostics.map(({ code, message }) => `${code}: ${message}`).join("; ") || "invalid capture report"}`, + ); + return JSON.parse(await readFile(consolePath, "utf8")); +} + export function fogTextureBaselineMatches( baseline: Record, restored: Record, @@ -379,10 +422,17 @@ export function fogNativeCaptureIsValid( async function main(): Promise { const nativeRuntime = process.env.THREENATIVE_RUNTIME_BINARY; + const resizeControl = process.env.VQ_FOG_RESIZE_CONTROL === "1"; + if (resizeControl && nativeRuntime === undefined) + throw new Error("The native resize control requires the actual desktop host."); const artifacts = path.join( root, "artifacts", - nativeRuntime === undefined ? "volumetric-fog" : "volumetric-fog-native", + resizeControl + ? "volumetric-fog-native-resize-control" + : nativeRuntime === undefined + ? "volumetric-fog" + : "volumetric-fog-native", ); const nativeBundle = path.join(artifacts, "fog-native.js"); const hash = async (file: string) => @@ -404,6 +454,7 @@ async function main(): Promise { const summary = { sourceSha, pass: false, + resizeControl, executionHost: { platform: process.platform, architecture: process.arch }, nativeArtifacts: undefined as { runtimeSha256: string; bundleSha256: string } | undefined, qualification: @@ -443,13 +494,17 @@ async function main(): Promise { bundleSha256: await hash(nativeBundle), }; } - for (const { mode, scenario: authored } of await fogCaptureScenarios()) { + for (const { mode, scenario: authored } of resizeControl + ? fogResizeControlScenarios() + : await fogCaptureScenarios()) { const scenario = nativeRuntime === undefined ? authored : nativeFogScenario( authored, - mode === "resizeSmall" ? { width: 320, height: 240 } : authored.viewport, + mode === "resizeSmall" || mode === "resizeOff" + ? { width: 320, height: 240 } + : authored.viewport, ); const directory = path.join(artifacts, mode); await mkdir(directory, { recursive: true }); @@ -499,7 +554,11 @@ async function main(): Promise { const nativeConsole = nativeRuntime === undefined ? undefined - : JSON.parse(await readFile(path.join(directory, "console.json"), "utf8")); + : await readFogNativeConsole( + report, + path.join(directory, "console.json"), + scenario.viewport, + ); const valid = nativeRuntime === undefined ? fogCaptureIsValid(report) @@ -541,6 +600,23 @@ async function main(): Promise { throw new Error( `VQ07 ${mode}: actual screenshot dimensions do not match the declared capture viewport.`, ); + if (nativeRuntime !== undefined) { + const metrics = fogNativePixelMetrics(png); + results.push({ assertion: `${mode} authored whole-frame nonblank ratio`, ...metrics }); + if (!metrics.pass) + throw new Error( + `VQ07 ${mode}: native pixels fail the authored five-percent nonblank gate.`, + ); + } + } + if (resizeControl) { + if ( + (await hash(nativeRuntime!)) !== summary.nativeArtifacts?.runtimeSha256 || + (await hash(nativeBundle)) !== summary.nativeArtifacts?.bundleSha256 + ) + throw new Error("VQ07 native executable or game bundle changed during resize control."); + summary.pass = true; + return; } const off = PNG.sync.read(await readFile(path.join(artifacts, "off/after.png"))); const zero = PNG.sync.read(await readFile(path.join(artifacts, "zero/after.png"))); From ff59e2489367aa9808e2c288348f213299df397e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Paulo=20Furtado?= <30300459+jonit-dev@users.noreply.github.com> Date: Fri, 2 Oct 2026 07:18:19 -0700 Subject: [PATCH 20/41] fix(native): accept usable suboptimal surface acquisitions Keep rejected or null acquisitions as failures and release rejected returned textures. Add pinned-backend status contracts to native execution and hosted fog resize qualification. Retain minimized public diagnostic provenance. --- .../workflows/integration-volumetric-fog.yml | 7 + .../PRD-VQ-07-volumetric-fog.md | 10 + .../1f73e559c-native/provenance.json | 2077 ++--------------- packages/runtime-native/CMakeLists.txt | 6 + packages/runtime-native/build-matrix.json | 2 + .../runtime-native/docs/G1-desktop-host.md | 10 + .../include/mystral/webgpu_compat.h | 9 +- .../scripts/verify-native-contracts.mjs | 3 + .../src/webgpu/bindings_presentation.cpp | 7 +- .../tests/native-contract-lane.test.mjs | 6 +- .../tests/surface_texture_status_test.cpp | 36 + 11 files changed, 260 insertions(+), 1913 deletions(-) create mode 100644 packages/runtime-native/tests/surface_texture_status_test.cpp diff --git a/.github/workflows/integration-volumetric-fog.yml b/.github/workflows/integration-volumetric-fog.yml index b538b312c5..d6909c00fc 100644 --- a/.github/workflows/integration-volumetric-fog.yml +++ b/.github/workflows/integration-volumetric-fog.yml @@ -11,6 +11,9 @@ on: - 'examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json' - 'scripts/verify-volumetric-fog.ts' - 'scripts/__tests__/vq-fog-native-proof.spec.ts' + - 'packages/runtime-native/include/mystral/webgpu_compat.h' + - 'packages/runtime-native/src/webgpu/bindings_presentation.cpp' + - 'packages/runtime-native/tests/surface_texture_status_test.cpp' - '.github/workflows/integration-volumetric-fog.yml' permissions: contents: read @@ -89,6 +92,10 @@ jobs: libvulkan1 mesa-vulkan-drivers vulkan-tools xvfb zlib1g-dev - name: Build the ordinary ARM desktop host run: pnpm --filter @threenative/runtime-native native:build + - name: Verify the compiled surface acquisition status contract + run: | + cmake --build packages/runtime-native/build/tn-linux --target threenative-surface-texture-status-test --parallel 2 + packages/runtime-native/build/tn-linux/threenative-surface-texture-status-test - name: Isolate native resize with no fog allocation id: resize-control # Preserve the original fog sequence even when this diagnostic reproduces the abort. diff --git a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md index 69bfc83fe1..b1d7d7af3d 100644 --- a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md +++ b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md @@ -140,3 +140,13 @@ The native gate is **failed**, not complete: `resizeSmall/report.json` records ` Whole-feature review identified three corrections and remaining qualification: sunlight outside the ordinary directional shadow map must follow pinned Three's unshadowed convention; native captures must retain the authored 5% nonblank predicate; and primary failed-host reports must be surfaced before optional console artifacts are read. It also requires camera/occluder changes on the retained controller, actual scene exit/re-entry, and same-fixture per-frame cost from the maintained frame-budget meter. These remain actionable work, without widening phone/local-shadow scope or claiming full acceptance. The next diagnostic slice changes only proof tooling: native PNGs now run the existing playtest `regionMetrics` against the frozen 5% whole-frame minimum, and a failed report surfaces its primary diagnostic before console-file access. All fifteen original native PNGs were independently rechecked and pass (minimum 0.05625); per-image values are added to the existing native provenance. A separate no-fog control keeps the same geometry, renderer, authored key-driven resize and observed-render waits, asserting zero fog controller/target allocations. The unchanged original17-case sequence still runs, and the workflow requires both invocations. This isolates native surface lifetime from fog integration before any C++ runtime change. New verifier/control tests were red-green and strict types pass; actual control execution is pending. The outside-shadow-map shader correction is not included in this diagnostic slice. + + +Native resize isolation: [run 37011447056](https://github.com/ThreeNativeHQ/threenative/actions/runs/37011447056), exact checkout/build `7f710b7d3af5e2da18017e4a0f707d4217ddf85d`, failed both native resize invocations while browser17 cases passed. Artifact `11227694772` SHA256 `8ae66c5a60cba94b1d2b96c771ee2f3f7dbb98472b95ea980a067c83976da2f2` is verified. The original15 native captures again passed, including the restored5% guard; original fog resize again aborted with “Surface image is already acquired”. The no-fog control produced zero PNGs: its retained `resizeOff/console.json` first error is `TN_SURFACE_ACQUIRE_FAILED` status2, then “Failed to get current texture” and cascading unfinished-object errors. Its normalized continue-on-error step conclusion initially appeared successful, but its retained summary is false and the mandatory final workflow guard correctly failed. No control success is claimed. Both invocations built package0.3.4 from the named checkout and used runtime SHA256 `da16138cc37938a14ce6831476aa58972a0d469ba2172b6a06faf6d1d56c6042`, bundle SHA256 `d2be9b3d0efa3247ff63c772421f75b77e8ea1fd9b271c4791ec7934f88c3e86`, identical to the earlier native run. + +The compatibility header, presentation/resources/canvas bindings and dependency provisioner were compared byte-for-byte against current develop `924b92f825d602485ef4e682f434b4757a825cd7`; all five are identical before this repair. This is a current native-host defect, not an older prebuilt. Pinned [wgpu-native25 acquisition](https://github.com/gfx-rs/wgpu-native/blob/v25.0.2.2/src/lib.rs#L3681) returns a real texture for SuccessSuboptimal (status2), but the existing helper accepts only SuccessOptimal and drops that result without adopting its lifetime. The proposed narrow repair admits both modern success statuses; timeout/outdated/lost/error remain rejected and the legacy single-success branch remains unchanged. A native C++ test using the production helper and the exact upstream header pin `bac520839ff5ed2e2b648ed540bd9ec45edbccbc` failed on Suboptimal first and now passes. All successful acquisitions retain the existing presentation-owned release path; no frame error is suppressed or extra present added. A repaired-host rerun of both original and no-fog sequences is still required before attributing resolution of the fog SIGABRT or claiming native resize qualification. + + +The acquisition ownership audit also makes the ordinary get-current-swapchain path explicitly require a non-null returned texture. A non-null rejected result is released before the existing failure marker; null remains failure. Successful images continue through the existing presentation owner and are released there. The status test additionally rejects OutOfMemory and DeviceLost. Its CMake target is registered in the normal and coverage build matrices and is required before both hosted resize invocations. Local C++ status-contract red/green, focused native/verifier/build-matrix tests33/33 and native source-list validation pass. Full repaired-host execution and independent native review are pending; no runtime pass is inferred from these checks. + +Native review corrections: the C++ regression now guards wgpu-only OutOfMemory/DeviceLost enums separately from pinned Dawn, and the new target is registered with its required pass marker in the actual native execution-contract table (46 declared targets). Both official backend-header compilations and executions pass; both binaries also pass the real execution lane marker check. The actual complete registration validator passes, build-matrix/coverage tests pass 15/15, and native-contract tests pass 8/9 with the unrelated CMake-dependent webtransport test blocked by the missing local CMake executable. The ordinary acquisition status/ownership change is otherwise unchanged. Independent review and the actual rebuilt-host original/no-fog sequences remain pending. diff --git a/docs/verification/vq07-progress/1f73e559c-native/provenance.json b/docs/verification/vq07-progress/1f73e559c-native/provenance.json index c28a77d825..177d16d582 100644 --- a/docs/verification/vq07-progress/1f73e559c-native/provenance.json +++ b/docs/verification/vq07-progress/1f73e559c-native/provenance.json @@ -1,621 +1,131 @@ { + "repository": "ThreeNativeHQ/threenative", "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", "pass": false, - "executionHost": { - "platform": "linux", - "architecture": "arm64" - }, - "nativeArtifacts": { - "runtimeSha256": "da16138cc37938a14ce6831476aa58972a0d469ba2172b6a06faf6d1d56c6042", - "bundleSha256": "d2be9b3d0efa3247ff63c772421f75b77e8ea1fd9b271c4791ec7934f88c3e86" - }, - "qualification": "Partial Linux ARM64 native-host software-rendered correctness on Mesa llvmpipe. Fifteen captures passed strict per-arm native guards; native resize aborted the host and the full native gate failed. No completed native resize or hardware-performance claim.", + "qualification": "Software WebGPU correctness only. Fifteen native arms passed; resize failed. No hardware performance or complete native acceptance claim.", "runId": 37005493900, "runUrl": "https://github.com/ThreeNativeHQ/threenative/actions/runs/37005493900", "artifactId": 11226555526, "artifactSha256": "cc5cc8f973b8edc9f16a188f3ae68f1e0afb6b2f508ee4a392df222191587af5", + "nativeBuild": { + "runtimeSha256": "da16138cc37938a14ce6831476aa58972a0d469ba2172b6a06faf6d1d56c6042", + "bundleSha256": "d2be9b3d0efa3247ff63c772421f75b77e8ea1fd9b271c4791ec7934f88c3e86", + "buildSourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", + "packageVersion": "0.3.4", + "wgpuNativeVersion": "25.0.2.2" + }, + "capture": { + "adapter": "llvmpipe (LLVM 20.1.2, 128 bits); Mesa 25.2.8-0ubuntu0.24.04.3", + "rendererKind": "webgpu", + "captureMethod": "device.screenshot", + "target": "desktop", + "viewport": { + "width": 640, + "height": 400 + } + }, "acceptedArms": [ - { - "mode": "off", - "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", - "pass": true, - "capture": { - "adapter": { - "architecture": "unknown", - "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", - "device": "llvmpipe (LLVM 20.1.2, 128 bits)", - "vendor": "llvmpipe" - }, - "browserArgs": [], - "captureMethod": "device.screenshot", - "rendererKind": "webgpu", - "target": "desktop", - "viewport": { - "height": 400, - "width": 640 - } - }, - "resources": { - "textures": 5, - "settledRenderFrames": 4, - "stableTextureFrames": 4 - }, - "diagnostics": [], - "lights": { - "directional": { - "name": "fog-directional", - "type": "DirectionalLight", - "shadow": "ordinary-map" - }, - "point": { - "name": "fog-point", - "type": "PointLight", - "shadow": "none", - "range": 8 - } - } - }, - { - "mode": "zero", - "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", - "pass": true, - "capture": { - "adapter": { - "architecture": "unknown", - "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", - "device": "llvmpipe (LLVM 20.1.2, 128 bits)", - "vendor": "llvmpipe" - }, - "browserArgs": [], - "captureMethod": "device.screenshot", - "rendererKind": "webgpu", - "target": "desktop", - "viewport": { - "height": 400, - "width": 640 - } - }, - "resources": { - "textures": 5, - "settledRenderFrames": 3, - "stableTextureFrames": 3 - }, - "diagnostics": [], - "lights": { - "directional": { - "name": "fog-directional", - "type": "DirectionalLight", - "shadow": "ordinary-map" - }, - "point": { - "name": "fog-point", - "type": "PointLight", - "shadow": "none", - "range": 8 - } - } - }, - { - "mode": "fog", - "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", - "pass": true, - "capture": { - "adapter": { - "architecture": "unknown", - "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", - "device": "llvmpipe (LLVM 20.1.2, 128 bits)", - "vendor": "llvmpipe" - }, - "browserArgs": [], - "captureMethod": "device.screenshot", - "rendererKind": "webgpu", - "target": "desktop", - "viewport": { - "height": 400, - "width": 640 - } - }, - "resources": { - "textures": 10, - "settledRenderFrames": 3, - "stableTextureFrames": 3 - }, - "diagnostics": [], - "lights": { - "directional": { - "name": "fog-directional", - "type": "DirectionalLight", - "shadow": "ordinary-map" - }, - "point": { - "name": "fog-point", - "type": "PointLight", - "shadow": "none", - "range": 8 - } - } - }, - { - "mode": "inside", - "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", - "pass": true, - "capture": { - "adapter": { - "architecture": "unknown", - "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", - "device": "llvmpipe (LLVM 20.1.2, 128 bits)", - "vendor": "llvmpipe" - }, - "browserArgs": [], - "captureMethod": "device.screenshot", - "rendererKind": "webgpu", - "target": "desktop", - "viewport": { - "height": 400, - "width": 640 - } - }, - "resources": { - "textures": 10, - "settledRenderFrames": 3, - "stableTextureFrames": 3 - }, - "diagnostics": [], - "lights": { - "directional": { - "name": "fog-directional", - "type": "DirectionalLight", - "shadow": "ordinary-map" - }, - "point": { - "name": "fog-point", - "type": "PointLight", - "shadow": "none", - "range": 8 - } - } - }, - { - "mode": "sunOff", - "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", - "pass": true, - "capture": { - "adapter": { - "architecture": "unknown", - "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", - "device": "llvmpipe (LLVM 20.1.2, 128 bits)", - "vendor": "llvmpipe" - }, - "browserArgs": [], - "captureMethod": "device.screenshot", - "rendererKind": "webgpu", - "target": "desktop", - "viewport": { - "height": 400, - "width": 640 - } - }, - "resources": { - "textures": 10, - "settledRenderFrames": 3, - "stableTextureFrames": 3 - }, - "diagnostics": [], - "lights": { - "directional": { - "name": "fog-directional", - "type": "DirectionalLight", - "shadow": "ordinary-map" - }, - "point": { - "name": "fog-point", - "type": "PointLight", - "shadow": "none", - "range": 8 - } - } - }, - { - "mode": "pointOff", - "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", - "pass": true, - "capture": { - "adapter": { - "architecture": "unknown", - "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", - "device": "llvmpipe (LLVM 20.1.2, 128 bits)", - "vendor": "llvmpipe" - }, - "browserArgs": [], - "captureMethod": "device.screenshot", - "rendererKind": "webgpu", - "target": "desktop", - "viewport": { - "height": 400, - "width": 640 - } - }, - "resources": { - "textures": 10, - "settledRenderFrames": 3, - "stableTextureFrames": 3 - }, - "diagnostics": [], - "lights": { - "directional": { - "name": "fog-directional", - "type": "DirectionalLight", - "shadow": "ordinary-map" - }, - "point": { - "name": "fog-point", - "type": "PointLight", - "shadow": "none", - "range": 8 - } - } + "off", + "zero", + "fog", + "inside", + "sunOff", + "pointOff", + "overlap", + "half", + "wallOff", + "blackOff", + "scatter", + "scatterSunOff", + "scatterPointOff", + "lifecycle", + "lifecycleOff" + ], + "images": { + "off": { + "sha256": "340699e0cb4c8740fd083df7b0ed1484e3364efae2b6ce17f0e117f1e73e9d15", + "nonblankPixelRatio": 0.99937109375, + "passesMinimum005": true, + "file": "off.png" }, - { - "mode": "overlap", - "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", - "pass": true, - "capture": { - "adapter": { - "architecture": "unknown", - "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", - "device": "llvmpipe (LLVM 20.1.2, 128 bits)", - "vendor": "llvmpipe" - }, - "browserArgs": [], - "captureMethod": "device.screenshot", - "rendererKind": "webgpu", - "target": "desktop", - "viewport": { - "height": 400, - "width": 640 - } - }, - "resources": { - "textures": 10, - "settledRenderFrames": 3, - "stableTextureFrames": 3 - }, - "diagnostics": [], - "lights": { - "directional": { - "name": "fog-directional", - "type": "DirectionalLight", - "shadow": "ordinary-map" - }, - "point": { - "name": "fog-point", - "type": "PointLight", - "shadow": "none", - "range": 8 - } - } + "zero": { + "sha256": "340699e0cb4c8740fd083df7b0ed1484e3364efae2b6ce17f0e117f1e73e9d15", + "nonblankPixelRatio": 0.99937109375, + "passesMinimum005": true }, - { - "mode": "half", - "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", - "pass": true, - "capture": { - "adapter": { - "architecture": "unknown", - "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", - "device": "llvmpipe (LLVM 20.1.2, 128 bits)", - "vendor": "llvmpipe" - }, - "browserArgs": [], - "captureMethod": "device.screenshot", - "rendererKind": "webgpu", - "target": "desktop", - "viewport": { - "height": 400, - "width": 640 - } - }, - "resources": { - "textures": 10, - "settledRenderFrames": 3, - "stableTextureFrames": 3 - }, - "diagnostics": [], - "lights": { - "directional": { - "name": "fog-directional", - "type": "DirectionalLight", - "shadow": "ordinary-map" - }, - "point": { - "name": "fog-point", - "type": "PointLight", - "shadow": "none", - "range": 8 - } - } + "fog": { + "sha256": "95e2d1a14559df4a6778916e3192d15127d59e4e83b9a76f433e7c829add464a", + "nonblankPixelRatio": 0.99998828125, + "passesMinimum005": true, + "file": "fog.png" }, - { - "mode": "wallOff", - "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", - "pass": true, - "capture": { - "adapter": { - "architecture": "unknown", - "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", - "device": "llvmpipe (LLVM 20.1.2, 128 bits)", - "vendor": "llvmpipe" - }, - "browserArgs": [], - "captureMethod": "device.screenshot", - "rendererKind": "webgpu", - "target": "desktop", - "viewport": { - "height": 400, - "width": 640 - } - }, - "resources": { - "textures": 10, - "settledRenderFrames": 3, - "stableTextureFrames": 3 - }, - "diagnostics": [], - "lights": { - "directional": { - "name": "fog-directional", - "type": "DirectionalLight", - "shadow": "ordinary-map" - }, - "point": { - "name": "fog-point", - "type": "PointLight", - "shadow": "none", - "range": 8 - } - } + "inside": { + "sha256": "1bec85d68b3bed2d79b8eeb7e3fd4f3aa4f64140f1e9e44165971c49b123c9bf", + "nonblankPixelRatio": 1, + "passesMinimum005": true, + "file": "inside.png" + }, + "sunOff": { + "sha256": "65050dc6819eb17bef27df1215351c485324c1e0c2fd49014b777292a0fa11c3", + "nonblankPixelRatio": 0.999984375, + "passesMinimum005": true + }, + "pointOff": { + "sha256": "badc6fd442e064320d244cdc24b09487d487af31316215cfb532c2b71c29a6d4", + "nonblankPixelRatio": 0.99893359375, + "passesMinimum005": true + }, + "overlap": { + "sha256": "2ed15c18e59c9936c5d1df7b1816278450b81a2d28cc5b329ef6d4b59b7c1ff6", + "nonblankPixelRatio": 0.99998828125, + "passesMinimum005": true + }, + "half": { + "sha256": "05238af75c2a820556e6360bfa9b5dad467c145b6f8e0408c33cca4c4c3efbd3", + "nonblankPixelRatio": 0.9999921875, + "passesMinimum005": true + }, + "wallOff": { + "sha256": "85487cc1dd56d7baf5e18e4b8ef33befda91ca2c1004cf6877b067a10959531a", + "nonblankPixelRatio": 0.99998828125, + "passesMinimum005": true }, - { - "mode": "blackOff", - "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", - "pass": true, - "capture": { - "adapter": { - "architecture": "unknown", - "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", - "device": "llvmpipe (LLVM 20.1.2, 128 bits)", - "vendor": "llvmpipe" - }, - "browserArgs": [], - "captureMethod": "device.screenshot", - "rendererKind": "webgpu", - "target": "desktop", - "viewport": { - "height": 400, - "width": 640 - } - }, - "resources": { - "textures": 5, - "settledRenderFrames": 3, - "stableTextureFrames": 3 - }, - "diagnostics": [], - "lights": { - "directional": { - "name": "fog-directional", - "type": "DirectionalLight", - "shadow": "ordinary-map" - }, - "point": { - "name": "fog-point", - "type": "PointLight", - "shadow": "none", - "range": 8 - } - } + "blackOff": { + "sha256": "b3d4f1282739ab51813d412fc278fe6ec8555ab44baaf68e145e4007ca4bc0ea", + "nonblankPixelRatio": 0.05625, + "passesMinimum005": true, + "file": "blackOff.png" }, - { - "mode": "scatter", - "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", - "pass": true, - "capture": { - "adapter": { - "architecture": "unknown", - "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", - "device": "llvmpipe (LLVM 20.1.2, 128 bits)", - "vendor": "llvmpipe" - }, - "browserArgs": [], - "captureMethod": "device.screenshot", - "rendererKind": "webgpu", - "target": "desktop", - "viewport": { - "height": 400, - "width": 640 - } - }, - "resources": { - "textures": 10, - "settledRenderFrames": 3, - "stableTextureFrames": 3 - }, - "diagnostics": [], - "lights": { - "directional": { - "name": "fog-directional", - "type": "DirectionalLight", - "shadow": "ordinary-map" - }, - "point": { - "name": "fog-point", - "type": "PointLight", - "shadow": "none", - "range": 8 - } - } + "scatter": { + "sha256": "eca0f87d4e38a72c378753f62cdeaadbdc14901193b33716ebe64daef3e0be26", + "nonblankPixelRatio": 0.23834375, + "passesMinimum005": true, + "file": "scatter.png" }, - { - "mode": "scatterSunOff", - "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", - "pass": true, - "capture": { - "adapter": { - "architecture": "unknown", - "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", - "device": "llvmpipe (LLVM 20.1.2, 128 bits)", - "vendor": "llvmpipe" - }, - "browserArgs": [], - "captureMethod": "device.screenshot", - "rendererKind": "webgpu", - "target": "desktop", - "viewport": { - "height": 400, - "width": 640 - } - }, - "resources": { - "textures": 10, - "settledRenderFrames": 3, - "stableTextureFrames": 3 - }, - "diagnostics": [], - "lights": { - "directional": { - "name": "fog-directional", - "type": "DirectionalLight", - "shadow": "ordinary-map" - }, - "point": { - "name": "fog-point", - "type": "PointLight", - "shadow": "none", - "range": 8 - } - } + "scatterSunOff": { + "sha256": "d1412a75a5612ff4653692c1c9314102124e135335f17ef0d4daff9857e4be49", + "nonblankPixelRatio": 0.236296875, + "passesMinimum005": true, + "file": "scatterSunOff.png" }, - { - "mode": "scatterPointOff", - "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", - "pass": true, - "capture": { - "adapter": { - "architecture": "unknown", - "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", - "device": "llvmpipe (LLVM 20.1.2, 128 bits)", - "vendor": "llvmpipe" - }, - "browserArgs": [], - "captureMethod": "device.screenshot", - "rendererKind": "webgpu", - "target": "desktop", - "viewport": { - "height": 400, - "width": 640 - } - }, - "resources": { - "textures": 10, - "settledRenderFrames": 3, - "stableTextureFrames": 3 - }, - "diagnostics": [], - "lights": { - "directional": { - "name": "fog-directional", - "type": "DirectionalLight", - "shadow": "ordinary-map" - }, - "point": { - "name": "fog-point", - "type": "PointLight", - "shadow": "none", - "range": 8 - } - } + "scatterPointOff": { + "sha256": "5b272a565aa3eca8c45b4dea7671f3183d6f91c0f2cde2bf95ced43151b144dc", + "nonblankPixelRatio": 0.23907421875, + "passesMinimum005": true, + "file": "scatterPointOff.png" }, - { - "mode": "lifecycle", - "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", - "pass": true, - "capture": { - "adapter": { - "architecture": "unknown", - "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", - "device": "llvmpipe (LLVM 20.1.2, 128 bits)", - "vendor": "llvmpipe" - }, - "browserArgs": [], - "captureMethod": "device.screenshot", - "rendererKind": "webgpu", - "target": "desktop", - "viewport": { - "height": 400, - "width": 640 - } - }, - "resources": { - "textures": 10, - "settledRenderFrames": 3, - "stableTextureFrames": 3 - }, - "diagnostics": [], - "lights": { - "directional": { - "name": "fog-directional", - "type": "DirectionalLight", - "shadow": "ordinary-map" - }, - "point": { - "name": "fog-point", - "type": "PointLight", - "shadow": "none", - "range": 8 - } - } + "lifecycle": { + "sha256": "95e2d1a14559df4a6778916e3192d15127d59e4e83b9a76f433e7c829add464a", + "nonblankPixelRatio": 0.99998828125, + "passesMinimum005": true }, - { - "mode": "lifecycleOff", - "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", - "pass": true, - "capture": { - "adapter": { - "architecture": "unknown", - "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", - "device": "llvmpipe (LLVM 20.1.2, 128 bits)", - "vendor": "llvmpipe" - }, - "browserArgs": [], - "captureMethod": "device.screenshot", - "rendererKind": "webgpu", - "target": "desktop", - "viewport": { - "height": 400, - "width": 640 - } - }, - "resources": { - "textures": 5, - "settledRenderFrames": 3, - "stableTextureFrames": 3 - }, - "diagnostics": [], - "lights": { - "directional": { - "name": "fog-directional", - "type": "DirectionalLight", - "shadow": "ordinary-map" - }, - "point": { - "name": "fog-point", - "type": "PointLight", - "shadow": "none", - "range": 8 - } - } + "lifecycleOff": { + "sha256": "340699e0cb4c8740fd083df7b0ed1484e3364efae2b6ce17f0e117f1e73e9d15", + "nonblankPixelRatio": 0.99937109375, + "passesMinimum005": true } - ], + }, + "nonblankMethod": "Existing playtest regionMetrics on decoded PNGs, full frame, luminance >0.01, alpha >0; frozen minimum 0.05. All fifteen pass; minimum 0.05625.", "postCaptureMetrics": { "zeroIdentity": true, "offIdentity": true, @@ -667,1323 +177,76 @@ } }, "postCaptureMetricMethod": "After downloading and digest-checking the failed-run artifact, decoded actual PNGs were evaluated with fogLightPixelMetrics exported from the exact source verifier; exact pixel identities were compared from decoded bytes. These cross-arm checks did not execute in the hosted script because resize aborted first.", - "resizeFailure": { - "reportSha256": "82f0d784bd28aaae09a4f2e2120710604d3fedd413ba2140c0d8d595f76d7e33", - "diagnostics": [ - { - "code": "TN_PLAYTEST_HOST_EXITED", - "fix": { - "instruction": "Inspect the named host output for the first native or JavaScript error; rerun the same scenario after fixing it." - }, - "message": "Device mailbox operation '20' exceeded 120000ms.; the host process has exited — last host output: Error in wgpuSurfaceGetCurrentTexture: Validation Error | Caused by: | Surface image is already acquired | note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace | fatal runtime error: failed to initiate panic, error 3656715680, aborting | [Mystral] Caught signal SIGABRT, exiting gracefully", - "severity": "error", - "suggestion": "Inspect the named host output for the first native or JavaScript error; rerun the same scenario after fixing it." - } + "resourceSummary": { + "createdTargets": 4, + "releasedTargetsBeforeOff": 3, + "liveTargetsBeforeOff": 1, + "releasedTargetsAfterOff": 4, + "liveTargetsAfterOff": 0, + "matchingMaterialReleaseCounts": true, + "rendererTexturesOffActiveReturnedOff": [ + 5, + 10, + 5 ], - "consoleFilePresent": false, - "screenshotPresent": false, - "note": "Missing console.json causes a secondary verifier ENOENT. The preserved report identifies the primary native surface acquisition validation failure and SIGABRT." + "minimumObservedStableRenderIntervals": 3 }, - "images": { - "off": { - "file": "off.png", - "sha256": "340699e0cb4c8740fd083df7b0ed1484e3364efae2b6ce17f0e117f1e73e9d15", - "capture": { - "adapter": { - "architecture": "unknown", - "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", - "device": "llvmpipe (LLVM 20.1.2, 128 bits)", - "vendor": "llvmpipe" - }, - "browserArgs": [], - "captureMethod": "device.screenshot", - "rendererKind": "webgpu", - "target": "desktop", - "viewport": { - "height": 400, - "width": 640 - } - }, - "diagnostics": [], - "state": { - "mode": "off", - "ready": true, - "builds": 1, - "disposedGraphs": 0, - "createdTargets": 0, - "releasedTargets": 0, - "releasedMaterials": 0, - "liveTargets": 0, - "scatteringOnly": false, - "textures": 5, - "settledRenderFrames": 4, - "stableTextureFrames": 4, - "targetWidth": 0, - "targetHeight": 0, - "targets": 0, - "pixels": 0, - "steps": 0, - "inside": false, - "sun": true, - "point": true, - "overlaps": false - } - }, - "fog": { - "file": "fog.png", - "sha256": "95e2d1a14559df4a6778916e3192d15127d59e4e83b9a76f433e7c829add464a", - "capture": { - "adapter": { - "architecture": "unknown", - "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", - "device": "llvmpipe (LLVM 20.1.2, 128 bits)", - "vendor": "llvmpipe" - }, - "browserArgs": [], - "captureMethod": "device.screenshot", - "rendererKind": "webgpu", - "target": "desktop", - "viewport": { - "height": 400, - "width": 640 - } - }, - "diagnostics": [], - "state": { - "mode": "fog", - "ready": true, - "builds": 2, - "disposedGraphs": 1, - "createdTargets": 1, - "releasedTargets": 0, - "releasedMaterials": 0, - "liveTargets": 1, - "scatteringOnly": false, - "textures": 10, - "settledRenderFrames": 3, - "stableTextureFrames": 3, - "targetWidth": 640, - "targetHeight": 400, - "targets": 1, - "pixels": 256000, - "steps": 48, - "inside": false, - "sun": true, - "point": true, - "overlaps": false - } - }, - "inside": { - "file": "inside.png", - "sha256": "1bec85d68b3bed2d79b8eeb7e3fd4f3aa4f64140f1e9e44165971c49b123c9bf", - "capture": { - "adapter": { - "architecture": "unknown", - "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", - "device": "llvmpipe (LLVM 20.1.2, 128 bits)", - "vendor": "llvmpipe" - }, - "browserArgs": [], - "captureMethod": "device.screenshot", - "rendererKind": "webgpu", - "target": "desktop", - "viewport": { - "height": 400, - "width": 640 - } - }, - "diagnostics": [], - "state": { - "mode": "inside", - "ready": true, - "builds": 2, - "disposedGraphs": 1, - "createdTargets": 1, - "releasedTargets": 0, - "releasedMaterials": 0, - "liveTargets": 1, - "scatteringOnly": false, - "textures": 10, - "settledRenderFrames": 3, - "stableTextureFrames": 3, - "targetWidth": 640, - "targetHeight": 400, - "targets": 1, - "pixels": 256000, - "steps": 48, - "inside": true, - "sun": true, - "point": true, - "overlaps": false - } - }, - "blackOff": { - "file": "blackOff.png", - "sha256": "b3d4f1282739ab51813d412fc278fe6ec8555ab44baaf68e145e4007ca4bc0ea", - "capture": { - "adapter": { - "architecture": "unknown", - "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", - "device": "llvmpipe (LLVM 20.1.2, 128 bits)", - "vendor": "llvmpipe" - }, - "browserArgs": [], - "captureMethod": "device.screenshot", - "rendererKind": "webgpu", - "target": "desktop", - "viewport": { - "height": 400, - "width": 640 - } - }, - "diagnostics": [], - "state": { - "mode": "blackOff", - "ready": true, - "builds": 2, - "disposedGraphs": 1, - "createdTargets": 0, - "releasedTargets": 0, - "releasedMaterials": 0, - "liveTargets": 0, - "scatteringOnly": true, - "textures": 5, - "settledRenderFrames": 3, - "stableTextureFrames": 3, - "targetWidth": 0, - "targetHeight": 0, - "targets": 0, - "pixels": 0, - "steps": 0, - "inside": false, - "sun": true, - "point": true, - "overlaps": false - } - }, - "scatter": { - "file": "scatter.png", - "sha256": "eca0f87d4e38a72c378753f62cdeaadbdc14901193b33716ebe64daef3e0be26", - "capture": { - "adapter": { - "architecture": "unknown", - "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", - "device": "llvmpipe (LLVM 20.1.2, 128 bits)", - "vendor": "llvmpipe" - }, - "browserArgs": [], - "captureMethod": "device.screenshot", - "rendererKind": "webgpu", - "target": "desktop", - "viewport": { - "height": 400, - "width": 640 - } - }, - "diagnostics": [], - "state": { - "mode": "scatter", - "ready": true, - "builds": 2, - "disposedGraphs": 1, - "createdTargets": 1, - "releasedTargets": 0, - "releasedMaterials": 0, - "liveTargets": 1, - "scatteringOnly": true, - "textures": 10, - "settledRenderFrames": 3, - "stableTextureFrames": 3, - "targetWidth": 640, - "targetHeight": 400, - "targets": 1, - "pixels": 256000, - "steps": 48, - "inside": false, - "sun": true, - "point": true, - "overlaps": false - } - }, - "scatterSunOff": { - "file": "scatterSunOff.png", - "sha256": "d1412a75a5612ff4653692c1c9314102124e135335f17ef0d4daff9857e4be49", - "capture": { - "adapter": { - "architecture": "unknown", - "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", - "device": "llvmpipe (LLVM 20.1.2, 128 bits)", - "vendor": "llvmpipe" - }, - "browserArgs": [], - "captureMethod": "device.screenshot", - "rendererKind": "webgpu", - "target": "desktop", - "viewport": { - "height": 400, - "width": 640 - } - }, - "diagnostics": [], - "state": { - "mode": "scatterSunOff", - "ready": true, - "builds": 2, - "disposedGraphs": 1, - "createdTargets": 1, - "releasedTargets": 0, - "releasedMaterials": 0, - "liveTargets": 1, - "scatteringOnly": true, - "textures": 10, - "settledRenderFrames": 3, - "stableTextureFrames": 3, - "targetWidth": 640, - "targetHeight": 400, - "targets": 1, - "pixels": 256000, - "steps": 48, - "inside": false, - "sun": false, - "point": true, - "overlaps": false - } - }, - "scatterPointOff": { - "file": "scatterPointOff.png", - "sha256": "5b272a565aa3eca8c45b4dea7671f3183d6f91c0f2cde2bf95ced43151b144dc", - "capture": { - "adapter": { - "architecture": "unknown", - "description": "Mesa 25.2.8-0ubuntu0.24.04.3 (LLVM 20.1.2)", - "device": "llvmpipe (LLVM 20.1.2, 128 bits)", - "vendor": "llvmpipe" - }, - "browserArgs": [], - "captureMethod": "device.screenshot", - "rendererKind": "webgpu", - "target": "desktop", - "viewport": { - "height": 400, - "width": 640 - } - }, - "diagnostics": [], - "state": { - "mode": "scatterPointOff", - "ready": true, - "builds": 2, - "disposedGraphs": 1, - "createdTargets": 1, - "releasedTargets": 0, - "releasedMaterials": 0, - "liveTargets": 1, - "scatteringOnly": true, - "textures": 10, - "settledRenderFrames": 3, - "stableTextureFrames": 3, - "targetWidth": 640, - "targetHeight": 400, - "targets": 1, - "pixels": 256000, - "steps": 48, - "inside": false, - "sun": true, - "point": false, - "overlaps": false - } - } + "resizeFailure": { + "case": "resizeSmall", + "code": "TN_PLAYTEST_HOST_EXITED", + "surfaceError": "Surface image is already acquired", + "termination": "SIGABRT", + "screenshotPresent": false, + "consoleFilePresent": false }, "sameSourceBrowser": { "artifactId": 11225682361, "artifactSha256": "5cc58198f77714817c43c486cf8b83d7b7e3ef23730e4010c1026b2918740c35", "pass": true, "cases": 17, - "results": [ - { - "mode": "off", - "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", - "pass": true, - "capture": { - "adapter": { - "architecture": "swiftshader", - "vendor": "google", - "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", - "limit.maxBindGroups": "4", - "limit.maxTextureDimension2D": "8192", - "limit.maxStorageBufferBindingSize": "1073741824" - }, - "browserArgs": [ - "--ozone-platform=x11", - "--enable-unsafe-webgpu", - "--disable-gpu-sandbox", - "--ignore-gpu-blocklist", - "--enable-features=Vulkan" - ], - "captureMethod": "page.screenshot", - "rendererKind": "webgpu", - "target": "web", - "viewport": { - "height": 400, - "width": 640 - } - }, - "resources": { - "textures": 5, - "settledRenderFrames": 3, - "stableTextureFrames": 3 - }, - "diagnostics": [], - "lights": { - "directional": { - "name": "fog-directional", - "type": "DirectionalLight", - "shadow": "ordinary-map" - }, - "point": { - "name": "fog-point", - "type": "PointLight", - "shadow": "none", - "range": 8 - } - } - }, - { - "mode": "zero", - "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", - "pass": true, - "capture": { - "adapter": { - "architecture": "swiftshader", - "vendor": "google", - "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", - "limit.maxBindGroups": "4", - "limit.maxTextureDimension2D": "8192", - "limit.maxStorageBufferBindingSize": "1073741824" - }, - "browserArgs": [ - "--ozone-platform=x11", - "--enable-unsafe-webgpu", - "--disable-gpu-sandbox", - "--ignore-gpu-blocklist", - "--enable-features=Vulkan" - ], - "captureMethod": "page.screenshot", - "rendererKind": "webgpu", - "target": "web", - "viewport": { - "height": 400, - "width": 640 - } - }, - "resources": { - "textures": 5, - "settledRenderFrames": 3, - "stableTextureFrames": 3 - }, - "diagnostics": [], - "lights": { - "directional": { - "name": "fog-directional", - "type": "DirectionalLight", - "shadow": "ordinary-map" - }, - "point": { - "name": "fog-point", - "type": "PointLight", - "shadow": "none", - "range": 8 - } - } - }, - { - "mode": "fog", - "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", - "pass": true, - "capture": { - "adapter": { - "architecture": "swiftshader", - "vendor": "google", - "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", - "limit.maxBindGroups": "4", - "limit.maxTextureDimension2D": "8192", - "limit.maxStorageBufferBindingSize": "1073741824" - }, - "browserArgs": [ - "--ozone-platform=x11", - "--enable-unsafe-webgpu", - "--disable-gpu-sandbox", - "--ignore-gpu-blocklist", - "--enable-features=Vulkan" - ], - "captureMethod": "page.screenshot", - "rendererKind": "webgpu", - "target": "web", - "viewport": { - "height": 400, - "width": 640 - } - }, - "resources": { - "textures": 10, - "settledRenderFrames": 3, - "stableTextureFrames": 3 - }, - "diagnostics": [], - "lights": { - "directional": { - "name": "fog-directional", - "type": "DirectionalLight", - "shadow": "ordinary-map" - }, - "point": { - "name": "fog-point", - "type": "PointLight", - "shadow": "none", - "range": 8 - } - } - }, - { - "mode": "inside", - "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", - "pass": true, - "capture": { - "adapter": { - "architecture": "swiftshader", - "vendor": "google", - "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", - "limit.maxBindGroups": "4", - "limit.maxTextureDimension2D": "8192", - "limit.maxStorageBufferBindingSize": "1073741824" - }, - "browserArgs": [ - "--ozone-platform=x11", - "--enable-unsafe-webgpu", - "--disable-gpu-sandbox", - "--ignore-gpu-blocklist", - "--enable-features=Vulkan" - ], - "captureMethod": "page.screenshot", - "rendererKind": "webgpu", - "target": "web", - "viewport": { - "height": 400, - "width": 640 - } - }, - "resources": { - "textures": 10, - "settledRenderFrames": 3, - "stableTextureFrames": 3 - }, - "diagnostics": [], - "lights": { - "directional": { - "name": "fog-directional", - "type": "DirectionalLight", - "shadow": "ordinary-map" - }, - "point": { - "name": "fog-point", - "type": "PointLight", - "shadow": "none", - "range": 8 - } - } - }, - { - "mode": "sunOff", - "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", - "pass": true, - "capture": { - "adapter": { - "architecture": "swiftshader", - "vendor": "google", - "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", - "limit.maxBindGroups": "4", - "limit.maxTextureDimension2D": "8192", - "limit.maxStorageBufferBindingSize": "1073741824" - }, - "browserArgs": [ - "--ozone-platform=x11", - "--enable-unsafe-webgpu", - "--disable-gpu-sandbox", - "--ignore-gpu-blocklist", - "--enable-features=Vulkan" - ], - "captureMethod": "page.screenshot", - "rendererKind": "webgpu", - "target": "web", - "viewport": { - "height": 400, - "width": 640 - } - }, - "resources": { - "textures": 10, - "settledRenderFrames": 3, - "stableTextureFrames": 3 - }, - "diagnostics": [], - "lights": { - "directional": { - "name": "fog-directional", - "type": "DirectionalLight", - "shadow": "ordinary-map" - }, - "point": { - "name": "fog-point", - "type": "PointLight", - "shadow": "none", - "range": 8 - } - } - }, - { - "mode": "pointOff", - "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", - "pass": true, - "capture": { - "adapter": { - "architecture": "swiftshader", - "vendor": "google", - "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", - "limit.maxBindGroups": "4", - "limit.maxTextureDimension2D": "8192", - "limit.maxStorageBufferBindingSize": "1073741824" - }, - "browserArgs": [ - "--ozone-platform=x11", - "--enable-unsafe-webgpu", - "--disable-gpu-sandbox", - "--ignore-gpu-blocklist", - "--enable-features=Vulkan" - ], - "captureMethod": "page.screenshot", - "rendererKind": "webgpu", - "target": "web", - "viewport": { - "height": 400, - "width": 640 - } - }, - "resources": { - "textures": 10, - "settledRenderFrames": 3, - "stableTextureFrames": 3 - }, - "diagnostics": [], - "lights": { - "directional": { - "name": "fog-directional", - "type": "DirectionalLight", - "shadow": "ordinary-map" - }, - "point": { - "name": "fog-point", - "type": "PointLight", - "shadow": "none", - "range": 8 - } - } - }, - { - "mode": "overlap", - "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", - "pass": true, - "capture": { - "adapter": { - "architecture": "swiftshader", - "vendor": "google", - "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", - "limit.maxBindGroups": "4", - "limit.maxTextureDimension2D": "8192", - "limit.maxStorageBufferBindingSize": "1073741824" - }, - "browserArgs": [ - "--ozone-platform=x11", - "--enable-unsafe-webgpu", - "--disable-gpu-sandbox", - "--ignore-gpu-blocklist", - "--enable-features=Vulkan" - ], - "captureMethod": "page.screenshot", - "rendererKind": "webgpu", - "target": "web", - "viewport": { - "height": 400, - "width": 640 - } - }, - "resources": { - "textures": 10, - "settledRenderFrames": 3, - "stableTextureFrames": 3 - }, - "diagnostics": [], - "lights": { - "directional": { - "name": "fog-directional", - "type": "DirectionalLight", - "shadow": "ordinary-map" - }, - "point": { - "name": "fog-point", - "type": "PointLight", - "shadow": "none", - "range": 8 - } - } - }, - { - "mode": "half", - "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", - "pass": true, - "capture": { - "adapter": { - "architecture": "swiftshader", - "vendor": "google", - "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", - "limit.maxBindGroups": "4", - "limit.maxTextureDimension2D": "8192", - "limit.maxStorageBufferBindingSize": "1073741824" - }, - "browserArgs": [ - "--ozone-platform=x11", - "--enable-unsafe-webgpu", - "--disable-gpu-sandbox", - "--ignore-gpu-blocklist", - "--enable-features=Vulkan" - ], - "captureMethod": "page.screenshot", - "rendererKind": "webgpu", - "target": "web", - "viewport": { - "height": 400, - "width": 640 - } - }, - "resources": { - "textures": 10, - "settledRenderFrames": 3, - "stableTextureFrames": 3 - }, - "diagnostics": [], - "lights": { - "directional": { - "name": "fog-directional", - "type": "DirectionalLight", - "shadow": "ordinary-map" - }, - "point": { - "name": "fog-point", - "type": "PointLight", - "shadow": "none", - "range": 8 - } - } - }, - { - "mode": "wallOff", - "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", - "pass": true, - "capture": { - "adapter": { - "architecture": "swiftshader", - "vendor": "google", - "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", - "limit.maxBindGroups": "4", - "limit.maxTextureDimension2D": "8192", - "limit.maxStorageBufferBindingSize": "1073741824" - }, - "browserArgs": [ - "--ozone-platform=x11", - "--enable-unsafe-webgpu", - "--disable-gpu-sandbox", - "--ignore-gpu-blocklist", - "--enable-features=Vulkan" - ], - "captureMethod": "page.screenshot", - "rendererKind": "webgpu", - "target": "web", - "viewport": { - "height": 400, - "width": 640 - } - }, - "resources": { - "textures": 10, - "settledRenderFrames": 3, - "stableTextureFrames": 3 - }, - "diagnostics": [], - "lights": { - "directional": { - "name": "fog-directional", - "type": "DirectionalLight", - "shadow": "ordinary-map" - }, - "point": { - "name": "fog-point", - "type": "PointLight", - "shadow": "none", - "range": 8 - } - } - }, - { - "mode": "blackOff", - "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", - "pass": true, - "capture": { - "adapter": { - "architecture": "swiftshader", - "vendor": "google", - "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", - "limit.maxBindGroups": "4", - "limit.maxTextureDimension2D": "8192", - "limit.maxStorageBufferBindingSize": "1073741824" - }, - "browserArgs": [ - "--ozone-platform=x11", - "--enable-unsafe-webgpu", - "--disable-gpu-sandbox", - "--ignore-gpu-blocklist", - "--enable-features=Vulkan" - ], - "captureMethod": "page.screenshot", - "rendererKind": "webgpu", - "target": "web", - "viewport": { - "height": 400, - "width": 640 - } - }, - "resources": { - "textures": 5, - "settledRenderFrames": 3, - "stableTextureFrames": 3 - }, - "diagnostics": [], - "lights": { - "directional": { - "name": "fog-directional", - "type": "DirectionalLight", - "shadow": "ordinary-map" - }, - "point": { - "name": "fog-point", - "type": "PointLight", - "shadow": "none", - "range": 8 - } - } - }, - { - "mode": "scatter", - "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", - "pass": true, - "capture": { - "adapter": { - "architecture": "swiftshader", - "vendor": "google", - "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", - "limit.maxBindGroups": "4", - "limit.maxTextureDimension2D": "8192", - "limit.maxStorageBufferBindingSize": "1073741824" - }, - "browserArgs": [ - "--ozone-platform=x11", - "--enable-unsafe-webgpu", - "--disable-gpu-sandbox", - "--ignore-gpu-blocklist", - "--enable-features=Vulkan" - ], - "captureMethod": "page.screenshot", - "rendererKind": "webgpu", - "target": "web", - "viewport": { - "height": 400, - "width": 640 - } - }, - "resources": { - "textures": 10, - "settledRenderFrames": 3, - "stableTextureFrames": 3 - }, - "diagnostics": [], - "lights": { - "directional": { - "name": "fog-directional", - "type": "DirectionalLight", - "shadow": "ordinary-map" - }, - "point": { - "name": "fog-point", - "type": "PointLight", - "shadow": "none", - "range": 8 - } - } - }, - { - "mode": "scatterSunOff", - "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", - "pass": true, - "capture": { - "adapter": { - "architecture": "swiftshader", - "vendor": "google", - "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", - "limit.maxBindGroups": "4", - "limit.maxTextureDimension2D": "8192", - "limit.maxStorageBufferBindingSize": "1073741824" - }, - "browserArgs": [ - "--ozone-platform=x11", - "--enable-unsafe-webgpu", - "--disable-gpu-sandbox", - "--ignore-gpu-blocklist", - "--enable-features=Vulkan" - ], - "captureMethod": "page.screenshot", - "rendererKind": "webgpu", - "target": "web", - "viewport": { - "height": 400, - "width": 640 - } - }, - "resources": { - "textures": 10, - "settledRenderFrames": 3, - "stableTextureFrames": 3 - }, - "diagnostics": [], - "lights": { - "directional": { - "name": "fog-directional", - "type": "DirectionalLight", - "shadow": "ordinary-map" - }, - "point": { - "name": "fog-point", - "type": "PointLight", - "shadow": "none", - "range": 8 - } - } - }, - { - "mode": "scatterPointOff", - "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", - "pass": true, - "capture": { - "adapter": { - "architecture": "swiftshader", - "vendor": "google", - "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", - "limit.maxBindGroups": "4", - "limit.maxTextureDimension2D": "8192", - "limit.maxStorageBufferBindingSize": "1073741824" - }, - "browserArgs": [ - "--ozone-platform=x11", - "--enable-unsafe-webgpu", - "--disable-gpu-sandbox", - "--ignore-gpu-blocklist", - "--enable-features=Vulkan" - ], - "captureMethod": "page.screenshot", - "rendererKind": "webgpu", - "target": "web", - "viewport": { - "height": 400, - "width": 640 - } - }, - "resources": { - "textures": 10, - "settledRenderFrames": 3, - "stableTextureFrames": 3 - }, - "diagnostics": [], - "lights": { - "directional": { - "name": "fog-directional", - "type": "DirectionalLight", - "shadow": "ordinary-map" - }, - "point": { - "name": "fog-point", - "type": "PointLight", - "shadow": "none", - "range": 8 - } - } - }, - { - "mode": "lifecycle", - "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", - "pass": true, - "capture": { - "adapter": { - "architecture": "swiftshader", - "vendor": "google", - "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", - "limit.maxBindGroups": "4", - "limit.maxTextureDimension2D": "8192", - "limit.maxStorageBufferBindingSize": "1073741824" - }, - "browserArgs": [ - "--ozone-platform=x11", - "--enable-unsafe-webgpu", - "--disable-gpu-sandbox", - "--ignore-gpu-blocklist", - "--enable-features=Vulkan" - ], - "captureMethod": "page.screenshot", - "rendererKind": "webgpu", - "target": "web", - "viewport": { - "height": 400, - "width": 640 - } - }, - "resources": { - "textures": 10, - "settledRenderFrames": 3, - "stableTextureFrames": 3 - }, - "diagnostics": [], - "lights": { - "directional": { - "name": "fog-directional", - "type": "DirectionalLight", - "shadow": "ordinary-map" - }, - "point": { - "name": "fog-point", - "type": "PointLight", - "shadow": "none", - "range": 8 - } - } - }, - { - "mode": "lifecycleOff", - "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", - "pass": true, - "capture": { - "adapter": { - "architecture": "swiftshader", - "vendor": "google", - "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", - "limit.maxBindGroups": "4", - "limit.maxTextureDimension2D": "8192", - "limit.maxStorageBufferBindingSize": "1073741824" - }, - "browserArgs": [ - "--ozone-platform=x11", - "--enable-unsafe-webgpu", - "--disable-gpu-sandbox", - "--ignore-gpu-blocklist", - "--enable-features=Vulkan" - ], - "captureMethod": "page.screenshot", - "rendererKind": "webgpu", - "target": "web", - "viewport": { - "height": 400, - "width": 640 - } - }, - "resources": { - "textures": 5, - "settledRenderFrames": 3, - "stableTextureFrames": 3 - }, - "diagnostics": [], - "lights": { - "directional": { - "name": "fog-directional", - "type": "DirectionalLight", - "shadow": "ordinary-map" - }, - "point": { - "name": "fog-point", - "type": "PointLight", - "shadow": "none", - "range": 8 - } - } - }, - { - "mode": "resizeSmall", - "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", - "pass": true, - "capture": { - "adapter": { - "architecture": "swiftshader", - "vendor": "google", - "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", - "limit.maxBindGroups": "4", - "limit.maxTextureDimension2D": "8192", - "limit.maxStorageBufferBindingSize": "1073741824" - }, - "browserArgs": [ - "--ozone-platform=x11", - "--enable-unsafe-webgpu", - "--disable-gpu-sandbox", - "--ignore-gpu-blocklist", - "--enable-features=Vulkan" - ], - "captureMethod": "page.screenshot", - "rendererKind": "webgpu", - "target": "web", - "viewport": { - "height": 400, - "width": 640 - } - }, - "resources": { - "textures": 10, - "settledRenderFrames": 3, - "stableTextureFrames": 3 - }, - "diagnostics": [], - "lights": { - "directional": { - "name": "fog-directional", - "type": "DirectionalLight", - "shadow": "ordinary-map" - }, - "point": { - "name": "fog-point", - "type": "PointLight", - "shadow": "none", - "range": 8 - } - } - }, - { - "mode": "resizeRestore", - "sourceSha": "1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7", - "pass": true, - "capture": { - "adapter": { - "architecture": "swiftshader", - "vendor": "google", - "features": "bgra8unorm-storage,chromium-experimental-timestamp-query-inside-passes,clip-distances,core-features-and-limits,depth-clip-control,depth32float-stencil8,float32-blendable,float32-filterable,indirect-first-instance,rg11b10ufloat-renderable,subgroup-size-control,subgroups,texture-component-swizzle,texture-compression-astc,texture-compression-astc-sliced-3d,texture-compression-bc,texture-compression-bc-sliced-3d,texture-compression-etc2,timestamp-query", - "limit.maxBindGroups": "4", - "limit.maxTextureDimension2D": "8192", - "limit.maxStorageBufferBindingSize": "1073741824" - }, - "browserArgs": [ - "--ozone-platform=x11", - "--enable-unsafe-webgpu", - "--disable-gpu-sandbox", - "--ignore-gpu-blocklist", - "--enable-features=Vulkan" - ], - "captureMethod": "page.screenshot", - "rendererKind": "webgpu", - "target": "web", - "viewport": { - "height": 400, - "width": 640 - } - }, - "resources": { - "textures": 10, - "settledRenderFrames": 3, - "stableTextureFrames": 3 - }, - "diagnostics": [], - "lights": { - "directional": { - "name": "fog-directional", - "type": "DirectionalLight", - "shadow": "ordinary-map" - }, - "point": { - "name": "fog-point", - "type": "PointLight", - "shadow": "none", - "range": 8 - } - } - }, - { - "assertion": "zero-density pixel identity", - "pass": true - }, - { - "assertion": "repeated lifecycle restores baseline pixels", - "pass": true - }, - { - "assertion": "renderer texture allocation baseline", - "baselineResources": { - "textures": 5, - "settledRenderFrames": 3, - "stableTextureFrames": 3 - }, - "restoredResources": { - "textures": 5, - "settledRenderFrames": 3, - "stableTextureFrames": 3 - }, - "pass": true - }, - { - "assertion": "target/depth resize restores exact pixels", - "pass": true - }, - { - "assertion": "isolated light-scattering pixels", - "baselineMaxRgb": 0, - "wallMaxRgb": 0, - "roi": { - "x": 260, - "y": 155, - "width": 150, - "height": 90 - }, - "wallRoi": { - "x": 184, - "y": 216, - "width": 18, - "height": 18 - }, - "evaluationRoi": { - "x": 0, - "y": 0, - "width": 500, - "height": 400 - }, - "calibrationRoi": { - "x": 515, - "y": 25, - "width": 110, - "height": 110 - }, - "calibrationMinimum": 146, - "calibrationMaxDifference": 0, - "sun": { - "meanRgbDelta": 15.958518518518519, - "changedPixelRatio": 0.9933333333333333 - }, - "point": { - "meanRgbDelta": 48.77553086419753, - "changedPixelRatio": 1 - }, - "thresholds": { - "minMeanRgbDelta": 1, - "minChangedPixelRatio": 0.1, - "maxBlackRgb": 0, - "minCalibrationRgb": 32, - "maxCalibrationDifference": 0 - }, - "pass": true - } - ], "qualification": "Google SwiftShader browser WebGPU software correctness; includes each intermediate graph rendering before replacement, full teardown and portable target/depth resize." }, - "authoredNonblankRevalidation": { - "method": "Existing playtest regionMetrics on decoded original native PNGs, full frame, luminance >0.01, alpha >0, frozen minimum0.05; independently recomputed after whole-feature review.", - "images": { - "off": { - "darkPixelRatio": 0.67553515625, - "nonblankPixelRatio": 0.99937109375, - "minimum": 0.05, - "pass": true - }, - "zero": { - "darkPixelRatio": 0.67553515625, - "nonblankPixelRatio": 0.99937109375, - "minimum": 0.05, - "pass": true - }, - "fog": { - "darkPixelRatio": 0.62978515625, - "nonblankPixelRatio": 0.99998828125, - "minimum": 0.05, - "pass": true - }, - "inside": { - "darkPixelRatio": 0.17884765625, - "nonblankPixelRatio": 1, - "minimum": 0.05, - "pass": true - }, - "sunOff": { - "darkPixelRatio": 0.92972265625, - "nonblankPixelRatio": 0.999984375, - "minimum": 0.05, - "pass": true - }, - "pointOff": { - "darkPixelRatio": 0.65212890625, - "nonblankPixelRatio": 0.99893359375, - "minimum": 0.05, - "pass": true - }, - "overlap": { - "darkPixelRatio": 0.62975, - "nonblankPixelRatio": 0.99998828125, - "minimum": 0.05, - "pass": true - }, - "half": { - "darkPixelRatio": 0.6297734375, - "nonblankPixelRatio": 0.9999921875, - "minimum": 0.05, - "pass": true - }, - "wallOff": { - "darkPixelRatio": 0.62996484375, - "nonblankPixelRatio": 0.99998828125, - "minimum": 0.05, - "pass": true - }, - "blackOff": { - "darkPixelRatio": 0.94375, - "nonblankPixelRatio": 0.05625, - "minimum": 0.05, - "pass": true - }, - "scatter": { - "darkPixelRatio": 0.86383203125, - "nonblankPixelRatio": 0.23834375, - "minimum": 0.05, - "pass": true - }, - "scatterSunOff": { - "darkPixelRatio": 0.88630078125, - "nonblankPixelRatio": 0.236296875, - "minimum": 0.05, - "pass": true - }, - "scatterPointOff": { - "darkPixelRatio": 0.9053125, - "nonblankPixelRatio": 0.23907421875, - "minimum": 0.05, - "pass": true - }, - "lifecycle": { - "darkPixelRatio": 0.62978515625, - "nonblankPixelRatio": 0.99998828125, - "minimum": 0.05, - "pass": true - }, - "lifecycleOff": { - "darkPixelRatio": 0.67553515625, - "nonblankPixelRatio": 0.99937109375, - "minimum": 0.05, - "pass": true + "resizeDiagnosticRevalidation": { + "sourceSha": "7f710b7d3af5e2da18017e4a0f707d4217ddf85d", + "runId": 37011447056, + "runUrl": "https://github.com/ThreeNativeHQ/threenative/actions/runs/37011447056", + "artifactId": 11227694772, + "artifactSha256": "8ae66c5a60cba94b1d2b96c771ee2f3f7dbb98472b95ea980a067c83976da2f2", + "nativeBuild": { + "runtimeSha256": "da16138cc37938a14ce6831476aa58972a0d469ba2172b6a06faf6d1d56c6042", + "bundleSha256": "d2be9b3d0efa3247ff63c772421f75b77e8ea1fd9b271c4791ec7934f88c3e86", + "buildSourceSha": "7f710b7d3af5e2da18017e4a0f707d4217ddf85d", + "packageVersion": "0.3.4", + "wgpuNativeVersion": "25.0.2.2" + }, + "pass": false, + "acceptedNativeArms": 15, + "allAcceptedPngBytesIdenticalToOriginal": true, + "browserCasesPassed": 17, + "resizeControl": { + "pass": false, + "capturedPngs": 0, + "firstErrorCode": "TN_SURFACE_ACQUIRE_FAILED", + "surfaceStatus": 2, + "nextError": "Failed to get current texture", + "correction": "The diagnostic step normalized conclusion was success, but its retained summary.pass was false and the mandatory final guard failed. No control capture passed." + }, + "originalResizeFailure": { + "case": "resizeSmall", + "code": "TN_PLAYTEST_HOST_EXITED", + "surfaceError": "Surface image is already acquired", + "termination": "SIGABRT", + "screenshotPresent": false + }, + "currentDevelopComparison": { + "sha": "924b92f825d602485ef4e682f434b4757a825cd7", + "method": "Connector-read file content compared byte-for-byte against7f710b7d3 checkout before the fix. All five equal.", + "baselineGitBlobs": { + "packages/runtime-native/include/mystral/webgpu_compat.h": "d826bdaeb9850bb3f3632bf50c4542e146d2c5e5", + "packages/runtime-native/src/webgpu/bindings_presentation.cpp": "cbedaa40abf9d7f26b2bad60318dc915b33c8365", + "packages/runtime-native/src/webgpu/bindings_resources.cpp": "d7c15f425ca65d2f4ee2f9bf6b7fa78d8c1092ef", + "packages/runtime-native/src/webgpu/bindings.cpp": "28789db6974dc0fd250e63c4f70ef07091412ad5", + "packages/runtime-native/scripts/download-deps.mjs": "a6cc308a8377e4c7255fe51d4e83e01abf22e31d" } } } diff --git a/packages/runtime-native/CMakeLists.txt b/packages/runtime-native/CMakeLists.txt index be45c01523..73dcf6d743 100644 --- a/packages/runtime-native/CMakeLists.txt +++ b/packages/runtime-native/CMakeLists.txt @@ -2510,11 +2510,17 @@ if(NOT MYSTRAL_PLATFORM STREQUAL "ios" AND NOT MYSTRAL_PLATFORM STREQUAL "androi add_executable(threenative-webgpu-comprehensive-test EXCLUDE_FROM_ALL tests/webgpu_comprehensive_test.cpp) target_link_libraries(threenative-webgpu-comprehensive-test PRIVATE mystral-runtime) + add_executable(threenative-surface-texture-status-test EXCLUDE_FROM_ALL + tests/surface_texture_status_test.cpp) + target_link_libraries(threenative-surface-texture-status-test PRIVATE mystral-runtime) if(MYSTRAL_USE_DAWN) target_include_directories(threenative-webgpu-comprehensive-test PRIVATE ${DAWN_INCLUDE_DIR}) + target_include_directories(threenative-surface-texture-status-test PRIVATE ${DAWN_INCLUDE_DIR}) elseif(MYSTRAL_USE_WGPU AND TARGET wgpu::wgpu) target_include_directories(threenative-webgpu-comprehensive-test PRIVATE ${WGPU_TEST_INCLUDES}) + target_include_directories(threenative-surface-texture-status-test PRIVATE ${WGPU_TEST_INCLUDES}) endif() + tn_register_contract_test(threenative-surface-texture-status-test) add_executable(threenative-js-module-comprehensive-test EXCLUDE_FROM_ALL tests/js_module_comprehensive_test.cpp) diff --git a/packages/runtime-native/build-matrix.json b/packages/runtime-native/build-matrix.json index de2e9fb36c..97a1bf4046 100644 --- a/packages/runtime-native/build-matrix.json +++ b/packages/runtime-native/build-matrix.json @@ -40,6 +40,7 @@ "threenative-shutdown-lifetime-test", "threenative-stall-budget-hitch-test", "threenative-surface-format-selection-test", + "threenative-surface-texture-status-test", "threenative-timer-delivery-test", "threenative-timer-engine-first-test", "threenative-timestamp-query-test", @@ -92,6 +93,7 @@ "threenative-shutdown-lifetime-test", "threenative-stall-budget-hitch-test", "threenative-surface-format-selection-test", + "threenative-surface-texture-status-test", "threenative-timer-delivery-test", "threenative-timer-engine-first-test", "threenative-timestamp-query-test", diff --git a/packages/runtime-native/docs/G1-desktop-host.md b/packages/runtime-native/docs/G1-desktop-host.md index e6fe26377e..e22b808a66 100644 --- a/packages/runtime-native/docs/G1-desktop-host.md +++ b/packages/runtime-native/docs/G1-desktop-host.md @@ -418,3 +418,13 @@ Refreshed executable: `wrap-desktop-build.log` records successful packaging with UI overlay compositing follow-up: the overlay's refusal was correct and unreachable. Nothing blends on a bare Xvfb — it has COMPOSITE off and no compositing manager, and a child redirected with `CompositeRedirectAutomatic` still reads back unblended on this server — so the host refused to attach, and every private display the repository provisions was exactly that display. Both helpers that provision one now enable COMPOSITE and SHAPE and start an installed compositing manager for their own display (`xcompmgr -n`, else picom or compton), wait a fixed 250 ms and drop one that had already exited (a settle plus a liveness check, not a poll for `_NET_WM_CM_S0`, so a compositor slower than the settle is still not accounted for): the playtest runner's `captureEnvironment`, which reports the name it started (and now records it in the `captureDisplay` diagnostic), and `packages/runtime-native/scripts/xvfb.sh`, which the repo-root `scripts/xvfb.sh` now execs rather than reimplementing — the first version of this fix landed in the packaged copy alone and no gate in the repository ran it. `scripts/__tests__/xvfb.spec.ts` runs the display assertions against both copies for that reason, and the four Linux CI apt blocks install xcompmgr. A host with none installed still gets its display and still gets the refusal, naming the dependency. Evidence: the same fixture refused with `TN_UI_OVERLAY:{"attached":false,"reason":"no compositing manager is running, so nothing would blend the overlay"}` on a bare display and reported `TN_UI_OVERLAY:{"attached":true}` under the root wrapper with a compositor, from `build/tn-linux/mystral` sha256 `a500aca3ae6e0e6694c68891cab9e2150ce7f7a739f53af07e428fbd6cd6a6a9`. This is X11 only; it proves attachment on the executed Linux lane, not a blended game frame, and not macOS or Windows. Canvas and audio follow-up on the same binary: `ctx.setLineDash(5)` used to read a `length` off a number, cast the NaN to a size_t near 2^63 and push floats until the host died — a hang from a plain game typo where a browser throws. The binding now refuses a non-sequence and stops at the first missing, negative or non-finite entry, so an object that merely claims a huge length allocates nothing; under an identical 1500 MB memory cap the pre-fix runtime was killed at the cap (exit 137) and the fixed one passed. The spec's odd-length doubling moved into `Canvas2DContext::setLineDash`, the entry every caller shares, so `setLineDash([5])` reads back `[5, 5]` and the stored list is the list that strokes. `threenative-canvas2d-dirty-test` now reads back pixels for a radial gradient's centre and rim, a dashed stroke's dash/gap/dash, and a clip that paints inside its region and nothing outside; `threenative-audio-graph-test` covers both legs of scheduled playback, a cue at an absolute start time sounding and a cue one second ahead staying silent and pending. All green locally; no performance claim is attached to either. + + +## Bounded-fog resize isolation — 2026-10-02 + +[Run37011447056](https://github.com/ThreeNativeHQ/threenative/actions/runs/37011447056) built package0.3.4 from checkout `7f710b7d3af5e2da18017e4a0f707d4217ddf85d` on Linux ARM64, QuickJS/wgpu-native25.0.2.2, Mesa llvmpipe. Fifteen authored fog/lifecycle captures passed; renderer resize failed. The identical no-fog resize control first reports `TN_SURFACE_ACQUIRE_FAILED` status2, then failed-current-texture and unfinished-object errors, with no PNG. The original fog resize separately reproduces an acquire-already-held SIGABRT. Runtime SHA256 is `da16138cc37938a14ce6831476aa58972a0d469ba2172b6a06faf6d1d56c6042`; artifact11227694772 SHA256 is `8ae66c5a60cba94b1d2b96c771ee2f3f7dbb98472b95ea980a067c83976da2f2`. + +The native compatibility helper incorrectly rejected modern SuccessSuboptimal even though it carries an acquired texture. The narrow status correction has a red-green compiled helper test; timeout/outdated/lost/error remain failures. The integration gate builds and runs `threenative-surface-texture-status-test`, then both unmodified resize sequences. Repaired-host execution remains pending, so this is not a runtime pass or a hardware-performance claim. Full source/adapter/error lineage remains in the [VQ07 PRD](../../../docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md). + + +Native status review correction: the new target now has an execution contract and required pass marker in `verify-native-contracts.mjs`; all 46 discovered targets pass its actual registration validator. The C++ contract compiles and executes against both the official Dawn `d14ae3d97a` generated headers and wgpu header pin `bac520839ff5ed2e2b648ed540bd9ec45edbccbc`. Only the wgpu branch refers to its distinct OutOfMemory/DeviceLost enums; pinned Dawn represents these errors with Error. Both real compiled binaries pass the registered execution lane and marker check. Local native-contract tests pass 8/9; the unrelated webtransport configuration test cannot run because CMake is absent. The build-matrix/coverage tests pass 15/15. This is status-contract proof, not a rebuilt native host or a comprehensive surface-owner audit. Repaired-host qualification remains pending. diff --git a/packages/runtime-native/include/mystral/webgpu_compat.h b/packages/runtime-native/include/mystral/webgpu_compat.h index d826bdaeb9..fe2b01c9ee 100644 --- a/packages/runtime-native/include/mystral/webgpu_compat.h +++ b/packages/runtime-native/include/mystral/webgpu_compat.h @@ -254,8 +254,15 @@ inline void setupShaderModuleWGSL(WGPUShaderModuleDescriptor* desc, // ============================================================================ inline bool wgpuSurfaceTextureStatusIsSuccess(int status) { +#if defined(MYSTRAL_WEBGPU_DAWN) || defined(MYSTRAL_WEBGPU_WGPU_MODERN) + // Both modern backends return a usable acquired texture for either success status. + // Rejecting Suboptimal strands that image instead of presenting/releasing it. + return status == WGPUSurfaceGetCurrentTextureStatus_Success_Compat || + status == WGPUSurfaceGetCurrentTextureStatus_SuccessSuboptimal_Compat; +#else + // Older headers report suboptimal separately from their single Success status. return status == WGPUSurfaceGetCurrentTextureStatus_Success_Compat; - // Note: Suboptimal is also considered success on wgpu, but Dawn maps both to Success +#endif } #endif // MYSTRAL_WEBGPU_COMPAT_H diff --git a/packages/runtime-native/scripts/verify-native-contracts.mjs b/packages/runtime-native/scripts/verify-native-contracts.mjs index 02761bfa94..f7e88ec59a 100644 --- a/packages/runtime-native/scripts/verify-native-contracts.mjs +++ b/packages/runtime-native/scripts/verify-native-contracts.mjs @@ -103,6 +103,9 @@ export const executionContracts = { "threenative-presentation-pacing-test": { invocations: [{ args: [], passLine: "PRESENTATION_PACING_OK" }], }, + "threenative-surface-texture-status-test": { + invocations: [{ args: [], passLine: "native surface acquisition status contract passed" }], + }, "threenative-local-storage-test": { invocations: [{ args: [], passLine: "local_storage bindings: all assertions passed" }], }, diff --git a/packages/runtime-native/src/webgpu/bindings_presentation.cpp b/packages/runtime-native/src/webgpu/bindings_presentation.cpp index cbedaa40ab..d57a992281 100644 --- a/packages/runtime-native/src/webgpu/bindings_presentation.cpp +++ b/packages/runtime-native/src/webgpu/bindings_presentation.cpp @@ -717,10 +717,13 @@ WGPUTexture getCurrentSwapchainTexture(BindingsState* state) { return createLinearPresentationTexture(state); } - WGPUSurfaceTexture surfaceTexture; + WGPUSurfaceTexture surfaceTexture = {}; wgpuSurfaceGetCurrentTexture(state->surface, &surfaceTexture); - if (!wgpuSurfaceTextureStatusIsSuccess(surfaceTexture.status)) { + if (!wgpuSurfaceTextureStatusIsSuccess(surfaceTexture.status) || !surfaceTexture.texture) { + // The API returns texture ownership even when the caller cannot use the result. + // Never strand an acquired image on a rejected status; null remains a named failure. + if (surfaceTexture.texture) wgpuTextureRelease(surfaceTexture.texture); // Fail by name. A surface that stops handing out images presents nothing, and the loop is // no longer paced by presenting, so this fires hundreds of times a second, which is // precisely how the resume defect looked from the outside: frames running away, presents diff --git a/packages/runtime-native/tests/native-contract-lane.test.mjs b/packages/runtime-native/tests/native-contract-lane.test.mjs index a863a70bf8..6f2b183694 100644 --- a/packages/runtime-native/tests/native-contract-lane.test.mjs +++ b/packages/runtime-native/tests/native-contract-lane.test.mjs @@ -88,11 +88,11 @@ test("should fail when a declared test target is not executed", () => { // screenshot capture-gate ordering contract; +1 for PRD-329's surface-format selection // diagnostic contract; +5 for the comprehensive coverage contracts; +1 for PRD-368's pipeline // cache contract; +1 for PRD-399's presentation-pacing contract; +1 for PRD-465 Phase 2's - // MetaHuman facial rig bindings contract. + // MetaHuman facial rig bindings contract; +1 for VQ07's surface acquisition status contract. // Bump alongside any new add_executable contract target. - // 45 since PRD-465 registered threenative-metahuman-bindings-test. The next assertion pins this against CMakeLists + // 46 since VQ07 registered threenative-surface-texture-status-test. The next assertion pins this against CMakeLists // itself, so the literal is a tripwire for an unreviewed target, not the source of truth. - assert.equal(discovered.length, 45); + assert.equal(discovered.length, 46); assert.deepEqual(discovered, declaredTargets(cmake)); assert.doesNotThrow(() => validateExecutionContracts(discovered, executionContracts)); diff --git a/packages/runtime-native/tests/surface_texture_status_test.cpp b/packages/runtime-native/tests/surface_texture_status_test.cpp new file mode 100644 index 0000000000..62ba0fb456 --- /dev/null +++ b/packages/runtime-native/tests/surface_texture_status_test.cpp @@ -0,0 +1,36 @@ +#include +#include "mystral/webgpu_compat.h" + +#include + +// The same production helper used by all surface acquisition paths. No device or display +// is needed: a suboptimal image is usable, while timeout/lost/outdated remain failures. +int main() { + if (!wgpuSurfaceTextureStatusIsSuccess(WGPUSurfaceGetCurrentTextureStatus_Success_Compat)) { + std::cerr << "optimal surface acquisition was rejected\n"; + return 1; + } +#if defined(MYSTRAL_WEBGPU_DAWN) || defined(MYSTRAL_WEBGPU_WGPU_MODERN) + if (!wgpuSurfaceTextureStatusIsSuccess(WGPUSurfaceGetCurrentTextureStatus_SuccessSuboptimal)) { + std::cerr << "suboptimal surface acquisition was rejected\n"; + return 1; + } + if (wgpuSurfaceTextureStatusIsSuccess(WGPUSurfaceGetCurrentTextureStatus_Error)) return 2; +#endif +#if defined(MYSTRAL_WEBGPU_WGPU_MODERN) + // Pinned Dawn folds these failures into Error; only wgpu declares distinct statuses. + if (wgpuSurfaceTextureStatusIsSuccess(WGPUSurfaceGetCurrentTextureStatus_OutOfMemory)) return 2; + if (wgpuSurfaceTextureStatusIsSuccess(WGPUSurfaceGetCurrentTextureStatus_DeviceLost)) return 2; +#endif + for (const auto status : {WGPUSurfaceGetCurrentTextureStatus_Timeout, + WGPUSurfaceGetCurrentTextureStatus_Outdated, + WGPUSurfaceGetCurrentTextureStatus_Lost, + WGPUSurfaceGetCurrentTextureStatus_Force32}) { + if (wgpuSurfaceTextureStatusIsSuccess(status)) { + std::cerr << "failed surface acquisition was accepted\n"; + return 2; + } + } + std::cout << "native surface acquisition status contract passed\n"; + return 0; +} From b0727a407f9a57fd2736dadf8a356f12bdae8d3d Mon Sep 17 00:00:00 2001 From: Joao Paulo Furtado Date: Fri, 2 Oct 2026 10:42:13 -0700 Subject: [PATCH 21/41] fix(native): rebuild the swapchain after an outdated surface acquisition renderer.setSize() reconfigures the surface to the canvas size while the OS window keeps its own. X11's WSI treats that disagreement as permanent for the swapchain: the present that follows sets VK_ERROR_OUT_OF_DATE_KHR, and every later acquire on that chain returns Outdated with no image, so the game threw "Failed to get current texture" on every frame after a resize and no screenshot was ever produced. Rebuild the swapchain once on Outdated and retry the acquisition; the same rule is applied to the sRGB bridge's surface acquire. Also release a rejected acquisition's returned texture on the bridge path, matching the direct one, and assert the Outdated recovery contract in the compiled surface status test. --- .../include/mystral/webgpu_compat.h | 13 ++++ .../src/webgpu/bindings_presentation.cpp | 67 ++++++++++++++++++- .../tests/surface_texture_status_test.cpp | 15 +++++ 3 files changed, 92 insertions(+), 3 deletions(-) diff --git a/packages/runtime-native/include/mystral/webgpu_compat.h b/packages/runtime-native/include/mystral/webgpu_compat.h index fe2b01c9ee..b9624feec0 100644 --- a/packages/runtime-native/include/mystral/webgpu_compat.h +++ b/packages/runtime-native/include/mystral/webgpu_compat.h @@ -69,6 +69,7 @@ typedef WGPUBufferMapAsyncStatus WGPUBufferMapAsyncStatus_Compat; #define WGPU_SURFACE_TEXTURE_STATUS_TYPE WGPUSurfaceGetCurrentTextureStatus #define WGPUSurfaceGetCurrentTextureStatus_Success_Compat WGPUSurfaceGetCurrentTextureStatus_Success #define WGPUSurfaceGetCurrentTextureStatus_SuccessSuboptimal_Compat WGPUSurfaceGetCurrentTextureStatus_SuccessSuboptimal +#define WGPUSurfaceGetCurrentTextureStatus_Outdated_Compat WGPUSurfaceGetCurrentTextureStatus_Outdated #define WGPUSurfaceGetCurrentTextureStatus_Error_Compat WGPUSurfaceGetCurrentTextureStatus_Error // Error types - wgpu-native has DeviceLost @@ -173,6 +174,7 @@ typedef WGPUMapAsyncStatus WGPUBufferMapAsyncStatus_Compat; #define WGPU_SURFACE_TEXTURE_STATUS_TYPE WGPUSurfaceGetCurrentTextureStatus #define WGPUSurfaceGetCurrentTextureStatus_Success_Compat WGPUSurfaceGetCurrentTextureStatus_SuccessOptimal #define WGPUSurfaceGetCurrentTextureStatus_SuccessSuboptimal_Compat WGPUSurfaceGetCurrentTextureStatus_SuccessSuboptimal +#define WGPUSurfaceGetCurrentTextureStatus_Outdated_Compat WGPUSurfaceGetCurrentTextureStatus_Outdated #define WGPUSurfaceGetCurrentTextureStatus_Error_Compat WGPUSurfaceGetCurrentTextureStatus_Error // Error types - Dawn removed DeviceLost as an error type (maps to Unknown) @@ -265,4 +267,15 @@ inline bool wgpuSurfaceTextureStatusIsSuccess(int status) { #endif } +/** + * The swapchain has to be rebuilt before another image can be acquired. + * + * Unlike the other failures, Outdated is not a dead end: the platform's presentation system has + * declared the swapchain stale, and a fresh `SurfaceConfigure` is the documented way back. Callers + * that can reconfigure treat it as recoverable; the ones that cannot still see it as a failure. + */ +inline bool wgpuSurfaceTextureStatusNeedsReconfigure(int status) { + return status == WGPUSurfaceGetCurrentTextureStatus_Outdated_Compat; +} + #endif // MYSTRAL_WEBGPU_COMPAT_H diff --git a/packages/runtime-native/src/webgpu/bindings_presentation.cpp b/packages/runtime-native/src/webgpu/bindings_presentation.cpp index d57a992281..42e45abdca 100644 --- a/packages/runtime-native/src/webgpu/bindings_presentation.cpp +++ b/packages/runtime-native/src/webgpu/bindings_presentation.cpp @@ -379,6 +379,62 @@ bool syncSurfaceSizeToCanvas(BindingsState* state, js::JSValueHandle canvas) { return true; } +/** + * Rebuilds the presentation swapchain after the platform declares it stale. + * + * `renderer.setSize()` reconfigures the surface to the canvas size while the OS window keeps its + * own, and X11's WSI treats that disagreement as permanent for the swapchain: the present that + * follows sets `VK_ERROR_OUT_OF_DATE_KHR`, and every later acquire on that chain returns Outdated + * with no image (`wsi_common_x11.c`, `_x11_swapchain_result` pins an error on the chain for good). + * A fresh `wgpuSurfaceConfigure` is the only way back, so the acquire path spends it here rather + * than letting the game throw "Failed to get current texture" on every frame after a resize. + * + * ponytail: the frame's image is 320x240 while the window stays 640x400, so that present is lost. + * A presented low-resolution canvas needs the scaled offscreen bridge, not a swapchain resize. + */ +static bool reconfigureSurfaceForAcquire(BindingsState* state) { + if (!state || !state->surface) return false; + // setSize can run between two submits of one JavaScript turn, so replay the safe prefix before + // dropping the texture views the deferred stream still names. + if (!flushRecordedFrameOps(state)) return false; + releaseCurrentSurfaceTextureViews(state); + if (state->presentation.currentSurfaceTextureId != 0) { + state->registries.textureRegistry.erase(state->presentation.currentSurfaceTextureId); + state->presentation.currentSurfaceTextureId = 0; + } + if (state->presentation.currentTexture != nullptr) { + wgpuTextureRelease(state->presentation.currentTexture); + state->presentation.currentTexture = nullptr; + } + state->presentation.surfaceRenderEncoder = nullptr; + state->presentation.surfaceRenderPassEnded = false; + state->presentation.framePresentPending = false; + + WGPUSurfaceConfiguration config = {}; + config.device = state->device; + config.format = state->presentation.nativeSurfaceFormat; + config.usage = WGPUTextureUsage_RenderAttachment | WGPUTextureUsage_CopySrc; + config.alphaMode = WGPUCompositeAlphaMode_Auto; + config.width = state->presentation.canvasWidth; + config.height = state->presentation.canvasHeight; + config.presentMode = state->presentation.presentMode; + wgpuSurfaceConfigure(state->surface, &config); + return true; +} + +/** + * Acquires the current surface image, rebuilding the swapchain once when it reports itself stale. + * Ownership of the returned texture is the caller's, exactly as the raw call's is. + */ +static void acquireSurfaceImage(BindingsState* state, WGPUSurfaceTexture* surfaceTexture) { + wgpuSurfaceGetCurrentTexture(state->surface, surfaceTexture); + if (!wgpuSurfaceTextureStatusNeedsReconfigure(surfaceTexture->status)) return; + if (surfaceTexture->texture) wgpuTextureRelease(surfaceTexture->texture); + *surfaceTexture = {}; + if (!reconfigureSurfaceForAcquire(state)) return; + wgpuSurfaceGetCurrentTexture(state->surface, surfaceTexture); +} + void trackCurrentSurfaceTextureView(BindingsState* state, uint64_t viewId, WGPUTextureView view) { if (!state || !view) return; state->presentation.currentSurfaceTextureViews[viewId] = view; @@ -531,8 +587,13 @@ static bool presentLinearTextureToSrgbSurface(BindingsState* state, WGPUTextureV if (!sourceView || !ensureSrgbPresentationPipeline(state)) return false; WGPUSurfaceTexture surfaceTexture = {}; - wgpuSurfaceGetCurrentTexture(state->surface, &surfaceTexture); - if (!wgpuSurfaceTextureStatusIsSuccess(surfaceTexture.status)) return false; + acquireSurfaceImage(state, &surfaceTexture); + if (!wgpuSurfaceTextureStatusIsSuccess(surfaceTexture.status) || !surfaceTexture.texture) { + // Same ownership rule as the direct path: a rejected acquisition still hands back a + // texture, and leaving it acquired strands the image for every later frame. + if (surfaceTexture.texture) wgpuTextureRelease(surfaceTexture.texture); + return false; + } WGPUTextureViewDescriptor surfaceViewDescriptor = {}; surfaceViewDescriptor.format = state->presentation.nativeSurfaceFormat; @@ -718,7 +779,7 @@ WGPUTexture getCurrentSwapchainTexture(BindingsState* state) { } WGPUSurfaceTexture surfaceTexture = {}; - wgpuSurfaceGetCurrentTexture(state->surface, &surfaceTexture); + acquireSurfaceImage(state, &surfaceTexture); if (!wgpuSurfaceTextureStatusIsSuccess(surfaceTexture.status) || !surfaceTexture.texture) { // The API returns texture ownership even when the caller cannot use the result. diff --git a/packages/runtime-native/tests/surface_texture_status_test.cpp b/packages/runtime-native/tests/surface_texture_status_test.cpp index 62ba0fb456..5b08019ee3 100644 --- a/packages/runtime-native/tests/surface_texture_status_test.cpp +++ b/packages/runtime-native/tests/surface_texture_status_test.cpp @@ -31,6 +31,21 @@ int main() { return 2; } } + // Exactly one failure is recoverable: Outdated names a stale swapchain, and the acquire path + // rebuilds it. Treating it like the dead ends would restore the perpetual post-resize failure. + if (!wgpuSurfaceTextureStatusNeedsReconfigure(WGPUSurfaceGetCurrentTextureStatus_Outdated)) { + std::cerr << "outdated surface acquisition was not recognised as recoverable\n"; + return 3; + } + for (const auto status : {WGPUSurfaceGetCurrentTextureStatus_Success_Compat, + WGPUSurfaceGetCurrentTextureStatus_Timeout, + WGPUSurfaceGetCurrentTextureStatus_Lost, + WGPUSurfaceGetCurrentTextureStatus_Force32}) { + if (wgpuSurfaceTextureStatusNeedsReconfigure(status)) { + std::cerr << "only an outdated surface acquisition is recoverable\n"; + return 3; + } + } std::cout << "native surface acquisition status contract passed\n"; return 0; } From fe1b1f66189c316af01218143f902eec0c56ab76 Mon Sep 17 00:00:00 2001 From: Joao Paulo Furtado Date: Fri, 2 Oct 2026 18:38:37 -0700 Subject: [PATCH 22/41] ci: fold integration-volumetric-fog.yml into integration.yml (one workflow, per AGENTS.md) The `fog` lane keeps its own paths gate, draft guard, runner and artifact names as two jobs in the shared workflow: `fog` (browser capture, 20 min) and `fog-native` (ARM native correctness, 60 min, unchanged env and timeouts). The gate regex is the former `paths:` globs translated one for one, with the workflow's own path retargeted to `integration.yml`, which is how the folded lanes already behave. Verified: ci-structure, ci-efficiency and workspace-packages pass (196 tests); the lane regex matches every path the old globs matched and rejects four near-misses; `integration.yml` parses; `pnpm lint` exits 0. --- .../workflows/integration-volumetric-fog.yml | 129 ------------------ .github/workflows/integration.yml | 112 +++++++++++++++ .../PRD-VQ-07-volumetric-fog.md | 2 +- 3 files changed, 113 insertions(+), 130 deletions(-) delete mode 100644 .github/workflows/integration-volumetric-fog.yml diff --git a/.github/workflows/integration-volumetric-fog.yml b/.github/workflows/integration-volumetric-fog.yml deleted file mode 100644 index 999e3e677e..0000000000 --- a/.github/workflows/integration-volumetric-fog.yml +++ /dev/null @@ -1,129 +0,0 @@ -name: Integration volumetric fog -on: - workflow_dispatch: - pull_request: - paths: - - 'packages/create-threenative/templates/starter/src/render/volumetricFog.ts' - - 'packages/create-threenative/template-assets/worldEnvironment.ts' - - 'packages/core/src/renderer.ts' - - 'packages/core/src/render/chain.ts' - - 'examples/abyss-framework/vq-fog/**' - - 'examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json' - - 'scripts/verify-volumetric-fog.ts' - - 'scripts/__tests__/vq-fog-native-proof.spec.ts' - - 'packages/runtime-native/include/mystral/webgpu_compat.h' - - 'packages/runtime-native/src/webgpu/bindings_presentation.cpp' - - 'packages/runtime-native/tests/surface_texture_status_test.cpp' - - 'packages/runtime-native/tests/canvas_presentation_test.cpp' - - '.github/workflows/integration-volumetric-fog.yml' -permissions: - contents: read -concurrency: - group: integration-volumetric-fog-${{ github.event.pull_request.head.ref || github.ref_name }} - cancel-in-progress: true -jobs: - capture: - runs-on: ubuntu-24.04 - timeout-minutes: 20 - steps: - - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 - with: - persist-credentials: false - ref: ${{ github.event.pull_request.head.sha || github.sha }} - - uses: ./.github/actions/pnpm - - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 - with: - node-version: '22' - cache: pnpm - - run: pnpm install --frozen-lockfile - - uses: ./.github/actions/playwright-chromium - - run: pnpm --filter @threenative/playtest build - - run: pnpm --filter abyss-framework exec vite build --config vq-fog/vite.config.ts - - run: node --import tsx scripts/verify-volumetric-fog.ts - - uses: actions/upload-artifact@v7 - if: always() - with: - name: volumetric-fog-${{ github.event.pull_request.head.sha || github.sha }} - path: artifacts/volumetric-fog/ - retention-days: 30 - if-no-files-found: error - native: - name: Linux native fog correctness - needs: [capture] - # Reuse the proven native-platforms / native-assets ARM QuickJS route without changing defaults. - runs-on: ubuntu-24.04-arm - timeout-minutes: 60 - env: - CMAKE_BUILD_PARALLEL_LEVEL: '2' - TN_PLAYTEST_ALLOW_SOFTWARE: '1' - TN_PLAYTEST_NATIVE_SCREENSHOT_TIMEOUT_MS: '30000' - steps: - - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 - with: - persist-credentials: false - ref: ${{ github.event.pull_request.head.sha || github.sha }} - - uses: ./.github/actions/pnpm - - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 - with: - node-version: '22' - cache: pnpm - - uses: actions/setup-python@v7 - with: - python-version: '3.12' - - run: pnpm install --frozen-lockfile - - name: Build this source's public JavaScript packages - uses: ./.github/actions/workspace-dist - with: - save-bundles: 'false' - pack-archives: 'false' - - name: Verify native preflight and capture rejection controls - run: pnpm exec vitest run scripts/__tests__/vq-fog-native-proof.spec.ts --maxWorkers=1 - - name: Restore checksum-provisioned native dependencies - uses: actions/cache/restore@v4 - with: - path: packages/runtime-native/third_party - key: native-third-party-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('packages/runtime-native/scripts/download-deps.mjs', 'packages/runtime-native/scripts/package-android.mjs') }} - - name: Install the existing native lane's system prerequisites - run: >- - sudo apt-get update && sudo apt-get install -y - libasound2-dev libcurl4-openssl-dev libfontconfig1-dev libfreetype6-dev - libpulse-dev libudev-dev libx11-dev libxext-dev libxrandr-dev - libxcursor-dev libxi-dev libxfixes-dev libxss-dev libxkbcommon-dev - libgtk-3-dev libwebkit2gtk-4.1-dev libxcomposite-dev xcompmgr - libvulkan1 mesa-vulkan-drivers vulkan-tools xvfb zlib1g-dev - - name: Build the ordinary ARM desktop host - run: pnpm --filter @threenative/runtime-native native:build - - name: Verify the compiled surface acquisition status contract - run: | - cmake --build packages/runtime-native/build/tn-linux --target threenative-surface-texture-status-test --parallel 2 - packages/runtime-native/build/tn-linux/threenative-surface-texture-status-test - - name: Verify rendered presentation destination pixels - run: | - cmake --build packages/runtime-native/build/tn-linux --target threenative-canvas-presentation-test --parallel 2 - packages/runtime-native/build/tn-linux/threenative-canvas-presentation-test - - name: Isolate native resize with no fog allocation - id: resize-control - # Preserve the original fog sequence even when this diagnostic reproduces the abort. - # The final step below still fails the job if this control fails. - continue-on-error: true - env: - VQ_FOG_RESIZE_CONTROL: '1' - THREENATIVE_RUNTIME_BINARY: ${{ github.workspace }}/packages/runtime-native/build/tn-linux/mystral - run: node --import tsx scripts/verify-volumetric-fog.ts - - name: Run the same authored fog and pixel gates on the native host - env: - THREENATIVE_RUNTIME_BINARY: ${{ github.workspace }}/packages/runtime-native/build/tn-linux/mystral - run: node --import tsx scripts/verify-volumetric-fog.ts - - name: Require the no-fog resize control - if: always() && steps.resize-control.outcome != 'success' - run: exit 1 - - name: Retain native screenshots, host console and executable identities - if: always() - uses: actions/upload-artifact@v7 - with: - name: volumetric-fog-native-${{ github.event.pull_request.head.sha || github.sha }} - path: | - artifacts/volumetric-fog-native/ - artifacts/volumetric-fog-native-resize-control/ - retention-days: 30 - if-no-files-found: warn diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index 2552db7862..0f4f8c7c9d 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -41,6 +41,7 @@ jobs: outputs: csg: ${{ steps.filter.outputs.csg }} decals: ${{ steps.filter.outputs.decals }} + fog: ${{ steps.filter.outputs.fog }} ik: ${{ steps.filter.outputs.ik }} tone: ${{ steps.filter.outputs.tone }} vegetation: ${{ steps.filter.outputs.vegetation }} @@ -56,6 +57,7 @@ jobs: lane() { if grep -qE "$2" <<<"$files"; then echo "$1=true"; else echo "$1=false"; fi >> "$GITHUB_OUTPUT"; } lane csg '^examples/integrations/csg/.*$|^\.github/workflows/integration\.yml$' lane decals '^packages/create-threenative/templates/shooter/src/render/decals\.ts$|^packages/create-threenative/templates/shooter/src/scenes/Play\.ts$|^packages/create-threenative/__tests__/shooter-decals[^/]*\.spec\.ts$|^packages/create-threenative/__tests__/fixtures/bounded-decals/.*$|^\.github/workflows/integration\.yml$' + lane fog '^packages/create-threenative/templates/starter/src/render/volumetricFog\.ts$|^packages/create-threenative/template-assets/worldEnvironment\.ts$|^packages/core/src/renderer\.ts$|^packages/core/src/render/chain\.ts$|^examples/abyss-framework/vq-fog/.*$|^examples/abyss-framework/playtests/vq-volumetric-fog\.playtest\.json$|^scripts/verify-volumetric-fog\.ts$|^scripts/__tests__/vq-fog-native-proof\.spec\.ts$|^packages/runtime-native/include/mystral/webgpu_compat\.h$|^packages/runtime-native/src/webgpu/bindings_presentation\.cpp$|^packages/runtime-native/tests/surface_texture_status_test\.cpp$|^packages/runtime-native/tests/canvas_presentation_test\.cpp$|^\.github/workflows/integration\.yml$' lane ik '^examples/integrations/ik/.*$|^\.github/workflows/integration\.yml$' lane tone '^packages/playtest/.*$|^examples/abyss-framework/src/render/toneCalibration\.ts$|^examples/abyss-framework/src/tone-main\.ts$|^examples/abyss-framework/tone\.html$|^examples/abyss-framework/tone\.vite\.config\.ts$|^examples/abyss-framework/playtests/tone\.playtest\.json$|^examples/abyss-framework/package\.json$|^scripts/verify-tone-exposure\.ts$|^scripts/tone-capture-proof\.ts$|^scripts/__tests__/tone-capture-proof\.spec\.ts$|^scripts/non-visual-scenarios\.mjs$|^package\.json$|^pnpm-lock\.yaml$|^\.github/actions/pnpm/.*$|^\.github/actions/playwright-chromium/.*$|^\.github/workflows/integration\.yml$' lane vegetation '^examples/integrations/vegetation/.*$|^\.github/workflows/integration\.yml$' @@ -244,3 +246,113 @@ jobs: name: tone-exposure-${{ github.event.pull_request.head.sha }} path: artifacts/tone-exposure if-no-files-found: error + + fog: + name: fog capture + if: ${{ needs.paths.outputs.fog == 'true' && !github.event.pull_request.draft }} + needs: paths + runs-on: ${{ (github.event.pull_request.head.repo.fork || !vars.TN_RUNNER) && 'ubuntu-24.04' || vars.TN_RUNNER }} + timeout-minutes: 20 + steps: + - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 + with: + persist-credentials: false + ref: ${{ github.event.pull_request.head.sha || github.sha }} + - uses: ./.github/actions/pnpm + - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 + with: + node-version: '22' + cache: pnpm + - run: pnpm install --frozen-lockfile + - uses: ./.github/actions/playwright-chromium + - run: pnpm --filter @threenative/playtest build + - run: pnpm --filter abyss-framework exec vite build --config vq-fog/vite.config.ts + - run: node --import tsx scripts/verify-volumetric-fog.ts + - uses: actions/upload-artifact@v7 + if: always() + with: + name: volumetric-fog-${{ github.event.pull_request.head.sha || github.sha }} + path: artifacts/volumetric-fog/ + retention-days: 30 + if-no-files-found: error + + fog-native: + name: Linux native fog correctness + needs: [fog] + # Reuse the proven native-platforms / native-assets ARM QuickJS route without changing defaults. + runs-on: ubuntu-24.04-arm + timeout-minutes: 60 + env: + CMAKE_BUILD_PARALLEL_LEVEL: '2' + TN_PLAYTEST_ALLOW_SOFTWARE: '1' + TN_PLAYTEST_NATIVE_SCREENSHOT_TIMEOUT_MS: '30000' + steps: + - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 + with: + persist-credentials: false + ref: ${{ github.event.pull_request.head.sha || github.sha }} + - uses: ./.github/actions/pnpm + - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 + with: + node-version: '22' + cache: pnpm + - uses: actions/setup-python@v7 + with: + python-version: '3.12' + - run: pnpm install --frozen-lockfile + - name: Build this source's public JavaScript packages + uses: ./.github/actions/workspace-dist + with: + save-bundles: 'false' + pack-archives: 'false' + - name: Verify native preflight and capture rejection controls + run: pnpm exec vitest run scripts/__tests__/vq-fog-native-proof.spec.ts --maxWorkers=1 + - name: Restore checksum-provisioned native dependencies + uses: actions/cache/restore@v4 + with: + path: packages/runtime-native/third_party + key: native-third-party-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('packages/runtime-native/scripts/download-deps.mjs', 'packages/runtime-native/scripts/package-android.mjs') }} + - name: Install the existing native lane's system prerequisites + run: >- + sudo apt-get update && sudo apt-get install -y + libasound2-dev libcurl4-openssl-dev libfontconfig1-dev libfreetype6-dev + libpulse-dev libudev-dev libx11-dev libxext-dev libxrandr-dev + libxcursor-dev libxi-dev libxfixes-dev libxss-dev libxkbcommon-dev + libgtk-3-dev libwebkit2gtk-4.1-dev libxcomposite-dev xcompmgr + libvulkan1 mesa-vulkan-drivers vulkan-tools xvfb zlib1g-dev + - name: Build the ordinary ARM desktop host + run: pnpm --filter @threenative/runtime-native native:build + - name: Verify the compiled surface acquisition status contract + run: | + cmake --build packages/runtime-native/build/tn-linux --target threenative-surface-texture-status-test --parallel 2 + packages/runtime-native/build/tn-linux/threenative-surface-texture-status-test + - name: Verify rendered presentation destination pixels + run: | + cmake --build packages/runtime-native/build/tn-linux --target threenative-canvas-presentation-test --parallel 2 + packages/runtime-native/build/tn-linux/threenative-canvas-presentation-test + - name: Isolate native resize with no fog allocation + id: resize-control + # Preserve the original fog sequence even when this diagnostic reproduces the abort. + # The final step below still fails the job if this control fails. + continue-on-error: true + env: + VQ_FOG_RESIZE_CONTROL: '1' + THREENATIVE_RUNTIME_BINARY: ${{ github.workspace }}/packages/runtime-native/build/tn-linux/mystral + run: node --import tsx scripts/verify-volumetric-fog.ts + - name: Run the same authored fog and pixel gates on the native host + env: + THREENATIVE_RUNTIME_BINARY: ${{ github.workspace }}/packages/runtime-native/build/tn-linux/mystral + run: node --import tsx scripts/verify-volumetric-fog.ts + - name: Require the no-fog resize control + if: always() && steps.resize-control.outcome != 'success' + run: exit 1 + - name: Retain native screenshots, host console and executable identities + if: always() + uses: actions/upload-artifact@v7 + with: + name: volumetric-fog-native-${{ github.event.pull_request.head.sha || github.sha }} + path: | + artifacts/volumetric-fog-native/ + artifacts/volumetric-fog-native-resize-control/ + retention-days: 30 + if-no-files-found: warn diff --git a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md index 92489d8d6f..0191305d30 100644 --- a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md +++ b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md @@ -77,7 +77,7 @@ Mixed ownership correction: actual-renderer regressions reproduced an obsolete c Fog implementation checkpoint: opt-in generated `templates/starter/src/render/volumetricFog.ts` now builds bounded overlapping height-density transport before exposure, with independent extinction, directional shadow lookup and explicitly unshadowed finite-range point lights. It owns a half-float nearest-filtered RTT, supports full/half resolution with per-pixel depth-discontinuity fallback, retains no history, and returns before graph allocation when off/unsupported/zero-density. No default tier enables it. The standalone fixture at `examples/abyss-framework/vq-fog/` exercises that exact source with outside/inside camera, light, wall, overlap, quality and rebuild controls. -Fresh proof: the fog and verifier contract suites pass 23/23, including generation of the actual depth/shadow transport WGSL with/without lights; focused strict source/test/fixture/verifier typechecks and the production Vite fixture build pass. These are not rendered-pixel tests: analytic/wall-depth image proof and all Phase 3 qualification remain open. The hosted `integration-volumetric-fog.yml` uses the built public playtest runner for actual canvas captures and adapter/source-SHA provenance, rejects software device loss, and retains diagnostic captures on failure. The local executor has no display tooling and its Unix-socket restriction was verified, so local screenshot execution was not attempted through an alternate route. +Fresh proof: the fog and verifier contract suites pass 23/23, including generation of the actual depth/shadow transport WGSL with/without lights; focused strict source/test/fixture/verifier typechecks and the production Vite fixture build pass. These are not rendered-pixel tests: analytic/wall-depth image proof and all Phase 3 qualification remain open. The hosted `fog` lane in `integration.yml` (folded there from the former `integration-volumetric-fog.yml`, one workflow per root AGENTS.md) uses the built public playtest runner for actual canvas captures and adapter/source-SHA provenance, rejects software device loss, and retains diagnostic captures on failure. The local executor has no display tooling and its Unix-socket restriction was verified, so local screenshot execution was not attempted through an alternate route. Scaffold validation initially failed only its whole-tree byte snapshot because the deliberate shared lifetime changes affect all thirteen kits and the new optional fog file affects starter. After inspecting that source-only delta, the expected generated-tree hashes were refreshed with an inline rationale; the unchanged starter-copy assertions now include the new file. The full scaffold suite passes 66/66. Fog/verifier plus CI structure/needs suites pass 164/164; relative documentation-link checks pass. No runtime evidence is inferred from these checks. From 57bc0e5afafcd7c90199b2fdcafb101c574e250e Mon Sep 17 00:00:00 2001 From: Joao Paulo Furtado Date: Sat, 3 Oct 2026 09:04:35 -0700 Subject: [PATCH 23/41] refactor(create-threenative): split starter fog into four render modules MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The generated fog source was one 350-line file; looks.spec.ts caps every generated render file at 200 lines as a smell test for a hidden engine. Split it along its existing seams — the options contract, the graph it owns, the per-step transport and the public entry point — with the same public API and the same generated WGSL, and remeasure starter's scaffold digest. --- .../__tests__/scaffold.spec.ts | 8 +- .../starter/src/render/volumetricFog.ts | 331 ++---------------- .../src/render/volumetricFogOptions.ts | 86 +++++ .../src/render/volumetricFogTransport.ts | 176 ++++++++++ .../starter/src/render/volumetricFogVolume.ts | 139 ++++++++ 5 files changed, 430 insertions(+), 310 deletions(-) create mode 100644 packages/create-threenative/templates/starter/src/render/volumetricFogOptions.ts create mode 100644 packages/create-threenative/templates/starter/src/render/volumetricFogTransport.ts create mode 100644 packages/create-threenative/templates/starter/src/render/volumetricFogVolume.ts diff --git a/packages/create-threenative/__tests__/scaffold.spec.ts b/packages/create-threenative/__tests__/scaffold.spec.ts index 3098b91301..229fc2c103 100644 --- a/packages/create-threenative/__tests__/scaffold.spec.ts +++ b/packages/create-threenative/__tests__/scaffold.spec.ts @@ -169,6 +169,9 @@ const BUG_REPORT_SKILL_PATHS = [ // Recomputed for VQ07 merged with develop 6c8858d74: retain receipt source and optional fog, // plus the new 0.2.8 template package pins and rain verifier .ts import. // VQ07 outside-shadow-map correction changes only starter volumetricFog.ts; remeasured by this spec. +// VQ07 file-length split: starter's one 350-line src/render/volumetricFog.ts becomes four files +// (the same source, same public API, same generated WGSL) that each stay under the 200-line cap in +// looks.spec.ts. No other template carries the fog, so only starter's tree moves; remeasured by this spec. const PRD_201_PARENT_SCAFFOLD_HASHES: Readonly> = { // Recomputed 2026-10-01 on the merge of develop a602467db (PRD-458/473): every template's frame // budget now comes from resolveTargetFps, so ten trees move and `rts` does not; the capability reference (365 -> 368 entries) then moved all eleven, because it ships in every scaffold. @@ -203,7 +206,7 @@ const PRD_201_PARENT_SCAFFOLD_HASHES: Readonly> = { sailing: "16b65ddbec34ebaaa305262128673dc495d3b75629b7cf2e62f0a47113a87f7f", shooter: "47d8ba38bd786f793adbef24d1b368b08c72f119ebdba2fb49840a278150e7aa", snow: "db821248cb3d0cc6059a052be0d958107fc1ac79d9b7a25b5e23dc9081554e1a", - starter: "0b6ac6e24974f3328c2776ee0155aaad79b157e7e17b7e600634893ee007bc80", + starter: "d9d8c504b76a29f1b23818cdde9197b3a3d5f773a2389c8d9720075f73c6882d", "tower-defense": "f0c1d76e4706ca16128035a12821f90b12052e5962fd651568c7672f08b96af6", }; @@ -303,6 +306,9 @@ const STARTER_PATHS = [ "src/render/postprocessing.ts", "src/render/worldEnvironment.ts", "src/render/volumetricFog.ts", + "src/render/volumetricFogOptions.ts", + "src/render/volumetricFogVolume.ts", + "src/render/volumetricFogTransport.ts", "src/render/palette.ts", "src/render/materials.ts", "src/render/arena.ts", diff --git a/packages/create-threenative/templates/starter/src/render/volumetricFog.ts b/packages/create-threenative/templates/starter/src/render/volumetricFog.ts index 1525cd636c..8ae595e2bd 100644 --- a/packages/create-threenative/templates/starter/src/render/volumetricFog.ts +++ b/packages/create-threenative/templates/starter/src/render/volumetricFog.ts @@ -3,348 +3,61 @@ // god rays; a separate clear-air sky remains valid. Density/phase/colour belong to this game. // Pinned Three 0.185.1 VolumeNodeMaterial skips directional lights and couples extinction to // illumination. This bounded integrator reuses GodraysNode's depth/shadow coordinates instead. -import { - type Box3, - type Color, - type DirectionalLight, - HalfFloatType, - NearestFilter, - type PerspectiveCamera, - type PointLight, - Vector3, -} from "three"; -import { - Fn, - If, - Loop, - float, - getViewPosition, - lightShadowMatrix, - max, - min, - type pass, - reference, - rtt, - screenUV, - texture, - uniform, - vec2, - vec3, - vec4, -} from "three/tsl"; +// `volumetricFogOptions.ts` is the contract it accepts, `volumetricFogVolume.ts` the graph it +// builds and owns, and `volumetricFogTransport.ts` the per-step integration inside it. +import type { PerspectiveCamera } from "three"; import type { Node, NodeMaterial, RenderTarget } from "three/webgpu"; +import type { IFogVolume, IVolumetricFogOptions } from "./volumetricFogOptions.js"; +import { validateFogOptions } from "./volumetricFogOptions.js"; +import type { ScenePass } from "./volumetricFogTransport.js"; +import { type IFogVolumeGraph, composeFogVolume } from "./volumetricFogVolume.js"; -type ScenePass = ReturnType; -type FogTexture = ReturnType & { - renderTarget: RenderTarget; - _quadMesh: { material: NodeMaterial }; -}; -export interface IFogVolume { - bounds: Box3; - /** Extinction per metre at/below baseHeight, independent of light intensity. */ - density: number; - baseHeight: number; - heightFalloff: number; -} -export interface IVolumetricFogOptions { - enabled: boolean; - renderer: string; - /** Explicit unqualified budget, 8–128. No automatic tier admission before measurements. */ - steps: number; - resolutionScale: number; - volumes: IFogVolume[]; - albedo: Color; - ambient: Color; - anisotropy: number; - sun?: DirectionalLight; - /** At most four unshadowed finite-range PointLights; spot/cube shadows are excluded. */ - points?: PointLight[]; - logarithmicDepth?: boolean; - reversedDepth?: boolean; - environment: { aerialPerspective: boolean; godRays: boolean; sceneFog: boolean }; -} -function finite(name: string, value: number, low: number, high = Number.POSITIVE_INFINITY): void { - if (!Number.isFinite(value) || value < low || value > high) - throw new Error(`volumetricFog: ${name} must be finite in [${low}, ${high}].`); -} -function validateVolumes(volumes: IFogVolume[]): void { - if (volumes.length > 8) throw new Error("volumetricFog: at most eight bounds."); - for (const volume of volumes) { - finite("density", volume.density, 0); - finite("heightFalloff", volume.heightFalloff, 0); - finite("baseHeight", volume.baseHeight, Number.NEGATIVE_INFINITY); - const { min: low, max: high } = volume.bounds; - if ( - ![...low, ...high].every(Number.isFinite) || - low.x >= high.x || - low.y >= high.y || - low.z >= high.z - ) - throw new Error("volumetricFog: bounds need finite positive extent."); - } -} -function validateOptions(camera: PerspectiveCamera, options: IVolumetricFogOptions): void { - if (!camera.isPerspectiveCamera) throw new Error("volumetricFog: perspective camera required."); - if (options.logarithmicDepth || options.reversedDepth) - throw new Error("volumetricFog: only ordinary perspective depth is qualified for this graph."); - finite("steps", options.steps, 8, 128); - if (!Number.isInteger(options.steps)) throw new Error("volumetricFog: steps must be integer."); - if (options.resolutionScale !== 1 && options.resolutionScale !== 0.5) - throw new Error("volumetricFog: resolutionScale must be 1 or 0.5."); - finite("anisotropy", options.anisotropy, -0.9, 0.9); - validateVolumes(options.volumes); - for (const channel of options.albedo.toArray()) finite("albedo", channel, 0, 1); - for (const channel of options.ambient.toArray()) finite("ambient", channel, 0); - if (Object.values(options.environment).some(Boolean)) - throw new Error( - "volumetricFog: disable aerial perspective, scene fog and god rays for the same medium.", - ); - const sun = options.sun; - if ( - sun !== undefined && - (!sun.castShadow || sun.shadow.map?.depthTexture == null || sun.shadow.shadowNode != null) - ) - throw new Error("volumetricFog: sun needs an initialized ordinary directional shadow map."); - const points = options.points ?? []; - if (points.length > 4) throw new Error("volumetricFog: at most four local lights."); - for (const point of points) { - if ( - !point.isPointLight || - point.castShadow || - !Number.isFinite(point.distance) || - point.distance <= 0 - ) - throw new Error("volumetricFog: local lights must be unshadowed finite-range PointLights."); - finite("point decay", point.decay, 0, 4); - } -} -function lightRadiance(light: DirectionalLight | PointLight) { - const value = new Vector3(); - return uniform(value).onRenderUpdate(() => - value - .set(light.color.r, light.color.g, light.color.b) - .multiplyScalar(light.visible ? light.intensity : 0), - ); -} +export type { IFogVolume, IVolumetricFogOptions }; /** Off, unsupported and zero-density return before allocating any graph/target/material. */ export function createVolumetricFog(camera: PerspectiveCamera, supplied: IVolumetricFogOptions) { if (!supplied.enabled || supplied.renderer !== "webgpu") return undefined; const options = { ...supplied }; - validateOptions(camera, options); + validateFogOptions(camera, options); const volumes = options.volumes.filter((volume) => volume.density > 0); if (volumes.length === 0) return undefined; - const bounds = volumes.map((volume) => ({ - ...volume, - low: uniform(volume.bounds.min.clone()), - high: uniform(volume.bounds.max.clone()), - })); - const cameraMatrix = uniform(camera.matrixWorld); - const inverseProjection = uniform(camera.projectionMatrixInverse); - const cameraPosition = new Vector3(); - const origin = uniform(cameraPosition).onRenderUpdate(() => - camera.getWorldPosition(cameraPosition), - ); - const ambient = uniform(new Vector3(options.ambient.r, options.ambient.g, options.ambient.b)); - const albedo = uniform(new Vector3(options.albedo.r, options.albedo.g, options.albedo.b)); - const sun = options.sun; - const shadowDepth = sun?.shadow.map?.depthTexture; - const directionValue = new Vector3(); - const targetValue = new Vector3(); - const sunDirection = - sun === undefined - ? undefined - : uniform(directionValue).onRenderUpdate(() => - sun - .getWorldPosition(directionValue) - .sub(sun.target.getWorldPosition(targetValue)) - .normalize(), - ); - const sunRadiance = sun === undefined ? undefined : lightRadiance(sun); - const localLights = (options.points ?? []).map((point) => { - const position = new Vector3(); - return { - point, - radiance: lightRadiance(point), - position: uniform(position).onRenderUpdate(() => point.getWorldPosition(position)), - }; - }); - const phase = (cosine: Node<"float">) => - float(1 - options.anisotropy ** 2).div( - float(1 + options.anisotropy ** 2) - .sub(cosine.mul(2 * options.anisotropy)) - .pow(1.5) - .mul(4 * Math.PI), - ); - let scratch: FogTexture | undefined; - let transport: Node<"vec4"> | undefined; + let graph: IFogVolumeGraph | undefined; let disposed = false; return { get target(): RenderTarget | undefined { - return scratch?.renderTarget; + return graph?.target; }, get material(): NodeMaterial | undefined { - return scratch?._quadMesh.material; + return graph?.material; }, get transport(): Node<"vec4"> | undefined { - return transport; + return graph?.transport; }, diagnostics: () => ({ steps: options.steps, resolutionScale: options.resolutionScale, volumes: volumes.length, - localLights: localLights.length, + localLights: (options.points ?? []).length, history: false, - renderTargets: scratch === undefined ? 0 : 1, - pixels: scratch === undefined ? 0 : scratch.renderTarget.width * scratch.renderTarget.height, - disposed, + renderTargets: graph === undefined ? 0 : 1, + pixels: graph === undefined ? 0 : graph.target.width * graph.target.height, }), compose(scenePass: ScenePass): Node<"vec4"> { if (disposed) throw new Error("volumetricFog: disposed controller."); - if (scratch !== undefined) throw new Error("volumetricFog: compose once per owned graph."); + if (graph !== undefined) throw new Error("volumetricFog: compose once per owned graph."); if (scenePass.camera !== camera) throw new Error("volumetricFog: scene depth must come from this camera."); if (Reflect.get(scenePass.scene, "fog") != null) throw new Error("volumetricFog: scene fog duplicates the same medium."); - const depth = scenePass.getTextureNode("depth"); - const scene = scenePass.getTextureNode("output"); - const integrate = Fn(() => { - const endpoint = cameraMatrix.mul( - vec4(getViewPosition(screenUV, depth.r, inverseProjection), 1), - ).xyz; - const toSurface = endpoint.sub(origin).toVar(); - const distance = toSurface.length().max(0.000001).toVar(); - const direction = toSurface.div(distance).toVar(); - const safeDirection = direction - .greaterThanEqual(0) - .select(direction.abs().max(0.000001), direction.abs().max(0.000001).negate()); - const near = distance.toVar(); - const far = float(0).toVar(); - for (const volume of bounds) { - const a = volume.low.sub(origin).div(safeDirection); - const b = volume.high.sub(origin).div(safeDirection); - const entry = min(a, b); - const exit = max(a, b); - const start = max(max(entry.x, entry.y), max(entry.z, 0)); - const end = min(min(exit.x, exit.y), min(exit.z, distance)); - If(end.greaterThan(start), () => { - near.assign(min(near, start)); - far.assign(max(far, end)); - }); - } - const transmission = float(1).toVar(); - const scattering = vec3(0).toVar(); - If(far.greaterThan(near), () => { - const ds = far.sub(near).div(options.steps).toVar(); - Loop(options.steps, ({ i }) => { - const position = origin.add(direction.mul(near.add(float(i).add(0.5).mul(ds)))).toVar(); - const extinction = float(0).toVar(); - for (const volume of bounds) { - If( - position - .greaterThanEqual(volume.low) - .all() - .and(position.lessThanEqual(volume.high).all()), - () => { - extinction.addAssign( - position.y - .sub(volume.baseHeight) - .max(0) - .mul(-volume.heightFalloff) - .exp() - .mul(volume.density), - ); - }, - ); - } - const illumination = vec3(ambient).toVar(); - if ( - sun !== undefined && - shadowDepth != null && - sunDirection !== undefined && - sunRadiance !== undefined - ) { - const projected = lightShadowMatrix(sun).mul(vec4(position, 1)); - const coordinate = projected.xyz.div(projected.w).toVar(); - // Outside the finite shadow map, Three treats the directional source as unshadowed. - const visibility = float(1).toVar(); - If( - coordinate.greaterThanEqual(0).all().and(coordinate.lessThanEqual(1).all()), - () => { - visibility.assign( - texture(shadowDepth, vec2(coordinate.x, coordinate.y.oneMinus())).compare( - coordinate.z.add(reference("bias", "float", sun.shadow)), - ), - ); - }, - ); - illumination.addAssign( - sunRadiance.mul(phase(direction.dot(sunDirection))).mul(visibility), - ); - } - for (const local of localLights) { - const toLight = local.position.sub(position); - const radius = toLight.length().max(0.01); - const attenuation = radius - .div(local.point.distance) - .pow(4) - .oneMinus() - .max(0) - .pow(2) - .div(radius.pow(local.point.decay)); - illumination.addAssign( - local.radiance.mul(attenuation).mul(phase(direction.dot(toLight.div(radius)))), - ); - } - // Exact homogeneous-step solution. Extinction persists when every light is off. - const stepTransmission = extinction.mul(ds).negate().exp(); - scattering.addAssign( - transmission.mul(stepTransmission.oneMinus()).mul(albedo).mul(illumination), - ); - transmission.mulAssign(stepTransmission); - }); - }); - return vec4(scattering, transmission); - }); - transport = integrate(); - const rendered = rtt(transport, null, null, { - depthBuffer: false, - type: HalfFloatType, - minFilter: NearestFilter, - magFilter: NearestFilter, - }) as FogTexture; - scratch = rendered; - rendered.setResolutionScale(options.resolutionScale); - const sizeValue = new Vector3(); - const size = uniform(sizeValue).onRenderUpdate(() => - sizeValue.set(rendered.renderTarget.width, rendered.renderTarget.height, 0), - ); - return Fn(() => { - const result = rendered.sample(screenUV).toVar(); - // Half-resolution nearest sampling cannot blend fog across a wall. At a depth mismatch, - // integrate the full-resolution pixel instead; do not borrow stale/foreground history. - if (options.resolutionScale < 1) { - const lowUV = screenUV.mul(size.xy).floor().add(0.5).div(size.xy); - const fullZ = getViewPosition(screenUV, depth.r, inverseProjection).z; - const lowZ = getViewPosition(lowUV, depth.sample(lowUV).r, inverseProjection).z; - If( - fullZ - .sub(lowZ) - .abs() - .greaterThan(max(fullZ.abs().mul(0.01), 0.01)), - () => result.assign(integrate()), - ); - } - return vec4(scene.rgb.mul(result.a).add(result.rgb), scene.a); - })(); + graph = composeFogVolume(camera, options, volumes, scenePass); + return graph.compose; }, dispose(): void { if (disposed) return; disposed = true; - scratch?.renderTarget.dispose(); - scratch?._quadMesh.material.dispose(); - scratch = undefined; - transport = undefined; + graph?.target.dispose(); + graph?.material.dispose(); + graph = undefined; }, }; } diff --git a/packages/create-threenative/templates/starter/src/render/volumetricFogOptions.ts b/packages/create-threenative/templates/starter/src/render/volumetricFogOptions.ts new file mode 100644 index 0000000000..03fcdc9daa --- /dev/null +++ b/packages/create-threenative/templates/starter/src/render/volumetricFogOptions.ts @@ -0,0 +1,86 @@ +// The contract this medium accepts. Everything here is checked before a graph, a target or a +// material exists, so a rejected request costs nothing and names itself in the error. +import type { Box3, Color, DirectionalLight, PerspectiveCamera, PointLight } from "three"; + +export interface IFogVolume { + bounds: Box3; + /** Extinction per metre at/below baseHeight, independent of light intensity. */ + density: number; + baseHeight: number; + heightFalloff: number; +} +export interface IVolumetricFogOptions { + enabled: boolean; + renderer: string; + /** Explicit unqualified budget, 8–128. No automatic tier admission before measurements. */ + steps: number; + resolutionScale: number; + volumes: IFogVolume[]; + albedo: Color; + ambient: Color; + anisotropy: number; + sun?: DirectionalLight; + /** At most four unshadowed finite-range PointLights; spot/cube shadows are excluded. */ + points?: PointLight[]; + logarithmicDepth?: boolean; + reversedDepth?: boolean; + environment: { aerialPerspective: boolean; godRays: boolean; sceneFog: boolean }; +} +function finite(name: string, value: number, low: number, high = Number.POSITIVE_INFINITY): void { + if (!Number.isFinite(value) || value < low || value > high) + throw new Error(`volumetricFog: ${name} must be finite in [${low}, ${high}].`); +} +function validateVolumes(volumes: IFogVolume[]): void { + if (volumes.length > 8) throw new Error("volumetricFog: at most eight bounds."); + for (const volume of volumes) { + finite("density", volume.density, 0); + finite("heightFalloff", volume.heightFalloff, 0); + finite("baseHeight", volume.baseHeight, Number.NEGATIVE_INFINITY); + const { min: low, max: high } = volume.bounds; + if ( + ![...low, ...high].every(Number.isFinite) || + low.x >= high.x || + low.y >= high.y || + low.z >= high.z + ) + throw new Error("volumetricFog: bounds need finite positive extent."); + } +} +export function validateFogOptions( + camera: PerspectiveCamera, + options: IVolumetricFogOptions, +): void { + if (!camera.isPerspectiveCamera) throw new Error("volumetricFog: perspective camera required."); + if (options.logarithmicDepth || options.reversedDepth) + throw new Error("volumetricFog: only ordinary perspective depth is qualified for this graph."); + finite("steps", options.steps, 8, 128); + if (!Number.isInteger(options.steps)) throw new Error("volumetricFog: steps must be integer."); + if (options.resolutionScale !== 1 && options.resolutionScale !== 0.5) + throw new Error("volumetricFog: resolutionScale must be 1 or 0.5."); + finite("anisotropy", options.anisotropy, -0.9, 0.9); + validateVolumes(options.volumes); + for (const channel of options.albedo.toArray()) finite("albedo", channel, 0, 1); + for (const channel of options.ambient.toArray()) finite("ambient", channel, 0); + if (Object.values(options.environment).some(Boolean)) + throw new Error( + "volumetricFog: disable aerial perspective, scene fog and god rays for the same medium.", + ); + const sun = options.sun; + if ( + sun !== undefined && + (!sun.castShadow || sun.shadow.map?.depthTexture == null || sun.shadow.shadowNode != null) + ) + throw new Error("volumetricFog: sun needs an initialized ordinary directional shadow map."); + const points = options.points ?? []; + if (points.length > 4) throw new Error("volumetricFog: at most four local lights."); + for (const point of points) { + if ( + !point.isPointLight || + point.castShadow || + !Number.isFinite(point.distance) || + point.distance <= 0 + ) + throw new Error("volumetricFog: local lights must be unshadowed finite-range PointLights."); + finite("point decay", point.decay, 0, 4); + } +} diff --git a/packages/create-threenative/templates/starter/src/render/volumetricFogTransport.ts b/packages/create-threenative/templates/starter/src/render/volumetricFogTransport.ts new file mode 100644 index 0000000000..fc88569b9e --- /dev/null +++ b/packages/create-threenative/templates/starter/src/render/volumetricFogTransport.ts @@ -0,0 +1,176 @@ +// The integrator: what one bounded volume does to one pixel, marching `steps` equal slices +// between the depth-correct entry and exit of the camera ray. Everything it reads arrives on +// `inputs`, so the uniforms that describe the camera, the bounds and the lights stay with the +// graph that owns them. +import type { DepthTexture, DirectionalLight, PointLight } from "three"; +import { + Fn, + If, + Loop, + float, + getViewPosition, + lightShadowMatrix, + max, + min, + type pass, + reference, + screenUV, + texture, + vec2, + vec3, + vec4, +} from "three/tsl"; +import type { Node } from "three/webgpu"; + +export type ScenePass = ReturnType; +type FogDepth = ReturnType; +export interface IFogBounds { + low: Node<"vec3">; + high: Node<"vec3">; + /** Extinction per metre at/below baseHeight, independent of light intensity. */ + density: number; + baseHeight: number; + heightFalloff: number; +} +export interface IFogLocalLight { + point: PointLight; + radiance: Node<"vec3">; + position: Node<"vec3">; +} +export interface IFogTransportInputs { + albedo: Node<"vec3">; + ambient: Node<"vec3">; + anisotropy: number; + bounds: IFogBounds[]; + cameraMatrix: Node<"mat4">; + depth: FogDepth; + inverseProjection: Node<"mat4">; + localLights: IFogLocalLight[]; + origin: Node<"vec3">; + shadowDepth: DepthTexture | null | undefined; + steps: number; + sun: DirectionalLight | undefined; + sunDirection: Node<"vec3"> | undefined; + sunRadiance: Node<"vec3"> | undefined; +} + +export function fogTransport(inputs: IFogTransportInputs): Node<"vec4"> { + const { + albedo, + ambient, + anisotropy, + bounds, + cameraMatrix, + depth, + inverseProjection, + localLights, + origin, + shadowDepth, + steps, + sun, + sunDirection, + sunRadiance, + } = inputs; + const phase = (cosine: Node<"float">) => + float(1 - anisotropy ** 2).div( + float(1 + anisotropy ** 2) + .sub(cosine.mul(2 * anisotropy)) + .pow(1.5) + .mul(4 * Math.PI), + ); + return Fn(() => { + const endpoint = cameraMatrix.mul( + vec4(getViewPosition(screenUV, depth.r, inverseProjection), 1), + ).xyz; + const toSurface = endpoint.sub(origin).toVar(); + const distance = toSurface.length().max(0.000001).toVar(); + const direction = toSurface.div(distance).toVar(); + const safeDirection = direction + .greaterThanEqual(0) + .select(direction.abs().max(0.000001), direction.abs().max(0.000001).negate()); + const near = distance.toVar(); + const far = float(0).toVar(); + for (const volume of bounds) { + const a = volume.low.sub(origin).div(safeDirection); + const b = volume.high.sub(origin).div(safeDirection); + const entry = min(a, b); + const exit = max(a, b); + const start = max(max(entry.x, entry.y), max(entry.z, 0)); + const end = min(min(exit.x, exit.y), min(exit.z, distance)); + If(end.greaterThan(start), () => { + near.assign(min(near, start)); + far.assign(max(far, end)); + }); + } + const transmission = float(1).toVar(); + const scattering = vec3(0).toVar(); + If(far.greaterThan(near), () => { + const ds = far.sub(near).div(steps).toVar(); + Loop(steps, ({ i }) => { + const position = origin.add(direction.mul(near.add(float(i).add(0.5).mul(ds)))).toVar(); + const extinction = float(0).toVar(); + for (const volume of bounds) { + If( + position + .greaterThanEqual(volume.low) + .all() + .and(position.lessThanEqual(volume.high).all()), + () => { + extinction.addAssign( + position.y + .sub(volume.baseHeight) + .max(0) + .mul(-volume.heightFalloff) + .exp() + .mul(volume.density), + ); + }, + ); + } + const illumination = vec3(ambient).toVar(); + if ( + sun !== undefined && + shadowDepth != null && + sunDirection !== undefined && + sunRadiance !== undefined + ) { + const projected = lightShadowMatrix(sun).mul(vec4(position, 1)); + const coordinate = projected.xyz.div(projected.w).toVar(); + // Outside the finite shadow map, Three treats the directional source as unshadowed. + const visibility = float(1).toVar(); + If(coordinate.greaterThanEqual(0).all().and(coordinate.lessThanEqual(1).all()), () => { + visibility.assign( + texture(shadowDepth, vec2(coordinate.x, coordinate.y.oneMinus())).compare( + coordinate.z.add(reference("bias", "float", sun.shadow)), + ), + ); + }); + illumination.addAssign( + sunRadiance.mul(phase(direction.dot(sunDirection))).mul(visibility), + ); + } + for (const local of localLights) { + const toLight = local.position.sub(position); + const radius = toLight.length().max(0.01); + const attenuation = radius + .div(local.point.distance) + .pow(4) + .oneMinus() + .max(0) + .pow(2) + .div(radius.pow(local.point.decay)); + illumination.addAssign( + local.radiance.mul(attenuation).mul(phase(direction.dot(toLight.div(radius)))), + ); + } + // Exact homogeneous-step solution. Extinction persists when every light is off. + const stepTransmission = extinction.mul(ds).negate().exp(); + scattering.addAssign( + transmission.mul(stepTransmission.oneMinus()).mul(albedo).mul(illumination), + ); + transmission.mulAssign(stepTransmission); + }); + }); + return vec4(scattering, transmission); + })(); +} diff --git a/packages/create-threenative/templates/starter/src/render/volumetricFogVolume.ts b/packages/create-threenative/templates/starter/src/render/volumetricFogVolume.ts new file mode 100644 index 0000000000..37e824e242 --- /dev/null +++ b/packages/create-threenative/templates/starter/src/render/volumetricFogVolume.ts @@ -0,0 +1,139 @@ +// The volume graph: what the camera, the bounds and the lights are each frame, plus the target +// the transport is rendered into and the one screen-space sample that reads it back. It owns that +// target and its material; the controller that owns this graph disposes both. +import { + type DirectionalLight, + HalfFloatType, + NearestFilter, + type PerspectiveCamera, + type PointLight, + Vector3, +} from "three"; +import { Fn, If, float, getViewPosition, max, rtt, screenUV, uniform, vec2, vec4 } from "three/tsl"; +import type { Node, NodeMaterial, RenderTarget } from "three/webgpu"; +import type { IFogVolume, IVolumetricFogOptions } from "./volumetricFogOptions.js"; +import { + type IFogBounds, + type IFogLocalLight, + type ScenePass, + fogTransport, +} from "./volumetricFogTransport.js"; + +type FogTexture = ReturnType & { + renderTarget: RenderTarget; + _quadMesh: { material: NodeMaterial }; +}; +export interface IFogVolumeGraph { + /** The bounded integrator itself, before the target it is rendered into. */ + transport: Node<"vec4">; + target: RenderTarget; + material: NodeMaterial; + /** Scene radiance attenuated by the medium, composited before exposure. */ + compose: Node<"vec4">; +} + +function lightRadiance(light: DirectionalLight | PointLight) { + const value = new Vector3(); + return uniform(value).onRenderUpdate(() => + value + .set(light.color.r, light.color.g, light.color.b) + .multiplyScalar(light.visible ? light.intensity : 0), + ); +} + +export function composeFogVolume( + camera: PerspectiveCamera, + options: IVolumetricFogOptions, + volumes: IFogVolume[], + scenePass: ScenePass, +): IFogVolumeGraph { + const bounds: IFogBounds[] = volumes.map((volume) => ({ + ...volume, + low: uniform(volume.bounds.min.clone()), + high: uniform(volume.bounds.max.clone()), + })); + const cameraMatrix = uniform(camera.matrixWorld); + const inverseProjection = uniform(camera.projectionMatrixInverse); + const cameraPosition = new Vector3(); + const origin = uniform(cameraPosition).onRenderUpdate(() => + camera.getWorldPosition(cameraPosition), + ); + const ambient = uniform(new Vector3(options.ambient.r, options.ambient.g, options.ambient.b)); + const albedo = uniform(new Vector3(options.albedo.r, options.albedo.g, options.albedo.b)); + const sun = options.sun; + const shadowDepth = sun?.shadow.map?.depthTexture; + const directionValue = new Vector3(); + const targetValue = new Vector3(); + const sunDirection = + sun === undefined + ? undefined + : uniform(directionValue).onRenderUpdate(() => + sun + .getWorldPosition(directionValue) + .sub(sun.target.getWorldPosition(targetValue)) + .normalize(), + ); + const sunRadiance = sun === undefined ? undefined : lightRadiance(sun); + const localLights: IFogLocalLight[] = (options.points ?? []).map((point) => { + const position = new Vector3(); + return { + point, + radiance: lightRadiance(point), + position: uniform(position).onRenderUpdate(() => point.getWorldPosition(position)), + }; + }); + const depth = scenePass.getTextureNode("depth"); + const scene = scenePass.getTextureNode("output"); + const inputs = { + albedo, + ambient, + anisotropy: options.anisotropy, + bounds, + cameraMatrix, + depth, + inverseProjection, + localLights, + origin, + shadowDepth, + steps: options.steps, + sun, + sunDirection, + sunRadiance, + }; + const transport = fogTransport(inputs); + const rendered = rtt(transport, null, null, { + depthBuffer: false, + type: HalfFloatType, + minFilter: NearestFilter, + magFilter: NearestFilter, + }) as FogTexture; + rendered.setResolutionScale(options.resolutionScale); + const sizeValue = new Vector3(); + const size = uniform(sizeValue).onRenderUpdate(() => + sizeValue.set(rendered.renderTarget.width, rendered.renderTarget.height, 0), + ); + const compose = Fn(() => { + const result = rendered.sample(screenUV).toVar(); + // Half-resolution nearest sampling cannot blend fog across a wall. At a depth mismatch, + // integrate the full-resolution pixel instead; do not borrow stale/foreground history. + if (options.resolutionScale < 1) { + const lowUV = screenUV.mul(size.xy).floor().add(0.5).div(size.xy); + const fullZ = getViewPosition(screenUV, depth.r, inverseProjection).z; + const lowZ = getViewPosition(lowUV, depth.sample(lowUV).r, inverseProjection).z; + If( + fullZ + .sub(lowZ) + .abs() + .greaterThan(max(fullZ.abs().mul(0.01), 0.01)), + () => result.assign(fogTransport(inputs)), + ); + } + return vec4(scene.rgb.mul(result.a).add(result.rgb), scene.a); + })(); + return { + transport, + target: rendered.renderTarget, + material: rendered._quadMesh.material, + compose, + }; +} From 21222ef508ae853b806843b46fe269988b71cbce Mon Sep 17 00:00:00 2001 From: Joao Paulo Furtado Date: Sat, 3 Oct 2026 09:19:28 -0700 Subject: [PATCH 24/41] fix(create-threenative): make the shipped fog reachable instead of dead source MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The starter shipped src/render/volumetricFog.ts and nothing called it, which two template contracts reject: every module under src/render must be imported by the game, and every exported render symbol must be called. Play.ts now passes a per-graph `fog` factory to setupPost, which forwards the medium to WorldEnvironment's existing baseColour hook and releases the previous one before a tier change replaces the chain. MIST is off, so createVolumetricFog returns before it allocates and the shipped picture is unchanged. Also register the two temp-dir creators the guard rejected — both remove their scratch root in a finally — and drop five retained fog PNGs that are byte-identical to copies the authoritative 640c103 proof still carries. --- .../PRD-VQ-07-volumetric-fog.md | 8 ++-- .../vq07-progress/001b93400/scatter.png | Bin 32743 -> 0 bytes .../vq07-progress/1505e018a/resizeRestore.png | Bin 42747 -> 0 bytes .../vq07-progress/1f73e559c-native/fog.png | Bin 72875 -> 0 bytes .../vq07-progress/1f73e559c-native/inside.png | Bin 130454 -> 0 bytes .../vq07-progress/1f73e559c-native/off.png | Bin 47812 -> 0 bytes .../vq07-progress/4f8fe47b1/fog.png | Bin 42747 -> 0 bytes .../vq07-progress/4f8fe47b1/off.png | Bin 28892 -> 0 bytes .../vq07-progress/4f8fe47b1/zero.png | Bin 28892 -> 0 bytes .../__tests__/scaffold.spec.ts | 6 ++- .../templates/starter/AGENTS.md | 1 + .../templates/starter/CLAUDE.md | 1 + .../starter/src/render/postprocessing.ts | 15 +++++++ .../starter/src/render/volumetricFog.ts | 3 ++ .../templates/starter/src/scenes/Play.ts | 39 ++++++++++++++++++ scripts/__tests__/temp-dir-guard.spec.ts | 8 ++++ 16 files changed, 77 insertions(+), 4 deletions(-) delete mode 100644 docs/verification/vq07-progress/001b93400/scatter.png delete mode 100644 docs/verification/vq07-progress/1505e018a/resizeRestore.png delete mode 100644 docs/verification/vq07-progress/1f73e559c-native/fog.png delete mode 100644 docs/verification/vq07-progress/1f73e559c-native/inside.png delete mode 100644 docs/verification/vq07-progress/1f73e559c-native/off.png delete mode 100644 docs/verification/vq07-progress/4f8fe47b1/fog.png delete mode 100644 docs/verification/vq07-progress/4f8fe47b1/off.png delete mode 100644 docs/verification/vq07-progress/4f8fe47b1/zero.png diff --git a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md index 0191305d30..080176fa2b 100644 --- a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md +++ b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md @@ -85,7 +85,7 @@ Actual diagnostic progress: [hosted run 36989192897](https://github.com/ThreeNat The unchanged-HTML diagnostic rerun [36990205268](https://github.com/ThreeNativeHQ/threenative/actions/runs/36990205268) identifies the exact failed resource in `off/http-errors.jsonl`: `/favicon.ico`, HTTP404. The fixture now uses the repository's existing inline-favicon convention. Its new source regression failed first; fog/verifier tests then pass 24/24 and the production bundle builds. No error assertion was weakened. The next hosted run must verify that this removes the console failure and reaches fog-on capture. -First successful actual fog captures: [run 36990624761](https://github.com/ThreeNativeHQ/threenative/actions/runs/36990624761), source `4f8fe47b1801282827c9b5d0f0cba40b99c7c2a7`, Chromium WebGPU / Google SwiftShader / 640×400. All nine named variants passed with empty diagnostic lists, and off/zero images were pixel-identical. The unchanged [fog-on PNG](../../verification/vq07-progress/4f8fe47b1/fog.png), [inside-volume PNG](../../verification/vq07-progress/4f8fe47b1/inside.png), [off baseline](../../verification/vq07-progress/4f8fe47b1/off.png) and [all-variant provenance](../../verification/vq07-progress/4f8fe47b1/provenance.json) are retained. Visual inspection confirms bounded mist and light response. The fixed wall-center patch (x184, y216, 18×18) has exactly zero changed pixels against off; full/half fog mean absolute difference is 0.0695/255. This is browser software-rendered correctness progress, not native or hardware-performance qualification. Same-node replacement ownership still needs a unique installation receipt; a green screenshot run does not close that review finding. +First successful actual fog captures: [run 36990624761](https://github.com/ThreeNativeHQ/threenative/actions/runs/36990624761), source `4f8fe47b1801282827c9b5d0f0cba40b99c7c2a7`, Chromium WebGPU / Google SwiftShader / 640×400. All nine named variants passed with empty diagnostic lists, and off/zero images were pixel-identical. The unchanged [fog-on PNG](../../verification/vq07-progress/4f8fe47b1/fog.png), [inside-volume PNG](../../verification/vq07-progress/4f8fe47b1/inside.png), [off baseline](../../verification/vq07-progress/1bb878e03/off-baseline.png) and [all-variant provenance](../../verification/vq07-progress/4f8fe47b1/provenance.json) are retained. Visual inspection confirms bounded mist and light response. The fixed wall-center patch (x184, y216, 18×18) has exactly zero changed pixels against off; full/half fog mean absolute difference is 0.0695/255. This is browser software-rendered correctness progress, not native or hardware-performance qualification. Same-node replacement ownership still needs a unique installation receipt; a green screenshot run does not close that review finding. Installation ownership correction: `setOutputNode` now returns a unique optional receipt with `isCurrent()` / `dispose()`, capturing the actual `RenderPipeline` installation. Same-node reinstall regressions failed first; old observers and disposers now respect the receipt, as does the generated direct base-colour path. Legacy void-style adapters (including historically ignored return values) retain compatibility behavior but do not gain installation-level guarantees. Receipts own only the installed pipeline; graph dependencies still belong to their explicit caller. The superseded node-equality query was removed. The focused renderer/chain/environment/shared-source/scaffold suite passes 157/157, core and touched-source/test typechecks pass, and API/capability checks pass. Generated-source hashes are refreshed only for this intentional shared lifecycle edit. Fresh hosted capture is selected for subsequent renderer/chain/canonical-environment changes. @@ -120,7 +120,7 @@ Render-boundary correction: [run 36999492881](https://github.com/ThreeNativeHQ/t Measured-settle correction: [run 37000014054](https://github.com/ThreeNativeHQ/threenative/actions/runs/37000014054) at `47464cca247eeb2391de7057276cef9cb8aa36fc` observed one completed render interval before the fixed-tick sequence ended, so it correctly failed the three-frame predicate. Artifact `11222909308` matches SHA256 `54d4a610d60770663f3bfefc790c07ffc22cf76b69ed63a318751c2d6a441eba`. `FixedStepLoop.advance()` simulates only; the bridge interprets these authored waitFrames as ticks. Each capture and each resize transition now uses the existing `waitForResource` observer for `state.stableTextureFrames >= 3`, bounded to 30 seconds. That mechanism advances one fixed tick between bounded polls, allowing the real render loop to progress and the game to sample its actual counters; elapsed time or poll count alone cannot satisfy it. Public scenario round-trip tests validate every arm. All resource/image thresholds remain unchanged. The existing desktop project bundler also compiled this same portable game source successfully (entry `src/game.ts`); that compile is not native execution proof. -Target/depth resize and renderer-accounting proof: [run 37000862324](https://github.com/ThreeNativeHQ/threenative/actions/runs/37000862324) at `1505e018aa38630b91893ab8265c447833e99a51` passed all 17 cases with empty diagnostics. Artifact `11224155982` matches SHA256 `a21b102966a09371896a4d796fd278525925a5c4b6ce70b2a81cb1eb79ac45d4`. Actual target sizes were 320×240 then 640×400 with one controller/target creation and zero teardown; restored fog pixels exactly equal the original fixed-size fog frame. Independent renderer texture count returns to 5 at final off, equal to the off baseline, after three observed stable render intervals in both arms. The [small-target capture](../../verification/vq07-progress/1505e018a/resizeSmall.png), [restored capture](../../verification/vq07-progress/1505e018a/resizeRestore.png) and [provenance/observations](../../verification/vq07-progress/1505e018a/provenance.json) are retained unchanged. Browser implementation qualification now includes all these controls; native execution, OS-window lifecycle, hardware performance and repository promotion gates remain separately unproven. +Target/depth resize and renderer-accounting proof: [run 37000862324](https://github.com/ThreeNativeHQ/threenative/actions/runs/37000862324) at `1505e018aa38630b91893ab8265c447833e99a51` passed all 17 cases with empty diagnostics. Artifact `11224155982` matches SHA256 `a21b102966a09371896a4d796fd278525925a5c4b6ce70b2a81cb1eb79ac45d4`. Actual target sizes were 320×240 then 640×400 with one controller/target creation and zero teardown; restored fog pixels exactly equal the original fixed-size fog frame. Independent renderer texture count returns to 5 at final off, equal to the off baseline, after three observed stable render intervals in both arms. The [small-target capture](../../verification/vq07-progress/1505e018a/resizeSmall.png), [restored capture](../../verification/vq07-progress/640c103-browser/fog.png) and [provenance/observations](../../verification/vq07-progress/1505e018a/provenance.json) are retained unchanged. Browser implementation qualification now includes all these controls; native execution, OS-window lifecycle, hardware performance and repository promotion gates remain separately unproven. Measured workload/cost record for source `1505e018aa38630b91893ab8265c447833e99a51`, run `37000862324`, Google SwiftShader (`vendor=google`, `architecture=swiftshader`), browser WebGPU / 640×400: full fog renders 256,000 transport pixels at 48 steps, half fog 64,000 transport pixels at 48 steps, with one ordinary shadowed directional light and one unshadowed finite-range point light. The overlap arm uses two bounds; the normal arm uses one. Half-resolution edge fallback can perform additional full-resolution work, so the pixel ratio is not a claimed cost reduction. Renderer texture counts are 5 off and 10 active, returning to 5 after teardown. Pipeline-census creation service totals over each entire boot/capture window were 1.4 ms off (5 events), 2.5 ms full fog (8 events), and 1.9 ms half fog (8 events). These coarse host-side pipeline-creation timings are **not per-frame fog time, GPU duration or hardware performance**. Timestamp tracking was disabled; per-frame GPU cost and hardware tier admission remain unmeasured. No default tier is enabled from these numbers. @@ -132,7 +132,7 @@ Native-slice local validation: source/fixture/capture/native-handshake/CI-struct Independent review passed for native-route source staged at tree `15da770ebf0915f8f53abf3276e29a413e00f558`: the reviewer reran verifier/native-proof tests, 14/14 passed, and found no blocker in the supported predicate mapping or native provenance/console/pixel guards. A final scenario strengthening also waits for three observed render intervals after **every** fog/inside/off/rebuild transition, with labeled snapshots, rather than only after the last transition. The prior disposal events prove real controller/target-object release; these additional boundaries establish that each intermediate graph actually rendered before replacement. Exact create/release/live and restored-pixel thresholds are unchanged. Native execution remains pending. -Native progress and exact failure: [run 37005493900](https://github.com/ThreeNativeHQ/threenative/actions/runs/37005493900), source `1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7`, built the ordinary Linux ARM64 host and accepted all fifteen pre-resize arms with actual `device.screenshot`, named Mesa llvmpipe WebGPU adapter and empty runtime diagnostics: off, zero, fog, inside, sunOff, pointOff, overlap, half, wallOff, blackOff, scatter, scatterSunOff, scatterPointOff, lifecycle and lifecycleOff. Actual [native fog](../../verification/vq07-progress/1f73e559c-native/fog.png), [inside](../../verification/vq07-progress/1f73e559c-native/inside.png), [isolated scattering](../../verification/vq07-progress/1f73e559c-native/scatter.png) and [full provenance with unchanged controls](../../verification/vq07-progress/1f73e559c-native/provenance.json) are retained. Native artifact `11226555526` matches SHA256 `cc5cc8f973b8edc9f16a188f3ae68f1e0afb6b2f508ee4a392df222191587af5`. After download, the exact source's pinned pixel metric function passes these native controls: zero/off and final-off/off are identical, evaluation/wall RGB is zero, calibration difference is zero, directional mean delta is 15.9577/255 (changed ratio 0.99333), and point mean delta is 48.7721/255 (ratio 1.0). These cross-arm metrics were recomputed locally from real PNGs because the hosted script stopped before its final metric phase. Native lifecycle observed 4 created / 3 target and material releases / 1 live target, then 4 releases / 0 live targets, textures back to 5 after at least three actual stable render intervals. +Native progress and exact failure: [run 37005493900](https://github.com/ThreeNativeHQ/threenative/actions/runs/37005493900), source `1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7`, built the ordinary Linux ARM64 host and accepted all fifteen pre-resize arms with actual `device.screenshot`, named Mesa llvmpipe WebGPU adapter and empty runtime diagnostics: off, zero, fog, inside, sunOff, pointOff, overlap, half, wallOff, blackOff, scatter, scatterSunOff, scatterPointOff, lifecycle and lifecycleOff. Actual [native fog](../../verification/vq07-progress/640c103-native/resizeRestore.png), [inside](../../verification/vq07-progress/640c103-native/cameraCut.png), [isolated scattering](../../verification/vq07-progress/1f73e559c-native/scatter.png) and [full provenance with unchanged controls](../../verification/vq07-progress/1f73e559c-native/provenance.json) are retained. Native artifact `11226555526` matches SHA256 `cc5cc8f973b8edc9f16a188f3ae68f1e0afb6b2f508ee4a392df222191587af5`. After download, the exact source's pinned pixel metric function passes these native controls: zero/off and final-off/off are identical, evaluation/wall RGB is zero, calibration difference is zero, directional mean delta is 15.9577/255 (changed ratio 0.99333), and point mean delta is 48.7721/255 (ratio 1.0). These cross-arm metrics were recomputed locally from real PNGs because the hosted script stopped before its final metric phase. Native lifecycle observed 4 created / 3 target and material releases / 1 live target, then 4 releases / 0 live targets, textures back to 5 after at least three actual stable render intervals. The native gate is **failed**, not complete: `resizeSmall/report.json` records `TN_PLAYTEST_HOST_EXITED`, `wgpuSurfaceGetCurrentTexture` validation **“Surface image is already acquired”**, then SIGABRT. No resize screenshot or console.json was produced. The verifier's subsequent console-file read raised ENOENT and obscured this primary report in the job log; neither is waived. Native resize/restore remains unverified and the native phase/acceptance boxes remain open. The same exact source's browser job passed all 17 cases and all identity/scattering/resource/resize metrics, artifact `11225682361` SHA256 `5cc58198f77714817c43c486cf8b83d7b7e3ef23730e4010c1026b2918740c35`. This includes labeled render settling after every intermediate lifecycle graph. Available native console logs contain no `TN_FRAME_BUDGET`/`TN_HOST_GAP` windows; no per-frame fog cost is claimed from pipeline-creation timings. @@ -176,3 +176,5 @@ An independent line-by-line audit recomputed identity/scattering/lifecycle evide Combined-source local qualification after the 42fa306c merge: core JS/declarations build, root typecheck, current API surface/capability manifest and scaffold import checks pass. Root lint passes with 1,032 warnings and no errors. The complete core plus fog/scaffold/verifier selection passes 2,377 tests with two skipped across 181 files. An initial subprocess selected an unintended pnpm 11 executable and failed the hot import-meta fixture; the supported pinned pnpm 10.25.0 environment passes that fixture 3/3 and the entire selection without changing source or assertions. Hosted browser/native qualification of this reconciled source is pending; the earlier 640c103 proof remains explicitly source-scoped. Documentation links and the real staged evidence-byte budget pass. Documentation/citation/budget unit selection reports 29 passed and two failed: both CLI-fixture failures are the existing local `tsx` listen-EPERM restriction before the evidence command starts, while the real-tree budget unit passes. No CLI assertion or permission boundary is changed; ordinary hosted CI must execute the full lane. + +Evidence-budget repair: hosted `budgets` and the real-tree budget unit failed closed because this branch's retained progress tree pushed `docs/verification` to 72.1 MB against a 72 MB cap, with the message "stop the growth at the commit that causes it, do not raise the cap". The cap is untouched. Three retained PNGs were byte-identical duplicates of images the authoritative `640c103-native` proof already carries — `fog.png` = `resizeRestore.png` (`95e2d1a1…`), `inside.png` = `cameraCut.png` (`1bec85d6…`) and `off.png` = `sceneRepeatedOff.png` (`340699e0…`) — so those three files are deleted and the two links above now name the surviving copies; both `provenance.json` files, every recorded SHA256 and the remaining five native controls are retained, and byte-identity stays checkable from the recorded digests. The tree returns to 71.9 MB. No threshold, cap or assertion moved. diff --git a/docs/verification/vq07-progress/001b93400/scatter.png b/docs/verification/vq07-progress/001b93400/scatter.png deleted file mode 100644 index 1e1e0c5a5058978b583c324ea40c4867c4c29e4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32743 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 diff --git a/docs/verification/vq07-progress/1505e018a/resizeRestore.png b/docs/verification/vq07-progress/1505e018a/resizeRestore.png deleted file mode 100644 index 93faf81b388a5558c1f51b55cb6ced7e30f455f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42747 zcmeEt<8vlX(Cri3dSctz*iJUKv$1VE8{4*R+qP|cH`d+Xz4iVL_sjd~OwCM9O;7dd znmN-Qt{^9Y0E+_)000nvN{T800HFQ=07x7(=)a!&cyUJn02%O8R7k}=>#F-_;+0g& zt{Wn<@=Us$r<1CSx;h7S0*OV50dXR>tZ4$~ThWF?IYjebh$#!hS{7NtFhQl2`)$wr zO_CA3J;;r3451q*G76WN@zHDVI|)eW;Qqeg%k1nu2$=V)v_iQGO|sNu8;xMG(!b_% zp)^R<|7}1P0o48*vjkHDRQ@-o8HCzj^&b{*_@npzhe|eru=@XDIXe+V-G8Wp8waZK zA66hp{_isXdp7^;H~;_1kOxxskJcH&!JT8ke`Np1*bA>u$JV^t1kA( z1i6O_Vl^<)Hyuh*|Mk0cDO)Fq^3DYRWI7os8JwYY#^?zzeAI<}FTi#f<`*sCBxUgP zeDiLz7c2a}l=MadGGq))_+Yz8R1!$T?ji06Nwh<--LE*TnC(P3tnfrg->Id?pz(m# zy8zS$CTYrpihrU989)HwKDJg!vqK%)KQ!+@d&I6(ucdvH?_7)yCYY;bT1jz4O6!>W z-=k)*48QFTwtn}o0B$(DP3=GJno9o}6lCcJ66MC56TaNt=!jY=I>IAyK5gmunRR`4 z8PO%Bf6>pXc=QC^VEmO!29uSI-@GtdSQym%7W=*biF8|gD!aC9sGwf5It)B0<6D{{ za4b6%NoK<4nPFR35H@8bNU0m7@H2ob%W_0}os5#Z==HAG6YHO zHbOT_!EV4&#h3}u4I{5qJ_-+n4e=(;2Beuhz3$;AEty2{7Ow4T)dSBGqa`+LPs5!= z%;*a8_$B;mPs!^dh$s|5q7-Io_OgdJS7tq>!D9S?7krCcICS*S$-&O^9#5`# z^*&RfAfvF(Z-TIl&wPkokTzh?H5VZ0d0YI1W4 zcV|;aoo>w8eybwooi0P+sn?dDhwTFx__}=nJkh$b!&8b;D~#3>FAu|_d!6%{>Xh@o zveS!GID*eo(`3q~)C%_FUwp=f{CZ2+)Da1QtJ}g>0QJ!JgwJKVt+h#C>NFq+XUv`t zO#1jFIFdSNR?00JXMCKrAEsj(q~%YL?rYOT+KkI)K%mTRyL6JimjdsWqjvPely3CU zz~KVO++*Nv#j7{OTgaLvY~_ufJa*rS8e7Whge#UKeUu|dE@rPDLLtsN-ER)|6`L~- z(HDWQR6lqmN}UtW8%~SpwM%H8K^gT|1jwL{F4#$2C|%GxD$>lFGhLJsdS1uqXQ0S>CrMwC?rW-AzkNn^rd7(p- zHKEsyj-{r`9sJ)%+kzvXQyIgoI!%*EcKt|8mY}-KTizc#DyrK*Zshc)%rp?^T7FL- zBe_fo5FG05bcJ9XQ@~z!Bv-sI{=pAk_Sum#Yk1A#q*;g5&QO5IyrfAqLy0HLt9w5aLSP6zbhMBZnW|O4ctyjsXyl6?g4A)8M8qNfXAbHWolOZg!?+ z$aCySCwMmp$FIF6KSWh9o^PV@=aJ$#SIqR~(W%AyFV?j@u=)cOW+ac<>uX* zE%uYx{^3p-d3gT&VxptMO2pwEIdJ+iN_Ur828akn+;z*Sud!7ayx5#<9qP#@TY}|$ zF^yMaO2FAXuai0HgWbZDFxU3MQxad^+xhNo1=5Ld&dS7*I#+x-%l0}Uq=Tg6hmM%; z*(hu!s`h7H-+_UY}JBdF|{{B0<>)vu;7vkPUL5Z6lk^@&Y!T`y%$K9Vn zccV#|6Vdk%Y!ADg75sN;qAPX9gOLQUV358!F0de) zW@RIlZf**n>^Fwt=bLDf1k33WMj2mG1i&9M8N#)1u5pzS3vwWa-_$t3^AYc1uw|;?s-v(?}8r$;~Jd)}I9nlFJDB8FOK;hI^S~-tDj<=h& zi@(ZZb7wd}^k2!RXyOUD(W*KeyL#I8wqL!)M;N4X1HVH9X=gk?1A!pLhIukOh!R}C~A zwMLwoFh0aBh(`YobAtDHLG1Rt-Mii1?e_S=d@8v$T_7p}B&04#qP|V9uC@YdmWb@q zIO=!4oRhh{-j@3V4e3e#IY!U5S)|cr{JlY!YRixhT zf(S9*WJBy5>5Bs}SI{()V(|4t|11RnxqXJA&7pN3N9=i>Bk$k_R4B$s!4JR|rPKQV zS^&p)ASQIYOYvkIWx(QXK|5?u zTOM&21v#)^1&%2@L3qRI z>FIiw_s0u0i@U|w$h(`sa&F_gHz!`53rFrW)L?&T>uoU7k0Q(|QD{AxzJ*Z(9cHaS zJG|D$|Iq?y`SqK7eo@aJ!-=6s|Ik;qfgc~a*Ji_II}TXc8V%%*vii%WP6HrntL+EV zTu@g~_l<}-G%w7Hdb>3NfF{V+`D-I;UzWE#ezk#=#v^W4ShCY}Y8jb)geXTCMCnYB zp?NWb;`142H1NOfcdUQzPn=$#nsG2p%;~w^)%C?3kq-i}U7VsyE&}?%y{?{K>4iijtiK zZewG|xl{avXzN>6euYZ}P1tPSF#Kd^R^Ao+$fbSpN5o-pbTfpmlI=U}|j4eG3(?V&wRTAq`9HUuT%o3S~gGLq&I2h`k*5;rhUHTl69(*OCyr zyLv9a8cKofTZP{i%7TxrxlefF-!ts9h?AA-l+iYBu1uW#RE3b>xil!auAjbF@6rC! zo5^(^U?SHLQ7(i;!Eq6Ugq!b?=+OI#vn~|1qf8wLnOJUO&>@YJ9WYPKHffAAdwv3+ z_ioZWAmitR-8y%!hfDZT zIvFKeMe8=?G5DiVy>Y~_Jfs2T7l(gKrK^xxG5CrMcv4~9R32~#AWJl(@PTt~g@h=Wammp2Ab2CBwdJ<{8Z@tY#LyVZjl0b-+ zN1Pb!MlFL7qGGXQ;EqtTOcOo2sB^T=u2tq z!-YnDMaDr;gw$z^zPkW^t>147d<1`=ci|3pXoOng^N|7$AL8g(HjQvaE2O6OoH>+v*hgH&t&k)x8AGT}zzZ$&Os@O~fs7G7moWesm zrdn+@zs0#i-B{EW0lB>ho{?)N+Xz1?2A77Ibwx#jD&TG2!MAWIcOWGO>Ie;vorFb7 z5MCW^Tz0LYcp0sWus2MCuYK+qz@dphgZxq%9 zp?#+2aqyYl4xbb!J1}_c5kh<4x30dQ8s$x_8Dect@B6`@M+i%7*t0*{fqeATkGAV%3noS|O) z(NC(dGG?q1`Miv~T1qp6idnG-(ITXeXBqAOh!=<_0#9(k&Rw_)LCOZ5)zvxE!LnIR!i=X5bg~kWY~SlKAZ?(W;O|7( z-(1Ut30SQ5qCd;zMACt!=*jFkqN2A|7qa#U^0$MAVu_}H*uv}Sv}p0|vJH%QJ>Dtf zV#VGFFtxr_A|Shg*B+bNf$oa?z}Qz%HS9#{_FmE)DIr>>Im9RQv= zO547gWKJ!a^%pbv24xd0GXkNFxM_IK-kmJ-+dvnZ>$&hd+8>EKpXmKR%<%SbbKbM;U+i1IgR>S&Q_e+oq-V$`5Jxe3sjDm9x~o8^K;<(^<3v* z7IUT|AFR=YAPo}JZI)|vfI7sHA42_#z-?p*h!84_`hLDt8}Fa z$9KU7?Vay+>mM}=ww$uhfBPgqfY5iUSux?+qhzS%i}Pz4&`8uETgXbNIXZ8BaovT= zWoYs*URGvSR(jr^96Y>zG@98c6WF$)d-6&tw+T-wjBXczSek@&V%8wmC+AXIb42`p z)Y@Fv`9dCc-rOm^2KDE^Tws7Z%*a9shlmXw?)u95m3w$p*UD9`B<4AS$>bVrhQuHr z*O(L)1FOumJw~}OBcsCO25zWMFyw;ZhcFNuF3m2)Ce>;QYV$?CXm^tZ)n|H(QgJz zbvuEJbBhoG3QK*paDH!abh2>pz7q*+G_=t3`QpNqmqs94?@B)8cE^vGhwEbyiBMji zA{6R95*G34xySGQYr1l=_w~B7RuAuM+D<_4S8^VK`Lg8#{~rJTM8NAH_8&Lu9G+N; zB=|>*5!2xqADIRCa-ow1Y_xUtj0IY}?0__B@uFl$ET>i0@#Y|9j$on@tgxDCTZ7qp z`=vNBTZN%L=r2)&pn?}$s@mue!mz9Q&&Y!z*1`ig2^(gV($l0V&6EgVa9k})DmExs zfCc&=j{Xf&?agc`iO>Vb0_D^naqK4G`~mnVUvGdudKj#A;JQi!J%UK3&IZ&^ai$$Y zeTu~Hdt)U^PiI%HP`xZYZ}<1b7ya9V!&h@VM;Bi%AX2INVn;D^cg_m_MdNuF`}yUp zp+d*(+uY;vKi67rqrdDssg`L>?+1}9RXB7vpad-OJv`oLj1tb&)>RqkylY&P-Q9e2 z@b53G+N{pdy8FS(rWethA;n$%h%Q2Tc? zH6|7!OPogsb%#ez{K#~@)RAEzn@JQ$6pZTPWRj}3V&r2p!Ewh$DXdK#cH>Op{^aRk z7=&^ai=>7dw+Z7B_PH}>_gpn@8-RGK^6_*HHZB?e!u z)%;dOf$*U&b62M9cu1#<>+W_e-96Z{;*mIFgF?+3bf$j-qV0?ruG*)CO(Q)Tk50Y0 zt84ZA7_5oH-pTQ%8f1QJ<1k-A!sGVs1?|Bo_tTxEEh*gLCIPYES5*6UU~zk?LthU* zN@E}IE9GT#@26k4a5`mk#eB*voP*`7dJ7x(Dm|Qhmo+*RQjN2p4At6Y@~006YF^i! z5joUY9zEwc5^;f@Fv2JXz7oY+VzXF%ZI1e!!E1y9=X*M)U*c^qFXsiWmg9rIsf=`9 ze};}hfyDgqKG?CFNQy_CkfJi^p>OT9B4fn3&#J=yuPnSG3p0I3Jdsp*NL;i5J=9&~ zKA*{?a4X8`!a>Wrf2tbrW1Hbx`_1-K+{`Q9U%O7s=T)B1erau8tw3QVZPUbcu6Ose zVRGHKxAk<@v|1Un&+FeHvaJxX=elSh=wf-e{-{RUS-QUzQRi6OGv4p{iLi?EwA|(K zu7tnq!;b8@IBp4`uXwfQ#uG~h;5gDMTVS^$LgPS_xzu>I!(zcs2=CEC%#k7kW#rD) zWQq_tbl~k-307?)-+0tyTs9Tzw)b2pt8=jkvapXtgq$Y>=M+052mGNTvaAK+nrptX zHk7U^Zt^G*_d-419F|4sPYh0+qujL6$HgMS7Qx$L(Jf5m>>&Q#ko}Yh#*JZ|PJ=!U zAeA~7i<)9;g9}z!VMkYrS)c;1aT>zz=aDg`7?D$Y1Hh`LhzbBLL>v!_t;~2xCyVWH zHCZst_9DgJSrl^wHWXQge_-Gp_f`axW;rQ!{+8?Bun(jHEWDjSpkvu6OvJQ@5;jCb z?qpb5vZz~L;t&COXZYeEm-ecMA&Ej7CBtDNf61YD&bpR-y>W)3NKsd&!w#`ZZ*6^< zZpbkn+ke}P0e7qZe3yl;ztRZvXXApoBjRQQ>D-WSy$5*Bz0h;qi|Z}<%HcL>CTlSY zjc%ffPwa%NYbp&KeJgq7L&#U77y4=<&E$|nhY*J}(6NGp+tO8-DJo#n#!oO8Sj4Tx zpid1e_rN?sihQVJCmKY~m!KrQm#D1IJiQcB;B*9`-HsrIl!Ye1qq7i$8wTm56a$r8 z@Lm{8k!?X*`sfHnt+)Fu**T_h%cN2TnJk62V7O3lgNxyECPLt+_kNx%7HdZNcGOY% zv4;h1uD^?NmPE6!XD-=3T}DoxM8me2bv}S~Ak_MclUt8lhWc~;C5a2anwO53eMz7% z#9tk(Gp=J8%Gc7Iz0vI7(M4GrfF`NRR6(VZU7-@M^WK07_GGV+dR0kxcVt6p&gLdD z?h(dp*ER7+J_XSpEM@A&zL>Zh6}4b4Ye=rc4; zj~4Kyio>9NFtg$3%hV#sXtHHP>Q`;vr6~s~+Fq{moQDs^#DLId!i}6i@HzZXCX=0C zgBUi^3~L(>4;QpPr9}{&B8$c+|J{z304L_B>yu&MI=h4M5{PG_NT(LwK7grnUvDID z_qW+dyr2s{gfpQhFjb|LOhc+{Hrn9*eE8+%bmX+lpBMt@|A99CSyf&xQ9Ye&HZ%vyYH(2`cVZo*O;#i!Tc{>-2 zk`NUmKk%&Uv9~CrsUFDR3iy34(~b>?SITMDw_KRK`bm;_`ABx?&dwkv(w@2zDWLpV zmTPo#Z$eV>XfOP1Ml%J?$hdhpc>DN6-cr>;_D%&RY%C*(GM02qeIBWZZ8-VX4Dtmr zxW5p163i_m74QT;qSSGl}*ie>-qxpu>mNq+i&v^lv+zVv?2{KMW z(G+6SAV=lZJfLXLw>TECU-Q_Do}dEy!V{PbKR0hPP!_cx?gZ)&ns7B^U1 z|Dc1>dJG*?!onITY|buN7w)xm&q*7kYIU*RmdE_Ihz8MkkK7oa=rfgzJ_zsd=-ut< z@%KUH;TJTi+6YXVu&YYM z_8F!D3{t-5@Pb8KA9Wzs~G^e3$$Q_+(m1=tWwk$cqml@)CX5 zK#UOKRxn1)nvpkczD7FNd4q!%%)wMuyyH0c$)&>4f%OV)s3g2F8K!5_A$W$)VCy6& zM=w2YE`MQtLv>ELwq0x?yGa`0!z0N(iLQh9EcppyV9~JXVRPoNud*n5Ss06nCFDWU zd*$NU;1`x$I=jF_!~DDSIWq?myT^C-zlKL=rc_YX(ou#LaM+TdQ3PP%UEj?36g-%C7UqE7C-@89pC_lSP*K3aL08B^ed*W#2Vw+ z?>sbU@x^C(e7iG6IP3aoQ-aUEK#1rrsbZ@o=-D5JaK`awTm;q-2@S@cp3-Ru)-#2- zz?$g2eRJbc<8;tD#NZM&=|d^I6jzXltegjX#h|+4V0j1hB%k)K< zcb*gdj5Rl%`vfTHi3(R;M5`irjHfbN%xsM5=`xl}E_hFVi?(`%QbepD5kiVF02CjH zG}Jc|QM{NcgMnX`!x7F(ykMrB+YLHieOdef=G**5=oI;w51Op)lfsPIKA8`fxor>{ z%Zn>F3Od-*Ci%I}R9PSeKBTc&8^V_v7lT&Ggi(H>ivV!H&8^PutH-{UNmLX>pTJIx z!Q68{1Swyhd4(IB6Vj%$RaxrSvd@_&nESGx!UR{%2)FW(&J<_*lJE@$li=n=Pz?N4 zM3(H2Y-j_i0UB& z3h8>;Efll|vY0kp4DcaYOr*VGL;lL^Nrk4K$Q17xTOez62)i>xBHa&|DQo6L4(Cfl zCN^D0N3&Z-F?N)zi3VOzhqwJ}9w^TyyK8$}6T2l;A5zjZ8@*TT?=$3t{mp6-59$cj z)>N&&e44A*D;|84rr@sY%V3(>Yh#j@+3-T;PCf;-7@ODge)}kcZqxEyjs3e3m5RRE-wWj}~R>d6N5!y!huyFlh zwKW5=rj92hat6{Q#6h;PFKt@ZM9g(W-IOTH13VB?jo4RU;g7 zP_Ge*FlvbULHe8n*GkxmunW~$?x_9K%SU|uQ~aBK*iRNc8VORSLv?|ZUb3ifZ@LEW z4ZoxL_t#2E=mVm0`}VbPnHyjg(P z6F}rtsp2hF?heH9t^Vknj(khe;QVsRn)nH&Md1Z_F*g&C2lPj8{gcVXkZ= z!;~ylrp-!l*lO)iA*S@5OW(tL1y5?dvr*ojnbzEWnJ^!?HK}w~h`OKM#Jz!iP zXp#d31~iOC#Y~x-stnMh9_P`tF@+}p<@C6TYm}&EbOAW=!1`tcdK!s7IYVJsQwG63 zsPYO+NTdnoWW-rXVWLu25SVQy+M%$x9OsagY|uQ#8S@0OhPFa1p|`Riul}JP8~)ZC z7y|Udad%H28@(oY*Ef`ifH@)_&u#iYK7F=B>={g)aBTo#(!f?CoH&z*Hr0m;+e)+Z zz?*2ai-s3gYy4sB14R?8(a4G(DiH9gQ^Z8p^kW^5+Y|X-k8MxYYuORNDc`&>6q9OJ zLLNWjFqj<)2n7mBX&`{TpH7J4?n5zzBb%TMhTif-5>K;?YQZ{}Y90>zg7T@A7kpe1 z8VS|UilNVve{?*UYH0q9Tnw2jgju6RwtP)wD;0N|;XoUuR|Y0f2!|d@R*%IQz7X6M zVQ$`C<-7QqSf>sqn?QE~8&v^& zc!{Tm61~#G=h*$OM}~)&`}+xsuwXEZJ6S$o?mw=E`LD8cWIJ~OoNB!6A#MBAN@FK5 zq9?lGrZQST4#JFygDKEqy@kDLQQHFZi0DX}p;v@sCh#|jq7SR`;gPdJ&;R|^Nr%?1 zqwA|?CaNkX8M2~x=8|raAjLnJZH~A1+eXbvwXi5IZMOS1OL~+)CG&!hiNOUBbu^e>F?)87YYjLc}p{>*6{dHZDP{Z5RGCr+eTQL_0S- zK82uAR&nuIzJKc+q`vwJ4@ zAV4vpCwf_x)ecOYU3@z{jRG{F4Ygj>q@=d4IzAzAEN$=%HSjo_-_jPl>H0*0Js)t4 zrv0reQyTQihlotUSjU*b41ZJ-jrqI9%tJ@KF)D6#JcmasB}od8 z{27f~lxDD*gUEm1Z_k7i>l65NIR=Tad#o^nj0)Z%F{i3cbmaT1#3_}-!L0P8@po{ZGB7=0>_EUT3VQ4v2NOHOn*d$_jR-U?DrcU+zLI77>qGmh@m zJ+)dfj7|)N1dg+qQF1FHGv)v?*eQG>e3)8@fvHa-9V(#{{126I@aYkH+@>Pr*~0zm zDMjQ9n$)ZcMhZF9A7o=1M=jFAaFk!(#&M-@pp1VcYb^YHS?AV}(#4-tNs%PP>*dIT zL6i)bSkwCR@NQ*IIXG%S49!U9-;!1^q0sUBqTxFyhc{v7vG=}KhA2G#7Nxtpx%v52 zNGvv8Brlv>J@rNk&P$S7Jl4EtDj<0+a+TEbiQup}o;bfjddg7L*+ zZ~1tF{QBsivQUD|IF3TfD5zGtAn*Lj>T3j@z$*ye z$MODN_Q1$_V-@%b%a%HF3tki5pE&A8hIlExekdWzP^?d{IVLkKol+*t8J@nh2Gw71 z?bCKJo0~GhI$3qO?HOfgN{&Bz-JY@Z&>?CkmTCo)6gUHzfUa$1il97#9jQIQ7vsQi znEe%d{tX!jWOMYp!7WvVlYFGX>@y5;?@f!Ny>UiKaF8 zykF749AFZe6C!Ql3(Xnk!mImoZb8q%sM+ZfEE!o@BCI7@pJ=fEz>CiV8B;LHgEU(2XKufe(Luu#hjF4z*_P5ZSyRr2H1k72B(#LqG7N3%+qfxqEeBNZ5_ z-fEI^D@v78HR(0j2~H!%S~_G+1HF>qm7KWRXRd%A!PV_?LudlJj@yd3pU%I6f&W({ z;Q9UaVb<%8&{@{6&qTp!{tFUR9u#_;-HBY-DWIQ?o&*fsjy}+@J%(pwe?ab-wxFuH zyaOsO?PzPLrMAhL>l``@r1jt;D{ROp z;iv!_yO49 zB%~7*6XzDmH_azQ2*Jq}-ril)@jy~n1&_G|NE9suUkH~gc=RAr&=5AL&i7MXbvftEkV$`Xaqa?#Akw&ud#-`adO#ayyo&kQf!nASU-u#6&5qlENZ<}~l{Z>(&l!*?jxdKpVplOSaHR97P*_w)d^>m!g z<}KgNW7Htf{>ID7v3N558x98=U$gIvJydMVkV;bf}6O^!t-?+<7l@kT& zmY1P=^|k8=`V^-P%+?4{UaM;a?jpeq!46S7woh)+0+(wTuPwC50^D#j8|1&*Q&ioP z?VJoh%dYSV)@=3d4q*Yx`>cxLJ?x-NvGbX$OU{J?;WE8g8@3qS72?eyuBQ(9gaZle z7Z*!fnRaU%k_&qqqNsh}$$na^nAQG8!nfw^SAivq=cluV#AghDS+(mybC-sQxTl|v1d$fP@)0UL;zhLR(U<)C)Lr)4X5W8_N1nUlbBLdAI)~7+c zS6Kdab{C=#&?4E8BW(EQdGkzpMX*9BEvehRi!WrO#eGl1jA8JGVw`3cpEV`WL12Ze zphosGypAJ`37MA8nktZj4X%Kou{1_%Ib{}~R4?2;u!~Cb=ODJdv`{HmTm4~MYv8(g zZTS6@iey+vrUe3EEa@o5{jxv!nriopm6&3{BiJPU0P%3O$N5vg*DKws0$rJw74#=G zdTWr4P|{&FXrGZ(8VE|hrAPDOjk%r^di z30)_2LMi=tTJ#x+DyOGJRsm^WCF~;gA%nwRnthdymkLT2L3AQoqogIZFMNi69QKGE7pZF7YO@zU zeQuJ-g#yG~q#fIR9|kBOV#u!g0-*2{&JL}9PphjO9E;}-8apWOLin!#i= z(uc8%+c_E$1~1ipxPjm_d3lTt`xw{akm+srSuEKK01%M})Prb5<+eC?IfE<{d#Xg< zARCxM%_MV5@Is@yX4`q3MuKkZJ;-k-6zrY_Mw{#f%);N^P++_AM+juNo22WS{X?>z z=d~7B`c#qQ{a=4grKAPn-rmR%`hmxsRd;bsSjYZltZ(>p*@`L^wtUY7a1}+Lh#_-z z_2^ED^o*!`T4_l7JgVuQHD5eDJl@~?c*ZLQQiKBDFV6p|a;5j~ymvFRH=gt@LBo7u zXS7#_78xDi@DaM}6v77Rg`5!}16fjnC9{x!P)S4*IL1mVO4BROm$$s9w4 zvH;pgT-K2Zho}wqx>J$+bJy5f(GlA-w&u>qPzIW3Qs0e_?CJrQFh}O<3~s}@BQ9@{ zi|ZK4`N^c2@KBYw6z_?bllPCus!LGt$To|`=MKzUcc9RcDS85brm%yHlmAs)1m^sq zGN;zzQ`u`#HTo@yU)rM2XtjSuJ;uf^PM!C%^%DbP#7d~KKnq30h>RvPjdY!*~X#91mGiUKZEcj_FVnjI7Z09(&6qik}ln&~* z53$HT<`5`@0h(_)FVzOlQV+&q50E@&fAX+GyxKEgwKXAT{m;OTE@2q{=qu%>6nTr| znR1%wwMs`o46qoMZ)*pH9&_2(N;9EFA*DfMDm^yB#$hQeb3`%j5Djkq!evy6}?&I3&hyN89d?M{KNb*3@E zya;1{wZ>L;vnrrLb+LZh8^W}M$z%PXSWeFimzDrX?h7R77#g7%It|&u(cbyp3ccW}l`EE^bryhEW*}l+NhQuq`;R zim1LxnGenI5X0a85)FlsBx+AfG{nx|dA`J5*f1;(i8}CihOIu2@H#@jV`8K`bd!ak z)zJ_clrFd#ox1VlM9yBsPn|nKBM$V*U|tQJl@_<-lNSxI4Fs@5+~c#$oqV2WgYWd~9@#MURzMS-ocpP`+w1uAM5wIGV`n|(Tu zfFUH|IAw!KMa9L#1C5`I>r(h8k<9vBLH`&g1dIQ{qR0_d@XwzXYxmu*@y3Y4^2|K| z>{JvJpDgg@v68wY=RC&s9-=#HPF;QQ)q%lg2-Bo;vH18NCI*}3Wq1a-+u!WL+B`O? zP-?1wX9_3KaQsuU{>~k<<<6rg`@IL=lBGocT4&Z#J%e{;ua?i6%vm{pXmQ3br_01b z|COz`rj7>MD%lo}2CpMwsNTj~OZ`_y1lE8Qtm9t$Y|>xVN)iMwcs}=okq*p+TUO;> zWjsu|gN9x6dvpaV0$~OxQ}-dGv%EvVjs=@BdgOSO2G!aK12j{Sh<)fpRAHx~?y}MW zEK1xoHILda1Oc6x+Pn}UJeoZUyOKyBFTD$x-s{NGl8!u zDz@6)*W8MCis8e9)|1_)&WjFbv_%5xFc3ftA4yP{VOb{QE8yf1xwmN&K`vyBSu=?r`V!@fa+!v*6kg1I}pq=}hM{Q`iMwp1g7V;q}7fW}jrV6Ow?0OThGN72%F-N`{ z??`j{XP{gDBxN`(O;@Nku@v6|T^G}bkj*Fe#A`;eL{phiLwwBYZevUGHC*x3EGWVM zX>RHx48(y29%Sbiz3d1PPj{|3GTM6g#dgmdj1;T5*ddGOW)c^IpqXURj@6iZojm>AQ; z6Z$fbVsto_XMnRyRoe^IW2@xYl$YO~NKD@C*()IyI)jI7l~n5&DYW@JfRyOUPL)tN z;BNa?E^0fH*r^PzF0c2!(a)`Y*s2F3f$lOU*n)6^ z9B74Zn6KKVqCbAGhLy1F3h=hIcl}z5Ih$fcJ}OAd&+qR$9{r8KOtU;F31u)maAar8 z2$5GNaX1^}R75Rys$A{n;nCPD@N*_|50_{P_N%e*0%+UA&%1nzz8!*zn5G2XUUZBYoz3@sYdm!NO4DG4yC_3g_36Pa3}$(^(0vWkozJO84&3VKPk`j-#nrxT#Ne zfDSG3hO#v>U`lp5-8>g0H@{2b@x3hUQVK^b@uEtJ6FZc1ORtocohuFQh$4*eBY)ew3iNf%j~ znioZCtJhL?HUdFq*w8NlybUIi@-S}@c8Sd5{8B>Vq|)%40GqQgJvz|n;t&Sx#aB4h za@*ol(7l)mbsYNf{F=88mnIB(!Bn?`Bho@B(QHEULl^tH-3bg=6US86Tt-AB#1!$t zC1dICc7AlABV!CPEwtJ-a-F*urFvigf3Z-t}JtmBJP#W8f`vtAeNV)g)l>zwkK7Fy zt|JJ$MnlE!4A{B{wQ)@`oDGar$6?DD<>2F!9ZTViZFChL8zhH+^C!?l3l*dQ>`nHz9*wmHRCVeMz9 zi4JE4!kEGLy>8su;L~11MC<9)U@z6!9XYLpw}KT7Zui`LZUS#U5avpQHt4pAsqhq;;T5QjzxfRioo)-0~OMc zVGhCoH6H`&kNQ{<3MH!LM{m;4B==F>vf&>Xa|heX-Sz-RwZHIdtyD1&~|=_G6> z*uf@a8g6d(FV+eA^oI~SeS>#yNXj1bylaxE5t5+=b`VZ$DAb@`WRa5YYzEjsfOYg9 zES6Zeu7P6iDOSIRhPF%pm$oA_56^1hYAxf!6xfsQ02?;#p{GZ6`IVmc(J9EE1{!f0 zX-9uk(zVVD1m?9}q?;}Ln9yc?-duHGTV?YDpp2hC)d(8UPdE7@;4ur3b!y1~TBH*h z8~oJx9dunJvOEnke!lQ=+{nOC^Yl!)HlqoUE-U?v-#)Sf3yN7q;TC%&6>pV9PYp=& zcjXCmbzoAUv z_Zl?8$X<$HBPr$45qcW{HE7JH2BUhakIUvy^Pm>?KiY`rrvWtYwuKo@Dg7xmdvwOD zLHKiKFwXGz+1vzKz zd>MDf{|A;pX}?n27grh&ZMv%!m8w(E&I0bIaONoHB4F;IsN%Z>8?Qwqq`gfV!dpio?G(8kT7z(znmEXXPkqH~Ihn~2GCg950KAlBCR zjceALhtVMjMlBE+*yk*)UchA7ROFNvzUUlo{YDvfiy}3w`Fl`_8|nsbsA;T`YWyN2 zzL9}dxFc@;D@R{&_N+B03*saXimv=jTjWt!!Rk$6>^uW@!-NA!6NYVJ8TKesNt^NB zUQwRoq6#f3e%Z78imjI;Vc0X&o>HkEMCyWWgxx!sZirZzoD}M4+KkV}kdCx|+6m`! z7_*z147;qspq$Q@bpuP&lEVNb6eG}rBy*^3xj-4Z0P_9=;}95{YylJCnX>*b%1cS6 zhC3hA7dU;gM)@qd1VNguVKI-$p_d0aH>Pcg5q)d)4hX=){|v-m_f6Ahl4m0Mxxcmz z(IB)r)wp*ALr$jhUA4vz&}uGWr~OL$I;V6)YV;kz&JT=0>tK0%myBRCe4THa4|%VG zwSDQnHQ#PDnM|h_3|F6c^0?%(zuP}9)iy{03^CgJ<3Lm;`~3{QlO$V#D4N+Jkt|N_ zOX)G92qpm8&5EL~?x)jf*$gY~W3aT?q5?Egfd(97sBXFNQO1>p%zGkruE8TZM(${o z4L5(oMGGK+R^C_25mPt*hskbXUquj{(qefHf^KRDH}v%YF1Q=mjenM0r>umjIfh>C zORG-$cL6r%i^tDUKdp)WIeXu|mdJMrRP@q|!oJYZPX9$BH6p!w(66`UiqTNX^NLsG ze@0rs3d4;xzA;f0wHNyG{1Pfe3@dhrTSH$q`z}IU$^Q(y`WsX|w4Nb=Wu=Urhoc`S zZD2=293Ru8k);#NUk+&HDE%qR5W$+TkDotZd+rE~*gV^>h1c5OsQQx&`4PZO^$%MJTm7AVhP#nMfc5_bYUl8m7jMhdr1$pj0 zP2JQZ$5Adw!{rp_0sAdG(#jYr2T5PoC~-rvLV^43!Ei9%-J9SV&u+X8V=1~=(0@ci*6wf6pBmH6_R`FFSs>13i}#hyF!)k zo3-#oUa!Nw38_xmd9ABvyBUyWoWt6^6<8R%mb)m{9cwn+5H7clr3Wf?@fzd>H>m6k zLDZ0$iv-bTLiu1g9@;M_UaTY^3FOsTcqI3#z*VX4A_XuhL*SMjC2MsV1KVlDTopB1 z;IXI)m0aiS)yL)C{2{6yP|p#- zkxkPM?>YftAlPqW)`_fe zxzHl;aZ*(Ahj}H^XY9%9Uzb221O%}QWc5OzD6}4;_>Lkc$j1?P%oxMv42EXDNC$0ld+DAqhS^oY zRK*ff7w+Hws5z^cY5dDK8DS3K#}I$Qj6Z1xHz5oM{g+Fn!T4)8X4g zv<#NG3ruC)KRUR&x|vsVkhc!SkBhv}e9J?OkdjJupHdfeM9}z8E~49rs`LC|OfDb^ zk($3qr{&Grlas?wA1}CCMo~j|p7Zoof6eBNgi9@8Y;7`+iK(*P!?#NmWr&300LGbd zNt1a-6*F&uBx`_qYQ=`91H~OAvU=lp&a30EdGs}kYWJEz(!+lH?;=* zY$L$n{SGaF!n2th4G^x&8xTUc*&&)Q{zTcP5h;LdIU)Nt5Tb&$q5FsXbYqb3l>A*n z{3C>98(@_KD%I*z3%C(3J%;Ug{8LSSvoS71&E8@DhPt3TAL1wq%MDT_KW!!Lr@Go6 zk4Nb!=p+sRV76Vthj|fUjJkzGN&1K=&yA^zvPuU(E7m84DBwp`J4Shtk@*w2{-@I^ zAb4phvA~&_xDv(zX+>lZM{jHJY{LlPjj`L9t~GrJSPr3K@W9%^)(hXf$zblTZtOCX zHU;BXzd$$ismZW=vjTeank-=EB3)Xp+stOK&s11m43T2E@z;p1>lf$+4K%6Pm!Eqh zp}*hglcZ%ke6pr2%h6;sySNE=I*g_>(TyjQJ9;S72Mt=$0qG23eGcziyg8W|)JC}|r&kPHAMM#F`CU^-h# zQkPB+q^^luo4Mr>%Q4heZ;jywtP89=O&3!$x6KY?ry6193232640hiXiYO;0WXyjB zK>B)~xb~1qru;er`a4UY=26go!Z9~}!uym!Qc{$)`z#0LcyDrXaU)5}zd_rBY~(`) zEp;N%HwkWQ*kLlVCM1`f8?(Q`D8A0f!L6#a5FPyJKh`DMljt=QJQi2hRXn~`ul1M zQdi+nttWkbG^D?N_ zrW|tfK<KTvVi_Tzjh|royW;1Xz7kM*L-+=KFM#hU7a>HqH7Yced8|K&qv2>gjPr%@FSzxq zRjD3K&kMk~WH;0b=?@n`{@kU36o-qmlbRLUyO{2F{MZi<_a(IX>ezQ-({Jhk01yC4 zL_t*27HKW$O4SbN;b2)W2~9fz;BG_U8aT95$c98&--rVQqWn5Z(B{Qf2N@#{h%r`N*J5BEFlGW;k$8d;0U~mQ`!CapYV-Ih4Wvn0gi)4cnh_RT zi9shhHT!qi3a3~`^;RE-vLF$7C}&aS0lfY{oimK$*<$=&^v|sz`qK&nw!O}`6Lqi zl_&w?7uSOiX+OT9*xhEd!W5U1TW}J1b!g+333bDwP`-T7=hl5S6BeK3w7C#v8FOy2 zSumtHIz7Dk;UiX}4Bh-<5N`*D_!jg(+6XGuE%a;vj4KD`4rAA8an)`=xylzFG5#xR z+b-ky>gr~1Zw#%>qzuOB;+xg|a+g(`zh${(V2dbKfL4Qs|Aqo4GI8fEMkk$IV4%1-oLIE-93%v}ZzgT^sBt1>!ePU!Z7gcsHuH(wsmFM?I%C(phr*kE&C3x??Q?DhSk3GN-wGBMz@}=# zD{BN-3*xj}cFOR7d^P)ehSGSWT4p7eOBv!CJ%(4bLjUds6EN&O9mHo0V5L!T2w^I* zFUDLwV2fhBH=2IFZsjXLAF=!S-rO%vwPVtSI8x9?Xzlo|Vdne8D^fk#v z4N)?H8CqXQP&9Bh-nCw2!_$Gox!@Mwa&HHAcLag|IaE6rH2T@f5U-|zW-u7+9ZW8- zX7lO7CQ0oPBQqI(#@&i;jZQ;St*adc@NJNUOT#gVMpb?Yj#$94Br;=Ei?q_jg)D^H zE@)g@7vHZQlei)srr;nF6 zHGm-`3TZyt1^y_%G}W`wvv5Htic!~NbmX>M^*yJSrnrXr8#}kN8A&qTPT|4y_}ul^ zwXb2=n~YbCpWMh8arrJ(0)k|~qyV`eM2 zt5Pl3Gj&1Z@<2=trOw)utA1&uic>SEr1oyuMeNLQ;)2GIv&+lty@NftS8a;BtQrK> zq8g7!>zv~U(z0g~AaPMsMA~xxSd5tGUPK5f2{F^o;^9xUC;mj)YO}WeET9PYy|iL; zN&U{8Fk;s&9ckDLO^#^lYh^3ddZ8=#av}pL$5JtE9eOLWbA@L+X0SDpF`!pu(RAcF zEiHmGrk1U57oZq^1+7m^eser5&96c2OMS98D$8QNSU~sznp~qm=Ab`p$vsl35pF_#+SG~A%Vy(9?zd=_y!ZOgFuz6PT-JSTiV`NHj17`7PQdT_e-Lzk}K zG{L4M6O+1hjdTcGR|5Z&;U?^OxSFc+eZ6+nmHXF(kPF(FU;rCw{@N{j3A3ogp_Usw zeYUXU>q2LE{Hq8*hGecZZ|1JhM4#+U+^SgFE2LI%CXvi}$S;d35P1m`_jX6@{ik}C zde(!mFcX6D?-%39n1tqk>!RwQd9Fb1=kOnp6*OvI}q4)^g2@-kS$VSnWhb)kQ4<(Z2)l;+qv!xiDmqo z>&e=){#^T3B7xvARjB@=4N{R&i)zhNxtBxIm7o6v*y{c?erT2CZeY1Jp9ABY zL>fDp%xp5golRV^#oW`@bEBYnx>2y$>BYa!&k-&C(e_)nLPH_b*sik|N9Pwe*74rz z22M}TH5`)ap?#q!Ptd2#(Qrl6@%tPO;MLJ+P!_*=yYh;ys%_E^0odGzLoGWdO+!Y= zJ2UAIb{&FV^H(OEyRx{XgmmPBz6*i35xq|KJDs0jtQ;A+BM`*nP!0#K=MwEZhA}2( ze6yk|n>vF1JLEgeJ5Tg5YIeM0ZZn!dY7rC#R=}0baD!zoiNLgo>MdF?2A8|Ob?gl|p+v*XMtZ%wLQT zMSCK`5+k_J1$_%`FL#A%a4vO01A<)p1gx1`yO$Sr-=5{xe6|q&NgFA;_1w4-y~lB7 zD+?HV%bTc)F*9?SmRZR?gds_9>4IM#ibJ?*;7~^fx*K@q5bMxelWt*K9?gpc3-HTd z7}x*gx9JtX)Y=fEym`2@3H$|SaC4Q0k!77+hKL|?O^G$|l17;-k)EHyse zvRN3!b{2qLA_VO~G27N?<}WvSC>;Hp)2ar;&HExNGxsm4Y@F~Fw^WRPa&wtx(HlHp z_It>gppVVtjBaL&i;Jt{6TcAN7q4FeD1e`mb{)WYyC_k&UlbA3&163^utESrQtzkc zue=~8*PcwqiQ$yGpjXzD;4Z7Kb_c`0N0h%#T|d`$K;8XlRadx+P)@Floasb%l_w;Z zp!Y`;<62g2a!WAJXN=DXxpd>6dhZtI67**qVU7D$BMFtxW(;m;bUm+@QpQ@FHJ=(U zbTgM~K`o6YJ9VHng}sX%XgNlkEGB?7{2zDsdfU2Y9hBD5&8BeW@Jv&NlTlifrV+_^ zmx)Pt&@YMQnoG{HVH-~Fb;0$6U}_`3-WUvr^U9QN&dDWU42sT?epf!!jdW7A)|HnTi-&aE8db zjZK{3$!-C)`Ezk`{qn^zw6nrywTnu7xU6@{>1mo zY|LLfuG!IdQQ7M_76`vGI<}uFkt)jPEH{F#)fR{eEX-dEUTXnkKrga? z*m|BVRvLe7T~k~3IQsh3uyGpzb-p6Gx7pTCvLOImU%YIR4;{b_dKZLV3OB(8?LF8) z8|;`S-!`-)n->V8-qP;*-cK&Kb`Q^0iyk)wcndxlKPv&qq{QBkSckh<3-m2OXsS8@hZCAX| z1!-C71~j%}#`0tWxS>2->!o#gV*mMN&wFm0auQ@rxU92K+rDUWM_c|mOf>_q3Pf)K#}7r} z2R;`bSAJzjW1?SzfzWH)n2?Q^6)Wm#whm`9e5(|_mTb=NYiJOa^g_Ga19|#Z5iG+m z%5dAq&jx01G;=u=pKov(?mG7tFu?ieiyyxKP%U^`voPBkz4qmd%|xulJjxr0Mv7_Q zX96=U)m_cyy&*O(Xz@Un#a*GUdQ3gfX-L==mN$LG;i$gEc4EokWIB#f{G9nK83Os- ziKGEAN-Z{`c1GjT@L<1t5Eh2I9AaaUN(!8P1in7Zw^xX3;hlJfyp+JNybJJ?Rj?3y zh)oP*O!5}o$Vp3}om`rvZ!S=eFXfebg2Ar=={GFGELLcB4V0IvBa}r$U%_C2utcRV z-B3v7(7~<}Bd`_@z;44WgC*F^o^TV;7El~K&n7MejAjJ+O!7YJ#=H)beQs2PMUi3Lm2z7dNXYSI8(xN9I73Uico&<1n@vwZDA;01yC4 zL_t(n`cso@h)hd1a{|;FU>7uc*C~2yxS8qO#If83Hw4<)rL4Wl%W0N2GezTw_IV2o zmbt4fXlwOKe=;N1*}jZnwtxv|!u%EHZg6M=fG~^Wg5#GCf;i|6U&HpXBXI8N_hpGd zz7H3-q3_$@znjk%hUv?%I<6STj=uG`s_9#$H9~NCr`S!h8`TRCZ1gCbccAjk+_)86 zSwH*w^>5z(9jKm&^leCxYpJH8V%$s;0o#-XjKM5Z5bO>$uJk=4WHKaE!|0UGs83O? zN@h_l27_fIOFfkQ{2y5&hG&>Us58lQG{9?dh%%RFGqd@IbD?MO%nwC;@7w-u^1fmV zv8&3Nzuu+CMfDA3rp9E${-_ zm1nT0uk)lY?8Y2vIK7D)0r~qDxkqkKWq%J=Xi}TKQE_#B6UIFNym|csKmq(@v}*wF zugft0m#K9jsYo-%ZnT@6ib*O0mdnjwAN_M}>9#U1Fdv`WazQ^mb=NdyQ7)ec%%Fv^ zz7>@hnY>PcglTJs1~y^FhYW(&!MYY;jy9m@0Tga!ug_i7I0zhJ$tFbH0EznTl3iXr@7C&Xf$xv}A;znJS8!bXp06OB=iwaVZ*FLpnXAi7?|Jrv#Vf)vz314C zx3bRXW~lRGUO0=JMsgWHpA3*^6+?2zjlX2uct>%UWs3t^NCw}SkcYEKzPPS#rqjiI zJ{S&@%c-7(p8Hai*i&DoH8)1JW%Bz-f;)PPQ3hme*{ns2=_wpSd-Z=GKYTnnJ%J~r z6{?E)d_GCuhJ>vXjY*m64NO0}%6p~3J2r#&mQ%}lEJPCwFvX77M0j3O5*bEfcV#q3wCZV?h6Aq-GflTQJS)#bvDqy$hE* zU(0UF(N)n(Sc1O6(hUp_7BC15$3+p0<5Ui3#x(A{>KF!aZ@ZTQOMNXbx{n@#tRWb}F4-Kc~oq=xC_fA;e3gbmcQ|RX-uE(?lN(2Fso7 zbuS%PN4~B@SNV}2GP-;yY~&2ZHJw+O+!DHsGnq+RWtbj{HlmBUeM19&BhPl6HxsYq zLFBduv9W!_JSf_Gl^x{JP|tD2=!K?F)6R9Zy}!+FlU9x1VlZ^*MKRLYZIK%}9^PC< z?&$Q>Ax@gYkQlta8(2UqSGp$rMUNq}e}Tq65Pkg-*F54uSctQm>+|;?s%ECRYq41F zIt$p**M1hpzJH?rT+}fuBU=WpquD=MK)wnH{TpN`8_18g7h4gM!#4^@_A{M3cudcY z)vy2Zx3$}OJRbAm?_Q68^Y#W*PeIQW!07|+!`dUTpk>d<-Ke_FaJofV-pp|n+lh** zz1s!-6cD@)ccsqHFIS0XyqywV%vFO%G+d&ZP*$Iqvu7c_iNbIOB0vOJi0+@qWoiLY zgoC5{=1hzi8k~aW6#F=^;#3r@3h`w?h8Qt`1dVT%=`?vFEG@s9%#jv-4 z9eoQ&U$Fno+`9l=o)I|Dz+QCV(FDG+M7BDm*a>N6oK%Kc)&fMva7s$?Ysw@=9L3%|Vz&z#wo|v|E^B{(SsyStH-k68 zgcX@V(zj)pM5!bLvLey}kcHZJgRnI~%co{DMZFBpC|7(ov=;8AgJjgGST2;P{ zLGz`^P|T{_Z(x%M{KRxcJscs_)Wz52bl3F&h{du{cA@5D$D!fg!3ra(Z%D@4R{QBFc@` z{{H0h;wGdVox6RyGk00tqo94o^u?RW;qk%rW@_9j(2GS_u|m#H@`WYVGfMah5q+EW zDO(xhKlk4rgbYsn=I)kuuqqNO@QI|1^A?pq1%zoUI~ksxa$ltM`fFTYZebj zqd_@vLzpUK$Zn*sCf37Zjskn33B#3iM+-|=5|{sE>|M+~CnyR77{TZo2x9D+@oPUL z4a_ng%B~q?i_zR%U44G{etLC{-eK&)>b`g3|24Cy?B}9x7uCov3N~|rhmac-g#hgq z272Sz^VshakCFQ`#Hw9%!zgYCxuz+1X(o@a2~cargGZT9S3My{al`WeF1V2%^To=5>GErS#0z zmF&&R)Y*HJ@o+d8(mNYMg=IpoYD0_pVm@yci=IuVE{Mm@xbvtAGzK6rk*dKMpFT+5 z^yH|!Y;Y{PgUAVaV$)b5aWgq_dAr4^A__F=6N=D!4BU6JqoQdFGM0myz6FwR-qX$y zzasCmPsKx-hC@603b2~6MZ}f&N$|t(%6lk@>pQvyqzFp>?hvo25o&y?c;nv<&hjm- z>DAT6hYyR{)Dsu&Kf6%`^LJt2q_ilZHjx)au?Xv#2!Fd@>cl(tedz~7Uu?TP2FE)M zOE5HqULY6gQ~_h4+aVohCMrA#ZKGx(?%)6L;qP7FjKnysx*ZRyC!%K$;9mOzTRTZD zham-8dxsMh;lA<(d|`=ue0*?luvZ(k0IObHUMtsgylLGxdY$UB8m+LYVb5q``*C>xE>cieP_^BRr3-<`zk}I=5t}^1eCI66F3Ui?McL-5KLNc5}0&^ z&f=WV;2uuFdsBT17?@3mBQ2l20Y?a#0g(gj*Y9a)~TaD5RleIY|x&mrhar4{DC zG{<*lEe{8VP?pB{Uyr931S8nf*DrTf@S10pncdu6eEisqrJ|nt`d`8H#mY{;s!F#? zXVEk#3cmofYhj2NObMf(U`)obFAcvOH$c`tCLSACJlxKaHZj2%vDG?}eIx#oTtam( z#-IHB3-%JZyPr-RP;IfE6M!-L({VHt+$Le{e}<%<4K=LYc=_V!80H&))bfEOhi}dKm7qYMb@urguCiMwTeoRTu)G!#@z#F7P#a<8!XQPEKkQgW_woaTfPbc>=&@k95_+SMB5Wgn7Gj%v zLv46bG!ADw%nCSVfY4(K5S!br5(Ym^&G6VKA_4csS|g7p%lg}5LX(6C9f2_DC_#)F zOiy}<##SPkzg)IV-|$`P&&6zZeg3&_M$sr}%Uxvp8cSbO+Se4?*}#o8+^iwS?~(#o z55|GG!TfFQqVO4zWo!#3v@%QwjHzUW9c&wo75w<_Y#Vslj#%W;^S%Zsbe=kw`}ABtu9 z#@t0Rd`)BcS{gRP!s{kgmA=W5SKo}d>wDHkv;boeBeq(;Xun{lKi7|QV;E!Vc1Je& z!@Ypm`Qi?L{B-HshW^&sm|wpb{_dw4sJ33a1z@udhp3Kg|MQ2_=xGq|zJ7W9;_T?? z=%C)Neaq01!d=u(OMnqcs9H^K}G;a=p4@Sl}``>-+61mwxe z0qb-?f+IZkYCCO-$>pL2Ja={u5{zy17d(@H4756>w&jN1N`=@7u=TO=dW(K zg6b*g`St<#5DQ}iS8llH{EJsd_0}(b{uMUFeT)eJgRR~CvQ@Ri!5A-D$w11@9-;3UK5YdP@RM7hi zF#fFQ6FhC2(seIMtc)=40;auFo7l{V^2GI-Glo{xbo4d8e40VnbsJ`S@$r4_f2NkS zH+dWG7WQA$WHF_+SW8PzHypYy+`=Qaaf=kbk>N?qSS@-nd+Z%)kdgH`~l2huYIFlKi!jl%(7zCNx$fBDDX)M1B*mbe>Y zQcL)-zq^fo&7vq5i^b{b;KPS`Z$u-h%A3)R#W+3%$CwpPKi_9KR*b;ft<)4 z;!}}&FWD>xVT?*x*5yDz9SW1z^Hmze!W3q|v<)OATk3Zi!65^(T%8pRJfGM?)KaWr zs%5bCHv3Qi_QU2COuX$jD(dI8-v5d=e6kk9RJ_1W*@8?)8sLC5NX@;F%BI@P_nl5J zFPhegHF+yB71&z6?$esTb?>k1`Yr50XiHz08G&JNB(6MDBkwdOApyGFTO7Y!*ng|o z4ki*CzxD|m!SwnJPh$6_O_)FzllbO(R`-b{5Ax5ydHuKgPNb)x=Lld~#dhhdH;s+^ zt6zRsZyz1)r?vD0%X%mmnc%RQ+rLL`OY@=`hgI~pG4k#JE5qnDX&^bQuYSw`01yC4 zL_t)gF?SL~tTlX%D82-3t_dgM&1P@NGv=N`L_SIew16=RxCZ(b83q?E2er4Yse9NP z-<%B$UB5||JbHae81~aT`npg5`aS{LW_Xib%h7H({hw9U1bLg!0yAI{9sG5yxF`wUD*Z(YfffnL0j=pZ&nZJeW>a|{IaMP2#!uuL;K{-wSX=}GAM0C)+azWL&)j`R2a^yknJ_W-s~!b_NRSWfoF_r~C@K`+>P zYFzha4!SzDs5Zj9UpZsDwl3fiO>wBVjV6<(r*b?ai0XH+6^nOJWGFxxLkj^Q!Yy0I zfRPg$r9avBB!`e9aJOjVSp+i3`ANcH|3a>mfV|Kkz0ifTfbICD$_|ot=xx%kod22H zIb;Jma$7TxT-ny=T$zZt1sRJ~(t7gwHR#{%)NCxK)9dq3v+HX|F}VzuAAuDHKZEN4 z_PM~SDL~88ijXNbfJp4tjP}cIdl$5Se}?BSLbO{Ul~ROio=@yu(+Fal-O==3uB<^E zwGZv~#l_8!KmPR1H(!R^RaNuF0#r{y&j-Mwva^rxw_h|jrB!MfLQFdQuA)uJ*tH}ht;$>a_f-6rm`>RSE!`g%6+n_l(nzy9#Q{m)A*;0TxA z{*Zh%!S$San$sS61}YYJCAX4MOQ`6V;qQsJ7q9Slv_Q;`*QtzjAuOJNLj||&+e%Ay%_)Q~| z&pnS4$#KJBc5^+wx?I$@Z#d70WWu&ziqbDX=`dV19m$3DpHrtYkFPfI2G~P((QNjR zd)rrdW(djrFPdk?OXP@$Gqh=V+L1>tFTsHw7^dB3e>f;BQ*pr}%0g9byLJu0KYKm- z+1Ib%ylz%kK0Q6QVRy%;3AOR6y1$Fsl*)3jLj08zema^?r*=|f%;3ZzLy6ev>zOVu zbTFGOOr$j|%v|A{j*dkz2zSZ^o6jEhNEE(m@6SN8x=b*_DmyUBcq7lfz1LOow(c*G zbB*8zI5nQ$h6I+Z1ucl|Y14Gldgc_yjYVqW6!sc4BiV!wX8xM72VK$^0!@7{DGg0B z{Boq`eHi?jLfV#r62>0ShTi4i;VxXYCdvn2dN!TbZs&Tl9F5FuR)4Q%8A*>Gp9TTZ zwhEvUD6HI#kzba&mH|38pjmQ+&ZNiAThZBv(tsGd=a|j^!~z}QO<`)3xid`M0yIf$ z5NU2$y?b?aGoQ_;H#d8<=1*uGsCwdZkG1_@BYc3L9+(iF+7mghL*YWj{rkc z{=W1C+r_mDy1x$?*lvWx3Wb=d61q_g4@OrhW5idotI0sI7ejF|Lok)AYMEfZ#J$7K zd|taMg{^HZaqWgBB6vGVc5@=P`>^s3*18+Bv3(0$chh884_e>%YV7bUyB3w*M)_Hp zBI+t;0Fwob*%I~zWm*uefGuE)*eblKFo3yY`ljghNfBAojpT}SX9lBDIUJ2C8o!*_ zu1nSQ-PE_E?iRheygdK>sb=%##pjyYcyrynE~}bTE5E^edoX{2_LPiZN`@95? ziEmDY-+k2j>kZ^%K7H_QiE#f7w+GOh%>JtN_bJPw{Yv0peEa%ubSBc)>*)dbk%+r- znH3N&D~x`)K0)+?t#dCgF9#*A5R)4Iy$l8s?oC#Vwz(S)eD@q-RUlSa)BX&=0Orbj zk*UA3l^0$a%2SmVctWaf-PH=`F7|vyI~c%^LNe&rr>GsN)+`GKE)9@woU0hq7vsgS zig*x~3#T#maoO_CU=qhD^&^sm9W0?JJ_A`na#z3@67+UqxJ_%eChOuUo5eP2NFNM` z`^P60P~$*eu6dVVwXpi>?c4fGfBNv#)%oYE^N+Y#pq+q@hFenr!m>|0k4WnrP|VX(&+_mLshXZ+%NVz5tydrFzX-r$iA zLxFJ<2Uf;enFeX2poJzXbmN5VLQXWR70JKoU}>nY(RW5Jnnj)~LBdQ$D`?@#_4% z{z~)aRUGXnG5*0yquC@!g#m4%0&g>zxGNZJcc(Wq>m{0%<#=g3T(xc5MgVV@jk}R2 z8hb+!mTOmjh@U^7FRCS9#pjef!SHq-=D=NuiR(!3EnQ|XIhoy1;jrPp zLF#eIWQrq|P` zJYzPSR!C$~w-{^#BL-idPv5?McXE0%9*qz~ANASU?s^AzNLvA5N8F!%^Qv~6JUVer zAJCo-#=>{lsWz}VIM`?3GAYy0my`uV{yAvP2jUIczvdG4wIK~jHNxARZkyn_cA`dUVk!`WS{06!GjVwj*yoMr%5Wa)bPg5Tg#RFc7B!(KGZi1h|B0ocRX z7lQaHv`d-sX$ZmsnT*?j;qay);rJzx#57C*+=XPeYh(LcnB9I1Hfh6Y`$3h?l-@E|L*;GGJgN#``Pt$ zK3hOAm<@;tW89DfY6=3`#KUp(qUYL6w5X~#t#w)l%94B6 z2D|B@gy8^YW5_4WZ?`qZdzB4Yz;?Ux{kR5O^d%QG?;7GRKpVpVuGwJMLj+*~lWS9! zEN#a2s}C~5jufVF4#{*oC=p{INl;vZpbJU*&^Cp`#HWg=@BQAvIEG+$Gw-e- zuO1$u=vzYz)X9U`t?^`1AD>K`3h?agRK_(i?XNDcZf)BQ89Z!Bc5d`0;3} za;j^|x(9B5udc0H02b|h6C0iogBGY-L@||vZ3*C+mk{Rewzw<%-okiP!&oOrHG7q5 z+9t588R;#y#xIJTV%QtO+y_h>9OB4YC9YpGNql7Bm-d5iQN#KaE=2F#KyNXaDlzekaP)4JJ>`_75;6=(^q`iD66Jj zHl_>5xf42q+S=RSb2E!xzIySC+N#c2{|C~1%o$2U0|?=Lq*GuJ~A-8rR!bHp5b(|=Od7H8!TPNbZ`EK9%2ZFubtHF zvD%_9a3C#_;cVZ;(sj<{3QQCNp7)S27y!aiwtazYU!G%yxU85nbjX4 zpaY?|TK5UyothwokMujS%KuK+Rqd^9hJoymD$~rixtY#-WAW-3gj)y2VATZ-8$JO% zWc`LX*NE`qRqKg+K zn8hwc^o>Z&B_?H(?bJ6L%u~qI7qZ4B2wG*(CE*9bNR=q%^sCV8Yy^q@26Uh|3XcPU z!3=HOru5AomESN9Fxi6-VZz$=h!ntEtvdmDSBPs?Gd)*~rn)yZYfhk%OI~MH_m(+l z9f}$e*{BNkZc9l}VnO?aqE26L9=i`eEZSbwjhFIfwf8w2VfBL8_KshVWN$lrE7|c} zx}!aG5#$)=mT?^6mcBC5m3#)cOW2l)pR<$zOn;Jx_uJDZt)R8#7$;kLaQe@WByVkw@#8DY-IxsJC?~;><$U5 z7f=kvf`H+4oBYpWn}&2TeL;k~Ww(%D`$J&nu3`vIW?%<6l80Geh&p^u}D!x$5?#y5~bwP(Q&j3993S>2EEgwmvVXgL48qwHL z4VI!e-3?Y)fG)OfxF@OGMqvs=IzG!@+HtDu(GB{fsg<;Lx zXoRadF@k9#Df(2Q<#u*{?NC10vU;7B(6>xhKS+#McRonBJAar-#@sWQJe(&VZ zu*S&6)pf@)SyRftj9wG(rsqYWGAf71Z!8LnX*tg`(YuY|;DvTjgg|R&07E>Z_t&IUHo@?XtzODC8M|>b=inCOs2R6N&S(_ZCJa*!fROCJcG6X7pw$kE z51Tft65>K+vxaCnrsTj30_V|HQuCKFTnPr7HMt8dthPwp-2`a`LN|T;`PzRJI^y<3 zD+i@^18=zo|LZ^d??J`tsdzT5t;^8kXwazak0VU4pvdZVyou{p4ApYth^Am3Bn=?> znqatt%80a@G(uplArCX7H`vNqtJmfr7{^9T-en|HuQ2fNX#ny-gLgz5`a*`(10iW#vZs!DK;~}ZvxoINS%4pG9k@MNdM}~J~^~NLy zBStt&FEp9q$eD1#BH_C#vk#Jds?sgJxaluNe<+ja=$wJc43f|-e4_(hnBbR+{ zP5I^Q!L7IpX;TA|K)4lp+ojMhl=e+9*_2keS^7?-E!Q&vu(>5Z+h)`nr#-$_&*76% zjfY?S?3=&%>koEEenqn8OjO~uxeIZfhPh})Zkyy}L%TeF+FPr}^UM#PrXkbdEm(9B zIi`TC%@QVr_A7Y!?wATL_Wc+1U(q0l{@}bK0vO1mtAn^* z=5Kt@OcF;B(I>)8mHocL5$&fT$@Jn~=;1C1Y__AdVrKFgT{3fY1@ywIhHqC))sxfn zv4CYAyQVTOHGOqlQ{VspXhlLq1&JXdB8{}9f^^sDj=^XJMk6RGA@Bx7x?^;A$`BDI zF?xW~AR|XJzSqz1@%wjo=XK6~#q*qdU$6UowLYkBbQ>?%KRW-jQlh0+u-1|xakqXm z-0Qw@@2GWJJOubivE%Bh)~`As)c5L-mlW9G6U>orn`<~}5xwIC3!8sgsNj`)lolA` zA?Q7`#ycDS9YP9jL;ENZ@z#(i#x~o4FU^~9Y*EW~e@MRj+9W%5B?Vf~@8&+Yo$$-E zsvmzqnbq6b@wOn$D^s5@+3D5>6XbQpkQmKEs7%YrqsAc5_rtE?Up^z?$63mzRnW~a ztiQilUth3(b$SuH^~Ot>A%TjT`f}ytBMvuynYM47y!pwT3j!{+rF{HVqq4zmXI{bY z{9GlCF-%MAsFEBR@yiCL|3*yhYiA@ESmKpLQk>;07Qu0f3bP$U&3;=I`y3Oii={+H zf|B%uQjLaRMio5_>05-U=_eL#?ov4n*;ZE-9)u{?9&fKvHs`eVy5;f1T=z+EKjiXc9tA;Nl&hg`dy7cRF5=;E)2+BlLf`vLl`D4p?fez^X)?+n)2a!P z|EWDov2siLt1Mkzc!1Vs_@dOGl2yl?P3Ps-KArtie7);~c9!~R=1Qt%Lx6jYf&kTm7c zR;qJ$ zMe(U)L$~xM$-K9&tOiI=+qLL^4?L}u-AE^7h3#eYr@D_>dLzUpcNp4XjJ9o2I|=RL z-te~?3#gpYkgMzV)_PA?WA>PuAMXPGM$kl5&nv%TB$SlDA_r5Z(78?BwJ^6pGa7EB z;Wjp?bEM9O-dDYp%AC~PMV3e}GEztM583@0@%*+K+5cJ9lP3}I#kU;;1%kG7laLRXdZs8W2CDl7yudWLA z7OxbcPh1iAd#E|LR@BNn$*k)`v-AuM4BxU>MD@j{n3+S>H5TTAuCbBujT}CdtOY4i znkdD05^gDRjofOZ*%!eigbh;TZ*}jE+Zb}zpYyP3?EbgOM~23Y9Ivm-J$}@aM~4aV zj(oQ}Ta_?LwR_P$)N3)ZrX3FP=YRfd%TtiCA{+;YEGd$i&K zzwC1KD;jOefXaHTW5|OQrm3+VlF+^&2;03+$5||GVI&a8?!RjT;XAg)w2ZsVOv0qc zzWQ|LuCEfFB{K}#zby4MoAMEQzHeZyET-|l+XaD~D zvS~Er8fV#k*}s9>%Wxz>ypnEtEEiS$>g*}k#48RpOZin~)JU{O=8E&T$;or3oE^yo zR_i9V+Rmr6%#ZWLKi=wbA#Ikz4Q!wmjeK01B<(ep$2@K}Ymo2y9b%O!R068$_@6N@ zoLroI$*v@>E3`w$G@Qi!Vjn;5`bZQDA%GC%E|jENV1Zj3&n_`^YHn=M<<3Dk-@{cTqn5vd zr^TkPJ!6?U?H_+BuXMe^J^}T){tZc;Z%|dt<>xP9vXCeKh3Vdjl;ic5X}%01ay0b} z^K=Otx)c4#RgiV9M#>Kd+p`K0el$&xlE?pvrpJmT^I6X0q{7=(k3l(D>MYCZ=+BRR%JG_ zt6YJ9FMMZ5pd2(xYJ!J0!8JN|r$5J-|5}WoY7hR6_;%saUQm#2)jhu!IGWz!qH7yD zw9|==P;}C<6HqXYKRrzt?fC6{C1pE3zHi?$d5~$qXt;}=C#LR`4>Tz`1#px2={)M}t9m)n;q<9o!X@z~}T zu{HVW>t?iPh60ZjOnUkkbG%}8SD;XKtWp6(+wbUPccuM2JW21L+WUoO2gW11!l7Tc zq~>z;9fBPCi)-F{;xhxk?owdJW_DeRcnSiP7P{!2J;fNijd@&Z-2}^(k_gYh4R0S5 zD0jud*u*Jg0t+cqxb}~lh_y9_$2DHxalI6$_+ld@K@piM>iIXZc(%Xq?t+W0;X?$+T69T~pdqRRfgG3%c>Yrh9q*%Ss}M_Kt1gDZ zF$wP1bV;wrI$Ynk#f`NG5IAuv$v%q43==l=p<}VGO3Ej-d6RWhu5LVD_hvr(3h+>C z#ZxCF#A|6q^gI0KJ{VBw{Z5$oP-Q0k*3jLIzTHafU7EK0AG2uGQTF3hR*Y|Nkl4z@ zCMh4w1@;%%#CF|{9Pel2slaL&D=#Itv|d{;6y!gb4Z7%fde7tzec(tOfdFZ4KMm%0 zAnCG&#WJh;;vMFF9t(f!KiY&VJ(%oJlh4`8Pr-X}@hHs`YHF=fP0|lZN;9ly*7Jof zYrJ2cJ3%P$CfK z%Q!Fi@kwFX(^1&g{AZ9H3v1H#M}2s;1MQJc!lJL&gO^2}wlhyXG^hyD`*_I&Pg&{_ zFT)NTrDTG1s?FcunuL2^uJ@3V~)RgA;iu zokm$_k+=99+czZrhh|8?bh}eKw+_}=Pg!U&R&!#14;CuMrFblZ54QI=_y4Xr3HhgY z{b&362zn%@U`BX5hA!n*lp`o_`WNQO@BjZUplIRxFHZKxSRe!c{Y9AucbH0FTGe=_ zmRSVo0bT0A&o^JFMpPyf`nH0*Y5d^#_F}iIx-&8|cPQ54 zUfUjShR-~UpqKj+7=btUG5b`eR5t&}SKZr)SIxh$vwrRu$VpZk!4p$1Xc=_6hVRAi z@LN!leh4e32#ubyL(((mJ+eN%+n%F7!G%ak5jBHImY_f>l3$p9)T4r&!<5|X1U({i z12XE{s-uj6YI?b)=!S4z(COB}*nCPTRPE3DfK0#jy{R=Rm%Qm$*@HH~6X1X_xyi}O zlZJ)S4(FTO#gelutk z?>3T&sE>K>+@@|Vppx5rcKU2h0((onvzau%af>s$(FttU<`5}5I?UF2@vD4J5 zC4g0p(^w%YT3+DWP>tw1mEsjP2!`D<-fMbont_3`yFu%DWXLk`u|=ll1f3<-9)BO& zpL_hWH#alG?(K%cE(<}Ljjo#-lT{UPQw1HMWkgOE)ndpOxME$G6&v}}{EDHrVo6rl zN=rQS3BBY*{q&vA5P{(Hi@zgj)u*Q%-l(b$B^_?nuENL1@^I7IyS_Zu6vmOS-b#0A zCQSQdN;pMrgd}I9W|;HnI-hMEwlI5HhcBJU%b$uu)3ZC-CB$czE@F1mRSB4mSF?YW z$}O1(;RCb9JOrvbNHmIy?$Fp1b*N`5jvquLt%yx--LV?b+{*8{E*Lr(`aQiAY&`9y zB;qx2{ay6S_$#8{LPDPAJJ_K%QT_2T=7Cl$IVs>3CFR&9I|M~^M%j={TA z@vobMkcQCyrEbfv(#-7_MIg81NybRYg_cTb#O391Cp7OcuIwk~(`|c#w+^+Q&`UZh zhTQO{(LUhLkxlz|fpv!Rr}KMV5>gc!$I@b-xy*Rh9se5=mlE-_PYyGo)5gh%)Q z&`iDuF$})P>o@)rHdfkD-yyoY3TA0*uFEjgbn2v?Qpw}TdT76g4HtqIIsH@CtOko& z(eaou--c3MO?Gi1Vs=`?q2lSn;nuRaQ@JBzvs!=TETWAAe#p^%p@1oA7ki}ii)1vc zBUs|Iszs2WFDddp>u}-|>LwLE>49@cG%bzQN|AVAbfGIXP)(kgV~s zk3*n1L+kIx`q>I(e}3@+?S`j;0l=zXU>(=SZu#-iN`St+H~5k6?cGAM7HL@9qPPqL zm}T!~D+hnIx$jXYh7H=VC4ZnQ)ns@6S&C9HQaw`?X(>cE`!u@nv0LaP?22JcrXLfL z#?6+w5o)=OEnMV@3$3Sh+?%O(hQXp=9qNMiip6?TtM2OO(Afz_UmEnNjFSol}bohIptmB5q9E~2@`&+0XdVHN4?jy$E z#yXH=QU^bGk#oM2voxx%<6OF(iCics3WzMk`v2gy4k@v`)+?RT&+>l=TD*XIaSJ+r z!4KM1$9v|ReRt~Pb>LJBWN&CVjh)MKX~cxs@rKxY|v z@S|&;AbE2}zV$etTfqz^E-GlT9j@_n4(<0dPtBAFK50^xE}}k#6+cy7z>WIDzDY~+ zEavPa8JQL`lkM{rz!gmYjyknlE3H|0SfYmD=Dg)?TC+44zlF17f7IT38B8?<#ZvG}%WHYe@U+x+$`A?X}rVX1X&L_g&h|N17Q+xsnxVkm%x%1%1MkfsEubzu4+Sn23 zJ06cQ$3>T=oXfTo3N5G~a*tVk-C@5SJ~0;r&I#)$zz?A;va`V5en&Qf=@c1KO9S&? zNBQr)Mr8RS9LG~1-tWiK885$S_R65J2%TED`fX1Mn z#GSu%vXYmW_SuTJskx}h--Tz`;fd;Q|DZrG4-a4MQz#KiwXHt2hhBpJ?H&65HYudb zlTlR*3}X;kWenSjY>n7@GAlL+4`Ioh8c$cAFE%Ht$v>^y{?UKobghds+fr+P-AV(zqG+Nc3gOZlY8lOssG_9TtGcTTjJw7B{um=}JfV zkoCkYMxx2BEW#hTJU@EOUo#vrnF=$2bD%cF#Pl})tm|(aov)$2J4F^4#j;mzwBalG z!}(6&ZRl|Shih*R!*6y*^{utKUt6_}Y>s$47rE^3Tq~~!(SA?sO3LRS=*rFZs4v!O z{i~dVO=&s3$yk`F&g2U$22N_~l7!2=>(diT?%j3ggFh3&NMc$)VIWyY_7-9)?`Lv< z4b^?=ASL7L=@S?j=;hTC;!$IndMe=DDjA7cf@KNU?tmK7@-|<#ta8=FL+AH|vNa4l za9)EYXHz8^lFX?(;8l2w=b!Q>GoZFbYi1wwn?=PCKKlc2>0>D=f4+KroYws@a!TTv zGrZyfZJ;u^KPE0*L+S&(^$&*9Y_s|MUd6~&@w6kf2VOnc?S}yJZwgxUfWk^jT++Up zu@uNN8q?TavqIGJPtP;=QU-rrMoG&VFHRE$vyfu@@iR?1E#)bgRDrhStZ$tP1MZqr){to0|LOA+czW$KIFriabkga4ePsD#W)VNXb> zolAqxVIkAaI%$3M4wPSOpEdDnSx`D)c;)ns|E49HG`Nx5^3ca`0)Xk+h z3R%`hXS1I!uCJQcJWpJxR3R9nwGIOZ7HMCd^i8cmP`!?O&gwNR!}AW~P&UBXYX_=` zs4nN7m@`qV9Q-9cTTpCERv;V1u_kmtpHOHlBn9`K_Gn+nfu9HbD>56W1=ZvmHnz$@;P_4J8e?R~B7DZR};#q*LAkZVK&!BnB-^5f(%T?t4gU<4HZrg+t33ry)r*==E z_bgo1Pl$rh-aqHbrV8-H)7>);&bP9n8>HtfK-@tF)P+(v5Zh^@t=`X>8X@OG{-4qZ z87Eil*CB@ET(8kZfAW^t;djz^gX{w8n+DDyxZwsojyd4J_70#YfO*h|bmOmx!SA*Ym%`7l=Hx%%n~P)`n&>;5rAqx{Ol*?e`pgy^R<3j!*A#cN zv@nH>9l^KvO|@M^JMQ?`ewn`6j(a2=MD%lI%#k929rqH^WXyfAH`d$HSGvIqXkQGK z&{)oE*hMYA?>o2e>-gfz16iAIh9umQQ4D+vg54Hu1rZ7s(ohKq$R|i&!%!>}&+UDpwQX5Pq?E^gcj&?gXknWRmFy zTU~pXXJ=ylz%~6fdb8F{vMT+CAq(Y7lhVG$dppscYuh8#?ANS|pSmtD(C&-duQo?^ z2qZoIo~9Mlt$0@EFZ7{hC-)7c33!9 zx%~~=3mU;QO8dGy)XGKMV_D1aG)u!NW9h(ePJ<9tOY~8S%rY0+!8-u7v{EhR36YKQ ztk^Ut(?{t`&^oDksr5-e&#OZobRHUQA#}^K8-W5WQAYq0m~c#t&&l9k5MTslAusETVSd}VHavo;-q ztHxJSeOxR&4C=XApWe%mJ(=h|^QK%$F4#DH=ApZx%qJ3WP)?RCckBr`jA+%`hnlCc z-BP?={y~Ql8^v8(t~-1Dl1XZQ6}q9idPOFdJ8@z7{>W`=mPMgh%Pi)=>$RPLhy&Vl zW)A7W?Fxvr4yU+5xyIJX#AlvZ*_+7j3ku5EVKIIx81ePCRxl}iEV+`RZgjhERFX6W zHlh2Yd=7v#M#JE{Q|4Z6)Ur3*h0kLetvd=*-ptM*HRP52D*V+sy$sZFAvePzm3wdI zavAvJwnbr0~YroVtZf+eLdYqTU2|R~K8ZucdJ6PH_62vUIfn ztQEqzXpAu$gfSu9_}8ko9|DtRpbLQBf-ZkTl7G5MNc)ebC<)h@#Mz=HbT@&)CXB!{ z`n&Q2p@)(P<`m`xv^azvkcw54c;H(<7nAm4wS+;|on9Vs&KHlUspeuMH^W!uzEw>^Zsiur#vc=bOnJ(#Z}(C)>kbdbk}Ytwc;dO zNrMjZTV#fnv$qQthvX$6`m*UBmy1?Wv&dW@g&gd?YP>D2LU$ZVeHXu^_JBHl5>-XwoE*K8MC(IW{(-Z%BL`?B1_sqwu}_ zRAe7|>8eppw~?kAF(sQ7z;GW$VC#!h=3OQm3%S}kT1SOkgM28aXUA5dOTo1|^zM>8 z*{Ss=|F8zjN3#E6c+{=!N~`;vduFDMMJtwW{_p>!=w4X411#%{U%<{j6IIuBqH7gX z462R&|C}R{(3ktzN?_3wCiT^`;@Duf2>>j`LcYyP?EsppHssAjd!O%V*}*MmJ1zhU z(L^c)9o{zdH?3Ki;{^O!3vwt&CT*>3ukg~GO%L!#ng0oG%gsr`FTyVielHL6TT}@| zs2$J@nII7oh{nJADD9g+miV1+;QWxl-3T!I;3wSqc2FUwX*oSrmpUO`L)4{^u)^|( zM_fVkwVajR647P$B>+>r68UmTxopA`>Kupy=U#)lkCkd#NvkiORc)(6D=>+ejH7pbp-s@yP$^ zg8e<=nNAUC(SC>k4JF&(%~<)$CXwsU`;r2P`yyRT`~4o2!XE$fwWUZwGyZCtWm2#! zJobwZMe1OY1j0b_X;$>{nJ!3H35Ze5dsw(zUZ@l8y8-y-0_>SY zl3HUUV2cDEk{Xz6V=)6ux1V>Dnn3W+#&2Fv(^PRTMF3x=%0nc}@-)l#t{BI_wENd| z3N3i~0W$5ti(WIm;(jH|KgNIrN~3H@|We zmI7-A+DhmrmUR{PzG^3B+xI@0# zG7lB$y1tUQrH0dAv!ZaODurBBJqMu56o`7IWRsrq60W`CrmVpdvi(ohX(%_{iz>c< zW275^b?@fZ>BXgVow9pF_Ws3HfeNq^&zJOoDSQsi06+ev3&q860j$md)7MpiwsglN zN#&g9`K*Qw4PW@dwQ3g7^JljZ1d(QIw7xq0yE-s?`*A5&txa)VZ+dI%b}3i^u#J#` z4~DuicF*uajw7X9X^yNySHa)&)>6ky{Pw3b@|DO`2}CmlP?0C#OsWsIN{%j;N?Xm9*HmgTiX(#`>Z zSzx8@FyI2)Mgjiai(C`yt5@TIKbofy8Wpu6m?AJ6A(z9+`8{I%C{0aois=u^CCsv6 u!2Pdm-jIPnH#gOSR2∈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 Af&c&j diff --git a/docs/verification/vq07-progress/1f73e559c-native/inside.png b/docs/verification/vq07-progress/1f73e559c-native/inside.png deleted file mode 100644 index 5a1d63c9cbf7daa1451031d441a7d1308737c5f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130454 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%0D>w+ezv7&{DNDq?9 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%0AorxZ0o7+cLK2v1DQs0mW ze-kMzW}=qvqE{`@-WmCSpy0@zoYf~KiFTKlts2sjSYTVwzkB*EZ@rAU5k{mmeBxvc ztsC<^PAZY}Zi`O${r(U8qKeVOA_>cM%-Y^_;lYlAWHiwCg0d+T?ngemiP$E>iFU$K zu{x`4e0K^vh+l1A^+=bW{7<#`4|w3yvs~WqI1Vm)d|gmV<W^5Cb}MFSW{s9Z>o7O zhptjR5;3f1B9-g%zTnL8Q1ArqD3@nZagO%`=8CIRV%PGQ;T+L70rmQIMeP`H{jxw zX4F3#sGWb7-a4xg9TSqg^2V>10q%zUHhm&>vi0mwGKEP9oO#59N5_#c=T>_H!uG94 znIF--)^H%m*h?m@L)33Yqr(r#mCQX;%wci7!8#9Ua5w#m9EHCTnBrAV9xDWGdGu

R8)geK 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

R8)geK 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

Yj+uB;H7li_SHp6t@yI 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 diff --git a/docs/verification/vq07-progress/640c103-native/resizeSmall.png b/docs/verification/vq07-progress/640c103-native/resizeSmall.png deleted file mode 100644 index 3b155845fbcefad3af870b4a2b0e11fe734e1278..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31558 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%0D7JdUT&~wV((NAO2=c7tnin8&@@;$pS>x?etNj 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 Cfj(UT diff --git a/docs/verification/vq07-progress/640c103-native/streamWallOut.png b/docs/verification/vq07-progress/640c103-native/streamWallOut.png deleted file mode 100644 index f23177e23bc5ba523f04dce1e91b6cc394d4ee8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76371 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%0A(J8 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

0|vmkFC-YdOQ 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 K6mpR#I{05Fc*9=+ diff --git a/examples/abyss-framework/vq-fog/src/game.ts b/examples/abyss-framework/vq-fog/src/game.ts index 6f66c1d510..6fde44f016 100644 --- a/examples/abyss-framework/vq-fog/src/game.ts +++ b/examples/abyss-framework/vq-fog/src/game.ts @@ -288,7 +288,7 @@ export class FogProbe extends GameScene { logarithmicDepthBuffer?: boolean; reversedDepthBuffer?: boolean; }; - const fog = createVolumetricFog(ctx.camera as PerspectiveCamera, { + const fog = createVolumetricFog(ctx.scene, ctx.camera as PerspectiveCamera, { enabled: this.#mode !== "off" && this.#mode !== "blackOff", renderer: ctx.renderer.kind, logarithmicDepth: raw.logarithmicDepthBuffer, @@ -301,7 +301,7 @@ export class FogProbe extends GameScene { anisotropy: 0.35, sun: this.#sun, points: [this.#point], - environment: { aerialPerspective: false, godRays: false, sceneFog: false }, + environment: { aerialPerspective: false, godRays: false }, }); const world = new WorldEnvironment({ bloomEnabled: false, diff --git a/packages/create-threenative/__tests__/scaffold.spec.ts b/packages/create-threenative/__tests__/scaffold.spec.ts index d497db397b..cb42777f15 100644 --- a/packages/create-threenative/__tests__/scaffold.spec.ts +++ b/packages/create-threenative/__tests__/scaffold.spec.ts @@ -180,11 +180,11 @@ const PRD_201_PARENT_SCAFFOLD_HASHES: Readonly> = { sailing: "0a70a652dd128e56be83863ac45dab52c5aa05d7944f584108d0f7b5900c829e", shooter: "b13ae63da5e591296d68b4e419780f5bd6f640d79702910cdbb71a4e25bf88cd", snow: "7a0f7d84d2c0591fe87ad23756ec3fc6e1566247a12337899a6dde2071b75454", - // VQ07: only starter moved again — Play.ts now calls createVolumetricFog through setupPost's - // per-graph `fog` factory and postprocessing.ts forwards it as WorldEnvironment's baseColour, - // so the shipped medium is reachable instead of dead generated source. Twelve prior trees - // still match develop's measurements, which is the ablation for this one-line change. - starter: "4727b687158dc0e9563cbde84f99443d76a31dd75fdb87e5f8fc5be9aad1cf7c", + // VQ07: only starter moved again — the authored mist now lives in the fog render source as + // `STARTER_MIST` (its single `enabled` flag, and no backend of its own) instead of a `MIST` + // block in the scene, and Play.ts passes the live `ctx.renderer.kind` beside it. Twelve prior + // trees still match develop's measurements, which is the ablation for this change. + starter: "a0abaf94bb926590b7b806855945782b31dc5b5003b8d0579f00e0736d108d2c", "tower-defense": "5f56275cfff3b81607c6aca3662d776df0052fed462ff00e93568ab50ecbc789", }; diff --git a/packages/create-threenative/__tests__/vq-volumetric-fog.spec.ts b/packages/create-threenative/__tests__/vq-volumetric-fog.spec.ts index 77f938b7ad..f3ebce1e38 100644 --- a/packages/create-threenative/__tests__/vq-volumetric-fog.spec.ts +++ b/packages/create-threenative/__tests__/vq-volumetric-fog.spec.ts @@ -1,9 +1,12 @@ +import { readFile } from "node:fs/promises"; +import path from "node:path"; import { Box3, BoxGeometry, Color, DepthTexture, DirectionalLight, + FogExp2, Mesh, MeshBasicMaterial, OrthographicCamera, @@ -42,7 +45,7 @@ function settings(): IVolumetricFogOptions { albedo: new Color(0.8, 0.8, 0.8), ambient: new Color(0.1, 0.1, 0.1), anisotropy: 0, - environment: { aerialPerspective: false, godRays: false, sceneFog: false }, + environment: { aerialPerspective: false, godRays: false }, }; } @@ -55,71 +58,103 @@ describe("opt-in generated volumetric fog", () => { if (reason === "unsupported") options.renderer = "webgl2"; if (reason === "zero") required(options.volumes[0]).density = 0; if (reason === "empty") options.volumes = []; - expect(createVolumetricFog(new PerspectiveCamera(), options)).toBeUndefined(); + expect(createVolumetricFog(new Scene(), new PerspectiveCamera(), options)).toBeUndefined(); }, ); it.each([0, -1, 8.5, 129, Number.NaN])("rejects invalid steps %s", (steps) => { - expect(() => createVolumetricFog(new PerspectiveCamera(), { ...settings(), steps })).toThrow( - /steps/, - ); + expect(() => + createVolumetricFog(new Scene(), new PerspectiveCamera(), { ...settings(), steps }), + ).toThrow(/steps/); }); it.each([0, 0.25, 2, Number.NaN])("rejects unsupported resolution %s", (resolutionScale) => { expect(() => - createVolumetricFog(new PerspectiveCamera(), { ...settings(), resolutionScale }), + createVolumetricFog(new Scene(), new PerspectiveCamera(), { ...settings(), resolutionScale }), ).toThrow(/resolutionScale/); }); it("refuses unqualified camera and depth encodings", () => { expect(() => - createVolumetricFog(new OrthographicCamera() as unknown as PerspectiveCamera, settings()), + createVolumetricFog( + new Scene(), + new OrthographicCamera() as unknown as PerspectiveCamera, + settings(), + ), ).toThrow(/perspective/); expect(() => - createVolumetricFog(new PerspectiveCamera(), { ...settings(), logarithmicDepth: true }), + createVolumetricFog(new Scene(), new PerspectiveCamera(), { + ...settings(), + logarithmicDepth: true, + }), ).toThrow(/depth/); expect(() => - createVolumetricFog(new PerspectiveCamera(), { ...settings(), reversedDepth: true }), + createVolumetricFog(new Scene(), new PerspectiveCamera(), { + ...settings(), + reversedDepth: true, + }), ).toThrow(/depth/); }); it("rejects double-counted atmosphere or shafts before allocation", () => { - for (const name of ["aerialPerspective", "godRays", "sceneFog"] as const) { + for (const name of ["aerialPerspective", "godRays"] as const) { const options = settings(); options.environment[name] = true; - expect(() => createVolumetricFog(new PerspectiveCamera(), options)).toThrow(/same medium/); + expect(() => createVolumetricFog(new Scene(), new PerspectiveCamera(), options)).toThrow( + /same medium/, + ); } }); it("rejects invalid density, bounds, albedo and phase", () => { const options = settings(); required(options.volumes[0]).density = -1; - expect(() => createVolumetricFog(new PerspectiveCamera(), options)).toThrow(/density/); + expect(() => createVolumetricFog(new Scene(), new PerspectiveCamera(), options)).toThrow( + /density/, + ); required(options.volumes[0]).density = 0.2; required(options.volumes[0]).bounds.makeEmpty(); - expect(() => createVolumetricFog(new PerspectiveCamera(), options)).toThrow(/bounds/); + expect(() => createVolumetricFog(new Scene(), new PerspectiveCamera(), options)).toThrow( + /bounds/, + ); expect(() => - createVolumetricFog(new PerspectiveCamera(), { ...settings(), anisotropy: 1 }), + createVolumetricFog(new Scene(), new PerspectiveCamera(), { ...settings(), anisotropy: 1 }), ).toThrow(/anisotropy/); expect(() => - createVolumetricFog(new PerspectiveCamera(), { ...settings(), albedo: new Color(2, 0, 0) }), + createVolumetricFog(new Scene(), new PerspectiveCamera(), { + ...settings(), + albedo: new Color(2, 0, 0), + }), ).toThrow(/albedo/); }); it("refuses missing directional maps and unsupported local-light shadows", () => { const sun = new DirectionalLight(); sun.castShadow = true; - expect(() => createVolumetricFog(new PerspectiveCamera(), { ...settings(), sun })).toThrow( - /shadow map/, - ); + expect(() => + createVolumetricFog(new Scene(), new PerspectiveCamera(), { ...settings(), sun }), + ).toThrow(/shadow map/); const point = new PointLight(); expect(() => - createVolumetricFog(new PerspectiveCamera(), { ...settings(), points: [point] }), + createVolumetricFog(new Scene(), new PerspectiveCamera(), { ...settings(), points: [point] }), ).toThrow(/finite-range/); point.distance = 5; point.castShadow = true; expect(() => - createVolumetricFog(new PerspectiveCamera(), { ...settings(), points: [point] }), + createVolumetricFog(new Scene(), new PerspectiveCamera(), { ...settings(), points: [point] }), ).toThrow(/unshadowed/); }); + it("owns the scene's fog while it lives and puts the authored fog back", () => { + // The starter's `sky.ts` installs a FogExp2 on `scene.fog`; two air densities would double it. + const scene = new Scene(); + const authored = new FogExp2(0xcfd8e3, 0.003); + scene.fog = authored; + const camera = new PerspectiveCamera(); + const fog = required(createVolumetricFog(scene, camera, settings())); + expect(scene.fog).toBeNull(); + expect(() => fog.compose(pass(scene, camera))).not.toThrow(); + fog.dispose(); + expect(scene.fog).toBe(authored); + }); it("owns no history and disposes its own target and material exactly once", () => { const camera = new PerspectiveCamera(); - const fog = required(createVolumetricFog(camera, settings())); - const scenePass = pass(new Scene(), camera); + const scene = new Scene(); + const fog = required(createVolumetricFog(scene, camera, settings())); + const scenePass = pass(scene, camera); expect(fog.compose(scenePass)).toBeDefined(); expect(fog.diagnostics()).toMatchObject({ steps: 32, @@ -152,7 +187,7 @@ it.each([false, true])("builds the actual depth-clipped transport WGSL (lights=% options.sun = sun; options.points = [new PointLight(0xffffff, 1, 4)]; } - const fog = required(createVolumetricFog(camera, options)); + const fog = required(createVolumetricFog(new Scene(), camera, options)); const scenePass = pass(new Scene(), camera); fog.compose(scenePass); const object = new Mesh(new BoxGeometry(), new MeshBasicMaterial()); @@ -196,3 +231,30 @@ it.each([false, true])("builds the actual depth-clipped transport WGSL (lights=% scenePass.dispose(); options.sun?.shadow.map?.dispose(); }); + +/** + * The shipped wiring, as source. Two ways this regressed are both silent at runtime: a look that + * lives in a scene file breaks `src/render/` ownership, and a hardcoded backend builds a medium on + * a WebGL fallback that then silently allocates nothing. + */ +describe("the starter's shipped mist", () => { + const source = (relative: string) => + readFile(path.join("packages/create-threenative/templates/starter/src", relative), "utf8").then( + (text) => text, + ); + + it("keeps its flag in the fog source and names no backend of its own", async () => { + const fog = await source("render/volumetricFog.ts"); + expect(fog).toMatch(/export const STARTER_MIST: Omit/u); + expect(fog).toMatch(/enabled: false/u); + expect(fog).not.toMatch(/renderer: "webgpu"/u); + }); + + it("keeps the authored look out of the scene and wires the live backend once", async () => { + const play = await source("scenes/Play.ts"); + expect(play).not.toMatch(/IVolumetricFogOptions|volumes:|albedo:/u); + expect(play).toMatch( + /createVolumetricFog\(ctx\.scene, ctx\.camera as PerspectiveCamera, \{\s*\.\.\.STARTER_MIST,\s*renderer: ctx\.renderer\.kind,?\s*\}\)/u, + ); + }); +}); diff --git a/packages/create-threenative/templates/starter/AGENTS.md b/packages/create-threenative/templates/starter/AGENTS.md index 515ae27238..2eb3d90d2a 100644 --- a/packages/create-threenative/templates/starter/AGENTS.md +++ b/packages/create-threenative/templates/starter/AGENTS.md @@ -81,8 +81,7 @@ therefore keep the previous clip's pose, and `boneContact` reports in metres whe ## Quality and proof `src/render/quality.ts` owns `low`, `medium`, `high`; platform selects the boot tier, and `adaptiveQuality.ts` reads `game.ts` frame windows. Fresh GPU time wins, with a named presentation fallback. After startup, two overloaded windows lower quality; five with 20% headroom raise it; cooldown is five seconds. Presentation fallback allows 5% timing jitter (`presentationTolerance`); `overloadBudgetMs` reports its threshold. Vsync-bound presentation alone cannot prove recovery headroom. -`setupPost` exposes policy options and `targetFps`; `Play` supplies `display.maxFps` and readiness. Pin `{ tier: "low" }`; invalid tiers throw and pinned costs report. The `quality` entity and `TN_QUALITY_TIER` expose decisions; dispose on scene exit. -A bounded participating medium is generated source you own: `src/render/volumetricFog.ts` and its three companions build depth-correct mist that the sun and unshadowed point lights light up. `Play.ts` keeps it off in `MIST` — off costs no target and no pixel — and `setupPost`'s `fog` factory rebuilds it whenever the tier replaces the chain. Aerial perspective, scene fog and god rays must stay off: they render the same air. +`setupPost` exposes policy options and `targetFps`; `Play` supplies `display.maxFps` and readiness. Pin `{ tier: "low" }`; invalid tiers throw and pinned costs report. The `quality` entity and `TN_QUALITY_TIER` expose decisions; dispose on scene exit. A bounded participating medium is generated source you own: `src/render/volumetricFog.ts` and its three companions build depth-correct mist, and `STARTER_MIST` there owns this game's density, colour, bounds and its single `enabled` flag — off costs no target and no pixel. `Play` passes it the live `ctx.renderer.kind`, so the WebGL fallback allocates nothing, and it owns `scene.fog` while it lives, so aerial perspective and god rays must stay off: they render the same air. `setupPost`'s `fog` factory rebuilds it whenever the tier replaces the chain. It is lit by `ambient` until you pass `points` (unshadowed, finite-range `PointLight`s) or a `sun` whose shadow map already exists — nothing wires one for you. The shipped chain is ambient occlusion on `high` and `medium`, bloom, vignette, the tone curve and the shared SMAA. There are no authored paint stages: a real sun and a real sky carry the shading, and a Kuwahara smear or an ink outline over a photograph only cost frames. `quality.ts` owns tier and strength, and every `xxxEnabled: true` carries the measurement that justified it; `TN_RENDER_CHAIN` names each stage independently, and a missing stage observation is a failure. `input.vector("move").y` is +up, so forward uses one explicit `-move.y` conversion. A scenario with no assertions or missing observations fails; open a real capture after visual changes. When a frame costs more than it should, find the object first: backtick opens the overlay, whose **Geometry** tab captures one frame on **Capture** and ranks the objects that submitted its triangles beside their projected size on screen; an agent gets the same report from `"assert": { "geometry": { "limit": 25 } }` in a scenario, which needs `runtime.geometry`. Those numbers are measured submissions reconciled against the frame's own pass totals, so the remainder the rows do not account for is reported, and what cannot be measured — a packed batch's per-member draws, unknown bounds — says so with a reason instead of reading as zero. diff --git a/packages/create-threenative/templates/starter/CLAUDE.md b/packages/create-threenative/templates/starter/CLAUDE.md index e1414b7448..531fb9629a 100644 --- a/packages/create-threenative/templates/starter/CLAUDE.md +++ b/packages/create-threenative/templates/starter/CLAUDE.md @@ -83,8 +83,7 @@ therefore keep the previous clip's pose, and `boneContact` reports in metres whe ## Quality and proof `src/render/quality.ts` owns `low`, `medium`, `high`; platform selects the boot tier, and `adaptiveQuality.ts` reads `game.ts` frame windows. Fresh GPU time wins, with a named presentation fallback. After startup, two overloaded windows lower quality; five with 20% headroom raise it; cooldown is five seconds. Presentation fallback allows 5% timing jitter (`presentationTolerance`); `overloadBudgetMs` reports its threshold. Vsync-bound presentation alone cannot prove recovery headroom. -`setupPost` exposes policy options and `targetFps`; `Play` supplies `display.maxFps` and readiness. Pin `{ tier: "low" }`; invalid tiers throw and pinned costs report. The `quality` entity and `TN_QUALITY_TIER` expose decisions; dispose on scene exit. -A bounded participating medium is generated source you own: `src/render/volumetricFog.ts` and its three companions build depth-correct mist that the sun and unshadowed point lights light up. `Play.ts` keeps it off in `MIST` — off costs no target and no pixel — and `setupPost`'s `fog` factory rebuilds it whenever the tier replaces the chain. Aerial perspective, scene fog and god rays must stay off: they render the same air. +`setupPost` exposes policy options and `targetFps`; `Play` supplies `display.maxFps` and readiness. Pin `{ tier: "low" }`; invalid tiers throw and pinned costs report. The `quality` entity and `TN_QUALITY_TIER` expose decisions; dispose on scene exit. A bounded participating medium is generated source you own: `src/render/volumetricFog.ts` and its three companions build depth-correct mist, and `STARTER_MIST` there owns this game's density, colour, bounds and its single `enabled` flag — off costs no target and no pixel. `Play` passes it the live `ctx.renderer.kind`, so the WebGL fallback allocates nothing, and it owns `scene.fog` while it lives, so aerial perspective and god rays must stay off: they render the same air. `setupPost`'s `fog` factory rebuilds it whenever the tier replaces the chain. It is lit by `ambient` until you pass `points` (unshadowed, finite-range `PointLight`s) or a `sun` whose shadow map already exists — nothing wires one for you. The shipped chain is ambient occlusion on `high` and `medium`, bloom, vignette, the tone curve and the shared SMAA. There are no authored paint stages: a real sun and a real sky carry the shading, and a Kuwahara smear or an ink outline over a photograph only cost frames. `quality.ts` owns tier and strength, and every `xxxEnabled: true` carries the measurement that justified it; `TN_RENDER_CHAIN` names each stage independently, and a missing stage observation is a failure. `input.vector("move").y` is +up, so forward uses one explicit `-move.y` conversion. A scenario with no assertions or missing observations fails; open a real capture after visual changes. When a frame costs more than it should, find the object first: backtick opens the overlay, whose **Geometry** tab captures one frame on **Capture** and ranks the objects that submitted its triangles beside their projected size on screen; an agent gets the same report from `"assert": { "geometry": { "limit": 25 } }` in a scenario, which needs `runtime.geometry`. Those numbers are measured submissions reconciled against the frame's own pass totals, so the remainder the rows do not account for is reported, and what cannot be measured — a packed batch's per-member draws, unknown bounds — says so with a reason instead of reading as zero. diff --git a/packages/create-threenative/templates/starter/src/render/volumetricFog.ts b/packages/create-threenative/templates/starter/src/render/volumetricFog.ts index 83aa9ad1f0..fa9e0f9448 100644 --- a/packages/create-threenative/templates/starter/src/render/volumetricFog.ts +++ b/packages/create-threenative/templates/starter/src/render/volumetricFog.ts @@ -1,11 +1,13 @@ // Generated for you: opt-in Three.js, with no default tier or picture change. -// Compose this medium before exposure/bloom/output. Disable its scene fog, aerial haze and -// god rays; a separate clear-air sky remains valid. Density/phase/colour belong to this game. +// Compose this medium before exposure/bloom/output. It takes the scene's own fog over while it +// lives and restores it on disposal; aerial haze and god rays must stay off, and a separate +// clear-air sky remains valid. Density/phase/colour belong to this game — see `STARTER_MIST` +// below for the starter's own, which is the object to edit when the mist should be on. // Pinned Three 0.185.1 VolumeNodeMaterial skips directional lights and couples extinction to // illumination. This bounded integrator reuses GodraysNode's depth/shadow coordinates instead. // `volumetricFogOptions.ts` is the contract it accepts, `volumetricFogVolume.ts` the graph it // builds and owns, and `volumetricFogTransport.ts` the per-step integration inside it. -import type { PerspectiveCamera } from "three"; +import { Box3, Color, type PerspectiveCamera, type Scene, Vector3 } from "three"; import type { Node, NodeMaterial, RenderTarget } from "three/webgpu"; import type { IFogVolume, IVolumetricFogOptions } from "./volumetricFogOptions.js"; import { validateFogOptions } from "./volumetricFogOptions.js"; @@ -17,13 +19,59 @@ export type { IFogVolume, IVolumetricFogOptions }; /** The owned medium a composed graph exposes: one controller, one graph, one owned target. */ export type IFogMedium = Exclude, undefined>; -/** Off, unsupported and zero-density return before allocating any graph/target/material. */ -export function createVolumetricFog(camera: PerspectiveCamera, supplied: IVolumetricFogOptions) { +/** + * This game's mist — the one flag, density, colour, bounds and step count, all in this folder + * because they are look decisions. `Play.ts` passes this object and the live renderer's `kind` to + * `createVolumetricFog`; the backend is deliberately not in here, so no scene can claim a backend + * the renderer does not have. + * + * `enabled: false` costs nothing: the medium returns before this module allocates a target, a + * material or a graph, so the shipped picture and the off baseline are exactly what they were + * without it. Set it true and the mist is bounded by `volumes`, thins with height and is lit by + * `ambient` alone. + * + * There is no automatic sun. Pass `sun: key` from `lighting.ts` once `key.shadow.map` exists — the + * graph is built before the first render, so the first medium has no shadow map to sample and none + * is invented; a tier change rebuilds it and picks one up. Up to four unshadowed finite-range + * `PointLight`s need no preparation at all. + */ +export const STARTER_MIST: Omit = { + enabled: false, + steps: 32, + resolutionScale: 0.5, + // A slab over the arena floor: thickest at the boards, thinning with height. + volumes: [ + { + bounds: new Box3(new Vector3(-9, 0, -6), new Vector3(9, 3, 6)), + density: 0.06, + baseHeight: 0, + heightFalloff: 0.5, + }, + ], + albedo: new Color("#cfd8e3"), + ambient: new Color("#0b1016"), + anisotropy: 0.3, + environment: { aerialPerspective: false, godRays: false }, +}; + +/** + * Off, unsupported and zero-density return before allocating any graph/target/material. + * + * While a medium lives it owns the scene's fog: `sky.ts` renders the same air through + * `scene.fog`, so two of them would double it. Disposal puts the authored fog back. + */ +export function createVolumetricFog( + scene: Scene, + camera: PerspectiveCamera, + supplied: IVolumetricFogOptions, +) { if (!supplied.enabled || supplied.renderer !== "webgpu") return undefined; const options = { ...supplied }; validateFogOptions(camera, options); const volumes = options.volumes.filter((volume) => volume.density > 0); if (volumes.length === 0) return undefined; + const authoredFog = scene.fog; + scene.fog = null; let graph: IFogVolumeGraph | undefined; let disposed = false; return { @@ -61,6 +109,7 @@ export function createVolumetricFog(camera: PerspectiveCamera, supplied: IVolume graph?.target.dispose(); graph?.material.dispose(); graph = undefined; + scene.fog = authoredFog; }, }; } diff --git a/packages/create-threenative/templates/starter/src/render/volumetricFogOptions.ts b/packages/create-threenative/templates/starter/src/render/volumetricFogOptions.ts index 03fcdc9daa..0b76d69a12 100644 --- a/packages/create-threenative/templates/starter/src/render/volumetricFogOptions.ts +++ b/packages/create-threenative/templates/starter/src/render/volumetricFogOptions.ts @@ -11,6 +11,7 @@ export interface IFogVolume { } export interface IVolumetricFogOptions { enabled: boolean; + /** The live renderer's backend, `renderer.kind`. Anything but `webgpu` allocates nothing. */ renderer: string; /** Explicit unqualified budget, 8–128. No automatic tier admission before measurements. */ steps: number; @@ -19,12 +20,21 @@ export interface IVolumetricFogOptions { albedo: Color; ambient: Color; anisotropy: number; + /** + * A shadow-casting `DirectionalLight` whose `shadow.map` is already initialized — there is no + * other shadow source this graph can read, and none is created for it. + */ sun?: DirectionalLight; /** At most four unshadowed finite-range PointLights; spot/cube shadows are excluded. */ points?: PointLight[]; logarithmicDepth?: boolean; reversedDepth?: boolean; - environment: { aerialPerspective: boolean; godRays: boolean; sceneFog: boolean }; + /** + * What else is already drawing the same air. Both false is the only qualified answer: the + * medium takes `scene.fog` over while it lives and puts it back on disposal, so only aerial + * perspective and god rays have to stay off — either would add its contribution a second time. + */ + environment: { aerialPerspective: boolean; godRays: boolean }; } function finite(name: string, value: number, low: number, high = Number.POSITIVE_INFINITY): void { if (!Number.isFinite(value) || value < low || value > high) @@ -61,9 +71,9 @@ export function validateFogOptions( validateVolumes(options.volumes); for (const channel of options.albedo.toArray()) finite("albedo", channel, 0, 1); for (const channel of options.ambient.toArray()) finite("ambient", channel, 0); - if (Object.values(options.environment).some(Boolean)) + if (options.environment.aerialPerspective || options.environment.godRays) throw new Error( - "volumetricFog: disable aerial perspective, scene fog and god rays for the same medium.", + "volumetricFog: aerial perspective and god rays must be off — this graph renders the same medium.", ); const sun = options.sun; if ( diff --git a/packages/create-threenative/templates/starter/src/scenes/Play.ts b/packages/create-threenative/templates/starter/src/scenes/Play.ts index 49ba3ed0fe..52129f90be 100644 --- a/packages/create-threenative/templates/starter/src/scenes/Play.ts +++ b/packages/create-threenative/templates/starter/src/scenes/Play.ts @@ -11,15 +11,12 @@ import { } from "@threenative/core"; import { Area3D, CollisionShape3D, type IPhysicsContext, RigidBody3D } from "@threenative/physics"; import { - Box3, BufferAttribute, - Color, Group, Mesh, NearestFilter, type PerspectiveCamera, type Texture, - Vector3, } from "three"; import config from "../../threenative.config.js"; import { Crate } from "../entities/Crate.js"; @@ -35,7 +32,7 @@ import { setupPost } from "../render/postprocessing.js"; import { ball, block, spike, tube } from "../render/shapes.js"; import { setupSky } from "../render/sky.js"; import { TouchControls } from "../render/touch-controls.js"; -import { type IVolumetricFogOptions, createVolumetricFog } from "../render/volumetricFog.js"; +import { STARTER_MIST, createVolumetricFog } from "../render/volumetricFog.js"; import type { GameState } from "../state.js"; export type GameCtx = ICtx; @@ -46,31 +43,6 @@ const FLOOR_SURFACE_Y = 0; const FLOOR_BOUNDS = { maxX: 5, minX: -5, maxZ: 2, minZ: -2 } as const; /** The near platform's own footprint, which the support surface below answers for. */ const FLOOR_SIZE = { depth: 4.2, width: 10 } as const; -/** - * The starter's bounded mist, off in every shipped tier. `createVolumetricFog` returns before it - * allocates a target or a material, so this costs nothing and changes no pixel. Set `enabled` and - * the `volumes` box the course to get depth-correct mist the sun and any local lights light up. - * Density, colour and step count are look decisions and belong here, not in a package. - */ -const MIST: IVolumetricFogOptions = { - enabled: false, - renderer: "webgpu", - steps: 32, - resolutionScale: 0.5, - volumes: [ - { - bounds: new Box3(new Vector3(-9, 0, -6), new Vector3(9, 3, 6)), - density: 0.06, - baseHeight: 0, - heightFalloff: 0.5, - }, - ], - albedo: new Color("#cfd8e3"), - ambient: new Color("#0b1016"), - anisotropy: 0.3, - // The medium and the sky's aerial perspective are the same air; two would double it. - environment: { aerialPerspective: false, godRays: false, sceneFog: false }, -}; export class Play extends Scene { #assetProof: Mesh | undefined; @@ -186,12 +158,13 @@ export class Play extends Scene { targetFps: resolveTargetFps(config, getPlatform()).targetFps, ready: () => ctx.startup.phase === "ready", // Rebuilt per graph, so a tier change that replaces the chain cannot compose one medium - // twice. With `MIST.enabled` false the factory returns undefined and nothing is allocated. - fog: () => { - this.#mist?.dispose(); - this.#mist = createVolumetricFog(ctx.camera as PerspectiveCamera, MIST); - return this.#mist; - }, + // twice. The look and the flag are `STARTER_MIST`'s, in `volumetricFog.ts`; only the + // backend is wired here, and with `enabled` false nothing is allocated at all. + fog: () => + createVolumetricFog(ctx.scene, ctx.camera as PerspectiveCamera, { + ...STARTER_MIST, + renderer: ctx.renderer.kind, + }), }), ); const loading = createLoadingScreen(ctx); @@ -386,13 +359,11 @@ export class Play extends Scene { } #post: ReturnType | undefined; - #mist: ReturnType; override exit(ctx: GameCtx): void { + // Also releases the medium `setupPost` built, with the graph it composed into. this.#post?.dispose(); this.#post = undefined; - this.#mist?.dispose(); - this.#mist = undefined; super.exit(ctx); } } diff --git a/scripts/__tests__/temp-dir-guard.spec.ts b/scripts/__tests__/temp-dir-guard.spec.ts index 78c4af9b9d..c142633502 100644 --- a/scripts/__tests__/temp-dir-guard.spec.ts +++ b/scripts/__tests__/temp-dir-guard.spec.ts @@ -95,10 +95,6 @@ const allowedProductionCreators = new Map([ "packages/runtime-native/tests/resize-presentation-behavior.test.mjs", "The presentation contract compiles a standalone probe with the system compiler into a scratch root and removes it in a finally, for the same reason as the decode contract above.", ], - [ - "scripts/__tests__/verify-volumetric-fog.spec.ts", - "The fog verifier round-trips its generated scenarios through the public loader and removes the scratch root in a finally.", - ], [ "scripts/capture-blender-mcp-tools.ts", "The tool-snapshot gate packs and installs into scratch roots removed in finally.", diff --git a/scripts/__tests__/verify-volumetric-fog.spec.ts b/scripts/__tests__/verify-volumetric-fog.spec.ts index a6a9378f21..608adb5daa 100644 --- a/scripts/__tests__/verify-volumetric-fog.spec.ts +++ b/scripts/__tests__/verify-volumetric-fog.spec.ts @@ -1,8 +1,8 @@ -import { mkdtemp, readFile, rm, writeFile } from "node:fs/promises"; -import os from "node:os"; +import { readFile, writeFile } from "node:fs/promises"; import path from "node:path"; import { describe, expect, it } from "vitest"; import { loadPlaytestScenario } from "../../packages/playtest/dist/index.js"; +import { makeTempDir } from "../../test-support/temp-dir.js"; import { fogCaptureIsValid, fogCaptureScenario, @@ -54,17 +54,13 @@ describe("volumetric fog runtime evidence", () => { expect(fogCaptureIsValid({ ...good, pass: false })).toBe(false); }); it("loads the generated pixel-bearing scenario with the public validator", async () => { - const root = await mkdtemp(path.join(os.tmpdir(), "vq07-scenario-")); - try { - for (const { mode, scenario: authored } of await fogCaptureScenarios()) { - const file = path.join(root, `${mode}.playtest.json`); - await writeFile(file, JSON.stringify(authored)); - const scenario = await loadPlaytestScenario(root, file); - expect(scenario.assert?.visual).toHaveLength(mode === "blackOff" ? 2 : 1); - expect(scenario.artifacts?.screenshots).toBe("after"); - } - } finally { - await rm(root, { recursive: true, force: true }); + const root = await makeTempDir("vq07-scenario-"); + for (const { mode, scenario: authored } of await fogCaptureScenarios()) { + const file = path.join(root, `${mode}.playtest.json`); + await writeFile(file, JSON.stringify(authored)); + const scenario = await loadPlaytestScenario(root, file); + expect(scenario.assert?.visual).toHaveLength(mode === "blackOff" ? 2 : 1); + expect(scenario.artifacts?.screenshots).toBe("after"); } }); it("loads the committed repeated-lifecycle scenario", async () => { From 38da46b8213cc3888a5c35cef2d331052daf6ff1 Mon Sep 17 00:00:00 2001 From: Joao Paulo Furtado Date: Sat, 3 Oct 2026 10:07:35 -0700 Subject: [PATCH 26/41] fix(ci): use ERE groups in the fog lane so grep -E matches The fog lane used (?:...) non-capturing groups, which grep -E does not support, so the lane never matched and the integration fog job stayed false. Plain groups keep the same alternation under POSIX ERE. --- .github/workflows/integration.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index 1282738b51..03a013cd17 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -58,7 +58,7 @@ jobs: lane() { if grep -qE "$2" <<<"$files"; then echo "$1=true"; else echo "$1=false"; fi >> "$GITHUB_OUTPUT"; } lane csg '^examples/integrations/csg/.*$|^\.github/workflows/integration\.yml$' lane decals '^packages/create-threenative/templates/shooter/src/render/decals\.ts$|^packages/create-threenative/templates/shooter/src/scenes/Play\.ts$|^packages/create-threenative/__tests__/shooter-decals[^/]*\.spec\.ts$|^packages/create-threenative/__tests__/fixtures/bounded-decals/.*$|^\.github/workflows/integration\.yml$' - lane fog '^packages/create-threenative/templates/starter/src/render/volumetricFog[A-Za-z]*\.ts$|^packages/create-threenative/templates/starter/src/render/postprocessing\.ts$|^packages/create-threenative/templates/starter/src/scenes/Play\.ts$|^packages/create-threenative/template-assets/worldEnvironment\.ts$|^packages/create-threenative/__tests__/vq-(?:volumetric-fog|fog-fixture)\.spec\.ts$|^packages/core/src/renderer\.ts$|^packages/core/src/render/chain\.ts$|^examples/abyss-framework/vq-fog/.*$|^examples/abyss-framework/playtests/vq-volumetric-fog\.playtest\.json$|^scripts/verify-volumetric-fog\.ts$|^scripts/__tests__/(?:verify-volumetric-fog|vq-fog-native-proof)\.spec\.ts$|^packages/runtime-native/include/mystral/webgpu_compat\.h$|^packages/runtime-native/src/webgpu/bindings_presentation\.cpp$|^packages/runtime-native/tests/surface_texture_status_test\.cpp$|^packages/runtime-native/tests/canvas_presentation_test\.cpp$|^\.github/workflows/integration\.yml$' + lane fog '^packages/create-threenative/templates/starter/src/render/volumetricFog[A-Za-z]*\.ts$|^packages/create-threenative/templates/starter/src/render/postprocessing\.ts$|^packages/create-threenative/templates/starter/src/scenes/Play\.ts$|^packages/create-threenative/template-assets/worldEnvironment\.ts$|^packages/create-threenative/__tests__/vq-(volumetric-fog|fog-fixture)\.spec\.ts$|^packages/core/src/renderer\.ts$|^packages/core/src/render/chain\.ts$|^examples/abyss-framework/vq-fog/.*$|^examples/abyss-framework/playtests/vq-volumetric-fog\.playtest\.json$|^scripts/verify-volumetric-fog\.ts$|^scripts/__tests__/(verify-volumetric-fog|vq-fog-native-proof)\.spec\.ts$|^packages/runtime-native/include/mystral/webgpu_compat\.h$|^packages/runtime-native/src/webgpu/bindings_presentation\.cpp$|^packages/runtime-native/tests/surface_texture_status_test\.cpp$|^packages/runtime-native/tests/canvas_presentation_test\.cpp$|^\.github/workflows/integration\.yml$' lane fluid-particles '^packages/core/src/fluid-particles\.ts$|^packages/core/src/gpu-readback\.ts$|^packages/core/__tests__/fluid-particles\.spec\.ts$|^packages/core/patches/.*$|^packages/playtest/.*$|^examples/prd476-fluid-particles/.*$|^scripts/verify-fluid-collision\.ts$|^scripts/verify-fluid-consumers\.ts$|^scripts/verify-fluid-collision-native\.ts$|^scripts/__tests__/fluid-collision-native-proof\.spec\.ts$|^packages/runtime-native/.*$|^\.github/actions/workspace-dist/.*$|^scripts/fluid-collision-proof\.ts$|^scripts/__tests__/fluid-collision-proof\.spec\.ts$|^scripts/__tests__/fluid-collision-view\.spec\.ts$|^pnpm-lock\.yaml$|^\.github/actions/pnpm/.*$|^\.github/actions/playwright-chromium/.*$|^\.github/workflows/integration\.yml$' lane ik '^examples/integrations/ik/.*$|^\.github/workflows/integration\.yml$' lane tone '^packages/playtest/.*$|^examples/abyss-framework/src/render/toneCalibration\.ts$|^examples/abyss-framework/src/tone-main\.ts$|^examples/abyss-framework/tone\.html$|^examples/abyss-framework/tone\.vite\.config\.ts$|^examples/abyss-framework/playtests/tone\.playtest\.json$|^examples/abyss-framework/package\.json$|^scripts/verify-tone-exposure\.ts$|^scripts/tone-capture-proof\.ts$|^scripts/__tests__/tone-capture-proof\.spec\.ts$|^scripts/non-visual-scenarios\.mjs$|^package\.json$|^pnpm-lock\.yaml$|^\.github/actions/pnpm/.*$|^\.github/actions/playwright-chromium/.*$|^\.github/workflows/integration\.yml$' From a3e4e342258732a773b8bade35b9094a1e7764cd Mon Sep 17 00:00:00 2001 From: Joao Paulo Furtado Date: Sat, 3 Oct 2026 10:14:42 -0700 Subject: [PATCH 27/41] fix(create-threenative): keep a fog the game authored under the live mist Disposal restored the captured scene.fog unconditionally, so a fog the game authored while the medium lived was silently clobbered on scene teardown. The medium owns the slot only while it holds it: restore the captured fog when scene.fog is still null, and leave a later authored fog as the live one. Red: the new case failed with the unconditional restore (expected the later FogExp2, got the captured one). --- .../create-threenative/__tests__/scaffold.spec.ts | 10 +++++----- .../__tests__/vq-volumetric-fog.spec.ts | 11 +++++++++++ .../templates/starter/src/render/volumetricFog.ts | 5 +++-- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/packages/create-threenative/__tests__/scaffold.spec.ts b/packages/create-threenative/__tests__/scaffold.spec.ts index cb42777f15..ad7060337c 100644 --- a/packages/create-threenative/__tests__/scaffold.spec.ts +++ b/packages/create-threenative/__tests__/scaffold.spec.ts @@ -180,11 +180,11 @@ const PRD_201_PARENT_SCAFFOLD_HASHES: Readonly> = { sailing: "0a70a652dd128e56be83863ac45dab52c5aa05d7944f584108d0f7b5900c829e", shooter: "b13ae63da5e591296d68b4e419780f5bd6f640d79702910cdbb71a4e25bf88cd", snow: "7a0f7d84d2c0591fe87ad23756ec3fc6e1566247a12337899a6dde2071b75454", - // VQ07: only starter moved again — the authored mist now lives in the fog render source as - // `STARTER_MIST` (its single `enabled` flag, and no backend of its own) instead of a `MIST` - // block in the scene, and Play.ts passes the live `ctx.renderer.kind` beside it. Twelve prior - // trees still match develop's measurements, which is the ablation for this change. - starter: "a0abaf94bb926590b7b806855945782b31dc5b5003b8d0579f00e0736d108d2c", + // VQ07 again, for the fog ownership rule alone: `volumetricFog.ts` restores the captured + // `scene.fog` only while the medium still holds the slot, so a fog the game authors while the + // medium lives survives disposal. One file, one line, starter only; the other twelve trees are + // untouched and still match develop's measurements, which is the ablation for this change. + starter: "9c0d409abeaf363be77bb8e762e36fe6794743f6010d5d3c036758c6c7605f42", "tower-defense": "5f56275cfff3b81607c6aca3662d776df0052fed462ff00e93568ab50ecbc789", }; diff --git a/packages/create-threenative/__tests__/vq-volumetric-fog.spec.ts b/packages/create-threenative/__tests__/vq-volumetric-fog.spec.ts index f3ebce1e38..4baa40cb17 100644 --- a/packages/create-threenative/__tests__/vq-volumetric-fog.spec.ts +++ b/packages/create-threenative/__tests__/vq-volumetric-fog.spec.ts @@ -150,6 +150,17 @@ describe("opt-in generated volumetric fog", () => { fog.dispose(); expect(scene.fog).toBe(authored); }); + it("leaves a fog the game authored while the medium lived", () => { + const scene = new Scene(); + scene.fog = new FogExp2(0xcfd8e3, 0.003); + const camera = new PerspectiveCamera(); + const fog = required(createVolumetricFog(scene, camera, settings())); + expect(() => fog.compose(pass(scene, camera))).not.toThrow(); + const later = new FogExp2(0x101418, 0.02); + scene.fog = later; + fog.dispose(); + expect(scene.fog).toBe(later); + }); it("owns no history and disposes its own target and material exactly once", () => { const camera = new PerspectiveCamera(); const scene = new Scene(); diff --git a/packages/create-threenative/templates/starter/src/render/volumetricFog.ts b/packages/create-threenative/templates/starter/src/render/volumetricFog.ts index fa9e0f9448..bf949087ad 100644 --- a/packages/create-threenative/templates/starter/src/render/volumetricFog.ts +++ b/packages/create-threenative/templates/starter/src/render/volumetricFog.ts @@ -58,7 +58,8 @@ export const STARTER_MIST: Omit = { * Off, unsupported and zero-density return before allocating any graph/target/material. * * While a medium lives it owns the scene's fog: `sky.ts` renders the same air through - * `scene.fog`, so two of them would double it. Disposal puts the authored fog back. + * `scene.fog`, so two of them would double it. Disposal puts the authored fog back, unless + * the game authored a new one while the medium lived — that later fog is then the live one. */ export function createVolumetricFog( scene: Scene, @@ -109,7 +110,7 @@ export function createVolumetricFog( graph?.target.dispose(); graph?.material.dispose(); graph = undefined; - scene.fog = authoredFog; + if (scene.fog == null) scene.fog = authoredFog; }, }; } From c866f644a558c0c1dab83947bdde55fc910f0139 Mon Sep 17 00:00:00 2001 From: Joao Paulo Furtado Date: Sat, 3 Oct 2026 10:18:53 -0700 Subject: [PATCH 28/41] docs(prd): record the local 29-arm browser sweep and the two defects it exposed The sweep ran every browser arm green on an nvidia/turing adapter at the pre-repair source c36455830, with the cost arms separating transport pixels, ray steps and host frame distributions and refusing any hardware claim. It is recorded as source-scoped evidence, not as qualification of the current head: the standalone fixture imports the fog source this branch just changed. --- .../PRD-VQ-07-volumetric-fog.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md index cd79ad61e9..5f549c2e32 100644 --- a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md +++ b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md @@ -190,3 +190,9 @@ Reviewer repairs (2026-10-03, source `21222ef50` + this pass). Four findings, al Red-green proof for the wiring, before the aggregate lane: the new scene-fog take-over test failed on the medium that only cleared `scene.fog` inside `dispose` (`expected FogExp2{…} to be null`), and the two new source regressions failed against the pre-repair files (no `renderer: renderer.kind` in the fog source; `Play.ts` still carrying `IVolumetricFogOptions`, `volumes:` and `albedo:`). `pnpm exec vitest run packages/create-threenative/__tests__/vq-volumetric-fog.spec.ts packages/create-threenative/__tests__/vq-fog-fixture.spec.ts --maxWorkers=1` passes 30/30, `scripts/__tests__/temp-dir-guard.spec.ts` with `scripts/__tests__/verify-volumetric-fog.spec.ts` passes 15/15, `packages/create-threenative` typecheck and root `pnpm typecheck` pass, and the documentation-link, evidence-budget, CI-structure, CI-needs and mirror-sync selection passes 230/230 with `pnpm budgets` reporting `evidence budget: ok` at the measured 71.9 MB. Only starter's expected generated-tree digest moved (`a0abaf94…`), remeasured through `createProject`; the other twelve templates still match develop's measurements. Still open, unchanged by this pass: Phase 3's native box, both acceptance criteria, and any promotion claim. The `640c103` browser/native qualification remains source-scoped — this repair changes the shipped wiring, so a fresh hosted browser and native run plus the full repository CI are required before the PRD can be marked done, and no box is ticked on the strength of the earlier run. + +Local runtime qualification at `c36455830`, and the ownership repair that moved it. A local browser WebGPU sweep over the standalone fixture ran all 29 arms — off, zero, fog, inside, sunOff, pointOff, overlap, half, wallOff, blackOff, scatter, scatterSunOff, scatterPointOff, lifecycle, lifecycleOff, resizeSmall, resizeRestore, scatterOutside, scatterOutsideSunOff, scatterOutsidePointOff, cameraCut, cameraRestore, streamWallOut, streamWallIn, sceneReentry, sceneRepeatedOff, costOff, costFull, costHalf — with every arm passing and zero diagnostics on an `nvidia`/`turing` adapter, private Xvfb at 1600x900, `page.screenshot` captures, and each arm carrying its own source SHA. Its cost arms separate the numbers honestly: `costOff` measured 0 transport pixels and 0 ray steps against `costFull`'s 256000 pixels at 48 steps and `costHalf`'s 64000 pixels at 48 steps, and each records only same-fixture host frame/render distributions (30 frames) with a sparse GPU-query sample, explicitly stating that a software adapter establishes neither hardware cost nor tier admission. This is a local browser result only: it says nothing about Linux native, which needs the hosted lane. + +Two genuine defects were found while collecting it. The `fog` lane in `integration.yml` used `(?:…)` non-capturing groups, which `grep -E` does not support, so the lane never matched and the hosted fog job would have stayed false; plain ERE groups restore it, proven by reproducing the old `grep -E` exit 1 and by 201 passing CI structure/needs tests. Separately, the five local full-suite failures in `packaging.spec.ts` and `three-storage3d-usage.spec.ts` were a stale `node_modules`, not a code regression: develop's `three@0.185.1` patch gained the compute-only 3D storage usage fix at `c18a42bea` (08:51) while this worktree's install predated it (00:17), so `computeOnlyStorage3D` was absent from the installed tree; `pnpm install --frozen-lockfile` re-applied the patch and both files pass 8/8 and 3/3 unchanged, with the patch byte-identical to develop's throughout. + +Ownership repair, red-green. `createVolumetricFog` restored the captured `scene.fog` unconditionally on disposal, so a fog the game authored while the medium lived was silently clobbered on scene teardown. The medium owns the slot only while it holds it, so disposal now restores the captured fog when `scene.fog` is still null and leaves a later authored non-null fog as the live one. The new case failed first against the unconditional restore (`expected FogExp2{…} to be FogExp2{…}`) and passes after it; `vq-volumetric-fog.spec.ts` passes 24/24 and the full scaffold suite 66/66, with only starter's expected generated-tree digest moving to `9c0d409a…` and the other twelve templates still matching develop's measurements. Root typecheck and lint pass. Because the standalone fixture imports this exact source, this repair moves the code the 29 arms exercise, so the sweep above is evidence for `c36455830` and not for the current head; a fresh hosted browser and native run is still required, and Phase 3's native box, both acceptance criteria and every promotion claim remain unticked. From 3c8d19d4036021415664df00839045300e2518b6 Mon Sep 17 00:00:00 2001 From: Joao Paulo Furtado Date: Sat, 3 Oct 2026 10:34:23 -0700 Subject: [PATCH 29/41] fix(examples): declare why the fog calibration card stays hidden The strict supersession detector reads the calibration card's visible=false as the pattern prewarm replaces. Keeping it visible at zero opacity is not an option here: the lifecycle and cost arms assert renderer draw and texture counts, so an always-submitted card would move the baseline they read. The card is a hidden reference the scattering controls alone reveal, which is what the annotation now says. --- examples/abyss-framework/vq-fog/src/game.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/examples/abyss-framework/vq-fog/src/game.ts b/examples/abyss-framework/vq-fog/src/game.ts index 6fde44f016..e221bb64b0 100644 --- a/examples/abyss-framework/vq-fog/src/game.ts +++ b/examples/abyss-framework/vq-fog/src/game.ts @@ -113,6 +113,9 @@ export class FogProbe extends GameScene { "color", new Float32BufferAttribute([0.3, 0.3, 0.3, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.9, 0.9, 0.9], 3), ); + // This card must cost zero draws outside the scattering controls, whose arms assert renderer draw + // and texture counts; a zero-opacity visible card would add a draw to every measured arm. + // engine-override: a hidden calibration reference, never a rendered surface to prewarm this.#calibration.visible = false; ctx.camera.add(this.#calibration); ctx.add(ctx.camera); From a6a155e8e7fec78396a5f8bd9bc46affc385c6d6 Mon Sep 17 00:00:00 2001 From: Joao Paulo Furtado Date: Sat, 3 Oct 2026 10:34:23 -0700 Subject: [PATCH 30/41] chore(native): re-measure the coverage record for this branch's native source The branch's native presentation and status-test additions moved the source digest, so the budgets gate failed closed against a record last measured on develop. Re-measured through native:coverage on the downloaded dependency tree: 44 declared contract targets instead of 42, and TOTAL line coverage 78.77% from 78.72%. No floor, threshold or cap moved. --- docs/verification/native-coverage-2026-08-28.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/verification/native-coverage-2026-08-28.md b/docs/verification/native-coverage-2026-08-28.md index 369ddacfd0..60f8e4649c 100644 --- a/docs/verification/native-coverage-2026-08-28.md +++ b/docs/verification/native-coverage-2026-08-28.md @@ -2,7 +2,7 @@ # Native coverage — 2026-08-28 Configuration: `tn-linux-coverage` with clang source-based coverage. Executed -42 native contract targets; 3 configured +44 native contract targets; 3 configured targets could not be built and are named below. | Subsystem | Instrumented lines | Covered | Line coverage | @@ -14,19 +14,19 @@ targets could not be built and are named below. | `src/fs/` | 235 | 189 | 80.43% | | `src/http/` | 410 | 377 | 91.95% | | `src/js/` | 2785 | 2212 | 79.43% | -| `src/platform/` | 1284 | 928 | 72.27% | +| `src/platform/` | 1293 | 936 | 72.39% | | `src/raytracing/` | 461 | 399 | 86.55% | | `src/runtime.cpp` | 2361 | 1870 | 79.20% | | `src/screenshot_gate.cpp` | 27 | 24 | 88.89% | | `src/storage/` | 327 | 286 | 87.46% | | `src/utils/` | 0 | 0 | 0.00% | | `src/vfs/` | 239 | 195 | 81.59% | -| `src/webgpu/` | 9661 | 7380 | 76.39% | +| `src/webgpu/` | 9724 | 7441 | 76.52% | | `src/webtransport/` | 1391 | 1078 | 77.50% | | `src/workers/` | 615 | 527 | 85.69% | -| **TOTAL** | **24356** | **19174** | **78.72%** | +| **TOTAL** | **24428** | **19243** | **78.77%** | -Source digest: `sha256:b309d234707d2ecd8ad21f4c86933adb2b1b9d43ed966e2e276f89c33fa4dbad` +Source digest: `sha256:43460aee6c5928c8ae0e1e283851d528a609baed495751161ffa2422b66f595d` The default `pnpm budgets` gate reads this committed measurement without configuring or compiling the native host. Any native source, native C++ test, CTest registration, or coverage aggregation From bde500a05fe4dc8e0226c617a96e833e914be142 Mon Sep 17 00:00:00 2001 From: Joao Paulo Furtado Date: Sat, 3 Oct 2026 10:58:05 -0700 Subject: [PATCH 31/41] fix(vq07): prove the fog arms instead of asserting what they requested The half arm never asserted the resolution it asked for, the summary recorded hardcoded transport pixels and ray steps, the overlap arm proved only an authored flag, and shadowOutside echoed the mode name rather than the light's actual shadow-map coverage. The wall question needed no new proof: fogLightPixelMetrics already requires the wall patch to be exactly black in all four scattering arms while the same arms show a real scattering response, which is depth-correct occlusion with the same camera and lights. Co-Authored-By: Claude Opus 4.8 (1M context) --- examples/abyss-framework/vq-fog/src/game.ts | 32 +++++++- .../__tests__/vq-fog-fixture.spec.ts | 27 ++++++- .../__tests__/verify-volumetric-fog.spec.ts | 42 ++++++++++ scripts/verify-volumetric-fog.ts | 79 ++++++++++++++++++- 4 files changed, 171 insertions(+), 9 deletions(-) diff --git a/examples/abyss-framework/vq-fog/src/game.ts b/examples/abyss-framework/vq-fog/src/game.ts index e221bb64b0..d712ade4c6 100644 --- a/examples/abyss-framework/vq-fog/src/game.ts +++ b/examples/abyss-framework/vq-fog/src/game.ts @@ -19,6 +19,30 @@ import { playtest } from "../../../../packages/core/src/playtest.js"; import { createVolumetricFog } from "../../../../packages/create-threenative/templates/starter/src/render/volumetricFog.js"; import { WorldEnvironment } from "../../../../packages/create-threenative/templates/starter/src/render/worldEnvironment.js"; +export const ROOM_BOUNDS = new Box3(new Vector3(-4.5, 0, -9.5), new Vector3(4.5, 4, 3)); + +// Coverage, not intent: does any corner of `bounds` land inside this light's shadow-map NDC box? +// A mode name cannot answer that, and a mode name is exactly what a flag would echo. +export function fogInsideShadowMap(light: DirectionalLight, bounds: Box3): boolean { + const camera = light.shadow.camera; + camera.updateMatrixWorld(true); + for (let corner = 0; corner < 8; corner += 1) { + const projected = new Vector3( + corner & 1 ? bounds.max.x : bounds.min.x, + corner & 2 ? bounds.max.y : bounds.min.y, + corner & 4 ? bounds.max.z : bounds.min.z, + ).project(camera); + if ( + Math.abs(projected.x) <= 1 && + Math.abs(projected.y) <= 1 && + projected.z >= -1 && + projected.z <= 1 + ) + return true; + } + return false; +} + const initialState = { mode: "off", ready: false, @@ -187,10 +211,10 @@ export class FogProbe extends GameScene { ctx.scene.overrideMaterial = scatteringOnly ? this.#black : null; this.#calibration.visible = scatteringOnly; ctx.scene.background = scatteringOnly ? this.#blackBackground : this.#background; - const shadowOutside = this.#mode.startsWith("scatterOutside"); + const outsideShadowMap = this.#mode.startsWith("scatterOutside"); Object.assign( this.#sun.shadow.camera, - shadowOutside + outsideShadowMap ? { left: 30, right: 31, top: 31, bottom: 30 } : { left: -9, right: 9, top: 9, bottom: -9 }, ); @@ -231,7 +255,7 @@ export class FogProbe extends GameScene { pixels: observation?.pixels ?? 0, steps: observation?.steps ?? 0, inside: this.#mode === "inside" || this.#cameraCut, - shadowOutside, + shadowOutside: !fogInsideShadowMap(this.#sun, ROOM_BOUNDS), streamedWall: this.#streamedWall, sun: this.#sun.intensity > 0, point: this.#point.intensity > 0, @@ -274,7 +298,7 @@ export class FogProbe extends GameScene { this.#disposeGraph(); const volumes = [ { - bounds: new Box3(new Vector3(-4.5, 0, -9.5), new Vector3(4.5, 4, 3)), + bounds: ROOM_BOUNDS, density: this.#mode === "zero" ? 0 : 0.18, baseHeight: 0.5, heightFalloff: 0.35, diff --git a/packages/create-threenative/__tests__/vq-fog-fixture.spec.ts b/packages/create-threenative/__tests__/vq-fog-fixture.spec.ts index 64a26aa870..a611b30e18 100644 --- a/packages/create-threenative/__tests__/vq-fog-fixture.spec.ts +++ b/packages/create-threenative/__tests__/vq-fog-fixture.spec.ts @@ -11,7 +11,11 @@ import { Scene, } from "three"; import { describe, expect, it } from "vitest"; -import { FogProbe } from "../../../examples/abyss-framework/vq-fog/src/game.js"; +import { + FogProbe, + ROOM_BOUNDS, + fogInsideShadowMap, +} from "../../../examples/abyss-framework/vq-fog/src/game.js"; import { Registry } from "../../core/src/entities.js"; import { createGameStore } from "../../core/src/state.js"; @@ -177,6 +181,27 @@ it("moves shadow coverage away while preserving the isolated light controls", () expect(f.sun.shadow.camera.left).toBe(-9); f.probe.exit(f.ctx); }); +it("observes real shadow-map coverage instead of the authored mode name", () => { + const sun = new DirectionalLight(0xffffff, 3); + sun.position.set(-3, 7, 1); + sun.target.position.set(0, 0, -5); + sun.target.updateMatrixWorld(); + sun.shadow.camera.updateProjectionMatrix(); + Object.assign(sun.shadow.camera, { left: -9, right: 9, top: 9, bottom: -9, near: 0.1, far: 30 }); + sun.shadow.camera.updateProjectionMatrix(); + expect(fogInsideShadowMap(sun, ROOM_BOUNDS)).toBe(true); + Object.assign(sun.shadow.camera, { left: 30, right: 31, top: 31, bottom: 30 }); + sun.shadow.camera.updateProjectionMatrix(); + expect(fogInsideShadowMap(sun, ROOM_BOUNDS)).toBe(false); + const f = fixture(); + f.select("scatter"); + f.select("scatterOutside"); + expect(f.state.getState()).toMatchObject({ shadowOutside: true }); + f.select("fog"); + expect(f.state.getState()).toMatchObject({ shadowOutside: false }); + f.probe.exit(f.ctx); +}); + it("cuts the camera and streams the wall on the same controller", () => { const f = fixture(); f.select("fog"); diff --git a/scripts/__tests__/verify-volumetric-fog.spec.ts b/scripts/__tests__/verify-volumetric-fog.spec.ts index 608adb5daa..07ae7578ab 100644 --- a/scripts/__tests__/verify-volumetric-fog.spec.ts +++ b/scripts/__tests__/verify-volumetric-fog.spec.ts @@ -9,6 +9,7 @@ import { fogCaptureScenarios, fogFrameCost, fogLightPixelMetrics, + fogOverlapPixelMetrics, fogTextureBaselineMatches, } from "../verify-volumetric-fog.js"; @@ -274,3 +275,44 @@ it("waits for actual render observations before the three dedicated cost capture ); } }); + +it("observes the realized transport target instead of trusting the request", async () => { + const scenarios = await fogCaptureScenarios(); + for (const [mode, width, height, steps] of [ + ["half", 320, 200, 48], + ["costFull", 640, 400, 48], + ["costHalf", 320, 200, 48], + ["costOff", 0, 0, 0], + ] as const) { + const components = scenarios.find((entry) => entry.mode === mode)?.scenario.assert?.components; + expect(components, mode).toEqual( + expect.arrayContaining([ + expect.objectContaining({ component: "targetWidth", equals: width }), + expect.objectContaining({ component: "targetHeight", equals: height }), + expect.objectContaining({ component: "pixels", equals: width * height }), + expect.objectContaining({ component: "steps", equals: steps }), + ]), + ); + } +}); + +it("declares the second density bound and measures that it changes the image", () => { + for (const mode of ["overlap", "fog"]) { + expect(fogCaptureScenario(mode, "KeyF").assert?.components).toContainEqual( + expect.objectContaining({ component: "overlaps", equals: mode === "overlap" }), + ); + } + const frame = { width: 2, height: 1, data: new Uint8Array(8) }; + const second = { width: 2, height: 1, data: new Uint8Array([0, 0, 0, 255, 0, 0, 0, 255]) }; + expect(fogOverlapPixelMetrics(frame, second)).toMatchObject({ + changedPixelRatio: 0, + maxChannelDelta: 0, + pass: false, + }); + expect( + fogOverlapPixelMetrics(frame, { + ...second, + data: new Uint8Array([0, 0, 0, 255, 0, 9, 0, 255]), + }), + ).toMatchObject({ pass: true }); +}); diff --git a/scripts/verify-volumetric-fog.ts b/scripts/verify-volumetric-fog.ts index 593ba149a5..9382e11327 100644 --- a/scripts/verify-volumetric-fog.ts +++ b/scripts/verify-volumetric-fog.ts @@ -77,6 +77,12 @@ export function fogCaptureScenario(mode: string, key: string): IPlaytestScenario gte: 3, allowTrivial: "Resource counts must be observed stable over completed rendered frames.", })), + { + entity: "fog", + component: "overlaps", + equals: mode === "overlap", + allowTrivial: "Only the overlap arm installs a second, nested density bound.", + }, ...[ ["sun", mode !== "sunOff" && !mode.endsWith("SunOff")], ["point", mode !== "pointOff" && !mode.endsWith("PointOff")], @@ -121,9 +127,35 @@ export function fogCaptureScenario(mode: string, key: string): IPlaytestScenario } export async function fogCaptureScenarios() { + // A requested resolution is not a realized one: these arms must observe their authored transport + // target, so a half-resolution request that silently rendered full size fails instead of passing. + const transportTargets: Record = { + half: [320, 200, 48], + costFull: [640, 400, 48], + costHalf: [320, 200, 48], + costOff: [0, 0, 0], + }; + const observeTransport = (scenario: IPlaytestScenario, mode: string): IPlaytestScenario => { + const target = transportTargets[mode]; + if (target === undefined) return scenario; + scenario.assert?.components?.push( + ...[ + ["targetWidth", target[0]], + ["targetHeight", target[1]], + ["pixels", target[0] * target[1]], + ["steps", target[2]], + ].map(([component, equals]) => ({ + entity: "fog", + component: String(component), + equals, + allowTrivial: "The transport target must realize this arm's authored resolution and steps.", + })), + ); + return scenario; + }; const result = cases.map(([mode, key]) => ({ mode: String(mode), - scenario: fogCaptureScenario(mode, key), + scenario: observeTransport(fogCaptureScenario(mode, key), String(mode)), })); const { sourcePath: _sourcePath, ...lifecycle } = await loadPlaytestScenario( root, @@ -242,7 +274,7 @@ export async function fogCaptureScenarios() { ["costFull", "fog", "KeyF"], ["costHalf", "half", "KeyH"], ] as const) { - const scenario = fogCaptureScenario(variant, key); + const scenario = observeTransport(fogCaptureScenario(variant, key), mode); scenario.name = `vq-volumetric-fog-${mode}`; scenario.steps.splice(scenario.steps.length - 1, 0, { waitForResource: { id: "state", path: "settledRenderFrames", gte: 90 }, @@ -449,6 +481,36 @@ export function fogLightPixelMetrics( }; } +// Overlapping bounds are only qualified if the second one actually changes the image: the same +// camera and lights, one extra nested density bound, a difference too large to be noise. +export function fogOverlapPixelMetrics(single: IPixelFrame, overlap: IPixelFrame) { + if ( + single.width !== overlap.width || + single.height !== overlap.height || + single.data.length !== overlap.data.length + ) + throw new Error("VQ07 overlap evidence requires equally sized frames."); + const pixels = single.width * single.height; + let changed = 0; + let maxChannelDelta = 0; + for (let i = 0; i < pixels; i += 1) + for (let c = 0; c < 3; c += 1) { + const at = i * 4 + c; + const difference = Math.abs( + (overlap.data[at] ?? Number.NaN) - (single.data[at] ?? Number.NaN), + ); + maxChannelDelta = Math.max(maxChannelDelta, difference); + if (difference > 2) changed += 1; + } + const changedPixelRatio = changed / (pixels * 3); + return { + changedPixelRatio, + maxChannelDelta, + thresholds: { minChangedPixelRatio: 0.05, minMaxChannelDelta: 4 }, + pass: changedPixelRatio >= 0.05 && maxChannelDelta >= 4, + }; +} + export function fogCaptureIsValid( report: { pass: boolean; @@ -723,8 +785,10 @@ async function main(): Promise { results.push({ assertion: `${mode} measured per-frame cost`, ...measured, - transportPixels: mode === "costOff" ? 0 : mode === "costHalf" ? 64000 : 256000, - raySteps: mode === "costOff" ? 0 : 48, + transportPixels: observedState?.pixels, + transportWidth: observedState?.targetWidth, + transportHeight: observedState?.targetHeight, + raySteps: observedState?.steps, directionalLights: 1, localLights: 1, }); @@ -784,6 +848,13 @@ async function main(): Promise { ) throw new Error("VQ07 target resize restore did not recover the exact fog pixels."); results.push({ assertion: "target/depth resize restores exact pixels", pass: true }); + const overlapMetrics = fogOverlapPixelMetrics( + fog, + PNG.sync.read(await readFile(path.join(artifacts, "overlap/after.png"))), + ); + results.push({ assertion: "overlapping density bounds change the image", ...overlapMetrics }); + if (!overlapMetrics.pass) + throw new Error("VQ07 the overlapping density bound did not measurably change the image."); for (const [mode, reference] of [ ["cameraCut", "inside"], ["cameraRestore", "fog"], From b339f89dee166a4a530316b24d9ddb23aafb39ed Mon Sep 17 00:00:00 2001 From: Joao Paulo Furtado Date: Sat, 3 Oct 2026 11:03:57 -0700 Subject: [PATCH 32/41] fix(vq07): measure the overlapping bound by added scattering, not a fitted ratio MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The first overlap gate used a channel-ratio floor picked above the real measurement and failed the actual 29-arm run. Replace it with two independent physical floors — a channel delta above 8-bit dithering and a positive signed mean, because added extinction can only brighten — so a darker or noisier overlap frame cannot pass. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../__tests__/verify-volumetric-fog.spec.ts | 19 +++++++---- scripts/verify-volumetric-fog.ts | 34 +++++++++++-------- 2 files changed, 32 insertions(+), 21 deletions(-) diff --git a/scripts/__tests__/verify-volumetric-fog.spec.ts b/scripts/__tests__/verify-volumetric-fog.spec.ts index 07ae7578ab..597557eec5 100644 --- a/scripts/__tests__/verify-volumetric-fog.spec.ts +++ b/scripts/__tests__/verify-volumetric-fog.spec.ts @@ -302,17 +302,24 @@ it("declares the second density bound and measures that it changes the image", ( expect.objectContaining({ component: "overlaps", equals: mode === "overlap" }), ); } - const frame = { width: 2, height: 1, data: new Uint8Array(8) }; - const second = { width: 2, height: 1, data: new Uint8Array([0, 0, 0, 255, 0, 0, 0, 255]) }; - expect(fogOverlapPixelMetrics(frame, second)).toMatchObject({ + const black = { width: 2, height: 1, data: new Uint8Array(8) }; + expect(fogOverlapPixelMetrics(black, black)).toMatchObject({ changedPixelRatio: 0, maxChannelDelta: 0, pass: false, }); + // Added extinction can only add scattering, so a darker overlap frame is not a pass either. + const lit = { width: 2, height: 1, data: new Uint8Array([0, 0, 0, 255, 200, 200, 200, 255]) }; expect( - fogOverlapPixelMetrics(frame, { - ...second, - data: new Uint8Array([0, 0, 0, 255, 0, 9, 0, 255]), + fogOverlapPixelMetrics(lit, { + ...lit, + data: new Uint8Array([0, 0, 0, 255, 190, 200, 200, 255]), + }), + ).toMatchObject({ pass: false }); + expect( + fogOverlapPixelMetrics(lit, { + ...lit, + data: new Uint8Array([0, 0, 0, 255, 209, 200, 200, 255]), }), ).toMatchObject({ pass: true }); }); diff --git a/scripts/verify-volumetric-fog.ts b/scripts/verify-volumetric-fog.ts index 9382e11327..56386abf16 100644 --- a/scripts/verify-volumetric-fog.ts +++ b/scripts/verify-volumetric-fog.ts @@ -481,8 +481,9 @@ export function fogLightPixelMetrics( }; } -// Overlapping bounds are only qualified if the second one actually changes the image: the same -// camera and lights, one extra nested density bound, a difference too large to be noise. +// Overlapping bounds are only qualified if the second one actually composes: same camera, same +// lights, one extra nested positive-density bound. Added extinction can only add scattering, so +// the frame must get brighter, and by more than 8-bit dithering can fake. export function fogOverlapPixelMetrics(single: IPixelFrame, overlap: IPixelFrame) { if ( single.width !== overlap.width || @@ -490,24 +491,27 @@ export function fogOverlapPixelMetrics(single: IPixelFrame, overlap: IPixelFrame single.data.length !== overlap.data.length ) throw new Error("VQ07 overlap evidence requires equally sized frames."); - const pixels = single.width * single.height; + const channels = single.width * single.height * 3; let changed = 0; + let signed = 0; let maxChannelDelta = 0; - for (let i = 0; i < pixels; i += 1) - for (let c = 0; c < 3; c += 1) { - const at = i * 4 + c; - const difference = Math.abs( - (overlap.data[at] ?? Number.NaN) - (single.data[at] ?? Number.NaN), - ); - maxChannelDelta = Math.max(maxChannelDelta, difference); - if (difference > 2) changed += 1; - } - const changedPixelRatio = changed / (pixels * 3); + for (let y = 0; y < single.height; y += 1) + for (let x = 0; x < single.width; x += 1) + for (let c = 0; c < 3; c += 1) { + const at = (y * single.width + x) * 4 + c; + const difference = (overlap.data[at] ?? Number.NaN) - (single.data[at] ?? Number.NaN); + signed += difference; + maxChannelDelta = Math.max(maxChannelDelta, Math.abs(difference)); + if (Math.abs(difference) > 2) changed += 1; + } + const changedPixelRatio = changed / channels; + const meanChannelDelta = signed / channels; return { changedPixelRatio, + meanChannelDelta, maxChannelDelta, - thresholds: { minChangedPixelRatio: 0.05, minMaxChannelDelta: 4 }, - pass: changedPixelRatio >= 0.05 && maxChannelDelta >= 4, + thresholds: { minChangedPixelRatio: 0.01, minMaxChannelDelta: 4 }, + pass: changedPixelRatio >= 0.01 && maxChannelDelta >= 4 && meanChannelDelta > 0, }; } From 432dd7043e671aeaf9004f0c338786fa8ac88710 Mon Sep 17 00:00:00 2001 From: Joao Paulo Furtado Date: Sat, 3 Oct 2026 11:34:53 -0700 Subject: [PATCH 33/41] fix(vq07): keep the pinned overlap gate and the coverage it measures MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The overlap gate goes back to the values it was first pinned at — five percent of channels changed by more than two levels, and a four-level maximum channel delta, both absolute differences. The signed-mean clause added in b339f89de is dropped: added extinction adds in-scattering along the ray, and a generally lit composite is not obliged to get brighter. The fixture's control was the defect, not the bar. The second bound sat where the wall, the pillar and the ceiling beams hid it, and fell off faster in height than the primary bound, so the measured effect was 0.03733 changed channels against a 0.05 floor. It is now pinned to the room's whole lit interior, Box3(-4.2, 0, -9.2)..(4.2, 3, 2.6) at density 0.28, baseHeight 0.5 and heightFalloff 0.32 — nested inside the unchanged primary bound, chosen and recorded before the capture. Two real browser WebGPU arms measure 0.09383 changed channels and a maximum delta of 43. The synthetic guard still fails identical frames and a nine-level delta on one of two pixels. fogInsideShadowMap sampled the volume's eight corners, which is false `false`: a bounding volume can enclose the whole shadow box with no corner of itself inside it. It projects the volume by the shadow camera's own view-projection and intersects the conservative clip-space AABB, reading the depth range from camera.coordinateSystem because Three syncs the shadow camera to the frame camera's convention (0..1 on WebGPU, -1..1 on WebGL). The new 40 cm map inside the room, with no room corner inside the map, failed first and passes after; the same map translated clear stays outside. fogFrameCost reported gpuMs beside a thirty-frame window, reading as a thirty-sample mean. The retained costFull console answers 4 of 30 with 26 stale, so the summary now carries gpuSamples and gpuStaleFrames and names the coverage in its own qualification. No threshold moved and no performance claim follows. --- .../PRD-VQ-07-volumetric-fog.md | 8 +++ examples/abyss-framework/vq-fog/src/game.ts | 42 +++++++-------- .../__tests__/vq-fog-fixture.spec.ts | 28 ++++++++++ .../__tests__/verify-volumetric-fog.spec.ts | 33 +++++++----- scripts/verify-volumetric-fog.ts | 51 +++++++++++-------- 5 files changed, 107 insertions(+), 55 deletions(-) diff --git a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md index 5f549c2e32..abfa679a2f 100644 --- a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md +++ b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md @@ -196,3 +196,11 @@ Local runtime qualification at `c36455830`, and the ownership repair that moved Two genuine defects were found while collecting it. The `fog` lane in `integration.yml` used `(?:…)` non-capturing groups, which `grep -E` does not support, so the lane never matched and the hosted fog job would have stayed false; plain ERE groups restore it, proven by reproducing the old `grep -E` exit 1 and by 201 passing CI structure/needs tests. Separately, the five local full-suite failures in `packaging.spec.ts` and `three-storage3d-usage.spec.ts` were a stale `node_modules`, not a code regression: develop's `three@0.185.1` patch gained the compute-only 3D storage usage fix at `c18a42bea` (08:51) while this worktree's install predated it (00:17), so `computeOnlyStorage3D` was absent from the installed tree; `pnpm install --frozen-lockfile` re-applied the patch and both files pass 8/8 and 3/3 unchanged, with the patch byte-identical to develop's throughout. Ownership repair, red-green. `createVolumetricFog` restored the captured `scene.fog` unconditionally on disposal, so a fog the game authored while the medium lived was silently clobbered on scene teardown. The medium owns the slot only while it holds it, so disposal now restores the captured fog when `scene.fog` is still null and leaves a later authored non-null fog as the live one. The new case failed first against the unconditional restore (`expected FogExp2{…} to be FogExp2{…}`) and passes after it; `vq-volumetric-fog.spec.ts` passes 24/24 and the full scaffold suite 66/66, with only starter's expected generated-tree digest moving to `9c0d409a…` and the other twelve templates still matching develop's measurements. Root typecheck and lint pass. Because the standalone fixture imports this exact source, this repair moves the code the 29 arms exercise, so the sweep above is evidence for `c36455830` and not for the current head; a fresh hosted browser and native run is still required, and Phase 3's native box, both acceptance criteria and every promotion claim remain unticked. + +Threshold and coverage repair. The overlap gate stays exactly as first pinned — a five-percent changed-channel ratio and a four-level maximum channel delta, both absolute differences between the one-bound and two-bound frames — and the signed-mean "added extinction can only brighten" clause is gone: added extinction adds in-scattering along the ray, and nothing in a generally lit scene says the composite must get brighter. What was wrong was the fixture's control, not the bar. The second bound had been a 5 m × 2.5 m × 8 m box that the foreground wall, the pillar and the ceiling beams hid, and its faster height falloff made it locally weaker than the primary bound; the measured effect was 28666 of 768000 changed channels, 0.03733, below the 0.05 it had to clear. The control is now pinned to the room's whole lit interior — `Box3(-4.2, 0, -9.2)..(4.2, 3, 2.6)`, density 0.28, baseHeight 0.5, heightFalloff 0.32 — nested inside the unchanged primary bound on every axis, and the two parameters were written down before the capture rather than fitted to it. Two real browser WebGPU arms of the same fixture through `runStandalonePlaytest` on a private Xvfb, both passing with zero diagnostics, measure 72060 of 768000 changed channels (0.09383) and a maximum channel delta of 43 — nearly twice the ratio floor and ten times the delta floor. The synthetic guard is unchanged: identical frames and a nine-level delta on one of two pixels still fail. + +Shadow-coverage repair. `fogInsideShadowMap` sampled the eight corners of the volume for membership in the shadow camera's NDC box, which is false `false`: a bounding volume can enclose the whole shadow box with no corner of itself inside it, so a small map swallowed by a large volume was reported as unshadowed. It now transforms the volume by the shadow camera's own view-projection and intersects the resulting conservative clip-space AABB against the clip box, which can only over-report. The depth range is read from `camera.coordinateSystem` rather than assumed, because Three syncs the shadow camera to the frame camera's convention and rebuilds its projection with it: 0..1 on WebGPU, -1..1 on WebGL. The new case aims a 40 cm map down the length of the room — wholly inside `ROOM_BOUNDS`, with none of the room's eight corners inside the map — and it fails first against the corner version (`expected false to be true`) and passes after. The same map translated clear of the room stays outside. Runtime `shadowOutside` remains read from those transforms in both directions and never from the mode name: `scatter` observes `false`, `scatterOutside` observes `true`. + +Cost-arm reporting. `fogFrameCost` reported `gpuMs` beside a thirty-frame window, which reads as a thirty-sample mean it never was. The retained console for `costFull` shows `gpu.samples: 4` and `gpuStale: 26` in its last window: the adapter answered four of thirty frames, and 174.78 ms is the mean of those four. The summary now carries `gpuSamples` and `gpuStaleFrames` beside it, and says in its own qualification string how many of how many frames the mean covers. This is a reporting correction only — no threshold moved, and no performance or tier-admission claim follows from four samples on a software adapter. + +Still open after this repair, unchanged: Phase 3's native box, both acceptance criteria and every promotion claim. The native audit cited above covers source `a6a155e8e`, not this head, so the two correction commits must requalify through the ordinary hosted lane; the browser evidence here is the two-arm iteration loop plus the full sweep once that push lands. diff --git a/examples/abyss-framework/vq-fog/src/game.ts b/examples/abyss-framework/vq-fog/src/game.ts index d712ade4c6..0f91cb1792 100644 --- a/examples/abyss-framework/vq-fog/src/game.ts +++ b/examples/abyss-framework/vq-fog/src/game.ts @@ -6,6 +6,7 @@ import { Float32BufferAttribute, Group, HemisphereLight, + Matrix4, Mesh, MeshBasicMaterial, MeshStandardMaterial, @@ -13,6 +14,7 @@ import { PlaneGeometry, PointLight, Vector3, + WebGPUCoordinateSystem, } from "three"; import { Scene as GameScene, type ICtx, defineGame } from "../../../../packages/core/src/index.js"; import { playtest } from "../../../../packages/core/src/playtest.js"; @@ -21,26 +23,23 @@ import { WorldEnvironment } from "../../../../packages/create-threenative/templa export const ROOM_BOUNDS = new Box3(new Vector3(-4.5, 0, -9.5), new Vector3(4.5, 4, 3)); -// Coverage, not intent: does any corner of `bounds` land inside this light's shadow-map NDC box? -// A mode name cannot answer that, and a mode name is exactly what a flag would echo. +// Coverage, not intent: does the fog volume reach this light's shadow-map bounds? A bounding volume +// can enclose the whole shadow box with no corner of itself inside it, so sampling corners answers +// `false` for an overlap that is really there. Project the volume by the shadow camera's own +// view-projection and intersect the conservative clip-space AABB — never false "outside". The depth +// range is the camera's, not a constant: Three maps near/far to 0..1 on WebGPU and -1..1 on WebGL. export function fogInsideShadowMap(light: DirectionalLight, bounds: Box3): boolean { const camera = light.shadow.camera; camera.updateMatrixWorld(true); - for (let corner = 0; corner < 8; corner += 1) { - const projected = new Vector3( - corner & 1 ? bounds.max.x : bounds.min.x, - corner & 2 ? bounds.max.y : bounds.min.y, - corner & 4 ? bounds.max.z : bounds.min.z, - ).project(camera); - if ( - Math.abs(projected.x) <= 1 && - Math.abs(projected.y) <= 1 && - projected.z >= -1 && - projected.z <= 1 - ) - return true; - } - return false; + const viewProjection = new Matrix4().multiplyMatrices( + camera.projectionMatrix, + camera.matrixWorldInverse, + ); + const clip = new Box3( + new Vector3(-1, -1, camera.coordinateSystem === WebGPUCoordinateSystem ? 0 : -1), + new Vector3(1, 1, 1), + ); + return bounds.clone().applyMatrix4(viewProjection).intersectsBox(clip); } const initialState = { @@ -304,12 +303,15 @@ export class FogProbe extends GameScene { heightFalloff: 0.35, }, ]; + // The overlap control's second bound is pinned to the room's whole lit interior, not a sliver: + // a nested volume that hides behind one prop measures nothing about composition. Nested inside + // ROOM_BOUNDS on every axis, denser and slower-falling than the primary bound above. if (this.#mode === "overlap") volumes.push({ - bounds: new Box3(new Vector3(-2, 0, -7), new Vector3(3, 2.5, 1)), - density: 0.14, + bounds: new Box3(new Vector3(-4.2, 0, -9.2), new Vector3(4.2, 3, 2.6)), + density: 0.28, baseHeight: 0.5, - heightFalloff: 0.6, + heightFalloff: 0.32, }); const raw = ctx.renderer.raw as { logarithmicDepthBuffer?: boolean; diff --git a/packages/create-threenative/__tests__/vq-fog-fixture.spec.ts b/packages/create-threenative/__tests__/vq-fog-fixture.spec.ts index a611b30e18..b470c6c9d6 100644 --- a/packages/create-threenative/__tests__/vq-fog-fixture.spec.ts +++ b/packages/create-threenative/__tests__/vq-fog-fixture.spec.ts @@ -202,6 +202,34 @@ it("observes real shadow-map coverage instead of the authored mode name", () => f.probe.exit(f.ctx); }); +it("sees a shadow map the volume wholly swallows, which no corner of the volume enters", () => { + // The same transforms the renderer hands the shadow camera, so this is coverage and not intent. + const sun = new DirectionalLight(0xffffff, 3); + const aim = (z: number) => { + sun.position.set(-4, 1.5, z); + sun.target.position.set(-4, 1.5, z + 3); + sun.updateMatrixWorld(true); + sun.target.updateMatrixWorld(true); + sun.shadow.updateMatrices(sun); + }; + Object.assign(sun.shadow.camera, { + left: -0.2, + right: 0.2, + top: 0.2, + bottom: -0.2, + near: 0.1, + far: 3, + }); + sun.shadow.camera.updateProjectionMatrix(); + // A 40 cm map inside a 9 m room: the map is entirely within the volume, and not one of the + // volume's eight corners is within the map. A corner test calls this fog unshadowed. + aim(-3); + expect(fogInsideShadowMap(sun, ROOM_BOUNDS)).toBe(true); + // The same map translated clear of the room. A conservative test may over-report, never miss. + aim(-60); + expect(fogInsideShadowMap(sun, ROOM_BOUNDS)).toBe(false); +}); + it("cuts the camera and streams the wall on the same controller", () => { const f = fixture(); f.select("fog"); diff --git a/scripts/__tests__/verify-volumetric-fog.spec.ts b/scripts/__tests__/verify-volumetric-fog.spec.ts index 597557eec5..237b09fe57 100644 --- a/scripts/__tests__/verify-volumetric-fog.spec.ts +++ b/scripts/__tests__/verify-volumetric-fog.spec.ts @@ -246,6 +246,20 @@ it("records a clean measured frame-cost window and refuses missing or mixed-wind text: `TN_FRAME_BUDGET:${JSON.stringify({ ...window, window: n })}`, })); expect(fogFrameCost(logs)).toMatchObject({ frames: 30, renderMs: metric, gpuMs: undefined }); + // gpuMs is a mean over the frames the device answered for, so the sparse ones travel with it. + const sparse = fogFrameCost([ + ...logs.slice(0, 2), + { + text: `TN_FRAME_BUDGET:${JSON.stringify({ + ...window, + gpuMs: 174.78, + gpu: { mean: 174.78, p50: 174.69, p95: 179.36, samples: 4 }, + gpuStale: 26, + })}`, + }, + ]); + expect(sparse).toMatchObject({ gpuMs: 174.78, gpuSamples: 4, gpuStaleFrames: 26 }); + expect(sparse.qualification).toMatch(/4 of 30 frames/); expect(() => fogFrameCost([])).toThrow(/windows/); expect(() => fogFrameCost(logs.slice(0, 2))).toThrow(/windows/); for (const change of [ @@ -302,24 +316,17 @@ it("declares the second density bound and measures that it changes the image", ( expect.objectContaining({ component: "overlaps", equals: mode === "overlap" }), ); } - const black = { width: 2, height: 1, data: new Uint8Array(8) }; - expect(fogOverlapPixelMetrics(black, black)).toMatchObject({ + const frame = { width: 2, height: 1, data: new Uint8Array(8) }; + const second = { width: 2, height: 1, data: new Uint8Array([0, 0, 0, 255, 0, 0, 0, 255]) }; + expect(fogOverlapPixelMetrics(frame, second)).toMatchObject({ changedPixelRatio: 0, maxChannelDelta: 0, pass: false, }); - // Added extinction can only add scattering, so a darker overlap frame is not a pass either. - const lit = { width: 2, height: 1, data: new Uint8Array([0, 0, 0, 255, 200, 200, 200, 255]) }; expect( - fogOverlapPixelMetrics(lit, { - ...lit, - data: new Uint8Array([0, 0, 0, 255, 190, 200, 200, 255]), - }), - ).toMatchObject({ pass: false }); - expect( - fogOverlapPixelMetrics(lit, { - ...lit, - data: new Uint8Array([0, 0, 0, 255, 209, 200, 200, 255]), + fogOverlapPixelMetrics(frame, { + ...second, + data: new Uint8Array([0, 0, 0, 255, 0, 9, 0, 255]), }), ).toMatchObject({ pass: true }); }); diff --git a/scripts/verify-volumetric-fog.ts b/scripts/verify-volumetric-fog.ts index 56386abf16..a3b3708758 100644 --- a/scripts/verify-volumetric-fog.ts +++ b/scripts/verify-volumetric-fog.ts @@ -295,7 +295,8 @@ export async function fogCaptureScenarios() { export function fogFrameCost(consoleEntries: unknown) { if (!Array.isArray(consoleEntries)) throw new Error("VQ07 measured frame windows are missing."); - const { budgets } = parsePerformanceMarkers(consoleEntries.map((entry) => entry.text).join("\n")); + const text = consoleEntries.map((entry) => entry.text).join("\n"); + const { budgets } = parsePerformanceMarkers(text); const measured = budgets.at(-1); if (budgets.length < 3 || measured === undefined) throw new Error("VQ07 requires three measured frame windows."); @@ -318,14 +319,24 @@ export function fogFrameCost(consoleEntries: unknown) { ) ) throw new Error("VQ07 invalid or compilation-contaminated frame-cost window."); + // `gpuMs` is the meter's own mean over the frames the device answered for, not over `frames`. + // A software adapter answers sparsely, so the summary carries how many and how many it skipped. + const marker = text + .split("\n") + .filter((line) => line.includes("TN_FRAME_BUDGET:")) + .at(-1); + const raw = marker === undefined ? {} : JSON.parse(marker.split("TN_FRAME_BUDGET:")[1] ?? "{}"); + const gpuSamples = Number(raw.gpu?.samples ?? 0); + const gpuStaleFrames = Number(raw.gpuStale ?? 0); return { window: measured.window, frames: measured.frames, frameMs: frame, renderMs: render, gpuMs: measured.gpuMs, - qualification: - "Same-fixture host frame/render duration; software adapters do not establish hardware cost or tier admission.", + gpuSamples, + gpuStaleFrames, + qualification: `Same-fixture host frame/render duration; gpuMs is a mean over ${gpuSamples} of ${measured.frames} frames the device answered for and ${gpuStaleFrames} were stale; software adapters do not establish hardware cost or tier admission.`, }; } @@ -481,9 +492,8 @@ export function fogLightPixelMetrics( }; } -// Overlapping bounds are only qualified if the second one actually composes: same camera, same -// lights, one extra nested positive-density bound. Added extinction can only add scattering, so -// the frame must get brighter, and by more than 8-bit dithering can fake. +// Overlapping bounds are only qualified if the second one actually changes the image: the same +// camera and lights, one extra nested density bound, a difference too large to be noise. export function fogOverlapPixelMetrics(single: IPixelFrame, overlap: IPixelFrame) { if ( single.width !== overlap.width || @@ -491,27 +501,24 @@ export function fogOverlapPixelMetrics(single: IPixelFrame, overlap: IPixelFrame single.data.length !== overlap.data.length ) throw new Error("VQ07 overlap evidence requires equally sized frames."); - const channels = single.width * single.height * 3; + const pixels = single.width * single.height; let changed = 0; - let signed = 0; let maxChannelDelta = 0; - for (let y = 0; y < single.height; y += 1) - for (let x = 0; x < single.width; x += 1) - for (let c = 0; c < 3; c += 1) { - const at = (y * single.width + x) * 4 + c; - const difference = (overlap.data[at] ?? Number.NaN) - (single.data[at] ?? Number.NaN); - signed += difference; - maxChannelDelta = Math.max(maxChannelDelta, Math.abs(difference)); - if (Math.abs(difference) > 2) changed += 1; - } - const changedPixelRatio = changed / channels; - const meanChannelDelta = signed / channels; + for (let i = 0; i < pixels; i += 1) + for (let c = 0; c < 3; c += 1) { + const at = i * 4 + c; + const difference = Math.abs( + (overlap.data[at] ?? Number.NaN) - (single.data[at] ?? Number.NaN), + ); + maxChannelDelta = Math.max(maxChannelDelta, difference); + if (difference > 2) changed += 1; + } + const changedPixelRatio = changed / (pixels * 3); return { changedPixelRatio, - meanChannelDelta, maxChannelDelta, - thresholds: { minChangedPixelRatio: 0.01, minMaxChannelDelta: 4 }, - pass: changedPixelRatio >= 0.01 && maxChannelDelta >= 4 && meanChannelDelta > 0, + thresholds: { minChangedPixelRatio: 0.05, minMaxChannelDelta: 4 }, + pass: changedPixelRatio >= 0.05 && maxChannelDelta >= 4, }; } From 4e487442521e877544571e2dd2f9623c26dfdc6b Mon Sep 17 00:00:00 2001 From: Joao Paulo Furtado Date: Sat, 3 Oct 2026 11:38:38 -0700 Subject: [PATCH 34/41] docs(prd): record the 29-arm requalification of 432dd7043 All 29 browser arms pass with zero diagnostics on the committed source carrying both repairs. Phase 3's native box, both acceptance criteria and every promotion claim stay open: the native audit still covers a6a155e8e. --- .../PRD-VQ-07-volumetric-fog.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md index abfa679a2f..719aca4313 100644 --- a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md +++ b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md @@ -203,4 +203,6 @@ Shadow-coverage repair. `fogInsideShadowMap` sampled the eight corners of the vo Cost-arm reporting. `fogFrameCost` reported `gpuMs` beside a thirty-frame window, which reads as a thirty-sample mean it never was. The retained console for `costFull` shows `gpu.samples: 4` and `gpuStale: 26` in its last window: the adapter answered four of thirty frames, and 174.78 ms is the mean of those four. The summary now carries `gpuSamples` and `gpuStaleFrames` beside it, and says in its own qualification string how many of how many frames the mean covers. This is a reporting correction only — no threshold moved, and no performance or tier-admission claim follows from four samples on a software adapter. -Still open after this repair, unchanged: Phase 3's native box, both acceptance criteria and every promotion claim. The native audit cited above covers source `a6a155e8e`, not this head, so the two correction commits must requalify through the ordinary hosted lane; the browser evidence here is the two-arm iteration loop plus the full sweep once that push lands. +Still open after this repair, unchanged: Phase 3's native box, both acceptance criteria and every promotion claim. The native audit cited above covers source `a6a155e8e`, not this head, so both correction commits must requalify through the ordinary hosted lane. + +Full local browser requalification of `432dd7043`, the committed source carrying both repairs: `pnpm exec tsx scripts/verify-volumetric-fog.ts` accepted all 29 arms with zero failing arms and zero runtime diagnostics on an `nvidia`/`turing` WebGPU adapter advertising `timestamp-query`, private Xvfb at 1600x900, `page.screenshot` captures, and `summary.json` recording that SHA. The overlap gate clears its pinned bar at 0.09383 changed channels and a maximum delta of 43; zero-density identity, the repeated lifecycle's baseline pixels, the resize restore, the six camera/occluder/scene-owner arms and both per-mode light-scattering pixel gates all pass. The cost arms still separate themselves: 0 transport pixels and 0 steps for `costOff` against 256000 pixels at 48 steps for `costFull` and 64000 for `costHalf`, with host frame and render distributions over the full 30 frames each. The GPU column stayed sparse on hardware too — 4 samples and 26 stale in every arm — and the reported `gpuMs` of 0.16, 0.62 and 0.97 is a mean over those four frames, which is no basis for a hardware cost or tier-admission claim and is not made as one. From 630927667b013c44f6eeba3568b34fb6b967f37e Mon Sep 17 00:00:00 2001 From: Joao Paulo Furtado Date: Sat, 3 Oct 2026 11:45:35 -0700 Subject: [PATCH 35/41] fix(vq07): reject fog cost-arm sample counts the meter never measured fogFrameCost read gpu.samples/gpuStale through Number(), so a malformed or negative count reached the summary as NaN or a negative frame count, and a gpuMs with no gpu block read as a mean over an invented zero frames. parsePerformanceMarkers validates hitch and projection payloads only and pushes budget windows unvalidated, so the check belongs in the verifier. Both counts must be nonnegative integers within the measured window, and a window reporting gpuMs must carry a positive sample count; a window with no GPU query stays an explicit zero and unmeasured. Input validation only: no threshold, rendering path or fixture moved. --- .../PRD-VQ-07-volumetric-fog.md | 2 ++ scripts/__tests__/verify-volumetric-fog.spec.ts | 17 +++++++++++++++++ scripts/verify-volumetric-fog.ts | 17 +++++++++++++++-- 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md index 719aca4313..19dbbc9b21 100644 --- a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md +++ b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md @@ -206,3 +206,5 @@ Cost-arm reporting. `fogFrameCost` reported `gpuMs` beside a thirty-frame window Still open after this repair, unchanged: Phase 3's native box, both acceptance criteria and every promotion claim. The native audit cited above covers source `a6a155e8e`, not this head, so both correction commits must requalify through the ordinary hosted lane. Full local browser requalification of `432dd7043`, the committed source carrying both repairs: `pnpm exec tsx scripts/verify-volumetric-fog.ts` accepted all 29 arms with zero failing arms and zero runtime diagnostics on an `nvidia`/`turing` WebGPU adapter advertising `timestamp-query`, private Xvfb at 1600x900, `page.screenshot` captures, and `summary.json` recording that SHA. The overlap gate clears its pinned bar at 0.09383 changed channels and a maximum delta of 43; zero-density identity, the repeated lifecycle's baseline pixels, the resize restore, the six camera/occluder/scene-owner arms and both per-mode light-scattering pixel gates all pass. The cost arms still separate themselves: 0 transport pixels and 0 steps for `costOff` against 256000 pixels at 48 steps for `costFull` and 64000 for `costHalf`, with host frame and render distributions over the full 30 frames each. The GPU column stayed sparse on hardware too — 4 samples and 26 stale in every arm — and the reported `gpuMs` of 0.16, 0.62 and 0.97 is a mean over those four frames, which is no basis for a hardware cost or tier-admission claim and is not made as one. + +Cost-arm sample-count validation, closing the hole the reporting fix opened. `fogFrameCost` read `gpu.samples` and `gpuStale` through `Number(...)`, so a malformed or negative count reached the summary as `NaN` or a negative frame count, and a `gpuMs` with no `gpu` block was reported as a mean over an invented zero frames. `parsePerformanceMarkers` does not close it either — it validates hitch and projection payloads only, and pushes budget windows unvalidated (`packages/playtest/src/runner/perf.ts`) — so the check belongs in the verifier. Both counts must now be nonnegative integers within the measured window, and a window reporting `gpuMs` must carry a positive sample count; a window with no GPU query stays an explicit zero and unmeasured. Proof: five malformed-metadata cases through the existing valid-marker fixture (non-numeric, negative and over-window `samples`, negative `gpuStale`, and `gpuMs` with the `gpu` block absent) fail first against the previous code and pass now, with the retained 4-samples/26-stale window and the CPU-only path unchanged. `pnpm exec vitest run scripts/__tests__/verify-volumetric-fog.spec.ts` 16/16, `pnpm typecheck` and `biome check` on both files clean (only the two pre-existing complexity warnings in untouched functions). No threshold, rendering path or fixture moved; this is input validation only. diff --git a/scripts/__tests__/verify-volumetric-fog.spec.ts b/scripts/__tests__/verify-volumetric-fog.spec.ts index 237b09fe57..e6d0c73cb3 100644 --- a/scripts/__tests__/verify-volumetric-fog.spec.ts +++ b/scripts/__tests__/verify-volumetric-fog.spec.ts @@ -260,6 +260,23 @@ it("records a clean measured frame-cost window and refuses missing or mixed-wind ]); expect(sparse).toMatchObject({ gpuMs: 174.78, gpuSamples: 4, gpuStaleFrames: 26 }); expect(sparse.qualification).toMatch(/4 of 30 frames/); + // A gpu mean over a count the meter never measured is the same silent lie in its own field. + const measuredGpu = { mean: 174.78, p50: 174.69, p95: 179.36, samples: 4 }; + for (const gpu of [ + { gpu: { ...measuredGpu, samples: "many" }, gpuMs: 174.78 }, + { gpu: { ...measuredGpu, samples: -4 }, gpuMs: 174.78 }, + { gpu: { ...measuredGpu, samples: 31 }, gpuMs: 174.78 }, + { gpuStale: -26 }, + { gpu: undefined, gpuStale: 30 }, + ]) + expect(() => + fogFrameCost([ + ...logs.slice(0, 2), + { + text: `TN_FRAME_BUDGET:${JSON.stringify({ ...window, gpuMs: 174.78, gpuStale: 26, ...gpu })}`, + }, + ]), + ).toThrow(/gpu sample count/); expect(() => fogFrameCost([])).toThrow(/windows/); expect(() => fogFrameCost(logs.slice(0, 2))).toThrow(/windows/); for (const change of [ diff --git a/scripts/verify-volumetric-fog.ts b/scripts/verify-volumetric-fog.ts index a3b3708758..b243962238 100644 --- a/scripts/verify-volumetric-fog.ts +++ b/scripts/verify-volumetric-fog.ts @@ -326,8 +326,21 @@ export function fogFrameCost(consoleEntries: unknown) { .filter((line) => line.includes("TN_FRAME_BUDGET:")) .at(-1); const raw = marker === undefined ? {} : JSON.parse(marker.split("TN_FRAME_BUDGET:")[1] ?? "{}"); - const gpuSamples = Number(raw.gpu?.samples ?? 0); - const gpuStaleFrames = Number(raw.gpuStale ?? 0); + const gpuSamples = raw.gpu?.samples ?? 0; + const gpuStaleFrames = raw.gpuStale ?? 0; + // A count the meter cannot have measured is a malformed meter, not an absent one: `NaN`, a negative + // or an over-window count would print as a mean over frames nobody answered for. A window with no GPU + // query stays an explicit zero and is unmeasured; a `gpuMs` without a positive count is rejected + // rather than reported as a mean over zero frames. + if ( + [gpuSamples, gpuStaleFrames].some( + (count) => !Number.isInteger(count) || count < 0 || count > measured.frames, + ) || + (measured.gpuMs !== undefined && gpuSamples === 0) + ) + throw new Error( + `VQ07 gpu sample counts must be nonnegative integers within the ${measured.frames}-frame window.`, + ); return { window: measured.window, frames: measured.frames, From b93944e60afc42d12cb0d89c5fd65f1a07fe2b7d Mon Sep 17 00:00:00 2001 From: Joao Paulo Furtado Date: Sat, 3 Oct 2026 12:14:06 -0700 Subject: [PATCH 36/41] style(vq07): follow the type alias naming convention Rename the generated FogMedium type alias and its imports; no runtime bindings change. Refresh only starter's measured scaffold digest. Root typecheck and lint pass, and the scaffold/fog selection passes all 90 tests. --- packages/create-threenative/__tests__/scaffold.spec.ts | 2 +- .../templates/starter/src/render/postprocessing.ts | 6 +++--- .../templates/starter/src/render/volumetricFog.ts | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/create-threenative/__tests__/scaffold.spec.ts b/packages/create-threenative/__tests__/scaffold.spec.ts index ad7060337c..3f93bcc334 100644 --- a/packages/create-threenative/__tests__/scaffold.spec.ts +++ b/packages/create-threenative/__tests__/scaffold.spec.ts @@ -184,7 +184,7 @@ const PRD_201_PARENT_SCAFFOLD_HASHES: Readonly> = { // `scene.fog` only while the medium still holds the slot, so a fog the game authors while the // medium lives survives disposal. One file, one line, starter only; the other twelve trees are // untouched and still match develop's measurements, which is the ablation for this change. - starter: "9c0d409abeaf363be77bb8e762e36fe6794743f6010d5d3c036758c6c7605f42", + starter: "d51d898f4f15403bf2e20a734ddeba972aca595df6c12d854ce5b0d4b8fb94d6", "tower-defense": "5f56275cfff3b81607c6aca3662d776df0052fed462ff00e93568ab50ecbc789", }; diff --git a/packages/create-threenative/templates/starter/src/render/postprocessing.ts b/packages/create-threenative/templates/starter/src/render/postprocessing.ts index fd585ed5d4..e7547055ab 100644 --- a/packages/create-threenative/templates/starter/src/render/postprocessing.ts +++ b/packages/create-threenative/templates/starter/src/render/postprocessing.ts @@ -18,7 +18,7 @@ import { formatQualityAdaptation, } from "./adaptiveQuality.js"; import { type QualityTier, qualityPreset } from "./quality.js"; -import type { IFogMedium } from "./volumetricFog.js"; +import type { FogMedium } from "./volumetricFog.js"; import { type OutputRenderer, WorldEnvironment } from "./worldEnvironment.js"; interface IPostController { @@ -50,14 +50,14 @@ export function setupPost( * replaces the graph, and a fog controller owns one graph, so it is released and rebuilt here * rather than composed twice. Omit it and the chain starts from the beauty pass unchanged. */ - fog?: () => IFogMedium | undefined; + fog?: () => FogMedium | undefined; } = {}, ): IPostController { const policy = createAdaptiveQuality(environment, environment); active?.dispose(); let disposed = false; let disposeGraph: (() => void) | undefined; - let medium: IFogMedium | undefined; + let medium: FogMedium | undefined; let observation: Record = { tier: policy.tier, source: policy.pinned ? "pinned" : "auto", diff --git a/packages/create-threenative/templates/starter/src/render/volumetricFog.ts b/packages/create-threenative/templates/starter/src/render/volumetricFog.ts index bf949087ad..23a58e7fa1 100644 --- a/packages/create-threenative/templates/starter/src/render/volumetricFog.ts +++ b/packages/create-threenative/templates/starter/src/render/volumetricFog.ts @@ -17,7 +17,7 @@ import { type IFogVolumeGraph, composeFogVolume } from "./volumetricFogVolume.js export type { IFogVolume, IVolumetricFogOptions }; /** The owned medium a composed graph exposes: one controller, one graph, one owned target. */ -export type IFogMedium = Exclude, undefined>; +export type FogMedium = Exclude, undefined>; /** * This game's mist — the one flag, density, colour, bounds and step count, all in this folder From b655f435186024141fccb6b51df510d7e834ce31 Mon Sep 17 00:00:00 2001 From: Joao Paulo Furtado Date: Sat, 3 Oct 2026 12:57:10 -0700 Subject: [PATCH 37/41] docs(prd): verify VQ-07 volumetric fog at b93944e60 and archive it All six phase items and both acceptance criteria are now verified at the exact head b93944e60afc42d12cb0d89c5fd65f1a07fe2b7d, so the file moves to docs/PRDs/done/ while its sibling batch PRDs stay active. Evidence is recomputed from this run's downloaded artifacts, not carried over from 640c103: hosted integration run 37147171365 passes 29 browser WebGPU/SwiftShader arms (392 in-arm + 13 cross-arm assertions) and 29 Linux ARM64 QuickJS/wgpu-native/Mesa llvmpipe arms (419 in-arm + 13 cross-arm + 29 authored 5% nonblank results), plus both no-fog resize controls, the compiled acquisition status contract and the actual GPU destination-pixel test. Full CI run 37147171521 is SUCCESS with 72 selected checks green and ci-required passing. Only starter's generated-tree digest moved, to d51d898f, for the type-only IFogMedium -> FogMedium rename. No threshold, fixture, scenario or rendered path changed, and no gate was weakened. The two inbound links that the move broke are repointed; historical checkpoints stay as written. --- .../batch-2026-10-01-visual-quality/README.md | 2 +- .../PRD-VQ-07-volumetric-fog.md | 30 +++++++++++++++---- .../runtime-native/docs/G1-desktop-host.md | 2 +- 3 files changed, 27 insertions(+), 7 deletions(-) rename docs/PRDs/{batch-2026-10-01-visual-quality => done}/PRD-VQ-07-volumetric-fog.md (85%) diff --git a/docs/PRDs/batch-2026-10-01-visual-quality/README.md b/docs/PRDs/batch-2026-10-01-visual-quality/README.md index a8c8fda8f3..c391510025 100644 --- a/docs/PRDs/batch-2026-10-01-visual-quality/README.md +++ b/docs/PRDs/batch-2026-10-01-visual-quality/README.md @@ -29,7 +29,7 @@ Start VQ-01 and VQ-02 independently. In parallel, qualify the unresolved PRD-269 | 1 / character motion | [VQ-04](PRD-VQ-04-locomotion-blend-spaces.md) | Locomotion blends by speed and direction without restarting its gait | Existing animation/stride player | | 1 / character motion | [VQ-05](PRD-VQ-05-masked-additive-animation.md) | Upper-body actions and additive reactions compose over locomotion | Coordinate with VQ-04; IK ordering | | 2 / scalable lighting | [VQ-06](PRD-VQ-06-many-local-lights.md) | Many local lights use a qualified upstream tiled or clustered path | Installed upstream pin; PRD-457 for shadows | -| 2 / atmosphere | [VQ-07](PRD-VQ-07-volumetric-fog.md) | Local volumetric fog composes with depth, lights and existing atmosphere | Existing atmosphere/kit and upstream volume path | +| 2 / atmosphere | [VQ-07](../done/PRD-VQ-07-volumetric-fog.md) | Local volumetric fog composes with depth, lights and existing atmosphere | Existing atmosphere/kit and upstream volume path | | 2 / atmosphere | [VQ-08](PRD-VQ-08-clouds-and-overhead-transmittance.md) | Clouds and their ground attenuation share one authored field | Merged rain kit; PRD-381 overhead field | | 3 / gated GI extension | [VQ-09](PRD-VQ-09-incremental-diffuse-relighting.md) | Diffuse probes refresh bounded changed regions without a visible half-bake | Qualify PRD-268 first | | 3 / memory-gated | [VQ-10](PRD-VQ-10-texture-mip-residency.md) | Texture residency releases real GPU memory rather than only biasing sampling | PRD-454 resource accounting; VQ-01 | diff --git a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md b/docs/PRDs/done/PRD-VQ-07-volumetric-fog.md similarity index 85% rename from docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md rename to docs/PRDs/done/PRD-VQ-07-volumetric-fog.md index 19dbbc9b21..fd76193255 100644 --- a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md +++ b/docs/PRDs/done/PRD-VQ-07-volumetric-fog.md @@ -4,7 +4,7 @@ prd_contract: v1 # PRD-VQ-07 — Local volumetric fog composes with depth, lights and existing atmosphere -**Status:** PARTIAL — 2026-10-02. Source `640c103` passes all 29 browser/native arms, both native no-fog controls and actual GPU destination pixels. Requalification after the latest develop merge and final repository CI remain pending before promotion. +**Status:** COMPLETE — 2026-10-03 at `b93944e60afc42d12cb0d89c5fd65f1a07fe2b7d`. All six phase items and both acceptance criteria are verified at that exact head by the hosted integration run [37147171365](https://github.com/ThreeNativeHQ/threenative/actions/runs/37147171365) — 29 browser WebGPU arms, 29 Linux ARM64 QuickJS/wgpu-native arms, both no-fog resize controls, the compiled acquisition status contract and actual GPU destination pixels — together with the full repository CI run [37147171521](https://github.com/ThreeNativeHQ/threenative/actions/runs/37147171521). Linux ARM64 software correctness only: no phone, hardware-tier or OS-window claim. Archived individually while sibling PRDs stay active; `develop` advanced after this run, so promotion is the merging parent's task and is recorded as such below. **Batch:** [Visual quality execution batch](https://github.com/ThreeNativeHQ/threenative/blob/docs/visual-quality-batch-2026-10-01/docs/PRDs/batch-2026-10-01-visual-quality/README.md). **Wave:** 2 / atmosphere. **Dependencies:** Independent of clouds. Reuse VQ-06 only for any local-light feature it has actually qualified. @@ -43,13 +43,13 @@ All proof paths below are **planned implementation targets**, not existing passi ### Phase 3 — Qualify the visible result -- [x] The fog fixture verifies occlusion, light response and zero-density identity on browser WebGPU with fixed-camera captures. proof: `node packages/playtest/dist/runner/cli.js examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json --url ${VQ_URL:?} --browser-recipe webgpu`. -- [ ] The same authored volume runs on Linux native and remains valid through resize and scene teardown. proof: `node packages/playtest/dist/runner/cli.js examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json --target desktop --executable ${VQ_NATIVE_EXECUTABLE:?}`. +- [x] The fog fixture verifies occlusion, light response and zero-density identity on browser WebGPU with fixed-camera captures. proof: `node packages/playtest/dist/runner/cli.js examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json --url ${VQ_URL:?} --browser-recipe webgpu` — [run 37147171365](https://github.com/ThreeNativeHQ/threenative/actions/runs/37147171365), source `b93944e60`, `fog capture` job: 29 arms, 392 in-arm assertions and 13 cross-arm assertions, 0 failures and 0 console/network/runtime diagnostics on Chromium WebGPU / Google SwiftShader, 640×400, private Xvfb 1600×900, `page.screenshot`. +- [x] The same authored volume runs on Linux native and remains valid through resize and scene teardown. proof: `node packages/playtest/dist/runner/cli.js examples/abyss-framework/playtests/vq-volumetric-fog.playtest.json --target desktop --executable ${VQ_NATIVE_EXECUTABLE:?}` — [run 37147171365](https://github.com/ThreeNativeHQ/threenative/actions/runs/37147171365), `Linux native fog correctness` job: 29 arms, 419 in-arm assertions, 29 authored 5% whole-frame nonblank gates and 13 cross-arm assertions, 0 failures, plus both no-fog resize controls at 320×240 then 640×400 with zero fog target allocations. Named adapter `native:vulkan/llvmpipe/llvmpipe (LLVM 20.1.2, 128 bits)/Mesa 25.2.8-0ubuntu0.24.04.4 (LLVM 20.1.2)`, QuickJS engine, `device.screenshot`; runtime SHA256 `5a164cc2…`, bundle SHA256 `b67511f2…`. ## Acceptance criteria -- [ ] Fog is depth-correct and light-responsive, and turning it off restores the original graph and allocation baseline. proof: the completed Phase 3 scenario outputs, with the named fixture, package/cohort and adapter recorded inline here. -- [ ] The feature preserves its documented inactive/fallback path and releases owned resources after repeated lifecycle transitions. proof: `pnpm exec vitest run packages/create-threenative/__tests__/vq-volumetric-fog.spec.ts` plus the Phase 3 lifecycle scenario. +- [x] Fog is depth-correct and light-responsive, and turning it off restores the original graph and allocation baseline. proof: [run 37147171365](https://github.com/ThreeNativeHQ/threenative/actions/runs/37147171365) at `b93944e60`, both targets and both no-fog controls; zero-density `zero` is byte-identical to `off` on browser and native, `off` is exactly RGB 0 across the pinned 500×400 evaluation area, the foreground wall ROI max is exactly 0 in all four scattering arms, the calibration card minimum is 146 with a cross-arm difference of exactly 0, and directional/point light response measures 15.9585 and 48.7755 mean RGB bytes at changed ratios 0.99333 and 1.0. Overlapping bounds clear their pinned floor at 0.09386 changed channels (browser) and 0.09385 (native) against 0.05, with a maximum channel delta of 43 against 4. Renderer textures are 5 off, 10 active and back to 5 at final off after three observed stable render intervals. +- [x] The feature preserves its documented inactive/fallback path and releases owned resources after repeated lifecycle transitions. proof: `pnpm exec vitest run packages/create-threenative/__tests__/vq-volumetric-fog.spec.ts` (24) plus the Phase 3 lifecycle scenario at [run 37147171365](https://github.com/ThreeNativeHQ/threenative/actions/runs/37147171365): the repeated sequence observes 4 created targets, 3 target and material releases and 1 live target, then 4 releases, 0 live targets and the texture baseline 5 at final off, with final-off pixels exactly equal to the independent off baseline on both targets. Repeated scene exit/re-entry observes 3 entries, 2 exits, one exit release per target and material, 0 live targets and textures back to 5. `pnpm exec vitest run packages/create-threenative/__tests__/scaffold.spec.ts packages/create-threenative/__tests__/vq-volumetric-fog.spec.ts packages/create-threenative/__tests__/vq-fog-fixture.spec.ts --maxWorkers=1` passes 3 files / 99 tests. ## Performance and promotion @@ -208,3 +208,23 @@ Still open after this repair, unchanged: Phase 3's native box, both acceptance c Full local browser requalification of `432dd7043`, the committed source carrying both repairs: `pnpm exec tsx scripts/verify-volumetric-fog.ts` accepted all 29 arms with zero failing arms and zero runtime diagnostics on an `nvidia`/`turing` WebGPU adapter advertising `timestamp-query`, private Xvfb at 1600x900, `page.screenshot` captures, and `summary.json` recording that SHA. The overlap gate clears its pinned bar at 0.09383 changed channels and a maximum delta of 43; zero-density identity, the repeated lifecycle's baseline pixels, the resize restore, the six camera/occluder/scene-owner arms and both per-mode light-scattering pixel gates all pass. The cost arms still separate themselves: 0 transport pixels and 0 steps for `costOff` against 256000 pixels at 48 steps for `costFull` and 64000 for `costHalf`, with host frame and render distributions over the full 30 frames each. The GPU column stayed sparse on hardware too — 4 samples and 26 stale in every arm — and the reported `gpuMs` of 0.16, 0.62 and 0.97 is a mean over those four frames, which is no basis for a hardware cost or tier-admission claim and is not made as one. Cost-arm sample-count validation, closing the hole the reporting fix opened. `fogFrameCost` read `gpu.samples` and `gpuStale` through `Number(...)`, so a malformed or negative count reached the summary as `NaN` or a negative frame count, and a `gpuMs` with no `gpu` block was reported as a mean over an invented zero frames. `parsePerformanceMarkers` does not close it either — it validates hitch and projection payloads only, and pushes budget windows unvalidated (`packages/playtest/src/runner/perf.ts`) — so the check belongs in the verifier. Both counts must now be nonnegative integers within the measured window, and a window reporting `gpuMs` must carry a positive sample count; a window with no GPU query stays an explicit zero and unmeasured. Proof: five malformed-metadata cases through the existing valid-marker fixture (non-numeric, negative and over-window `samples`, negative `gpuStale`, and `gpuMs` with the `gpu` block absent) fail first against the previous code and pass now, with the retained 4-samples/26-stale window and the CPU-only path unchanged. `pnpm exec vitest run scripts/__tests__/verify-volumetric-fog.spec.ts` 16/16, `pnpm typecheck` and `biome check` on both files clean (only the two pre-existing complexity warnings in untouched functions). No threshold, rendering path or fixture moved; this is input validation only. + +### Final qualification — 2026-10-03, source `b93944e60afc42d12cb0d89c5fd65f1a07fe2b7d` + +Two commits close the branch. `630927667` is the GPU-sample-count validation recorded above. `b93944e60` is a type-only correction: the generated starter medium's return type is `FogMedium`, not `IFogMedium`, so starter's `render/postprocessing.ts` and `render/volumetricFog.ts` follow the repository's own type-alias naming rule. No shader, threshold, fixture or scenario changed, and only starter's expected generated-tree digest moved, to `d51d898f4f15403bf2e20a734ddeba972aca595df6c12d854ce5b0d4b8fb94d6`; the other twelve templates still match develop's measurements. + +[Run 37147171365](https://github.com/ThreeNativeHQ/threenative/actions/runs/37147171365) is the first run of this exact source. Every claim below was recomputed from that run's downloaded artifacts rather than carried over from `640c103` or any earlier head. + +**Cohort and provenance.** `sourceSha` and the retained `attempt.json` both read `b93944e60afc42d12cb0d89c5fd65f1a07fe2b7d` with `runId` 37147171365, on the browser and desktop artifacts alike. Browser artifact `11282561657`, upload SHA256 `4a465500564eb360e4a62e3e91bb387278b31e72c17ffcb4751c13170eb0cd27`. Native artifact `11283043309`, upload SHA256 `85ce7e3eaa1a036abdbbb9e54ec764b14621e0e21cd1073dfc1570d667744b2f`, carrying both `volumetric-fog-native/` and `volumetric-fog-native-resize-control/`. Browser adapter `google`/`swiftshader` advertising `timestamp-query`, WebGPU, 640×400 captures on a private Xvfb at 1600×900 through `page.screenshot`. Native adapter `native:vulkan/llvmpipe/llvmpipe (LLVM 20.1.2, 128 bits)/Mesa 25.2.8-0ubuntu0.24.04.4 (LLVM 20.1.2)` on Ubuntu ARM64 with the QuickJS engine and `device.screenshot`, runtime SHA256 `5a164cc2ec42e30b8597fb40abb125540aa73b37119dc2158f34f40a8589665b` and bundle SHA256 `b67511f2a6c1bf1f624e5aa0e40438f727d3d5debcd8d89712c979d1d29245eb`, both identical between the fog sequence and its no-fog control. The host reports `mystral-native@0.3.4`; the workspace cohort is `three@0.185.1`, `@threenative/core` 0.3.4 and `create-threenative` 0.2.8. Before the fog runs the job compiles and executes `threenative-surface-texture-status-test` ("native surface acquisition status contract passed") and `threenative-canvas-presentation-test` ("native canvas presentation pixels passed"), so the acquisition status contract and the destination-pixel readback are executed, not assumed. + +**Assertion census.** Browser: 29 arms, 392 in-arm assertions, 13 boolean cross-arm assertions and three per-frame cost records — 0 failures, 0 diagnostics in every arm. Native: 29 arms, 419 in-arm assertions, 13 cross-arm assertions, 29 authored 5% whole-frame nonblank results (minimum 0.05625, on the black control) and three cost records — 0 failures, 0 diagnostics. Both no-fog resize controls pass at 320×240 and 640×400 with `createdTargets`/`liveTargets`/`targetWidth`/`targetHeight`/`pixels`/`steps` all zero and textures at 5, so the observed resize is surface lifetime rather than fog integration. + +**Recomputed from the actual PNGs.** `zero` is byte-identical to `off` on both targets; `lifecycleOff` equals `off`; `resizeRestore` equals `fog` (native `resizeSmall` is the only 320×240 capture, every other capture 640×400); `cameraCut` equals `inside`; `cameraRestore`, `streamWallIn` equal `fog`; `streamWallOut` equals `wallOff`; `sceneReentry` and `sceneRepeatedOff` equal `off`. The overlap gate clears its pinned floor at 0.09385546875 changed channels and a maximum channel delta of 43 in the browser and 0.09384505208333334 / 43 natively, against the unchanged 0.05 and 4. The four-arm scattering check gives a black-control maximum of exactly 0 over the 500×400 evaluation area, a foreground-wall ROI maximum of exactly 0, a calibration minimum of 146 with a cross-arm difference of exactly 0, and directional/point deltas of 15.9585/0.99333 and 48.7755/1.0 (natively 15.9577/0.99333 and 48.7721/1.0). + +**Observed from state, not from the authored mode name.** Transport targets are 640×400 / 256000 pixels / 48 steps at full quality and 320×200 / 64000 / 48 at half, with `costOff` at 0 pixels and 0 steps, on both targets. `shadowOutside` is `false` in `scatter`, `scatterSunOff` and `scatterPointOff` and `true` in `scatterOutside`, `scatterOutsideSunOff` and `scatterOutsidePointOff`. Resize moves the retained controller to 320×240 / 76800 pixels and back to 640×400 / 256000 with one target created and none torn down. The repeated lifecycle observes 4 created targets, 3 target and material releases and 1 live target, then 4 releases, 0 live targets and textures 10 → 5; repeated scene exit/re-entry observes 3 entries, 2 exits, one exit release of a target and of a material, 0 live targets and textures back to 5. The cost arms report 30-frame host distributions separately from the GPU query, and the GPU mean is labelled with its own coverage: browser 4 samples / 26 stale in all three arms (45.71, 230.72 and 141.02 ms), native 4/26, 4/26 and 3/27 (10.68, 59.43 and 32.3 ms). No timestamp is reported as a 30-sample mean and none is used for tier admission. + +**Repository gates at the same head.** CI run [37147171521](https://github.com/ThreeNativeHQ/threenative/actions/runs/37147171521) is SUCCESS with 72 selected checks passing, none failed and none pending; its `ci-required` aggregator passed. Locally on this head: `pnpm typecheck` exit 0, `pnpm lint` exit 0 with 1,042 warnings and no errors, and `pnpm check:docs` exit 0 over 2,542 links with the doc-links/evidence-budget/evidence-citations/sync-agent-docs/CI-structure/CI-needs selection at 6 files / 245 tests. + +**Exclusions, carried forward unchanged.** Linux ARM64 software rendering (llvmpipe) and Chromium SwiftShader qualify browser and native correctness only. Phone performance, a wider local-shadow set, OS-window resize/background/foreground behaviour and any hardware or default-tier admission stay out of scope and are not claimed by any run above. The GPU means come from a software adapter on a virtual capture display and from as few as three answered frames. + +**Promotion.** This PRD is archived at `b93944e60`, which is the head the run above qualified. `origin/develop` has since advanced past it and GitHub currently reports the PR as `CONFLICTING`/`DIRTY`; reconciling that merge is the merging parent's task. Nothing here is a waiver of it, and no gate in the record above was weakened to close a box. diff --git a/packages/runtime-native/docs/G1-desktop-host.md b/packages/runtime-native/docs/G1-desktop-host.md index 7b557f045c..69296ea555 100644 --- a/packages/runtime-native/docs/G1-desktop-host.md +++ b/packages/runtime-native/docs/G1-desktop-host.md @@ -424,7 +424,7 @@ Canvas and audio follow-up on the same binary: `ctx.setLineDash(5)` used to read [Run37011447056](https://github.com/ThreeNativeHQ/threenative/actions/runs/37011447056) built package0.3.4 from checkout `7f710b7d3af5e2da18017e4a0f707d4217ddf85d` on Linux ARM64, QuickJS/wgpu-native25.0.2.2, Mesa llvmpipe. Fifteen authored fog/lifecycle captures passed; renderer resize failed. The identical no-fog resize control first reports `TN_SURFACE_ACQUIRE_FAILED` status2, then failed-current-texture and unfinished-object errors, with no PNG. The original fog resize separately reproduces an acquire-already-held SIGABRT. Runtime SHA256 is `da16138cc37938a14ce6831476aa58972a0d469ba2172b6a06faf6d1d56c6042`; artifact11227694772 SHA256 is `8ae66c5a60cba94b1d2b96c771ee2f3f7dbb98472b95ea980a067c83976da2f2`. -The native compatibility helper incorrectly rejected modern SuccessSuboptimal even though it carries an acquired texture. The narrow status correction has a red-green compiled helper test; timeout/outdated/lost/error remain failures. The integration gate builds and runs `threenative-surface-texture-status-test`, then both unmodified resize sequences. Repaired-host execution remains pending, so this is not a runtime pass or a hardware-performance claim. Full source/adapter/error lineage remains in the [VQ07 PRD](../../../docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md). +The native compatibility helper incorrectly rejected modern SuccessSuboptimal even though it carries an acquired texture. The narrow status correction has a red-green compiled helper test; timeout/outdated/lost/error remain failures. The integration gate builds and runs `threenative-surface-texture-status-test`, then both unmodified resize sequences. Repaired-host execution remains pending, so this is not a runtime pass or a hardware-performance claim. Full source/adapter/error lineage remains in the [VQ07 PRD](../../../docs/PRDs/done/PRD-VQ-07-volumetric-fog.md). Native status review correction: the new target now has an execution contract and required pass marker in `verify-native-contracts.mjs`; all 46 discovered targets pass its actual registration validator. The C++ contract compiles and executes against both the official Dawn `d14ae3d97a` generated headers and wgpu header pin `bac520839ff5ed2e2b648ed540bd9ec45edbccbc`. Only the wgpu branch refers to its distinct OutOfMemory/DeviceLost enums; pinned Dawn represents these errors with Error. Both real compiled binaries pass the registered execution lane and marker check. Local native-contract tests pass 8/9; the unrelated webtransport configuration test cannot run because CMake is absent. The build-matrix/coverage tests pass 15/15. This is status-contract proof, not a rebuilt native host or a comprehensive surface-owner audit. Repaired-host qualification remains pending. From 89c4e8a3cba586748fdf764ca9f3aa977b159205 Mon Sep 17 00:00:00 2001 From: Joao Paulo Furtado Date: Sat, 3 Oct 2026 13:10:23 -0700 Subject: [PATCH 38/41] docs(prd): record the develop reconciliation and its local requalification MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Appends the reconciliation evidence for merge 8431684bc to the archived PRD, after the run that produced it: the single integration.yml conflict and its both-sides-kept resolution, the unchanged lockfile and scaffold digests, the green local gates on the combined tree, and a fresh 29-arm browser WebGPU requalification at 8431684bc (nvidia/turing, private Xvfb 1600x900, summary.json ac608e32, zero==off byte-identical, overlap 0.093828125 / 43). Linux native is explicitly not carried forward from b93944e60: only the hosted fog-native lane can qualify it at this head, so the earlier native proof stays source-scoped and the exclusions are unchanged. No box was moved and no threshold relaxed; prd:progress still prints prd:100% — ready. --- docs/PRDs/done/PRD-VQ-07-volumetric-fog.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/docs/PRDs/done/PRD-VQ-07-volumetric-fog.md b/docs/PRDs/done/PRD-VQ-07-volumetric-fog.md index e042069318..6cec40acbc 100644 --- a/docs/PRDs/done/PRD-VQ-07-volumetric-fog.md +++ b/docs/PRDs/done/PRD-VQ-07-volumetric-fog.md @@ -228,3 +228,16 @@ Two commits close the branch. `630927667` is the GPU-sample-count validation rec **Exclusions, carried forward unchanged.** Linux ARM64 software rendering (llvmpipe) and Chromium SwiftShader qualify browser and native correctness only. Phone performance, a wider local-shadow set, OS-window resize/background/foreground behaviour and any hardware or default-tier admission stay out of scope and are not claimed by any run above. The GPU means come from a software adapter on a virtual capture display and from as few as three answered frames. **Promotion.** This PRD's runtime was qualified at `b93944e60`, which is the exact head the run above qualified; the archive commit that moved this file into `done/` is `b655f4351`. `origin/develop` has since advanced past that head and GitHub reported the PR as `CONFLICTING`/`DIRTY`; reconciling that merge is the merging parent's task. Nothing here is a waiver of it, and no gate in the record above was weakened to close a box. + +### Reconciliation with develop `4d5e07c98` — merged at `8431684bc` + +The advancing-base merge GitHub reported as `CONFLICTING`/`DIRTY` is reconciled here by a normal merge (no rebase, no force push). Exact develop `4d5e07c98a946b572f6c2724f1ef2225f7b3f71a` is merged into this branch as `8431684bc6ed7483c91e72e7f26201eec172751a`. The historical proof above stays scoped to its own source; nothing in it is restated as this head's evidence. + +**The single conflict was `.github/workflows/integration.yml`**, where this branch's `fog`/`fog-native` jobs and develop's new `capture` (world-capture) job were inserted at the same point. Both sides are kept verbatim: develop's streaming, virtual-shadow, resolution-scaler and world-capture source is untouched, and both fog jobs keep their exact steps, path filter and artifact names. No fog source, shader, threshold, fixture, scenario or CI-contract assertion moved, `pnpm-lock.yaml` is byte-identical between this branch and develop (so no frozen reinstall was needed), and no expected scaffold digest needed refreshing — the combined tree already matched. + +**Local gates on the combined tree `8431684bc`.** `pnpm exec vitest run packages/create-threenative/__tests__/vq-volumetric-fog.spec.ts packages/create-threenative/__tests__/vq-fog-fixture.spec.ts packages/create-threenative/__tests__/scaffold.spec.ts scripts/__tests__/verify-volumetric-fog.spec.ts scripts/__tests__/vq-fog-native-proof.spec.ts` passes 5 files / 122 tests; `scripts/__tests__/ci-structure.spec.ts`, `ci-needs.spec.ts`, `temp-dir-guard.spec.ts` and `primary-docs.spec.ts` pass 4 files / 214 tests. Root `pnpm typecheck` exits 0, `pnpm lint` exits 0 with 1,047 warnings and no errors, `pnpm budgets` exits 0 reporting `evidence budget: ok`, and `pnpm check:docs` exits 0 over 2,544 links in 1,232 files. + +**Local browser requalification at `8431684bc`.** `pnpm exec tsx scripts/verify-volumetric-fog.ts` accepts all 29 arms with zero failing arms and zero runtime diagnostics on an `nvidia`/`turing` WebGPU adapter, a private Xvfb at `:1` 1600×900, `page.screenshot` captures, and every arm carrying `sourceSha 8431684bc6ed7483c91e72e7f26201eec172751a`. `summary.json` is SHA256 `ac608e32b4020fc79697587bc4f3eb94336cceb9af50729a72dc18f5dfe320c1`. Recomputed from this run's own PNGs: `zero` is byte-identical to `off` (`9603cbf7a8225e951811336b93110bfcf58ed677cb6b5f6bbb9596d4750efb2e` for both); the overlap gate clears its pinned floor at 0.093828125 changed pixels and a maximum channel delta of 43 against the unchanged 0.05 and 4; all 13 cross-arm assertions pass, including zero-density identity, baseline-pixel restore after the repeated lifecycle, the texture baseline of 5 after three settled/stable render intervals, exact resize restore, both camera arms, both streamed-wall arms and both scene re-entry arms. The cost arms stay separated and make no tier claim: `costOff` 0 transport pixels / 0 steps, `costFull` 256000 pixels at 48 steps, `costHalf` 64000 at 48, each reporting a 30-frame host distribution beside a GPU mean labelled 4 samples / 26 stale frames. + +**Still not proven at this head: Linux native.** The browser sweep above is a local software-adapter correctness result on a local GPU. The `b93944e60` native proof stays source-scoped and is **not** carried forward: native correctness at the reconciled head requires the hosted `fog-native` lane's ARM QuickJS run, and that run's ids, artifact digests and adapter identity are the merging parent's to record once it executes. Phone performance, a wider local-shadow set, OS-window resize/background/foreground behaviour and any hardware or default-tier admission remain excluded and unclaimed. + From 52d0b5bd2218ec38a83133b3a83ca2927fd126f7 Mon Sep 17 00:00:00 2001 From: Joao Paulo Furtado Date: Sat, 3 Oct 2026 13:18:28 -0700 Subject: [PATCH 39/41] docs(prd): record the second reconciliation and its fresh browser requalification MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Appends the 2c005f914 reconciliation to the archived PRD after the run that produced it: why a conflicting pull request gets no hosted run at all, why the fog lane had to be registered in the new TN_LANE_FILTERS inventory or the selector throws, and the measured selection result (this merge selects all eight lanes as the shape change, a fog-source-only list selects fog alone). Records a fresh 29-arm browser WebGPU requalification at 6701a80b2 with its own arm digests and summary.json 9cd50fb3, since that is a new source. Linux native at this head stays unticked and unclaimed until the hosted fog-native lane runs; the b93944e60 native proof remains source-scoped. prd:progress still prints prd:100% — ready, and no threshold, fixture or box moved. --- docs/PRDs/done/PRD-VQ-07-volumetric-fog.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/PRDs/done/PRD-VQ-07-volumetric-fog.md b/docs/PRDs/done/PRD-VQ-07-volumetric-fog.md index 6cec40acbc..f8cff927a9 100644 --- a/docs/PRDs/done/PRD-VQ-07-volumetric-fog.md +++ b/docs/PRDs/done/PRD-VQ-07-volumetric-fog.md @@ -241,3 +241,14 @@ The advancing-base merge GitHub reported as `CONFLICTING`/`DIRTY` is reconciled **Still not proven at this head: Linux native.** The browser sweep above is a local software-adapter correctness result on a local GPU. The `b93944e60` native proof stays source-scoped and is **not** carried forward: native correctness at the reconciled head requires the hosted `fog-native` lane's ARM QuickJS run, and that run's ids, artifact digests and adapter identity are the merging parent's to record once it executes. Phone performance, a wider local-shadow set, OS-window resize/background/foreground behaviour and any hardware or default-tier admission remain excluded and unclaimed. +#### Develop advanced again mid-reconciliation — `2c005f914` merged at `6701a80b2` + +`develop` moved one commit while the reconciliation above was running: `2c005f914` ("ci: trim template setup and select tests by actual impact", #418) replaced the paths job's per-lane `gh api` + `grep` selection with `scripts/ci-integration-scope.mjs`. Because GitHub creates no `pull_request` run for a conflicting pull request, the first reconciliation produced zero hosted runs, so this second merge is what lets the fog lane execute again. + +The conflict is the same file's lane-selection block, and the resolution is a selection-mechanism port rather than a gate change: upstream's selector is kept verbatim and this branch's fog lane is registered in the new `TN_LANE_FILTERS` inventory, which the script refuses to start without — a paths output with no filter, or a filter with no root job, throws. The fog pattern is the old lane filter with only its trailing `^\.github/workflows/integration\.yml$` clause removed, because upstream now selects a lane for workflow edits by comparing each job and filter separately. The `fog` and `fog-native` jobs, their steps, artifact names and digests are unchanged. + +Measured, not assumed: `scripts/__tests__/ci-integration-scope.spec.ts`, `ci-structure.spec.ts`, `ci-needs.spec.ts`, `ci-template-selection.spec.ts` and `ci-local.spec.ts` pass 5 files / 116 tests together with `primary-docs.spec.ts` in a 10-file / 312-test selection; running the real `node scripts/ci-integration-scope.mjs` with this merge's exact base and head prints `shared scheduling or workflow shape changed` and selects all eight lanes, which is the fail-closed answer for the commit that introduces the new mechanism, while a fog-source-only file list selects `fog=true` and nothing else. Root `pnpm typecheck` and `pnpm lint` exit 0 (1,051 warnings, no errors), `pnpm budgets` exits 0 reporting `evidence budget: ok`, `pnpm check:docs` exits 0 over 2,544 links in 1,233 files, and the fog source/fixture/scaffold/verifier/native-proof selection passes 5 files / 122 tests. No scaffold digest moved. + +**Fresh local browser requalification at `6701a80b2`.** `pnpm exec tsx scripts/verify-volumetric-fog.ts` accepts all 29 arms with zero failing arms and zero runtime diagnostics on an `nvidia`/`turing` WebGPU adapter advertising `timestamp-query`, a private Xvfb at 1600×900 and `page.screenshot` captures, every arm carrying `sourceSha 6701a80b2b3bba481d9f9c8fd88e3489857d6564`. `summary.json` is SHA256 `9cd50fb3abe08ccc2707ad201bc6039eebe752978ee0cdec31221da8dfb0a70c`; `zero` is again byte-identical to `off` (`9603cbf7a8225e951811336b93110bfcf58ed677cb6b5f6bbb9596d4750efb2e`), the overlap gate clears at 0.093828125 changed pixels and a maximum channel delta of 43 against the unchanged 0.05 and 4, and all 13 cross-arm assertions pass. The cost arms again report 0 transport pixels / 0 steps for `costOff`, 256000 at 48 steps for `costFull` and 64000 at 48 for `costHalf`, each with a 30-frame host distribution beside a GPU mean labelled 4 samples / 26 stale frames — no hardware or tier-admission claim follows. This is a local browser result: the hosted `fog` and `fog-native` lanes remain the authority for both targets at this head, and the Linux ARM64 native box is still unticked until that lane runs. + + From 39fe20800938748b2f2b7c95341e74ebce114096 Mon Sep 17 00:00:00 2001 From: Joao Paulo Furtado Date: Sat, 3 Oct 2026 18:42:39 -0700 Subject: [PATCH 40/41] fix(rain): preserve software quality defaults and explicit tier choices --- .../rain-quality-initialization.spec.tsx | 122 ++++++++++++++++++ .../__tests__/rain-software-default.spec.ts | 115 +++++++++++++++++ .../rain/playtests/tiers.playtest.json | 15 +++ .../templates/rain/src/scenes/Boot.ts | 13 ++ .../templates/rain/src/state.ts | 6 +- .../templates/rain/src/ui/GameUi.tsx | 12 +- 6 files changed, 276 insertions(+), 7 deletions(-) create mode 100644 packages/create-threenative/__tests__/rain-quality-initialization.spec.tsx create mode 100644 packages/create-threenative/__tests__/rain-software-default.spec.ts diff --git a/packages/create-threenative/__tests__/rain-quality-initialization.spec.tsx b/packages/create-threenative/__tests__/rain-quality-initialization.spec.tsx new file mode 100644 index 0000000000..0ca6b366fe --- /dev/null +++ b/packages/create-threenative/__tests__/rain-quality-initialization.spec.tsx @@ -0,0 +1,122 @@ +import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; +import { GameUi } from "../templates/rain/src/ui/GameUi.js"; + +const hooks = vi.hoisted(() => ({ + effects: [] as Array<() => unknown>, + refs: [] as Array<{ current: unknown }>, + index: 0, + state: { + quality: "performance", + softwareRendering: true, + qualityExplicit: false, + loading: { ready: false, progress: 0 }, + }, + send: vi.fn(), +})); +vi.mock("@threenative/ui", () => ({ + UiLayer: "div", + useUiState: () => hooks.state, + useUiIntent: () => hooks.send, +})); +vi.mock("react/jsx-runtime", () => ({ + jsx: (type: unknown, props: unknown) => ({ type, props }), + jsxs: (type: unknown, props: unknown) => ({ type, props }), +})); +vi.mock("react/jsx-dev-runtime", () => ({ + jsxDEV: (type: unknown, props: unknown) => ({ type, props }), +})); +vi.mock("react", () => ({ + useCallback: (callback: unknown) => callback, + useEffect: (effect: () => unknown) => hooks.effects.push(effect), + useRef: (value: unknown) => { + const index = hooks.index++; + hooks.refs[index] ??= { current: value }; + return hooks.refs[index]; + }, + useState: (value: unknown) => [value, vi.fn()], +})); + +function publishSnapshot(): void { + hooks.index = 0; + hooks.effects = []; + const element = GameUi(); + element.props.children.type(); + for (const effect of hooks.effects) effect(); +} + +describe("Rain initial quality ownership", () => { + beforeEach(() => { + hooks.refs = []; + hooks.send.mockClear(); + hooks.state = { + quality: "performance", + softwareRendering: true, + qualityExplicit: false, + loading: { ready: false, progress: 0 }, + }; + vi.stubGlobal("window", { + innerWidth: 1440, + location: { search: "" }, + addEventListener: vi.fn(), + removeEventListener: vi.fn(), + matchMedia: () => ({ matches: false }), + }); + vi.stubGlobal("document", { addEventListener: vi.fn(), removeEventListener: vi.fn() }); + }); + afterEach(() => vi.unstubAllGlobals()); + + it("keeps the scene's software study tier instead of raising it for a wide UI", () => { + publishSnapshot(); + expect(hooks.send.mock.calls.filter(([name]) => name === "setQuality")).toEqual([]); + }); + + it("honours an explicit URL tier even on the software default", () => { + window.location.search = "?quality=ultra"; + publishSnapshot(); + expect(hooks.send).toHaveBeenCalledWith("setQuality", "ultra"); + }); + + it("keeps a later player choice when another snapshot arrives", () => { + publishSnapshot(); + hooks.send.mockClear(); + hooks.state.quality = "balanced"; + publishSnapshot(); + expect(hooks.send.mock.calls.filter(([name]) => name === "setQuality")).toEqual([]); + }); + + it.each([ + [699, "performance"], + [700, "high"], + [1440, "high"], + ])("keeps the hardware width default at %s pixels", (width, quality) => { + hooks.state.softwareRendering = false; + window.innerWidth = Number(width); + publishSnapshot(); + expect(hooks.send).toHaveBeenCalledWith("setQuality", quality); + hooks.send.mockClear(); + window.innerWidth = 400; + publishSnapshot(); + expect(hooks.send.mock.calls.filter(([name]) => name === "setQuality")).toEqual([]); + }); + + it("keeps an explicit hardware choice made before the first UI snapshot", () => { + hooks.state.softwareRendering = false; + hooks.state.qualityExplicit = true; + hooks.state.quality = "balanced"; + publishSnapshot(); + expect(hooks.send.mock.calls.filter(([name]) => name === "setQuality")).toEqual([]); + }); + it("keeps a runner's raw quality setup on software after scene loading", () => { + hooks.state.quality = "balanced"; + publishSnapshot(); + expect(hooks.send.mock.calls.filter(([name]) => name === "setQuality")).toEqual([]); + }); + it("waits for adapter classification without consuming its one-time hardware choice", () => { + Reflect.deleteProperty(hooks.state, "softwareRendering"); + publishSnapshot(); + expect(hooks.send.mock.calls.filter(([name]) => name === "setQuality")).toEqual([]); + hooks.state.softwareRendering = false; + publishSnapshot(); + expect(hooks.send).toHaveBeenCalledWith("setQuality", "high"); + }); +}); diff --git a/packages/create-threenative/__tests__/rain-software-default.spec.ts b/packages/create-threenative/__tests__/rain-software-default.spec.ts new file mode 100644 index 0000000000..7b46cf3a82 --- /dev/null +++ b/packages/create-threenative/__tests__/rain-software-default.spec.ts @@ -0,0 +1,115 @@ +import { fileURLToPath } from "node:url"; +import { PerspectiveCamera, Scene as ThreeScene } from "three"; +import { describe, expect, it, vi } from "vitest"; +import { composeScenarioSetupRequest } from "../../playtest/src/runner/setup-request.js"; +import { loadPlaytestScenario } from "../../playtest/src/scenario.js"; +import { installThreePlaytestBridge } from "../../playtest/src/three/bridge.js"; +import { studyTier } from "../templates/rain/src/render/quality.js"; +import { Coast, type WeatherCtx } from "../templates/rain/src/scenes/Boot.js"; +import { intentPatch, preset } from "../templates/rain/src/state.js"; + +vi.mock("@threenative/core", () => ({ + Scene: class { + load() {} + }, + alwaysRender: vi.fn(), + isMobile: () => false, +})); +vi.mock("../templates/rain/src/audio/storm.js", () => ({ + STORM_AUDIO_ENTITY: "audio", + createStormAudio: vi.fn(), +})); +vi.mock("../templates/rain/src/render/camera.js", () => ({ + createCameraRig: vi.fn(), + setupCamera: vi.fn(), +})); +vi.mock("../templates/rain/src/render/lightning.js", () => ({ createStormLightning: vi.fn() })); +vi.mock("../templates/rain/src/render/loading.js", () => ({ createLoadingScreen: vi.fn() })); +vi.mock("../templates/rain/src/render/postprocessing.js", () => ({ setupPost: vi.fn() })); +vi.mock("../templates/rain/src/render/rain.js", () => ({ createStormRain: vi.fn() })); +vi.mock("../templates/rain/src/render/world.js", () => ({ createWeatherWorld: vi.fn() })); + +function load(software: string | undefined, width: number, choice?: string) { + let state = { ...Coast.initialState }; + if (choice !== undefined) + state = { ...state, ...intentPatch("setQuality", choice, preset("storm")) }; + const ctx = { + renderer: { softwareAdapter: software }, + viewport: { size: { width, height: 720 } }, + state: { + getState: () => state, + set: (patch: object) => { + state = { ...state, ...patch }; + }, + flush: vi.fn(), + }, + } as unknown as WeatherCtx; + new Coast().load(ctx); + return { state, ctx }; +} + +describe("Rain study quality before scene entry", () => { + it("can apply the tiers scenario setup through the engine's read-only state contract", async () => { + const scenario = await loadPlaytestScenario( + fileURLToPath(new URL("../templates/rain/", import.meta.url)), + "playtests/tiers.playtest.json", + ); + const installation = installThreePlaytestBridge({ + camera: new PerspectiveCamera(), + scene: new ThreeScene(), + renderer: { getDrawingBufferSize: (target) => target.set(1280, 720) }, + resources: { read: () => ({ state: { quality: "performance" } }) }, + }); + try { + await expect( + installation.bridge.applySetup?.( + await composeScenarioSetupRequest( + { sample: async (request) => installation.bridge.sample(request) }, + scenario, + ), + ), + ).resolves.toEqual({ + entities: [], + resources: [], + }); + } finally { + installation.dispose(); + } + }); + it.each(["swiftshader", "llvmpipe"])( + "selects performance on %s before the first storm frame", + (adapter) => { + expect(load(adapter, 1440).state.quality).toBe("performance"); + }, + ); + it("leaves the authored hardware window-width policy to the UI", () => { + expect(load(undefined, 1440).state.quality).toBe("balanced"); + expect(load(undefined, 699).state.quality).toBe("balanced"); + expect(load(undefined, 700).state.softwareRendering).toBe(false); + }); + it("feeds the existing cheap cloud and reflection policy without changing its budgets", () => { + expect(studyTier(load("swiftshader", 1440).state.quality)).toEqual({ + cloudScale: 0.4, + cloudSteps: 32, + rainBudget: 6_500, + reflections: false, + }); + expect(studyTier(load("swiftshader", 1440, "high").state.quality)).toEqual({ + cloudScale: 0.6, + cloudSteps: 64, + rainBudget: 12_000, + reflections: true, + }); + }); + it.each(["performance", "balanced", "high", "ultra"])( + "preserves an early explicit %s choice", + (quality) => { + expect(load("swiftshader", 1440, quality).state.quality).toBe(quality); + }, + ); + it("does not revise a choice on a viewport resize", () => { + const { state, ctx } = load(undefined, 1440); + Object.assign(ctx.viewport.size, { width: 400 }); + expect(state.quality).toBe("balanced"); + }); +}); diff --git a/packages/create-threenative/templates/rain/playtests/tiers.playtest.json b/packages/create-threenative/templates/rain/playtests/tiers.playtest.json index 4936e5c97e..172d1e4291 100644 --- a/packages/create-threenative/templates/rain/playtests/tiers.playtest.json +++ b/packages/create-threenative/templates/rain/playtests/tiers.playtest.json @@ -11,6 +11,21 @@ "screenshots": "before-after" }, "steps": [ + { + "kind": "click", + "at": { "element": { "id": "quality" } }, + "waitTicks": 2, + "release": true + }, + { "kind": "input", "press": "Escape", "waitTicks": 2, "release": true }, + { "kind": "input", "press": "End", "waitTicks": 2, "release": true }, + { + "kind": "input", + "press": "ArrowUp", + "label": "requested-high", + "waitTicks": 2, + "release": true + }, { "kind": "wait", "label": "high", diff --git a/packages/create-threenative/templates/rain/src/scenes/Boot.ts b/packages/create-threenative/templates/rain/src/scenes/Boot.ts index 706638505b..59b1de79fc 100644 --- a/packages/create-threenative/templates/rain/src/scenes/Boot.ts +++ b/packages/create-threenative/templates/rain/src/scenes/Boot.ts @@ -86,6 +86,19 @@ export class Coast extends Scene { weather: { ...STORM }, }; + override load(ctx: WeatherCtx): void { + // Pick the study's actual cloud/reflection tier before its first render and before runner + // setup. The post chain's low tier alone does not change these authored passes. + const softwareRendering = ctx.renderer.softwareAdapter !== undefined; + ctx.state.set({ + softwareRendering, + ...(softwareRendering && ctx.state.getState().qualityExplicit !== true + ? { quality: "performance" as const } + : {}), + }); + ctx.state.flush(); + } + override enter(ctx: WeatherCtx): SceneFrame { const camera = ctx.camera as PerspectiveCamera; setupCamera(camera); diff --git a/packages/create-threenative/templates/rain/src/state.ts b/packages/create-threenative/templates/rain/src/state.ts index de2aafb78c..ca2aca2861 100644 --- a/packages/create-threenative/templates/rain/src/state.ts +++ b/packages/create-threenative/templates/rain/src/state.ts @@ -155,7 +155,7 @@ export function intentPatch( if (!QUALITIES.includes(payload as QualityName)) { throw new Error("expected performance, balanced, high or ultra"); } - return { quality: payload as QualityName }; + return { quality: payload as QualityName, qualityExplicit: true }; case "setWeather": return { target: weatherTarget(payload, currentTarget) }; case "pause": @@ -212,6 +212,10 @@ export type GameState = { target: Weather; preset: PresetName; quality: QualityName; + /** A URL or player choice outranks the scene's first-frame default. */ + qualityExplicit?: boolean; + /** Observed before scene entry; the UI must not infer an adapter from window width. */ + softwareRendering?: boolean; elapsed: number; frame: number; flash: number; diff --git a/packages/create-threenative/templates/rain/src/ui/GameUi.tsx b/packages/create-threenative/templates/rain/src/ui/GameUi.tsx index 65549b69da..ac6393883d 100644 --- a/packages/create-threenative/templates/rain/src/ui/GameUi.tsx +++ b/packages/create-threenative/templates/rain/src/ui/GameUi.tsx @@ -7,8 +7,7 @@ import { Menu } from "./Menu.js"; import { automationRequest } from "./automation.js"; const TOAST_MS = 3600; - -/** Below this width the study asks for the cheap tier, exactly as the source study did. */ +/** Preserve the source study's one-time window-width default on hardware. */ const NARROW_PX = 700; export function GameUi() { @@ -138,18 +137,19 @@ function RainInterface() { send("setCinematic", false); }, [send, state]); - /** The first snapshot picks a tier from the width; a later choice is the player's and is kept. */ + /** Scene loading owns the default; the query and later player choices override it. */ const qualityChosen = useRef(false); useEffect(() => { - if (state === undefined || qualityChosen.current) return; + if (state === undefined || state.softwareRendering === undefined || qualityChosen.current) + return; qualityChosen.current = true; - // `?quality=` outranks the width default: an operator asking for `high` on a phone-sized - // window is asking for the tier, not for the guess this would otherwise make. + // An operator asking for high on a phone or software adapter keeps that explicit choice. const asked = automationRequest(window.location.search).quality; if (asked !== undefined) { send("setQuality", asked); return; } + if (state.qualityExplicit === true || state.softwareRendering) return; send("setQuality", window.innerWidth < NARROW_PX ? "performance" : "high"); }, [send, state]); From edd5e1d6eef2ef306234a615d6f392861b2ee0f8 Mon Sep 17 00:00:00 2001 From: Joao Paulo Furtado Date: Sat, 3 Oct 2026 18:45:51 -0700 Subject: [PATCH 41/41] test(rain): refresh measured scaffold identity after quality fix --- packages/create-threenative/__tests__/scaffold.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/create-threenative/__tests__/scaffold.spec.ts b/packages/create-threenative/__tests__/scaffold.spec.ts index 3f93bcc334..248a76225d 100644 --- a/packages/create-threenative/__tests__/scaffold.spec.ts +++ b/packages/create-threenative/__tests__/scaffold.spec.ts @@ -174,7 +174,7 @@ const PRD_201_PARENT_SCAFFOLD_HASHES: Readonly> = { platformer: "5e73de346450aa81f0b7531d5349f15b29dcd25bc25e880933aa0d688291a22f", puzzle: "c362aff80fad0bfb06d4425922762dfda9cb2b4169acce6525be790029716f89", racing: "02fe5731ddfbbcfef2ff9d07db68199682d5dc8f2a46dba21fca8e9e2e297b9e", - rain: "5b989a9acbecad9a973df6937aded660f8c84c63cbf32de5cd7d012c1d1533dd", + rain: "0bfcbb52b862bb1833290ed45d6803692d09b536338cbe31c011230c35de40cf", rts: "5200d85876eb561337007f59ae27967191d4896ee4ac3987f30a5186bee2c210", runner: "9e5798c74c3ff7bb59011928a42014a21f8bf7bf665419f12a5cfd85162ebdd3", sailing: "0a70a652dd128e56be83863ac45dab52c5aa05d7944f584108d0f7b5900c829e",

Yj+uB;H7li_SHp6t@yI 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 diff --git a/docs/verification/vq07-progress/1f73e559c-native/off.png b/docs/verification/vq07-progress/1f73e559c-native/off.png deleted file mode 100644 index f15131eb8b2d54698702017df518ddf6ec0cfabf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47812 zcmeFZ`B#$L`##Pjpn`y!0-}JJ*(lCKCLo4pla`fPCviy8%+w|=6A(o$P_)TxaICCj zWo2a@D-=^JD=9PUSm99FOsR>6JYUM!dwQMEU+`V8Us$WXp4NW$-uH9g*LB_3Ha~b- z0NRLX1OkE3ivs;ufItud2n3cP;rbEZVdZoX=*GT9{;bfn4bd^?t96g)MjSTR7548x zOOSMF>nIN?5zGJWr`<@XgsXUa$!MVxi~nCgVDYbU+y6cE-%qqs>D~~}(#C*)%$1!Z z=RuQQ?-u@JqF=-4f6mWCqTXTg)?m`o*Hu(H5%Pb2n*F%-V9(OQf6nu382<08{Pi~C ztw>1$sNmGs|GS!BuO3OIzW|Yze*ZsH{GRdGF!Z0pM2Nx*#t8rgJQ@49UDN-w4vXIm zDzG2_=REr1Q~$kH|7%BueI!T~O;GiI_dgFP3@LF31?<=Ua~}QhlYc+7-%ll*2$eXw za%923Z5k0mn*-xm391%l{&ODvaQy!xKGzR1gC)D}`DYj)jeo~m@jv42_b~DQ8Ey}!!tK^S!{9&R_B#sy6K?+r zxBq0f-%0O3+3i2Y^gqS)KgIO_huAF)Stn`L{BMNVIU8mNOD>!rxc7UsCwqy%tgrdX zZj>XVpjG+nF_0VkH-0|xKR{Vd72Hf|MIPF3KA=EO4<10R=`>UiuW$?nCZo8T$-_e7 z!L6>Rem`Gh{u}pIyZ#IJu_^k=N>Xm5GOgl9jQ--w;i^ZDDAb%!C{#ynRs4=$U{laM zg^DZwg^J7RusV;2I+wt`-=f`)B+=p&lvn@&9;v^+=4UV0X|wABtb|qL`v2=N#X}&( zDf|hp#?nL0V&qSmRUhi#@@mYcK_n6hYKcTrlfaV7`Fuf@FcF24bW~Bje!U-)GX@{lqDq^eCWu|NJl@SSA^S+Zma zN-{(fw4XPS!gZ4ih@#)5z)nwQevz90VK1l`SdbK?YjcO>y+Xn^V+os)1*Zm;Sc*4{ zb6OB!cAtj~c7mxtcO7U>mB8B*LR4OHJ;y*t#f^PcDMH)?IU!kuB;E^ z@tW5w70c@|;7%mP%#4f*xcq za>%?EH_%aj}y?*kbP zuJrp2nJQ3wv6L$*;!Rzs!6SWF1!UI=aDuvGjtF8TD9xZaC7Hmv18PPC*x`W&jfcIK zZ#u=S5>v(t%Uh|zlSjXPLcMM<2w17-EvPeCZftC9+OQ52p9FVu(T;M~6n?(!$6iVQ!P{*a9yWf&^ zxe}7I7WCLre(x6K^Z}}rowxSF?K-E7ehZ>>zkY4osGxh$nE46YT$5cF{$d-ySfJ)_u4v4DXw4SQx7hYNnx(T!uS5TsfG4MU=k1wI}U? z9CR@I40!4LEY2uXJgL)-j!9((g*POnrSuVSC)5_b13c1Ia2Qqv5h~jMz`>UGu*nWDK8Oz zh(oOv8YYmwr#d(15;pn^*CadLf_V7d1{MDCQ!@>B+mYey(l}sFc(8CAN_hLVFDp?| z^nlsSzujo?=eRM66&uAd9|kJUT?8T`L~j7-qn>DPOcW>|5V_yt;vQ*@m7dUbqvThI zL>@2d_9+r0nVYq&QBlDO!5^QRj8;MpLa&bi5!qv5Obfb;b0GL9c?IeMe#5P}n1;#Y z60vH?Eww6rn=6by#oQg#VtH<186Kv|f4QXn&HhS$F zIMGAsX4;4Lfvb5&PEv*@kP5BD-IeEgzwEewM=rl_;I+Ug=2WeN!>b6oa&w^KJV@`(O4lzTILWtIvEQ2s14jB;oU zX={cZ%sm^;EJip1iuE~I#NQKTMc^m%w7UrS@-LHx7mDt-Q_!C_1y1tONyt~4AWmEK zwxE(obA1k;;^Ohb4y=YjOx&#r|ExVF~k{}CdP6Yk;rYd3w{_%(c-9*wMtRsiZz^E>88%FMH++Y!xZEBaifh^1~5szLcBpH{-%3VLjcYeDFLFh^E&R z0ZOY3$~Qnm+|xiz32W(-)&Z)bTR z5U!`jv5%t64#Q8)jW2qJaum?A)-Z~Cu%w%ug5QgFfZ+)_2Z2KP9UfBPCl5qlVwblK>%dE_R&49p z0J6G*U2Z(=Oh+cW*hx>Lnlx}D96Xv1o>S7MRRDDWyZo;8<19{WfINtaq?o2F84|`SGs_= z80!u}ZgF5er4pCdJgHNsfpR@k2aL}+<(j|EYsGKdW^&ZG7VQ%{iW>TM9~58G+?Ydp zghJ(UW;X~C=t98ZOBM`v$`>w<`%1AE8-L|kWmP@>n}<~Cr7$nUcj){+LYo0y)MLW{$C*mMfDS^%6C!%37PI)?@Q~Wvtp8Ypv-Hb@IpBPvY zjBsWJd}5l2-AxJQQh$<^G035&uEV4cK-_mWL#*%Y>)cB|Zy8!8G8fF+PDiI&){5f< zSF@;6T!RQJxlvG{b&{{R%TE(5GHe=rH$@=UL9XOB@d^iAyq`MR^4Z&coOG` z4_k{}xegG>TBSh@(k_ z;J=a78+#f)#ldo|Ty4rDVOvPf&J-yri-S8tP`wp!u&ilwx7ihepOeCZBK@BL zjCZ&OlMjr~H&Yx2)}sIdRj4kM?(bvFwo))5Yu@if1({+!@{BJzA%~lKp_?a~6rUL{ z%pEHGTJ=?^L#WMi4u_MyL~i|^R@;#`%Qc!dK}Wz-5wEf76Q^b}_m%o*p>J`nVh((e zGu_l`!5`cjs4-psSjp#kP6j+i6lZWgOvsfpBgG+f=P5k!xQ{CM6P)%#J54+v!>G*Z z;={pOY@2DK{3_Q&_+YCDRIqQ52r~=$>``Eh z0(;auBP!U-e5|RZ{1ELv)x+rGUKfg6TGLy)=~HzymzmVUg6zk=v~JJfbUmQ8OBZuW z*3!ple;OQVLJ}5cFL6|KW1ZPnquKU23fiEWHK*Dw0_Z#F0j+;5b{o+F0j@AzWF(uo zn>ks>dBx`qU|$XWd?etZAa4Z6Zd2SS=@gxDE7OfRfeA$6DGah4~@zwx?dpy#X303ol0p~fC&8`EbSO^Y!+Ffns=h?|Z?AsTr-n>h;B0%+sG%F6(1cI2CBgj3+^}!t^PqMBvlJg(`i-&Tm~*9DqcAlQ z;M27~$M=J`eZ6-Zpj@M~IYvhWi0L9uPFPsQJa9rRd_4b1?8&xQ@8szn?@C(NA#cUX z%tSr2A?w#U$k9BwiozqKs@(93}-#1px^~`Hy zE;ZutJ~=fH9LDwDh|VqrC$aq|5lMr>lNC}0&`B3RMoBuw)KEtnu?%eg5VV;obQO%~ z#_y=f2i|heyV>6ouhf^oxI^Sg6QBOc=3S+qQg~QQ!13d*FnPQN84aI^I z2i^)F_+%j$|G?NI;$UsodS z&0{MSpsh1#&7Z?Y+0DqCDadQaceh~OhS2x<+xLXJ-#DBdCK7$lyQb=61T0L*_iQJC0bRjH@2*0hC!exN^n`Z9Z6dD#xGypCmy{UhrG5Jb7$RH6 z;$*hkI2W&Q(6`!(rdoTh%l(kr8BX=GuIQ(G?ei+&xqFf$wO^W6A8~2skRrp2tO_MH z-rPTleOI;Y+O7Ue*04pe_~W$MPZ)3sjsu5xMX$okh`C`sl$8YKsGPVlc+mllIW#tU zKX@&pR;ULhml2Qieir^5vJ9h5i-?}~{11nuIR6CmDtDuh&v9Hq17R0ojv~TtOv~96 zrs&^m=(7X4{#3jAD>>%fFr(9i7hEkoz>M!1ajfn`xPD+jGh7dX&lcdShZx(=*+FZl zkbUVTktmexts(7L6!TD2xrq$Rwf&ni(<#&LW>&I$?Vk3gk;B5{hNib(Ga6$wW24hj zcOp;Xa(d80F-1EkXxCa2t$cmmW zXJ=bZjzGGwB)+DqfVu8D_Q}({SlceQc62~b9_`YfvTko@08j{eO>)K&OK2Xq@c7`< zqKdapm4CAO6&>7`Q-_L#!u2We^}7gM>4w0XiUxG~++B#9eFb zO<4of4aY+J+m~x!^CjHNnUid9b`kjQ*Y>$L0LpIM{!Wc)aS464B0}X*o-g#?>kQ6( zacpUOJJW!20pdPrrdE9$+pny%mKY}Z z__gS$2A}!WVp>WLI*w7t9lquXK>VwX0ceenoNCI!g_O;GNA6;xlpXoV5iI8@H7>j@^|jBU98<}m~rM=KelNnjlFi8m?Ic~Gx!lU zCO|UcBsjH~kYYdEzFcuzt3mtB%0D7JdUT&~wV((NAO2=c7tnin8&@@;$pS>x?etNj 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 Cfj(UT diff --git a/docs/verification/vq07-progress/4f8fe47b1/fog.png b/docs/verification/vq07-progress/4f8fe47b1/fog.png deleted file mode 100644 index 93faf81b388a5558c1f51b55cb6ced7e30f455f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42747 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 = { sailing: "0a70a652dd128e56be83863ac45dab52c5aa05d7944f584108d0f7b5900c829e", shooter: "b13ae63da5e591296d68b4e419780f5bd6f640d79702910cdbb71a4e25bf88cd", snow: "7a0f7d84d2c0591fe87ad23756ec3fc6e1566247a12337899a6dde2071b75454", - starter: "7955acd47fab0e34b942b22bb4c7d528199a3e46d75e91964d240b6e5d3a03c7", + // VQ07: only starter moved again — Play.ts now calls createVolumetricFog through setupPost's + // per-graph `fog` factory and postprocessing.ts forwards it as WorldEnvironment's baseColour, + // so the shipped medium is reachable instead of dead generated source. Twelve prior trees + // still match develop's measurements, which is the ablation for this one-line change. + starter: "4727b687158dc0e9563cbde84f99443d76a31dd75fdb87e5f8fc5be9aad1cf7c", "tower-defense": "5f56275cfff3b81607c6aca3662d776df0052fed462ff00e93568ab50ecbc789", }; diff --git a/packages/create-threenative/templates/starter/AGENTS.md b/packages/create-threenative/templates/starter/AGENTS.md index a3b6db683e..515ae27238 100644 --- a/packages/create-threenative/templates/starter/AGENTS.md +++ b/packages/create-threenative/templates/starter/AGENTS.md @@ -82,6 +82,7 @@ therefore keep the previous clip's pose, and `boneContact` reports in metres whe `src/render/quality.ts` owns `low`, `medium`, `high`; platform selects the boot tier, and `adaptiveQuality.ts` reads `game.ts` frame windows. Fresh GPU time wins, with a named presentation fallback. After startup, two overloaded windows lower quality; five with 20% headroom raise it; cooldown is five seconds. Presentation fallback allows 5% timing jitter (`presentationTolerance`); `overloadBudgetMs` reports its threshold. Vsync-bound presentation alone cannot prove recovery headroom. `setupPost` exposes policy options and `targetFps`; `Play` supplies `display.maxFps` and readiness. Pin `{ tier: "low" }`; invalid tiers throw and pinned costs report. The `quality` entity and `TN_QUALITY_TIER` expose decisions; dispose on scene exit. +A bounded participating medium is generated source you own: `src/render/volumetricFog.ts` and its three companions build depth-correct mist that the sun and unshadowed point lights light up. `Play.ts` keeps it off in `MIST` — off costs no target and no pixel — and `setupPost`'s `fog` factory rebuilds it whenever the tier replaces the chain. Aerial perspective, scene fog and god rays must stay off: they render the same air. The shipped chain is ambient occlusion on `high` and `medium`, bloom, vignette, the tone curve and the shared SMAA. There are no authored paint stages: a real sun and a real sky carry the shading, and a Kuwahara smear or an ink outline over a photograph only cost frames. `quality.ts` owns tier and strength, and every `xxxEnabled: true` carries the measurement that justified it; `TN_RENDER_CHAIN` names each stage independently, and a missing stage observation is a failure. `input.vector("move").y` is +up, so forward uses one explicit `-move.y` conversion. A scenario with no assertions or missing observations fails; open a real capture after visual changes. When a frame costs more than it should, find the object first: backtick opens the overlay, whose **Geometry** tab captures one frame on **Capture** and ranks the objects that submitted its triangles beside their projected size on screen; an agent gets the same report from `"assert": { "geometry": { "limit": 25 } }` in a scenario, which needs `runtime.geometry`. Those numbers are measured submissions reconciled against the frame's own pass totals, so the remainder the rows do not account for is reported, and what cannot be measured — a packed batch's per-member draws, unknown bounds — says so with a reason instead of reading as zero. diff --git a/packages/create-threenative/templates/starter/CLAUDE.md b/packages/create-threenative/templates/starter/CLAUDE.md index 4b5133c358..e1414b7448 100644 --- a/packages/create-threenative/templates/starter/CLAUDE.md +++ b/packages/create-threenative/templates/starter/CLAUDE.md @@ -84,6 +84,7 @@ therefore keep the previous clip's pose, and `boneContact` reports in metres whe `src/render/quality.ts` owns `low`, `medium`, `high`; platform selects the boot tier, and `adaptiveQuality.ts` reads `game.ts` frame windows. Fresh GPU time wins, with a named presentation fallback. After startup, two overloaded windows lower quality; five with 20% headroom raise it; cooldown is five seconds. Presentation fallback allows 5% timing jitter (`presentationTolerance`); `overloadBudgetMs` reports its threshold. Vsync-bound presentation alone cannot prove recovery headroom. `setupPost` exposes policy options and `targetFps`; `Play` supplies `display.maxFps` and readiness. Pin `{ tier: "low" }`; invalid tiers throw and pinned costs report. The `quality` entity and `TN_QUALITY_TIER` expose decisions; dispose on scene exit. +A bounded participating medium is generated source you own: `src/render/volumetricFog.ts` and its three companions build depth-correct mist that the sun and unshadowed point lights light up. `Play.ts` keeps it off in `MIST` — off costs no target and no pixel — and `setupPost`'s `fog` factory rebuilds it whenever the tier replaces the chain. Aerial perspective, scene fog and god rays must stay off: they render the same air. The shipped chain is ambient occlusion on `high` and `medium`, bloom, vignette, the tone curve and the shared SMAA. There are no authored paint stages: a real sun and a real sky carry the shading, and a Kuwahara smear or an ink outline over a photograph only cost frames. `quality.ts` owns tier and strength, and every `xxxEnabled: true` carries the measurement that justified it; `TN_RENDER_CHAIN` names each stage independently, and a missing stage observation is a failure. `input.vector("move").y` is +up, so forward uses one explicit `-move.y` conversion. A scenario with no assertions or missing observations fails; open a real capture after visual changes. When a frame costs more than it should, find the object first: backtick opens the overlay, whose **Geometry** tab captures one frame on **Capture** and ranks the objects that submitted its triangles beside their projected size on screen; an agent gets the same report from `"assert": { "geometry": { "limit": 25 } }` in a scenario, which needs `runtime.geometry`. Those numbers are measured submissions reconciled against the frame's own pass totals, so the remainder the rows do not account for is reported, and what cannot be measured — a packed batch's per-member draws, unknown bounds — says so with a reason instead of reading as zero. diff --git a/packages/create-threenative/templates/starter/src/render/postprocessing.ts b/packages/create-threenative/templates/starter/src/render/postprocessing.ts index d6629a7fb9..fd585ed5d4 100644 --- a/packages/create-threenative/templates/starter/src/render/postprocessing.ts +++ b/packages/create-threenative/templates/starter/src/render/postprocessing.ts @@ -18,6 +18,7 @@ import { formatQualityAdaptation, } from "./adaptiveQuality.js"; import { type QualityTier, qualityPreset } from "./quality.js"; +import type { IFogMedium } from "./volumetricFog.js"; import { type OutputRenderer, WorldEnvironment } from "./worldEnvironment.js"; interface IPostController { @@ -44,12 +45,19 @@ export function setupPost( software?: boolean; /** Forces a tier while keeping its costs observed. Unknown names throw. */ tier?: QualityTier; + /** + * The bounded participating medium from `volumetricFog.ts`, built once per graph: a tier change + * replaces the graph, and a fog controller owns one graph, so it is released and rebuilt here + * rather than composed twice. Omit it and the chain starts from the beauty pass unchanged. + */ + fog?: () => IFogMedium | undefined; } = {}, ): IPostController { const policy = createAdaptiveQuality(environment, environment); active?.dispose(); let disposed = false; let disposeGraph: (() => void) | undefined; + let medium: IFogMedium | undefined; let observation: Record = { tier: policy.tier, source: policy.pinned ? "pinned" : "auto", @@ -57,10 +65,15 @@ export function setupPost( function apply(): void { // Replacement is serialized: no old graph or subscription remains alive beside the new one. disposeGraph?.(); + medium?.dispose(); + medium = environment.fog?.(); + const composed = medium; const settings = qualityPreset(policy.tier); const world = new WorldEnvironment(settings); const applied = world.apply(renderer, scene, camera, { godraysLight: environment.godraysLight, + // Ahead of exposure and every stage, which is the only place a participating medium can go. + baseColour: composed === undefined ? undefined : (scenePass) => composed.compose(scenePass), }); disposeGraph = applied.dispose; observation = { ...observation, stages: applied.stages, dropped: applied.dropped }; @@ -91,6 +104,8 @@ export function setupPost( disposed = true; disposeGraph?.(); disposeGraph = undefined; + medium?.dispose(); + medium = undefined; if (active === controller) active = undefined; }, }; diff --git a/packages/create-threenative/templates/starter/src/render/volumetricFog.ts b/packages/create-threenative/templates/starter/src/render/volumetricFog.ts index 8ae595e2bd..83aa9ad1f0 100644 --- a/packages/create-threenative/templates/starter/src/render/volumetricFog.ts +++ b/packages/create-threenative/templates/starter/src/render/volumetricFog.ts @@ -14,6 +14,9 @@ import { type IFogVolumeGraph, composeFogVolume } from "./volumetricFogVolume.js export type { IFogVolume, IVolumetricFogOptions }; +/** The owned medium a composed graph exposes: one controller, one graph, one owned target. */ +export type IFogMedium = Exclude, undefined>; + /** Off, unsupported and zero-density return before allocating any graph/target/material. */ export function createVolumetricFog(camera: PerspectiveCamera, supplied: IVolumetricFogOptions) { if (!supplied.enabled || supplied.renderer !== "webgpu") return undefined; diff --git a/packages/create-threenative/templates/starter/src/scenes/Play.ts b/packages/create-threenative/templates/starter/src/scenes/Play.ts index 5f024c1a60..49ba3ed0fe 100644 --- a/packages/create-threenative/templates/starter/src/scenes/Play.ts +++ b/packages/create-threenative/templates/starter/src/scenes/Play.ts @@ -11,12 +11,15 @@ import { } from "@threenative/core"; import { Area3D, CollisionShape3D, type IPhysicsContext, RigidBody3D } from "@threenative/physics"; import { + Box3, BufferAttribute, + Color, Group, Mesh, NearestFilter, type PerspectiveCamera, type Texture, + Vector3, } from "three"; import config from "../../threenative.config.js"; import { Crate } from "../entities/Crate.js"; @@ -32,6 +35,7 @@ import { setupPost } from "../render/postprocessing.js"; import { ball, block, spike, tube } from "../render/shapes.js"; import { setupSky } from "../render/sky.js"; import { TouchControls } from "../render/touch-controls.js"; +import { type IVolumetricFogOptions, createVolumetricFog } from "../render/volumetricFog.js"; import type { GameState } from "../state.js"; export type GameCtx = ICtx; @@ -42,6 +46,31 @@ const FLOOR_SURFACE_Y = 0; const FLOOR_BOUNDS = { maxX: 5, minX: -5, maxZ: 2, minZ: -2 } as const; /** The near platform's own footprint, which the support surface below answers for. */ const FLOOR_SIZE = { depth: 4.2, width: 10 } as const; +/** + * The starter's bounded mist, off in every shipped tier. `createVolumetricFog` returns before it + * allocates a target or a material, so this costs nothing and changes no pixel. Set `enabled` and + * the `volumes` box the course to get depth-correct mist the sun and any local lights light up. + * Density, colour and step count are look decisions and belong here, not in a package. + */ +const MIST: IVolumetricFogOptions = { + enabled: false, + renderer: "webgpu", + steps: 32, + resolutionScale: 0.5, + volumes: [ + { + bounds: new Box3(new Vector3(-9, 0, -6), new Vector3(9, 3, 6)), + density: 0.06, + baseHeight: 0, + heightFalloff: 0.5, + }, + ], + albedo: new Color("#cfd8e3"), + ambient: new Color("#0b1016"), + anisotropy: 0.3, + // The medium and the sky's aerial perspective are the same air; two would double it. + environment: { aerialPerspective: false, godRays: false, sceneFog: false }, +}; export class Play extends Scene { #assetProof: Mesh | undefined; @@ -156,6 +185,13 @@ export class Play extends Scene { // 60 on mobile. A game that names `display.maxFps` overrides it here too. targetFps: resolveTargetFps(config, getPlatform()).targetFps, ready: () => ctx.startup.phase === "ready", + // Rebuilt per graph, so a tier change that replaces the chain cannot compose one medium + // twice. With `MIST.enabled` false the factory returns undefined and nothing is allocated. + fog: () => { + this.#mist?.dispose(); + this.#mist = createVolumetricFog(ctx.camera as PerspectiveCamera, MIST); + return this.#mist; + }, }), ); const loading = createLoadingScreen(ctx); @@ -350,10 +386,13 @@ export class Play extends Scene { } #post: ReturnType | undefined; + #mist: ReturnType; override exit(ctx: GameCtx): void { this.#post?.dispose(); this.#post = undefined; + this.#mist?.dispose(); + this.#mist = undefined; super.exit(ctx); } } diff --git a/scripts/__tests__/temp-dir-guard.spec.ts b/scripts/__tests__/temp-dir-guard.spec.ts index dabe80f025..78c4af9b9d 100644 --- a/scripts/__tests__/temp-dir-guard.spec.ts +++ b/scripts/__tests__/temp-dir-guard.spec.ts @@ -91,6 +91,14 @@ const allowedProductionCreators = new Map([ "packages/runtime-native/tests/async-image-decode.test.mjs", "The decode contract compiles a standalone probe with the system compiler into a scratch root and removes it in afterAll; the test runs under `node --test` as well as vitest, so it cannot import the workspace temp-dir helper.", ], + [ + "packages/runtime-native/tests/resize-presentation-behavior.test.mjs", + "The presentation contract compiles a standalone probe with the system compiler into a scratch root and removes it in a finally, for the same reason as the decode contract above.", + ], + [ + "scripts/__tests__/verify-volumetric-fog.spec.ts", + "The fog verifier round-trips its generated scenarios through the public loader and removes the scratch root in a finally.", + ], [ "scripts/capture-blender-mcp-tools.ts", "The tool-snapshot gate packs and installs into scratch roots removed in finally.", From c36455830541a3b71a1625cbc150125b98b1c585 Mon Sep 17 00:00:00 2001 From: Joao Paulo Furtado Date: Sat, 3 Oct 2026 09:59:44 -0700 Subject: [PATCH 25/41] fix(create-threenative): put the starter's mist where the look belongs, and let it own the air MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Four reviewer findings on the fog source, plus the two red invariants the review surfaced alongside them. The authored mist was a `MIST` block in `src/scenes/Play.ts`, which puts a look decision in a scene. It is now `STARTER_MIST` in `src/render/volumetricFog.ts`, and `Play.ts` only hands it the live `ctx.renderer.kind` — the old block hardcoded "webgpu" while `threenative.config.ts` asks for `preferWebGPU`, so the WebGL fallback would have built a medium the chain then silently dropped. `STARTER_MIST` is typed `Omit`, so no scene can claim a backend the renderer does not have. It also declared `environment.sceneFog: false` while `sky.ts` installs the scene's `FogExp2`, and the medium's own guard refuses to compose over a `scene.fog`. Turning the advertised single flag on would therefore have thrown. `createVolumetricFog` now takes the scene, takes its fog over for its own lifetime and restores it on disposal: one flag is enough, the air is never counted twice, and disabled stays allocation-free and side-effect-free. `environment.sceneFog` is deleted rather than left as a field that can only be false. There is no automatic sun — the generated source and the template instructions now say the mist is lit by `ambient` until a `sun` with an initialized shadow map is passed. `verify-volumetric-fog.spec.ts` uses `test-support/temp-dir.ts` again, so its temp-dir-guard allowlist entry is gone instead of justified. The `fog` lane in `integration.yml` gained the paths this repair touches, so fog qualification reruns when the shipped wiring changes; develop's lanes and the single job/stage pair are untouched. Red-green first: the scene-fog take-over test failed against a medium that only restored the fog on dispose, and the two new source regressions failed against the pre-repair files. Fog and fixture suites pass 30/30, temp-dir-guard with the verifier 15/15, scaffold plus template contracts 104/104, root and package typecheck pass, the doc-link/budget/CI-structure/CI-needs/mirror selection 230/230, and `pnpm lint` exits 0 with 1042 warnings. Two gates the review did not name were failing and are fixed here. `docs/verification` measured 72.7 MB against its 72 MB cap — the previous commit claimed 71.9 MB without measuring it — so the retained images are now the two authoritative fog frames plus the 2.5 KB black control, every `provenance.json` stays with its per-arm SHA256, and the six checkpoint paragraphs that linked a deleted image name the run, artifact id and digest instead; `pnpm budgets` now reports ok at a measured 71.9 MB. And the starter's CLAUDE.md mirror had crossed the 100-line scaffold limit, so the fog instruction is merged into the existing `setupPost` paragraph. Fresh hosted browser and native fog qualification plus the full repository CI are still required before any box moves; the 640c103 proof stays source-scoped to its own tree. --- .github/workflows/integration.yml | 2 +- .../PRD-VQ-07-volumetric-fog.md | 26 +++-- .../001b93400/scatterPointOff.png | Bin 28692 -> 0 bytes .../vq07-progress/001b93400/scatterSunOff.png | Bin 30117 -> 0 bytes .../vq07-progress/1505e018a/resizeSmall.png | Bin 39908 -> 0 bytes .../vq07-progress/1bb878e03/off-baseline.png | Bin 28892 -> 0 bytes .../1f73e559c-native/scatter.png | Bin 63703 -> 0 bytes .../1f73e559c-native/scatterPointOff.png | Bin 55848 -> 0 bytes .../1f73e559c-native/scatterSunOff.png | Bin 58185 -> 0 bytes .../vq07-progress/4f8fe47b1/half.png | Bin 36554 -> 0 bytes .../vq07-progress/4f8fe47b1/inside.png | Bin 76219 -> 0 bytes .../vq07-progress/4f8fe47b1/overlap.png | Bin 42750 -> 0 bytes .../vq07-progress/4f8fe47b1/pointOff.png | Bin 33309 -> 0 bytes .../vq07-progress/4f8fe47b1/sunOff.png | Bin 36588 -> 0 bytes .../vq07-progress/4f8fe47b1/wallOff.png | Bin 43828 -> 0 bytes .../640c103-browser/scatterOutside.png | Bin 32743 -> 0 bytes .../640c103-native/cameraCut.png | Bin 130454 -> 0 bytes .../640c103-native/resizeSmall.png | Bin 31558 -> 0 bytes .../640c103-native/sceneRepeatedOff.png | Bin 47812 -> 0 bytes .../640c103-native/streamWallOut.png | Bin 76371 -> 0 bytes examples/abyss-framework/vq-fog/src/game.ts | 4 +- .../__tests__/scaffold.spec.ts | 10 +- .../__tests__/vq-volumetric-fog.spec.ts | 108 ++++++++++++++---- .../templates/starter/AGENTS.md | 3 +- .../templates/starter/CLAUDE.md | 3 +- .../starter/src/render/volumetricFog.ts | 59 +++++++++- .../src/render/volumetricFogOptions.ts | 16 ++- .../templates/starter/src/scenes/Play.ts | 47 ++------ scripts/__tests__/temp-dir-guard.spec.ts | 4 - .../__tests__/verify-volumetric-fog.spec.ts | 22 ++-- 30 files changed, 199 insertions(+), 105 deletions(-) delete mode 100644 docs/verification/vq07-progress/001b93400/scatterPointOff.png delete mode 100644 docs/verification/vq07-progress/001b93400/scatterSunOff.png delete mode 100644 docs/verification/vq07-progress/1505e018a/resizeSmall.png delete mode 100644 docs/verification/vq07-progress/1bb878e03/off-baseline.png delete mode 100644 docs/verification/vq07-progress/1f73e559c-native/scatter.png delete mode 100644 docs/verification/vq07-progress/1f73e559c-native/scatterPointOff.png delete mode 100644 docs/verification/vq07-progress/1f73e559c-native/scatterSunOff.png delete mode 100644 docs/verification/vq07-progress/4f8fe47b1/half.png delete mode 100644 docs/verification/vq07-progress/4f8fe47b1/inside.png delete mode 100644 docs/verification/vq07-progress/4f8fe47b1/overlap.png delete mode 100644 docs/verification/vq07-progress/4f8fe47b1/pointOff.png delete mode 100644 docs/verification/vq07-progress/4f8fe47b1/sunOff.png delete mode 100644 docs/verification/vq07-progress/4f8fe47b1/wallOff.png delete mode 100644 docs/verification/vq07-progress/640c103-browser/scatterOutside.png delete mode 100644 docs/verification/vq07-progress/640c103-native/cameraCut.png delete mode 100644 docs/verification/vq07-progress/640c103-native/resizeSmall.png delete mode 100644 docs/verification/vq07-progress/640c103-native/sceneRepeatedOff.png delete mode 100644 docs/verification/vq07-progress/640c103-native/streamWallOut.png diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index adb241aeae..1282738b51 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -58,7 +58,7 @@ jobs: lane() { if grep -qE "$2" <<<"$files"; then echo "$1=true"; else echo "$1=false"; fi >> "$GITHUB_OUTPUT"; } lane csg '^examples/integrations/csg/.*$|^\.github/workflows/integration\.yml$' lane decals '^packages/create-threenative/templates/shooter/src/render/decals\.ts$|^packages/create-threenative/templates/shooter/src/scenes/Play\.ts$|^packages/create-threenative/__tests__/shooter-decals[^/]*\.spec\.ts$|^packages/create-threenative/__tests__/fixtures/bounded-decals/.*$|^\.github/workflows/integration\.yml$' - lane fog '^packages/create-threenative/templates/starter/src/render/volumetricFog[A-Za-z]*\.ts$|^packages/create-threenative/template-assets/worldEnvironment\.ts$|^packages/core/src/renderer\.ts$|^packages/core/src/render/chain\.ts$|^examples/abyss-framework/vq-fog/.*$|^examples/abyss-framework/playtests/vq-volumetric-fog\.playtest\.json$|^scripts/verify-volumetric-fog\.ts$|^scripts/__tests__/vq-fog-native-proof\.spec\.ts$|^packages/runtime-native/include/mystral/webgpu_compat\.h$|^packages/runtime-native/src/webgpu/bindings_presentation\.cpp$|^packages/runtime-native/tests/surface_texture_status_test\.cpp$|^packages/runtime-native/tests/canvas_presentation_test\.cpp$|^\.github/workflows/integration\.yml$' + lane fog '^packages/create-threenative/templates/starter/src/render/volumetricFog[A-Za-z]*\.ts$|^packages/create-threenative/templates/starter/src/render/postprocessing\.ts$|^packages/create-threenative/templates/starter/src/scenes/Play\.ts$|^packages/create-threenative/template-assets/worldEnvironment\.ts$|^packages/create-threenative/__tests__/vq-(?:volumetric-fog|fog-fixture)\.spec\.ts$|^packages/core/src/renderer\.ts$|^packages/core/src/render/chain\.ts$|^examples/abyss-framework/vq-fog/.*$|^examples/abyss-framework/playtests/vq-volumetric-fog\.playtest\.json$|^scripts/verify-volumetric-fog\.ts$|^scripts/__tests__/(?:verify-volumetric-fog|vq-fog-native-proof)\.spec\.ts$|^packages/runtime-native/include/mystral/webgpu_compat\.h$|^packages/runtime-native/src/webgpu/bindings_presentation\.cpp$|^packages/runtime-native/tests/surface_texture_status_test\.cpp$|^packages/runtime-native/tests/canvas_presentation_test\.cpp$|^\.github/workflows/integration\.yml$' lane fluid-particles '^packages/core/src/fluid-particles\.ts$|^packages/core/src/gpu-readback\.ts$|^packages/core/__tests__/fluid-particles\.spec\.ts$|^packages/core/patches/.*$|^packages/playtest/.*$|^examples/prd476-fluid-particles/.*$|^scripts/verify-fluid-collision\.ts$|^scripts/verify-fluid-consumers\.ts$|^scripts/verify-fluid-collision-native\.ts$|^scripts/__tests__/fluid-collision-native-proof\.spec\.ts$|^packages/runtime-native/.*$|^\.github/actions/workspace-dist/.*$|^scripts/fluid-collision-proof\.ts$|^scripts/__tests__/fluid-collision-proof\.spec\.ts$|^scripts/__tests__/fluid-collision-view\.spec\.ts$|^pnpm-lock\.yaml$|^\.github/actions/pnpm/.*$|^\.github/actions/playwright-chromium/.*$|^\.github/workflows/integration\.yml$' lane ik '^examples/integrations/ik/.*$|^\.github/workflows/integration\.yml$' lane tone '^packages/playtest/.*$|^examples/abyss-framework/src/render/toneCalibration\.ts$|^examples/abyss-framework/src/tone-main\.ts$|^examples/abyss-framework/tone\.html$|^examples/abyss-framework/tone\.vite\.config\.ts$|^examples/abyss-framework/playtests/tone\.playtest\.json$|^examples/abyss-framework/package\.json$|^scripts/verify-tone-exposure\.ts$|^scripts/tone-capture-proof\.ts$|^scripts/__tests__/tone-capture-proof\.spec\.ts$|^scripts/non-visual-scenarios\.mjs$|^package\.json$|^pnpm-lock\.yaml$|^\.github/actions/pnpm/.*$|^\.github/actions/playwright-chromium/.*$|^\.github/workflows/integration\.yml$' diff --git a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md index 080176fa2b..cd79ad61e9 100644 --- a/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md +++ b/docs/PRDs/batch-2026-10-01-visual-quality/PRD-VQ-07-volumetric-fog.md @@ -81,11 +81,11 @@ Fresh proof: the fog and verifier contract suites pass 23/23, including generati Scaffold validation initially failed only its whole-tree byte snapshot because the deliberate shared lifetime changes affect all thirteen kits and the new optional fog file affects starter. After inspecting that source-only delta, the expected generated-tree hashes were refreshed with an inline rationale; the unchanged starter-copy assertions now include the new file. The full scaffold suite passes 66/66. Fog/verifier plus CI structure/needs suites pass 164/164; relative documentation-link checks pass. No runtime evidence is inferred from these checks. -Actual diagnostic progress: [hosted run 36989192897](https://github.com/ThreeNativeHQ/threenative/actions/runs/36989192897) rendered the off baseline at source `1bb878e033d29e084b912bc9266a15b72d6cbf16`, Chromium WebGPU / Google SwiftShader / 640×400. The [unchanged captured PNG](../../verification/vq07-progress/1bb878e03/off-baseline.png) and [provenance](../../verification/vq07-progress/1bb878e03/provenance.json) are retained for the requested progress screenshots. The run failed closed on one HTTP404 console error; all baseline image/component assertions passed, but fog-on variants did not run. This is diagnostic baseline progress, not fog qualification or a hardware/native claim. The first report omitted the failing resource URL; fixture-only preview diagnostics now record HTTP error status and URL without relaxing the error gate. +Actual diagnostic progress: [hosted run 36989192897](https://github.com/ThreeNativeHQ/threenative/actions/runs/36989192897) rendered the off baseline at source `1bb878e033d29e084b912bc9266a15b72d6cbf16`, Chromium WebGPU / Google SwiftShader / 640×400. Its [provenance](../../verification/vq07-progress/1bb878e03/provenance.json) is retained with every capture's SHA256 in it; the images themselves live in the hosted artifact. The run failed closed on one HTTP404 console error; all baseline image/component assertions passed, but fog-on variants did not run. This is diagnostic baseline progress, not fog qualification or a hardware/native claim. The first report omitted the failing resource URL; fixture-only preview diagnostics now record HTTP error status and URL without relaxing the error gate. The unchanged-HTML diagnostic rerun [36990205268](https://github.com/ThreeNativeHQ/threenative/actions/runs/36990205268) identifies the exact failed resource in `off/http-errors.jsonl`: `/favicon.ico`, HTTP404. The fixture now uses the repository's existing inline-favicon convention. Its new source regression failed first; fog/verifier tests then pass 24/24 and the production bundle builds. No error assertion was weakened. The next hosted run must verify that this removes the console failure and reaches fog-on capture. -First successful actual fog captures: [run 36990624761](https://github.com/ThreeNativeHQ/threenative/actions/runs/36990624761), source `4f8fe47b1801282827c9b5d0f0cba40b99c7c2a7`, Chromium WebGPU / Google SwiftShader / 640×400. All nine named variants passed with empty diagnostic lists, and off/zero images were pixel-identical. The unchanged [fog-on PNG](../../verification/vq07-progress/4f8fe47b1/fog.png), [inside-volume PNG](../../verification/vq07-progress/4f8fe47b1/inside.png), [off baseline](../../verification/vq07-progress/1bb878e03/off-baseline.png) and [all-variant provenance](../../verification/vq07-progress/4f8fe47b1/provenance.json) are retained. Visual inspection confirms bounded mist and light response. The fixed wall-center patch (x184, y216, 18×18) has exactly zero changed pixels against off; full/half fog mean absolute difference is 0.0695/255. This is browser software-rendered correctness progress, not native or hardware-performance qualification. Same-node replacement ownership still needs a unique installation receipt; a green screenshot run does not close that review finding. +First successful actual fog captures: [run 36990624761](https://github.com/ThreeNativeHQ/threenative/actions/runs/36990624761), source `4f8fe47b1801282827c9b5d0f0cba40b99c7c2a7`, Chromium WebGPU / Google SwiftShader / 640×400. All nine named variants passed with empty diagnostic lists, and off/zero images were pixel-identical. The unchanged [fog-on capture](../../verification/vq07-progress/640c103-browser/fog.png) and [all-variant provenance](../../verification/vq07-progress/4f8fe47b1/provenance.json) are retained, the latter carrying each arm's SHA256; this run's inside-volume and off-baseline images are in artifact 11220323995. Visual inspection confirms bounded mist and light response. The fixed wall-center patch (x184, y216, 18×18) has exactly zero changed pixels against off; full/half fog mean absolute difference is 0.0695/255. This is browser software-rendered correctness progress, not native or hardware-performance qualification. Same-node replacement ownership still needs a unique installation receipt; a green screenshot run does not close that review finding. Installation ownership correction: `setOutputNode` now returns a unique optional receipt with `isCurrent()` / `dispose()`, capturing the actual `RenderPipeline` installation. Same-node reinstall regressions failed first; old observers and disposers now respect the receipt, as does the generated direct base-colour path. Legacy void-style adapters (including historically ignored return values) retain compatibility behavior but do not gain installation-level guarantees. Receipts own only the installed pipeline; graph dependencies still belong to their explicit caller. The superseded node-equality query was removed. The focused renderer/chain/environment/shared-source/scaffold suite passes 157/157, core and touched-source/test typechecks pass, and API/capability checks pass. Generated-source hashes are refreshed only for this intentional shared lifecycle edit. Fresh hosted capture is selected for subsequent renderer/chain/canonical-environment changes. @@ -105,7 +105,7 @@ Moving-base reconciliation: `beedf1e8703b8d7318f11dea0f183764075cc153` is merged Pre-run calibration correction: source inspection shows the public runner rejects uniform blank captures before evaluating black-region assertions. Rather than accept a failed capture or weaken any normal guard, the four scattering-control arms now share a fixture-owned gradient calibration card at x510–630, y20–140, ahead of the volume. The full fog evaluation area (x0, y0, 500×400) must still be exactly black without fog; the room/light and foreground-wall ROIs are unchanged. An interior calibration patch (x515, y25, 110×110) must have RGB channels at least 32 and be byte-identical across all four controls. The normal full-frame nonblank gate remains 5% in every arm, and every arm must pass all runtime/error/device-loss guards. This revised control design was pinned before any hosted scattering-control execution; no failed pixel threshold was relaxed. The card is visible only in the four fixed-outside-camera controls, so the original normal variants retain their authored picture. New fixture/verifier regressions failed first and pass 9/9; types pass. -Isolated-scattering progress: [run 36997361343](https://github.com/ThreeNativeHQ/threenative/actions/runs/36997361343) at source `001b934008cbc6e3ab196678506ae9b14f751f1e` passes all thirteen independent captures with empty diagnostics, including the four calibration controls. Downloaded artifact `11221669862` matches SHA256 `2c88ec8b13a525986867301a735ede33f5b76ab3b6d9db3c46459554b5b7a4ca`. The [unchanged scattering PNG](../../verification/vq07-progress/001b93400/scatter.png), [black control](../../verification/vq07-progress/001b93400/blackOff.png) and [four-arm provenance/pixel metrics](../../verification/vq07-progress/001b93400/provenance.json) are retained. The pinned room ROI passes: directional mean RGB delta 15.9585/255, changed ratio 0.99333; point mean delta 48.7755/255, changed ratio 1.0. The 500×400 black area and foreground plate are exactly zero; calibration minimum RGB is 146 and cross-arm difference is exactly zero. These isolates show scattering response rather than changed surface illumination. +Isolated-scattering progress: [run 36997361343](https://github.com/ThreeNativeHQ/threenative/actions/runs/36997361343) at source `001b934008cbc6e3ab196678506ae9b14f751f1e` passes all thirteen independent captures with empty diagnostics, including the four calibration controls. Downloaded artifact `11221669862` matches SHA256 `2c88ec8b13a525986867301a735ede33f5b76ab3b6d9db3c46459554b5b7a4ca`. The [black control](../../verification/vq07-progress/001b93400/blackOff.png) and [four-arm provenance/pixel metrics](../../verification/vq07-progress/001b93400/provenance.json) are retained, the latter carrying the scattering arm's SHA256; that image is in artifact 11221669862. The pinned room ROI passes: directional mean RGB delta 15.9585/255, changed ratio 0.99333; point mean delta 48.7755/255, changed ratio 1.0. The 500×400 black area and foreground plate are exactly zero; calibration minimum RGB is 146 and cross-arm difference is exactly zero. These isolates show scattering response rather than changed surface illumination. The overall run fails closed on lifecycle's old logical `disposedGraphs >= 4` assertion: the sampled initial state had `builds=0`, so four installs yielded three logical releases. Actual targets/materials were created=3, released=2, live=1 as asserted; there was no device loss or other runtime error. This is preserved as a setup mismatch, not a complete lifecycle pass. The corrected scenario explicitly executes **fog → inside → off → fog → rebuild**, then a separate final-off extension. It now requires exactly four real fog targets created, three target/material releases and one live target at the final fog frame; final off requires all four target/material releases and zero live targets. No dummy resources, manually advanced counters or lowered thresholds are used. New sequence assertions failed first; source/fixture/verifier tests pass 29/29. The stronger sequence and return-to-off pixels await the next hosted run. @@ -120,7 +120,7 @@ Render-boundary correction: [run 36999492881](https://github.com/ThreeNativeHQ/t Measured-settle correction: [run 37000014054](https://github.com/ThreeNativeHQ/threenative/actions/runs/37000014054) at `47464cca247eeb2391de7057276cef9cb8aa36fc` observed one completed render interval before the fixed-tick sequence ended, so it correctly failed the three-frame predicate. Artifact `11222909308` matches SHA256 `54d4a610d60770663f3bfefc790c07ffc22cf76b69ed63a318751c2d6a441eba`. `FixedStepLoop.advance()` simulates only; the bridge interprets these authored waitFrames as ticks. Each capture and each resize transition now uses the existing `waitForResource` observer for `state.stableTextureFrames >= 3`, bounded to 30 seconds. That mechanism advances one fixed tick between bounded polls, allowing the real render loop to progress and the game to sample its actual counters; elapsed time or poll count alone cannot satisfy it. Public scenario round-trip tests validate every arm. All resource/image thresholds remain unchanged. The existing desktop project bundler also compiled this same portable game source successfully (entry `src/game.ts`); that compile is not native execution proof. -Target/depth resize and renderer-accounting proof: [run 37000862324](https://github.com/ThreeNativeHQ/threenative/actions/runs/37000862324) at `1505e018aa38630b91893ab8265c447833e99a51` passed all 17 cases with empty diagnostics. Artifact `11224155982` matches SHA256 `a21b102966a09371896a4d796fd278525925a5c4b6ce70b2a81cb1eb79ac45d4`. Actual target sizes were 320×240 then 640×400 with one controller/target creation and zero teardown; restored fog pixels exactly equal the original fixed-size fog frame. Independent renderer texture count returns to 5 at final off, equal to the off baseline, after three observed stable render intervals in both arms. The [small-target capture](../../verification/vq07-progress/1505e018a/resizeSmall.png), [restored capture](../../verification/vq07-progress/640c103-browser/fog.png) and [provenance/observations](../../verification/vq07-progress/1505e018a/provenance.json) are retained unchanged. Browser implementation qualification now includes all these controls; native execution, OS-window lifecycle, hardware performance and repository promotion gates remain separately unproven. +Target/depth resize and renderer-accounting proof: [run 37000862324](https://github.com/ThreeNativeHQ/threenative/actions/runs/37000862324) at `1505e018aa38630b91893ab8265c447833e99a51` passed all 17 cases with empty diagnostics. Artifact `11224155982` matches SHA256 `a21b102966a09371896a4d796fd278525925a5c4b6ce70b2a81cb1eb79ac45d4`. Actual target sizes were 320×240 then 640×400 with one controller/target creation and zero teardown; restored fog pixels exactly equal the original fixed-size fog frame. Independent renderer texture count returns to 5 at final off, equal to the off baseline, after three observed stable render intervals in both arms. The [restored capture](../../verification/vq07-progress/640c103-browser/fog.png) and [provenance/observations](../../verification/vq07-progress/1505e018a/provenance.json) are retained unchanged, the latter carrying the 320x240 target's SHA256; that image is in artifact 11224155982. Browser implementation qualification now includes all these controls; native execution, OS-window lifecycle, hardware performance and repository promotion gates remain separately unproven. Measured workload/cost record for source `1505e018aa38630b91893ab8265c447833e99a51`, run `37000862324`, Google SwiftShader (`vendor=google`, `architecture=swiftshader`), browser WebGPU / 640×400: full fog renders 256,000 transport pixels at 48 steps, half fog 64,000 transport pixels at 48 steps, with one ordinary shadowed directional light and one unshadowed finite-range point light. The overlap arm uses two bounds; the normal arm uses one. Half-resolution edge fallback can perform additional full-resolution work, so the pixel ratio is not a claimed cost reduction. Renderer texture counts are 5 off and 10 active, returning to 5 after teardown. Pipeline-census creation service totals over each entire boot/capture window were 1.4 ms off (5 events), 2.5 ms full fog (8 events), and 1.9 ms half fog (8 events). These coarse host-side pipeline-creation timings are **not per-frame fog time, GPU duration or hardware performance**. Timestamp tracking was disabled; per-frame GPU cost and hardware tier admission remain unmeasured. No default tier is enabled from these numbers. @@ -132,7 +132,7 @@ Native-slice local validation: source/fixture/capture/native-handshake/CI-struct Independent review passed for native-route source staged at tree `15da770ebf0915f8f53abf3276e29a413e00f558`: the reviewer reran verifier/native-proof tests, 14/14 passed, and found no blocker in the supported predicate mapping or native provenance/console/pixel guards. A final scenario strengthening also waits for three observed render intervals after **every** fog/inside/off/rebuild transition, with labeled snapshots, rather than only after the last transition. The prior disposal events prove real controller/target-object release; these additional boundaries establish that each intermediate graph actually rendered before replacement. Exact create/release/live and restored-pixel thresholds are unchanged. Native execution remains pending. -Native progress and exact failure: [run 37005493900](https://github.com/ThreeNativeHQ/threenative/actions/runs/37005493900), source `1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7`, built the ordinary Linux ARM64 host and accepted all fifteen pre-resize arms with actual `device.screenshot`, named Mesa llvmpipe WebGPU adapter and empty runtime diagnostics: off, zero, fog, inside, sunOff, pointOff, overlap, half, wallOff, blackOff, scatter, scatterSunOff, scatterPointOff, lifecycle and lifecycleOff. Actual [native fog](../../verification/vq07-progress/640c103-native/resizeRestore.png), [inside](../../verification/vq07-progress/640c103-native/cameraCut.png), [isolated scattering](../../verification/vq07-progress/1f73e559c-native/scatter.png) and [full provenance with unchanged controls](../../verification/vq07-progress/1f73e559c-native/provenance.json) are retained. Native artifact `11226555526` matches SHA256 `cc5cc8f973b8edc9f16a188f3ae68f1e0afb6b2f508ee4a392df222191587af5`. After download, the exact source's pinned pixel metric function passes these native controls: zero/off and final-off/off are identical, evaluation/wall RGB is zero, calibration difference is zero, directional mean delta is 15.9577/255 (changed ratio 0.99333), and point mean delta is 48.7721/255 (ratio 1.0). These cross-arm metrics were recomputed locally from real PNGs because the hosted script stopped before its final metric phase. Native lifecycle observed 4 created / 3 target and material releases / 1 live target, then 4 releases / 0 live targets, textures back to 5 after at least three actual stable render intervals. +Native progress and exact failure: [run 37005493900](https://github.com/ThreeNativeHQ/threenative/actions/runs/37005493900), source `1f73e559c7a8fa01740cc2b5b24ebec8dfc2f4e7`, built the ordinary Linux ARM64 host and accepted all fifteen pre-resize arms with actual `device.screenshot`, named Mesa llvmpipe WebGPU adapter and empty runtime diagnostics: off, zero, fog, inside, sunOff, pointOff, overlap, half, wallOff, blackOff, scatter, scatterSunOff, scatterPointOff, lifecycle and lifecycleOff. Actual [native fog](../../verification/vq07-progress/640c103-native/resizeRestore.png) and [full provenance with unchanged controls](../../verification/vq07-progress/1f73e559c-native/provenance.json) are retained, the latter carrying the inside and isolated-scattering arms' SHA256; those two images are in artifact 11226555526. Native artifact `11226555526` matches SHA256 `cc5cc8f973b8edc9f16a188f3ae68f1e0afb6b2f508ee4a392df222191587af5`. After download, the exact source's pinned pixel metric function passes these native controls: zero/off and final-off/off are identical, evaluation/wall RGB is zero, calibration difference is zero, directional mean delta is 15.9577/255 (changed ratio 0.99333), and point mean delta is 48.7721/255 (ratio 1.0). These cross-arm metrics were recomputed locally from real PNGs because the hosted script stopped before its final metric phase. Native lifecycle observed 4 created / 3 target and material releases / 1 live target, then 4 releases / 0 live targets, textures back to 5 after at least three actual stable render intervals. The native gate is **failed**, not complete: `resizeSmall/report.json` records `TN_PLAYTEST_HOST_EXITED`, `wgpuSurfaceGetCurrentTexture` validation **“Surface image is already acquired”**, then SIGABRT. No resize screenshot or console.json was produced. The verifier's subsequent console-file read raised ENOENT and obscured this primary report in the job log; neither is waived. Native resize/restore remains unverified and the native phase/acceptance boxes remain open. The same exact source's browser job passed all 17 cases and all identity/scattering/resource/resize metrics, artifact `11225682361` SHA256 `5cc58198f77714817c43c486cf8b83d7b7e3ef23730e4010c1026b2918740c35`. This includes labeled render settling after every intermediate lifecycle graph. Available native console logs contain no `TN_FRAME_BUDGET`/`TN_HOST_GAP` windows; no per-frame fog cost is claimed from pipeline-creation timings. @@ -167,7 +167,7 @@ Fresh local validation of the integrated slice: root typecheck passes; root lint Current-base reconciliation: merged exact develop `569fdb267538c5eae9472760fd71be59745b9a24` before requesting expensive hosted proof. The sole conflict was this PRD's original planning copy; all implemented evidence, current acceptance criteria and unfinished boxes are preserved. Merged tone/Fluid additions remain intact. Combined-source playtest/core JS and declarations build, root typecheck, current API/capability checks and all 346 renderer/scaffold/fog/verifier/CI-contract tests pass. Root lint passes with 1,024 warnings and no errors. Scaffold digests were measured on the combined tree and already match, so no further refresh was made. Native presentation source remains byte-identical to the independently reviewed repair. New runtime/cost evidence is still pending. -Latest actual proof: [run 37046042533](https://github.com/ThreeNativeHQ/threenative/actions/runs/37046042533) passes every original and added arm at source `640c103017d56e56abb56745eb875885c32aec06`: 29 browser WebGPU/SwiftShader cases, 29 Linux ARM64 QuickJS/wgpu-native/Mesa llvmpipe cases, both no-fog resize controls, compiled acquisition status and actual GPU destination pixels. The native resize now yields 320×240 and restores 640×400 on the retained controller; camera and streamed-wall transitions exactly match fresh reference pixels; repeated scene exit/re-entry restores exact off pixels and renderer texture count 5. Verified archive SHA256 values are `fc56bf38d6f3dfababbf424471887abd3992ba1ee0614596f046a20a2d2780b4` (browser 11244876573) and `003e4ee6e591d136d6c61abbad74b75605b6b11dc3e14afbf61831d1bc297710` (native 11244629357). [Browser proof](../../verification/vq07-progress/640c103-browser/provenance.json), [native proof](../../verification/vq07-progress/640c103-native/provenance.json), [small native target](../../verification/vq07-progress/640c103-native/resizeSmall.png) and [restored native target](../../verification/vq07-progress/640c103-native/resizeRestore.png) retain original PNGs and all 60 frame identities. +Latest actual proof: [run 37046042533](https://github.com/ThreeNativeHQ/threenative/actions/runs/37046042533) passes every original and added arm at source `640c103017d56e56abb56745eb875885c32aec06`: 29 browser WebGPU/SwiftShader cases, 29 Linux ARM64 QuickJS/wgpu-native/Mesa llvmpipe cases, both no-fog resize controls, compiled acquisition status and actual GPU destination pixels. The native resize now yields 320×240 and restores 640×400 on the retained controller; camera and streamed-wall transitions exactly match fresh reference pixels; repeated scene exit/re-entry restores exact off pixels and renderer texture count 5. Verified archive SHA256 values are `fc56bf38d6f3dfababbf424471887abd3992ba1ee0614596f046a20a2d2780b4` (browser 11244876573) and `003e4ee6e591d136d6c61abbad74b75605b6b11dc3e14afbf61831d1bc297710` (native 11244629357). [Browser proof](../../verification/vq07-progress/640c103-browser/provenance.json), [native proof](../../verification/vq07-progress/640c103-native/provenance.json), [restored native target](../../verification/vq07-progress/640c103-native/resizeRestore.png) retain the fog images and all 60 frame identities with the SHA256 behind each one; the 320x240 native target and the remaining controls are inside the two verified artifacts. The cost record separates thirty-frame host/render and presented-interval distributions from sparse GPU-query samples: browser off/full/half use 4/4/4 queries with 26/26/26 stale frames; native uses 4/4/3 with 26/26/27 stale. Software adapters and virtual capture displays do not establish hardware, phone or default-tier admission. The real native host console, ready/compile-settled state, resource predicates and pixels are mandatory; the standard core plugin's absent application-diagnostics channel is not represented as a clean observed channel. All untested OS-window-resize/background/foreground paths remain excluded; tested resizing is the canvas backing/render-target transition. @@ -177,4 +177,16 @@ Combined-source local qualification after the 42fa306c merge: core JS/declaratio Documentation links and the real staged evidence-byte budget pass. Documentation/citation/budget unit selection reports 29 passed and two failed: both CLI-fixture failures are the existing local `tsx` listen-EPERM restriction before the evidence command starts, while the real-tree budget unit passes. No CLI assertion or permission boundary is changed; ordinary hosted CI must execute the full lane. -Evidence-budget repair: hosted `budgets` and the real-tree budget unit failed closed because this branch's retained progress tree pushed `docs/verification` to 72.1 MB against a 72 MB cap, with the message "stop the growth at the commit that causes it, do not raise the cap". The cap is untouched. Three retained PNGs were byte-identical duplicates of images the authoritative `640c103-native` proof already carries — `fog.png` = `resizeRestore.png` (`95e2d1a1…`), `inside.png` = `cameraCut.png` (`1bec85d6…`) and `off.png` = `sceneRepeatedOff.png` (`340699e0…`) — so those three files are deleted and the two links above now name the surviving copies; both `provenance.json` files, every recorded SHA256 and the remaining five native controls are retained, and byte-identity stays checkable from the recorded digests. The tree returns to 71.9 MB. No threshold, cap or assertion moved. +Evidence-budget repair: hosted `budgets` and the real-tree budget unit failed closed because this branch's retained progress tree pushed `docs/verification` to 72.1 MB against a 72 MB cap, with the message "stop the growth at the commit that causes it, do not raise the cap". The cap is untouched. Three retained PNGs were byte-identical duplicates of images the authoritative `640c103-native` proof already carries — `fog.png` = `resizeRestore.png` (`95e2d1a1…`), `inside.png` = `cameraCut.png` (`1bec85d6…`) and `off.png` = `sceneRepeatedOff.png` (`340699e0…`) — so those three files are deleted and the two links above now name the surviving copies; both `provenance.json` files, every recorded SHA256 and the remaining five native controls are retained, and byte-identity stays checkable from the recorded digests. No threshold, cap or assertion moved. + + +Correction to that record, measured rather than assumed: the tree did **not** return to 71.9 MB. `pnpm budgets` and the real-tree budget unit both fail closed at 72.7 MB against the same 72 MB cap, which the previous commit's prose claimed otherwise. This branch's own retained progress tree is the whole difference — develop measures 71.7 MB, so 1.08 MB came in with these captures. + +Budget repair, no cap raised and no host artifact touched: the retained images are now the two authoritative fog frames a reviewer can actually look at — [browser fog](../../verification/vq07-progress/640c103-browser/fog.png) and [native fog](../../verification/vq07-progress/640c103-native/resizeRestore.png) — plus the 2.5 KB [black calibration control](../../verification/vq07-progress/001b93400/blackOff.png). Every `provenance.json` stays, and each one already carries the SHA256, pass flag, dimensions and resource counts of all of its arms, so identity stays checkable from the recorded digests and the two verified artifacts rather than from a second copy of the bytes. The eighteen superseded intermediate captures are deleted and the six checkpoint paragraphs that linked them now name the run, artifact id and digest instead. `docs/verification` returns to 71.9 MB measured, not asserted. Every claim those paragraphs make — the pixel metrics, the frame identities, the resize and re-entry results — is unchanged and still backed by the artifacts named there. + + +Reviewer repairs (2026-10-03, source `21222ef50` + this pass). Four findings, all fixed in the generated fog source rather than around it. **(1)** The authored mist had been added to `src/scenes/Play.ts` as a `MIST` block, which puts a look decision in a scene; it is now `STARTER_MIST` in `src/render/volumetricFog.ts`, and `Play.ts` only passes it the live backend. **(2)** That block also hardcoded `renderer: "webgpu"` while declaring `environment.sceneFog: false` — but `sky.ts` installs the scene's `FogExp2`, so the medium's own guard (`scene.fog` must be absent at compose) would have thrown the moment the flag was turned on: the advertised single flag could not work. `createVolumetricFog` now takes the scene, takes its fog over for its own lifetime and restores it on disposal, so one flag is genuinely enough and the air is never counted twice; `STARTER_MIST` is typed `Omit` so no scene can claim a backend the renderer does not have, and `Play.ts` supplies `ctx.renderer.kind`, which makes the WebGL fallback of `preferWebGPU` allocate nothing instead of silently dropping a baseColour. `environment.sceneFog` is deleted rather than left as a field that can only be false. There is no automatic sun: the generated source and the template instructions now say the mist is lit by `ambient` until `sun` is passed, that a `sun` needs `lighting.ts`'s real light with an initialized shadow map, and that a tier change rebuilds the medium. **(3)** `scripts/__tests__/verify-volumetric-fog.spec.ts` uses `test-support/temp-dir.ts` again, so its `temp-dir-guard` allowlist entry is gone rather than justified; the standalone native `.mjs` exception stays. **(4)** The `fog` lane in `integration.yml` gained the paths this repair touches — `postprocessing.ts`, starter `Play.ts`, both fog specs and `scripts/__tests__/verify-volumetric-fog.spec.ts` — so the qualification actually reruns when the shipped wiring changes. Develop's lanes are untouched and no second job or stage was added; the two jobs and the single lane filter are the ones already reviewed. + +Red-green proof for the wiring, before the aggregate lane: the new scene-fog take-over test failed on the medium that only cleared `scene.fog` inside `dispose` (`expected FogExp2{…} to be null`), and the two new source regressions failed against the pre-repair files (no `renderer: renderer.kind` in the fog source; `Play.ts` still carrying `IVolumetricFogOptions`, `volumes:` and `albedo:`). `pnpm exec vitest run packages/create-threenative/__tests__/vq-volumetric-fog.spec.ts packages/create-threenative/__tests__/vq-fog-fixture.spec.ts --maxWorkers=1` passes 30/30, `scripts/__tests__/temp-dir-guard.spec.ts` with `scripts/__tests__/verify-volumetric-fog.spec.ts` passes 15/15, `packages/create-threenative` typecheck and root `pnpm typecheck` pass, and the documentation-link, evidence-budget, CI-structure, CI-needs and mirror-sync selection passes 230/230 with `pnpm budgets` reporting `evidence budget: ok` at the measured 71.9 MB. Only starter's expected generated-tree digest moved (`a0abaf94…`), remeasured through `createProject`; the other twelve templates still match develop's measurements. + +Still open, unchanged by this pass: Phase 3's native box, both acceptance criteria, and any promotion claim. The `640c103` browser/native qualification remains source-scoped — this repair changes the shipped wiring, so a fresh hosted browser and native run plus the full repository CI are required before the PRD can be marked done, and no box is ticked on the strength of the earlier run. diff --git a/docs/verification/vq07-progress/001b93400/scatterPointOff.png b/docs/verification/vq07-progress/001b93400/scatterPointOff.png deleted file mode 100644 index 031989becaf12764530cf1ac73bf656f6a504a9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28692 zcmd4%WmH^S(*+9S?(T$x1cJM}1t&moZ=A;6-2()7x8UyX!QEXNcXuww-t&xajBnh( z_gC-k+H0+vvu4#=yLN{u%1a_65FmhofgwwM6;lEOgYX3d1OEvJ@$pM_jD$TH7#f(A zn6Qd#`bqmlB^!U@zSDSl>YK2F6FZU!5N-Ms1smN@G!c==#f$S>yBb< z!{~#Ov!jyxy_7VAtgHrd^7ApzD=!<*&It!ra-xRbt|9L3`rQxQN*u9PlNxfp8B80NwMtneN|F%y}w+O|8UKr6g8g_{7>6H z)`7?QQTt7Mm;o5x2VO@AuX7zQE-!en;7@QoMM4`3)BlIy75sm1L#+^q?tuEsf934+ zu{p+RT$~SRXe!W8>)Ku%|8Fz=fbi0j`OhQJ4dq|!r$cxh4*l;khjaf}0wKJ7z`P8= zKiC$=^y{cB_#41ytb=F!e^AT&bxaig4<-L=xG#Jad+7Kp7&GuU?VP7Yy)J)y|1JCc zvMvi{1NSfHc>FpBXS{h{3jey572)Osij5)OUvy*$Z6y5@P=^l#{XZCUgf>WpHq!85 z{*C;)8E5Yy$$z1^muSWBz;yT<;Ro<&$yR*%`~Q&!$*BpKSNMNy#(Yc=-KYI`5I$BV zpRx`n4QnRUr}kYrKsd3ZD9zoP`v-`4F5&9RHhzI@2Pam#<6yf=AJ zGn@whFBmsQPdyMHI`S_O(sO73hpqAtIEV_l|H;p2i}rs59!ea6Ta z_A-w0UGq03A4WmkYX>RS|4Z5W|Fotj|BpCn zKQei=l49xqn1Tg(Qx5$fQ~Y?>v{Kdxf9WGnXv1{o-)MZO%!~WKEci^B1Nd+DtoXpQ zZl=GuSMuwKmJ_+3{5#G5)D;k;CGH;v6tm9(ag#+%f7gi*$a%4oMgP>0k5VD<1>P(1 zKeGNOOmARM>lDoY23Jo?M6d9_d`Y0Vf%_*)ntmM$1^=du=|?VU{wG_;qQ8cCNrx;a z)dyy)A>MdxLaZtL$;(06(;vdoCtFq|47h8&OfM{c9jMw(_)ULSpH8uMl&t7sd_3=Z zp^Xr_RiwW}#yAxR|HS9naPlYv!bPXgfqL`r6a0{Kd4*~=Iz|KC2=FFAS=GI&A zk$Max#J0W8TQmp8GjOdBYT zL^nE4Xlco7bgnVlSieNZu-^1f6S@do*N$MSe{BeBVh8l0ex&7}#mv)?*xKcB{DFoh zTG(a(^1D|qmW#EidobB^6`vczZveJO8BKEo7t7Kh+n&j$F0Z$-Xr<$JI0KW@in_oy z#_fX^)(5(U4}m0fa7rP8z1Q5(5b%d*-y2^P=ei%6Jn)&hc<#3ZU0%u(V!KWR67zS# z-k_x|GJ>x>cc&*%lur|`$I5WldD}K@QD~J6Ah2*32cTu>A zxG}G}IHi{4SdWvV+Ty1qg@I)>Tpf-(#DTv*$53r+3LXKmMAWaZon`njZ&_Ki*+1}= zCGM}}Y0s1oaL(8_fLIM&D1j1;jhP#7OQSlqA(Y?T0JeDyark`)ByS~uSKQ6YLpbil zoRF2R*29`EP&YBl+WM(?Tx;h7@y2JHTJotnq|z4%RJRm*M(L}|`_jfHVFr=9FFo?b zM~SqIupajgWt)JT1T-Jc)|?t6r&y!Z3)K?4XaYSo%J)`?TMK$lg<2p5j?|6S!Kn{0 zuQAyG!ACs%ygMk(k9Xvmht(IgF0Xbn?|ZA+Z4$G2XoqeJsQdV9n{KIE__$2naOA>s z@|F2w{crnY_D!|c!L6b$nPO6lkt-5bwZXI9eAkmCPf;eUNVW1#GS=}c$A{q*Q+A8* z3D=nSDZVQ))=6}qPcn_q-hVm4hS;f3Mx!5i*lw9@j$g@n5rSPiR*P{-h<4N$&1;^V z$1Duloc|F=DJw7J5S#A-Nm#Aa@ibgziBB7C8pd6O4@v)QUaB+9K{Hf_1E|diAAVJy z=*PyfNdr%4vXHcE{$0l-4K9=I9$QJ4gnYp_(qGqIqa>C{>%r5rW=b<+ z82Hu-3T2kzZQ|`yo|9 zc%d>tqwVK;DV-fnP74p5Aqg5EiFA5xd5uemP9(ZN z>(9S_Q6lxEMy!OS)OSoy+@Uqo)6-^D2FN1B15jR5esHHoeqIg9939b`r;<%*f1ql1 zy6s!-yVl#SxD2AE$Zo${*73&xOsw8hU}!qz*|UU1+;C8tKF#;mnX#P1lUUFvit8YH zPJr!gmqpb#3>(cY@qES(nILyNE&dL^ks)_@W~|=MhHC|>=DPG^wkfjH?K(W;m|*}=zAt@N+#+BxbNhuL(Ro7LP|u|ujO zgGP;^&15aQCP~0Fft6YElhvSQW2Xyqo;o&{LcBAM%y1{*VcX(UP-@u2lYI`!=M=+| zN16EYbIm(z^*CN(x}l@IL+3dz=&Z70r&Cr+&kLkh>XsbM99z`dM1zvmxFaVLLRfw} zUdwM%Hx^Paexv|Z`?XUu@WyYmLEMof>aNX}@Hge_w}NP`EX$q|FBb%~gJ-2D4DCs* z*Kp&oL96bg+w7q)$ZoE>+E-D09dAB_6_MbCbztSYbKh7PF8!!vhPQd(6=D^)_Y?!U zEs9bST~)u?;qslaXReLm#ldns2gfoAgI7Wu(ZF21fozY3z}S=R`vx1F)-HXDj8h-_Iw@v%JtU0=s^gnmaWT%X*Z@684QD zu1(U85p>)r;PoN?wVP)^bPay#$y#T-~lYisOGHA(=$X=ZhzcX(2m{7x;3aUHj5j4A4zn`8LHOHIFF?iJ&Vnx|Al z@5anez?BihR)ujXQVvh6%j9;P}CL;zP3z+JR**%{OOZ{eDCwAn$ zM#p$IwDzamQ#ohbYo_BID2fPNoqvk2@8L9W%cTlQ)ivUdt^$5K@HI&3T9u%z-|ytN z{rotpSx6QJspIceeq+VTbd4C%GV*UP05+P2>^$6vkZru7b%z>{S-)T55bZ~5gNT3-;BL6{TmC6Y>V1|h;#%(+ta@%QkanBnfizs}Vz$o)n)^Yw- zYL6wcQU!=KY!^ZrMMXCU*of1kk((fz=-ui0x^eNTDIQK2e#x*<3**>uu4v@P5V}Rn zWa+)l+Y{#+avSkb!XQg~nP*u?0*GFvTfIYGYhDKimn}^ry;oFYr%0pA8n$$6g=PcB zC=7|BgQ4@d#|`?41b$V6szq)iO>i0$JlQ5>&0>m+leV3EUxNhFWoKdXcl1`As*cNe zy`4v?F#)20=b4PNLz;<9#LHme^Up2*Gx33zj+Ck4p)7fwGCl@;v6DTy+af2diPz`6 z=tqDbr+EVl__aQA>lEG{AkjM14YO_x!+0nS+l}P0vGXxfBcJs0{mrFw0(NX>g^It> z^Xb_iuU5Q$!iv`Acur>qqX+PK^0g&xnMH=lTe((UtOxJ#_^Q<>bMX_5mkY$7yEZwx zM8+`0o`Hej^17k0uCOSmw7jq|T*g(dz0a2ZYrh18KAmxR1CE**mDIS)#s%m?s`rY` z6h-x%V#>@Vgc`7Ssm&y3@dtE#$q!E6$5qg(B~R)`IvO(9`12M=io|;^dFPh-+UJ8) zrsR0z%!uU5BoU*cU7PnO&Uo_ov-@`;-hw<8WIk5^xu)oY`n4xl+Tj8hq`1e5F=-sm zhywn$SviA4n9EAm;0*;cw15uYk8_t;bPgjrarlkQWZBkegrB!;fjMY#)lQqpG=66De2OxDVSwAian_E@Nw6#hu z#-&3#vwDm1)7rP!R-Xq+g1)h++m~F{HgHy}*q@zdOMuW_PYSMIPHZ^P%8Ra^%oL4u z#Jx%P^4pk%eUqs3`&x5ZDIE}-;I7JNFuqFGEFn_Vtidj7hu%mVMBiklNwnP;(_92EQIs zz<2C%d@bGNGa`yoUd1}IKAJRWBh%1Ks$y=6!}HH9jYIC)UK0|CP5k@~F@>vgRF$4` z;$Gk~>cqgcW~V-(NZXD#8COzijT+xDb}!#V^Akhx_%N0mL5}-HU9!J`*>%rW%+hImWNX!S9tz6w^m7F!Ne1Z7Z9 z)8mQ_efr>b#{m?;I`MLa^5;VlZ2+TS_ov{@&wRmRq5v6y5LvuP^3K3C+ZiDF-jSL9!tGu*4u%iR5`u&kbpg?5*A*Hy2gVjvsOPrWd1OclFmCmqap)ElCO zcSvrDvCdumeYL7NNK3H^y5`&LX(YK}(#~LE=hH~1S!*j0>ZONQAXi1*O z(e0YRfh8*JiXIX+FZCp>kc9rBz^Wd_cnhVz^G z3NFLJ;tO&GKLOuFjz+q5Sei3$z#*pY0R|fl^caCvt{-=t+}j*+QH``X8>p^mA6|if z+tqLGAuQg?cKqi^)o)c-#_h9uV1l^AcA-_TeS67pf$~nja$1A?Q`5d<>>q{>H;#$h zbLou1w#Bj)L@VFCNrsTd(5z`qKroEe5^z)0ygx-9 znsr2+lQwNSej2b5E6`&~F_boKRd$%6pOc-57IG@9kA8aVx&SFKh33E><>N4&LtWKS zGE&*ds%q{LaB0=wEFtRr(9zN-NWIjY3=BA~`C;WI#Q_aX&t>H%ug_jcNg&LSB63Ts zR1;t8b%Vz0*xVt|oSB+aJAdv+F?aYfOKEeBHW2c~-j@^g9-Z5Sr}vS>Pg%G}@{42f zj;m>NhIFl5r7(sx?kg5yee$i9_`=2A)gR2Qi8qhN4W@DCT1&CvnV0m%bt!3$w4qKc z@@E4Lwk-|2YMoCBcUR7Qorg2(r0L!(((5n^o$z7AO0*pJu;D3`_ZG?c)-I?-Fo4E9 z&(^DUHGlE_H+bRbd3f;A*3#B6k!LjnK90z~XS_Y^V8ETSW%93!^ZIc%``PQCWd0;alR0TFjI1Ouyy|9U&+5PWsDo4lq5|!h~Qn6*u$$d5#t(MQ9I#@dTu2GVHqIhgWx}9jse2)m4M;flwlyn4~aBS6Wng~6< z{QNpVW_nzXCtbSq{PYdqtF6E222Mt9~h zX!p5#Z41=E7{{2?31|6{77CMkCC$YQwa)a;NcJp*?djDJ&L|xOGtV7w{1i&`s{*VR zYJRPx>YTAQP$)G{n!zrBfNC}S0FMY$hICm~}aku?3~UtdApi84#34Ff4{`OR_dK#%&vpsFb}=0Y zgfX49GINQF^ao&IXd5NTlXrNTdnkF;Ck-&6_{I0ZnKtl!%ucvr6OmO;(q_}u4lX>M zf(=M|AZH5E2ln`i2!<8HX!t*oN`hqa$x%}-zu@v#u}xdl1-Px!?yucLD3*B@zs}Gq z-bV6SZ+!^WY1`Ju~sPpukNPp9%Kp4Zn8BuBjq=E%XBxk2ztfVEik7-*V{r? z0VXh~x;;bl7Om&-yy*p8YsO!^PKsDg{>e4&b! zkSe8dZ!9JIDC}WwcLq*Ox5kPVH;*KnPTnd`MyD>8nCQUeD+HM8s1+83yK%rYFYD>3 zl{JXoi_Og`9C?L2W_hy%)`6c@!|_gy#1YN!2q{Xvg`>3c@uNdq1c-Cs`547R3Ga^DmU= zL(%|r+3@ZaXQt~apAD`0083Nb@dA?Xp*k=_kM$mt{Aq zP4Qt5pyLUG7|j+ObFH7c9ZZM8P>9^>E!G5$jso1_9cPQNciy`<1R^NorYzS9s~OYT z*2F#WW+Udi2_!}r%-8x-$}M*o+Q_$T+zV(opA4wzN~k0CY9rfBtlp8(hohQ$xX&%B z35HdeUu@p8-XrA8-ggDxD=jUDIe7vQX@=GyArCCn`Saok{b`c;-&~)JLF9PhDGodB z0jX^Pi$VI}nj)`q{`B}I{t zo?u-|&qYc>eHnk@mgAzcR{6ZAziP?e-GZih#W(H~cB27n)d9L9OS?`(5N>PZ4ln|A zPEoOxP}-NL$TRG&?L?HG&l|vW+_)4(6XfbOg?6T~oTJHE(;6$TGeocnobR5H&`c8~ zSDYm|I)&YLwsBo;6v*hiHK%YkQT`Oup5FF+3;)>0ru< z-aPsEOGJZ z__grwzgb3l;HXmlIWre5Znqm@_{D97Q4KR;WCa#9pzstNN>}Mk&MM}Pd4+13eo!Nl z)}K|-*3)wD3;Agr(%FR_orKpVk|ovXR?w0759Hx)eB#Z6x)iF;S zP$6wkjSb3t&LCen8UNt~8~-|Fw_#4Yk`y?*B-RKph&Z`?X{z_- z&z?*Iz+9S%nA1^O5^I{*Q`>Ev!%6=dg+x z5rRg<^VKH+JhWo3UVa0U0k>9Qo(neQoUPg-!xK><6W@bhS-YGYge<*Ga?XA$2Lb`-s>L7v9v zYRzI?%fC^`5PJW%|)2au|lo|M}hFUd0#X~+973tDKr$h&w4ykAQJtd5$O zlWopF`_MIZ%fjZg2VOOerG<>7B)pQp8&M#8pl-OodA``l{(iIwg)RWcs-|NOz)F?j z1(rDLQ;VWb7dh;RcD?mLHfZEM%Mc9YsB@&J^cW=?_2!0p?y}x@n5J#Sw$E@m@jm;O zd6)j=@oE&WhUanLdn-pYFS5g{`yQ>sW{mc<>#8>ua`XALjnzV#ay) zrg6OtvbOlqTw!ljGEt_BeHTl(6ONj10HXg^Y&%A7I8n}d<*Lmk#a5j+9aiB2?IZ{o zZV9n<1n5Gy>yGkh+_ad@9M^mc`!&8PD<-WwoxrrYgfIDIk$-m*JF!A^2(V{W^f}>7=yWQO+0SOGl?Od zX7b-h{FAs9ve#psS7N6j8~cuMFL0rb(=|*coHc7^@1gFKt^DKPdU83f8HKL~eKJO@ zqO83R!iF3SGN2-;J5!lDiNat3&P@K?Db0L%?KAg0LX&yWU<=L`Y__?$?o1Zf5*1mJ zp=p|TNSZFe-st91^l-}PT-sI@=Cg2jcaP=zFJ8k%!m>( z+(U{M8l#e#odS;@`McUaW<(S#$V$0BAXJ>Hx}*4K>S#A8BuV`}2XS`T)C*?pMD{@=Cu7ZPqOr2} zV#*qyNHwS#h$S}noaSBf98vA)>8{d|#4zD;=?%ZncMQ-9on!vR6G+GFz$bdn2zt}I zas9m7+W8B@-$w)0Y8l_juxNcCq zp{y*<$>q(yw_q0Ib&J^}qk@>C9OXd4WJ;Keqs^1%)EaK?|oOw{OTFjCHbqE`OU*bwqCy2>cn%uS> zgRjeZUvJBfAd1(Zv!lt#u;2$!!K8|GTM_A9?F6I;f6(l#e8kRd!!*BwPN?ec0qaY+rBaT0Svi1z_C;- za-a?N8O>>ufLJ;oVIT_X^3u>sT}hsMNrMZHAc|{W@TA`7{vPsPGI|k~Gp_T;&r#ad z5HT&(#whB&hv6+IR7dZ7TOV$Wde$k^vRRr!Eu3=EC1)B;fKOz0y$?9k|%TUq=S7)WenzI?;L zpm%m1wCy&KV+9=PGwvm8J9E+|Z8%;Uwin7=a?vYrCWsQ?j9{y%k6Cf4d{PY|h~Zx- ztvva@QDrxMSxnp{ZRgP#u-zt_)L3Nq0IZGg&ZkLhs8xHJ@~K?gcyGbUQi>73-U12K%{}IWyE2 zg-XJF*&=~RIA*EsWfG#_h2%KFT zY$QPbFrXVj6OcvX54GZ^)oEfp@fI6hc%(q+Vsw1Q?F8bE@h30?kUHUah55udDE;bn;au|DF4={vh7|fRnsh zBz|kyqAe{p?rv6c*F+DSsXQmbaU&DWMc!{+0sAS2ICN1a?u$6N%I#dip;%Y+q+|&M zO?G?8GOL41-_k0E;bp_d%2V4|o3P6^sBWQ%mpSN-OBMD6W+?8zBYZuduXSdWaTi!T z!#RP=AIFx{R5=y3XN}erV6`g5a!@}7^l`9;*rtm_q+zz+ z?pdr`cocO{7C0O$LTB@3c=yyPbSv-%@$#vcyAxld3H45O&6W9a)u*UQO|4s~EAfj@GY+g`Ssv z5tKT_D%NrqSuPLT#s(p4-wcy}g3q>(t%g{KIWKVNvFSWJ77Hq#aEjY|k;iIJbJ0~} z;`98pLY+r`X{cu75660Td-bF2#E0*Sl%#yb8sJ6Kf=SGQJ=XT>YD22x0M37D_?`*E zUG9(~+w`$;zVTEiuDxhN)L;IN6(*JH|CTq1L?lJ?TxdUs&u7kKKq z!5@xgiFbP(ZNc}Sf}jb-#+JK@T3w#EOb+b%py%Kkl5?biRH$;IXg5X%e?-Y)H@MMP zQqdLOz(-v=n7<8ZUEn8MJ`>gkTv{r11*5aOg(C=aM9&Y_IrQdQUF zrc|m<=~-CU@z|)$ZNa5R2`X&lbnm=5hnK3oRkPa^V&e{C#S zNupjV-<1Q$t&w^E{F&=n+|8x8Qw=O%lTIa zw&3>Jsh2T!+AS1{9B!&rhlwGm z>fzIlw-z93KWgHQ597Hm(XL|HdHLl52*h;*uG^cm<5#^Rc^w+v!=5GYF&X3cv$r#s zIzcS3-RNiBIRyqtm#X7BCOD+h(3)CG3YuONHq(s8L1Zete#5gsW?l(HDzZI30~w8I z%63*W2Q(S)-n728GZ%gSdE_L_FQ-?L6enJ@Hoo(SKfgU->Qk>+53^h+N2WX$Q5!=# zJX}nqiaHLud{7E&%&V7~?BJqYsKBO;$qHFK?HP5B;_JJj*KAX6N2LkEcq`63%(76N#A6D2vYD4jJJO&cq5llg87{QY)X+q}_(vC}H5)KLA=j3@f- zdarpuJ-dE#1JkODJN8KEqjHXnYvHSYla3hk_g(N|90J6XCSPT|jJRxAjh5p2*U-lV zP}MRWS-fFK5(Cgz8-fUIvz$*=e6x$-84hwMT{V9TxWgXcs8$HNJ>+XJSUvyNnY=Gq zhqwo!Fd=YN=cx0oe={dv;o59kHSFMyB@Yt4`sxtn)v7JCsEj4(I#d=cLrt;YM)zew zbodeJGH6fgsy^Noc#qRy2$`^cq9cZ7%2Q34uzuf49EjXrW18T3dm71rODHqvJhKHf z_n;}G6?&b(AfAe>j8&8=yH=4*YRVr>ScF}PJm^11a!>qdR%MnseDs4~pxu?rdI0OM z`CF{OjLj5D&ww5^aT(T=W;pJDdjT2zQTqu2Q{o7->m-%{#uQ$numl*kq}Lg+UMcX9 zE98BK8^+&!^GBW&F$!D4reD~5xxL$nlZ~W!fvA-a-}!1Vn#mWVey^)867MhT5xM){ z<`{Y`H-!K_EDNimDmzTNw5&(l3Ay6KXLF4SLIf0SN4EANuOU8K;6)Hj8*s(Qs2+b2 zIuP0Wne=^^Y;X$eZQ^at=hElx{GBjEt321SNx?l`Eizw-Qf3yQCF5bWVGJrp@i^qR zqQ4`3zj$t7AiFlScQ9_MtU4cgf2|dKmKj%5>_~!JpaSuOUguodR7H52wn}x64P@hZ z@|HGeb~9a}jjoiQcRGfFX9G2t3Dag}0+B|)M$fJqnf2V~pBF9C%JP0x{lV^k>b84e zy2m2YLfBgnMQscx96gx=#y8DT9XS}<+k;M?EJ3ot;(0HKtFNp6Wj_wR?taJKCSa^A z15A-3oqzo8dm)fQnF!YS=Ub8Bi#2r!=kC;ry_%UTAzzwWqElx7+|=bPqMY9f+1)`< zAwlPvuS1kU~Vz`4nB4t1|IU}`cGInIq(h65HGV;VLCI*B!uC2jSac3RI6v=x44 zn-^SSj5MG2&PDR@L_&s)e@OoiD9pY^FgG zf##HJnENaCSTzSg4&?5ey?;c3!=!*4;zZ)(+baTWPAbJ}mbzp$<*Z66wBA?ug^yKO z*K{oX{3HLWy4OGmCr*|_y}Shd#J4WLkE7ELSSI>o@>_ZZJA*m335GLfMUDo>Jjs|8 z%*>0qJH4_LoAwj?JKDFl=_j1deP;6YC*Ru?{rkO=_oUpA$ChqgictYFoclAKtnJ}@ zK&Fk{daGYCa_$+lF|nqcGWnuJ%;hBPs!~x&P`2seGoAO4k_9yr+7W16MTUDOiieF9^-ejD&=mJS1Xl9#9fpj4}S1Hs@KkI#~ zKXGSmDU%8=KGc?z?C9Ea(Yvpey1HzxVHy4wfgl=ID8odpJ*5FM3@WCmJ|6E~< zC(N!3c#L~Bn_gmoO>#$ z2xF(V@aQdZOLMA}EJLg$D(UK8$+ z$>gf22WVpA!<-)(6~*X%&|z+v^%zh_K>0xYwe`u$ovy}%(nmu%r*ciq(fWS$U{{d- z;E|^my3NSJBA%O`iCE-()4|z#99hpP>(mRQ2*};jT|AmA#?bImIXRN%IImEt0Eyi|*xioMnLDl>7 zdW@wH2ojn!IbPq;RfBD|DUG`njTNL{H} zMT(i%x)j5Nc5h~Em~3P`@FmaXGM&rMVv7HqRqA**;?8rb!T{nX>BUWgaJ6Rs16F=- zn2g|loU$=zhYyGted?UrU}!!ppiRrvM0r&`sf9ekahM=?K9#YkmgNv|5mNm+kR&tG z>Vm@NeQbMh491X&-`)EXSH3(fMi{w=_E8YWA@(xrXAe|XT(rO11>;yFtRXC?#JSxL z%_wXx*x4tDsn>C6l%|FR#!iG%;3$1ESe2|De5z4w3H5|y;QeJECfzN%dl_dEfvN25 z1aGv!8%abQhtgq5;@mgCmS#k!e9lZ9(km}o znC>tALoxl(rK6a-fq8eyuExP!DFO3Ee&@LB3|522i!a$z}GfRG_9hZr6Cbv z#wmd?8ZU-lsSsw=#!tH%rEU!MgUXtbopw%-jnobKDhDyi8FjCIxB;{)G;nQ>bXvQa zKVQ?3pc_2)kXYqmh1~biBq45CzEN8VoH&{aGy9OVO;#_mhn79L{#ta$tHauVch`Ip zR>}ml)lPPlasngq-hyK>(VosXiDUxv&3GR?74G_c@ zS9!>;h&moBsBByhV5OZmB=^0!C0KNufJrZm!M!4d@p?rA^Z7S3#VB$+$cj2!2A5vxxlSTX_7t*z0~Ipk{)tlX%(v-%y|ZD{4*54 z>Sr(}QuuB0X^n_MQA7?&M$mV1J8>Y;-RWYPx`Vre(`g1)m6^F%-#MPqXn)#6W*%5~qOvP>5H%AJz zMUDD@z482UXHJvW+9W84g}=JpNT#viy>4~dn_@?n#Su{+95l*4=Kgt>XlkK$!LWv( zp-cfKZgyRt1g$KA^9FFSLTS&b(UNW$90cCp)=D6FUpy?TalKzs zFAz;+kR!@zRfjF#TXsX-kk*X(%gyTPwm_WdnU1r)S*ie@B`|bs9-)0qY<){RVlZd+ zRm-gDBrznDI#!0G@V65=H|>}D1s!NUGF!QY1q%AYly7|-Z>0fwz>YmGx@Dzh-WZ@# z)R}F^Vr_p~!WyI#ZaM2ixeN6Q$x@~-OWrE2ek)2-+VOxXoO_Erq`q$1^_PJ2O4|Bes&^XqD&$Q*$ZysVHNR;;upD zEYUlQIASpqrek0UXha+`ckZwZ#?WBuPpH_cv0AQ)V0POG{apUdmmTVrI>YIYsMSO> z^|J{OK_Cm>jDL>bKBBxO+jV z1rPdsUQ7a5{tB_*Uz}f|4*9-Y5Y;lfBCeZc%ubE3>Isz%*p|l4(|YzFYo)a*)j>T` z#D7nG3%V8-^+LUc5RRU6Gwmsvtlji$#rnf*2%WfF+RdwbXPW9*eqaJ~1VxX(lep&z zNxGCGD`gRRyMZiIU~rz$w6mgvz}o{^0g}x)iYAC2c?!uf{%o)bY9YZE8YIV8CaZ7J zh{I+EvF*CGusE}=?jKlQGvC2M7`H?!jo^yS%Sg9Hdb_yGf7veB{7v=AjMk)8A$JlP zhzVdmY@5w!Bg#^rj{>>=GVE-Ld#}qbI#vP8d`nNhHw-K^LD-2MpCW{pnj4U7x{Yo! zf5>m2z%2cqfgiZM)5yM$H2_F?=JpGx>HIxG97hCJ{^@)3=tq^YztU9zb#uH-)YTF2_~V~ zLr50+bg;xj?mIXSFf*~{$yK(Lem+=Z_TkrMadx;|%mYneoTnSsTe#x6&RHmn<+7$c zVaePHee<6G<%IV{CCOzzvbvT-WS#=^a`&qkdjY*`_e`DOM29wd%G24o{wvLQy(D+H zXx!%$j0|A?@^3BNrQuzk_;`Sz#jUU;UaI+#4GHiZ(}!*J03Cyr2tGAw#Q^c@I3@qHXLPQyGG@XmnU&7{n#E}bL@xQs z$0Ob8*}>E5MeEqv)RWh9qCi~1jG9ADQQ-BbvdyS78&$sB34|wRo(SmCxB`*AYUuEh zoO+r<`ms>0F+Dv{{LbtJ|F(bOgPRGyT>ad-NF|~GO6rf60r3nQsVojT=a0(JEycO? zh~pp@w;#{=>6VH22Y*=v;$Y7yzTI6KYqOr`9ymi%9WLv+nL4cuAAM%XXbL}LZ{VN_ z=xCPct|~Ed;E2k`9Z0!PFY|9NfM)dfR?q{JD=1eNNO~%Z++y=2i+TLJ?4ynLd7g>L z1~=CY*eMaUkL6EN>d>4miYaAmr>*A%Q}n|+H_1#LnSKZvBjkZoK%s1)Yu+&}EvY1C zuvWQP&c(Dz-tKGjH79pU7^Xe~e?rXbNVvKI@H2l-JWXq>=)9X*wY{O!(TtNWy<_xV z)bo~Px2U(V9_R=~W1gv$A&lW**J*E_IlI!-j2QaWI;^+XFxMffJtfYampNm8euq$J zQY+9qcq~0i;kocR({`cf#@0OizbOHoj(I+5x>Maw+%gDDN7`uuy7IT z(?a_lb|*#_n}GahETR=!#8z0h05ihUIg6f1-3A6d+H8WUDWs@DC<0N1Nt%t|+5Rm? zsBave%4szV_SxQ(jvJCltM`g}YR+az)&cFS z&8*?Bj5e;<0wd?UPwyGF^mviWOn*GJ%ok# zMW)&2$IN>vJ*A2q5QWh@ISV49C{27A2SF`f&(c}-*2FORkEu!p_PUfp^qZ>T0spKg z>}?P*xR)+z1IVVz5F&t9hKegr$o2MgLWx39OANf%8CfCh)T?7$`n{F~IZq1LXzG7U zR&cgzg0R-9J*q>mzcJt;2`Q{MO9RfwMtc`CuZFZY!PHcsUJ+dIV-aq#YiDR*qhNj1 zihJ78KN}7$>fD6-|i!;DrRy?KJR%=MUsT3^_h_X#T#{E!WfN}s6cnM|(I3yllrdn?GY4j#Dn zOc9PZM!f?Wk-zI{V-IFYNDUQ^JkP`#$iTb{*&boYb*}&Okz~MT*p=LnvVS00p5>(L zEsy=sok!mQ5Ch=(BQ|}uoHN&jEk#U5=xZzqf|+ad>e+sS zRS>TAv!JrQ=#dW-XilTU%d|*LBKo=9<_&Dc$c|;~`Ks0XQU4|d(tdjxN{oH`x*bh+ zqwy$b39}ZG>4Fqv+J_AMXPIM8_okHz2%Ka9(vFk1g zg`_20j-OnFcbu2oBkcXpi(MrxK$WM#;%&4kZga^%uC;5}s%u=zT)7K-b3aSQc$U{g z-I$UkLxS0Eev~A)jZvlj9?=1%YDw}$zI}{ThqwfX? zJBBP#Ds7IhTNLma0Ke(F{0-;LuARt{d~7MLxW0~BIdApKPx^i)QEQpA$68VZdXoeU6X`DhWRQIwesk61E z_fP{63uHVx*$uPjWrZ%0D=*oTHBh*{)}2hB0Y}L4Qp>zcEClt1nc-_!?$}?D#)JZ* z1N$EiiUgS0N$omDo9+JgWxeZdIGbqb^5xJy8m5b_ER;KI6suZd`b6d#2qO1~J;a?d zeDb^48E7)FzoQ_vSn2)#SFWrX!offd85a?c!WTX=fbmo>{JQkpR0Z$3wpZV*in z81m*aS6npb0cHbJ_WESkBCEYnEym45lm$^9K0Xl5OAVTTjQBZJF>}cQdD3;2a5}lx zJq36Ic89fD>#E|q&PID_z#ktf9&*Y*^gy+Fu{gXWY*U$jQDKi9C=N^qfF{2=XGv(@ zhMGo*44hu=$O}|0&(CsA{_e8O?Hd9sME(RT8EMC**fqGXX{+1q%FP;nff$YiO{93r zDDa}+Q#g%2dqb^#E-&IesOn+R#{)Yyqp9rMrY|GyyY@YzO^cl^iy^{c3yN6=ux+ru zesTzR{oJVBl5`Z}{fR+%{cqflhTbdeJ@s2Y^)frdj=}>(JKtIADo*fy4Ca==ex%Qp z-N-cJ)L4s=)4ywS%SDBh7mQc;NTzY!#aLGt7}oVHD7(Bh);7dSiy>7Go02Syu(-b_FEF>xsa=cDJQl`oou=;5f$Iqzr#WwPX$30r>O zhv2+~SRZl^SyW6`XpY6+Zr}P&IKLErE+PErPm}ZHn%e_-CT@uo6YLB zVs>xPknRwI5swbF-7t>}OmIY4EP38CNfv-1`gsqfdgbjbdXHfOM|1t(`(#6<9?4y2 zoUBTwgk(2)Z{TCm%*f++;OB_`TzBKwmU&sr_-ggf*6NbgBzFrk_PnEg>^3<3dzd~% zXn1k6y$QKbdFoi590y~bVPR=duHe0N}Whn>c2 zEe7XtyOB3}BaR15*M(I>eMxsGp}PR@*YU$2*#cW9om^aTntBzQc4!}726Pm-npDc#auDUrr78#X+L#+7EljW@ z(L7#ITFYO-O-7UbY+3ysEKMTVp>l3&R*FFCiiN;X=n%pT>TU=!?oOd)G zpp(aDe_}O99}4#sq1;|Kg=-{&t{2xb%`LZC^4@bkQvuxy`too@$&AJ-a>YA80ZkLk zu7Vetkm97Y<1BL)-^D#ni&+(?`%>pw*IFf}3|%-bc1ZdyUs<0be$6kHHEOy8WKwRb zWz2s*%X~L!>`Kkw)+j71m?YxDRQ<+nOEXAN)I}g-DrqbLdi8f1lwhbnWeYf5chFAj zK(5U1`tQSSV;POv8J}u@j_bwGqLxRHFY#$w=fetlZWQ!ermqPWR`s8Irj1*n!suDo zljsUroomNlk&k{xroNQOM9NpILsZ!=BIw5Rp8%abSx#e5hOgR%}yxX}hP%4Dp(EUBsiLFrvN8;?ZkaP0-({%WT!A&^n zr|xV?w|r~I4+)+n3F6Dog%7S14H&TQfV-USe$I%;*X>XA5|cbGDkua|#sxOmW2c4a zkYNbOW?$K-uM7j!x8CFusB^mTUaK_OT^CB*5G*q*;@u6FH? zbjiiVnxh&gvZGtBE@x-uKOt_Rj8|(>ru`~XySH8FQ{6A2dGH{O8F77D`jL{fWO5eu zq=}Jsz$TKWyJZe+tABU1mN5a_zYET)L?U=JqE<3v1q=kF-1_vwaf?*B1u8=-S{cOJ z89ctwt6A0w$c&k$Msr$8#~Xb+L^1K1vpE&gnMbrW_^=wblVNT-)1uSEIWS-E41_{p zN_Ztudp;V}J(1-r&xo&dB7oaUi*bX)hr)FeXypO$?dRtS+d#-;hhG_O#^_o^TF1h~ z^+{O1+il6zHO<)yA^e%MBnnNSI-^5@EquEeEy)kJ8x?vvaM~UQ{|iYsV-fV%N(PwCGwZU;UEq^Zvv4!S06R zB&f*f&vjzgpjJ!nJWb{Gh^U-HbYh;6gj;JuwSm)M=?^|tuYtUnGxyp1i0n#au_cA_4W$rJw$%|CH=bng^UVSBEDn~nsv1|1Ua#Z>4i{NrJN3RMrXN!6wA+r{DBLfLfsc}tG1JX# z>s=g1MgUot@efgC4dVLSrza!*3;DPz5xMeNsqMv>RSGS((#`rc8ei57X7j6Gw%p1N zaMtFtOCOLp@V_%g=BLYj0ZE3P>Z;ubN}man+ z$3+6Sg)dUCK(j5NNuG9D#%G$e6mHwV+2Wf^x=)0%doHR2RvhJ}2$dNk+C}+ZI+AT{ zuM62Z9l|qc(QTXhJ*b(M8o8Zi446;v|5aq{m!7NLDDLbPHuN_`mh@PdTT>s&Rx z2s-5&DxxDlW{MzJbOlEGso_BJ*V&=wbP5K_Ynv)NifKRd2U=_xfIWFwcOW~s?fBk^ zDzY%*7jtTiF;mkAacQ^Z-A`$bja=@*tHeRfWv^!&P#*1`TAv>MkQnKYnQHw*CI%Qf z3Ed;uCE8uD9kLtWW4NSi-=z^YoGj^r--wcT^xN^ovgnj*n>}_{{4M|iYV3=Yy*$^@+o6Al~687^H%X+hEE_!qC0gMNAC&;*4N(ytsF3x7N`g@f@QpNmrj zoutcA-mn@95bFu)ClGsoy;x`}gF}i6>S{ESA6KU49@@PpN%cA=t(~b+ST|&G8e}P+ z2x8~C085~$ZA3VZr^2Rg^n-`2o@9sKfhn#gbZv-f#lY?CG`84fgs-)cfNK}Gm3r_X zZqv*k^MYRmSKf6xz5PuEU@I2#l}g$y(sgw0VKhRLS1Gui0o z%Fs=8H<%-2gHO^k-!9!LKea>r5Q-j{2cq}ivAB=t9)M_8oEDngCUM~{9Cue&MsBkN zh3)QERgoN5jjdg5E`ax6N*;t!zliCO#Sd4`%6MZSEZ=>*l%HfvsaP+gV6Xh5Ma!Gf zW8mTA2XJOrlKO!2W#gN_4tl)9qjH?44Wigo0Yi|c=A*mi2_JMQJD9&Ey(Cr>GERE3 z2^rmjdKW38xE6Ej@qKo764U3q!$#`$!u~z#4WIAp&pIeHzsA1H9qYho!hc9cdt~J{ zSH^f^{%F-$m?fs->jQoL>Rq(Dxf(%v;Crbua6!NH3sM=tXa8rp!KbB(VHI*Rj?N>ZR$ zF~ko4pv)t6`ZKmlF7E&kH_I=Jtm`m*cCL;^hQhGt>Ur!}Z4VnyV@2v!{kNi*Xf?BM z53hB_W>cM|>ve{rx>nX&7&gM_cBKfIMPJoC6pl5F_!_X-Tiy@P-ewFQDJFBx6yP`0 zd9D0Wt(Um#aJjo%EPDjeJ0m2k7Mf|KhT(V-GfzCYq~F|eGPwjAdU_;ziw^PI%G?~D zfAJIbYVc#;pEGr|s|6n7@&!N69!>AILi?>U`nhop=G)N5IYp~et6$8#0_d9fFqyeJ z380(hp3mnS_TiW9^NqEb@j%o6oA}cZ((6$VW#Z4xfAVPQzIYYWQ<hc5Ru9EnwyW>FtG0Qu1~`)FxC1~yOFG6K4T zT)`sKd&;ID{w^beC9sG2tYm1W^aO>*w*xJJNon&)*%3uE<=%T{K2&XEh@r+J_`8b zAI4t9P z2Z25F$~rFy=r2t_X3gEUX|>P86n*B0!~suIlM|nc>-}-~2qBc)hbtU>IVWUWvllsNnF0&OPP%cuO#1Flw`#y7fTeJ zo>)(N&qU>iZ}fkk@?Pdz1!}m#71K9^mQL)o4-_Z8@f|MD8-=s#PlO$WXNK<>DcoIh zS6zVWRdUrqF5P=agXUJdupS`O+kHhLR)3reXy8K4e2jVAUQqVH*pW@&ljzW=+nph5 zsp0+lzBl5_AlHk$c?*8go~=)!bo|mSh{H-_{>CMyY^x%+X7W{%0<9$@S*Ls}vQ9>D zPgj)oUkDyNjC&3rh#0A54HkDJZXyi^Ro0kH$Nc^Szi&AaZpmap{+Be1Ar^KNZE%*H z`=ZWwj6SV9<#o>xc%H!R4MGRVOT28FsSvl71Pa#N)peGtXmRLu8(MepF;EOBOz^P~ zmlUVmO3t%bU+N1gm_%FDyr>)XQu-~c&^VenoF->nBCPF=t_iN67)kttVDTYt?}xan zI?bd+qqyqaB%LTa%wF^ME17AXj+P0!!7pFz+DY2!*c*_3frk~t4-Af0h{Fk}Edd?)oI-|r5pv?Pqrt7tvHM>8h2REQ?}IJ%o}B(?*u5%P zKflT!S(i@L+(lw!o#EbOtIrK1CT{eWPv|0^z{>!Le;-eJmRuPz#hcdF@KQ9#L&ucQ z#i~VPsRGbo9@a2an&z~quS*ol;r1AQxm{XAmi>XwiLur4Xq1Tp$Cjjad^Qg7``vjD zxrh?3V<>kfs*T3uC%{KAORv*Q?do}@+U8?k%-Kv;SaxTck=Vkn-6J@eMXCTWZM@ygmnLG`e0c(++KRY( z_t~wEd>I0@4Qm%(5-gLdZWu^-7UYt0DbroJj^(-){>V^f4sYK&Z=Jb1L3H;6UOcOs zg}U4~Zd|`=@r7LB!A1gevSUE3{@?ED#OkZQ=%p0h%mRTjkaF^{qT|TwEz*jwxOad# zS&7e5jo-tMQ`$UV(Z_H38|NGJ6p4pPkDIA|<4qe!gyrL9%BbjXkAqM3kYFewka2iccN|qohz3| z@rs_U)u1u9UM*FNPawX60Tf4S`%2f&Z!Ruw?o(Oj$SYalGS+40aFV26gJ}=RKu#g< zM(SkPul}^w`&aP-A1@(nV#nTDbnd)}Sb3cZ%v zKeRU15_Nu6!9Rwn1E8rtx4GYh$@naOTfYlzln2=H`sDa z51T_rcuuLSjxkSUJ$3ZMxSejb#`B2FM+J8=f$h%UsTD!l_s*JAF}CTEU64E|E(z^! zdl?w`r73MVyE$BzU^0NAb=;i7We2@-)tu@sW8ZpwFRIt-KJSS1Zs~{@C26%BTjwI} zO)S`ZRl94fmD0!l8IXBj&mLJ_nBZk{*Sax>#qf$A@chR|-CC;S{lZPFqz~vV%}HUK zavU^yj0N9pV*!fsyZwI+r=bJ$w>7VVmdKTy)4LET^%)z#V9nv9%6@x&{1<{VzaU*` zSt%W`l4ngi9mywp9f&!cm+;yJB&=vsR|mMr zGMoubp`=X|Nm_Puo=vIUYT4H(8;B$hQBmE@p|Fyy^cpX)#-;_%+mWvO_{8~dn0sol zp|QIjd8X8r1e?_ZVS#MU*EmgS9m$*C^DqMNKM$T$X6;qyfOa-*d~jVeY|(N=ks?_m zz$FzwAr-TTWM73$hdBjSgtC#F!5S2a2#>AD-m@>YnAZ=zP}v4zIQ-dAF{Gm=cAka1@QaD zbvp$J{Dgz_kM-k0B^bKe@tGlvYS(vF)i-XfOMmkQZBFjy>Po~H zB}Zc_2He(#YNqcDsU|Z)`zH6(CbNmhLfM>Wg*a!;Ye)}_BNJpVCe=aavp~`&Dn2y( z`IqDCGw>B+z9XtW(+s1X9(YYMnBL~`cFMunBeeD4cjDaB_1eRlvlznbX{zIpx83&) zyRL5k$X3yE<`b74jGXfZVvo%bcRYTL>ZOzF z8j+E;aszTA56aIh1NZA-hRv1dVeJ#?pNh9^P*4a0{_zN$D``T$L=w(d9>4(|n{|mT zGrN~%f?f4?6w#H>sBBn}C{)NImOjgOlOXR&hLGK2 z(n=@&l zVO{JbnO`3KVfl&G6mr&ZsQvXQ(bb;6)cW+P%l6-Cp}uXU%}z&|Dqx<2Zr%B`14W5a zGtQF8+{rP)nJFw_{iM`P#{Ent;hM2H-%RMx#1;1#R#d=oI^(7Avpa`gD#h5o4vsYI>F8krOW$Rs0?`d@2f<7(i{yfiZLIzEdimCF+zW zqEQ)6Kc)&ws4(nJH2UQkdl4`6Q6|r&3`R?t^=)}of3P=f(gY^$xFrB$v}|oSeE4lS z9Q{c7EjvVed1o?ZG@XiV2Q-R*pA%4anoPf-ZpMWtuK=rB5kKj-cud2-07-EjtX(p9`r6qouHP|FF$n%;lGP_~C8+ZseA7Y(RQ34W;fd{X+$PG0S(!S*zaUA|`!fIn*J zp8TdKs>>wVj%AWoyw(%W_~@P#$GEFeEqe8+PVSkHx&oQ7ypmtKDa$gSB)uyL`+Cv(IKC76UKBm%zvT=M1OJ9->RhlnhM;DD_a5H{SR9rq ztod7EXUr=yF%zXdYaLa{EKw@qT-xi;GdnIlVB-@kbfGAo{T|aWXVivm377(d?2I&r z84}e49QT|)AN1kC&W=P=I&wJSio}3^E-Oh>?ZBnC3Rmzy?RG%)T3PuV_5v#R56oue2axLYI;=qikli=~QKiF=P?ImNd!*pymbo_IKFZQ5ncq zquxOw-v{^mMyFaP6H$=!vmUWOo`m0q4XRup4B<}x(7#6-W{{4t3-2XNfZn=yi0_n; zT^Zu7!_Dr?VJQPX@1ZzycC+Cm_Nev|={`SY+A$j6r>7~F%Ok%tPHK6TJXbvyOoO_IFn=dg<% z9Yr%=xvK9+fE)}S%|?ZA4ZU7|+co*?Q#Rr~R9)aptox>)5xZ049w|o(4?A55JO$vd zfj6bbzxz1Z)8-)+H5y&?%EmiZ9MEWv_6~>1S{DR|?Hbe{=+ni3oC7L!6mcmhX1;^b z<~iM@?Gg~_=qw__*%1vqeKkbhPSoJ2OP=o#NvhXH&q-BtaF$E$hr(m3aYgd^-k}E+ zj+K6FtLQ7Q^iIVXxz>DUvz@&5`}j+Paf(!Z^zHW;_{*`~tKTjQFfkv_Rak43M}G#z zdjxtz!l4HSj4o}F04FkWV4z*Ojnej!i6^mx&M&)UF?HOwv&Av-Bd zJLZbLrSv(~W;%mD_nERO=J;;{Jh&cVGImz;_Yio%U~5k1H}zMhq=bK@W9w3r+Bw+j6XlH3Y$4pgU_I4mE1Ba?Pfq%{m3v}{kh-rLNHu6jGKH*3`dv+g7A-Y* z)^@&eGT>PQ>~mG#z$Xp|qSF=DWp}#7sJ|$8d92cXVXPdqxPjheUu(54po(inr3TU2s-;=%K_RixyH;zr@mm`5@crB5n@b_6$} zv}d@D4t^1*2<7jZt^M}!Pn>Il?-05AFD9sb*tU@7PzT9x0Sda|d_n}&Cl*}ANlq`X zVDD;`8=;z8$Xa>Y?^y-V;zW?CrAo323U#j4N4mEJtywvXF3*2d8OU zu~uaP>(ez31Hk23RmKE0M?~C2vh><%W$=g>O#p_(+V}sOFn3@oAH<;UF(-R(khN1k zu)bJDfxFoWS@&QXMpV*!+Sy-=y&|x0Cw6D^Zn)6Hg-td-wd*(FQMDsnI{tk$RVW7g zI{OPxBKdS1m6-GP+KVAle%^we%@qCC*-C{5K=pd{4BfRU zaY$*YZjX7y(^1(T_orGxRxe@5)|&roO~X&#0$;)J{*v(E>8ka)jEbdcmp`ia-IGMl-d>6B~!5?W%Et1WH zdHs-Tl|($gq&vRLb@FNPT7qXqG^ux_ik4aEr}^+e^Tqbmm1$4bKQo|0hnygiO?}Qt z?Nz+uV22F80>sa%!9vsw;tm!Feww8vq?q;Y1r0jJ88Z`Sd3!Kg*sGXB;bAz)w@WNZ%R~IXvn~Js-xh7`LRpQCh%~i2y zGREANd+D9UN6dyp84tSFB0!GS*Z1L<|3WCCDCFyHtYXuqk|SA<@Ym}GjmypbQ_Vsu z&ABy)f;-FB4MQ7Wda;`D$GTuD_?>HP2L@*N-Z=ehC$o-FO)3kkOGFu9 z=s9S?l-62xz!#`EIQ^FI!R+E%lFS_=^9S+)A4z(1alBm*$t*N4USUgov$VEB!yIU@ zs>o2W?2e_Y7p6mmEssG7#tNQ3GAUe4jAT`bnTC94N{eL&Qt>06bItTh@6ysta0atQ znH|_kw)~vf_YTRKL9&?Sn3sJ@x~7{ne^_*WHo9YtZvN?31p3yr%!DcHqh93c zcrIFEIxWLD0veY18dL)=$c2zf{`^kmuHbb#ru72-1z>s0fUgG`{=J+tUD1V>@L8Z;{yjeO1oK}o{tTsZ XYm6iO48UEBp3(?2-vbRQmP0DF9Hz|5Wl~C@%*MX z{<8}L!Yc$>DG7D2jKfal#3TNMt(~!-75iDotcv5&vSysAviYMaL*}|xi$=9#$qmWY z`N<7m(wjJ~eJYB}>o|?{O<56JddZ!>cbx4kkE{u>tzf@G7B@`jc^8L7{Wkdh%i#CB z?Y5N9kC(xab_C;p{qPC?|I5?=Fa1p6_gzoE77)5i*8mr~3#VB$e@OAX5LAr2G&SJH zGeFuEvHKOW1Q>t!{>xniZTkrMUuCT~yS{aQBolY`c%;91O16PuEkGzdh` zW~aRXilsv$h)@Hc&1a>XxY_%6MeqyY-o>8pPvgIueS0pI{!b0;pU($JB4}~|Eud9!<>`fo0e1m ztpc(F(GkMmzii79Up*0DmBd2&7hul-{jX@{e|nV9R`^e&XH@0Ki~iQ-?ehoZyZ<#P zTmBzQ|AXECE2z&E?<()Z{{a8%E30L`os*Y;sg)3aT~^6CxigKpyX5}| zm5b;4J;i?B{qg1gmKxe58pW+?h4kp4;JKXRV+ zb^V9LqM85hS}o_qCT| ziC(xsTn?{JI|`oT zN`&TJSsm4Xf@xLrJeTqQzm@hhtD1nnVSWba|Dsgg3!pN{PdWL2qI%P}>=5%md`P5O zRonXVAC>%h|JRiNQOaMHKv4Q0!X}nYQ2jgf87FSc$|tD)alTj+hKS5RO`j{%+5bl8 z*%Q(lxqSb|4)d9sC5)Gv{|-;ZAjo*(|3-?hjOl-^RtsBE{70mS#xB+F-@_6B1@6!I zU!DI?S6|YyT(VXoi|FN?pwaF+|J9w=j1aod$NH%+a&>OTx7N>N8M||e0RA(Xx;|xg z^ojb?JR-V}zwOFSK7P6K2o{XYv3z;?@V(DuJNB7kKHpYC2DspMAwm@aX`{sQw34ee z=(|(Ts>rOfyBa-%*{OIR>Psgt`Zn7y^y#KTgbpWd-53rbv5xxaxKoBK`3EZqaw1D+ zL4kn~&PwC&86=sEGj`LAA0<`^7^aI=2XoGa_-!6HUqECbN{Vl=FynH^33l(Z`b;dq zI4B5`T?9aWFVP{ux!*uU0E%_0SOowoyU_H@*mAX@gfJVVp(wjY+LzytiPW1-^UR^h zUIoD$Ep!CQRSCy_B(a}AJu|EBVlGySam|ZoOy{q8&m8K7Wt!mt+Y@-FT(i93kZQF!BA#e&2k zQQ%kbazJgR;fl}Jk3XTq}3@*9BaVZzRl<#CZ|FsUtOT+|JVS+3ep zZU*zNB0=x4vGMKbzfp+ewv+PTloDA9ew`#-pM7h!mw5ip=r#ydxiNjIx|54h?2CDT z{ru<_6$RQRDT(~@ZN_ZQ}XQw-ED$()m+XSyo+7#UG?3oD#Sq_SQF(n{a`F}}<66E!;U3#v62 z)NxR@E}r({<#nFw8Ta-)UoxY@Ayw}@eO!@q_TbLc@ozBj(EAF# zit_ze0F+(X{?fP;$r?e)DPCJr!-<8j@jj&G9 z;3`9>2>pGh2xNjk;M+TU%+c<$7k(M2dB1Mk3$4G zC@|cG;}(Y=dVb?w{j>qhCfSi6gS#3XV@}LTsaI018CiR4-L7lA7M(fhj}*Z@UwXjU z)y%5*naw4UTr~wS&Xnbps?7YDp!FN{%VlLUi{pa9Ar+%>#CidpGiqtBh_-s(5QbQ} zvmh|Py9YC1fPb~Zs@2TJPNH#jTJ|Czmtj&@icTreE(#1d>wBWX$WPwT+z?&XPt0uS z2lXHEqSP+C8RVI?G`tT`V4%Tt3352>QY>1;G#lFL%h|~luQ_|ysY92kH@n-T^I7HS zBi|Tvd#O3L_+S`>~@^A|v5urvxV4o<*V@zsaF_>+-=9#ZqoVnlXnix2SDcioe|hoFMGsM zADgeh*y4fnU|KGXYCm2$tOHqOenT7}-Hz9lB_+)m%Y>md|lp6~?mk1WZ?B|cBwN2Otw zT-&gSMP21jQPtcT#rLk29_HKr!@s99w#=5V?F{!Ol|mA1m1+;i^n?wFMIu=x!VZ<; zY>DBY6AZG~mGF-oM0pRIl~)Ca?CUwxX*5*#uPaa#3TN#WUzXZk6xjZ#aJHlE!ez0# z*Qk7I-m1GVZ`5NP2;gfC%{?)}9OJVVpW!YgJ9(;la|77;fxA8B%BXZxZg4FrwY?agXM{xWj!*6Uw0Cl1%mUj**ggd(*lIUI0A877+L{|hjwSdR2r`vH!Y`w%W^1foZ!ab>>wOno}Ag4}?Qoiv-q_NnwAZ_p}UOTKYb=-Dc z&InSxM@t=U@n4j&Tt6FNbpJ8-=LYwtl8t6&oiA|@!Uku&-J%(^!`>uayS~e4jDMd= zPrP}GuH^cCj3C0E?8~fTnmv>3@!r9EY8se2rNwFzg0?=VURqnSr*9JojB_xpP;C$M zAIvaZAkNMHiUMhV3ZYpo;vAs<n)^0)rV_>R>O;o~Bk*j7@gSCeL4x8e`c=D-w_ zsaA#*Jvy`oWzwy@KJ$qNnNkQ1G9zpFFiE#tv*J9gS1eH z9y1(}e?piEAzjxyVhN|LdI20a|JMx0ZYka6j!+B}_~_Qaf}^B$Z^Cu%VmxsA+D^TdmF4C*?CX)NHJ8ZI$dY;UX+w=P zt-unez>=z&dH#l70*l0=zDXsf99ocbDi6A*n$Ww}nIi8Sr-1dG(#KQ20JHKxd&Od5 z{bZlp{Sxawg)Wgh44KYTPhTb6bdF*a7Y(nu!-9XMLaaw4X%f9CePHbR!IS7jsQ=cT z3q{c6&86j64kp~fz1rcnw5H~Hp(Q2N*^k$agDcFRdAmdX*=dm6{$;)H*}aEo@VUI z9@|J;p>VSfs~b=~JoBjr8Y1}Sm)M(Q?KhvxKOmpv@srZHMgxp;Qp zRfcqDQM!uT@7G@`Z=!O-3<67$>5oAX*TGFDS6+}2XEP1^r z`Ue_trnQ{)v<1$FCz!pfIf2Lg81tVeKylukK6I+@Dv$nIW>%Ym;g-62A=+vuv(gso znz0RHjGNP^RUzJS7r+aF2>olmJXZ+%QjGD?*6-qvu`mkUalg;umfw~ExDOp(7_g9F?2?HfFU2<}PYgP>JuDvC zWsMTyB#W?OPq!(r_}?)!bd^>YvhuriabG^pI=Ri=GZ9shcbB4OyP7ICkM0x&ui(Xx zN#@fOV`UVni=MIL?h0Yzw0zAME=pW?I-lA-cssR2HVL+zi2${$HHBPoCanw*YFs(+ zw+>BHErHC9MA(Z&t_z%3*k)bmr7U#dqUqk6&Z1FAB(cK074E_mIkv8TY6h}8{+#Tw zxH0)ie{RKPO9R^1AIez+&gN(elRAO-u4^HQbWSIs5i3T-!CUOi$nCs{7rbOl*29!mGt6t;CaXU)3S9Q?&s5!U;J zW^NEfGpbwlzDyX_FoHa(ifxs8?H%KJTtiEsxoEq#Wz=asS7bh(7MXJOMqi@L#!rQF zIo-doCIU=31olqT96qq@96Fr))|oR ze~oQFFxbx*D&cH_19V$lZjSxr?+THtbR3vyfh&c=I=1a046l)au@KZi{9iEFNc`-f zE$^Wc2Wje9CRec@p$lsYQ8yIY%jNqmxpqeq;D!~Vq<1V~&$6%{q_RD)z;?p#{JX#j z1t^0*THz%B1TAN-NF*GHL%i^rFqOGrG?dmhH|*!pi*j~X=Hxuaq0N$mODq~_{C_NF(Eb6cb;hd=)=s!sMD4lPx*?g*C3iU{fy%e=pZ^h)v^UoxK{>=BJ8Sjp^vE##k6plIoDl1mX#oZ6s{9ezjn-q+h%YSpXi1?W#> z>>b2H;H)Z(?1ZAj|EGo-%bfqiFAQJQdV7odA_Wo%qvOQpxxSVEueX#89y(@YOCKl7 zP5IMj{i1%&PJ^_|dbS!5zc%!5%#o3Fjq9emrs%Ko>CdqYEz~Rh)I{>mjhpR9Gl5+k z`R9gkR&}=2@TB%yyR49%H2R4fxoXC!_UYi$(dJb@=g%!$b(P8ks)&z?<*qlv>x2bk4~{}Gb)ui?tC6QPQJB< z!Wx7t5=Uc%v^A*9o>1Er>YGD60i0T&$-?nLg;3fpvtNw6Cx$?Q=}_aEOQ^-YJ~ z&-Wh$b+-pyz}W+>#C{=2vu^c2eoQC4mvCf)UJ=_e^a}`PED)QH>No8OTTW%*p~ne` zb#aM(%`ar&xrdqt*d`V*S#{C8!UDEcAsGA93yqr^?Vk}A)wB3{8D{JSLfWq^8{IrE zD}#k&K_uLB8aO{*a1bbbmH|X)#AP!8Z$1v2v21G^6p^aM(b{jA(+kyhL?|3_c?SQM zc)4&iPaHjTSk2p7o-#Npis7vDYnT?Jl3wkdeheEQuO(kbyPt2pZSSxB)X2qGRo8uo zO=SQ!r?T{h3Pl}p%K*&i)TC>8jD*py?@Qcue!LU&ROEZI>n-m|)rsv$9YnM{Cu_TH za@H{K5}97vC9trgx3zZMJbpS4g@pW@mhM?4b61gGueCzauQnMK2d@-V?GzsJZa5!o zTG-mr4j&$^6B+J=?dA<19+~8pPdK|0nxc(t2pfOZy^)hs0n$WtYumFnu5)(P2}QaW z4j2$Z%QgD0R70FyXj6tWWiSjV@|N94Z6+4`s)5AK#P4^JE@u!&E^(a2?!;|7z(dm; z(f6jp_GZG$kT3`t?*jN+7uU^&mt`;3<<%qqY2O0Ba%p`;UT?gn8Sya#k%S7EpeFHy zwyI;2WKz>ei$YDGl{1;Hp~$y|&&M9ZVS`bOt!7QX20Mt$i%ZDwMns(yxJisQ!eQ=M z_14<7d|3`AJAS@j42;7Z?p#Xol1fRIIOo%JeoSxab}twi47}W`vLp%?)djnB3y&^Q z{WLKX&i>TH5WAPtaX)IJk_9S8+k+Zt2t_fJtdH;gt{d=RI2{yDa%|+Mw-AReY*Xq) zdJWVgI2O|lRsj~mY`aM8L9#V8&f0({3+j8Gc7=0a^SVLlGk$=x{OBz$F=4-fXO*CV z$3u?;wd=tp3soA*KofD0*@OOhei?Oqmm8(6P7H7CUFD)dh#zM@0jD_XM=QUpM?g)kTpSyH^sQJBX>bF?DmvwA9LiQ<_a<})A265zs zsaxfI1l@+2Xkj&k>)jxiSBkSwGNgtZL0$;rQQ*iei|={h#Pr3EtSCO7i*dY@O@(Ob z+9((4x`x@Kem|g@lVyBlzj-(1099CvFqza&R$8Ify)nG~(J*g%I00883Z0eGl=xe} z!+S8BUW9nF`)?O~CraBwN0xGDi+W$5BtHr6KDr=IJX?eXNKW4jGj7ir|J2h zH!jvwKZ2)5=6Jg=gKU9$F6rD$E{USFBS5lSWM^wa^I2U3#2&L%b+Mt}!So+$E0si7 zEslpYYjLYTgl>nI^w5)wwy3lM?%4(ZRbItGC_rHN)7x z#~TA4Al5vi4=Pey{2XVHN4W6|UoP zX+Y*(Zf}9I`axR|#?zn|_-57~6Oa61>!%&i`Q*BsxjR3hEXG|jHL=A!031&}(!wCW zs%o6$sF!Bk?oWd*YKf&akruDnZ-VKm)1v42nl{zwSbJcCX}A3)F3TQCl z>M>{XSWNvdWAkUM(KmZc3NDuf1v-WaJel#&j>)PK$bcd_OaAfoS8K3Ji=VHb4Zhu# zDO%EuVh19o3O^%L=$)zd#mS-Q)GpJ zM1m2I5!p_#UgegX+j(?cWbdK z(KprBjV9!R#P5ll-m0bU=!qT(JFoQsAkt8c4i?n^r}m%`6kXr&i)6iSSKIEnJO5DEePE(s zxqE>6X%H1$%GE}x>NuBWY&ulL5;dOq6qnPzBc5$>I8fRIM~{1lPSXjIWl$rScgR_{OkZx zhUPvW0wD;;es*;0MkCC zP5#u~-<_vS6j3vHWRH@@8h_ijtea|Y8v7|=nq0ux5&fW~T=>19mI8M1R-@F`krYm+ z4-!ZKG z2VLqhR-CwH)OqibD+l=4+OLqgz)o(zt(-e2p?X4rnBmZu6+TNf(M_iJxBCuXxT8i< zqjHsBk+F+?4+!_@NGEW0D>leF0}W+Mu$7`}4R%$Ov|vWq}~3-layHx31R}cZCGMw9b8r;>@Zka;w?wN@3@bpYd=3D+mS_ zbskGq0f8RbFneUq2qI{o7tsu-1GOqo2~HaXn`^!H-JU?=)7zN1ZH>#Cy4wP#)g0TssYte|4D)KS$U;zPZ;+8(#}7 zt$ZWR!vf65AREa_0Ywe3fB(6td9F?1DLe@t90Gv-`zSiSSy`BGvk!;;J_flkAF#y z8fKIs7z9Twrh*D+&9?ki9_f$G{iedTj70XvIm3%GKTeLT6~4=fqHjj{zN0Ey$qTd} z?!MJ=(2>I0x{o1LiE3G!G9Q;*lpR{}W!FbgdanpN1;urHmNcn+Zc(pp-j_a9uGV@W zu<6S}+Z@fQxm`)GD=sVjTO`?TsPdl|QSSB#t}o~FqrF&hyZCK>BWD?mi2`#KMXY_` zoH3!>RYY;L$z*SmA&0v%vrTe>>&|*`ah*7m!Nb5C^0EloeF^^&<9(d@F9t6ca5_G4 zRyAX{ekiQ2{UH@IXxCja{#}W|3p1DeNuj^LNhE#gbG=@X|ERjB+ykoqfEd2##MWd| znsd%uxE+ufp*a6y&^m1NvSb@Voo)Snbg<%lQ-R2m%P8w70h|3>Ypvo`o(b@?+t@4e z9k)_Lmb%SwUXt@`o#Xg2PnlgY=RSB+rb|8q35#SPH&CnWQl}<3{kD2AFRXTH{!%TH zACh?1-o~1NS>eG~%=_pqZ>Pkkai2cbD8PH7WkpSRl8&$cI%9KwB7Sn=2=n^m>a*X( z=vSay9-6N2~gd1vA_q-i)c{Prm;fbwwrS8 z12*Mo5S=KZ?o`o+XXqw+$k71hIhui|HcgKyjVk#SGw#xEr(?{g;%lj0!6w*dGvatD zwwHstCJ`I$D|?5h!jbX1V^a3Fvy0!8T9)J7@S@NiC(KO_{XYdl0ueo2cL>=b!Ns;ro z^9&?V@$ck_Y&wY97QcRQ>Fvijq5vTRFC2-#X`CFeBq_$!sedhB?zTYIWLe`74$o{K zPkk6w&Z%goY~1<6yE|+mK8kD$cGB^Mu~_rhiLzFqO2k7j0&gBwy)4V1TkP3!oUPCu zhtFT4^DdJhOMJ-iGDezY)?lz;b1}2xB$Bil+{bUg0*p#A7=|lhOZ)ct)+fBD3F{6M z=PuZtYOkr`dGCH-nc2dMVJ{jLWN%iDT*aiNU!P(e_nQ|7I$b7)_Z8>xw?*639z%hU#BW+})TpYk zFBnlG4bteW^F-3i^^f?av+QXHC8yV)7t^mj-(LHB8t-$O)fBv~&zd&kYbXyrpTR|} z*xWQreY?++7J4;870dX~G!9h|jg737D3MTb zQ%3#__tj+~#HszoX!o8V z)sq8#N5zWag<#d9NdY@?TeC%diZmWpugH%R@;Fvn_wr{{{F`*GNBW-GrYQ+GmaH>d5kb)! z_B+6H_HBd#VL<(ktt=bi5WxUP$XiKGB)e@<)zM{=;kO?+-@dAk$uRGz!xrT$KEN*| zb=P2LYC8I2>E8BeLjL%h)SlU`zN^$rhp@;&hP8GBv74D__9UGoyis(nJq<>g(pzjQ zF@c6bxhn}mkM=H(t;ORBv9?NPkW&Khr6B<=*PDjO0ekO{DwsW8)9owi92hJy(h02w z4DxzBm0E21J8LYPc6RG}joxGX^;VZ$ZqOn+(E`xc4$bDK**oOC zQnj(1C;45UTQXe;9=E+}sO`E#El}88V$xqbL{yNiVpd($S-h#}t#&Cjhj@CM;K#cT zcyNhNNMj%rN%Idt_}h)zlRxk#Cb)MqO0&2fVYyZ@61pXvId`NtZNW|>M1YYZxuq9< z1PgJ_U>```r&7YPyOk>+in(~rrJZRhTss`0=uxc_QZB)Qk@@nk?Fsa|EPi^n0#!Kt zscWvlpP!#~8(FgiB1?}|IJA7wICN}BlwC#ES9ChpYh=ywxAn#%9P%ua{urrXi_1fV z1%y-~8D|ybAMzQGswNJG^PBR-F*hGMt)`W-o8Fg^Ffdtaq0sMH0JK&zA}Y6L);Zi7 ze>E`|y)Ka|B3E6(?XRFT^q5pbB|XNdac`MjFXM_3>1&HUN*5xyOd}fNYl|itRG=F}zSp z#DjA8!W|poLXvBtm8%IUD;VwNW{5SoQRu=v3~Ej7Q0xB95J{%6Hh3_rj{rpF2KzWi zu)Ab#K(kNJr1(1QTFY1#C!{{cK$xPq6_eN1w(Q&vErO~}Z)YI4iF47qHWadVB@CP!Ef$`P!&7TBV5vMzfA##J&NCkRDwJZcM< zq9*^+%{b(X)0p+hqabQu6$+w+L#&r@Cj+eRKc~^w#JIx`B$Pok(6LP?rH1zz1X37s zso$}QixykK?wESJB)UR5*XS`eZPy||Dk43s#a7U81*nP@Fs2T6#7l03at_uQ(70BL zZ{o<2Un`K<^J1+~pg$+j!^#&egQ~V1D2h57)rJq|%Ns+}TxT?xt78MIuKDZ_y0$Id zHm~ICwA7ZZO4}j7WH;iDBr~B}h11DwAgxuUug2V$ z6yiVjD9Zg>eF8r{?mXQ*6_gLNholZRaLxob*{j%kM~Wy8sSUrWp)m@8KW~A98kbKu z8rQyHT8bB?mDpbNo;=D8ejNWeD$m`@?4ddO%M|ISx4tV(=|d}ucGk7Ngv8#$K#zYuS-K{EdhnqoIL_L1lN0%!{j zRuZC{fXsKz6U$@(PxcW%%UiUVSMIG#W+^W|vLS_pK|~aNhntW)Z)GvW(mz%$*58kXFWLdI>6T9*A?o=!3$d@HJYn6|*y@9;G;2a6bH=#;=Y zQa-kW;wg-y#SXv$k-d2_BuR5{{RW>|NKe|>`*Ij1@$h!@F=eryP5?uY3JV)p^D4L~ z<-1?XnspchkvpL$f3p5D$)>YTNBu67O{guFu8o`XgvP>k#SGyKVWGOR8%{vO9&fWe z>3W@@vBS!oXiu40jjHQC`@l^<$*MgkcpCWvYKk|&T~C@gQ)RgMoAi9QoXp!09KFJm z4{px*xJtSc$ThUVS}|Uk-I$#rH=ybh+*~B=)))>o=jikF(YjARvBtY}$(-)YzGE|D zOa?mQ#BJi{$T`1+XSKZ#ytATBH{GzDlY8>DiXIf~ts6F1UX8!xwVEaLvwpOw4PiP+ zjz+QP5}|1ONLqxGxU^6}F)l>~gc-M(RG6eppX%t zsB4tuCi4!6Wu0A|FUmh>F+^ly`rI|4WH&Ea7h`-l}wh(gS6A~RF;gL~WCmkNp$ZO6h@b0UW}pS)&2U!F4$)Kp=m>-2>WE^z`= zKWSD!UqV^3zg))qXcScS+hL4(@3Yn0*rqumb)%pLAB0uj#WaV51I%oo}ncSecWuW>hQHcNmN__<} z=QW09%RY|~j0T>hdo+n;qAWDMRV~73Or&N%R*5ck+NcBX)HO5gmF8US&O36yrpB(4 zC2`eqa_YRgD^H>5rCtPKv%w6eqRs6~R^%IIqgU+(>OPMCN=P#^vqZ_~HK3QF3_-is zJ74rFCkd$9v+#zF<38VXEVYPrTf53coy+jFbwVz z&S?qz{DsY1m&|GX*SQU|AkRlVrja&FSjTTqqM$9)genRoG@k4`dT zS#{#(`>*l5|6pOZ-yNQlGq>I!$vD(Pd;IKK%bZk(7+MO#O6}j(ESu`PW+FA2(}e6> z=c#m(zqQF^3AYbXHL~F@mZu%v#Hu~IBp1WvY3&8phpcsBxyx8Lm>pqyhArru7dOdO9t%_ zS)_fB;ZAE-H2L2(FLAvsY%I443Q?zmXH{DroGonQ$SX6&cpLLVHB0{3mjF1S4z2*z zD%9zngxs(y99P@f^-wY(KpfPH7%A)Paj-1CayvWDQtPaRPZDdmfFi*au_c>yz8OR2 zXLu5Ja=DxZ>1ke4@r8Qcwoy5kk`KakLD@@#?IIeSxS%Qy^RVL|SD&e{6)lYxB8mX~ z^-j%yNGbXx+7OwVc#4*<3tHbKkQd8%I9vW}w^PUzmb1}CCHi=A9uRp@}= ztOBf0Eb8$$+9LLW}+? zYRHUUZN|cCj{2c`YsTO9s@bx|ZOwh!>5#^OoH>j&_ew0<1Wy9cVv>uW zz}6g9a}HKN)GyKo0U@)PT&w zP}_F2HN;cI;Kj7xW!=~8G?PJC! zPQ*ct9ZsK}9<$3;AEr-~uUg|tm29&e{O8uTeFDDgd2^Xw$P=GO1wqqeK@HeLO5RHv z!*L5gl|(#|^!yf(0UP?*wybK$DC_4W472{L_8ZjR=iy#PuqJ?|4Acb|j|a_;)iA8b z1EJw_{;~wBM0QR&1eZUh;C4KEN6l4UkB$ZDgIzrnFSz^=iODi9>SG1n5H@m#)T#`}m`ebM+vhSrT>MsD^BIb%(bG7P)d(iPqhAlLUP+zibFeLzp64J4eA+kIVa< z7ucWN$uvp7H6|&o7UF;mv4CK|i_`NTG@+U8>0x5F{3=N+OVmjw z+NrpAyBL2zCU72gh$GCR6AnazMpOYWa}^LsI$bFXhbyO-!J6gDWel!_%*Zf?vf$lUD`maS9P*@J()A(ltKDXp2Hn3&!%n4pFKBu(`W2YaV2oUNJF$BGc#6> zA9TMxu!t3Mr7$U6{ISuF>eZMfbku{TDL6Va2JKx_P~)LO{beocebAnBSe?W6akE+| zwj;hiyn#8mlUE2M_$1*|mXDWSbW_1(Y8PQdE3uLD%hB>OVpty#JsKp3#ck- zt%fGKbj?jwEY6Eu@kq2+9Wm%j7JSXKq(+=zoQhAQjNXzJ`S}DxhEXZIF+H%yM;SJ; zbLdIaxKIeg%~Mr%2c$^P6wu>Jox&}PkZ~Lx7|kw+XF*S1)k8itopvam3wx z5TJas5&vpz!*WHth$2UC9b)Q)@$Q9EO@{};vP}}fiu3H(N_tGG7TJ)e<#;1oeZtIoSXn&Dh0DH2EwtL+NEq47S_C~`^ z-JgHlK{UE(`jN{XpTZi%60F8_PM>%3J&2ZPZXZU7EXAw>9{iMzwol>RPV*U)5^K!A znQpXMT(```nNhydY!Q36!&rR}3ln%*Sn#dCktWX+>@CzuupOk`*aEZ`Ia3yF(60cw zOJ(j8_GsWvg%WvyAtHPcl zu9l;bzH9#Yh%aqG#OH}6tctrof1BE5q{ zn*&g}gICliwPV~Bil*Al*T1#~s5wjMXt_*yv9Ip)4G8uqN?QFf<6FPH&XKc)$1E(Q z+1q#oJ793mDID_3ESlJd{WQF;6H0l%d*P;m;5#LvAv(*ekAA;5 z*ovaE=~A#7WyX#Lr!4Do-Q`PS?ELEpEQ~TqMPTH3c22z>XegmODZkpvkSI%f3~)sa zk_U*@3WcQFSZ3v=wc@dSS$}OOIX=zYFoZhKUq7EVHrO&Pj_T9ROM-`vNSbv>!b|h( zU}_e0iS0xmTq!qrDfUFoT^7IHJc3?@go_%2QBG+^xw3EMXI(2QbNAMSMmY}Z3>L=;82IRJD{pF_Y-t4-j(GT@oBDq3_izK=bVjlY}ES;kU0c~arn4~n3 zR400s|5RnUS$O-(ZtSY&aF>PXOo!j#FOda>W~0f2>^*Sy?xOM~+|}nHY}V1501rH< zBTIT+*}AP0yFFE%X*4sS@9VVK+u^(QhU#`@wR9E*TIKX7A|&&EuN3(-;f#2(x;A;V7^9dXXASDV84x% z%=R0y!L{JuaOB-*zLp=5!lL0PB& z6Lj##@GT&2XTc|{=955)j|hi*(9bOEyJl>1PrYhyjj)Yw#dGx|Qwl+7#wf5##O-hf z(fuu&J8j(k+&jzxWGB5SX&5Ramk&R7r4cEo;BZ!Y|S@w^lh1+%C zK{Iymf$jg(-h02p^+o;PL{F52=p`YH=%PlCNF;ic=wn2$qmDiZK}Zlr@1jTV3}*D+ zJ7W-?(V}nTu%%_*CfMARKC?;3u1$0*^ zAL8(QQ?Y*hsg*V0#>(2miQ{KzXfds0TB#{``{CN#rTB~eKxDimiuuEUmV6BjArhQv z)KigS`o;5FiF&JQ;ZNs_$Y3X(?7{WLr6WFlr{2<8OJN~6z3zTOh2zkfh^=1XKC$OS zY>-}THKbwlmn-rM?gONW>UkSApCv$DGB%7=d($XwhgB^sEkZT&ut6h? z29Ne$A}_Y;WF)Ib`H|t-3%GvPhcYp1=+>xals(km*%0a>?!i+ldJxo-Yf<|bvjK_Z z;Aa$7B9`olhlRrD?&o?X~Dz%n9xTO4J0bLG55rrqV@56j&|GR60W!<*o!=;Xzrjpp-WK`S+-9&GZPN1y!cH z7~LYrjmO%W?NReJb9ttuK7daQe42 zgZYLhj872ngWe`8wpu? z_=u17u)HSL>^%i;isc?^I3stx5&yt@t#@YyXj}UZ5`}SdicQf|#4L^?W$I>>+8?mxaBvlH}~!?`3jKhC-y_g`pU&`EyZsx@8s*p{S8*^rr+@v`>enh zpLPzmz;D~7s=Y5#8LvnOEk!(8{e7*7^|-zwMme{CNG!XdTeU6znHxZZ6dqG>Md^h> zsdiJ%HCDj#oQMuL%7i@P%qND=4z{6;DD`-?R|-zDLFgMqUkP`}gV5Cv?os7m+k znrzRqb$b4&i%h)0PGQuxs;ea_R9>Gq#$xa=pIF&XN0CkU=f!MgC2p0l}mQbZRRW$cz& zxiy{y*1dX7-~m2|(Cwe&d)J&PWZ$;$^<_5Q=zt!?>G4cSnW!8%(rfCh_5^+D0sh%S zza2nv(&8+=<`e%@{&G2f#`1^e5{WTr%BYNVl52+{oI)Ij|Ne(3|7c5T7cT9Z-dWv+ zTOxoXjagvGt-LQIAgY9jd#QL=NBvk#%0fFWD2rlh=E0!^UK*rofuy<1dbV}(b;*&J zBH)qJ4^T>(#%%Ap$QkC$2#Ly7EPDTzsG}%(3fhl&30vT+ToP>~&_TxCy0_q0ke2z^ zBRKU&Q&VUD_JlN@p0N#=#bITqEAN9$Kci!whql59o*9=F)T1cydbY`inm>f2kiSs# zHB6lP!1vyJ=6$^LmJ01ItzTT8orH35c0v^z*9P2xRlWdrbE$9&wJGHs!mPzB6Jh!v6caI}wCQlH`UtATYe8<|w%SZf!q(e;4ips@A9fatsC(lx%O z#a&l%!o&~(%V4w{w_kE-lU>LOP3zDpVsRQ(nqN$U4K=I6t6h_QxlL6Dotg|5|djvxo0e{F} z$EeZuPU*XE?*osI9tPKEnDDRiAADa+v=lz#x?Z}nP$Or%U=Gy7Tb@Co@2pN1rynkh zE^#&QJgzv(c@D_@wdFCFf0_y-XD`mIqG`9YV|Bp$H?L{5Ss=-?O=;)5VV~z7RL;Q5 zNqlAVS9Uqvj7XTrs%IJQt?Fwa1H5K9OM{ZS6)H11R!PRGg5Usz}tz*AegfN(G*#=Cb)MmZe?Z4BV| z{=)mjX5}c0ONfyprWU!jd%#VakaaR2Y9m_O{U&v6ETMa7n;Yn>!OPsMC1(3A&4Jd9 zK?tKYAl&R=Z0vXC(f3B;dxo-~On}3Sj_otJO!zTYJ=v0n%HR}S)X@FN5qYM!U@s)g z)w6f5BZ`zTt}hcLIu|ZM&vBi^pK_7XKl@ioaNR?B7y= z*2@?p-$S0d@6f4EUC_+qdth{q;(+;nSThTO*%cle{Ik@V-J?`P@qfg^Y#hsHew{T@hCuIyNC4fHpoud|$ zOGu@&-h-B+vGN4%eLLWU_wES}G^bW?OZhkaeEcBQH4(hw0&x8UY>im-r3G)Fpp{G3 z|S;B@O+8Q{ZNkl443F zyB7S%FfE6YD2vJA)0^9}TEt;^Q+%~4Zc~kt#PgUBY1{NfU+7`cG#@_H zTHT|Sr#8csfw=;wp))hSGo-EP%LU+)up>^D7~b`}uR9?xtga3AlLAaI`KZatu1t7_ z(o6l!EYQKm4-yLfd;|7D|L3Na`LYyWKJ&$E(-^mE;J%BAoB*%z_BbRblex4J`S7r@ z#R*Y{4;Q&G23 zHeZbljarkzLWet6EI&EGNt146wmUvu9rZLH&#qO`OyY_T#f{kO~;KMX%O&#ZRJdyyQBvJi?ZdqlQZ4v5%}qrJ_o z^U!e;8P|8uXrf2gu6O|L*s~;;IVj+}vX^y{qOEsZrf(2Y<8Zd}zod}K-$ z1kUs+kI71Ox2b6%>T|CXySA5uSv%5x2a_hK+R=g0NOo|2@voG1plJ3jV(%53(G`Gn zI2yH((RL|ZDo2G6%`e*tymTfUNtUpB`ey(4tAh?8-QKg)L_#*a7t5*muq>@)(3Q?~x3%^d693q3^CLW7sZ0-7^d%pkkfn8O^Yx!>Wfp9TCX9KtxbT@Q^Us?w8Ls?5^&vxX9wu? z0eEcAlHF)$_Ts>?Wu2C#9GQDkJy-P@yI05%XyAV~psMojpLGCA(IVioa|q6qdf@d~ z_u`~vfO~4wHje216Y&x5>v8mFBS%2(;!-0;KL4HSie}Mq=}H?U{`*I@vbZYSDh~Ua zIb%FQ9?y^f9bZ|Mr46yxx?_Eg8P!C8vY*3#CSEDm zy8E!O-d(mqUm3cta0HlLmtx!-kK3qgU`-}S z+eXUBPjGB-G6KOKs6EJ@q0Y2<_?n(3LyyZ~K~o1<(#D%QZlOHkRZsa9k;<(NJBmqR zE#seERI-0o8|w2vow!#fx8Id@70 zsaJi^%TvU39ZL^r)w)jk*F8YG`{3FH>0XTbl5}JLYNl|&z-r6S%c;2M8n11ng2STz z(qwrgqvCPNwy1H46l&OM(7#9f&CLTM|M9&ad~Q8)V8k|@&{P!J^5;a&))()^7?1p@ z=UAS}hu$XGWHKsijdi!#x6s?qT~v_Nqt1~aV&jDVwr%Cq0XCjjD?Kxfv)I7L$1 zNEyQd72JkBPv--0sXFRb#q5|34LGRp(Z+ZDuE_mdNCzk~Gc}%_rz|2bGb}{7XCvmN zq<~_!TBOxS4Z# zjn{X|vj(zyE%o(Z8b0YY_zJIP9&FEuqCi-ikO9AN{3u){q-K?*${0XyFpR);3Sjmy z3JNBi9mL!#q(*QGP3szb=LR(#wVB-TOkZD~t`t&k2)aeO!!IM>bh zP)#P7F&d4-N`S$Zkg3jf&x$NCO1 zRn*=+KACGr{R$$9+SKwI82bcWsdhwR^P@FpOe>uB5>a*O;b3KW30i0FrODH)H}11& zRJQ~t9xIgK?Q*d1%AYYuV$R>K*LDsD(;x!;COYnAkZ(*JN zeUtInXEE`h`cL#};i>&VB#+X~-05Ac)Kko#>2jE1K&jcd`E1g1oZ&mTq-n~V#IvSv zQj1#Av&ukd_vdP)Pijmf$`c1`V#+r%_=vAq;DmwaH!I;c(57vugSCbP*s<{KS+4l` z#4tT(f$vh_9(8{ycPDo*1=LZBvHJ9pU4-}RmPM9zP%oh8=b{~1e4~HWpjtwM5Kp8| zzAJ%g`ywPlX-Krb{JBhHe9x0``(uk{0os9qRN-NW__Jm;hLe2bpY@4spRs-q`-+%b z%Q**sjE77cSw})`4(Gnvq>K-rO&?XF;Q+I{+GeF_^OcCTy*D*N{5Y$x9eq>NcLb}t zq{!#3XYOPC^_}B2i{oE-hSKYjUJ>(DsBwxR(&_qSOZ1(mG>f0J z-N-+E?O!$;b%tt!aIz}Hfz|ZX+tRfbjHuknCE?ZEk;g3Ww?)H>e*N;~Ru(@{x@LTu zhb~D!$&*Nnr6>MeDv&BDfciJGcoDm9F~I%GUPEm)jM-%l?v(j!XU+w#TH9#JpDM2- zR=M%Yl4H_Xy37wi!X!1lF*1aXSTBuk;MQZ#$0X{njIgg}szkJtsWNyEx6;$DCyxlZ+*r~c=c>* zetog>7E&rW=6^Uhtf#0k>(9sG9j{5UKR)_iB_VnEBEf%2)jo=CB&RgeOKmNJVq0yU zgkDTrQElqL`9ld~a~iiht@ilhf{G5@hbLYbYUC;4d8YRh`!AupYDCFC6Qv5IYXw_` zzt^KxWtKPk);J3q0Xo@*za;x>L+huGpwRCaE{>F%(WB$=&C$eMiFz``dsX`{c3vYk z>iGvfIPsx%WrwoM@)X$-JrAodghzIw`_e@yRMx>(pZ3PNIZr}S{L4o76I;-5!s&7S zAh{iUK699O!_K0S@CRBkf>?bMJhbarYw$T=PJ4n*lNUAIF38(gG#K-*mV_;~M+4wX z@`otfL#_ChLr78gL2q#+yExTCPa%&dV;Ag^=u8RWMy<7TUb$lWX$%8{3wTYmu3qtX zd|UmD^zP0XA9_e&>yeBah`e>%MeyH+y=kTZRb8t^DX)fIL&B=%*r!}|*9EQQ2B9eJ zhi0uM>2;8rxF2j9;h1V`eOYl-{B~CHnfRvBNnM|GVq=P4tPpj}if7~EvV9g$PMO#E zDi4X|S5u=#l0HgV14rZU)7e-4hU=}V zR``9|i8`@BSdW*Y-;P?Smab@L**m)I59N_}__&o00eKk(Yj^?EwFS0vu*TmHrA8M(SGtnk=nWxkntEnRhv z;Mu4XDvA{r`$YrK(^6>f(v+h({qrp*#Ud?kb}1G-O0Avh$L{UopE&QuQ$?=-62%A_ zzYfG~ta=&c*41KW_I3qg+*-+6WVO`FR+hs{8Oxk>9&0q$6*x9LcF#IX>q}+*XPW1A=_k~I+^$F*`eCfSejJPNF zi=WA9iICG+UNx33UW?DFDPVN>vY1UW>||Rq8uh(t=Qu632{KYYe#8z)vPdsd)$%l$ z@d>)!h|8)>jt|YM$y5afrVx_y{Or0D+cD(9y6x|zE8c}D9=Ve>PMv$$*Iy;jl7U~8 zgO|YdAn>;Jw~TC182^Q2J5klr=y-U$@;uaf5O&4Km;DLu1=8(mHz8@7TicFZ^O2m| z_E|C6KL(qkuWXA1yF9rqL+4^?F@aCxhr-elkHkg55-V$RT%l9JRJ zaTbzkGAwQLYDZhyQIGRgOZ)dvh>B+0zqW1yPR0OmbV>=0evjPJyh3`{VO_&>5Q(E=7nJ(%&}miHxa=mBy+Ol5V>j>q*Q~mZBWSm8 z{#Ap=0$|^PzcO6YEvJEDA!P|Q*S)&9x+BOFF>$Fd2;N()J&+wAJuX7hw-wHUglNAL zz*7X%+bnKeKt)}d9NFrxFCW(|c*fb?%;D&Nkl4KTs~?#W+Ts3?0h*CR=F6>w!$!+h zom-urWcDqJ*H-Q*ZL`}5fc-wxwAwly&>h(Gk5B%ob9m-g$Hd`_r&Y`-oHY27+g2^O zPiLPe_QLr+ukCBNYmMx=vad(q=@I4J&0AyFzv~R%`Gm7Ozm*z|+y>6(Buw^n)x{>d zU;`|+By3VQ{fPh+(e9gFVh6esaa<=Hbx3D*Kz}G{-x9e*ny69K<+scq#=l!B`*U*@UpyRH`fK^iP@F16Pz;TL z7V+b&t-T$QB)6|6Z-@-gy+UlTEcrBP)*;WAkI~n6H;%Ux_E&^AZ;`UVLEOxhg93TD z(a%P<`b1J)YcHmR#<*DeMEkyNfu@GEbAy%xQ*3UWH#O_U8lI%;qIA1WVQMM*H)WeV zF_q1%p+y8~MXU*Mvq@(aO1p$8lZjIlxfobJC8xl-VF*fUYWLNKDg?mjdv+{(wqQ0E z)n4qi3<07QUaq4N<#X2?Bee@)ovrJE`jZL1TM{60v|Ni=9wtK-w#zIWY}PZ$&q@1X zgx=FO%7kI-2hX)=-sqhNOewe<=&4)a?M%?v z>7!d80-_s0!+!myG>*1K7W%-L*SW*z0kgU{Ypwv#43R_7NUT9d(Lzr$g{icle%KpY z@(7;NHfy1r8e<}7S(e;_1bC8g(JjPLEZPVySk%M8=4<_ge!A{x&3qUSssvz%RP?WDi&~cW>VklwtqE*S3ZhuQVN6sr$Cr> zZ8gF-zQ)MDvsAPd3f(uf5sqMH`~6xnJ%7(wbKPAgWm#}Sa@Ed=lN8WsQ1~h-_l?}H zMC#01vYkSIZD5x(ts9tdhWb+|{K@ds>=}>qoq+3Kn;wzY62-X*YG=I(=c44VcG;#O zCQG;uFGkk(<&RpBKIfWuyk+7ea`kAE5Q}@mdo(KF{NUM@(R7ACzzg6{<3t#I3A$qHi|9{w_{a zFW0(r_Y$QX6U3>YK3=m< zM>^XKRtd6dhFAf0(D>t;xl}W^M+!uOJm5{Nqa`Y$FeIl4Ls^&cxyh>tvXU_3iaQDj z*%B(kKec2s8>*_Yv^!@I6@%5+j6W4Usgh9quw1`tFKtw}-XM5Co{Z;l5dRIhQe(LITJx zkg9g6pWT=4-cT|ri17n*1Te;Wfw(CUJI(`cgxb~t>&}JMg>YMX|EZD+=^8sDBB}8R zLn|SZddRw@4vcZ!*zO7Q#xJG-z6qB^X}4>In5WYa=CeueJg*O*Kv{APuuEU%Q^AC> z5o~WWeX~E5NdBvL^&s?WvTugLoB!-Qx&cFb6}iRp;Nn+f&nFLYjY%rURD+(u@3Wu3 zxXB*Zt_Axn5JtVYjF+Zkbi1NlwcqhKJ6lNa&g9ds)eu+1{&``phPs-)r*eXCUh~4{ zz9ik?l&vJms1;#I0Ss5cN(naP;$q2b6bkq4@J`vRZvHv+vDz_1g?Ox zoqr`$l=gf8Cji_naS$BRW5lISq1O`V{?FSVL77({KXzZ(cqz9;B^SA__= zo``lC=@a>|->h^uX*CpFqUZ#}W52(szu!m6-QfW>P|r&O%e$^!P2IT8IwwQ5KL=9L z$31+P2S0gePaXWXU9<>uIZyp!-UYr<8Pl$7S)EfoaFAt}jhZvn(n%c``7D{l3W_6S zPeneQIkl%x3wnHF_h7VGIv}Sz^BCi=Mh~!}}c;i+b zDyY-9X%==Q_QD;4^aY@wnL;m)DOfe+0c~wd503Rr0`uk=BUAYD$?KV(eFSs!QpQKF4z>N9 z3{~Ka&4T$~NktnI9nPcgc-l7Owo~uiJDU8nmy*i9ur4ZX3 zF5){|$oo2U$NO?9KV!^-ZPd=fr+Cb2vTnECnzLu15FKhEp=`xO6S-QwGo3mQN-_Ep z_J!(Y9YOConYM#lUx#Q#W4^$QVg;WxO4I&hu~Jc4Fdx)yHd8yJtSpEdLk1y$?PwDUTi-u}f ze?u~_uVXCau@Xq{xBNb$_&MgzjD{jSky9c==Q(k`lr<09bfCoc{^w`AyH4Ua%KOp` z;Csh5>uiCbkx?g2(1}>C`@~wS9tm*-=Fo2s;Mu0?3h;Q%q$*sw%Bzh8mwxA{=WUWB z^I;eFtqy?S^zU2;VprYv>z6|lk54jgMKx{aJDl01mc3h@kNbyTa;EqgKMa$hnv2o3 zFyk(ZF$~#t;j;VWG_kfZz2nbPzaT^Q!Kw_Uzk48Scm6Df`NAO#6j^`YZxjvQW(l~X z7my0_uZH*LyySwvkKvQeQL;-*7%SRQT-&v7ReefO*eEBU?oeq^7$IXea4+&J;ab4! zRjsV4Yo(>rkAYHU>6K)*b7_Sm{!r~z`%8gDjXIu0X#-T?ru3Hq*d8fB#%||911FgF z_p22V*EkuQy@l*M{h#Ds3%($={5vitN)HzBJ<#z+qH%GFtmQlt1opfd*ARyT&u7E@ zQSc+jk40e#!Nt~lQE~uDLg6vGtc_O|YAogG@J}>$KS?McWrb7C>n?;kEbU|I)Qj>* z-lU$h`~8nq{`RhVcmcHD+DmutLOh?7W?OlBx%b4-zuAgr^yQcp%J0!_U41&d{n4R8 zMKsxP=AZ@D`z~|nICF0gY0KyfsYekl!?a4E(6>-`AMqoU99`>9is#*&&n5K~m#^e02|Lf#k1YdP2N1MQvW;+cwIGdFjOvhd zUIe$(UHC1UEXC_EHOay4ewa*jO6Qj8TT+y}gxme)eSyjj=>8N5>CL?wa0E9M&F(Sk zjYmNkte&U=(EiI{1DKh=fkQ;oO-xDD{2J{SE3sFnk0Yb=_j@rSnG(l{yyjrHV1BX} z6}pT8buCD~3*NKyO$g=+_$45FscJcJiB~4o-5c;-&3!aPb>4itZC9vo0g}sU=o>WE zIP)1pSXYy(|0SF+b%s%O*Xba%bUjb$m&A-PY`WctO7$yenRZm3OW~ZfNw7@n-jU=e zVR{?OVo|14M3^8%uU3w3PiNdWV3WDE^jt3!$*SS6Ufy+A=81!KbaFDmISjKWHk(i) zrSNDRalb68e{n3lK~R%Ft&o9hBad=PER6o>_Tq$ul#{5TkRnMM^ujcnqel$0klXie zkptFpvBSdE*O`%@(f#gt*mPWMv)Z!F>WLfEmF)67iE7+c+el3cvAgeGC@E5T?k?Yn z2fh7chVKpN4bI`YrcI(uyb-xKDavdu2_4^Dv2aaiHhKoLYIf(oV2C^-?O6Mw@oxA? zYb~`X4D-g!JpF~b3Xmk)-D-M~UNs#Fi6rldFbe)iWi+Un{0^+|0b=L!Q4%!f6@au^ zPh9)nLk8qLahA5PRoYv5wtf)f`2S|(*2dq6K>cb1ZoH4zSlB~s6B<4X%6Olv#IkoI z=*e|fJFGZClB#lAlm}}J&AvK?i@Vk;ITloRA~dfD{HZecHekqpy66Q%?#>sU35kWi zSMdipx>p+~_JoJ^j)TWCcdCz1MDcO%A5sU+tt8~A!i9p3h~cv8KN+P$;)uRl+NHNs zxFz~s_<+AV0yW_SpQc-EW$7lHJ+BHXrg56JM)WWah z-Z+ZS#BUk|GtoR>ik2LNm_UrvfZ|52qAPa)8cO^xVRE;JQF&s*!zhW!S%b)iNCd~7 zYR7D`UC@LYZd%>4Fx)@8oE?Ym>fzOoXLpvQhHN|guXkKf=J7^PK2+1!K_6igQeL-r zP|hWAMrf+BL{5=)zS8LvzKXL0)I+4arcMXE@p7*=;?(2 z{u48A*?~gRCQ2e>^Wj*1OrbUXxA@FA-X9LE0zkr0{( z{3#)?(h05!&+E(3GSC(emU4p#^4Gshd2q0G@kLMxc+^YtA)4pW6WNop;XT)p$tP1H zquBf-_!-uRdETCfQBoOf31(9_U+@!rK)4l%E4_SB5l+%!mHd{<|I}rY5Fr1wu{Cx% zkWy;-rvnd#V<;J+Il>r<2bm8BS8Tw{D88jj^war|ndh<$Xv|lV&k|(9A|>^3mij5i z2u*{s%DMjQJHrbB+vV^V$x7-_>&+yh$@ixFG*9qei`72q3Lg$l#}m7zWU7FJ<|+*$ zyw&}pszjWsNa1YQRf^+se572t@)Bb<)`(X<2+S_e3JJ&z2-E-c15^FLitEJ8>)G?V zOmCd!L&+>7|DM@pp`f>B3=Zgoaf`<>U=KpKm^Tmv9F)j8Q@ROF_bx0eUBqMd` z=fhomxNWY@l0)VZtS)@7O%Y3y4wf`_ZG#pvmNxVT`NaD@;IEb(v(saky`X@Ag45_0;)& z=+saD$jEnY-6e#}Gy(a9%kevh#ZqZb-(?hNA7h6a8K1xFH#3JZHgh^>yKgB#oROjD z8b50tD~Kv?H5B5L5bv~cM(8A895ifO?2uaKkZ}tKZ90|YhC76H-912#Qe$~xAO%0R zFf%H;71*=tUh@HI@o1WOraBfw>wKBu#m_9UtVW(?GVO|1?it304TEbYvPq4_XNj)j zf>VF>vIN|p;I@v=OutH!;8(0nHBV`3{@R9iVjwctc-8GfMU|G>X#6@?Aml9BEJhax zhk)=url90YQCrqDp=42_DW>%1EBI*EK6KJQT-tD`+KMRaO(5gp0E#b1Y^9 z;6+h*z1}0?OYG>qiMaddJ72UZ%onJ(W+02raO;W%dVPe<6HVZ^iMTZok;khCCbK0G z4tvo+ScEC0U5GEY0l#m%dzV7r0q{#n6%Xm*Nmvfm{EP$@6ZM8t>@%)s!QO=o$p=I? zJO>+HiL_#{&3F!L-^{nnLA7?o@Rkh0do0OK>3_&nPpb0+KKZ_hi*NYN6(%%ttP zai9Qx1ELbZf43H4VTfC9T?JL@)6z5V=F{T=YI$cJ?vrn?|3dw%CY3|mu0E1KfMyS1 zXKxnh$8b;1nY4{4k|>h-t;Sy;E!(pk_wsXGPVZM($OQIv0I`s_lj3m&`CYeD)X!Cu zznZq?ZQ7KB0Lm?HDAw%rVDV*HAf#8Uuk;3{w9(osR9Qi-k4wO`0?Qi6w*T*HdA@M{ zN9Gx5TFbTLbfECoBY8IL;~k9z;C7*d=1JBd z4*G+wAm~35r0l+x@BhFd)&I{zBLBCk|Nrs-7QFNS`un&O#xhp#?^*F-=Gc?}`6A-s ZJfi>jMtbXz3|oSu^j`g4*;~_~{|_NAEiM26 diff --git a/docs/verification/vq07-progress/1505e018a/resizeSmall.png b/docs/verification/vq07-progress/1505e018a/resizeSmall.png deleted file mode 100644 index 8090325b7ad68a3b7f9544f89239c8dfbad20363..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39908 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Ð#meLLH$%YN6$1sQGL+`tvIl{gWR6BAd%lCWkTG0NF3;9}!l zd$JX?CKu2sliFp;2>+#uTDWdkx7W)m_=X<@{Zi=l56 z)OQ}@rP4XU6p}BR1c1b1NR6m(7KiU~P=>XCYkSXXfl#-er4MV-=CmqL%vXyQnTdr= zC6Fxl5yNE%#gyZKUuBTJE*$V51(VZ^_^i)=5zhe`ntA24g&{qk;(0?Egw49Q4uUhe z0SgmhfYo z#IP;H4IUTXKGFjPk2YqmkL^Zgp8X2IX$St1X?26vHtJh$@q^;tBaPMM)Lh z8Rc`XT1iOL1dsrz=1)wAL@KG^6Rg$hpRawZyl^cvwj=SDCrZ4I1uZ&mR=wI&Q`~)h z31geXtOUI;55uy*RU!)ZfBG-Hf{O0G%kmCiLNXYV9u7JofdN~JcMRyM_%RZ-`6$m> zcvb@i32C&s|QQ-xLgga$8yTQzB>&6wXqG*KOO!9+&_@bOeWVnciGvCG0}k8 z)3UAT3sgfeBJ9o;adY9=d1U(=S=E{z$9l4r{x3aAWu@^_PNyoiPzfbg%c%eQ$lr&H z1;H)~GrquOb3k52uw4U>b%`cNhQ?VD-cxhL5TZ~>2ZGsGaV!KrUU9sn8?y`+X1#$? zNJ3BJ5X(74Ub*lj9gClKBTN^3Tjd7Vq~TKD*UMC*U(!+C>b>3_1uJdk&Qsp}UZ=}Y zNBih84GTXk){)-}NAX>!)9wf;Rz@HWSOzVt{h`^7<^o`jWC9~;egXAHUVGwg)N=YL*}R$+H&7{?=8T;lUN1_uO>_m zKI5&FB_$dLuM1So4AF?SMjxH0 z8=6#picu(pR5((K1Et7hhKeRfm?cMa!VdFKHbU6OcsC?Xqag+{CGktJNyP*Xrg*(BrqA#lq*$< zC=I59P^rEMozY2+b4gG-BVe6#0DlM-8L3HuV&{<^7ha#yGgf0ar6}ZMaecrogVB zY12Vp@d}zq`jeFqB(DoQJhm$$rgp_e{@CZpR(TO7j^ zR8+mUQ;@g_=c6>K)YF%3h-~v$vCm@)I=fYlz}yeGcQfC|l<6ARhdzdJhWu&P$)hSua07S{@aBCSZHiRSJl`zuv_%CwbkTH*WAB^}#3~WGsY!o|V ziv1>@L2y`;ULf0!+(YjK>9AnU%o>NzFXUMxMlK%o zmh&7l7A-vZ8j}3|&VvvL8!*_iKi3E(4TpvEgJv?Ajm5mk)#Wm9>xwz+})Yg!o&5xRaJ`Jqkb2@lp@c^gUQ=z)bTD z9?s*aBYh0vNfv#djJe^VHL{4s(#x+>S7JOprI+73wjePJ@U27m6E2%r)+l_Fe{POS z;J70Hevl!rNvYgv$s?7?vec9fWMKxNFM^FAfTa|mURU)>f1@ZK-D}AgR)nPmq5Pbm zcZQ&6?yPCgEpdCqAMdmqT*~6(Ke|6BpiUQ* zM?&5~aH%DqfuXW)&5vVQyD6uaNhGb;3I~ubO)wG;&V-2*G>`k~1~f$Fw?Is&bzl~b zZ^FvQUe3rcb$Vg{XuZ)S@of<*>OJtG!wm#P)DdrDos~e`I<$9;;;>`7j3UJ`A!!W6 z;fZL!>*zhp?;Uc*SnK$x;euBLr;9mOjWwcnG7BJ^5hktxu+gZ*BF>VCDK)!iR8OoI zy`U=+XKjZi2CCbf@pvlpnZtvLd9o1YP{X`Su%muwHm>#{=*$mUZm@T~*{`+5<8Cl* zg@50ebd zVb@apyftg^{@2Qw8Z5+dRnSf&y&i?5nzWPc>}7&NhUiKM0fj1vQRG0Zp$1*axez6d zjPHCH8|A;3|S+2@wi^V6y9T?ChsSVqT;AS(9a)x9H?KxXB70mi)Ru-f6D z=C+~ zN;K>EB67h3EdXsl{&F!FXh>K=;TlS`Cr6cZToOG~7EXE<8ie8EH1fY9I4RgcPqPp* z5+y+^QsjcT(qhYa4{pGNv^a6=2C2l^ro4#3WG`+(G!n>09jcDt;VA>1k_uMPQ!_ns z{lyEg-!;7Z2VIu`F}~!?acy zhl|1Q%tq`{&XCUpN&1pdTS|WWDMXs8vZ3n8y8ySTudUnA!BO~A7j*^cgFRS^LJreq zvw&1AA^1VjXc^JMDF@m_$On5v3i?6qwwict`^R3`K#M0^bW(|Fo< z!##;GeFx1)bTA)l2NnT{5z9B7a)=QYM-9HTQJcggp-V-7FdTeLHhN_mMpxVjf@?WwC-;8sKIDf^T=wFf!zIqfZC((zj>tQuGsUZoS>Q6DMPYdx8L zrw1>_f;=X)8^xl$RJl=Q%dF9RYFE`IPEBLPrTAI^Va~nuki^q*NdcZHf*(fU-=_w; z2Ts%=7Dsm=0TCCj#6Dq1kgZ{+C5O|t{m3eI?KA!$N!|9LICP1Gin3Ooh(Jb~J{;?i zmRGOd3#Z{mw&V%J#uEG9GMj!@%c_uGxt1pYbETqb!hDF}B* z=5XW*U+mN&kww{Aque_vpC5GU8z@{_O81AxR3A^x(T{L^5gdY+DjYE|>@h1=J=LXl z`RBehez`OHQF3Z7JUQhJ3}zAkkwdwwjH{)HC)(nP*fkq>?#q1Ch%-eiRsn=Q5Wye@9}AnSc+qT5T1sR8{S zyzqEK6YB6=juG0EH*<=@5=kuIB$EQQ} z@MkV)IN6;~2F$`FKZ078?FrE?_4A|;O^`FHj?Q`}^5bqL)-P|HP4=YUMP$hUKBBGC z)`ShdV+D01T`?IP{ZG+G28_mMBlOd;iD^9Yy4peELXvpP0dU_EAgx`_n%DTcL~ z-152U6lmEGRB#ZAO%UiwqzAxJaHda`J#H@e$B$ST{e>2R}x&LE4xxmmY*e zxdKLWc?46Rmn2b-Uyr+9f5+V)w&{&|NWkaP79M5jK<)tR8VJ4A#3S2qcWP3Y}3#bR!5tYMQBfK7ny zMrxpgIYgtQtkfDI*xSN;_K8@|H5KKdB~8NOeam4@yGT#|>?*B^X6rcmZJ!T+{Vb0+ z7=+?dM4~r{?cCHJYf;mhi%OZ8<>U>FqL6q~hii_6RJK;hQDPwLG{~H_KCf2@ILezL zv=t}@4wOYe%d8oNT~}$YOkzyI{s*5e%TF)UeZ*cF46XRM_ryokg1TzY)j5jUXf&|+Ve9iOA7W$;=gS-N>x z6HGBQIkB;Vg^OP~S6X?AgPlN7ax-`m%FaO6<^{Qu_V^O@#WlR4V!7dfnPNc1_jVoh za`&6=^r%a4lewn~9e2k{y;j}Td`8CEkvSdF3L+ZJ=jkZFN9fHeA|O*+-mdI@ei zioEEbWt%STa7)f&Sw{M^peXdQM1=%Wt>Q$dy*|iU0hCi)u0YqoA_x*t`<;(#KB_*& zM(%@Ug8FR6cic^K2}@}m6`L{Oggkp;eQ7_R)S{@Nu{5_-ZR{W0sM_LENwbAZ=Taxz zIssb6or5R}TN1n@x;#Zy-hK}D9Lsgrm<}F_aW}J%!8{lFTrhAom-mhWN7G;c|98ri znVT1A&03awp@X$l>dP{MWvZgW={Z~;92OBA0jEjrIT1mjJW%wDe7~wZ zt_rNYU{RYJf`xUBC%&lR4+RSOWkJ5R$v-&zy-DT zY6dBuHqB<`ijHoevRNz#m8HJgu4j#fv+h6;F03jwTuUvNq-jkOmMc*hx3C%BPq9VA)jOoj&ezBt3TaQ6M|7)>3u z%gMq8cNjVNLwUdzT~{84Ci6tyiG)9GsluC79u;iTwK)^Brq4P@Nm-T92>DINW_xN%;gCcxxhGwL&sS3eKt)5tB%C2)5gnh zZaOCkV;7aT;pd}2-(Sy%onnEGR%$`FZDmp)kS~vx?vNXJuen;qMqihk#gL^ao>gL% zaD?QstQ2ZB0L7!K@(XJ84p<1&iqax?6a?a{YSN=%qCto}{u|wRt(@5=8Pf!C`V1T} z$8pKEzLUoCXz$TixUtxDa|v3v#uW5TDg_*0`ZkAkxr4_s!Tu9JTOt~2HR@D>4WG6O zk?!fhnP`iQ`buRSUW`PeTJ7Ml=mh#v;@0?Ot#XFnzn@`nGZQI(E*^bjbH3&90mpcC z?5+4VWEXiCM_EA+MZjKa74@3nC2d~NrJnv_XLK5z&=%GsA5G-QTB8{b$dcwvC2e$h zl@E(tXe3Vj3i|o{E8QHPUa3Vu+?_J!W8Y-%?7u4)j$jfG6k<*3f+sDox_N@A6O`&T z-nc5ypmk*|)y;>*1FXj1T1o1SIsCpmjvO_H{ZL6NteXUX4>o`xq6{&81@2(+K&8>E zcClg5CUv8yCzb#!F@Id0Y$sfD(2{gPH)H&gaZ*M*nPpqEdh-3%xY6eJ6DMHhbT(K$ zwf@hMjkIS6u~yl3z-d|#iEs1E`^8ATvXF0JydQ!aU5Eg^Jpv@zN<+Hq2Nh+rOSGBe zA8)w3!p3fDRU5RWN^kDX016l_mByTOaA{kZ8MvUnPP3ttwzkRjJYe2-4=c+v8#c{u zV$gl9Cvr)k8}ialI=~x4Z<2c^i;#k|8RbtGkp|rc4Y`c=`gCYfirS?|?5X~JW>~vi zh>oXwUdD&=iW=?<*cjt8hC&15td0oM8)Ce@X}M@MZy@0Gbv}-w+!IQfLc&#oy%BQ!^_0D zB6+}l)HFnX-dxUxvQ}9>>{*#!xez0&bhB^&?t%!bc%9ydC|N{Neh!rPJSRJp=Sf9_cOiRyofg}-%5@0vPx=r1o`^I zSrylTmNpwVkM8CC4!x3u=P1s{q_)rYb&L#+^zel%G6;)vnfVj#@hh`;&r2GBZB0eNEUVWNelxJn9@)+D8T zHs+8_ncXf>v7(%ipG-&)U)3E@c*RU4nipbx-NR&uY%6VQMG_w?T}~VJsteu5HDAB4 zc7YXf4@jCi6h@zHr}GeTHurRw*YxER9lS-wo4}V#SV4YuQ~9M-v>vxRM^pV@X;_+~ zk{GGIt%cZ?192wGyuZ;V6F9ry=Z)YhMhRWv|uPLw7Z{FhlQ20c=#rE5U)^gQx zC?cw4GM(IG_V7OxjW%Sh4f&l-OM@0hR7rA^Di5s)D7Opg_H$nHHz;=} z84Z5vFGDQoFCi=`gDlY=W^|B%E^!7NfM(g`0}3xPDr2O8BBdFNXr%mb6UMREOoF~%quy1m|*sf@6fN%F2i$>?-rH(m*=1K$Dp3z-=*Y#)X zYCj}ZU`)TnMtTDk7wI75kVxLwrbpS!w#lD2)WqwlM4Pf7QV{ znn>4c!5NGIxC@Tq>;iNndKWNSl1IIreemp-bg1o{nnF6_(7vha@Xys`b2Zj(l1`in zU}XQQC4bI3#*`qhtLLB3$Pn&4<bg*)J_ZD!v||kzQWLrJiK^mi z9FcUJrL7#a1LgO%6^W>rP({?nyEd(HkQ858k9l1~vK{hWK6L2kD*1DwQo-1GH#Ve? z2;8cw^QKm)F(tzvq0By8EliHvdX0VvBseMdDR@Wa7Sq$SGzgsQP{r;L+YlG_{O3H? z1`-2CFj|-TYz!JA1C_(U5mZuyY{=gbGkx+hKuX}0d02A`Mg~EHoz^_|!}zuy>1?13 z?S4QDZa8+rl9J0PDMHMCOn5{jq;(n0UkNryw#k3GZG$;|d3fh}^J^qphi350xFC{D8%L^3ou5>hmb;a*c_Ey%`6% zJMozj$`G*GuA(zYS&}2c&6dlUY9-Z`#3RkDN0f__VfVAzbzSZaw_5D!5=Iwy zZlp=4kWCf{x*u}Mz@WWgazPhcR>vuRjlw2++I-1Pzaf+8N5zNcMllTx6<8k~;zZ%^N z8;({jR8*siZm2SpO9(J+%at*KSX~RwsT#nGulaYtMu%}t=)@mw5p?xtGRNK)l7bZw z4-I;C?4ta}Cv0xdVf7mEvi#{~O(5UTpsxM1YkeW2u1`^+qWFCS?njArcEsSfxS4^% zp!>2x*f+cXG+u0`$cIv65A_4oDgvFvbij%}_Ds!+P<4tre&`hTFVwyN$v<-4AG+IehV(K|56j_ zF@zi8ti+a+SC6EB?D!4+nm9gt(Zbk+l$<{dB=+x1qSaA>{>#N8otR`}@*t9geP@G5 z(lUZIx$g)nM4NxP<?&GP{&0xDR4mhmWi(SF~Q)dGtSV7COYAb@{;gs}7a zW$!+an@kffackkS{Fv+u6BwDih(ZHQ+?_v#wGE6%|}jVBSG*Bvmj`e*7w+a5J_<+0_QVmwAI?U57_1U9}9?7Xq{)o65aLqkgyzldD3?7kBPz& zoeZ})gfZ5KlKbObhc0@+ z+F_ET&Z)1|Nqe6&d_v*URx*9El0KH;aULwpakg?m!VHN`1XI(R9ymlg&E*T4;B+^g zYbzE-F1(I^5C5d}tbq(u+|tX9BFvK#XU>_R`K-SllZb~QJeM_*CBlU~8jX$L!m>7a zz3SZg`(MIp%wK2=M@5z!4`~%%QTA9mH=#?t6N>V(eNe!1y-vWwa-Ho1Ym=;~w`q+; zhUUF!U)o)D(H(6$%;@u8(;p2AuI9Fm}v+9GT%=MZ4Ai!nPZ!-_`i zrTtRoHs-`RG(P$a) zf=3fVIdfa?1{%JXjcx8UtMCv;ey>Nl!zIElw>;LYBt?kVkSyd9+8P!QjLW87n&!!) zDWqVbhZsT9>g+sl8_)_vn~DVs0BsFRF-<3ntOcI@hgx4fCon4m>{ASv5$t;Fi(zPz zi=BCR?C2o)Iy=msM9T|%5>xb5$%OqZ%%4s zVr<5p6S?l|&-)*rh{A6w<*W5ty%(WA{G^E3=v7gKO(3k((6lo_I`*upQ_Ou_HgC~?Z5fdK9ZnB-ND>ohDU1Q1LbR8Ev~t0lpT~3Y!X9aL zO+jHkOoEH<((yMrYypt=2s=?5zo+8or0V9Q28*zoJ%YcMHp(eLIa5M;C4rRL1s*C4 znhlkjI-F|3=oIp^lUGy@9-?meP2RW#5AESWttjBiKj>CciUV}_H}xVnG56Xh$#hun zjI)9UI|z3}gG|Gf6N)~Ydt0rwrv)5f*3?}3IHi(h3erO+ZS4LZ0M|e$zrE>)VK^LR zvv>lcs7TWr=P&f@p;-6Hn(Ov3 zI#`$k!23hlxznat<3_KC-nu!kP(W1~JIQJudTAMkq!9q&X~}}f*SH)Mlrz14Gbf;SGB5^>9}8 zV^$b2zhtx=r&Qyh>_8JKP78F#nb`>$iINyk zbtEbRlI%#$Zu3cEAmWMH&c=jjvw9q85yPb*2BI+G=uM&dK*$*hozt-UL1^p|BAFxO zL@HxoeVW?n;11dqbb)|X*;K1aT4G1-Al+!%o-A>JYqFplxT{4nhM6e^y~$D8gd<&H z?~qH6VI7A+tKsHq8WhpPwR?pK51NuUb-!{g5CIskW(e`KY1EJ;NyF-8R_i_a7tiJ^ zqVzzWut=^Vd#^ry4Z*k^4KV7kLukf{J*_SV84rEcdx%SGu7|DP@Qj<39O(!c&C-U_ z7TwvOF-=>)X!ARHlKX!r8&slyeqi2+*jRYi8iQ~@h^FjM(COMJ3 zKarvZBQ60`se~j9NjR3FKy|0T9?Y(h928%BtaM$eeZc@i@gP;b;Tyo{J3IYO3O8A^ zurq6@pK@|S6%cL^u>Fa;PaTj^!v2Pb>x^%>*2s3WuAObm?G^EdSvEKeApf}Z4VgJh zYinV(bjX4@TZj7y1w(YxtT!v!8h?E~xSLMXV61b){U=UfrCU_IbDy&EV4Mwh!eZPO zs77%pAP+Y68|V>NmPHVsW$WbDNP=KYFYE31v@ks|Ez$_KKK; z9{}%1z*yEdt|eSf8Oas%4{6z(ZI%XSTbgI3nf(B$)&a94OCnQZz87onrh;&KD$GU@@ z2n#aLr3_j&DHdY<5&3(WUI7#zz3wX2;!rzMg-JFB81;Z&8AjU&3}TS+LUFL%PG%}f zHz2-1#&+H;LFUVn8K4X5U7_pTLRIgBn9v-s+3D#)yno*RYVWdhzm z*if&XXG41m4HM>ip*oBc}t2E8>L9B9~5tqU6-bUQGzNtfX1HhSpB&&s{X z2qfeWjP1StBn~a(? z_T8wlG3m*z-1>fMReDLWts++($cdE)mR|T*Q?DA~ZKsBIbAD4DOiwMcfcq0fQf7Ls zL|&#hEgp4cRadM=pBzf2O@kR4JYjMOzN-GUQ*PU#AtYwolaXNiUP7vq-+=qqdAw;*LP zx69<=L@HODu;LR7h*seP+q0SKUm*%2*v5Dr3<)MX(g%$i#<(QH-cRdzMVzoi@(<|> zR_a)(Wwo`QUV*Z6|EydMpG2w4Uxb_J1|XU2(OnfLeZce$3j*A}F#ht@tEFaGZJMJ$ zU)UQZ$CKB9Cw3NEkc=;a_g289rmE}>!4QivWo8FO$HqjP|B)Yy<--uOx;L$eu~23t zIh^>oF2<+%5_O$BXq@f~_qCuqR!3$Oi%C5jnUsws(p#5P!6gzaug|0KsFAWM5L+er zCwid~qE=XXY4JN2otSg$+{MueCgzIh!#$3ZZPgoh&z@r>dw_ zmbryHbD4leUVzCku?}Q*=_ozSie>agf%pcBBvoYhKp-~g#A_>!}B)bd$4#mn`rw5S2b)Pr#wyGZSo%^n{aj2zCK`n!Vc!w{>bdIbE2o!;fzgsWCh$ z_NRdIgj)h(4D#9?a2_zanR9f>2|W$-k9;d?t!Rjog3jlCY9beiiO*33Mgpv#oiuK(8125 z%CfHzel{)C=R(u33?f*^g`sC#1VJ@zH1a5XThwpNq{l2K{gBPUwyfSh;4%5XYZ8+jRf(`?vr6pZ@XfX(wa; z{Oi|$`|tnyZ~y%H^Mw~kek)i3Gj0nt6P9+uIzxko(XqDDyh{D_g+W_51?>x#3l&8m zMA}mrDiNhD34e)s8lH6V#0Yw<>U>7bc#B zTckm+cVvH{_S%(;eVfJ{E84bQZ&$-4lp%T~R1}(ljb(9r;zmuQ?V1*8zxM})x^aEq z{`P(Mx8J^jrsS9BUx&l-_4vvJ{6^f7fQkGJax>appOgcOnL)uB%4}y;Ox8~J`NY4n zys71B`)=?8%jd`cBF}<$Sd-|QWIZV;A6fr$PdV%B`9qpOLc*w?L$X* z$0D;6eH78Qk$ft^_;-6+MbT&@vWhV@+=xb>yfKR`qAnB~UvKr7+B=D^>(+>}bF_Ir z!jUN8Mz6!9Znd!8$%eY+CmYZw@B z!1W0@uiDc1JRE;0dG(i7rqKzqy_hChK+m}eI(CaJu`l`#NOajphGV!Q zsOSd##ppJNFut$G<>nL+AavXMn95jeNS|Z6EtSUXCiOF+a2FF8J@sb>_kNas(TkhE z*8boEQzI!1rDl;_u_0HVG&eyDZ=iPUWk&r50(M5}DC35dQaCFsEx4s&aw8q-hOq7y zP~4@HPu37k={C@CfoN0G6&dv|5sdypsyi9GQPIYmd$>9!hR@l#Ut#$A$*RC$E%ds0 z((?TJdieS4_4!40hQia#;gh3YdK069lfRqB)jta>34|M4mNPQM%2t|EMr} zTc{cC_WQ%j^ZwUguP+BR-JMH8&FcOrKVeU!mUI+R^OCm7J|M6`Gmal!?WG;iR_oR3 zF)Os|;e@a!EEZHP(Y~h z^Osk>6tdD;=`qub2sk`%f9DfRbD~!DUh9{oBZ$Zp8l*tCIOf9EHAdL%GnFNh% zyFly`gHHIm11E8KJ^qr^`_pP)Yu+gs(slf#4M1u$nkmCDJY$hv!#w5*``mhE$r^+PTS53nA<(@gsuPv?8$vcB4#!dcrpfkO82O>SI=J?GE8dxa z5o1v@)9%al1t!%&o^#y)O1AcWM_AVTYrhZD?yZ-QoEPc2Xm;>Ps+eoSS2cP)U`fD> z6tL~&G?d{aZBipSap+^Pq9m|H zc72LDFoo@~*L>W#K` z?PP20hx1WV^7EM2%C%ez`N-n$bK+e1dKBjMpMlZbCv@p z@k{n1{VU#~w<(3ojeO^hhvC=_g(+Yh_u7vY%G4fL=wBDJml({Bvk0vn>j!KiO*o_B z`JzyAql4Ccye|v20Skzmh>*R8X)q^I5lRh_C$l+isDUxb&Xq%u>o#=ac`jU@AldqX zvHDL8q)TswNQ-D!9R$0bw5JgIEg@jzc?52ZuolktZhF;gPf7{cgzGfy(`3e5b0Gp~ z<02_Nxo^dnk3RW)7n)n@vPIJ7Am4QO$&yMNtR&s%UoX$U_L7Ff0Ow?ek)V2wUyIyr|3y*;}*1n$FA=Zlk!ACkMU`NS;s?Bg55wtJe2DNLuTN>ZC z5N<2Tc5+g1%EI34JY_?S=qRBTX(Z~`_&*c+B$@mQ6FY1eRqWt+$i;n%QIOls41oJ8Xe185v{;&V% zpMU-Q-~Q`=`MVzSpPbTGDv`P+VT)R26n4|WMM&eF5Y1FDE_jlK{n3eq_Ytx+v2ZpL zaN0XR3%O)L#ER3zHe;d{wI36hA->M#x$$}z_3T&H;4GOzQL3=>ZMm%?W1Q?#77BU> z2{1jzUNsWqb1)rGU=?ss!&5=yCg$jZQ5wqh?3)+DUpajMNa9ioi#~H}SGI;LLBc@+ zn?$mHKsB1AX6Ha=iK6}}Fq{dJ>@oN%y4L)tu?`03iks0_xumWb>7Q(Fu ze6pFW6!5Q?-DW+EUv`N{Qk&MB5LY^p*TKo4UvJz+P0UpFHrfE~eEao)B0HN0Lg^xc z3EGW%qK4>Tm-RD3L&5#(qe8YG#^HF}Kfk^{za01b(Jm-LufR;BIoY2fV4+D@3`YA3 z;(0}`S3d`9kD$~@+X?xrk;Tw9hlwEk8_yVAd(lq3fTnj}2;sWgEaaQgca8kL9(Y04 z%kd5b919H>h4~*uzd}9$2}lg&xfR-Ri5kX2OBnp_sP{KYh@}&XaE5du4w}Q&>(zVU zZFQt_U6G8saN>5VgA8b0l*iEe23-yzp3D~=y>(;&NI^XZW#BcDD3^sOf+(XjENnfC z`Gp`Y8_v{(c}*FvLIeezZEY>@2LPA0#yw0Eubu^}_0|A8ha{wDjWVz6U>Xzk@}@3V zQSUFIXF)YFy$c2MCfYK8BiwGg1KrI|dw;zGRvo{?L6YxZf4w~Kr*R4sj%kClqg%6` znlR1Rs2!e%#?D0+j1&G|ns32(+e1RkadQys`RfrsB9tmJH`;d+3$Jo8N+ZNc3b&xL6++CXF@3w*zSy8>8hPs{;goOf zdII&@a|j4(c%o!15_*P=ZmYle#->G}`~&2++SXI{+C-ncji<)v5Z2S@Oj`RsAD&;u z;LXk=*q_x;knN=CRt>pQ?Au5KH0n!7a+gZ&q!1IOBzL$<&)28naxRlU>zUx-IHLF+*>jcLuH`41KS%GYbX>h&&=?_Aei=y0#iHZqg; zi>TrAVeYVLD$l2s$u{eLw_C4PUE4Wtk05KJ22*5dAZe&PgO7yk)REUHgR0r>R2z-v zoJK9{BWu+Lt=1Q5gCriQ6aMiuEV6LKrX{-lSn%(bo;71Q9){OfDSwB(_b^ig3^*dHk95x-S?~9&PAc9`ajgny?-RtxucIKg=p>6pBQ`dz8nfQY3hqM^@a-$Y$zXvAdb?fy z|NqzD|9}7aAAkGXkKJx-B9RK(3JvQaD{49{JMoa3amY^G<2|38Br22vgD7=+RA)*w zXfVsgL(A;DN`8W7N{$lb*s8ikjI5yLF#RH2rlqz`K_%O(Hx4!CB{%IuO$I{va+)I% zk}8|z+?22ZGo}XkAqwMw__OGwM zo?l<~(gdy4El$cbpsX?`Ah*iD+0(Ev)GM=S#zww)t(zDNOcyZeDJO&~95u$PYmoM% zo#rf3!-2>rauba8h~$REa3qNF#rj=i2$L5X;^$yvWZP`jHPQ&Ebcn9U%#OZoo_1jdrH` zI&pTbfLpDAm((*~6VtS)16ba9$-#*NUP8b@vZ=~$60OjFsiCtH(^eT^+F%MMW&cRs zQPyCJx9Ls5?2Hk`=4mjdelK`Zw}O{yVsekNhZ?tRNY-c^!Kca1AxhpiJ;6?U&N8En4DU_ACn}c^Mye0Y zK3_$;M2MmJi%AZCs|=f)m8{t}>y_-yU1`Iz+#|Q?8hIy5O@s$x*UDeftV+)RG2hI0 zuPMc{VMqwE^}`;lcOm)1rnVK6rBZj-8|r*B@e9mu+Z)Mt1`!on!g!4R(Np27v5{B$XgaEdMY> z9s_e>Sg@C-iLL-kTYdSC%aqUa;qdZ&eBH~iyKjDBU?qYlz13?Lx?iJ=&ls(*2qKyp zyGXsx^(>`fAT)eYjLs8*(D2(JrS?&X<55}$#)U0u#&XEYTkc6oI-B&B#5e+W)!e$_qUC$eu+ol$;)s`A%6X6jR-~MVXL`&GV#5?7YuVj zpLZ7uq)Q-(hqIt0O;wM}DLnH@>X+7abD06|p1*Y~2r&&NTl;IYMrp0sZG5jv<6eF8^3rlf4V2n_j9Mw~p5~9rER1V7Mm1rC z8`BKo446KVx6p9j2#5}FTmJ~uBbJ6|<#YA=GVCSw4wQ5g0&d9QU(vXpTu?!$eaqBq zDK?9tDFM8hT7>j5-Cjb^)~x-eI>>bHn9`Zss)dc7kh0|oDKE$8FhOf`hpRZ$@>pGK zt0KKNR@ZH|z3j)88dq|#G+@dqM;_Gb8!s?R000mGNklB^lm?YZ7ox>DA)hPW=xt*3tAPET8gj zD|uEA3Rs?kJh zD3-D&D+9C9zK#4%O*84auFQlR$`8vd0o646YSi_jD}%^sn1pSSLyRq9xFTO#5^t&0 z!~msafD?nAGD=3;cyjMNi3x9ld0zVVPW%1-^>r^*Z}=wE>8B4^=X@f36a}n=Y;XIg zI&Iw0-TSIh->Ugmy7gL*$_40qHBv>!n4`3fjhkQ}8cRBWzc?({nsGmox}^l%&=@Qd zFe*yWm8hfq39X5!@jbkmQMy3tmW)YBprn9H1Z?Rx-%|Bvr_y?I z3(7x$f&$KC=pO|IEZkALcYoL))D&08gBS;AmQcTf0!C=HWHt)eE?|LvC17`rlyoaJ z3^2EsXx}J?5;i168>?hUNjFPRVxYjE2%)*+_D|G09umseZL@0R?>I~&4+cIT??%8_ zjB<)W+KSt!-Fm%J?e*<;{g2;&lUr0h4XqTrZ5xdW{V+h7ll|`{eLp<4p#zQ6+qme? zBD%zCP~R^q`vuIMJ!mOFx)<}ZWHEw@(?}2-FP@--?GCpKVl_;E7;UL?HAGHmRntR_ zbkmeE&0_;0e;_m;E;hT7bY84j&p8dJsdS<=Otwh3dhjd=LOF|xN0iA}IEGblBaA|n zqhXa$`8>ZqO9GyziOc|F=YerQ+w~ju{(2fFX6J_V{!ZdF#R}oc*mWLekxV_p z)vEvgZMR-^ss~H z#_AJP?Y4oEn=%0t9egeUr{SRL$QDImo6xPjVL1V(I@s(d16pUENC-z);HY=f^K2ZC zhrOoWA*S2FyNT~r;(lccg|=aV3B@95a1gpB4HO{8WPiA)SpA~-7zj;}C|-E2?CugQ zrDPH#+*|0MN$GoZ=Jhzz8dR`xhH7A(iL3Sj>%lpuk<=QKa^oDQnr73t-*(b|tTgUs zv-%7+%IVrz0_D3rjB33Z)#y-_pm^99 z)Vu(zRnzyVNAv*WVpQn)^slKJrJdoyvcC@l`G*w1G)#=rq-M{O5jEPn=WeKCGP2&r z003O_UWhbETMRZvxOnGsH6HiF{&moe!8}Vmag)_JU}M;@D>+u04oEz}MJ=5DV16&u z<3;o*k}!}M$kJpnhK0j4AZQ9z>PV6=mFy0bRlV#K2gdn$BLVxTrqFlzeb=wGhw^T_ z{`>Dgq!}4>pRT0X&I|+6AGnr8tsz}RKwLnv_aiUU$|Joz7HYamX*5^8ZfZ#JMuxlA z&CX#eCShwR7>D6?5|_TC_q+D1K-;gNGm|gPHbiV?XDhHmP9$XRvMB5Wh$bI!)v$>Y zez#xwUbsJE*GsUZo6^nQyFG!Q+O*2^YdMERI7 z(vl{{kG}2m;aS{N=jIO#N;FuGFg;hSVud?0d2K4?6SN4HO7vf5J~pX+_j;a<(af_! zX4pu_9Zh!9D>Rc~*-^i$Ut8wXOpVsQ5F5G!?`dCY;Rau2tZ016Tw6xC2; zpJ?eVN#nt`G{^}d6aoFgg&6yiMltqSs=RsJ?&S{&+e3`SKHZS)}uE z9sx_Pk!E9KC{~j=>PhzdzB5yzNCMif+m$vQOEywQ=5-HR{q&A*H7@?B?+0V2ql=p; z0*2jgGbwLLWqCH!dgP4>p~e|%CKkZ>l34O!arUS@9BoAx{W}Xr`c7(DuA}@%jR&jdQ9DnFM2sf3 z6j@j-i1*Z~a||?!nC*p-2Ik`_*NgN5F4M&B>b2eeIEc8TS62JqcH3`Hhwk5BfN?&~ zBVZ|Rzwf$ruSDKv-T(IeNwVzIZoA!Xl;5(V-W!nXxnJ82U})8nt1FLL=Vw_4=T{mZ z;Hs|(VV7!~xh#YrkbHF%i`Xa}a-w@f^%KHmk03f2qunCONl=9vsb{-ET5@t~6AJn~ zFA!u`6YUUTi@{n;j+xs|j!4NWzv!0iAw9v6o1kqN3MOdGibwBPk$|J+2+h{SPb9`| zC%l^lcoTT>@=oV^(Cql8n6;G?*aU70zO<&(t4io7@^=?Vz7i(fO>et;Dk=>{K zJ*Bs<{x0iqrb;2nM-<*78V^}M*s}GeGaJSp; zcKfh;3gaA<30M-X)Uw-kx82wo9D6l~qw39+-L-l&kW#>A7G-T*Za=!K)Kze6Qv6z^ zYhbItFq`a&i}aP>e02pG!-^!AnWT`{W00N)Bl?8o0F37mE|)P1Pey-Qa#XQRx|djJ z_0ecGtK~%+Psw%4Xw?i`YNBq-toJu{!irq6z&ASS#btN6NWhR2Fc3`)1p*dz0;XY6 ziHD4^Ax@8afwNBa6|FkGE{J&{)!1IpTLCu4L<+Tf$mEiZlVxx{AETNV{&+a-UtW&K zgL3sy9$hbD7}95M?xJ~5PQ1-fc*m-kPg&brAzGLvX2<@n#iGeQ&xvs38YKivPuLT8Xyq`0trXcaYSTH>6s97PM@x$@(`utP5 zbR`XfvGc%L`loU>EdZ0Q@LrKelNoKIl$a55EhS{}d3r1yVa|ePqP0bS zJd6z8|NdY9CMB%2A$NLei&hN*>dlBC`NEosWc6CP3zq)5IzCQ~9aXCuODbu|j#?1? z#ejDBpsMy4PKISrXq20<+YgQ&OqE^L!LA(Ol3Jf%4Cg_C6%(SK^derQ&#TyEZ(vqW zw;~W5n&d%diU~6FZ&12+z!J?zQ>=0vQiJ#O97PkMRSX)}jyxulY>0?xQ-ia)d#3#z z?xZ8*$~$j^mMpWaqoP2-k&4ac$(mKS;2&K=w={;(HbgmyayX{ggmi(LzHK3t2Wi(e zGMTI(SF81QH<{HJw0GBJdPhZEHX!%Jw=lpg@SzCzcsRa1zeqVP|CZs`7d0o>AZdOW zQ7=uLzSn|039h_<}(NyxmE&eKa><9Hkf*#|7ZuSh6VHylb~CiPj% zvmsrC?!W$*e<;#jt;}Q>jW#Slggu$@UO)?&Z^Owt=;cLLL9fHN>knxVMU{}n(5OF=1Y6xsBW)ln!fF3 z%Tpj=aJ=q2WhAR@p7zJ%FsZee2F1ij$-aYS^hp%1I=WuBw;y&uaMA;QNv23vUbytbi{@_rLt-e}NB(E4(l?qc^`CcxHSJSG%sy1fj=xkR=() zcR^M_fByN`H#HC1KSZeQHARsstfmM|kSgXl$t=TCU#mr2T!6?GaL~=wABa=|3y~<) zm~=7QThXE(xz)slo>+Ii-4^q)R}{q*?zX0LAz4=WC@VMb>DSL+|N1}v z_2*xIsmQ}oyzI5tcXY6MAxswK=S)98cMCnt`*PxYU@X90=7OFj#jp81vk&ND;9KY3 z3ybWeLu8qQhdIdE&N0Bg3u2@Nv zZ6OUu3K)EOGUKzoew(KJoknyRg5aYAMU~9LkdZOe2^b<86ZyFSps1B==gkQ?@9~{7 zV{%?{fO2y|l;2p9MAYg7ku@s|nOSJVl5E#@dYQPslV@M8`ptH8RMU)@dB4WVe|E0S zBE5U=#Kz-HYjmNxxzQ8uE2I0m+icgn-Nrg&5p*5?*tI`*?aO{Tjt^PQU5d}K93kU# z!?~i|_tVVVeKjf&1(I?RJPFa}t1czhk*`W$C|MJ`fT8y^3 z|6fCP%I>~BC5glwr-!|!JKMN?3*lDT>SPaZWBXG|m)AD1>6=ZDha)lppM?h@;A_1T z3#@XC7{&=pO(mvBdd#F0q@uLK6Xuf_g85OV%J9^pGB(p*S#4^fb&MbsNcW1AzI~=1&PQNa3$fKMt z&);*Z9n+YI6p3ogXch9DU2es*pHRaE;upjtI#R&&Z3Gengve?BSs7-_NiHUi5y_S2 z;d3jqvyz*sgoGZnWn%0XQU4fK`*Q;2B0l;)YsONr0%qJC#s#ZsjQiwmKT(rAW?{Ow zh_d$0vjAdiLd_7G000mGNkl!kcFdr0r6cZ zk#RzPuz-NU(c(Da)me(vu60uBdWv=~?Ji zS24TuDp>X1?|*xGIShZkjL&-};4^S_0)7Ko-u^{lygx(&AQR0O5}TS)h?8%FsQ#fa zFWD@UU~NYhwtEF3)SR9~Mz@4qjUiXSNdnGEH>PA*K)~s-vjj}9{M`r`>I4iY&LYw? zMrpD$!sP@EwK7NfhcFb*Ub!v-y#Qi%Z+h(VG_{oT z@r<{C6)@vHpax2qi8$c>5K(d#roi*-7Xhj17%~MMQeq)Z8soNQWgImKDk-TKcW!Xb z!r=5YK*1bM|2Ut3Q(7&B%V~0mT8v2d<^-993H7=^Q|ir*t>ix+lZU@ButBpfZNn2% zo{5h{z_r@(U2&t+KggF@g_y}N>XX1_oTzRS& z(lEEYJ}zW+-?q(W-OJz0>*Q9EPZDXGLSHQ|d;`QKNrDYHi7~=8Ok^n{`pl_xNzA$1 zs_!%`*2)M;pKc+I|AVS<$aV0k$~XBVCyW|J)pYQQvp_hiM8M@dmk}^6r+}G~*J8-I zpb!ryc(==@yxIB}TP&ld_Ps_QaNjqQl*UZaec5j|f zHGlF?frjJ!E&Gyq>VB1!InSqd_Ck4P!(SNk#p_z^TO94mP>j>K5dqh3|6-jwU$vdH z;|*9`TE+>WtM7`BDK&bC{{|3&Ngio!4Q?gajao6x&Qc)MlvI}dEbUd)aO}F3#3Wu}Y0+FkF8@vo8r&!0!Y*zl^v=L*bL)W|Kk3Je9_Snc-Hk z?4Z|r8_g=NzJFBcb=HrE!~W%UJRU*o^{zkKb+Fr}>sl$^m3(g-zqF#CUd1^*Il-(r zThX>z@kWVJwX}9?rU5faAyL4l{JAEsg`pC&cnh^KIoBf0(#bNf;4EhDR42}xQ)vCNO+mW43c+UIt@OWnezU=kGV(?8_F2Y-~jtXjLViXOS1vMWK zis#%^9Q8C{mu-MV5v3ZrdVDEXh+!CBU-mD*UY`H@wSU=5y(`Aa(`V>0btJ0RcN_Oe z$<^7Ny^k^G)T<$>dbL@v)+@=_QbVih?7LR}*>xSdMUB9z;ke8pMi4Ww$W`@;nA2Mz zM?n;yhEHG-0h4EW1_6uGsb)kw`YDyD7`>BYF zRIfX>3}Y7>M!WVBFqYvHO+{J3d~G4_)ff}Ae?A-(Gbyx4MPKEv2vSGX69yBS>cf>^ z{_(hf-9P{Jd^ik12nozu;!*)ioqJFVrmBu!_hukOJ*N4BfPf@TzSo4^xL|GMILfmf z_xr}$t5wrW3u27v+!47| z=AGzrP-aBQO?#P0)<@fT9^?m~Aee7F!rMsnPteS0N8O)Pm%P!$E4?KmYmH z{`Ei!ChjrK^{X2@i%^~_vP`-*eMZctkYnXsd5ki58@e^ONSV7OR=r*XuGOAjfK8Cu z{)!rB2e<63Y~LY`F@F071SAwo%-4{`=QS=p_H2EYlVv3aYB|it*K+pSR}{nZ`78+6 zVwUgyV(7c>x9?BSufxCpDcP3^coDuj0pkf}?KcBT3d625tWQ0bz2$0ODOkmSwpC6?Y8`ggyohif4;Y?Qw6yUi|Icy;z zEcEVNI+1V`9vIlfpg*N4q4_%yoS&mgj5vt_kAvI##+o} zpPQ}deK6Vc$Pj9@&j|+&NvMb8@W&s&UVjcPbYcv?%2d%-Nq2S&Gh|696U#IS1-hM2 zKO1vde7x7%;N2aFs2Wq+c1l|JMoXc*-fh>LO}}0n&oCgj=sYYU;8fkt6Z8COmT2gh zfT)#(ThaRW@@@SknYY*{wTGt9HW94HF`hW?+<|*$XgBx;hO}iUJ8i zIwNx>TuGA?YP8oFxAhrCg)C={($RUzH6{k|85#z9rNSBpd&$1*^>(w~Zu?c=SpRA@ zJ4%&$7qlm<)G|-ZHSJ5=R<&cHax4kg49;f|A>(}LQS-bc!+Br=X1oWqtMa6Oq`Hgi zepOwX>7aG$LU#a?fAVh}XT!E~r_)5a7zq3-?NtOlUCZQ&~cF9ntQT zl)UXaPX5rO=3Td-7#4BKmH!yF>u$5#Nt^R(EwyiNy6BAXH3_2LfPAm~m z{;3jhr4%(9&PN*yQW8qT5TysWROuGt&rMIF=9O;s*v03qBtMbpvPOyE*36k;0%p7i zOdqiPo%}%Meo4MlVtghfTAy?xC6W@unsn6J%BCc`cDWk1@kmQ@hWk}%FJwAcK$Zhl z*q->6AC?+I+;`T;O1nYJuA=u=<^+xnh zX1NlTv(V7;ro(K?YW#wu=(WryIpc|3>)9mYybE)G6A2&7a`!~&l%wk zFg>7RYGe=R1J2WCCu#Ja|-n##i>Ut@?ho z>dn|+H}t46qd@x3Og$}N*`kg*XCcyOb1p=Msl`*YB{fWA1PKR{E9u}ormBpgsD=equ{J!fea%dgoir-1R&uLmfHw16>BwGl zaIcnD>WedJm#Fl;ajpWsEI!{muY(zPfqa3#J?*|d9lL)n`qCd9pNxQS_i5!hvnIYG zBzbJ5nA@z|6NB{itjr?JnSey))F}BB0T;H53Ah>qP@g(u$+7MyRjpLIvc~%U+xOkm zP8yc=!i7P#d!(|C0?!mXi07rBg_w=1sl!Ez8S}j)hwLo1Ii)XL?BPtMTaEoBO7~4U zxWl@pktUnnZZECSz&M3ZK*0BE&oU)n5xP65vKVkI;%rL#H$*{vcPc4)^++M0i|!R}R{kQ+eK?{vunC&+PB_~M%Y~uNI5v$))69@@M!i)d z^IVM6zS&-3JG=G5f@(d%R<8@F)*Nit6`1M>000mGNklq* z?}FBv88Va$m8qcw)KxxaF(!G|;D{)e984A7?Wi}$Wt!L>yHs~Z=IBbACFgxlrMoEo zoAY0g<%I{I%ty@#tvj1|Ldqpz1&{f{5t z{_&sw{{6>ywaQT6&CqPx|Bcl@(#y^<|9Xk&pG$Ih%llh7`yv9awYH)hQq@~9P>Z?q zoKcebGz;)~m2M?sc}CnWT7)|j@K=3G*>%}wp<40hAtCETy%fXg`Ef+?^Q}}31-h+; zokdxAEh|otu2HSZd8%)>+s%)^ecSG~D>b8XtKwC+u2sNtYX|8rf2Bp`k1F?J<=DA| z%g%oG?h7zaY@+%{h!T~fL?x#WL9|P*_ab~4qAjCu@%yg*wQFDY({W@nu7XX_?*u;` zqpBYt@`ao<7AAh<9Xd(L{!icGtE|TjN>lP`C3~xthqAIMwK-8dW5GFSL4H;+<1*yI5t)bAGYpPZm;S1m9lmtP0GJL{mXy){rmSP*{$p6 z#4tU(y_sWK&9LXKp;#P>XiRvXfvU=2lRHvx7oTiYT zm2NrW(u^2a0xRJ6f;K_7onE#&Cm}m~p56MmFEgRJUKYM-Z|RyLvT#uWE1BCj>vjLM z-NuPfwfQ{`P&h+Zd1SkJ(6~SM)x|zCV$0mH(-sC*E1f-_O@Q93Qmb zZ3*6qfWOw~bpF-YrD0{2UYZ@otk$RdM;+4&ZR6SHC2xS>LO2e);Xn$mzwkiJ-CoBadHE*_3yr@ue zY-tse>$mG}w_ShRZMM7hdZnj$Y@`BilmcGKT~YzBWOuJ}jzbicf@EhuQSeGi;WzUp z>m?Le$YJ?QdLsKbzwK9|gc3(rnme^)FH3VXqP;G~F4%cys;lNAJ8QPv&2GDI+h4$_ zgH6yMHC=l=Q~&=bQZ7Z5dnCDi+?IPOQt?TQj|#cWZSIWLm^RuSp`C�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 DYfeh4 diff --git a/docs/verification/vq07-progress/1bb878e03/off-baseline.png b/docs/verification/vq07-progress/1bb878e03/off-baseline.png deleted file mode 100644 index e4d4f428459ba3e911747efb769a3330b91a8b4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28892 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 diff --git a/docs/verification/vq07-progress/1f73e559c-native/scatterPointOff.png b/docs/verification/vq07-progress/1f73e559c-native/scatterPointOff.png deleted file mode 100644 index f07fee174029fda24369f5545be67924469aa4a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55848 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 diff --git a/docs/verification/vq07-progress/4f8fe47b1/inside.png b/docs/verification/vq07-progress/4f8fe47b1/inside.png deleted file mode 100644 index b7183fc11e33c810e423f00aa3ab90a1fe936d7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76219 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%0AX{2q086H} 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 diff --git a/docs/verification/vq07-progress/4f8fe47b1/pointOff.png b/docs/verification/vq07-progress/4f8fe47b1/pointOff.png deleted file mode 100644 index 7ef2846e4ba473356e89dbd36f3adc8c523cca97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33309 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 diff --git a/docs/verification/vq07-progress/4f8fe47b1/sunOff.png b/docs/verification/vq07-progress/4f8fe47b1/sunOff.png deleted file mode 100644 index c6bfb50cdd084daacfcc1384280fbd632bf7c40e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36588 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 J%>M-@{~x9cT%Z5| diff --git a/docs/verification/vq07-progress/4f8fe47b1/wallOff.png b/docs/verification/vq07-progress/4f8fe47b1/wallOff.png deleted file mode 100644 index 0fb14c6f812fae026a6abdbd826043540721b3a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43828 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 Md!nn3P_+vGAAz$;-~a#s diff --git a/docs/verification/vq07-progress/640c103-browser/scatterOutside.png b/docs/verification/vq07-progress/640c103-browser/scatterOutside.png deleted file mode 100644 index 1e1e0c5a5058978b583c324ea40c4867c4c29e4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32743 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 diff --git a/docs/verification/vq07-progress/640c103-native/cameraCut.png b/docs/verification/vq07-progress/640c103-native/cameraCut.png deleted file mode 100644 index 5a1d63c9cbf7daa1451031d441a7d1308737c5f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130454 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%0D>w+ezv7&{DNDq?9 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%0AorxZ0o7+cLK2v1DQs0mW ze-kMzW}=qvqE{`@-WmCSpy0@zoYf~KiFTKlts2sjSYTVwzkB*EZ@rAU5k{mmeBxvc ztsC<^PAZY}Zi`O${r(U8qKeVOA_>cM%-Y^_;lYlAWHiwCg0d+T?ngemiP$E>iFU$K zu{x`4e0K^vh+l1A^+=bW{7<#`4|w3yvs~WqI1Vm)d|gmV<W^5Cb}MFSW{s9Z>o7O zhptjR5;3f1B9-g%zTnL8Q1ArqD3@nZagO%`=8CIRV%PGQ;T+L70rmQIMeP`H{jxw zX4F3#sGWb7-a4xg9TSqg^2V>10q%zUHhm&>vi0mwGKEP9oO#59N5_#c=T>_H!uG94 znIF--)^H%m*h?m@L)33Yqr(r#mCQX;%wci7!8#9Ua5w#m9EHCTnBrAV9xDWGdGu