From fbef131bcb064e79e9c0c0e82857f984c91558c5 Mon Sep 17 00:00:00 2001 From: sindoring Date: Mon, 13 Jul 2026 15:35:45 +0400 Subject: [PATCH] docs(M01): claim streaming focus contract Work-Package: M01-RND-STREAMING-FOCUS-001 Agent: sindo-main-codex --- .../claims/M01-RND-STREAMING-FOCUS-001.md | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 coordination/claims/M01-RND-STREAMING-FOCUS-001.md diff --git a/coordination/claims/M01-RND-STREAMING-FOCUS-001.md b/coordination/claims/M01-RND-STREAMING-FOCUS-001.md new file mode 100644 index 0000000..4fb41d3 --- /dev/null +++ b/coordination/claims/M01-RND-STREAMING-FOCUS-001.md @@ -0,0 +1,84 @@ +# M01-RND-STREAMING-FOCUS-001 — Explicit streaming focus contract + + + +## Ownership + +- Target: M01 +- Program: RND/FND +- Owner/Agent ID: sindo-main-codex +- Branch: `work/sindo-main-codex/m01-streaming-focus` +- Lease expires UTC: 2026-07-15 +- Integrator: M01 milestone integrator + +## Outcome + +Introduce a scene-free `StreamingFocus` value and make runtime/test streaming +consume it through an explicit source or public setter instead of discovering +the active `Camera3D` from a viewport. + +## Non-goals + +- Extracting `WorldRenderFacade` or `StreamingTargetPlanner` from the monolithic loader. +- Adding direction, velocity, frustum or multi-focus planning. +- Decomposing the player controller before M02. +- Changing terrain, M2, WMO, liquid, cache or LOD formulas. + +## Paths + +- Exclusive: `src/domain/streaming/`, `src/tools/verify_streaming_focus.gd` +- Shared/hotspots: `src/scenes/streaming/streaming_world_loader.gd`, + `src/scenes/streaming/eastern_kingdoms_streaming.tscn`, + `src/scenes/streaming/kalimdor_streaming.tscn`, renderer diagnostic tools, + `docs/modules/world-renderer.md`, this claim +- Generated/ignored: local extracted assets, renderer caches and Godot import metadata + +## Contracts and data + +- Public API: immutable `StreamingFocus`; loader `set_streaming_focus` and + `refresh_streaming_focus` +- Source adapter: explicit `streaming_focus_source_path` may reference any `Node3D` +- Migration: runtime scenes use player focus; capture/probe tools explicitly use + their dedicated camera as the source +- Compatibility: streaming radii/LOD/cache behavior and coordinate contract v2 unchanged + +## Dependencies + +- Requires: coordinate contract version 2 and golden fixtures at `52e1b2b` +- Blocks: M01 renderer/test focus exit criterion and later renderer facade extraction +- External state: no new dependency or proprietary input + +## Verification + +- Commands: streaming focus contract/integration verifier, renderer baseline + manifest/calibration, headless scene smoke, coordination/documentation gates +- Fixtures: Node3D player-style source and explicit capture-style setter +- Fidelity evidence: existing seven renderer checkpoints and build-12340 coordinate + calibration must remain unchanged +- Performance budget: one scalar focus snapshot per configured streaming interval; + no new per-tile or per-chunk work + +## Documentation deliverables + +- Inline public API docs: focus value and loader public methods +- Module specification: inputs/outputs, ownership, lifecycle, failure/recovery and source map +- Data-flow diagram: player/editor/capture source to focus contract to loader +- State/sequence diagram: focus sampling and refresh threshold sequence + +## Simplicity and naming + +- Important names introduced: `StreamingFocus`, `streaming_focus_source_path`, + `set_streaming_focus`, `refresh_streaming_focus` +- Simplest considered solution: one immutable value plus one explicit scene adapter path +- Rejected complexity/abstractions: provider interface hierarchy, service locator, + multi-focus registry and predictive motion fields +- Unavoidable complexity and justification: editor viewport remains a separate + adapter because its camera is owned by `EditorInterface` +- Measured optimization evidence: not applicable + +## Status + +- State: active +- Done: scope and contract boundary selected +- Next: implement contract, runtime/test migration, tests and documentation +- Blocked by: