diff --git a/.pql/changelog/ticket_history/2026-07.sql b/.pql/changelog/ticket_history/2026-07.sql index b1f0dea6d..62c8ef8a1 100644 --- a/.pql/changelog/ticket_history/2026-07.sql +++ b/.pql/changelog/ticket_history/2026-07.sql @@ -1813,3 +1813,6 @@ PREP SESSION COMPLETE + BRIEF SIGNED OFF (2026-07-25, Jeroen + lead + Tyre). Jer DELIVERED (2026-07-24): the body-map-viewer workshop is this ticket''s output. D-255 filed (stepped Atlas render architecture: server-determines-content, client map-art function, six-level ladder Global+Region→Chunk, tagged-envelope wire, three-tier cache, cache-accelerated-pure-function seed-chaining, lakes from settled hydrology) + 12 in-place amendments (D-166/D-192/D-225/D-226/D-227/D-243 + river-courses-t1170 gloss) + Clerk audit clean (2 unswept conflicts found and fixed: t1143 doc superseded banner, CLAUDE.md Phase-4 row) + measurements ①–⑥ and the population survey all MEASURED + implementation chain T-1181–T-1185 with reconciliations (T-1158 cancelled, T-1175/T-1157 re-scoped, T-1174 raised). Full record: docs/workshops/body-map-viewer/ (workshop-outcomes.md; architecture-briefing-final.md is the plain-language companion).', NULL, '2026-07-24 07:13:23', '2026-07-24 07:13:23.420', '2026-07-24 07:13:23.420', NULL, 'e4ef9dbd48334f1181f494730f0a09f3', 2) ON CONFLICT(hash) DO NOTHING; INSERT INTO ticket_history (ticket_record_id, field, old_value, new_value, changed_by, changed_at, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06FRY9W24PV55Z6FMW8TEM7XER', 'status', 'in_progress', 'done', NULL, '2026-07-24 07:13:28', '2026-07-24 07:13:28.217', '2026-07-24 07:13:28.217', NULL, '53966f3039143c089e5941fec3db1c86', 2) ON CONFLICT(hash) DO NOTHING; +INSERT INTO ticket_history (ticket_record_id, field, old_value, new_value, changed_by, changed_at, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06FB0TNSRZXCHGS16BFHSSGSV4', 'description', 'Deliverable: Walkable generated world + asset creation catalog with production status. Automated tile/chunk/block generation (NPC layer ignored). Parallel asset pipeline: rural walls, barns, station walls, auto doors, cars, lamp posts, TVs, billboards etc. Depends on Phases 1-4 (world structure + rendering pipeline exist).', 'Deliverable: Walkable generated world + asset creation catalog with production status. Automated tile/chunk/block generation (NPC layer ignored). Parallel asset pipeline: rural walls, barns, station walls, auto doors, cars, lamp posts, TVs, billboards etc. Depends on Phases 1-4 (world structure + rendering pipeline exist). + +SCOPE CLARIFICATION (2026-07-24, Jeroen): the seed-to-tile cascade this phase builds is ALSO the mechanism that determines what exists where the player walks in Phase 5 — not an Atlas-only pipeline. In-world streaming derives the chunk neighborhood around the player (minimum the 3x3 chunks needed to draw everything; prefetch radius a tuning constant) via the same derivation, with coarser-layer context self-provided by function composition (D-255(f) cache-accelerated pure function): Atlas interaction is never a precondition, cache only accelerates, output byte-identical either way — the T-1181 cache-hit==cache-miss determinism gate protects exactly this property. Founding driver: D-012 (''chunks load/unload around the player; the world generates as you explore''), amended 2026-07-24 to point at the cascade records. The insert minimap (Q-093) is noted as a same-derivation consumer; its design defers to Phase 5.', NULL, '2026-07-24 11:54:05', '2026-07-24 11:54:05.117', '2026-07-24 11:54:05.117', NULL, '8feb24666f25dbcdfd17f085a72614e4', 2) ON CONFLICT(hash) DO NOTHING; diff --git a/.pql/changelog/tickets/2026-07.sql b/.pql/changelog/tickets/2026-07.sql index 91a92d5a8..d2069c9bf 100644 --- a/.pql/changelog/tickets/2026-07.sql +++ b/.pql/changelog/tickets/2026-07.sql @@ -2658,3 +2658,6 @@ INSERT INTO tickets (record_id, type, parent_record_id, title, description, stat PREP SESSION COMPLETE + BRIEF SIGNED OFF (2026-07-25, Jeroen + lead + Tyre). Jeroen''s design outline captured and clarified over two AskUserQuestion rounds; Tyre delivered governance-delta/implications pass and ratified the brief (zero misrepresentations, zero blocking gaps). Signed-off workshop brief: docs/workshops/body-map-viewer/body-map-viewer-workshop-brief.md (session artifacts: jeroen-outline.md, clarifications.md, tyre-implications.md, prep-grounding.md in the same dir). Settled premises: server-side content determination per zoom step; client map-art function; RTT terrain + screen-space vector annotations baseline (locks T-1176 candidates b+a; c1 styling open); GPU presentation-only; stepped zoom (supersedes continuous — recorded at workshop filing); tile=1m only, ''gridunit (at zoom level)'' coined; data resolution tunable (1px ideal, 5x5 fallback); hydrology = deterministic equilibrium; client-primary cache (store shape open: server-side SQLite cache / godot-sqlite / file cache — SQLite ships in the Rust server, NOT the Godot client). Workshop: 5 seats (Dudley/Araminta/Stig/Tyre + Troblum r2), 2 rounds + lead interview, extendable at Jeroen''s call, round 1 GATED on measurements — see blocker edges. Expected Output 2 mandates an explicit deprecation sweep (Clerk audit) of all conflicting DQR records/tickets at filing. DELIVERED (2026-07-24): the body-map-viewer workshop is this ticket''s output. D-255 filed (stepped Atlas render architecture: server-determines-content, client map-art function, six-level ladder Global+Region→Chunk, tagged-envelope wire, three-tier cache, cache-accelerated-pure-function seed-chaining, lakes from settled hydrology) + 12 in-place amendments (D-166/D-192/D-225/D-226/D-227/D-243 + river-courses-t1170 gloss) + Clerk audit clean (2 unswept conflicts found and fixed: t1143 doc superseded banner, CLAUDE.md Phase-4 row) + measurements ①–⑥ and the population survey all MEASURED + implementation chain T-1181–T-1185 with reconciliations (T-1158 cancelled, T-1175/T-1157 re-scoped, T-1174 raised). Full record: docs/workshops/body-map-viewer/ (workshop-outcomes.md; architecture-briefing-final.md is the plain-language companion).', 'done', 'high', NULL, 'client', 'D-226', '2026-07-23 13:25:58.949', '2026-07-24 07:13:28.217', NULL, '0d5ca1f2955ad2d785d4dacda92a26f1', 2) ON CONFLICT(record_id) DO UPDATE SET type=excluded.type, parent_record_id=excluded.parent_record_id, title=excluded.title, description=excluded.description, status=excluded.status, priority=excluded.priority, assigned_to=excluded.assigned_to, team=excluded.team, decision_ref=excluded.decision_ref, updated_at=excluded.updated_at, deleted_at=excluded.deleted_at, hash=excluded.hash, canonical_version=excluded.canonical_version WHERE excluded.updated_at > tickets.updated_at OR (excluded.updated_at = tickets.updated_at AND excluded.hash > tickets.hash); +INSERT INTO tickets (record_id, type, parent_record_id, title, description, status, priority, assigned_to, team, decision_ref, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06FB0TNSRZXCHGS16BFHSSGSV4', 'epic', '06FB0TNSRZE4CSS8YR0FCEXMK8', 'Phase 4: World generation (tile/chunk/block) — deterministic multilayer seed-to-tile cascade + per-layer Atlas maps + asset pipeline', 'Deliverable: Walkable generated world + asset creation catalog with production status. Automated tile/chunk/block generation (NPC layer ignored). Parallel asset pipeline: rural walls, barns, station walls, auto doors, cars, lamp posts, TVs, billboards etc. Depends on Phases 1-4 (world structure + rendering pipeline exist). + +SCOPE CLARIFICATION (2026-07-24, Jeroen): the seed-to-tile cascade this phase builds is ALSO the mechanism that determines what exists where the player walks in Phase 5 — not an Atlas-only pipeline. In-world streaming derives the chunk neighborhood around the player (minimum the 3x3 chunks needed to draw everything; prefetch radius a tuning constant) via the same derivation, with coarser-layer context self-provided by function composition (D-255(f) cache-accelerated pure function): Atlas interaction is never a precondition, cache only accelerates, output byte-identical either way — the T-1181 cache-hit==cache-miss determinism gate protects exactly this property. Founding driver: D-012 (''chunks load/unload around the player; the world generates as you explore''), amended 2026-07-24 to point at the cascade records. The insert minimap (Q-093) is noted as a same-derivation consumer; its design defers to Phase 5.', 'in_progress', 'high', NULL, NULL, NULL, '2026-03-25 13:30:00', '2026-07-24 11:54:05.117', NULL, 'd6d93db1b98276ecbbf7beca050dba81', 2) ON CONFLICT(record_id) DO UPDATE SET type=excluded.type, parent_record_id=excluded.parent_record_id, title=excluded.title, description=excluded.description, status=excluded.status, priority=excluded.priority, assigned_to=excluded.assigned_to, team=excluded.team, decision_ref=excluded.decision_ref, updated_at=excluded.updated_at, deleted_at=excluded.deleted_at, hash=excluded.hash, canonical_version=excluded.canonical_version WHERE excluded.updated_at > tickets.updated_at OR (excluded.updated_at = tickets.updated_at AND excluded.hash > tickets.hash); diff --git a/governance/decisions/architecture.md b/governance/decisions/architecture.md index 39d050232..3f9864652 100644 --- a/governance/decisions/architecture.md +++ b/governance/decisions/architecture.md @@ -46,6 +46,7 @@ Technical foundation decisions that constrain implementation: engine, client-ser - **Rationale:** Same principle as D-010 (multiplayer architecture) - design for the future, build the simpler version now. - **Raised by:** Tyre (Technical Architect), endorsed by Team Leader. - **Amendment (2026-04-05):** The ~150×150 visual tile estimate is superseded by [D-094](#d-094-district-spatial-hierarchy--chunk-block-district-naming-and-sizes) (256×256 visual tiles per district, 4×4 blocks). D-094 explicitly amends this decision. +- **Amendment (2026-07-24):** "The world generates as you explore" is now concretely the seed-to-tile cascade ([D-227](#d-227), [D-239](#d-239)): Phase-5 in-world streaming derives the chunk neighborhood around the player (minimum the 3×3 chunks needed to draw the scene; prefetch radius a tuning constant) via the **same derivation the Atlas ladder samples** ([D-255](#d-255)). Coarser-layer context is self-provided by function composition (D-255 (f), the cache-accelerated pure function) — **Atlas interaction is never a precondition**; a player arriving anywhere without ever opening the atlas gets the byte-identical world, and the step-canvas serving work's cache-hit==cache-miss determinism gate protects exactly this property. The Phase-4 epic (T-750) carries the matching deliverable note; the insert minimap (Q-093) is noted as a same-derivation consumer, design deferred to Phase 5. ### D-020: Engine and architecture selection — Godot client + Rust simulation via subprocess/IPC - **Date:** 2026-02-09 diff --git a/governance/questions/architecture.md b/governance/questions/architecture.md index a84f46a19..f67df06fd 100644 --- a/governance/questions/architecture.md +++ b/governance/questions/architecture.md @@ -322,7 +322,7 @@ Technical foundation questions: engine, protocols, data structures, performance, ### Q-093: Tile-based exploration map in player insert (Google Maps for the implant) - **Status:** Open (high interest) - **Question:** Reference: MapTileProvider (https://github.com/AngryMeenky/MapTileProvider) — lazy-loading tile map provider. Concept: the player's insert has a map that works like Google Maps — pan, zoom, tile-based rendering. Server generates map tiles from ECS exploration data (what the player has seen). Explored areas show room layouts, corridors, points of interest. Unexplored areas are blank/fogged. Zoom levels: room detail → building → district → zone → station overview. Knowledge-graph-driven overlays: NPC last-known positions (if the player tracked them), quest markers, danger zones, faction territories. Map tiles are server-authoritative (can't see what you haven't explored) and cached on the client. The tile pyramid approach means the map scales to any world size without loading everything at once. -- **Cross-reference:** Information boundary (D-011), insert/minimap UI, knowledge graph (D-041), T-732 (minimap ticket). See also [D-255](../decisions/architecture.md#d-255) (body-map-viewer stepped Atlas render architecture, 2026-07-24) — a different system (Phase-4 world-generation Atlas, not the player exploration insert), but its server-authoritative per-step data canvases, tagged-envelope carrier, and client cache tiers are shipped prior art for exactly the tile-pyramid/lazy-load/server-authoritative-cache architecture this question sketches. +- **Cross-reference:** Information boundary (D-011), insert/minimap UI, knowledge graph (D-041), T-732 (minimap ticket). See also [D-255](../decisions/architecture.md#d-255) (body-map-viewer stepped Atlas render architecture, 2026-07-24) — a different system (Phase-4 world-generation Atlas, not the player exploration insert), but its server-authoritative per-step data canvases, tagged-envelope carrier, and client cache tiers are shipped prior art for exactly the tile-pyramid/lazy-load/server-authoritative-cache architecture this question sketches. One-truth note for Phase-5 scoping (D-012 amendment 2026-07-24): the natural expectation is that this map consumes the **same seed-to-tile derivation** as the walkable world and the Atlas — no independent map pipeline; recorded as a note here, binding design deferred to Phase 5. ---