feat(simulation): Atlas layer viewer batch — auto-pause + roads/settlements overlays + data delivery (T-960/T-970/T-949) #176

Closed
jpmschweitzer wants to merge 0 commits from atlas-layer-viewer into main
Owner

Phase-4 deliverable surface: the generation cascade becomes visible through the implant Atlas (gen_l2_roads + gen_l3_settlements overlays + legend panel), on the D-226 auto-pause substrate (Option A manual-pause reconciliation), with the client's direct file reads replaced by bridge endpoints (Sol excluded per D-236). Full breakdown in the first comment.

Phase-4 deliverable surface: the generation cascade becomes visible through the implant Atlas (gen_l2_roads + gen_l3_settlements overlays + legend panel), on the D-226 auto-pause substrate (Option A manual-pause reconciliation), with the client's direct file reads replaced by bridge endpoints (Sol excluded per D-236). Full breakdown in the first comment.
jpmschweitzer added 5 commits 2026-07-14 16:36:15 +02:00
Si audit rulings (Jeroen, 2026-07-13): D-226 amended (shipped always-toggleable overlay pattern ratified, gen_l0 dropped, legend stands, no tile-level Atlas map); D-191 + CLAUDE.md Phase-4 wording aligned; D-236 amended (Oort-cloud gateway station = concrete player-access cap; Sol never in deterministic runs). T-960 rescoped (L2 roads + L3 settlements + legend in; L4/climate/L5 out), T-949 scoped non-Sol + D-010 citation fix, T-970 refined (Paused gates only advance_tick; economy split; Option A manual-pause reconciliation). New: T-1112 (L4 coarse-footprint design), T-1113 (climate cascade wiring). D-254 claim unused (D-236 already covered Sol).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
D-226 layer 1. World-advancing phases gated on pause: Movement/Storyteller/Knowledge/TickAdvance set-gated via sim_not_paused; Simulation + Economy gated per-system at their registration sites — collect_sound_events and serve_econ_state_query stay unconditioned (transient-buffer clear + paused-allowed query; set-gating Simulation leaked a stale tick-7 footstep into frozen snapshots — caught by golden_suite, fixed without touching the fixture; regression test encodes the bug shape). New PlayerAction::AutoPause/AutoResume + AutoPauseState resource implement Option A reconciliation: auto-resume only fires if auto-pause caused the pause; manual pause and Half rate survive implant open/close. PauseParams SystemParam bundle keeps process_player_input under the 16-param ceiling (BookmarkInputParams precedent). Client: HudGroups.gameplay_occluded now sends AutoPause/AutoResume via send_named_action; 5 gdUnit tests + 7 Rust tests.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
T-960: RoadGraphLayer (L2 edges/junctions, MaintenanceAuthority, rail flag, named routes) + SettlementLayer (name/position/size-class/is_capital/is_port from T-955 placements) as new Option fields on AtlasLayerResponse — T-1046 precedent; layer_proxy doc comment corrected (cascade runs through RoadGraph, client up_to ignored). T-949: new StarMapRequest/StarMapResponse (raw JSON passthrough of the star_map_data.json bake) + CityNamesRequest/CityNamesResponse (atlas_city_names via CityContextReader) with defense-in-depth Sol exclusion (GJ-0 system id OR settlement_wave='origin', D-236). Inbound demux extended with mandatory boolean discriminator fields (serde ignores unknown fields — optional-shape sniffing would be ambiguous); AtlasLayerRequest unchanged. SimBridge trait +2 methods, implemented on TcpBridge + LocalBridge. CityPlacement/CityRecord gained name/population/is_capital (BodyWorldState cache-hit path stays DB-free). ~30 new unit tests incl. demux disambiguation + Sol branches; gen_fixtures extended for road/settlement samples.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
T-960: gen_l2_roads (MaintenanceAuthority-colored polylines, rail styling, junction markers) + gen_l3_settlements (size-scaled markers, capital shape, name labels) overlays — cities render on generated bodies for the first time; left-side generation legend panel (D-226 item 3, data-driven per-overlay spec, implant component library); protocol.gd decodes road_graph/settlements + the two new response types. T-949: system_index/atlas_app/overview_screen migrated off the direct star_map_data.json read to StarMapRequest over the bridge (loading state + replay-on-connect, no silent file fallback); atlas_viewer _load_markers requests CityNamesResponse for non-Sol bodies; Sol keeps the legacy authored markers.json geometry read (D-236/T-1073, load-bearing guard). Lead fix: _send_star_map_request now carries the same guard as request_star_map — the autoload's _star_map_wanted leaked across gdUnit suites and the unguarded replay-on-CONNECTED crashed 8 pre-existing flow tests on a Nil bridge; reset_test_state clears the flag. Fixtures regenerated via gen_fixtures (road/settlement samples). Full suite 2946/2946.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
fmt: atlas_data_proxy.rs test code. godot-cold-parse: the cold parse re-seeds the class cache WITHOUT addon classes (gdUnit4's GdUnitTestCIRunner missing), leaving tests/run-godot unable to start (0 tests / 355ms — caught by the pre-push gate running the suite right after this script). The script now restores a full cache via a final --import pass before exiting; the cold verdict is unaffected.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Author
Owner

Atlas layer viewer batch — T-960 / T-970 / T-949

Phase-4 deliverable surface: the generation cascade becomes visible through the
implant Atlas, on the pause substrate D-226 specifies, with the client's file-read
boundary violations closed. Scoped per the 2026-07-13 Si audit + rulings
(D-226/D-191/D-236 amendments, commit 672a583e6).

T-970 — auto-pause substrate (server + client)

  • World-advancing phases gated on pause; PreInput/Input/Snapshot/PostSnapshot stay live
  • Per-system split for Simulation + Economy: collect_sound_events and
    serve_econ_state_query stay unconditioned — set-gating Simulation leaked a stale
    footstep into frozen snapshots (caught by golden_suite; fixed without touching the
    fixture
    ; regression test encodes the bug shape)
  • AutoPause/AutoResume actions + AutoPauseState (Option A): manual pause and Half
    rate survive implant open/close — proven by named tests
  • Client: gameplay_occludedsend_named_action; 7 Rust + 5 gdUnit tests

T-960 — roads + settlements overlays + legend

  • RoadGraphLayer + SettlementLayer on AtlasLayerResponse (T-1046 precedent);
    gen_l2_roads + gen_l3_settlements overlays — cities render on generated bodies
    for the first time
  • Left-side generation legend panel (D-226 item 3, data-driven, implant components)
  • Out of scope per rulings: L4 (design ticket T-1112), climate (wiring ticket T-1113),
    L5 (never Atlas-mapped, D-226 amendment)

T-949 — Atlas data delivery (boundary enforcement)

  • StarMapRequest/Response (raw JSON passthrough) + CityNamesRequest/Response
    (names via CityContextReader), mandatory boolean demux discriminators
  • Client migrated off direct star_map_data.json / non-Sol markers.json reads;
    loading state + replay-on-connect, no silent file fallback
  • Sol exception kept (D-236 as amended: access capped at the Oort gateway;
    defense-in-depth server exclusion + guarded legacy client read, T-1073 pointer)

Verification

  • Server: full cargo test green (1701 lib + all integration incl. golden_suite +
    determinism, zero fixture regeneration); clippy --all-targets -D warnings clean
  • Client: full gdUnit 2946/2946 from the branch worktree; godot-cold-parse --run-menu clean; zero new gdlint warnings (39 pre-existing tracked as T-1114)
  • Lead fix during verification: _send_star_map_request guard — the autoload's
    _star_map_wanted leaked across suites and crashed 8 pre-existing flow tests on a
    Nil bridge (worktree-cwd false-green also caught and re-verified)

Agents: dudley-t970, dudley-atlas-server, stig-atlas (spend-limit terminated at 95%;
lead completed verification + guard fix). Refinement: Si audit trio, 2026-07-13.

🤖 Generated with Claude Code

## Atlas layer viewer batch — T-960 / T-970 / T-949 Phase-4 deliverable surface: the generation cascade becomes *visible* through the implant Atlas, on the pause substrate D-226 specifies, with the client's file-read boundary violations closed. Scoped per the 2026-07-13 Si audit + rulings (D-226/D-191/D-236 amendments, commit 672a583e6). ### T-970 — auto-pause substrate (server + client) - World-advancing phases gated on pause; PreInput/Input/Snapshot/PostSnapshot stay live - Per-system split for Simulation + Economy: `collect_sound_events` and `serve_econ_state_query` stay unconditioned — set-gating Simulation leaked a stale footstep into frozen snapshots (**caught by golden_suite; fixed without touching the fixture**; regression test encodes the bug shape) - `AutoPause`/`AutoResume` actions + `AutoPauseState` (Option A): manual pause and Half rate survive implant open/close — proven by named tests - Client: `gameplay_occluded` → `send_named_action`; 7 Rust + 5 gdUnit tests ### T-960 — roads + settlements overlays + legend - `RoadGraphLayer` + `SettlementLayer` on `AtlasLayerResponse` (T-1046 precedent); `gen_l2_roads` + `gen_l3_settlements` overlays — **cities render on generated bodies for the first time** - Left-side generation legend panel (D-226 item 3, data-driven, implant components) - Out of scope per rulings: L4 (design ticket T-1112), climate (wiring ticket T-1113), L5 (never Atlas-mapped, D-226 amendment) ### T-949 — Atlas data delivery (boundary enforcement) - `StarMapRequest/Response` (raw JSON passthrough) + `CityNamesRequest/Response` (names via `CityContextReader`), mandatory boolean demux discriminators - Client migrated off direct `star_map_data.json` / non-Sol `markers.json` reads; loading state + replay-on-connect, no silent file fallback - **Sol exception kept** (D-236 as amended: access capped at the Oort gateway; defense-in-depth server exclusion + guarded legacy client read, T-1073 pointer) ### Verification - Server: full `cargo test` green (1701 lib + all integration incl. golden_suite + determinism, zero fixture regeneration); clippy `--all-targets -D warnings` clean - Client: full gdUnit **2946/2946** from the branch worktree; `godot-cold-parse --run-menu` clean; zero new gdlint warnings (39 pre-existing tracked as T-1114) - Lead fix during verification: `_send_star_map_request` guard — the autoload's `_star_map_wanted` leaked across suites and crashed 8 pre-existing flow tests on a Nil bridge (worktree-cwd false-green also caught and re-verified) Agents: dudley-t970, dudley-atlas-server, stig-atlas (spend-limit terminated at 95%; lead completed verification + guard fix). Refinement: Si audit trio, 2026-07-13. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Author
Owner

Review: atlas-layer-viewer → main (type: code)

Hoshe (Code Quality): REQUEST_CHANGES

Pause substrate correct and unusually well-tested — independent audit of every TickPhase registration server-wide found no missed gating; Option-A semantics proven by the three named tests; PauseParams math checks out. Bridge demux, atlas proxies, and the DB-free cache-hit invariant verified against D-225/D-236/T-960. Merge-path note (mandatory): sim_bridge/protocol handshake code changed; automated merge-path suite (test_merge_path_flows_sprint37) passed and godot-cold-parse --run-menu launched the menu, but no human make-game run happened — combined with H7 this is the thinnest-verified area of the PR.

# File Issue
H1 bridge/mod.rs:41-108 Demux "mutually exclusive" doc claim false for union frames — a frame carrying both discriminators silently routes to first-tried shape; soften the claim or reject multi-shape frames
H2 system_index.gd:19-21 Static _cache/_loaded/_requested: same leak class as the SimBridge._star_map_wanted bug this PR fixes, no reset hook (latent — no other suite touches it yet)
H3 test_atlas_data_delivery.gd:229-236 Both no-op-in-test-mode tests assert nothing; _star_map_wanted flip is the meaningful assertion
H4 test_system_index.gd:101-109 "Retries after a failed ingest" never ingests a failure — duplicates the already-loaded no-op test; the retry semantic is asserted nowhere
H5 test_atlas_city_names.gd:148-161 Error-status fixture uses the raw wire shape {"Error": …}; the handler only ever sees the normalized "Error" string — passes by coincidence
H6 server/tests/bridge_tcp.rs:336-404 The live-TCP e2e was fixed up for the new required resources but not extended to send StarMapRequest/CityNamesRequest frames — the two new types never ride the real framing/poll path in any test
H7 sim_bridge.gd:120-128 Replay-on-CONNECTED (the exact crash mechanism the lead's guard fixed) has zero positive-case coverage; test_local_bridge.gd:238-253 is the established test_mode-flip precedent to apply
H8 protocol.gd:777-778 "PLACEHOLDER … pending confirmation" is stale — server field names confirmed identical in this same PR
H9 attractor_matching.rs:43 is_capital doc cites the believability harness as a defaults-to-false example; this PR's own believability.rs diff now reads kind from the DB
H10 13 snapshot_*.msgpack Silently regenerated (verified harmless: stale vs. their own generator; no client reads "version") but unmentioned in any commit message — cost a real bisection investigation; document or split next time

Tyre (Architecture): REQUEST_CHANGES

Pause split coherent and durable (independent check of the other clear-and-refill candidates — anomaly/visibility recompute-from-frozen-input is safe, and the distinguishing principle is documented where the next engineer lands). Demux is D-225-amendment-compliant but at the practical ceiling of hand-rolled sniffing. Layer-Option growth is governance-bounded (~6 fields ever, D-226(d)). Sol carve-out is clean defense-in-depth; the boundary enforcement is real (client FileAccess removed, not relocated).

# File Issue
T1 system_index.gd:19-21 = H2. Add SystemIndex.reset_test_state() (clear all three statics), folded into SimBridge.reset_test_state() which dozens of suites already call
T2 protocol.gd:773-779 = H8. Placeholder language invites a future maintainer to "fix" a mismatch that doesn't exist
T-r1 bridge/mod.rs module doc Recommendation: write the threshold down — next new Inbound shape triggers the tagged-envelope migration D-225 deferred
T-r2 layer_proxy.rs AtlasLayerResponse Recommendation: one-line comment pointing at the governance ceiling (D-226(d): no L5 layer ever; remaining candidates only T-1112/T-1113)

Lead-found (during review verification)

  • The gate-round cargo fmt formatted layer_proxy.rs / plugin.rs / bridge/mod.rs / main.rs beyond the committed atlas_data_proxy.rs — the committed tree is fmt-dirty (gate passed against the clean working tree). Will be committed in the fix round.

Verdict: CHANGES REQUESTED — 12 unique findings + 2 recommendations + 1 lead item

Lead spot-checks verified every sampled claim (system_index statics + absent reset, protocol.gd:777, the four fmt-dirty files). No retractions. H10 resolves via the documentation option (history already pushed; no rewrite). Fix round follows on the branch.

## Review: atlas-layer-viewer → main (type: code) ### Hoshe (Code Quality): REQUEST_CHANGES Pause substrate correct and unusually well-tested — independent audit of every TickPhase registration server-wide found no missed gating; Option-A semantics proven by the three named tests; PauseParams math checks out. Bridge demux, atlas proxies, and the DB-free cache-hit invariant verified against D-225/D-236/T-960. **Merge-path note (mandatory): sim_bridge/protocol handshake code changed; automated merge-path suite (test_merge_path_flows_sprint37) passed and godot-cold-parse --run-menu launched the menu, but no human make-game run happened — combined with H7 this is the thinnest-verified area of the PR.** | # | File | Issue | |---|------|-------| | H1 | bridge/mod.rs:41-108 | Demux "mutually exclusive" doc claim false for union frames — a frame carrying both discriminators silently routes to first-tried shape; soften the claim or reject multi-shape frames | | H2 | system_index.gd:19-21 | Static _cache/_loaded/_requested: same leak class as the SimBridge._star_map_wanted bug this PR fixes, no reset hook (latent — no other suite touches it yet) | | H3 | test_atlas_data_delivery.gd:229-236 | Both no-op-in-test-mode tests assert nothing; _star_map_wanted flip is the meaningful assertion | | H4 | test_system_index.gd:101-109 | "Retries after a failed ingest" never ingests a failure — duplicates the already-loaded no-op test; the retry semantic is asserted nowhere | | H5 | test_atlas_city_names.gd:148-161 | Error-status fixture uses the raw wire shape {"Error": …}; the handler only ever sees the normalized "Error" string — passes by coincidence | | H6 | server/tests/bridge_tcp.rs:336-404 | The live-TCP e2e was fixed up for the new required resources but not extended to send StarMapRequest/CityNamesRequest frames — the two new types never ride the real framing/poll path in any test | | H7 | sim_bridge.gd:120-128 | Replay-on-CONNECTED (the exact crash mechanism the lead's guard fixed) has zero positive-case coverage; test_local_bridge.gd:238-253 is the established test_mode-flip precedent to apply | | H8 | protocol.gd:777-778 | "PLACEHOLDER … pending confirmation" is stale — server field names confirmed identical in this same PR | | H9 | attractor_matching.rs:43 | is_capital doc cites the believability harness as a defaults-to-false example; this PR's own believability.rs diff now reads kind from the DB | | H10 | 13 snapshot_*.msgpack | Silently regenerated (verified harmless: stale vs. their own generator; no client reads "version") but unmentioned in any commit message — cost a real bisection investigation; document or split next time | ### Tyre (Architecture): REQUEST_CHANGES Pause split coherent and durable (independent check of the other clear-and-refill candidates — anomaly/visibility recompute-from-frozen-input is safe, and the distinguishing principle is documented where the next engineer lands). Demux is D-225-amendment-compliant but at the practical ceiling of hand-rolled sniffing. Layer-Option growth is governance-bounded (~6 fields ever, D-226(d)). Sol carve-out is clean defense-in-depth; the boundary enforcement is real (client FileAccess removed, not relocated). | # | File | Issue | |---|------|-------| | T1 | system_index.gd:19-21 | = H2. Add SystemIndex.reset_test_state() (clear all three statics), folded into SimBridge.reset_test_state() which dozens of suites already call | | T2 | protocol.gd:773-779 | = H8. Placeholder language invites a future maintainer to "fix" a mismatch that doesn't exist | | T-r1 | bridge/mod.rs module doc | Recommendation: write the threshold down — next new Inbound shape triggers the tagged-envelope migration D-225 deferred | | T-r2 | layer_proxy.rs AtlasLayerResponse | Recommendation: one-line comment pointing at the governance ceiling (D-226(d): no L5 layer ever; remaining candidates only T-1112/T-1113) | ### Lead-found (during review verification) - The gate-round `cargo fmt` formatted layer_proxy.rs / plugin.rs / bridge/mod.rs / main.rs beyond the committed atlas_data_proxy.rs — the committed tree is fmt-dirty (gate passed against the clean working tree). Will be committed in the fix round. ### Verdict: CHANGES REQUESTED — 12 unique findings + 2 recommendations + 1 lead item Lead spot-checks verified every sampled claim (system_index statics + absent reset, protocol.gd:777, the four fmt-dirty files). No retractions. H10 resolves via the documentation option (history already pushed; no rewrite). Fix round follows on the branch.
jpmschweitzer added 1 commit 2026-07-14 17:33:37 +02:00
H1 demux: ShapeProbe defensive multi-shape rejection (union frames now Err, not first-match; +2 tests) and doc claim made honest. H2/T1 SystemIndex.reset_test_state() folded into SimBridge.reset_test_state() (load() inline per autoload rule) + has_pending_request() accessor. H3 no-op tests now assert the replay flag both directions. H4 retry test actually ingests a failure and asserts the retry semantic. H5 error fixture uses the normalized status string. H6 bridge_tcp e2e sends all five frame shapes over real TCP (star-map + city-names buffers asserted). H7 positive replay-on-CONNECTED test via the test_local_bridge test-mode-flip precedent (stub bridge captures + decodes the request bytes). H8/T2 stale PLACEHOLDER doc replaced with the confirmed contract. H9 is_capital doc matches the COALESCE reality. T-r1 demux ceiling written down (next shape = tagged envelope). T-r2 AtlasLayerResponse governance ceiling comment. Lead item: the four cargo-fmt-formatted files from the gate round are now committed (layer_proxy/plugin/bridge-mod/main). H10 note for the record: the 13 snapshot_*.msgpack fixtures in commit 845737617 were regenerated because they were stale against their own generator (pre-existing version-key removal) — verified harmless, no client reads that key.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Author
Owner

Review round processed — all 12 findings + 2 recommendations fixed (commit 3304ee30d)

No retractions. Disposition:

# Fix
H1 decode_inbound now REJECTS union frames: a ShapeProbe (Option key-presence check) counts matched shapes and errors with a hex dump when >1 — no more silent first-match routing. Doc claim rewritten to what's enforced. +2 tests (ambiguous_union_frame_is_rejected)
H2/T1 SystemIndex.reset_test_state() added (clears all three statics) and folded into SimBridge.reset_test_state() via inline load() (autoload parse-order rule) — every suite already calling it gets both. has_pending_request() accessor added for testability
H3 Both no-op tests now assert: star-map sets _star_map_wanted; city-names does NOT touch it (guards flag cross-wiring)
H4 Retry test rewritten to the real scenario: refresh → pending; Error ingest → pending cleared, not loaded; refresh again → pending again. The retry semantic is now asserted, not narrated
H5 Error fixture uses the normalized "Error" string the handler actually receives
H6 single_tick_drains_all_ready_inbound_frames now sends all five frame shapes over the live TCP socket; star-map + city-names buffers asserted (incl. body_id)
H7 test_replay_on_connect_sends_star_map_request_live: test-mode flip per the test_local_bridge precedent, stub bridge captures the send — asserts exactly one frame decoding to {"star_map": true}. The crash-site path now has positive-case coverage
H8/T2 PLACEHOLDER doc replaced with the confirmed-contract statement (still names itself as the one client-side spot to touch on contract change)
H9 is_capital doc now states the COALESCE reality across both readers — no kind-less source exists
H10 Documented in the fix commit message: the 13 snapshot fixtures were stale against their own generator (pre-existing version-key removal), regenerated as a side effect of gen_fixtures, verified harmless. Noted for future: separate chore commit next time
T-r1 Demux ceiling written into the Inbound doc: four shapes is the limit; the next inbound shape migrates to the D-225-deferred tagged envelope
T-r2 AtlasLayerResponse carries the governance-ceiling comment (D-226(d); only T-1112/T-1113 remain)
Lead The four cargo-fmt-formatted files from the gate round are committed — the committed tree is now fmt-clean, not just the working tree

Verification: bridge lib tests 42/42 (incl. the new rejection tests), bridge_tcp e2e 7/7 with the five-frame drain, targeted client suites green (data-delivery 42, system-index 16, city-names 14). Full cargo + gdUnit suites re-verified by the push gate on this push.

On the merge-path note: acknowledged — the automated merge-path suite + menu launch stand, and a human make game eyeball of the new overlays (roads/settlements/legend on a generated body) is recommended as part of merge sign-off; it's also simply the first time the L2/L3 layers are visible at all.

## Review round processed — all 12 findings + 2 recommendations fixed (commit 3304ee30d) No retractions. Disposition: | # | Fix | |---|-----| | H1 | `decode_inbound` now REJECTS union frames: a `ShapeProbe` (Option<IgnoredAny> key-presence check) counts matched shapes and errors with a hex dump when >1 — no more silent first-match routing. Doc claim rewritten to what's enforced. +2 tests (`ambiguous_union_frame_is_rejected`) | | H2/T1 | `SystemIndex.reset_test_state()` added (clears all three statics) and folded into `SimBridge.reset_test_state()` via inline `load()` (autoload parse-order rule) — every suite already calling it gets both. `has_pending_request()` accessor added for testability | | H3 | Both no-op tests now assert: star-map sets `_star_map_wanted`; city-names does NOT touch it (guards flag cross-wiring) | | H4 | Retry test rewritten to the real scenario: refresh → pending; Error ingest → pending cleared, not loaded; refresh again → pending again. The retry semantic is now asserted, not narrated | | H5 | Error fixture uses the normalized `"Error"` string the handler actually receives | | H6 | `single_tick_drains_all_ready_inbound_frames` now sends all five frame shapes over the live TCP socket; star-map + city-names buffers asserted (incl. body_id) | | H7 | `test_replay_on_connect_sends_star_map_request_live`: test-mode flip per the `test_local_bridge` precedent, stub bridge captures the send — asserts exactly one frame decoding to `{"star_map": true}`. The crash-site path now has positive-case coverage | | H8/T2 | PLACEHOLDER doc replaced with the confirmed-contract statement (still names itself as the one client-side spot to touch on contract change) | | H9 | `is_capital` doc now states the COALESCE reality across both readers — no kind-less source exists | | H10 | Documented in the fix commit message: the 13 snapshot fixtures were stale against their own generator (pre-existing version-key removal), regenerated as a side effect of `gen_fixtures`, verified harmless. Noted for future: separate `chore` commit next time | | T-r1 | Demux ceiling written into the `Inbound` doc: four shapes is the limit; the next inbound shape migrates to the D-225-deferred tagged envelope | | T-r2 | `AtlasLayerResponse` carries the governance-ceiling comment (D-226(d); only T-1112/T-1113 remain) | | Lead | The four cargo-fmt-formatted files from the gate round are committed — the committed tree is now fmt-clean, not just the working tree | Verification: bridge lib tests 42/42 (incl. the new rejection tests), bridge_tcp e2e 7/7 with the five-frame drain, targeted client suites green (data-delivery 42, system-index 16, city-names 14). Full cargo + gdUnit suites re-verified by the push gate on this push. On the merge-path note: acknowledged — the automated merge-path suite + menu launch stand, and a human `make game` eyeball of the new overlays (roads/settlements/legend on a generated body) is recommended as part of merge sign-off; it's also simply the first time the L2/L3 layers are visible at all.
jpmschweitzer closed this pull request 2026-07-14 18:02:52 +02:00

Pull request closed

This pull request cannot be reopened because the branch was deleted.
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: jpmschweitzer/settled-reach#176