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.
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>
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
RoadGraphLayer + SettlementLayer on AtlasLayerResponse (T-1046 precedent); gen_l2_roads + gen_l3_settlements overlays — cities render on generated bodies
for the first time
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.
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.
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.
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>
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.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
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.
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)
collect_sound_eventsandserve_econ_state_querystay unconditioned — set-gating Simulation leaked a stalefootstep into frozen snapshots (caught by golden_suite; fixed without touching the
fixture; regression test encodes the bug shape)
AutoPause/AutoResumeactions +AutoPauseState(Option A): manual pause and Halfrate survive implant open/close — proven by named tests
gameplay_occluded→send_named_action; 7 Rust + 5 gdUnit testsT-960 — roads + settlements overlays + legend
RoadGraphLayer+SettlementLayeronAtlasLayerResponse(T-1046 precedent);gen_l2_roads+gen_l3_settlementsoverlays — cities render on generated bodiesfor the first time
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 discriminatorsstar_map_data.json/ non-Solmarkers.jsonreads;loading state + replay-on-connect, no silent file fallback
defense-in-depth server exclusion + guarded legacy client read, T-1073 pointer)
Verification
cargo testgreen (1701 lib + all integration incl. golden_suite +determinism, zero fixture regeneration); clippy
--all-targets -D warningscleangodot-cold-parse --run-menuclean; zero new gdlint warnings (39 pre-existing tracked as T-1114)_send_star_map_requestguard — the autoload's_star_map_wantedleaked across suites and crashed 8 pre-existing flow tests on aNil 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
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.
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).
Lead-found (during review verification)
cargo fmtformatted 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 round processed — all 12 findings + 2 recommendations fixed (commit
3304ee30d)No retractions. Disposition:
decode_inboundnow REJECTS union frames: aShapeProbe(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)SystemIndex.reset_test_state()added (clears all three statics) and folded intoSimBridge.reset_test_state()via inlineload()(autoload parse-order rule) — every suite already calling it gets both.has_pending_request()accessor added for testability_star_map_wanted; city-names does NOT touch it (guards flag cross-wiring)"Error"string the handler actually receivessingle_tick_drains_all_ready_inbound_framesnow sends all five frame shapes over the live TCP socket; star-map + city-names buffers asserted (incl. body_id)test_replay_on_connect_sends_star_map_request_live: test-mode flip per thetest_local_bridgeprecedent, stub bridge captures the send — asserts exactly one frame decoding to{"star_map": true}. The crash-site path now has positive-case coverageis_capitaldoc now states the COALESCE reality across both readers — no kind-less source existsgen_fixtures, verified harmless. Noted for future: separatechorecommit next timeInbounddoc: four shapes is the limit; the next inbound shape migrates to the D-225-deferred tagged envelopeAtlasLayerResponsecarries the governance-ceiling comment (D-226(d); only T-1112/T-1113 remain)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 gameeyeball 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.Pull request closed