4.0 KiB
4.0 KiB
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
WorldEnvironmentSnapshotandWorldRenderFacade.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: