Files
open-wc/coordination/claims/M01-FND-COORD-BOUNDARY-GATE-001.md
T
sindoring dd412e6d0d test(M01): close coordinates and seams milestone
Work-Package: M01-QAR-INTEGRATOR-CLOSEOUT-001

Agent: sindo-main-codex

Tests: all M01 domain gates, unified renderer dry-run, coordination and documentation gates

Fidelity: five build-12340 points, raw ADT and mapped AzerothCore spawn evidence; no 1:1 claim
2026-07-14 12:13:43 +04:00

6.5 KiB

M01-FND-COORD-BOUNDARY-GATE-001 — Coordinate conversion boundary gate

Ownership

  • Target: M01
  • Program: FND/QAR
  • Owner/Agent ID: sindo-main-codex
  • Branch: work/sindo-main-codex/m01-coordinate-boundary-gate
  • Lease expires UTC: 2026-07-15
  • Integrator: M01 milestone integrator

Outcome

Route remaining GDScript world/tile axis conversions through CoordinateMapper and add a repository-wide gate that rejects new manual world-center, axis-swap or world-to-ADT tile formulas outside explicit contract/native-oracle boundaries.

Non-goals

  • Rewriting model-local M2/WMO vertex or placement orientation transforms.
  • Moving renderer distance/LOD geometry out of Godot space.
  • Replacing the native parser boundary with GDScript calls from worker threads.
  • Changing coordinate contract semantics, renderer radii or cache formats.

Paths

  • Exclusive: src/tools/verify_coordinate_conversion_boundaries.gd
  • Shared/hotspots: src/domain/coordinates/coordinate_mapper.gd, coordinate tests/docs/ADR, streamer/player/sky/terrain-probe consumers, docs/CODING_STANDARD.md, this claim
  • Generated/ignored: Godot import metadata, extracted assets and renderer caches

Contracts and data

  • Additive mapper methods: Godot position to ADT tile/local and ADT tile/local to Godot position
  • Native exception: one formula definition in src/native/src/wow_chunk_reader.h; ADT/WDT loaders may call it but may not define copies
  • Oracle exception: verify_render_coordinate_calibration.gd retains one independent M00 formula to detect common-mode mapper regressions
  • Model-local transforms are outside the world-coordinate gate

Dependencies

  • Requires: coordinate contract v2 and M01 seams through 7c64e8d
  • Blocks: M01 coordinate-centralization exit criterion and milestone evidence audit
  • External state: no dependency or proprietary input

Verification

  • Commands: conversion-boundary gate, mapper/golden fixtures, streaming focus, identities, renderer calibration/manifest and repository gates
  • Fixtures: Godot/ADT tile center, local offsets and exact boundaries
  • Fidelity evidence: existing build-12340 points and raw ADT/server fixture remain unchanged
  • Performance budget: mapper allocations occur only at adapter/update boundaries; renderer distance/LOD math remains in Godot scalars

Documentation deliverables

  • Inline public API docs: new mapper methods
  • Module specification/ADR: boundary APIs, allowed exceptions and gate behavior
  • Coding standard: mandatory review rule for cross-space conversions
  • Data-flow diagram: existing coordinate module diagram updated for direct adapters
  • State/sequence diagrams: unchanged; pure synchronous mapping

Simplicity and naming

  • Important names introduced: godot_to_adt_tile, godot_to_adt_tile_local, adt_tile_local_to_godot, verify_coordinate_conversion_boundaries
  • Simplest considered solution: extend the existing mapper and scan source text for narrow high-signal formula signatures
  • Rejected complexity/abstractions: generic coordinate algebra framework, native-to-GDScript calls on parser workers and a broad numeric-literal ban
  • Unavoidable complexity and justification: one native boundary and one independent test oracle must remain explicit to avoid worker coupling and common-mode tests
  • Measured optimization evidence: existing renderer distance/LOD scalar math is unchanged

Status

  • State: ready-for-review
  • Done: mapper extensions, consumer migration, repository gate, review rule, integrated renderer gate, regression fixtures and documentation
  • Next: integrator review, merge and M01 completion-evidence audit
  • Blocked by:

Handoff

  • Commit: 47dec6c
  • Branch: work/sindo-main-codex/m01-coordinate-boundary-gate
  • Outcome: all audited GDScript world/tile conversions in sky, streaming, player spawn/ground sampling and terrain probes route through typed CoordinateMapper boundaries. A repository scan rejects new manual world-center, legacy axis-conversion, world-to-tile, tile-local and tile-center formulas.
  • Contract/schema: additive godot_to_adt_tile, godot_to_adt_tile_local and adt_tile_local_to_godot APIs; no persisted format, cache version or renderer radius changes.
  • Verification: CoordinateConversionBoundaries PASS (83 files, one native boundary, one independent oracle, four consumers, six classifier guards); CoordinateMapper PASS (5 golden points, 8 tile boundaries, 2 raw MCNK, 5 yaw cases); renderer calibration PASS (5 points, maximum error 0.000015); renderer manifest PASS (7/7/7); unified render baseline dry-run, headless project load, runtime cache shutdown, coordination, documentation and whitespace gates passed.
  • GUI regression: final ADT-boundary capture compared 2/2, missing 0, failed 0 (cold mean 0.0002324, changed ratio 0.0013741; warm mean 0.0000226, changed ratio 0.0001285). Earlier full capture produced all 14 images; 11/14 met the strict changed-pixel threshold. The three threshold-only differences retained low mean error (<= 0.00622) and were visually classified as cold M2 readiness and liquid animation phase, with unchanged camera, geometry alignment, area and streaming focus.
  • Fidelity: existing build-12340 calibrated points, raw ADT fixture and server spawn fixture remain unchanged. Native parser workers retain exactly one formula in wow_chunk_reader.h; the calibration verifier retains exactly one independent formula so mapper and oracle cannot share a common-mode defect.
  • Rebuild: none. Local ignored extracted assets/native binary/cache junctions were used for runtime checks and are not part of the commit.
  • Remaining risks: source scanning intentionally recognizes narrow high-signal formula signatures rather than parsing arbitrary algebra; native formula parity still relies on calibration/raw fixtures. Model-local M2/WMO basis transforms and Godot-space LOD distance math are intentionally outside scope.
  • Recommended merge order: after 7c64e8d; this package closes the remaining M01 manual axis-conversion checklist item, but only the milestone integrator may update target Evidence/status or set OPENWC_TARGET_DONE.
  • Documentation: coding review rule, coordinate-mapping module API/input-output/ data-flow/capability/risk/source-map sections, ADR 0001 and RENDER.md were updated. Existing pure synchronous data-flow diagram remains authoritative; no state/sequence diagram changed.