# M01 — Coordinates and Architecture Seams

<!-- OPENWC_TARGET:DONE -->
<!-- OPENWC_TARGET_DONE:M01:work/sindo-main-codex/m01-integrator-closeout:2026-07-14 -->

## 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.
