From 970bbb715efba742f6de3506ed702fd801137bdd Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Mon, 8 Jun 2026 18:30:14 +0200 Subject: [PATCH] chore(meta): T-1033 -> review (PR for class-envelope temperature) Co-Authored-By: Claude Opus 4.8 (1M context) --- .pql/changelog/ticket_history/2026-06.sql | 2 ++ .pql/changelog/tickets/2026-06.sql | 36 +++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/.pql/changelog/ticket_history/2026-06.sql b/.pql/changelog/ticket_history/2026-06.sql index af3291979..3016b8cde 100644 --- a/.pql/changelog/ticket_history/2026-06.sql +++ b/.pql/changelog/ticket_history/2026-06.sql @@ -203,3 +203,5 @@ 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.', NULL, '2026-06-08 16:06:37', '2026-06-08 16:06:37', '2026-06-08 16:06:37', NULL, 'cf12b3fc266a7fce22de0fdbfdb5c27e', 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', '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; diff --git a/.pql/changelog/tickets/2026-06.sql b/.pql/changelog/tickets/2026-06.sql index 57232000a..fe2019dd5 100644 --- a/.pql/changelog/tickets/2026-06.sql +++ b/.pql/changelog/tickets/2026-06.sql @@ -575,3 +575,39 @@ 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.', 'backlog', 'high', NULL, 'server', 'D-240', '2026-06-08 16:06:13', '2026-06-08 16:06:37', NULL, '366cfc67a53bea69db80181326a488e3', 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-1033', 'story', 'T-974', 'Class-envelope temperature model — drop non-canonical orbit/star inputs (D-240)', 'Rewrite derive_temperature_c (region_profile.rs) to the D-240 planet_class temperature-envelope model: drop ALL orbit/star physics (derive_distance_au, the luminosity() lookup + [star_luminosity] table, orbital_period_days, spectral_class, star_type as inputs). Temperature base = planet_class envelope (source-canonical in climate_constants.toml); latitude maps across it (pole=cold end, equator=warm end); atmosphere/hydrosphere/elevation modulate within bounds; the body seed adds a small bounded nudge for variety. Strip the now-dead orbit/star fields from BodyParams + BodyParamsReader + the bodies-table read (audit 2026-06-08 confirmed derive_temperature_c is the only consumer). Then regenerate the T-1031 golden so it pins correct temps. Blocks T-974 completion. + +Approved first-pass planet_class temperature envelope (°C, pole end → equator end). Tunable in server/data/climate_constants.toml. Parse cold_*/hot_*/warm_* prefixes to shift the band; sane default for unknown classes. + +| planet_class | band (pole → equator) | +|---|---| +| frozen / ice | -90 → -25 | +| boreal | -35 → 12 | +| cold_arid | -40 → 20 | +| temperate / oceanic | -12 → 28 | +| subtropical / warm_ocean | 2 → 34 | +| tropical | 16 → 40 | +| arid | -5 → 45 | +| hot_arid | 20 → 58 | +| volcanic / geothermal | 30 → 90 (special-cased) | +| 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.', 'in_progress', 'high', NULL, 'server', 'D-240', '2026-06-08 16:06:13', '2026-06-08 16:09:59', NULL, 'f0efd8f2a82265d627bcac1f074fce33', 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-1033', 'story', 'T-974', 'Class-envelope temperature model — drop non-canonical orbit/star inputs (D-240)', 'Rewrite derive_temperature_c (region_profile.rs) to the D-240 planet_class temperature-envelope model: drop ALL orbit/star physics (derive_distance_au, the luminosity() lookup + [star_luminosity] table, orbital_period_days, spectral_class, star_type as inputs). Temperature base = planet_class envelope (source-canonical in climate_constants.toml); latitude maps across it (pole=cold end, equator=warm end); atmosphere/hydrosphere/elevation modulate within bounds; the body seed adds a small bounded nudge for variety. Strip the now-dead orbit/star fields from BodyParams + BodyParamsReader + the bodies-table read (audit 2026-06-08 confirmed derive_temperature_c is the only consumer). Then regenerate the T-1031 golden so it pins correct temps. Blocks T-974 completion. + +Approved first-pass planet_class temperature envelope (°C, pole end → equator end). Tunable in server/data/climate_constants.toml. Parse cold_*/hot_*/warm_* prefixes to shift the band; sane default for unknown classes. + +| planet_class | band (pole → equator) | +|---|---| +| frozen / ice | -90 → -25 | +| boreal | -35 → 12 | +| cold_arid | -40 → 20 | +| temperate / oceanic | -12 → 28 | +| subtropical / warm_ocean | 2 → 34 | +| tropical | 16 → 40 | +| arid | -5 → 45 | +| hot_arid | 20 → 58 | +| volcanic / geothermal | 30 → 90 (special-cased) | +| 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.', 'review', 'high', NULL, 'server', 'D-240', '2026-06-08 16:06:13', '2026-06-08 16:30:14', NULL, '904f95c1a63e317ac3ce93611ca2dfa2', 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);