# M01 — Coordinates and Architecture Seams ## Outcome Ввести независимые от scene tree типы координат, identity и streaming focus. ## Steps - [x] Создать domain/value-object слой без `Node`/`Resource` dependencies. - [x] Определить canonical WoW, Godot, ADT tile/chunk и local coordinate types. - [x] Реализовать единственный `CoordinateMapper` для position и orientation. - [x] Собрать golden points из ADT, server spawn и оригинального клиента. - [x] Ввести `StreamingFocus` вместо неявной зависимости от active Camera3D. - [x] Ввести stable `ContentId`, `EntityId` и отличить их от WoW GUID/server entry. - [x] Запретить ручные axis conversion через code review rule/test search. ## Verification - Unit round-trip и boundary tests для всех coordinate spaces. - Golden server spawn отображается в ожидаемой точке renderer. - Existing render checkpoints не ухудшились. ## Exit criteria Renderer/test scene получают focus через контракт; координаты конвертируются централизованно; domain tests работают headless без сцены. ## Evidence - Date: 2026-07-14 - Revision/worktree: merged master `c8e99f2`; closeout `work/sindo-main-codex/m01-integrator-closeout` - Commands: `tools/run_render_baseline.ps1 -DryRun -WaitSeconds 0.1 -MeasureSeconds 0.1`; `verify_coordinate_mapper.gd`; `verify_coordinate_golden_fixtures.gd`; `verify_streaming_focus.gd`; `verify_domain_identities.gd`; coordination/documentation/diff gates. - Results: CoordinateMapper PASS (`5` golden points, `8` tile boundaries, `2` raw MCNK, `5` yaw); golden fixtures PASS (`1` server spawn, `1` raw ADT, `5` original-client points); StreamingFocus PASS (`1` contract, `2` runtime scenes, `3` capture tools); identities PASS (`5/5/6/5`); conversion boundary PASS (`84` files, one native boundary, one oracle, four consumers, six classifiers); server-spawn renderer PASS at ADT `(32,48)`, MCNK `(3,12)`; renderer manifest PASS (`7/7/7`) and calibration maximum error `0.000015`. - Fidelity comparison: five build-12340 camera observations, pinned AzerothCore Human Warrior spawn and private raw ADT metadata agree through coordinate contract version 2. Cache-complete cold/warm GUI capture places the mapped spawn marker on rendered Northshire terrain with focus `(32,48)`, quality `100/100`, missing cache `0`; PNG SHA-256 values are recorded in the server spawn handoff. The final ADT-boundary regression passed `2/2`; the full M01 regression captured `14/14`, with `11` strict passes and three low-mean timing/animation-phase differences rather than coordinate drift. - Changed files: `src/domain/coordinates/`, `src/domain/identity/`, `src/domain/streaming/`, migrated sky/player/streaming/terrain consumers, coordinate/renderer fixtures and tools, runtime scenes, ADR 0001/0002, coordinate/domain/renderer module specs, coding/render documentation and M01 coordination claims. - Remaining risks: TrinityCore populated spawn equivalence is not verified; native parser conversion remains one separately calibrated boundary; MDDF/ MODF placement Euler parity is outside world-yaw scope; renderer visual parity gaps and the known anonymous ObjectDB teardown warning continue. No `1:1` compatibility claim is made by M01.