Files
open-wc/coordination/claims/M03-RND-STREAMING-PLANNER-001.md
T
sindoring e887c3bad5 rnd(M03): extract streaming target planner
Work-Package: M03-RND-STREAMING-PLANNER-001
Agent: sindo-main-codex
Tests: planner/facade/focus/coordinate/manifest/shutdown contracts, seven-checkpoint dry-run, repository gates
Fidelity: preserves wanted/retained radii, boundary prefetch, editor preview, queue priority and cache/render behavior
2026-07-16 00:08:02 +04:00

3.6 KiB

M03-RND-STREAMING-PLANNER-001 — Pure streaming target planner

Ownership

  • Target: M03
  • Program: RND
  • Owner/Agent ID: sindo-main-codex
  • Branch: work/sindo-main-codex/m03-streaming-target-planner
  • Lease expires UTC: 2026-07-17
  • Integrator: M03 milestone integrator

Outcome

Extract runtime/editor ADT wanted/retained-set calculation and boundary prefetch selection from StreamingWorldLoader into a scene-free, deterministic StreamingTargetPlanner with typed focus input and asset-free contract tests.

Non-goals

  • Change load/retain radii, boundary thresholds, queue priority or LOD policy.
  • Move queue mutation, async jobs, cache ownership or GPU finalization.
  • Extract RenderBudgetScheduler or asset services in this package.
  • Change cache formats, renderer profiles or target milestone status.

Paths

  • Exclusive: src/render/streaming/streaming_target_planner.gd, src/render/streaming/streaming_target_policy.gd, src/render/streaming/streaming_target_plan.gd, src/tools/verify_streaming_target_planner.gd, docs/modules/streaming-target-planner.md, this claim
  • Shared/hotspots: src/scenes/streaming/streaming_world_loader.gd, src/tools/verify_coordinate_conversion_boundaries.gd, docs/modules/world-renderer.md, docs/modules/coordinate-mapping.md, docs/modules/README.md, RENDER.md
  • Generated/ignored: .godot, native DLL, generated cache resources and proprietary renderer corpus

Contracts and data

  • Input: immutable GodotWorldPosition, available-tile key set and immutable StreamingTargetPolicy
  • Output: immutable StreamingTargetPlan with focus tile plus detached wanted/retained tile-key sets
  • Tile-key representation remains the streamer's existing <x>_<y> internal key
  • Schema/cache/coordinate versions: unchanged
  • Consumers: StreamingWorldLoader runtime/editor refresh paths

Dependencies

  • Requires: M01 typed coordinates/focus and integrated facade package a100ced
  • Blocks: budget scheduler extraction and planner performance regression gate
  • External state: none; tests use synthetic tile catalogs

Verification

  • Commands: dedicated planner verifier, facade/focus/coordinate regressions, renderer manifest/dry-run and repository gates
  • Fixtures: center, edge, corner, unavailable-tile, clamped-radius and editor cases
  • Fidelity evidence: expected tile sets are captured from current formulas; full renderer dry-run retains all seven checkpoint plans
  • Performance budget: planner work remains bounded by square radii and creates no Node, Resource, task, cache or RID

Documentation deliverables

  • Inline API docs for planner/policy/plan
  • New module specification with input/output table and data-flow diagram
  • Updated world-renderer data-flow/sequence/ownership/source map
  • Updated module registry and renderer notes

Simplicity and naming

  • Important names: StreamingTargetPlanner, StreamingTargetPolicy, StreamingTargetPlan
  • Simplest approach: one pure calculator plus two immutable value objects
  • Rejected complexity: generic graph planner, priority framework, service container, job ownership or duplicate available-tile catalog
  • Unavoidable complexity: boundary-prefetch cross product must preserve corner behavior and existing string tile keys
  • Measured optimization evidence: no new optimization; exact extraction

Status

  • State: active
  • Done: claim and isolated worktree created
  • Next: implement pure contracts, migrate runtime/editor refresh, verify
  • Blocked by:

Handoff

  • Commit:
  • Results:
  • Remaining risks:
  • Documentation updated: