Commit Graph
2562 Commits
Author SHA1 Message Date
jpmschweitzer fa7db681ea Merge remote-tracking branch 'origin/district-window-render' 2026-07-16 22:36:40 +02:00
jpmschweitzer c8adc17556 chore(meta): T-1123 to review — PR #181 up 2026-07-16 22:31:40 +02:00
jpmschweitzerandClaude Fable 5 5e48c85a9a fix(simulation): move probe tests module below Args — clippy items_after_test_module
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 22:30:10 +02:00
jpmschweitzerandClaude Fable 5 cf6ef2bc31 feat(simulation): district-window zoom-ladder renderer — aliveness_probe --render/--window/--anchor (T-1123)
Renders true-2km district maps (derive_district per cell, NOT the coarse eager grid) as PNGs: morphology (17-zone palette transliterated from atlas_marker_overlay.gd, sync-commented), elev/temp/moisture/vegetation panels, anchor crosshair, km-honest filenames + manifest. believability.rs gains cascade_snapshot_for_body (cascade_for_body now a thin wrapper); probe re-derives the D-203-freed TerrainAnalysis via run_layer1 only under --render. Determinism proven: 5/5 panels byte-identical across passes AND cross-process (md5s reproduced in a fresh run). ~8us/district debug. First-ever look at the district layer produced the T-1125/T-1126/T-1127 findings (D-227 seam ends at ~500km; ocean-blind vegetation; unrendered glaciation).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 22:26:57 +02:00
jpmschweitzer c824ca51a1 chore(meta): file T-1125/T-1126/T-1127 — zoom-ladder findings under T-1079 (D-227 seam, ocean-blind veg, glaciation rendering) 2026-07-16 22:26:13 +02:00
jpmschweitzer 96737756dd chore(meta): file T-1123 district-window renderer (activated, dudley) + T-1124 Atlas regional-map-view design — Jeroen's orbit-to-jet-plane bridge gap 2026-07-16 21:56:18 +02:00
jpmschweitzer 531041506d chore(meta): close screenshot-goldens batch — T-1120 done (PR #180 merged) 2026-07-16 21:44:11 +02:00
jpmschweitzer 414dbd2da9 Merge remote-tracking branch 'origin/atlas-screenshot-goldens' 2026-07-16 21:43:16 +02:00
jpmschweitzerandClaude Fable 5 fcf913a413 fix(client): move golden-provenance key out of scenarios{} — crashed visual_capture --list (PR #180 review, Hoshe)
The _comment_atlas_goldens key inside scenarios{} hit _print_list's .get() on a bare String (reproduced: Invalid call on String at visual_capture.gd:699). Moved to a top-level key alongside resolution/golden_dir; _print_list now also skips _-prefixed and non-Dictionary entries so future comment keys cannot crash it. Verified: --list runs clean, JSON valid.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 21:40:03 +02:00
jpmschweitzer de25063e99 chore(meta): file T-1122 — shared live-server GdUnit helper (PR #180 root-cause fallout) 2026-07-16 21:31:31 +02:00
jpmschweitzerandClaude Fable 5 3819e65759 test(client): pace input-roundtrip moves past the D-053 stance cooldown (T-1068 fix ported)
Root-caused with server trace logs: Walk stance throttles 1 move per 2 ticks and SILENTLY discards early moves (movement.rs apply_move -> try_move, TRACE-only) — under load the test's MoveEast landed exactly 1 tick after MoveNorth and was consumed. Server behavior is correct, deliberate D-053, pinned by Rust tests; production clients re-send while keys are held. Fix: COOLDOWN_TICKS=3 post-ack spacing, same as test_sprint2_proof.gd (T-1068) whose fix never reached this file due to helper copy-paste. Pre-fix repro at run 17/30 under load; post-fix 30/30 stress green + full suite 2956/2956.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 21:30:52 +02:00
jpmschweitzerandClaude Fable 5 8d1121d13a test(client): wall-clock deadline + 10s ceiling for input-roundtrip response waits
Second distinct flake in this suite today (gate run: MoveEast observed mid-move at the 5s window). The old accounting accrued elapsed only on empty polls — load-dependent effective window. Wall-clock deadline via Time.get_ticks_msec; ceiling 5s->10s (exit-on-arrival, costs nothing when healthy). Targeted suite 6/6.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 20:47:12 +02:00
jpmschweitzerandClaude Fable 5 9427b165f0 docs(client): golden provenance notes — atlas_* goldens are machine-local until T-1121 (PR #180 review, Tyre T1)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 20:42:37 +02:00
jpmschweitzer 84cfb05eca chore(meta): T-1120 to review — PR #180 up 2026-07-16 20:36:47 +02:00
jpmschweitzerandClaude Fable 5 56b9f135d0 test(client): add_child AtlasViewer in view-api tests — bare .new() has nil _canvas
Three of the four new tests skipped scene-tree entry, so _ready() never resolved _canvas and set_view crashed _apply_transform. Mirrors the fourth (passing) test. Targeted suite green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 20:34:01 +02:00
jpmschweitzer d3384ab417 chore(meta): file T-1121 — visual golden baseline drift across machines (T-1120 finding) 2026-07-16 20:30:31 +02:00
jpmschweitzerandClaude Fable 5 2b2f4f8abb test(client): 12 Atlas golden screenshots — 7 bodies x 3 zooms x 3 overlay sets (T-1120)
Curated from the 42-shot matrix, one per body spanning all zoom levels and overlay sets; self-consistency verified 12/12 at exact pixel match on this box. .import sidecars force-added per the existing golden convention. Bodies: GJ380c, GJ144e, GJ338Bd, GJ820Bc (Metropolis + Cygni yard), GJ251c (T-1116 water/no-roads exhibit), GJ244Ad (frozen), GJ445c-m1 (moon).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 20:29:53 +02:00
jpmschweitzerandClaude Fable 5 799156b140 feat(client): Atlas screenshot capture matrix + set_view API (T-1120)
AtlasViewer gains public set_view(zoom, offset)/get_view_offset (clamped, review-flagged API gap) + gdUnit suite. visual_capture.gd gains an atlas_matrix scenario (one boot, tests/atlas_shots.json-driven: 7 verified bodies x zoom x overlay sets, signal-gated waits on atlas_layers_received/city_names_received with timeout fallback). 12 individually-addressable golden scenarios registered in tests/visual.json. Root-level settings.db* gitignored (capture-spawned servers write their settings store to cwd). Fixes found live: GDScript lambdas capture value-type locals BY VALUE (wait-flag moved to Array carrier); RegionalScreen.enter() no-ops when the screen id is unchanged (direct enter() per body after the first).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 20:29:14 +02:00
jpmschweitzer 17cad2bbf9 chore(meta): activate T-1120 — Atlas screenshot capture matrix + goldens (stig) 2026-07-16 19:31:40 +02:00
jpmschweitzer 9706eb9d0e chore(meta): close atlas-layer batch — T-1112/T-1113 done (PR #179 merged); file T-1118 climate overlay, T-1119 quarter-footprint wiring, T-1120 Atlas screenshot goldens 2026-07-16 19:25:54 +02:00
jpmschweitzer d96f11fb03 Merge remote-tracking branch 'origin/atlas-layer-wiring' 2026-07-16 19:24:48 +02:00
jpmschweitzerandClaude Fable 5 9d92d8090f fix(simulation): PR #179 review round — F1-F4
F1: T-1112 amendment touch-point list gains the ZoningType PartialOrd/Ord derive (mirroring DistrictType's T-994 precedent) so the dominant_zoning declaration-order tie-break is computable. F2: stale terminal-layer doc on AtlasLayerRequest.up_to corrected to Region. F3: believability cascade_for_body bumped to Region — harness mirrors production depth, invariant documented. F4: end-to-end dispatch coverage — populated-regions test asserts regions + second handle_atlas_request returns region_grid; no-params sibling asserts regions empty. Suites: layer_proxy 10, believability 4, gen_queue 8, cascade 10.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 19:21:26 +02:00
jpmschweitzer a0ca09c22c chore(meta): T-1112/T-1113 to review — PR #179 up 2026-07-16 19:08:47 +02:00
jpmschweitzerandClaude Fable 5 bba14cb9ba test(client): retry input-roundtrip server spawn on fresh port when it dies pre-connect
The server binds AFTER ~250ms of plugin/sim init, so a random-port collision (os error 98) escapes the 0.15s spawn-liveness check and surfaced as a hard test failure at the push gate. Death during the connect window now retries on a fresh port within MAX_PORT_ATTEMPTS. Verified: targeted suite 6/6.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 19:05:43 +02:00
jpmschweitzerandClaude Fable 5 974897b889 docs(meta): D-226 amendment — QuarterFootprintLayer design (T-1112; Tyre data shape + Araminta encoding)
Aggregates-only layer keyed by city_id (QuarterWorldState carries no spatial position — QuarterId is a content-addressed hash; a 512m quarter is sub-pixel at planetary projection, so no outline geometry by construction). Five quantized fields (density_avg_pct, dominant_district_type, dominant_zoning, landmark_count, corridor_count); scaled-glyph encoding anchored on the L3 settlement dot (shape=dominant type, color=density ramp); landmark/corridor counts tooltip-only per the D-226(d) aggregate-stats ceiling; five wiring touch points named for the follow-up ticket.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 18:52:13 +02:00
jpmschweitzerandClaude Fable 5 4f52abd532 feat(simulation): wire region climate layer into the cascade + proxy (T-1113, D-243)
CascadeLayer::Region appended per the enum's append-only Ord rule (depends only on seed/body_params/heightmap dims — documented); BodyWorldState.regions BTreeMap per the districts precedent; RegionGridLayer dense row-major all-integer encoding (season/weather repr(u8) discriminants, mean_temp deci-degC i16 with i16::MIN airless sentinel, moisture_q u8); build_region_grid mirrors build_district_grid; protocol.gd region_grid passthrough (visual overlay deliberately out of scope); wire fixtures regenerated via make fixtures. atlas:: suite 507 green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 18:51:43 +02:00
jpmschweitzer c2f236e26e chore(meta): activate T-1112/T-1113 atlas-layer batch — Si refinement appended (both READY) 2026-07-16 18:29:37 +02:00
jpmschweitzer b8cc987e2c chore(meta): close road-hub batch — T-1076 done (PR #178 merged); D-242 triple complete 2026-07-16 17:15:31 +02:00
jpmschweitzer 04092df45c Merge remote-tracking branch 'origin/road-hub-refinement' 2026-07-16 17:15:07 +02:00
jpmschweitzer 322cf284fd chore(meta): file T-1117 — heavy_works vocabulary split (PR #178 re-review, Tyre) 2026-07-16 17:10:51 +02:00
jpmschweitzerandClaude Fable 5 d8f350c74a docs(meta): D-242 amendments — M1 re-tag rationale + heavy_works future-split note + T1 scale note (PR #178 review)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 17:04:12 +02:00
jpmschweitzerandClaude Fable 5 cd71d77284 fix(db): M1 — re-tag 5 steel-complex/shipyard corps to Standalone-shaped values; regen (PR #178 review)
cygni-combines -> shipbuilding; sova-station-works, stalownia-kowalski, westphalia-heavy-works -> military_industrial; sede-chemical-works -> fuel_production (closest call, flagged). Standalone 11->16, settlements 11->15, city rows 340->344, tenant links 129->125 (14 unmatched), 0 dupes, fixpoint immediate. Metropolis pin stays (yard is a place beside the city); sova emits nothing pending T-1054.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 17:03:54 +02:00
jpmschweitzerandClaude Fable 5 1fee6fd9da fix(simulation): PR #178 review round — H1-H4, T1, T2
H1: split_edge_at now splits length_cells geometric-distance proportionally (fixed-order f64 polyline sums, halves sum exactly to parent) — subsumes the 2-point-parent all-or-nothing bug. H2: chained-snap test (minor onto minor spur) + determinism assertion actually exercising attach_minors + direct 2-point split unit test. H3: cascade-level RailHeadFacing end-to-end assertion on a plus-shaped landmass fixture (2 deterministic degree-3 settlement junctions). H4+T2: STANDALONE_HQ_JOIN_SQL shared constant, both readers compose it; believability lockstep unit test. T1: HUB_SPACING_DIAG_PX doc cross-refs D-243 elastic seam.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 17:03:30 +02:00
jpmschweitzer e372a4b2de chore(meta): T-1076 to review — PR #178 up 2026-07-16 16:25:40 +02:00
jpmschweitzer 3efe5f6a56 chore(meta): file T-1116 — water-heavy bodies get 0 routable road edges (T-1076 finding) 2026-07-16 16:24:13 +02:00
jpmschweitzerandClaude Fable 5 5d37d205e1 docs(meta): D-242 placement-boundary amendment + D-213 RailHeadFacing amendment (T-1076)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 16:23:31 +02:00
jpmschweitzerandClaude Fable 5 98991284bf feat(simulation): road-graph hub refinement — scaled-cap hubs, co-location collapse, minor-attach edge split, RailHeadFacing (T-1076)
is_standalone_hq threaded through CityRecord/CityPlacement via corporations LEFT JOIN (both readers); hubs = top-cap by population among non-HQ settlements (HUB_SPACING_DIAG_PX=64, HUB_CAP_MIN=6); exact-name collapse keeping lowest city_id with loud warn; nearest-point-on-polyline snap (SNAP_MAX_PX=8) with Junction edge-split preserving from<to via norm_edge, else A*-spur to nearest hub; FoundingOrientation::RailHeadFacing{bearing_degrees} assigned at degree>=3 junctions (octant bearing toward dominant incident edge), consumed by skeleton_gen railhead_edge() through the D-234b flush-frontage machinery; believability reader now honours baked settlement_class (stale hardcode since T-1075). 11 new targeted tests; existing suites green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 16:23:07 +02:00
jpmschweitzerandClaude Fable 5 a0ebdbe6b8 feat(db): corp-HQ placement boundary re-tune — Standalone only for industrial-complex HQs (T-1076 item 0, D-242)
95->11 Standalone / 60->144 CityTenant per Jeroen's boundary ruling: only extraction/mining/quarrying, heavy vehicle+shipyard, heavy energy, gate infrastructure keep their own settlements; craft/consumer manufacturing, agriculture offices, high-tech fabs flip to CityTenant. Cygni pin moved to Metropolis (its HQ settlement vanishes under the flip). Regen systems.db: 340 city rows, 129 tenant links, fixpoint stable.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 16:22:22 +02:00
jpmschweitzer f5bb71736b chore(meta): activate T-1076 road-hub batch — Si refinement + gap resolutions (incl. scope item 0: placement-map re-tune per Jeroen) 2026-07-16 15:35:04 +02:00
jpmschweitzer 9336209ea9 chore(meta): close settlement-dataset batch — T-1074/T-1075 done (PR #177 merged); T-1076 unblocked 2026-07-16 13:09:04 +02:00
jpmschweitzer 73ae4ee8cb Merge remote-tracking branch 'origin/settlement-dataset-d242' 2026-07-16 13:08:42 +02:00
jpmschweitzerandClaude Fable 5 9bb533a8b0 docs(meta): H3 — correct D-242 verification wording to recompute-every-run behavior
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 13:00:21 +02:00
jpmschweitzerandClaude Fable 5 e63caeb620 fix(db): PR #177 review round — H1/H2/T1/T2/M1
H1+H2: headquarters_body is reset+derived every run (DB is never source); optional authored frontmatter override, hard-validated; tiebreak now population DESC -> city-bearing body -> type rank -> body_id, preserving belt tenancies and fixing GJ702B to GJ702Bb. T2: NULL-reset pass for corp_specialization/hq_placement before authored re-apply (poison-tested). T1: wiki/corporations/*.md globbed into IMPORT_ECONOMICS_SOURCES. M1: licensed_clinical_services vocabulary value (31st, NonPhysical->CityTenant) + somatic-futures retag. Fixpoint verified stable across 4 consecutive regens (0 diffs); regen systems.db.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 13:00:03 +02:00
jpmschweitzer dc982d3c53 chore(meta): set team copy on T-1115 2026-07-16 12:16:30 +02:00
jpmschweitzer 6d97a3cafc chore(meta): T-1074/T-1075 to review — PR #177 up 2026-07-16 11:49:38 +02:00
jpmschweitzerandClaude Fable 5 0c8a270471 style(simulation): cargo fmt — test fixture tuple layout
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 11:45:57 +02:00
jpmschweitzer 8b50070cf3 chore(meta): file T-1115 — corp-placement wiki coverage gaps (T-1074 follow-up) 2026-07-16 10:30:33 +02:00
jpmschweitzerandClaude Fable 5 c0de8ce68c docs(meta): D-242 implementation status + derivation amendment; D-207/D-223 supersede notes (T-1074/T-1075)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 10:29:34 +02:00
jpmschweitzerandClaude Fable 5 314894d080 test(simulation): lock standalone-HQ-as-ordinary-settlement-row invariant (T-1074)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 10:29:17 +02:00
jpmschweitzerandClaude Fable 5 62bbf57009 feat(db): corp-HQ settlement model + per-settlement population/class bake (T-1074/T-1075, D-242)
Remove the reserved=1 corp-HQ city-pool cross-reference (duplicate co-named cities); corp_specialization keyed on the D-237 vocabulary extended 27->30; authored corp_hq_placement.toml {CityTenant,Standalone} map; headquarters_body backfill via lifted most-populated-body heuristic + body-type tiebreak; standalone HQs emitted as ordinary settlement rows; Zipf rank-size population spread from bodies.population at import; settlement_class defaults PopulationBudget + settlement_name_locked.toml hero pins; retire orphaned populate-corporations.sh; regen systems.db.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 10:29:00 +02:00