Files
open-wc/coordination/claims/M01-RND-STREAMING-FOCUS-001.md
T
sindoring fbef131bcb docs(M01): claim streaming focus contract
Work-Package: M01-RND-STREAMING-FOCUS-001

Agent: sindo-main-codex
2026-07-13 15:35:45 +04:00

3.4 KiB

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: