docs(M01): claim ADT tile axis correction

Work-Package: M01-FND-COORD-TILE-AXIS-002
Agent: sindo-main-codex
Tests: not applicable (claim only)
Fidelity: raw Azeroth_31_49 ADT and OpenRealm independently expose swapped filename axes
This commit is contained in:
2026-07-13 14:09:20 +04:00
parent 1c0dfc761d
commit f9c467b71f
@@ -0,0 +1,82 @@
# M01-FND-COORD-TILE-AXIS-002 — ADT filename axis correction
<!-- OPENWC_CLAIM:M01-FND-COORD-TILE-AXIS-002:sindo-main-codex:2026-07-15 -->
## Ownership
- Target: M01
- Program: FND
- Owner/Agent ID: sindo-main-codex
- Branch: `work/sindo-main-codex/m01-coordinate-tile-axis-fix`
- Lease expires UTC: 2026-07-15
- Integrator: M01 milestone integrator
## Outcome
Correct the additive coordinate contract so `AdtTileCoordinate(tile_x, tile_y)`
matches actual `Map_tileX_tileY.adt` filenames and MCNK `indexX/indexY` axes.
## Non-goals
- Migrating renderer/native consumers.
- Changing canonical, server, Godot or ADT placement position arithmetic.
- Adding server-spawn fixtures or `StreamingFocus`.
- Committing proprietary ADT bytes.
## Paths
- Exclusive: `src/domain/coordinates/coordinate_mapper.gd`,
`src/domain/coordinates/adt_chunk_coordinate.gd`,
`src/tools/verify_coordinate_mapper.gd`
- Shared/hotspots: `docs/adr/0001-canonical-world-coordinates.md`,
`docs/modules/coordinate-mapping.md`, this claim
- Generated/ignored: local extracted ADT and Godot import metadata
## Contracts and data
- Public API/events: method names unchanged; corrected tile/chunk axis semantics
- Schema/format version: coordinate contract version increments from 1 to 2
- Migration/compatibility: no released consumer exists; contract was merged but
not yet consumed, so correction precedes consumer rollout
- Consumers: future renderer, network, gameplay and server-data adapters
## Dependencies
- Requires: merged `M01-FND-COORDS-001` at `1c0dfc7`
- Blocks: coordinate golden fixtures and all coordinate consumers
- External state: private `Azeroth_31_49.adt` used read-only for evidence
## Verification
- Commands: coordinate mapper probe, M00 calibration, manifest, documentation
and coordination gates
- Fixtures: build 12340 Elwynn point must resolve to `Azeroth_31_49.adt`;
MCNK `(0,0)` and `(15,15)` establish chunk-axis direction
- Fidelity evidence: local ADT SHA-256
`18185B5FAC9566D9C57A9C19ABD75F108370D1795639B6077167C0EFD3672FAE`;
OpenRealm independently indexes filename X from world Y and filename Y from world X
- Performance budget: unchanged constant-time scalar arithmetic
## Documentation deliverables
- Inline public API docs: corrected tile/chunk direction comments
- Module specification: contract version, formulas, capability evidence and risk
- Data-flow diagram: corrected filename/chunk axes
- ADR: corrected decision and evidence
- Sequence/state diagrams: not applicable; pure synchronous mapper
## Simplicity and naming
- Important names introduced: none
- Simplest considered solution: swap the two filename formulas and corresponding
local/chunk ownership calculations
- Rejected complexity/abstractions: compatibility flag for a contract with no consumers
- Unavoidable complexity and justification: ADT filename axes differ from client X/Y order
- Measured optimization evidence: not applicable
## Status
- State: active
- Done: raw-corpus and independent-reference diagnosis
- Next: regression test, mapper correction and documentation update
- Blocked by: