# M03-RND-FACADE-001 — Renderer facade first seam ## Ownership - Target: M03 - Program: RND - Owner/Agent ID: sindo-main-codex - Branch: `work/sindo-main-codex/m03-renderer-facade` - Lease expires UTC: 2026-07-17 - Integrator: M03 milestone integrator ## Outcome Introduce `WorldRenderFacade` as the only runtime/tool caller surface for typed streaming focus updates and read-only renderer metrics, while retaining `StreamingWorldLoader` as the unchanged internal implementation. ## Non-goals - Extract the pure target planner or budget scheduler in this package. - Add environment or entity-presentation commands before their contracts exist. - Replace the M02 `TerrainQuery` gameplay boundary in this package. - Change streaming radii, queues, cache formats, visuals or quality presets. - Mark M03 complete or edit its checklist/Evidence. ## Paths - Exclusive: `src/render/world_render_facade.gd`, `src/tools/verify_world_render_facade.gd`, this claim - Shared/hotspots: both runtime streaming scenes, three renderer capture/probe tools, `src/tools/verify_streaming_focus.gd`, `docs/modules/world-renderer.md`, `docs/modules/README.md`, `RENDER.md` - Generated/ignored: local `.godot`, native build outputs, caches and proprietary renderer corpus ## Contracts and data - Public API: `set_streaming_focus`, `refresh_streaming_focus`, `renderer_metrics_snapshot` - Scene adapter: explicit `streaming_focus_source_path` owned by the facade - Internal implementation seam: `streaming_world_loader_path`; callers must not read streamer queues or call its methods directly - Schema/cache/coordinate contracts: unchanged - Consumers: runtime scenes, capture tool and renderer probes ## Dependencies - Requires: M01 `StreamingFocus` and merged M02 closeout on master `4f566b1` - Blocks: environment/entity/ground facade contracts and planner extraction - External state: none; contract verification uses a test double ## Verification - Commands: dedicated facade verifier, streaming-focus regression, renderer baseline manifest/dry-run, coordinate boundary and repository gates - Fixtures: typed focus, source Node3D and read-only metrics test double - Fidelity evidence: no renderer configuration, planner, queue, placement, visibility, material, animation or cache behavior changes - Performance budget: one source position sample per process frame; target recomputation remains throttled inside the existing streamer ## Documentation deliverables - Inline public API docs for facade properties and methods - Updated world-renderer module specification - Updated data-flow, sequence and dependency diagrams - Updated source map/status and renderer notes ## Simplicity and naming - Important names: `WorldRenderFacade`, `renderer_metrics_snapshot` - Simplest approach: one small Node adapter delegating to the existing streamer - Rejected complexity: service container, generic command bus, streamer rewrite or duplicate queue/cache state - Unavoidable complexity: scene-relative source and implementation paths are resolved on the main thread with explicit diagnostics - Measured optimization evidence: not applicable; behavior-preserving seam ## Status - State: active - Done: worktree and bounded claim created - Next: implement facade, migrate runtime/tool consumers, document and verify - Blocked by: ## Handoff - Commit: - Results: - Remaining risks: - Documentation updated: