diff --git a/.pql/changelog/ticket_history/2026-06.sql b/.pql/changelog/ticket_history/2026-06.sql index 552ff800a..46c04a813 100644 --- a/.pql/changelog/ticket_history/2026-06.sql +++ b/.pql/changelog/ticket_history/2026-06.sql @@ -206,3 +206,55 @@ Latitude maps the region linearly across the band (|lat|/90). Atmosphere greenho INSERT INTO ticket_history (ticket_id, field, old_value, new_value, changed_by, changed_at, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('T-1033', 'status', 'backlog', 'in_progress', NULL, '2026-06-08 16:09:59', '2026-06-08 16:09:59', '2026-06-08 16:09:59', NULL, '7abc69e2d2b79379657aa4e01088c56d', 1) ON CONFLICT(hash) DO NOTHING; INSERT INTO ticket_history (ticket_id, field, old_value, new_value, changed_by, changed_at, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('T-1033', 'status', 'in_progress', 'review', NULL, '2026-06-08 16:30:14', '2026-06-08 16:30:14', '2026-06-08 16:30:14', NULL, 'c40e12cde396da8a36710c912551a7f6', 1) ON CONFLICT(hash) DO NOTHING; INSERT INTO ticket_history (ticket_id, field, old_value, new_value, changed_by, changed_at, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('T-1033', 'status', 'review', 'done', NULL, '2026-06-08 17:17:58', '2026-06-08 17:17:58', '2026-06-08 17:17:58', NULL, '6f492a7bb9e83b817492420ada0fe5c6', 1) ON CONFLICT(hash) DO NOTHING; +INSERT INTO ticket_history (ticket_id, field, old_value, new_value, changed_by, changed_at, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('T-1031', 'description', 'D-239 sections 1,8,9. Golden-seed regression for the binding laws (drainage monotonicity, lithology->landform, glaciation->form with no glacial-U on GlaciationGrade 0, climate->vegetation no-skip + riparian band), per-family <5ms/chunk budget assertion, and the validation-case bodies: Kallast=alluvial plain/Soil, Velen=tidal-flat/dune coast (VERIFY it has a moon param for the tidal term first), Cygni B=volcanic immature drainage, Ross 128=ocean island terrain, Gruenfeld=marginal Gravel/Scrub. If a body reads wrong, fix its params — never patch the derivation (D-239 section 1). Blocked by the family generators. + +--- +Note from T-1028 review (Tyre, 2026-06-08): VoxelCache LRU eviction is an O(capacity) linear scan for the minimum access_gen (default cap 8192). Latent — at the D-239 §10 ~2.2-4.2 ms/chunk budget (4096 voxels) an 8k scan is measurable noise, not a blocker. If it shows up in this ticket''s profiling, the fix is a secondary BTreeMap<(access_gen, CacheKey), ()> eviction index (stays D-010-compliant). Scope before the budget test runs.', 'D-239 sections 1,8,9. Golden-seed regression for the binding laws (drainage monotonicity, lithology->landform, glaciation->form with no glacial-U on GlaciationGrade 0, climate->vegetation no-skip + riparian band), per-family <5ms/chunk budget assertion, and the validation-case bodies: Kallast=alluvial plain/Soil, Velen=tidal-flat/dune coast (VERIFY it has a moon param for the tidal term first), Cygni B=volcanic immature drainage, Ross 128=ocean island terrain, Gruenfeld=marginal Gravel/Scrub. If a body reads wrong, fix its params — never patch the derivation (D-239 section 1). Blocked by the family generators. + +--- +Note from T-1028 review (Tyre, 2026-06-08): VoxelCache LRU eviction is an O(capacity) linear scan for the minimum access_gen (default cap 8192). Latent — at the D-239 §10 ~2.2-4.2 ms/chunk budget (4096 voxels) an 8k scan is measurable noise, not a blocker. If it shows up in this ticket''s profiling, the fix is a secondary BTreeMap<(access_gen, CacheKey), ()> eviction index (stays D-010-compliant). Scope before the budget test runs. + +--- +RESUME NOTE (2026-06-08, context reset). Where T-974 stands and how to finish it. + +STATUS: Epic T-974 (Atlas-to-tile derivation) is ~done. Merged this session: +T-1023/1024/1025/1026/1027/1028/1029/1030/1032 + T-1033 (class-envelope temperature, +D-240). Only T-1031 (this ticket) + T-1034 remain to close T-974. + +D-240 (just landed): registry orbit/star data is non-canonical placeholder; temperature +derives from planet_class envelope + atmosphere + hydrosphere(maritime moderation) + +seed — NO orbit/star inputs. This FIXED the +356C "temperate" worlds. BodyParams was +stripped of orbital_period_days / spectral_class / star_type / axial_tilt_deg. + +T-1031 IS PARKED in a worktree at .worktrees/verification-harness (branch +verification-harness), created BEFORE T-1033. The harness (server/tests/derivation_harness.rs) +is built: golden-seed determinism + §8 law sweeps + per-family budget + validation bodies +(Kallast pass; Velen/Gruenfeld skipped-not-in-wiki). It also made derive_morphology_zone pub. + +TO FINISH T-1031 (3 steps): +1. Rebase/merge current main into the verification-harness worktree. It will then FAIL TO + COMPILE: the harness test fixtures construct BodyParams with the now-removed fields + (orbital_period_days/spectral_class/star_type/axial_tilt_deg) — strip those from the + fixtures. Also re-check any validation-body temperature assertions against the NEW + class-envelope temps (the harness previously noted Marevna -56C as a param issue — that + may now read differently). +2. Generate the golden against the CORRECTED temps: from the worktree, + `cd server && UPDATE_GOLDEN=1 cargo test --test derivation_harness -- golden_seed_determinism_regression` + then commit tests/golden/derivation_harness.json + the harness + the region_profile.rs + pub-visibility change together. +3. Lead verify (cargo test/clippy -D warnings/fmt — the push gate runs all), then /pr-review + (Hoshe+Tyre) -> merge -> mark T-1031 done -> T-974 CLOSES. + +ALSO PENDING (separate, fast-follow): +- T-1034 (high, under T-974): derive_moisture_q hydrosphere vocab mismatch — expects ''ocean'' + but DB uses ''liquid_water'' (175 bodies) -> wrong moisture/precip/glaciation/vegetation. + The T-1033 [hydrosphere_maritime] table in climate_constants.toml has the real vocab as a + reference. NOTE: this is now important (water worlds get right temp, wrong moisture). +- Flaky test (no ticket yet, offer to file): voice::lookup::cache_miss_returns_base_text + intermittently fails the full-suite push gate under parallelism (passes in isolation; + unrelated to climate work). CI-hygiene. + +WORKFLOW REMINDERS for the resumer: lead drives all git; agents run lean (don''t pre-run +fmt/clippy/test — the pre-push gate enforces them + cargo test now); review caught real +bugs on EVERY PR this session (hollow tests, a cache-coherence bug hidden by a tautological +test, the +356C climate bug) — keep reviewing + verifying agent output, don''t trust "all green".', NULL, '2026-06-08 17:22:10', '2026-06-08 17:22:10', '2026-06-08 17:22:10', NULL, 'e497455bce9ece94481dcc060d7db1c0', 1) ON CONFLICT(hash) DO NOTHING; diff --git a/.pql/changelog/tickets/2026-06.sql b/.pql/changelog/tickets/2026-06.sql index 87b854f29..3ed2ef98f 100644 --- a/.pql/changelog/tickets/2026-06.sql +++ b/.pql/changelog/tickets/2026-06.sql @@ -630,3 +630,52 @@ Approved first-pass planet_class temperature envelope (°C, pole end → equator | barren (airless / atmosphere=none) | none (climate branch absent, per D-239 §2) | Latitude maps the region linearly across the band (|lat|/90). Atmosphere greenhouse shifts toward the warm end + sets diurnal swing; elevation lapse pulls highlands toward the cold end; clamp to the band. Seed nudge: a few °C of deterministic per-body variation, clamped within the band.', 'done', 'high', NULL, 'server', 'D-240', '2026-06-08 16:06:13', '2026-06-08 17:17:58', NULL, 'c3f91480bb7baa86f85eeb7a950c2509', 1) ON CONFLICT(id) DO UPDATE SET type=excluded.type, parent_id=excluded.parent_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 (id, type, parent_id, title, description, status, priority, assigned_to, team, decision_ref, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('T-1031', 'task', 'T-974', 'Believability + determinism + <5ms budget verification harness', 'D-239 sections 1,8,9. Golden-seed regression for the binding laws (drainage monotonicity, lithology->landform, glaciation->form with no glacial-U on GlaciationGrade 0, climate->vegetation no-skip + riparian band), per-family <5ms/chunk budget assertion, and the validation-case bodies: Kallast=alluvial plain/Soil, Velen=tidal-flat/dune coast (VERIFY it has a moon param for the tidal term first), Cygni B=volcanic immature drainage, Ross 128=ocean island terrain, Gruenfeld=marginal Gravel/Scrub. If a body reads wrong, fix its params — never patch the derivation (D-239 section 1). Blocked by the family generators. + +--- +Note from T-1028 review (Tyre, 2026-06-08): VoxelCache LRU eviction is an O(capacity) linear scan for the minimum access_gen (default cap 8192). Latent — at the D-239 §10 ~2.2-4.2 ms/chunk budget (4096 voxels) an 8k scan is measurable noise, not a blocker. If it shows up in this ticket''s profiling, the fix is a secondary BTreeMap<(access_gen, CacheKey), ()> eviction index (stays D-010-compliant). Scope before the budget test runs. + +--- +RESUME NOTE (2026-06-08, context reset). Where T-974 stands and how to finish it. + +STATUS: Epic T-974 (Atlas-to-tile derivation) is ~done. Merged this session: +T-1023/1024/1025/1026/1027/1028/1029/1030/1032 + T-1033 (class-envelope temperature, +D-240). Only T-1031 (this ticket) + T-1034 remain to close T-974. + +D-240 (just landed): registry orbit/star data is non-canonical placeholder; temperature +derives from planet_class envelope + atmosphere + hydrosphere(maritime moderation) + +seed — NO orbit/star inputs. This FIXED the +356C "temperate" worlds. BodyParams was +stripped of orbital_period_days / spectral_class / star_type / axial_tilt_deg. + +T-1031 IS PARKED in a worktree at .worktrees/verification-harness (branch +verification-harness), created BEFORE T-1033. The harness (server/tests/derivation_harness.rs) +is built: golden-seed determinism + §8 law sweeps + per-family budget + validation bodies +(Kallast pass; Velen/Gruenfeld skipped-not-in-wiki). It also made derive_morphology_zone pub. + +TO FINISH T-1031 (3 steps): +1. Rebase/merge current main into the verification-harness worktree. It will then FAIL TO + COMPILE: the harness test fixtures construct BodyParams with the now-removed fields + (orbital_period_days/spectral_class/star_type/axial_tilt_deg) — strip those from the + fixtures. Also re-check any validation-body temperature assertions against the NEW + class-envelope temps (the harness previously noted Marevna -56C as a param issue — that + may now read differently). +2. Generate the golden against the CORRECTED temps: from the worktree, + `cd server && UPDATE_GOLDEN=1 cargo test --test derivation_harness -- golden_seed_determinism_regression` + then commit tests/golden/derivation_harness.json + the harness + the region_profile.rs + pub-visibility change together. +3. Lead verify (cargo test/clippy -D warnings/fmt — the push gate runs all), then /pr-review + (Hoshe+Tyre) -> merge -> mark T-1031 done -> T-974 CLOSES. + +ALSO PENDING (separate, fast-follow): +- T-1034 (high, under T-974): derive_moisture_q hydrosphere vocab mismatch — expects ''ocean'' + but DB uses ''liquid_water'' (175 bodies) -> wrong moisture/precip/glaciation/vegetation. + The T-1033 [hydrosphere_maritime] table in climate_constants.toml has the real vocab as a + reference. NOTE: this is now important (water worlds get right temp, wrong moisture). +- Flaky test (no ticket yet, offer to file): voice::lookup::cache_miss_returns_base_text + intermittently fails the full-suite push gate under parallelism (passes in isolation; + unrelated to climate work). CI-hygiene. + +WORKFLOW REMINDERS for the resumer: lead drives all git; agents run lean (don''t pre-run +fmt/clippy/test — the pre-push gate enforces them + cargo test now); review caught real +bugs on EVERY PR this session (hollow tests, a cache-coherence bug hidden by a tautological +test, the +356C climate bug) — keep reviewing + verifying agent output, don''t trust "all green".', 'in_progress', 'high', NULL, 'server', 'D-239', '2026-06-07 10:34:11', '2026-06-08 17:22:10', NULL, '32ac92fca534508f3387c87bc54d9fae', 1) ON CONFLICT(id) DO UPDATE SET type=excluded.type, parent_id=excluded.parent_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);