diff --git a/coordination/claims/M03-RND-FACADE-ENVIRONMENT-001.md b/coordination/claims/M03-RND-FACADE-ENVIRONMENT-001.md new file mode 100644 index 0000000..1d2e69f --- /dev/null +++ b/coordination/claims/M03-RND-FACADE-ENVIRONMENT-001.md @@ -0,0 +1,96 @@ +# M03-RND-FACADE-ENVIRONMENT-001 — Renderer environment snapshot boundary + + + +## Ownership + +- Target: M03 +- Program: RND +- Owner/Agent ID: sindo-main-codex +- Branch: `work/sindo-main-codex/m03-facade-environment` +- Lease expires UTC: 2026-07-18 +- Integrator: M03 milestone integrator + +## Outcome + +Add an immutable world-environment snapshot accepted by `WorldRenderFacade`, +delegate it to the existing DBC sky controller, and migrate deterministic render +checkpoint time setup away from direct sky-controller property mutation. + +## Non-goals + +- Change Light/Area/Skybox DBC selection, interpolation, fog, sun or shader rules. +- Add weather, indoor lighting, new clock semantics or build-12340 parity claims. +- Extract the sky service or move its Environment/Node/RID ownership. +- Change runtime scene defaults, cache formats, streaming behavior or target status. + +## Paths + +- Exclusive: `src/render/environment/world_environment_snapshot.gd`, + `src/tools/verify_world_environment_snapshot.gd`, this claim +- Shared/hotspots: `src/render/world_render_facade.gd`, + `src/scenes/sky/wow_sky_controller.gd`, both runtime streaming scenes, + `src/tools/capture_render_checkpoints.gd`, + `src/tools/verify_world_render_facade.gd`, `docs/modules/world-renderer.md`, + `docs/modules/README.md`, `RENDER.md`, `targets/03-renderer-facade.md` +- Generated/ignored: `.godot`, native DLL, generated resources, caches and + proprietary renderer corpus + +## Contracts and data + +- Public API: immutable `WorldEnvironmentSnapshot` and + `WorldRenderFacade.apply_environment_snapshot` +- Snapshot input: finite time-of-day hours normalized into one 24-hour day +- Adapter: explicit `world_environment_controller_path`; facade/controller retain + no ownership of caller snapshot +- Schema/cache/coordinate contracts and runtime defaults: unchanged +- Consumer: deterministic renderer checkpoint capture; future world-state adapter + +## Dependencies + +- Requires: integrated M03 facade/ground-query master `cb103e1` +- Blocks: completion of the facade environment checklist slice and later sky extraction +- External state: none for contract tests; visual comparison still needs proprietary corpus + +## Verification + +- Commands: dedicated cold snapshot contract, facade delegation/wiring regression, + capture source-boundary regression, renderer manifest/dry-run and repository gates +- Fixtures: normalization, non-finite rejection, missing/wrong controller, + exact snapshot delegation and existing runtime scene wiring +- Fidelity evidence: preserve existing fixed-time application and all DBC-derived + visual logic; seven checkpoint plans remain valid +- Performance budget: one immutable value allocation per environment update and + constant-time main-thread delegation + +## Documentation deliverables + +- Inline public API docs: snapshot, facade adapter and sky-controller application +- Module specification: update existing world-renderer specification +- Data-flow diagram: snapshot producer through facade into DBC sky controller +- Sequence/state/dependency diagrams: application/failure path and ownership notes +- Source map/status updates: world-renderer module, module registry if needed, `RENDER.md` + +## Simplicity and naming + +- Important names introduced: `WorldEnvironmentSnapshot`, `apply_environment_snapshot` +- Simplest considered solution: one immutable time snapshot over the existing sky implementation +- Rejected complexity/abstractions: generic weather graph, duplicated lighting DTO, + event bus, service container or alternate Environment owner +- Unavoidable complexity and justification: facade resolves a separate scene-owned + sky controller because the streamer does not own outdoor environment rendering +- Measured optimization evidence: not applicable; bounded constant-time adapter + +## Status + +- State: claimed +- Done: contract scope and ownership published +- Next: implement value, facade/controller adapter, migration, tests and docs +- Blocked by: + +## Handoff + +- Commit: +- Results: +- Remaining risks: +- Documentation updated: