|
|
|
@@ -1,6 +1,7 @@
|
|
|
|
|
# M02-GMP-TERRAIN-QUERY-001 — Player terrain query boundary
|
|
|
|
|
|
|
|
|
|
<!-- OPENWC_CLAIM:M02-GMP-TERRAIN-QUERY-001:sindo-main-codex:2026-07-16 -->
|
|
|
|
|
<!-- OPENWC_HANDOFF:READY:M02-GMP-TERRAIN-QUERY-001:a45d521 -->
|
|
|
|
|
|
|
|
|
|
## Ownership
|
|
|
|
|
|
|
|
|
@@ -78,7 +79,40 @@ changing current spawn/ground-snap behavior.
|
|
|
|
|
|
|
|
|
|
## Status
|
|
|
|
|
|
|
|
|
|
- State: active
|
|
|
|
|
- Done: claim and isolated worktree from updated master
|
|
|
|
|
- Next: implement contract/adapter, migrate player, test and document
|
|
|
|
|
- State: ready-for-review
|
|
|
|
|
- Done: typed query/sample contract, cached ADT adapter, player migration,
|
|
|
|
|
synthetic interpolation/cache/failure tests, injected scene regression and documentation
|
|
|
|
|
- Next: M02 integrator reviews and merges before camera-rig extraction
|
|
|
|
|
- Blocked by:
|
|
|
|
|
|
|
|
|
|
## Handoff
|
|
|
|
|
|
|
|
|
|
- Commit: `a45d521`
|
|
|
|
|
- Branch: `work/sindo-main-codex/m02-terrain-query`
|
|
|
|
|
- Outcome: `ThirdPersonWowController` no longer loads ADTs, caches tile
|
|
|
|
|
dictionaries, selects chunks or interpolates height grids. It consumes a
|
|
|
|
|
replaceable typed `TerrainQuery` and retains only existing offset/snap policy.
|
|
|
|
|
- Public contracts: additive immutable `TerrainGroundSample`, replaceable
|
|
|
|
|
`TerrainQuery`, cached `AdtTerrainQuery` and player `set_terrain_query`.
|
|
|
|
|
Coordinate contract version, ADT/native format and renderer caches are unchanged.
|
|
|
|
|
- Verification: `TERRAIN_QUERY PASS contract=4 interpolation=1 cache=1
|
|
|
|
|
failures=2 player_injection=1`; player-input and local-movement regressions
|
|
|
|
|
passed; asset-free scene exited `0`; coordinate boundary passed with five
|
|
|
|
|
required consumers and StreamingFocus passed; renderer dry-run passed eight
|
|
|
|
|
pre-capture gates and seven checkpoint plans; coordination/documentation/diff gates passed.
|
|
|
|
|
- Fidelity: synthetic fractional-grid fixture locks the inherited 145-height
|
|
|
|
|
outer-grid bilinear result within `0.002` Godot units; injected scene locks
|
|
|
|
|
spawn offset `0.05` and physics snap. This is sandbox-regression evidence,
|
|
|
|
|
not build-12340 triangle/hole/collision parity.
|
|
|
|
|
- Local verification inputs: isolated worktree reused the existing ignored
|
|
|
|
|
native DLL and generated ADT resource scripts. Proprietary extracted data and
|
|
|
|
|
character GLB were absent, so renderer dry-run logged expected missing-corpus
|
|
|
|
|
diagnostics while all contract steps returned success.
|
|
|
|
|
- Rebuild/migration: none; caches are transient and existing formats remain unchanged.
|
|
|
|
|
- Remaining risks: first ADT parse remains synchronous as before; unavailable
|
|
|
|
|
tiles cache until query replacement; player still owns snap policy; exact
|
|
|
|
|
ADT triangle choice, holes, slopes, liquids and collision remain open.
|
|
|
|
|
- Documentation: inline public APIs plus `docs/modules/terrain-query.md` with
|
|
|
|
|
inputs/outputs, data-flow, cache state and cross-boundary sequence diagrams,
|
|
|
|
|
ownership, failure/recovery, capability status and source map. Coordinate and
|
|
|
|
|
movement consumer specifications were updated.
|
|
|
|
|