2026-04-18 06:27:00 -07:00
|
|
|
|
# Rehost Queue
|
|
|
|
|
|
|
|
|
|
|
|
Working rule:
|
|
|
|
|
|
|
|
|
|
|
|
- Do not stop after commits.
|
|
|
|
|
|
- After each commit, check this queue and continue.
|
2026-04-18 13:37:03 -07:00
|
|
|
|
- Only stop if the queue is empty, the remaining work cannot be advanced by any further non-hook
|
|
|
|
|
|
work without guessing, or you need approval.
|
2026-04-18 06:27:00 -07:00
|
|
|
|
- Before any final response, state which stop condition is true. If none is true, continue.
|
|
|
|
|
|
|
|
|
|
|
|
## Next
|
|
|
|
|
|
|
2026-04-18 18:09:45 -07:00
|
|
|
|
- Treat the periodic-company trace as the main shellless simulation frontier now that the
|
|
|
|
|
|
infrastructure footer-bit residue is layout/presentation-owned. The checked-in
|
|
|
|
|
|
`runtime inspect-periodic-company-service-trace <save.gms>` report now exposes concrete branch
|
|
|
|
|
|
owners instead of generic blockers:
|
|
|
|
|
|
- `industry_acquisition_side_branch` carries
|
|
|
|
|
|
`0x004019e0 -> 0x004014b0` with the city-connection sibling `0x00406050`
|
|
|
|
|
|
- `city_connection_announcement` carries
|
|
|
|
|
|
`0x004019e0 -> 0x00406050` plus peer helpers
|
|
|
|
|
|
`0x00420030 / 0x00420280 / 0x0047efe0`
|
|
|
|
|
|
- `linked_transit_roster_maintenance` carries
|
|
|
|
|
|
`0x004019e0 -> 0x00409950`
|
|
|
|
|
|
- Make the next static/rehost slice the near-city industry acquisition owner seam under
|
|
|
|
|
|
`0x004014b0`, not another generic infrastructure pass. The concrete questions are:
|
2026-04-18 18:21:22 -07:00
|
|
|
|
- which minimum persisted peer-site fields on the already-grounded `0x006cec20` placed-structure
|
|
|
|
|
|
collection feed near-city unowned-industry candidates
|
2026-04-18 21:04:26 -07:00
|
|
|
|
- which placed-structure, city-or-region, and company linkage survives save/load strongly enough
|
|
|
|
|
|
to drive the proximity scan
|
2026-04-18 18:09:45 -07:00
|
|
|
|
- whether the acquisition branch can be rehosted as a shellless sibling beside the already
|
|
|
|
|
|
grounded annual-finance helper
|
2026-04-18 18:13:04 -07:00
|
|
|
|
- Direct disassembly now narrows that acquisition strip further:
|
2026-04-18 21:04:26 -07:00
|
|
|
|
- `0x004014b0` scans the live placed-structure collection at `0x0062b26c`
|
2026-04-18 18:16:21 -07:00
|
|
|
|
- `0x0041f6e0 -> 0x0042b2d0` is the center-cell token gate over the current region
|
|
|
|
|
|
- `0x0047de00 -> 0x0040c990` is the linked-region status branch reused from the city-connection
|
|
|
|
|
|
helper strip
|
|
|
|
|
|
- `0x004801a0` is the route-anchor reachability gate for one candidate site through
|
2026-04-18 21:04:26 -07:00
|
|
|
|
`0x00401860 -> 0x0048e3c0`
|
|
|
|
|
|
- the company-side half of that gate is now explicit too: `0x00401860` validates or rebuilds the
|
|
|
|
|
|
cached linked-transit route-anchor entry id `[company+0x0d35]` from the live route-entry
|
|
|
|
|
|
collection using fallback count lanes `[company+0x7664/+0x7668/+0x766c]`
|
2026-04-18 21:11:40 -07:00
|
|
|
|
- those four company lanes are now threaded into save-native company market state, so the
|
|
|
|
|
|
route-anchor side of the acquisition gate is no longer just a trace-only blocker
|
2026-04-18 21:04:26 -07:00
|
|
|
|
- `0x0040d360` is the subtype-`4` predicate over the current placed-structure subject's
|
|
|
|
|
|
candidate byte `[candidate+0x32]`
|
|
|
|
|
|
- `0x0040d540` scores site/company proximity with pending-bonus context
|
|
|
|
|
|
- `0x0040cac0` samples the cached site tri-lane at `[site+0x310/+0x338/+0x360]`
|
2026-04-18 18:21:22 -07:00
|
|
|
|
- `0x00405920` walks same-company linked site peers above the live placed-structure / peer-site
|
|
|
|
|
|
collection seam
|
|
|
|
|
|
- `0x00420030 / 0x00420280` is the boolean/selector peer-site pair over `0x006cec20`, combining
|
|
|
|
|
|
`0x0042b2d0`, the optional company filter through `0x0047efe0`, the station-or-transit gate
|
|
|
|
|
|
`0x0047fd50`, and the status branch `0x0047de00 -> 0x0040c990`
|
2026-04-18 18:26:04 -07:00
|
|
|
|
- `0x0047efe0` and `0x0047fd50` both consume `[site+0x04]` as the live backing-record selector
|
2026-04-18 18:30:28 -07:00
|
|
|
|
- `0x00480210` writes linked-peer row `[peer+0x04]` from the anchor-site id argument
|
|
|
|
|
|
- `0x0040f6d0 -> 0x00481390` writes the anchor-site linked peer id back into `[site+0x2a8]`
|
2026-04-18 18:26:04 -07:00
|
|
|
|
- `0x0047dda0` consumes `[peer+0x08]` as the linked route-entry anchor id
|
2026-04-18 21:17:32 -07:00
|
|
|
|
- `0x0041f7e0 / 0x0041f810 / 0x0041f850` already ground `[site+0x2a4]` as the record's own
|
|
|
|
|
|
placed-structure id lane beneath the peer-chain helpers
|
|
|
|
|
|
- `0x0040d210` is the owner-side placed-structure resolver from `[site+0x276]` through
|
|
|
|
|
|
`0x0062be10`
|
2026-04-18 18:26:04 -07:00
|
|
|
|
- `0x00480710 -> 0x0048abc0 / 0x00493cf0` is the linked-site refresh and route-entry rebind or
|
|
|
|
|
|
synthesis strip above that anchor lane
|
2026-04-18 20:57:22 -07:00
|
|
|
|
- the same `0x00480710` replay strip now also republishes the concrete world-cell owner chains:
|
|
|
|
|
|
`0x0042bbf0 / 0x0042bbb0` remove or prepend the current site in the owner chain rooted at
|
|
|
|
|
|
`[cell+0xd4]`, while `0x0042c9f0 / 0x0042c9a0` remove or prepend it in the linked-site chain
|
|
|
|
|
|
rooted at `[cell+0xd6]`
|
2026-04-18 18:33:50 -07:00
|
|
|
|
- late world bring-up `0x00444690` is the current caller of
|
|
|
|
|
|
`0x004133b0 placed_structure_collection_refresh_local_runtime_records_and_position_scalars`
|
|
|
|
|
|
- `0x004133b0` drains queued site ids through `0x0040e450` and then sweeps all live sites
|
|
|
|
|
|
through `0x0040ee10`
|
|
|
|
|
|
- `0x0040ee10` reaches `0x0040edf6 -> 0x00480710` for linked-peer refresh and then the later
|
|
|
|
|
|
`0x0040e360` follow-on
|
|
|
|
|
|
- `0x004160aa` is a separate non-bring-up runtime caller of `0x0040ee10`
|
2026-04-18 18:26:04 -07:00
|
|
|
|
- the direct `0x36b1` per-record callbacks serialize base scalar triplets
|
|
|
|
|
|
`[this+0x206/+0x20a/+0x20e]` plus the subordinate payload callback strip, and the
|
|
|
|
|
|
`0x4a9d/0x4a3a/0x4a3b` side-buffer owner only persists route-entry lists, three byte arrays,
|
|
|
|
|
|
five proximity buckets, and the sampled-cell list
|
2026-04-18 21:17:32 -07:00
|
|
|
|
- `0x004269b0` consumes the chosen site's own placed-structure id lane `[site+0x2a4]`
|
2026-04-18 21:04:26 -07:00
|
|
|
|
- That leaves the acquisition blocker set tighter than before:
|
|
|
|
|
|
- peer-site and linked-site replay seams are grounded enough for planning
|
2026-04-18 21:14:46 -07:00
|
|
|
|
- the live owner-company meaning of `[site+0x276]` is already grounded through `0x0047efe0`,
|
2026-04-18 21:17:32 -07:00
|
|
|
|
with the direct owner-side resolver bounded at `0x0040d210`
|
|
|
|
|
|
- `[site+0x2a4]` is already grounded as the record's own placed-structure id lane through the
|
2026-04-18 21:39:37 -07:00
|
|
|
|
peer-chain helpers `0x0041f7e0 / 0x0041f810 / 0x0041f850`, and constructor-side `0x00480210`
|
|
|
|
|
|
already seeds that lane for new linked-site rows
|
2026-04-18 21:17:32 -07:00
|
|
|
|
- the subtype byte consumed as `[candidate+0x32] == 4` is already bounded under the
|
2026-04-18 21:14:46 -07:00
|
|
|
|
aux-candidate load/stem-policy chain
|
|
|
|
|
|
`0x004131f0 -> 0x00412fb0 -> 0x004120b0 -> 0x00412ab0`
|
2026-04-18 21:17:32 -07:00
|
|
|
|
- remaining non-hook gaps are the save or replay projection of `[site+0x276]`, the save or
|
2026-04-18 21:39:37 -07:00
|
|
|
|
replay projection of `[site+0x2a4]` into restored rows, the cached tri-lane `[site+0x310/+0x338/+0x360]`, and the projection from
|
2026-04-18 21:14:46 -07:00
|
|
|
|
restored backing-record selector `[site+0x04]` back into the loaded candidate subtype row
|
2026-04-18 21:26:32 -07:00
|
|
|
|
- the checked-in periodic-company trace now exposes those gaps as structured statuses instead of
|
|
|
|
|
|
only prose:
|
|
|
|
|
|
- site owner-company lane = `live_meaning_grounded_projection_missing`
|
|
|
|
|
|
- site self-id lane = `live_meaning_grounded_projection_missing`
|
|
|
|
|
|
- site cached tri-lane = `delta_reader_grounded_projection_missing`
|
2026-04-18 21:37:57 -07:00
|
|
|
|
- candidate subtype lane = `cached_candidate_id_bridge_grounded_projection_missing`
|
|
|
|
|
|
- backing-record selector bridge = `cached_source_candidate_bridge_grounded_projection_missing`
|
2026-04-18 21:28:20 -07:00
|
|
|
|
- the same trace now also carries three explicit projection hypotheses for the next pass:
|
|
|
|
|
|
- `site_owner_and_self_id_replay_from_post_load_refresh`
|
|
|
|
|
|
- `site_cached_tri_lane_payload_or_restore_owner`
|
2026-04-18 21:33:32 -07:00
|
|
|
|
- `cached_source_candidate_id_to_subtype_projection`
|
|
|
|
|
|
- the first of those is now partly ruled down by the checked-in atlas:
|
|
|
|
|
|
`0x004133b0 -> 0x0040e450 / 0x0040ee10` rebuilds cloned local-runtime records and local
|
|
|
|
|
|
position/scalar triplets, but current evidence still does not tie that replay family directly
|
|
|
|
|
|
to `[site+0x276]` or `[site+0x2a4]`
|
|
|
|
|
|
- the second is narrower in the same way:
|
|
|
|
|
|
the checked-in `0x36b1/0x36b2/0x36b3` triplet seam and the
|
|
|
|
|
|
`0x4a9d/0x4a3a/0x4a3b` side-buffer seam still do not serialize `[site+0x310/+0x338/+0x360]`
|
|
|
|
|
|
directly, so the known save seams are ruled down even though a later restore family is still open
|
2026-04-18 21:43:51 -07:00
|
|
|
|
- the dynamic side-buffer load seam is ruled down too:
|
|
|
|
|
|
`0x00481430 -> 0x0047d8e0` repopulates the route-entry list, three byte arrays, five
|
|
|
|
|
|
proximity buckets, and the trailing scratch band from stream, but still does not claim the
|
|
|
|
|
|
cached tri-lane
|
2026-04-18 21:33:32 -07:00
|
|
|
|
- the third hypothesis is now a cached source/candidate bridge question, not just a raw
|
|
|
|
|
|
`[site+0x04]` selector question:
|
|
|
|
|
|
`0x0040cd70` seeds `[site+0x3cc/+0x3d0]` from `0x62b2fc / 0x62b268`,
|
|
|
|
|
|
`0x0040cee0` resolves cached candidate id `[site+0x3d0]` back into the live candidate pool,
|
|
|
|
|
|
and `0x004138f0` already counts live placed structures by that cached candidate id
|
|
|
|
|
|
- that leaves the remaining subtype blocker narrower:
|
|
|
|
|
|
no checked-in replay or restore owner yet guarantees `[site+0x3d0]` is populated for the
|
|
|
|
|
|
acquisition-side rows before `0x0040d360` consumes candidate subtype byte `[candidate+0x32]`
|
2026-04-18 21:37:57 -07:00
|
|
|
|
- the checked-in consumer side is tighter too:
|
|
|
|
|
|
`0x0040dc40` already consumes live owner company `[site+0x276]`, company stat-family
|
|
|
|
|
|
`0x2329/0x0d`, candidate field `[candidate+0x22]`, and the projected-cell validation strip
|
|
|
|
|
|
`0x00417840 -> 0x004197e0`, then commits the linked-site mutation through
|
|
|
|
|
|
`0x0040d1f0 / 0x00480710 / 0x0045b160 / 0x0045b9b0 / 0x00418be0 / 0x0040cd70`
|
2026-04-18 21:42:21 -07:00
|
|
|
|
- the create-side family is grounded separately too:
|
|
|
|
|
|
city-connection direct placement already reaches
|
|
|
|
|
|
`0x00402cb0 -> 0x00403ed5/0x0040446b -> 0x004134d0 -> 0x0040ef10`
|
|
|
|
|
|
as the shared constructor/finalize strip for newly created site rows
|
2026-04-18 21:37:57 -07:00
|
|
|
|
- so the acquisition blocker is no longer “is there any real consumer family above these
|
2026-04-18 21:42:21 -07:00
|
|
|
|
lanes?” or “how do new placed structures finalize?”; it is specifically the restore or replay
|
|
|
|
|
|
owner that populates those live preconditions for already-restored rows before shellless
|
|
|
|
|
|
acquisition runs
|
2026-04-18 18:41:20 -07:00
|
|
|
|
- direct disassembly now shows the generic base constructor `0x0052edf0` clearing base state
|
|
|
|
|
|
through `0x0052ecd0` and then writing `[this+0x04]` from caller arg `1`
|
2026-04-18 18:45:58 -07:00
|
|
|
|
- `0x00455b70` is the concrete placed-structure specialization constructor feeding
|
|
|
|
|
|
`0x0052edf0`, with arg `3` as the primary selector and arg `1` as fallback
|
|
|
|
|
|
- `0x00455c62` is the direct in-body call from that specialization constructor into
|
|
|
|
|
|
`0x0052edf0`
|
|
|
|
|
|
- `0x00456100` is a local wrapper that duplicates its first incoming arg across the
|
|
|
|
|
|
selector/fallback bundle before calling `0x00455b70`
|
|
|
|
|
|
- `0x00456072` is a fixed `0x55f2` callback that forwards three local dwords plus unit scalars
|
|
|
|
|
|
into `0x00455b70`
|
2026-04-18 18:47:41 -07:00
|
|
|
|
- `0x0045c36e / 0x0045da65 / 0x0045e0fc` are concrete callers of `0x00456100`, repeatedly
|
|
|
|
|
|
allocating `0x23a` rows, forwarding stack-backed buffers, and using the same default scalar
|
|
|
|
|
|
lanes
|
2026-04-18 18:49:16 -07:00
|
|
|
|
- the `0x00456100 -> 0x00455b70` wrapper mapping is now grounded far enough to say the sampled
|
|
|
|
|
|
selector-source lanes are `[owner+0x23e]` at `0x0045c36e`, literal zero at `0x0045da65`, and
|
|
|
|
|
|
`[ebp+0x08]` at `0x0045e0fc`
|
2026-04-18 18:51:03 -07:00
|
|
|
|
- direct disassembly now shows `0x0045c150` as a save-backed loader for `[owner+0x23e/+0x242]`:
|
|
|
|
|
|
it zeroes those fields, runs the shared tagged loader `0x00455fc0`, reads tagged payload
|
|
|
|
|
|
`0x5dc1`, and copies the two recovered lanes into `[owner+0x23e/+0x242]` before
|
|
|
|
|
|
`0x0045c310 -> 0x0045c36e` later feeds `[owner+0x23e]` into `0x00456100`
|
2026-04-18 18:52:55 -07:00
|
|
|
|
- the local linked-site helper neighborhood now reaches that same owner strip directly:
|
|
|
|
|
|
`0x0040ceab` calls `0x0045c150`, and `0x0040d1a1` jumps straight into `0x0045c310`
|
2026-04-18 18:41:20 -07:00
|
|
|
|
- `0x00485819` is one typed placed-structure caller of `0x0052edf0` through the generic
|
|
|
|
|
|
three-arg wrapper `0x00530640`
|
2026-04-18 18:45:58 -07:00
|
|
|
|
- `0x00490a79` is one chooser-side caller of `0x00455b70`, feeding literal selector
|
|
|
|
|
|
`0x005cfd74` with fallback seed `0x005c87a8`
|
2026-04-18 20:10:29 -07:00
|
|
|
|
- the periodic-company trace now also surfaces the save-side `0x5dc1` payload/status summaries
|
|
|
|
|
|
already parsed from the `0x36b1` triplet seam; on grounded `p.gms` the payload dword lane is
|
|
|
|
|
|
almost entirely unique while the status kind stays `unset`, and the dominant adjacent payload
|
2026-04-18 20:12:01 -07:00
|
|
|
|
delta is `0x00000780` across `1908` steps; grounded `q.gms` shows the same dominant adjacent
|
|
|
|
|
|
delta `0x00000780` across `1868` steps
|
2026-04-18 20:29:58 -07:00
|
|
|
|
- the same trace now also promotes the one-byte `0x5dc1` post-secondary discriminator explicitly:
|
|
|
|
|
|
grounded
|
2026-04-18 20:23:02 -07:00
|
|
|
|
`p.gms` shows dominant companion byte `0x00` on `2023` rows with only `3` `0x01` rows, and
|
|
|
|
|
|
grounded `q.gms` shows dominant companion byte `0x00` on `2043` rows with only `14` `0x01`
|
2026-04-18 20:29:58 -07:00
|
|
|
|
rows; the old “pre-footer padding” hypothesis is now better understood as a separate
|
|
|
|
|
|
post-secondary discriminator byte after the repeated secondary payload string, not as the
|
|
|
|
|
|
`[owner+0x242]` field itself
|
2026-04-18 18:33:50 -07:00
|
|
|
|
So the next owner question is no longer “what does the acquisition branch do?” or “which post-
|
2026-04-18 18:45:58 -07:00
|
|
|
|
load owner replays linked-site refresh?” but “which concrete `0x00455b70` caller family applies
|
|
|
|
|
|
to the live site rows, and which persisted lane becomes the selector bundle that ultimately
|
2026-04-18 18:51:03 -07:00
|
|
|
|
seeds `[site+0x04]`?” The current strongest restore-family hypothesis is now the save-backed
|
|
|
|
|
|
`0x0045c150 -> 0x0045c310 -> 0x0045c36e -> 0x00456100 -> 0x00455b70` strip.
|
2026-04-18 18:26:04 -07:00
|
|
|
|
- Make the next static/rehost slice the peer-site rebuild seam above persistence, not another save
|
|
|
|
|
|
scan:
|
2026-04-18 18:33:50 -07:00
|
|
|
|
- treat `0x00444690 -> 0x004133b0 -> 0x0040e450 / 0x0040ee10 -> 0x0040edf6 -> 0x00480710` as
|
|
|
|
|
|
the checked-in bring-up replay path for existing saves
|
|
|
|
|
|
- treat `0x004160aa -> 0x0040ee10` as the checked-in recurring runtime maintenance entry into the
|
|
|
|
|
|
same linked-peer refresh strip
|
2026-04-18 18:41:20 -07:00
|
|
|
|
- treat `0x0052edf0` as the checked-in field owner for `[site+0x04]`
|
2026-04-18 18:45:58 -07:00
|
|
|
|
- treat `0x00455b70` as the checked-in specialization constructor that maps selector/fallback
|
|
|
|
|
|
bundle lanes into that field owner
|
|
|
|
|
|
- distinguish which `0x00455b70` caller family actually seeds the live site rows before
|
2026-04-18 18:47:41 -07:00
|
|
|
|
`0x00420030 / 0x00420280 / 0x0047efe0 / 0x0047fd50` consume the resulting selector, with the
|
2026-04-18 18:51:03 -07:00
|
|
|
|
current first target being the save-backed
|
|
|
|
|
|
`0x0045c150 -> 0x0045c310 -> 0x0045c36e -> 0x00456100` family
|
2026-04-18 19:06:10 -07:00
|
|
|
|
- use the structured periodic-company trace selector fields now checked into
|
2026-04-18 18:54:16 -07:00
|
|
|
|
`inspect-periodic-company-service-trace`: owner strip
|
|
|
|
|
|
`0x0045c150 -> 0x0045c310 -> 0x0045c36e -> 0x00456100 -> 0x00455b70`, persisted tag
|
2026-04-18 18:55:32 -07:00
|
|
|
|
`0x5dc1`, selector lane `[owner+0x23e]`, class-identity status
|
2026-04-18 19:06:10 -07:00
|
|
|
|
`grounded_direct_local_helper_strip`, and helper linkage
|
|
|
|
|
|
`0x0040ceab -> 0x0045c150` / `0x0040d1a1 -> 0x0045c310` /
|
|
|
|
|
|
`0x0040cd70 seeds [site+0x3cc/+0x3d0] from 0x62b2fc / 0x62b268`
|
2026-04-18 20:10:29 -07:00
|
|
|
|
- use the new `0x5dc1` payload/status summary in the same trace as negative evidence too:
|
2026-04-18 20:12:01 -07:00
|
|
|
|
the current `profile_payload_dword` lane behaves like a save-invariant monotone ladder
|
|
|
|
|
|
(`dominant adjacent delta 0x780` on both `p.gms` and `q.gms`) rather than a compact selector
|
|
|
|
|
|
family, so the next peer-site slice should treat that raw dword as a likely allocator/offset
|
|
|
|
|
|
lane until a stronger selector interpretation appears
|
2026-04-18 20:29:58 -07:00
|
|
|
|
- use the new `0x5dc1` post-secondary-byte summary in the same trace as positive evidence:
|
|
|
|
|
|
that byte is overwhelmingly `0x00` with a tiny `0x01` residue on both grounded saves, so the
|
|
|
|
|
|
next peer-site slice should treat it as a real typed discriminator after the restored
|
|
|
|
|
|
`[owner+0x23e]` / `[owner+0x242]` payload strings and ask which later `0x004014b0` /
|
|
|
|
|
|
`0x00406050` predicates actually consume it
|
|
|
|
|
|
- use the new nonzero-companion name-pair summary in the same trace as a narrower acquisition
|
|
|
|
|
|
clue too: grounded `p.gms` exposes only `TextileMill/TextileMill x3`, while grounded `q.gms`
|
|
|
|
|
|
exposes `TextileMill x9`, `Toolndie x2`, and singleton `Brewery`, `MeatPackingPlant`, and
|
|
|
|
|
|
`MunitionsFactory` rows, so the next peer-site slice should treat nonzero post-secondary-byte
|
|
|
|
|
|
rows as a likely industry-like subset rather than a generic placed-structure mode split
|
2026-04-18 20:33:12 -07:00
|
|
|
|
- keep the already-grounded `0x0047fd50` class gate separate from that byte: direct disassembly
|
|
|
|
|
|
now says `0x0047fd50` resolves the linked peer through `[site+0x04]`, reads candidate class
|
|
|
|
|
|
byte `[candidate+0x8c]`, and returns true only for `0/1/2` while rejecting `3/4` and above,
|
|
|
|
|
|
so the next slice should not conflate the post-secondary byte with the existing
|
|
|
|
|
|
station-or-transit gate
|
2026-04-18 19:06:10 -07:00
|
|
|
|
- treat the peer-site selector seam itself as grounded enough for planning purposes
|
2026-04-18 19:07:20 -07:00
|
|
|
|
- use the new structured restore/runtime field split in the same trace:
|
|
|
|
|
|
restore subset
|
|
|
|
|
|
`[site+0x3cc/+0x3d0]` plus `0x5dc1`-backed `[owner+0x23e/+0x242]`,
|
|
|
|
|
|
and runtime subset
|
|
|
|
|
|
`[site+0x04]`, `[site+0x2a8]`, `[peer+0x08]`
|
2026-04-18 19:08:27 -07:00
|
|
|
|
- use the new structured reconstruction status in the same trace:
|
|
|
|
|
|
`restore_subset_and_bring_up_reconstruct_runtime_subset`
|
|
|
|
|
|
- treat the runtime subset as reconstructible from the restore subset plus the already-grounded
|
|
|
|
|
|
bring-up path for planning purposes
|
2026-04-18 19:09:53 -07:00
|
|
|
|
- use the new structured acquisition input families in the same trace:
|
|
|
|
|
|
region subset
|
|
|
|
|
|
`[region+0x276]`, region vtable `+0x80` byte-`0x32`, `[region+0x3d5]`,
|
|
|
|
|
|
`[region+0x310/+0x338/+0x360]`, `[region+0x2a4]`;
|
|
|
|
|
|
peer subset
|
|
|
|
|
|
center-cell token gate, `[site+0x04]`, `[site+0x2a8]`, `[peer+0x08]`, linked-region status;
|
|
|
|
|
|
company subset
|
|
|
|
|
|
stat-family reader `0x2329/0x0d`, chairman byte `[profile+0x291]`, company byte `[company+0x5b]`
|
|
|
|
|
|
plus indexed lane `[company+0x67 + 12*0x0042a0e0()]`, and the company-root argument passed into
|
|
|
|
|
|
`0x0040d540 / 0x00455f60`
|
2026-04-18 19:13:34 -07:00
|
|
|
|
- use the new shellless-readiness split in the same trace:
|
|
|
|
|
|
runtime-backed families
|
|
|
|
|
|
peer-site restore subset plus bring-up reconstruction, company stat-family `0x2329/0x0d`,
|
|
|
|
|
|
chairman byte `[profile+0x291]`, and save-native company/chairman identity;
|
|
|
|
|
|
remaining owner gaps
|
|
|
|
|
|
`[region+0x276]`, `[region+0x2a4]`, `[region+0x310/+0x338/+0x360]`, and the stable region
|
|
|
|
|
|
class/type discriminator consumed through `0x0040d360`
|
2026-04-18 19:17:22 -07:00
|
|
|
|
- use the new per-lane region status split in the same trace:
|
|
|
|
|
|
`[region+0x276]` already has a grounded runtime producer at `0x00422100` and is now only an
|
|
|
|
|
|
ordinary-save restore gap;
|
|
|
|
|
|
`[region+0x2a4]` currently has no region-class runtime writer in the binary scan and now looks
|
|
|
|
|
|
payload/restore-owned;
|
2026-04-18 19:18:38 -07:00
|
|
|
|
`[region+0x310/+0x338/+0x360]` has an exact raw delta reader at `0x0040cac0` and likewise no
|
|
|
|
|
|
direct region-class runtime writer in the current binary scan, so it now also looks
|
|
|
|
|
|
payload/restore-owned;
|
2026-04-18 19:17:22 -07:00
|
|
|
|
`0x0040d360` is now exact as `[owner_vtable+0x80+0x32] == 4`, so the remaining gap there is
|
|
|
|
|
|
only the save-native projection of that byte
|
2026-04-18 19:06:10 -07:00
|
|
|
|
- make the next periodic-company slice about the smaller shellless-simulation question instead:
|
2026-04-18 19:18:38 -07:00
|
|
|
|
which later save payload or restore owner rehydrates the remaining region-side `0x004014b0`
|
|
|
|
|
|
inputs `[region+0x2a4]` and `[region+0x310/+0x338/+0x360]` once the peer/company inputs are
|
|
|
|
|
|
treated as grounded and `[region+0x276]` is treated as a producer-known ordinary-save restore
|
|
|
|
|
|
gap
|
2026-04-18 12:53:44 -07:00
|
|
|
|
- Use the higher-layer probes as the standard entry point for the current blocked frontier instead
|
|
|
|
|
|
of generic save scans:
|
|
|
|
|
|
`runtime inspect-periodic-company-service-trace <save.gms>`,
|
|
|
|
|
|
`runtime inspect-region-service-trace <save.gms>`, and
|
|
|
|
|
|
`runtime inspect-infrastructure-asset-trace <save.gms>`.
|
2026-04-18 12:38:05 -07:00
|
|
|
|
- Follow the new higher-layer probe outputs instead of another blind save scan:
|
|
|
|
|
|
`runtime inspect-infrastructure-asset-trace <save.gms>` now shows that the `0x38a5`
|
|
|
|
|
|
infrastructure-asset seam is grounded and the old alias hypothesis is disproved on `q.gms`, so
|
|
|
|
|
|
the next placed-structure slice should target the consumer mapping above that seam rather than
|
2026-04-18 12:40:06 -07:00
|
|
|
|
more collection discovery; the same trace now also carries atlas-backed candidate consumers
|
|
|
|
|
|
(`0x0048a1e0`, `0x0048dd50`, `0x00490a3c`, `0x004559d0`, `0x00455870`, `0x00455930`,
|
|
|
|
|
|
`0x00448a70/0x00493660/0x0048b660`, `0x004133b0`) plus bridge/tunnel/track-cap name-family
|
|
|
|
|
|
counts, so the next pass can start at those concrete owners instead of the whole
|
|
|
|
|
|
placed-structure family.
|
2026-04-18 12:53:44 -07:00
|
|
|
|
- Rehost or bound the next concrete `Infrastructure` consumer above `0x38a5` instead of treating
|
|
|
|
|
|
“consumer mapping missing” as a stop: start with the checked-in candidate strip
|
|
|
|
|
|
`0x0048a1e0`, `0x0048dd50`, `0x00490a3c`, `0x004559d0`, `0x00455870`, `0x00455930`,
|
|
|
|
|
|
`0x00448a70/0x00493660/0x0048b660`, `0x004133b0`, and narrow that list to the first true
|
|
|
|
|
|
shellless owner that consumes the side-buffer seam. The infrastructure trace now ranks the
|
|
|
|
|
|
current best hypothesis as the child attach/rebuild strip
|
|
|
|
|
|
(`0x0048a1e0`, `0x0048dd50`, `0x00490a3c`), with the serializer/load companions next and the
|
|
|
|
|
|
route/local-runtime follow-on family explicitly secondary.
|
2026-04-18 12:56:43 -07:00
|
|
|
|
- For that top-ranked infrastructure strip, treat the next pass as three exact owner questions
|
|
|
|
|
|
rather than a general “map the consumer” task: whether the `0x38a5` compact-prefix/name-pair
|
|
|
|
|
|
groups feed the first-child triplet clone lane, the caller-supplied payload-stem lane, or only a
|
2026-04-18 17:34:44 -07:00
|
|
|
|
later route/local-runtime refresh lane; which child fields or grouped rows absorb the
|
|
|
|
|
|
side-buffer payload before `0x00448a70/0x00493660/0x0048b660` become relevant; and, now that the
|
|
|
|
|
|
direct route-entry bridge helpers over `[this+0x206/+0x20a/+0x20e]` are grounded, which later
|
|
|
|
|
|
route/local-runtime owner still carries the remaining mixed exact classes once cached
|
|
|
|
|
|
primary-child slot `[this+0x248]` is demoted to child-list cache/cleanup state.
|
2026-04-18 13:04:00 -07:00
|
|
|
|
- Targeted disassembly now tightens that strip further: `0x0048a1e0` clones the first child through
|
|
|
|
|
|
`0x0052e880/0x0052e720`, destroys the prior child, seeds a literal `Infrastructure` child
|
|
|
|
|
|
through `0x00455b70` with payload seed `0x005c87a8`, and republishes the two sampled bands
|
|
|
|
|
|
through `0x0052e8b0/0x00530720` after attaching through `0x005395d0`; the non-clone branch
|
|
|
|
|
|
attaches through `0x0053a5d0`. So the next unknown is no longer whether this strip owns the
|
|
|
|
|
|
child/rebuild seam, but which `0x38a5` compact-prefix groups drive the clone-vs-payload choice.
|
2026-04-18 13:25:14 -07:00
|
|
|
|
- The outer rebuild owner is tighter now too: `0x0048dcf0` reads a child count plus optional
|
|
|
|
|
|
primary-child ordinal from the tagged stream through `0x00531150`, zeroes `[this+0x08]`,
|
|
|
|
|
|
dispatches each fresh child through `0x00455a50 -> vtable slot +0x40`, culls ordinals above `5`,
|
|
|
|
|
|
and restores cached primary-child slot `[this+0x248]` from the saved ordinal. That means the
|
|
|
|
|
|
child/rebuild loop is consuming an already-materialized child stream rather than parsing the
|
|
|
|
|
|
`0x38a5` compact-prefix seam directly.
|
2026-04-18 13:28:15 -07:00
|
|
|
|
- The upstream handoff is grounded now too: `0x00493be0` is the tagged collection load owner over
|
|
|
|
|
|
`0x38a5/0x38a6/0x38a7`, and it feeds each live infrastructure record straight into
|
|
|
|
|
|
`0x0048dcf0` after restoring one shared owner-local dword into the `0x90/0x94` lane. So the
|
|
|
|
|
|
remaining infrastructure question is no longer whether `0x38a5` reaches the child-stream restore
|
2026-04-18 13:41:21 -07:00
|
|
|
|
path at all. Direct disassembly now also shows `0x00518140` resolving a non-direct live entry by
|
|
|
|
|
|
tombstone bitset and then returning the first dword of a `12`-byte row from `[collection+0x3c]`,
|
2026-04-18 13:43:04 -07:00
|
|
|
|
while `0x00518680` loads that non-direct table family before `0x00493be0` starts iterating, and
|
|
|
|
|
|
`0x00493be0` itself now reads as an ordinal-to-live-id-to-payload-pointer walk through
|
|
|
|
|
|
`0x00518380(ordinal, 0)` then `0x00518140(live_id)`. So the next infrastructure question is no
|
2026-04-18 13:44:59 -07:00
|
|
|
|
longer “which row owns the payload pointer?”. Direct disassembly of `0x005181f0/0x00518260` now
|
|
|
|
|
|
also treats those `12`-byte rows as a live-entry directory with
|
|
|
|
|
|
`(payload pointer, previous live id, next live id)`, so the next infrastructure question is only
|
2026-04-18 13:43:04 -07:00
|
|
|
|
how those payload streams align with the embedded `0x55f1` name-pair groups and compact-prefix
|
2026-04-18 13:44:59 -07:00
|
|
|
|
regimes, and which tagged values inside each payload stream become the child count, optional
|
2026-04-18 13:50:07 -07:00
|
|
|
|
primary-child ordinal, and per-child callback sequence that `0x0048dcf0` consumes. Direct
|
|
|
|
|
|
disassembly now also shows the shared child payload callback `0x00455fc0` opening
|
|
|
|
|
|
`0x55f1 -> 0x55f2 -> 0x55f3`, parsing three `0x55f1` strings through `0x00531380`, seeding the
|
|
|
|
|
|
child through `0x00455b70`, and then dispatching slot `+0x48`; the widened save-side probe
|
2026-04-18 13:52:18 -07:00
|
|
|
|
currently sees `0` third `0x55f1` strings on grounded `q.gms`. That now looks less like a probe
|
|
|
|
|
|
failure and more like an ordinary fallback path, because direct disassembly of `0x00455b70`
|
|
|
|
|
|
stores the three payload strings into `[this+0x206/+0x20a/+0x20e]`, defaulting the second lane
|
|
|
|
|
|
through a fixed literal when absent and defaulting the third lane back to the first string when
|
|
|
|
|
|
absent. So the next pass should stay focused on payload-stream grouping and tagged value roles,
|
|
|
|
|
|
not on rediscovering a missing third-string encoding.
|
2026-04-18 15:25:21 -07:00
|
|
|
|
- The child loader identity is tighter now too: local `.rdata` at `0x005cfd00` proves the
|
2026-04-18 13:28:15 -07:00
|
|
|
|
`Infrastructure` child vtable uses the shared tagged callback strip directly, with
|
2026-04-18 15:25:21 -07:00
|
|
|
|
`+0x40 = 0x00455fc0`, `+0x44 = 0x004559d0`, `+0x48 = 0x00455870`, and `+0x4c = 0x00455930`.
|
|
|
|
|
|
Direct disassembly of `0x004559d0` then shows the concrete write-side chain for the child
|
|
|
|
|
|
payload: write `0x55f1`, serialize string lanes `[this+0x206/+0x20a/+0x20e]`, write `0x55f2`,
|
|
|
|
|
|
dispatch slot `+0x4c`, run `0x0052ec50`, and close `0x55f3`. So the remaining infrastructure
|
|
|
|
|
|
frontier is no longer “which slot does `0x00455a40` jump to?”; it is which chooser/seed values
|
|
|
|
|
|
reach those string lanes and the trailing footer path.
|
2026-04-18 15:29:56 -07:00
|
|
|
|
- That source side is narrower now too: direct disassembly shows the paired chooser siblings
|
|
|
|
|
|
calling `0x00490960` directly beside `0x0048a340/0x0048f4c0/0x00490200`, and `0x00490960`
|
|
|
|
|
|
copies selector fields into the child object (`[this+0x219]`, `[this+0x251]`, bit `0x20` in
|
|
|
|
|
|
`[this+0x24c]`, and `[this+0x226]`), allocates a fresh `0x23a` `Infrastructure` child, seeds it
|
|
|
|
|
|
through `0x00455b70` with caller-supplied stem input plus fixed literal `Infrastructure` at
|
|
|
|
|
|
`0x005cfd74`, attaches it through `0x005395d0`, seeds position lanes through
|
|
|
|
|
|
`0x00539530/0x0053a5b0`, and can cache it as primary child in `[this+0x248]`. The remaining
|
|
|
|
|
|
problem is no longer “where do the child payload lanes come from?” but “which chooser branches
|
|
|
|
|
|
feed `0x00490960` which caller stem and selector tuple for each grounded save-side class?”.
|
2026-04-18 15:36:06 -07:00
|
|
|
|
- One direct branch is grounded now too: the repeated chooser calls at
|
|
|
|
|
|
`0x004a2eba/0x004a30f9/0x004a339c` all feed `0x00490960` with mode arg `0x0a` and stem arg
|
|
|
|
|
|
`0x005cb138 = BallastCapDT_Cap.3dp`, which means they bypass the selector-copy block at
|
|
|
|
|
|
`0x004909e2` and go straight into fresh child allocation/seeding. So the remaining source-side
|
|
|
|
|
|
mapping problem is no longer generic BallastCap coverage; it is the other constructor branches,
|
|
|
|
|
|
especially the ones with mode `< 4` that actually populate the selector-byte copy block.
|
|
|
|
|
|
- The broader mode family is grounded now too. A wider static callsite sweep shows:
|
|
|
|
|
|
- mode `0x0b` with fixed `TrackCapDT_Cap.3dp` / `TrackCapST_Cap.3dp`
|
|
|
|
|
|
- mode `0x03` with `OverpassST_section.3dp`
|
|
|
|
|
|
- mode `0x02` with decoded tunnel table stems plus zero-stem fallbacks
|
|
|
|
|
|
- mode `0x01` with decoded bridge table stems plus zero-stem fallbacks
|
|
|
|
|
|
|
2026-04-18 15:43:07 -07:00
|
|
|
|
The current grounded `q.gms` name corpus now also maps directly onto most of those families:
|
|
|
|
|
|
`BridgeSTWood_Section.3dp -> mode 0x01`, `TunnelSTBrick_* -> mode 0x02`,
|
|
|
|
|
|
`BallastCapST_Cap.3dp -> mode 0x0a`, and `TrackCapST_Cap.3dp -> mode 0x0b`, with only
|
|
|
|
|
|
`Overpass` still static-only in the current save corpus.
|
|
|
|
|
|
|
|
|
|
|
|
So the remaining infrastructure question is no longer “what does `0x00490960` build?” or even
|
|
|
|
|
|
“which family is this name row?” but “how do the surviving compact-prefix regimes subdivide
|
|
|
|
|
|
those already-mapped families, especially inside bridge mode `0x01` and track-cap mode `0x0b`?”.
|
2026-04-18 17:34:44 -07:00
|
|
|
|
- The direct route-side bridge is grounded now too: `0x0048e140/0x0048e160/0x0048e180` simply
|
|
|
|
|
|
resolve `[this+0x206/+0x20a/+0x20e]` through live route collection `0x006cfca8`, and
|
|
|
|
|
|
`0x0048e1a0` compares those resolved peers against `[this+0x202]`. The neighboring
|
|
|
|
|
|
`0x0048ed30` path is now also narrower: it only tears down child list `[this+0x08]`, clearing
|
|
|
|
|
|
cached primary-child slot `[this+0x248]` when needed, so `[this+0x248]` is no longer the first
|
|
|
|
|
|
route bridge to chase.
|
|
|
|
|
|
- The later route/local-runtime follow-on family is tighter now too: `0x00448a70` is a
|
|
|
|
|
|
world-overlay helper over `[world+0x15e1/+0x162d]`, `0x00493660` is a counter-plus-companion-
|
|
|
|
|
|
region follow-on keyed by `[child+0x218]`, `[child+0x226]`, `[child+0x44]`, and `0x0048dcb0`,
|
|
|
|
|
|
`0x0048b660` is a presentation-color/style owner over `[child+0x216/+0x218/+0x226/+0x44]` and
|
|
|
|
|
|
bit `0x40` in `[child+0x201]`, and `0x0048e2c0/0x0048e330/0x0048e3c0` now read as flag / route-
|
|
|
|
|
|
tracker / region-test helpers rather than hidden payload decoders. So the next infrastructure
|
|
|
|
|
|
slice should stay focused on the remaining mixed exact compact-prefix classes and earlier
|
|
|
|
|
|
child-stream semantics, not on rediscovering the already-bounded presentation owners.
|
2026-04-18 15:43:07 -07:00
|
|
|
|
- The new probe correlation now makes that residual even more concrete: on grounded `q.gms`, the
|
|
|
|
|
|
dominant mixed `0x0001/0xff` class splits as `bridge:62 / track_cap:21 / tunnel:19`, while the
|
|
|
|
|
|
pure `0x0002/0xff` class is all bridge and the pure `0x0055/0x00` class is all ballast-cap.
|
|
|
|
|
|
So the next infrastructure slice should focus on subdividing the mixed one-child `0x0001/0xff`
|
|
|
|
|
|
class rather than revisiting the already-grounded pure classes.
|
2026-04-18 15:29:56 -07:00
|
|
|
|
- The sibling `0x00490200` is tighter now too: it reads the seeded lanes
|
|
|
|
|
|
`[this+0x206/+0x20a/+0x20e]` back through the live route collection at `0x006cfca8`, compares
|
|
|
|
|
|
them against the current owner using `[this+0x216/+0x218/+0x201/+0x202]`, and behaves like a
|
|
|
|
|
|
route/link comparator layered above the same child payload lanes that `0x004559d0` later
|
|
|
|
|
|
serializes. So the next infrastructure pass should treat `0x00490960` as the source owner and
|
|
|
|
|
|
`0x00490200` as a consumer of the same seeded lanes, not as separate unexplained seams.
|
2026-04-18 13:25:14 -07:00
|
|
|
|
- The smaller helper `0x00490a3c` is narrower now too: it allocates one literal `Infrastructure`
|
|
|
|
|
|
child, seeds it through `0x00455b70` with caller-provided stem input, attaches it through
|
|
|
|
|
|
`0x005395d0`, seeds position lanes through `0x00539530/0x0053a5b0`, and optionally caches it as
|
|
|
|
|
|
the primary child. So the next concrete infrastructure question is which upstream owner
|
2026-04-18 13:28:15 -07:00
|
|
|
|
maps the direct `0x38a5` rows into the child count, primary-child ordinal, and per-child payload
|
|
|
|
|
|
callbacks consumed by `0x0048dcf0`, and which restored child fields still retain those embedded
|
|
|
|
|
|
name-pair semantics before route/local-runtime follow-ons take over.
|
2026-04-18 14:04:25 -07:00
|
|
|
|
- The save-side `0x38a5` probe is now tighter at the payload-envelope level too: grounded
|
|
|
|
|
|
`q.gms` shows all `138` embedded `0x55f1` rows already live inside complete
|
|
|
|
|
|
`0x55f1 -> 0x55f2 -> 0x55f3` envelopes before the next name row, every embedded `0x55f2` chunk
|
|
|
|
|
|
is the fixed `0x1a` bytes that `0x00455fc0` expects, and the dominant embedded `0x55f3`
|
|
|
|
|
|
payload-to-next-name span is the short `0x06`-byte form across `72` rows. So the next
|
|
|
|
|
|
infrastructure pass should stop asking whether the shared tagged callback sequence is present at
|
|
|
|
|
|
all and instead decode the short `0x55f3` payload role and its relation to the compact-prefix
|
|
|
|
|
|
regimes and primary-child restore path.
|
2026-04-18 14:11:14 -07:00
|
|
|
|
- That short trailing lane is tighter now too: direct disassembly of `0x0052ebd0/0x0052ec50`
|
|
|
|
|
|
shows the post-`+0x48` helper pair loading and serializing two single-byte lanes that fold into
|
|
|
|
|
|
bits `0x20` and `0x40` of `[this+0x20]`, and the save-side probe now shows the dominant
|
|
|
|
|
|
`0x06`-byte rows all carrying the same grounded flag pair `0x00/0x00` on `q.gms`. So the next
|
|
|
|
|
|
concrete infrastructure question is no longer “is there a short trailing flag lane?”; it is how
|
|
|
|
|
|
the compact-prefix regimes and those flag-byte pairs feed the child-count / primary-child restore
|
|
|
|
|
|
state above `0x0048dcf0`.
|
2026-04-18 14:15:08 -07:00
|
|
|
|
- The fixed `0x55f2` lane is tighter now too: direct disassembly of `0x00455870/0x00455930` shows
|
|
|
|
|
|
the `+0x48/+0x4c` strip loading and serializing six `u32` lanes from the fixed `0x1a` chunk,
|
|
|
|
|
|
forwarding them through `0x00530720` and `0x0052e8b0`. Grounded `q.gms` probes now show every
|
|
|
|
|
|
embedded `0x55f2` row using the same trailing word `0x0101` while those six dword lanes vary by
|
|
|
|
|
|
asset row. So the next infrastructure question is no longer whether `0x55f2` is a fixed-format
|
|
|
|
|
|
child lane; it is which of those two dword triplets correspond to child-count / primary-child
|
|
|
|
|
|
restore state and which only seed published anchor or position bands.
|
2026-04-18 14:17:47 -07:00
|
|
|
|
- That split is tighter now too: direct disassembly of `0x00530720/0x0052e8b0` shows the first
|
|
|
|
|
|
fixed `0x55f2` triplet landing in `[this+0x1e2/+0x1e6/+0x1ea]` and the second in
|
|
|
|
|
|
`[this+0x4b/+0x4f/+0x53]`, with the companion setter also forcing bit `0x02`. So the next
|
|
|
|
|
|
infrastructure question is no longer whether the fixed `0x55f2` row hides the child count or
|
|
|
|
|
|
primary-child ordinal at all; those outer-header values now have to live outside the fixed row,
|
|
|
|
|
|
most likely in the surrounding payload-stream header or compact-prefix regime above
|
|
|
|
|
|
`0x0048dcf0`.
|
2026-04-18 14:35:10 -07:00
|
|
|
|
- The outer prelude itself is tighter now too: direct disassembly of `0x0048dcf0` shows it reading
|
|
|
|
|
|
one `u16` child count through `0x00531150`, zeroing `[this+0x08]`, and conditionally reading one
|
|
|
|
|
|
saved primary-child byte before the per-child callback loop runs. Grounded `q.gms` bytes now also
|
|
|
|
|
|
show the first `0x38a6` record starting immediately after the shared owner-local dword with
|
|
|
|
|
|
`child_count = 1`, `saved_primary_child_byte = 0xff`, and the first child `0x55f1` opening at
|
|
|
|
|
|
offset `+0x3`. So the next infrastructure question is no longer “what kind of values are we
|
|
|
|
|
|
looking for above the fixed rows?”; it is the narrower partitioning problem of how the observed
|
|
|
|
|
|
`0x55f3`-to-next-`0x55f1` gaps divide between the two `0x52ebd0` flag bytes and the next
|
|
|
|
|
|
record’s `u16 + byte` prelude.
|
2026-04-18 14:42:01 -07:00
|
|
|
|
- The widened prelude correlation closes part of that partitioning too: grounded `q.gms` rows with
|
|
|
|
|
|
a `0x03` post-profile gap now collapse cleanly to the next-record prelude pattern
|
|
|
|
|
|
`0x0001 / 0xff` across `17/17` rows, while the zero-length class is a separate grounded outlier
|
|
|
|
|
|
with dominant pattern `0x0055 / 0x00` across `18/18` rows and the `0x06` class remains the only
|
|
|
|
|
|
large mixed frontier. So the next infrastructure slice should focus on classifying the mixed
|
|
|
|
|
|
`0x06` rows, not on rediscovering the already-grounded pure-prelude `0x03` rows.
|
2026-04-18 14:48:00 -07:00
|
|
|
|
- That `0x06` class is now narrower too: grounded `q.gms` shows the dominant short-span class as
|
|
|
|
|
|
`BridgeSTWood_Section.3dp / Infrastructure` with compact prefix `0xff000000 / 0x0001 / 0xff`
|
|
|
|
|
|
across `62/72` rows and dominant prelude candidate `0x0001 / 0xff` across `63/72` rows. So the
|
|
|
|
|
|
next infrastructure slice should stop treating the `0x06` class as uniformly ambiguous and focus
|
|
|
|
|
|
on the smaller outlier families inside that class, especially the zero-like `BallastCap`-style
|
|
|
|
|
|
rows and any remaining non-`0x0001 / 0xff` prelude candidates.
|
2026-04-18 16:05:22 -07:00
|
|
|
|
- The exact compact-prefix classes are explicit across the whole prelude now too:
|
|
|
|
|
|
`0xff0000ff / 0x0002 / 0xff` is a pure bridge class, `0xff000000 / {0x0001,0x0002} / 0xff`
|
|
|
|
|
|
are pure bridge classes, `0xf3010100 / 0x0055 / 0x00` is a pure `BallastCap` class, and
|
|
|
|
|
|
`0x0005d368 / 0x0001 / 0xff` is a pure one-row `TrackCap` class.
|
|
|
|
|
|
- That sharpens the remaining infrastructure unknowns considerably: the only mixed exact
|
|
|
|
|
|
compact-prefix classes left on grounded `q.gms` are `0x000055f3 / 0x0001 / 0xff` and
|
|
|
|
|
|
`0xff0000ff / 0x0001 / 0xff`.
|
|
|
|
|
|
- The current `0x000055f3 / 0x0001 / 0xff` class is tunnel-dominant:
|
|
|
|
|
|
`TunnelSTBrick_Section.3dp / Infrastructure:13`, `TunnelSTBrick_Cap.3dp / Infrastructure:4`,
|
|
|
|
|
|
`TrackCapST_Cap.3dp / Infrastructure:0` in the exact-prefix correlation, with all `17` rows
|
|
|
|
|
|
staying on prior profile span `0x03`.
|
|
|
|
|
|
- The current `0xff0000ff / 0x0001 / 0xff` class is `TrackCap`-dominant but still carries `4`
|
|
|
|
|
|
tunnel rows:
|
|
|
|
|
|
`TrackCapST_Cap.3dp / Infrastructure:18`,
|
|
|
|
|
|
`TunnelSTBrick_Cap.3dp / Infrastructure:2`,
|
|
|
|
|
|
`TunnelSTBrick_Section.3dp / Infrastructure:2`.
|
|
|
|
|
|
Its rows are spread across many spans rather than one dominant restore span.
|
2026-04-18 17:54:26 -07:00
|
|
|
|
- Cross-save `q.gms` / `p.gms` traces sharpen that split further without changing it:
|
|
|
|
|
|
`0x000055f3 / 0x0001 / 0xff` stays on prelude `0x0001 / 0xff`, fixed short-flag pair
|
|
|
|
|
|
`0x01 / 0x00`, and fixed prior profile span `0x03` in both saves, while
|
|
|
|
|
|
`0xff0000ff / 0x0001 / 0xff` stays on prelude `0x0001 / 0xff`, fixed short-flag pair
|
|
|
|
|
|
`0x00 / 0x00`, and widely scattered prior profile spans in both saves.
|
2026-04-18 17:57:20 -07:00
|
|
|
|
- Direct consumers of those footer bits are grounded now too: `0x00528d90` only admits the child
|
|
|
|
|
|
when the explicit caller override is set, the surrounding global override byte
|
|
|
|
|
|
`[owner+0x3692]` is set, or bit `0x20` in `[child+0x20]` is set; the sibling loop
|
|
|
|
|
|
`0x00529730` only takes the later `0x530280` follow-on when bit `0x40` in `[child+0x20]` is
|
|
|
|
|
|
set.
|
2026-04-18 17:59:30 -07:00
|
|
|
|
- That footer-bit consumer strip is tied to a broader higher-layer owner family now too:
|
|
|
|
|
|
`0x005295f0..0x005297b7` repopulates candidate cells through `0x00533ba0`, walks candidate
|
|
|
|
|
|
child lists through `0x00556ef0/0x00556f00`, and honors the same controller mode byte
|
|
|
|
|
|
`[owner+0x3692]` that the atlas already places under the world-window presentation dispatcher.
|
2026-04-18 18:00:56 -07:00
|
|
|
|
- The neighboring helpers tighten that owner family further: atlas-backed `0x00533ba0` is the
|
|
|
|
|
|
nearby-presentation cell-table helper under the layout/presenter strip, direct disassembly shows
|
|
|
|
|
|
`0x00548da0` walking layout list root `[layout+0x2593]`, and direct disassembly of `0x0054bab0`
|
|
|
|
|
|
mutates layout slots `[layout+0x2637/+0x263b/+0x2643]`.
|
2026-04-18 17:57:20 -07:00
|
|
|
|
- That means the remaining infrastructure question is no longer both footer bytes. It is
|
|
|
|
|
|
specifically why the stable `0x000055f3 / 0x0001 / 0xff` tunnel family sets the first footer
|
|
|
|
|
|
byte / bit-`0x20` admission gate while the sparse `0xff0000ff / 0x0001 / 0xff` outlier class
|
2026-04-18 18:00:56 -07:00
|
|
|
|
clears it, inside that layout/presentation owner family rather than at the serializer layer.
|
2026-04-18 16:34:58 -07:00
|
|
|
|
- Source-side constructor analysis is narrower now too. `0x00490960` takes:
|
|
|
|
|
|
- mode at stack arg 1
|
|
|
|
|
|
- stem at stack arg 2
|
|
|
|
|
|
- args 3/4 into `0x539530`
|
|
|
|
|
|
- arg 5 into `0x53a5b0`
|
|
|
|
|
|
- arg 10 as the primary-child cache gate for `[this+0x248]`
|
|
|
|
|
|
- args 7/8/9 into the selector-copy block for `[this+0x219]`, `[this+0x251]`, and bit `0x20`
|
|
|
|
|
|
in `[this+0x24c]` when `mode < 4`
|
|
|
|
|
|
- That already separates the remaining mixed classes:
|
|
|
|
|
|
- fixed `TrackCap` mode `0x0b` callers at `0x0048ed01/0x0048ed20` push arg7/arg8/arg9 as
|
|
|
|
|
|
`-1 / -1 / 0` and bypass selector-copy entirely because `mode >= 4`
|
|
|
|
|
|
- tunnel mode `0x02` callers at
|
|
|
|
|
|
`0x004a17eb / 0x004a1995 / 0x004a1b44 / 0x004a1b7d / 0x004a1b95`
|
|
|
|
|
|
necessarily flow through selector-copy because `mode < 4`, with arg8 fixed at `1`, arg9
|
|
|
|
|
|
fixed at `0`, and only arg7 varying through a branch-local one-bit register
|
2026-04-18 16:05:22 -07:00
|
|
|
|
- So the next infrastructure slice should stop treating the remaining frontier as a generic
|
|
|
|
|
|
“mixed 0x06/outlier” problem and instead target the owning constructor/restore semantics for
|
2026-04-18 16:34:58 -07:00
|
|
|
|
those two exact mixed compact-prefix classes, especially how tunnel arg7 and the fixed
|
|
|
|
|
|
`TrackCap` no-selector bundle both still collapse into the observed mixed save-side prefixes.
|
2026-04-18 14:51:27 -07:00
|
|
|
|
- The candidate-pattern classes are now explicit across the whole stream too: `0x0055 / 0x00`
|
|
|
|
|
|
is a pure `BallastCapST_Cap.3dp / Infrastructure` class across `18` rows, always preceded by a
|
|
|
|
|
|
zero-length prior profile span, while `0x0002 / 0xff` is a pure
|
|
|
|
|
|
`BridgeSTWood_Section.3dp / Infrastructure` class across `18` rows with dominant prior profile
|
|
|
|
|
|
span `0x06` (`10` rows). So the next infrastructure pass should split its owner questions:
|
|
|
|
|
|
treat `0x0055 / 0x00` as a `BallastCap`-specific boundary artifact class, and treat
|
2026-04-18 14:58:01 -07:00
|
|
|
|
`0x0002 / 0xff` as the grounded save-side bridge-specific two-child candidate class above
|
|
|
|
|
|
`0x0048a1e0/0x0048dcf0`, with the remaining unknown narrowed to the upstream chooser that emits
|
|
|
|
|
|
that class before the attach/rebuild path runs.
|
2026-04-18 15:09:08 -07:00
|
|
|
|
- That upstream chooser is grounded now too as paired siblings: direct disassembly shows
|
|
|
|
|
|
`0x004a2c80` routing the `DT` family and `0x004a34e0` routing the `ST` family, with both
|
|
|
|
|
|
repeatedly calling `0x0048a1e0`, branching on `[this+0x226]`, selector bytes
|
|
|
|
|
|
`[this+0x219]/[this+0x251]`, bit `0x20` in `[this+0x24c]`, and lookup tables `0x621a44..0x621a9c`,
|
|
|
|
|
|
then routing follow-on through `0x0048a340/0x0048f4c0/0x00490200/0x00490960`. So the remaining
|
|
|
|
|
|
infrastructure question is no longer “is there an upstream chooser?” but “how do the save-side
|
|
|
|
|
|
classes select the `DT` versus `ST` chooser sibling, and then which lookup-table families inside
|
|
|
|
|
|
that sibling map to the grounded `0x0002 / 0xff` bridge class and the `0x0055 / 0x00`
|
|
|
|
|
|
BallastCap class?”.
|
|
|
|
|
|
- Those lookup tables are decoded now too: `0x621a44/0x621a54` feed `BridgeST` caps/sections,
|
|
|
|
|
|
`0x621a64` feeds `TunnelST` cap/section variants, `0x621a74/0x621a84` feed `BridgeDT`
|
|
|
|
|
|
caps/sections, and `0x621a94` feeds `TunnelDT` variants, while fixed literals
|
|
|
|
|
|
`0x5cb138/0x5cb150` are `BallastCapDT/ST` and `0x5cb168/0x5cb180` are `OverpassDT/ST`. So the
|
|
|
|
|
|
remaining infrastructure question is no longer table discovery; it is the selector-byte mapping
|
|
|
|
|
|
from `[this+0x219]/[this+0x251]/[this+0x252]` onto those decoded families and then onto the
|
|
|
|
|
|
grounded `0x38a5` prefix classes.
|
2026-04-18 15:13:24 -07:00
|
|
|
|
- The top-level chooser meaning is grounded now too: within those paired DT/ST siblings,
|
|
|
|
|
|
`[this+0x226]==1` routes the bridge families, `[this+0x226]==2` routes the tunnel families, and
|
|
|
|
|
|
`[this+0x226]==3` routes the overpass/ballast family, while bit `0x20` in `[this+0x24c]`
|
|
|
|
|
|
selects the cap-oriented side over the section-oriented side. So the remaining infrastructure
|
|
|
|
|
|
selector problem is below that top-level split: the exact `[this+0x219]/[this+0x251]` values
|
|
|
|
|
|
that choose the decoded family entries and how those values surface in the save-side `0x38a5`
|
|
|
|
|
|
classes.
|
2026-04-18 15:15:52 -07:00
|
|
|
|
- Those material selectors are grounded now too: within the bridge branch, `[this+0x219]`
|
|
|
|
|
|
selects `steel`, `stone`, `suspension`, or `wood`, with value `2` taking the special
|
|
|
|
|
|
suspension-cap path through `[this+0x252]`; within the tunnel branch, `[this+0x251]` selects
|
|
|
|
|
|
`brick` versus `concrete`, while bit `0x20` chooses cap versus section by switching between the
|
|
|
|
|
|
base and `+0x8` table entry families. So the remaining infrastructure selector problem is no
|
|
|
|
|
|
longer “what do these bytes mean?” but “how do those already-grounded selector values surface in
|
|
|
|
|
|
the save-side `0x38a5` classes, especially the `0x0002 / 0xff` bridge class and the
|
|
|
|
|
|
`0x0055 / 0x00` BallastCap class?”.
|
2026-04-18 15:25:21 -07:00
|
|
|
|
- The exact setter seam is grounded now too: direct disassembly of `0x0048a340` shows its dword
|
|
|
|
|
|
argument writing `[this+0x226]`, its next two byte arguments writing `[this+0x219]` and
|
|
|
|
|
|
`[this+0x251]`, and its final byte argument toggling bit `0x20` in `[this+0x24c]`. So the
|
|
|
|
|
|
remaining infrastructure selector problem is no longer about hidden intermediate state; it is
|
|
|
|
|
|
specifically how those already-grounded setter values are serialized or rebuilt into the
|
|
|
|
|
|
save-side `0x38a5` prefix classes.
|
2026-04-18 15:09:08 -07:00
|
|
|
|
- One selector byte is partly grounded now too: when `[this+0x219]==2`, the chooser jump tables
|
|
|
|
|
|
stop using the general bridge families and instead route `[this+0x252]` through fixed
|
|
|
|
|
|
`BridgeDT/BridgeST` suspension-cap literals for `R10`, `L10`, `12`, `14`, `16`, and `18`.
|
|
|
|
|
|
So the remaining infrastructure selector problem is mostly `[this+0x219]/[this+0x251]` family
|
|
|
|
|
|
choice plus the exact save-side class mapping for the BallastCap branch.
|
2026-04-18 15:13:24 -07:00
|
|
|
|
- The current real-save corpus also narrows the active side further: grounded `q.gms`, `p.gms`,
|
|
|
|
|
|
`g.gms`, and `nom.gms` only expose `ST`-family side-buffer names, while classic `rt3/` saves in
|
|
|
|
|
|
this workspace currently expose no `0x38a5` side-buffer seam at all. So the save-driven part of
|
|
|
|
|
|
the next infrastructure slice should assume it is exercising the `ST` chooser sibling directly,
|
|
|
|
|
|
with `DT` still grounded statically but not yet exercised by the current save corpus.
|
2026-04-18 08:26:58 -07:00
|
|
|
|
- Reconstruct the save-side region record body on top of the newly corrected non-direct tagged
|
2026-04-18 11:06:06 -07:00
|
|
|
|
region seam (`0x5209/0x520a/0x520b`, stride hint `0x06`, `Marker09` record stems) now that the
|
|
|
|
|
|
`0x55f3` payload is known to be fully consumed by the embedded profile collection on grounded
|
|
|
|
|
|
real saves: the remaining blocker is no longer a hidden trailing payload tail, but finding the
|
|
|
|
|
|
separate save-owner seam for the pending bonus lane `[region+0x276]`, completion latch
|
|
|
|
|
|
`[region+0x302]`, one-shot notice latch `[region+0x316]`, severity/source lane `[region+0x25e]`,
|
|
|
|
|
|
and any stable region-id or class discriminator that can drive shellless city-connection
|
2026-04-18 12:16:28 -07:00
|
|
|
|
service. The newly grounded queue-node probe for the atlas-backed kind-`7` notice records is a
|
|
|
|
|
|
negative result on `q.gms`, `p.gms`, and `Autosave.gms`, so the next region pass should not
|
2026-04-18 12:41:08 -07:00
|
|
|
|
assume that the transient `[world+0x66a6]` queue family is persisted in ordinary saves; the
|
|
|
|
|
|
region trace now also carries the concrete queued/service owners (`0x00422100`, `0x004337c0`,
|
|
|
|
|
|
`0x00437c00`, `0x004c7520`, `0x004358d0`, `0x00438710`, `0x00420030/0x00420280`,
|
|
|
|
|
|
`0x0047efe0`) so the next pass can focus on the missing saved latches and stable region id/class
|
|
|
|
|
|
rather than on rediscovering the outer service family.
|
2026-04-18 12:53:44 -07:00
|
|
|
|
- Rehost or bound the next concrete region owner above the missing latches instead of treating the
|
|
|
|
|
|
absent persisted queue as a stop: start with the checked-in owner strip `0x00422100`,
|
|
|
|
|
|
`0x004337c0`, `0x00437c00`, `0x004c7520`, `0x004358d0`, `0x00438710`,
|
|
|
|
|
|
`0x00420030/0x00420280`, `0x0047efe0`, and reduce it to the first true save-owned or rebuild
|
|
|
|
|
|
owner that can explain `[region+0x25e/+0x276/+0x302/+0x316]` plus a stable region id/class. The
|
|
|
|
|
|
region trace now ranks the current best hypothesis as the pending bonus service owner
|
|
|
|
|
|
(`0x004358d0`) plus the peer/linkage strip (`0x00420030/0x00420280`, `0x0047efe0`), with the
|
|
|
|
|
|
transient producer/queue family explicitly secondary and the queued kind-`7` modal dispatch kept
|
|
|
|
|
|
as shell-adjacent reference only.
|
2026-04-18 12:56:43 -07:00
|
|
|
|
- For that top-ranked region strip, treat the next pass as three exact owner questions too: which
|
2026-04-18 17:38:16 -07:00
|
|
|
|
restore seam re-seeds `[region+0x25e]` and clears `[region+0x302/+0x316]` before the grounded
|
|
|
|
|
|
`0x00422100 -> 0x004358d0` producer/consumer cycle runs again, which stable region id or class
|
|
|
|
|
|
discriminator survives save/load strongly enough to drive `0x004358d0`, and how far the grounded city-connection peer/linkage helpers
|
2026-04-18 12:56:43 -07:00
|
|
|
|
(`0x00420030/0x00420280`, `0x0047efe0`) can be reused directly before the transient queued-notice
|
|
|
|
|
|
family matters again.
|
2026-04-18 13:04:00 -07:00
|
|
|
|
- Targeted disassembly now tightens that strip too: `0x004358d0` calls `0x00420030` twice plus
|
|
|
|
|
|
`0x00420280`, then resolves the linked company through `0x0047efe0`, posts company stat slot `4`
|
|
|
|
|
|
on success, and stamps `[region+0x302]` or `[region+0x316]` while clearing `[region+0x276]`.
|
|
|
|
|
|
`0x00420030` itself now reads as the real peer gate over collection `0x006cec20`, combining
|
|
|
|
|
|
`0x0042b2d0`, the optional company filter through `0x0047efe0`, the station-or-transit gate
|
|
|
|
|
|
`0x0047fd50`, and the status branch `0x0047de00 -> 0x0040c990`; `0x00420280` is the same scan
|
|
|
|
|
|
returning the first matching site id. So the remaining unknown is the persisted latch/id seam,
|
|
|
|
|
|
not the live peer/service logic.
|
2026-04-18 17:38:16 -07:00
|
|
|
|
- The producer half is grounded now too: `0x00422100` filters for class-`0` regions with
|
|
|
|
|
|
`[region+0x276]==0` and `[region+0x302]==0`, rejects already-connected pairs through
|
|
|
|
|
|
`0x00420030(1,1,0,0)`, chooses one eligible candidate, buckets severity/source lane
|
|
|
|
|
|
`[region+0x25e]` against the three checked thresholds, writes the resulting amount to
|
|
|
|
|
|
`[region+0x276]`, and appends the kind-`7` queued notice through `0x004337c0`. That means the
|
|
|
|
|
|
remaining region gap is now explicitly the upstream restore seam for `[region+0x25e]` and the
|
|
|
|
|
|
completion/fallback latch clear, not either side of the producer/consumer service pair.
|
2026-04-18 17:40:41 -07:00
|
|
|
|
- The severity/source lane itself is narrower now too: `0x004cc930` is a selected-region editor
|
|
|
|
|
|
helper that writes `[region+0x25a]` and `[region+0x25e]` together from one integer input, while
|
|
|
|
|
|
`0x00438150` and `0x00442cc0` are fixed-region global reseed/clamp owners over collection
|
|
|
|
|
|
`0x0062bae0` that adjust the same mirrored pair for hardcoded region ids. So the remaining
|
|
|
|
|
|
region restore question is no longer “what does `[region+0x25e]` mean?” but “which load/reseed
|
|
|
|
|
|
seam restores the mirrored severity pair before the producer runs?”
|
2026-04-18 17:42:07 -07:00
|
|
|
|
- Two more direct-hit writer bands are now explicitly ruled out too: `0x0043a5a0` is a separate
|
|
|
|
|
|
constructor under vtable root `0x005ca078` that zeroes its own `[this+0x302/+0x316]` fields
|
|
|
|
|
|
during local object setup, and `0x0045c460/0x0045c8xx` is a separate vtable-`0x005cb5e8` helper
|
|
|
|
|
|
family whose `[this+0x316]` is a child-array pointer serialized through `0x61a9/0x61aa/0x61ab`.
|
|
|
|
|
|
So those offset-collision classes should stay out of the remaining region restore search.
|
2026-04-18 17:43:16 -07:00
|
|
|
|
- The direct writer census is tighter now too: the other apparent `0x302/0x316` writer bands
|
|
|
|
|
|
(`0x0043dd45`, `0x0043de19`, `0x0043e0a7`, `0x0043f5bc`) all hang off that same non-region
|
|
|
|
|
|
`0x005ca078` family through helpers `0x0043af60` and `0x0043b030`. So the only grounded
|
|
|
|
|
|
region-owned literal writes left are the constructor `0x00421200` plus the producer/consumer
|
|
|
|
|
|
pair `0x00422100` and `0x004358d0`, which means the remaining region seam should now be treated
|
|
|
|
|
|
as an indirect restore/rebuild path rather than another direct offset writer hunt.
|
2026-04-18 17:46:07 -07:00
|
|
|
|
- The later post-load per-region sweep is narrowed too: in the broader `0x00444887` restore strip,
|
|
|
|
|
|
the follow-on loop at `0x00444b90` dispatches `0x00420560` over each live region, but that
|
|
|
|
|
|
helper only zeroes and recomputes `[region+0x312]` from the embedded profile collection
|
|
|
|
|
|
`[region+0x37f]/[region+0x383]` and lazily seeds the year-driven `[region+0x317/+0x31b]` band
|
|
|
|
|
|
through `0x00420350`. It still does not touch `[region+0x276/+0x302/+0x316]`, so that whole
|
|
|
|
|
|
follow-on branch should stay out of the remaining latch-restore search too.
|
2026-04-18 13:06:23 -07:00
|
|
|
|
- The checked-in constructor owner `0x00421200`
|
|
|
|
|
|
`world_region_construct_entry_with_id_class_and_default_marker09_profile_seed` now also grounds
|
|
|
|
|
|
the initialization side of this family: it clears `[region+0x276]`, `[region+0x302]`,
|
|
|
|
|
|
`[region+0x316]`, and neighboring cached bands at construction time while seeding
|
|
|
|
|
|
`[region+0x25a/+0x25e] = 100.0f` and `[region+0x31b] = 1.0f`. That means the remaining queue item
|
|
|
|
|
|
is specifically post-construction restore or rebuild of the same latches, not their basic field
|
|
|
|
|
|
identity.
|
2026-04-18 13:09:52 -07:00
|
|
|
|
- The next restore-side target is explicit now too: the checked-in function map already grounds
|
|
|
|
|
|
`0x00421510` as the tagged region-collection load owner that dispatches each live region through
|
|
|
|
|
|
vtable slot `+0x40`, and `0x0041f5c0` as the per-record load slot that reloads the tagged payload
|
|
|
|
|
|
through `0x00455fc0` before rebuilding profile collection `[region+0x37f]`. So the next region
|
|
|
|
|
|
pass should ask whether `[region+0x276/+0x302/+0x316]` are restored directly inside that payload
|
|
|
|
|
|
load or rebuilt immediately after it, rather than treating “restore seam” as a generic unknown.
|
2026-04-18 13:18:10 -07:00
|
|
|
|
- Direct disassembly now closes that callback identity too: `0x0041f590/0x0041f5b0` prove the
|
|
|
|
|
|
world-region vtable root is `0x005c9a28`, so the `0x00455fc0` dispatch at slot `+0x48` lands on
|
|
|
|
|
|
`0x00455870` and the serializer sibling at `+0x4c` lands on `0x00455930`. Those two callbacks
|
2026-04-18 19:20:53 -07:00
|
|
|
|
only restore and serialize two helper-local three-lane scalar bands: `0x00455870` reads six
|
|
|
|
|
|
dwords through `0x00531150` and forwards them to `0x00530720 -> [helper+0x1e2/+0x1e6/+0x1ea]`
|
|
|
|
|
|
and `0x0052e8b0 -> [helper+0x4b/+0x4f/+0x53]`, while `0x00455930` writes that same pair back
|
|
|
|
|
|
through `0x00531030`; they still do not touch acquisition-side lanes
|
|
|
|
|
|
`[region+0x2a4]` or `[region+0x310/+0x338/+0x360]`, and they still do not touch
|
2026-04-18 13:18:10 -07:00
|
|
|
|
`[region+0x276/+0x302/+0x316]`. That means the remaining region restore target is now the later
|
|
|
|
|
|
owner that rebuilds those latches or the separate tagged body seam that persists them.
|
2026-04-18 19:25:36 -07:00
|
|
|
|
- The save-side region payload probe is wider now too: the checked-in `region_record_triplets`
|
|
|
|
|
|
surface no longer stops at raw pre-name prefix bytes and now also emits structured prefix dword
|
2026-04-18 19:30:45 -07:00
|
|
|
|
candidates per record, and the fixed `0x55f2` policy chunk now also carries structured reserved
|
|
|
|
|
|
dword candidates instead of raw integers only. That gives the next region payload pass a direct
|
|
|
|
|
|
way to compare both opaque payload bands against the remaining acquisition-side lane shapes
|
|
|
|
|
|
instead of redoing raw hex inspection by hand.
|
2026-04-18 19:36:46 -07:00
|
|
|
|
- Grounded real-save output now narrows that new probe two steps further: on both `p.gms` and
|
|
|
|
|
|
`q.gms`, every decoded region triplet currently still has `pre_name_prefix_len = 0`, an empty
|
|
|
|
|
|
`pre_name_prefix_dword_candidates` vector, and `fixed 0x55f2 policy reserved dwords are nonzero
|
|
|
|
|
|
on 0 of 145 decoded region records`. So the remaining acquisition-side payload target does not
|
|
|
|
|
|
appear to live in either the pre-`0x55f1` prefix band or the fixed `0x55f2` reserved dword band
|
|
|
|
|
|
on grounded ordinary saves. That shifts the next region payload-comparison pass onto later body
|
|
|
|
|
|
seams, not back onto the prefix or fixed-policy chunk.
|
2026-04-18 20:01:54 -07:00
|
|
|
|
- The new fixed-row run candidate probe pushes that same payload search one seam later, but it is
|
|
|
|
|
|
not grounded yet: on both `p.gms` and `q.gms` it finds high-signal counted runs keyed to the
|
|
|
|
|
|
live region count `145` with fixed row stride `0x29` before the tagged `0x5209/0x520a/0x520b`
|
|
|
|
|
|
region collection, yet the top candidate offset is not stable (`p.gms = 0xd13239`,
|
|
|
|
|
|
`q.gms = 0xd2d7d7`). So the next region payload pass should compare candidate lane-shape
|
|
|
|
|
|
fingerprints across saves rather than promoting any one absolute pre-header offset as the fixed
|
|
|
|
|
|
restore seam.
|
|
|
|
|
|
- The new two-save `runtime compare-region-fixed-row-runs <left.gms> <right.gms>` report now does
|
|
|
|
|
|
that comparison directly. Current result: `p.gms` vs `q.gms` has `0` exact shape overlaps, and
|
|
|
|
|
|
the only coarse family overlaps are lower-ranked fully mixed candidates where every dword lane is
|
|
|
|
|
|
still simultaneously small-nonzero and partially-zero. That means the fixed-row scan remains
|
|
|
|
|
|
useful negative evidence, but it is still not honest to promote as the missing region restore
|
|
|
|
|
|
seam; the next region pass should stay focused on later restore owners or a more selective row
|
|
|
|
|
|
family discriminator above this mixed pre-header corpus.
|
2026-04-18 17:44:40 -07:00
|
|
|
|
- The rest of `0x00455fc0` is ruled down further now too: after the `+0x48` callback it only runs
|
|
|
|
|
|
`0x0052ebd0`, which reads two one-byte generic flags through `0x531150` into base object bytes
|
|
|
|
|
|
`[this+0x20]`, `[this+0x8d]`, `[this+0x5c..+0x61]`, `[this+0x1ee]`, `[this+0x1fa]`, and
|
|
|
|
|
|
`[this+0x3e]`, and then it opens `0x55f3` only for span accounting before returning. So the
|
|
|
|
|
|
missing region latches are not hiding in the remainder of `0x00455fc0` either.
|
2026-04-18 20:38:09 -07:00
|
|
|
|
- The next restore-handoff strip is explicit now too: the region trace now carries a dedicated
|
|
|
|
|
|
later-global-restore hypothesis for `0x00444887`, because that continuation is the first caller
|
|
|
|
|
|
checkpoint above the ruled-down `0x00421510 -> 0x0041f5c0 -> 0x00455fc0` path. It immediately
|
|
|
|
|
|
advances into `0x00487c20` territory refresh and `0x0040b5d0` support refresh, then later
|
|
|
|
|
|
re-enters the per-region follow-on loop at `0x00444b90 -> 0x00420560`. Current disassembly keeps
|
2026-04-18 20:41:08 -07:00
|
|
|
|
`0x00420560` on the profile/class-mix scalar side only: it recomputes `[region+0x312]` from the
|
|
|
|
|
|
embedded profile collection and linked placed-structure class mix, then seeds the year-driven
|
|
|
|
|
|
`[region+0x317/+0x31b]` band through `0x00420350`. So the next region pass should treat the
|
|
|
|
|
|
broader `0x00444887` continuation as the live handoff seam when chasing
|
2026-04-18 20:38:09 -07:00
|
|
|
|
`[region+0x2a4]` and `[region+0x310/+0x338/+0x360]`, not as just another generic restore note.
|
|
|
|
|
|
- That same continuation is slightly less symmetric now too: the atlas-backed territory side at
|
|
|
|
|
|
`0x00487c20` currently restores only collection metadata/live ids and still uses no-op per-entry
|
|
|
|
|
|
load/save callbacks `0x00487670/0x00487680`, so the next pass should bias more heavily toward
|
|
|
|
|
|
support refresh `0x0040b5d0` or the later region-local rebuild than toward territory payload as
|
|
|
|
|
|
the hidden source of `[region+0x2a4]` and `[region+0x310/+0x338/+0x360]`.
|
2026-04-18 20:39:38 -07:00
|
|
|
|
- The support side is less opaque now too: the same atlas already bounds `0x0040b5d0` above
|
|
|
|
|
|
support collection `0x0062b244`, whose grounded live owners maintain goose-entry counters,
|
|
|
|
|
|
neighboring world support lanes `[world+0x4c9a/+0x4c9e/+0x4ca6/+0x4caa]`, and selected
|
|
|
|
|
|
support-entry state rather than an obvious per-region acquisition latch family. So the next pass
|
|
|
|
|
|
should now bias even more toward the later region-local rebuild beneath the `0x00444887`
|
|
|
|
|
|
continuation, while still keeping `0x0040b5d0` as a weaker adjacent prerequisite rather than
|
|
|
|
|
|
treating it as the primary hidden owner.
|
2026-04-18 20:54:15 -07:00
|
|
|
|
- The next owner family is narrower now too: the checked-in shell-load subgraph and function map
|
|
|
|
|
|
place `world_load_saved_runtime_state_bundle` `0x00446d40` directly ahead of the post-load
|
|
|
|
|
|
generation pipeline `0x004384d0`, which is now the first explicit non-hook owner family above
|
|
|
|
|
|
the ruled-down `0x00444887` continuation. The current grounded stage order is concrete enough to
|
|
|
|
|
|
split the next static pass: `319` refreshes route entries, auxiliary route trackers, and then the
|
|
|
|
|
|
placed-structure replay strip `0x004133b0`; `320` runs the region-owned building setup strip
|
|
|
|
|
|
`0x00421c20 -> 0x004235c0`; and `321` runs the economy-seeding burst `0x00437b20` plus the
|
|
|
|
|
|
cached region summary refresher `0x00423d30`. That means the next region closure pass should
|
|
|
|
|
|
chase this `0x004384d0` handoff family directly instead of treating the remaining
|
|
|
|
|
|
`[region+0x2a4]` / `[region+0x310/+0x338/+0x360]` gap as a generic continuation below
|
|
|
|
|
|
`0x00444887`.
|
|
|
|
|
|
- The `319` lane is the strongest bridge inside that family: `0x004133b0` drains queued
|
|
|
|
|
|
placed-structure ids through `0x0040e450`, sweeps every live site through `0x0040ee10`, and then
|
|
|
|
|
|
reaches the already-grounded linked-site follow-on `0x00480710`. The `320` and `321` lanes are
|
|
|
|
|
|
still explicit but weaker: `0x00421c20 -> 0x004235c0` stays on region-side demand balancing and
|
|
|
|
|
|
structure placement, while `0x00437b20 -> 0x00423d30` only refreshes the cached category band
|
|
|
|
|
|
`[region+0x27a/+0x27e/+0x282/+0x286]`. So the next non-hook region work should start from the
|
|
|
|
|
|
post-load `319` placed-structure replay seam and only then revisit the narrower region-side
|
|
|
|
|
|
`320/321` branches if the exact field bridge is still missing.
|
2026-04-18 17:34:44 -07:00
|
|
|
|
- The later restore-side region owners are narrowed further now too: the `0x00421ce0 ->
|
|
|
|
|
|
0x0041fb00 -> 0x00421730` sweep is class-`0` raster/id rebuild, `0x004881b0` is a companion
|
|
|
|
|
|
region-set cell-count rebuild over `[region+0x3d/+0x41]`, `0x00487de0` is a border-segment
|
|
|
|
|
|
emitter over the world raster, and `0x0044c4b0` is the center-cell bit-`0x10` reseed pass. So
|
|
|
|
|
|
the next region slice should stop revisiting those later owners and stay focused on the still-
|
|
|
|
|
|
missing save-owned latch / severity / stable-id seam.
|
2026-04-18 17:50:05 -07:00
|
|
|
|
- The later class-`0` batch at `0x00438087` is narrowed now too: it walks live class-`0` regions
|
|
|
|
|
|
through `0x0062bae0`, rescales the mirrored severity/source pair `[region+0x25a/+0x25e]` from
|
|
|
|
|
|
the current value using world-side factors, clamps the result, and then hands the collection to
|
|
|
|
|
|
`0x00421c20`; it still does not touch `[region+0x276/+0x302/+0x316]`.
|
|
|
|
|
|
- Its follow-on `0x00421c20` is bounded as a parameterized region-collection helper rather than a
|
|
|
|
|
|
latch owner: it loops the same collection with caller-supplied scalar arguments, dispatches each
|
|
|
|
|
|
record through `0x004235c0`, and does not write the pending/completion/one-shot lanes directly.
|
|
|
|
|
|
- The subsequent world follow-ons are narrower too: `0x00437b20` only stages a world-side reentry
|
|
|
|
|
|
guard at `[world+0x46c38]`, iterates the live region collection through `0x00423d30`, and tails
|
|
|
|
|
|
into `0x00434d40`, while `0x00437220` rebuilds broader world byte-set state around
|
|
|
|
|
|
`[world+0x66be/+0x69db]` and other global collections. Those later branches should stay out of
|
|
|
|
|
|
the remaining region latch-restore search too.
|
2026-04-18 13:22:21 -07:00
|
|
|
|
- The widened real-save region trace rules out one more false lead too: on grounded saves the
|
|
|
|
|
|
`0x55f2` fixed-policy chunk keeps all three reserved dwords at `0x00000000` and the trailing word
|
|
|
|
|
|
at invariant `0x0001`, so that fixed chunk is not currently carrying the missing latch or stable
|
|
|
|
|
|
region id/class discriminator either.
|
2026-04-18 08:10:44 -07:00
|
|
|
|
- Reconstruct the save-side placed-structure collection body on top of the newly grounded
|
|
|
|
|
|
`0x36b1/0x36b2/0x36b3` header seam so the blocked city-connection / linked-transit branch can
|
2026-04-18 10:52:59 -07:00
|
|
|
|
stop depending on atlas-only placed-structure and local-runtime refresh notes, especially the
|
2026-04-18 11:16:28 -07:00
|
|
|
|
semantics of the now-grounded compact `0x55f3` footer dword/status lane and the newly exposed
|
2026-04-18 11:45:52 -07:00
|
|
|
|
separate tagged side-buffer seam candidates, especially the exact `0x38a5/0x38a6/0x38a7`
|
|
|
|
|
|
family whose compact `6`-byte header pattern and embedded placed-structure-style `0x55f1`
|
2026-04-18 11:50:53 -07:00
|
|
|
|
name rows now make it the grounded placed-structure dynamic side-buffer owner; the remaining
|
2026-04-18 11:59:47 -07:00
|
|
|
|
blocker is semantic closure of the compact prefix regimes now summarized in real saves as seven
|
|
|
|
|
|
stable patterns on `q.gms` and their relation to the embedded `0x55f1/0x55f2/0x55f3` row
|
2026-04-18 12:09:08 -07:00
|
|
|
|
subset, especially now that the side-buffer name-pair corpus is proven disjoint from the
|
|
|
|
|
|
grounded `0x36b1` triplet name-pair corpus on `q.gms`; the next pass should treat `0x38a5` as
|
|
|
|
|
|
a separate infrastructure-asset owner seam, not a compact alias over the triplet records.
|
2026-04-18 07:49:37 -07:00
|
|
|
|
- Extend shellless clock advancement so more periodic-company service branches consume owned
|
|
|
|
|
|
runtime time state directly instead of only the explicit periodic service command.
|
2026-04-18 07:06:30 -07:00
|
|
|
|
- Keep widening selected-year world-owner state only when a full owning reader/rebuild family is
|
2026-04-18 06:59:06 -07:00
|
|
|
|
grounded strongly enough to avoid one-off leaf guesses.
|
2026-04-18 06:27:00 -07:00
|
|
|
|
|
|
|
|
|
|
## In Progress
|
|
|
|
|
|
|
|
|
|
|
|
- Widen shellless simulation from explicit service commands toward “advance the runtime clock and
|
|
|
|
|
|
the simulation-owned services advance with it.”
|
|
|
|
|
|
|
|
|
|
|
|
## Queued
|
|
|
|
|
|
|
|
|
|
|
|
- Rehost additional periodic finance/service branches that still depend on frozen world restore
|
|
|
|
|
|
fields instead of advanced runtime-owned time state.
|
|
|
|
|
|
- Reduce remaining company/chairman save-native gaps that still block standalone simulation
|
|
|
|
|
|
quality, especially controller-kind closure and any deeper finance/state fields that still rely
|
|
|
|
|
|
on conservative defaults.
|
|
|
|
|
|
- Rehost bounded live economy owner state beyond selector/catalog/override surfaces when a
|
|
|
|
|
|
concrete non-shell-owned seam is grounded.
|
|
|
|
|
|
- Keep tightening shell-owned parity families only when that directly supports later rehosting.
|
|
|
|
|
|
|
|
|
|
|
|
## Blocked
|
|
|
|
|
|
|
|
|
|
|
|
- Full shell/dialog ownership remains intentionally out of scope.
|
|
|
|
|
|
- Any candidate slice that requires guessing rather than rehosting owning state or real
|
|
|
|
|
|
reader/setter families stays blocked until a better owner seam is grounded.
|
2026-04-18 12:53:44 -07:00
|
|
|
|
- Missing owner seams or dispatch mappings are not by themselves a stop condition when a targeted
|
|
|
|
|
|
static-mapping pass or a higher-layer rehosted trace/evaluator surface can still narrow them
|
|
|
|
|
|
further without guessing.
|
2026-04-18 08:10:44 -07:00
|
|
|
|
- The city-connection announcement / linked-transit roster-maintenance branch is still blocked at
|
2026-04-18 08:26:58 -07:00
|
|
|
|
the record-body level, not the collection-identity level: the runtime now has a corrected
|
|
|
|
|
|
non-direct tagged region seam, a tagged train header-plus-directory seam, and a tagged
|
|
|
|
|
|
placed-structure header seam, but it does not yet reconstruct the live region or
|
|
|
|
|
|
placed-structure record bodies those service owners need.
|
2026-04-18 06:27:00 -07:00
|
|
|
|
|
|
|
|
|
|
## Recently Done
|
|
|
|
|
|
|
2026-04-18 12:38:05 -07:00
|
|
|
|
- `rrt-runtime` now exposes three higher-layer probe surfaces and matching CLI inspectors:
|
|
|
|
|
|
`runtime inspect-periodic-company-service-trace <save.gms>`,
|
|
|
|
|
|
`runtime inspect-region-service-trace <save.gms>`, and
|
|
|
|
|
|
`runtime inspect-infrastructure-asset-trace <save.gms>`. These reports separate grounded outer
|
|
|
|
|
|
owner inputs, runnable shellless branches, and explicit missing owner seams instead of leaving
|
|
|
|
|
|
the current city-connection / linked-transit frontier as an opaque blocker.
|
|
|
|
|
|
- Those same probes now also sharpen the next queue choice on grounded real saves: the periodic
|
|
|
|
|
|
company outer owner shows annual finance and route-preference override as grounded shellless
|
|
|
|
|
|
branches while city-connection and linked-transit stay blocked on region/infrastructure owner
|
|
|
|
|
|
seams; the region trace keeps the queued kind-`7` notice family on the transient side; and the
|
|
|
|
|
|
infrastructure trace now makes the `0x38a5` consumer-mapping blocker first-class after
|
|
|
|
|
|
disproving any alias to the `0x36b1` placed-structure triplet corpus.
|
2026-04-18 12:40:06 -07:00
|
|
|
|
- The infrastructure trace now also carries one small atlas-backed static-analysis layer above that
|
|
|
|
|
|
seam: bridge/tunnel/track-cap name-family counts from the real side-buffer corpus plus concrete
|
|
|
|
|
|
consumer candidates rooted at the `Infrastructure` child attach/rebuild/serializer helpers and
|
|
|
|
|
|
the later route/local-runtime follow-on owners. That means the next `0x38a5` pass can be
|
|
|
|
|
|
targeted static mapping instead of another generic scan.
|
2026-04-18 14:04:25 -07:00
|
|
|
|
- The same `0x38a5` probe now also exports payload-envelope summaries directly instead of only flat
|
|
|
|
|
|
name rows: policy/profile tag presence, dominant embedded `0x55f2` and `0x55f3` span lengths,
|
|
|
|
|
|
and sampled row boundaries. That means the next pass can decode the short embedded `0x55f3`
|
|
|
|
|
|
payload lane on top of already grounded row boundaries instead of rediscovering the same
|
|
|
|
|
|
envelopes again.
|
2026-04-18 14:11:14 -07:00
|
|
|
|
- That same probe now also exports the grounded short trailing flag-byte pair summary for the
|
|
|
|
|
|
dominant `0x06`-byte rows, while the infrastructure trace carries the matching
|
|
|
|
|
|
`0x0052ebd0/0x0052ec50` helper seam. That means the next pass can aim directly at how those
|
|
|
|
|
|
flags combine with compact-prefix regimes and primary-child restore state instead of treating the
|
|
|
|
|
|
short lane as anonymous payload.
|
2026-04-18 14:15:08 -07:00
|
|
|
|
- That same probe now also exports the fixed `0x55f2` six-dword policy samples and the grounded
|
|
|
|
|
|
shared trailing word `0x0101` for all embedded rows, while the infrastructure trace carries the
|
|
|
|
|
|
matching `0x00455870/0x00455930` helper seam. That means the next pass can focus on which of the
|
|
|
|
|
|
two restored dword triplets actually bridge into child-count / primary-child state instead of
|
|
|
|
|
|
rediscovering the fixed `0x55f2` row shape.
|
2026-04-18 14:17:47 -07:00
|
|
|
|
- The infrastructure trace now also carries the deeper `0x00530720/0x0052e8b0` bridge, so the next
|
|
|
|
|
|
pass can focus on the outer payload-stream header and compact-prefix regimes instead of revisiting
|
|
|
|
|
|
the fixed `0x55f2` six-dword row.
|
2026-04-18 12:53:44 -07:00
|
|
|
|
- That same trace now also ranks those consumers into explicit hypotheses, so the next
|
|
|
|
|
|
infrastructure pass should start with the attach/rebuild strip instead of treating all
|
|
|
|
|
|
candidate owners as equally likely.
|
2026-04-18 12:41:08 -07:00
|
|
|
|
- The region trace now also carries the corresponding atlas-backed candidate owner strip above the
|
|
|
|
|
|
unresolved save latches, so the region frontier is now explicitly “missing persisted owner seam
|
|
|
|
|
|
for `[region+0x25e/+0x276/+0x302/+0x316]` and stable region id/class,” not “unknown service
|
|
|
|
|
|
family.”
|
2026-04-18 12:53:44 -07:00
|
|
|
|
- That same trace now also ranks those owners into explicit hypotheses, so the next region pass
|
|
|
|
|
|
should start with the pending bonus service owner and peer/linkage strip rather than the queued
|
|
|
|
|
|
modal family.
|
2026-04-18 08:26:58 -07:00
|
|
|
|
- Save inspection now splits the shared `0x5209/0x520a/0x520b` family correctly: the smaller
|
|
|
|
|
|
direct `0x1d5` collection is the live train family and now exposes a live-entry directory rooted
|
|
|
|
|
|
at metadata dword `16`, while the actual region family is the larger non-direct `Marker09`
|
|
|
|
|
|
collection with live_id/count `0x96/0x91`; the tagged placed-structure header
|
|
|
|
|
|
(`0x36b1/0x36b2/0x36b3`) remains grounded alongside them.
|
2026-04-18 08:35:37 -07:00
|
|
|
|
- That same corrected region seam now also exposes repeated `0x55f1/0x55f2/0x55f3` serialized
|
|
|
|
|
|
record triplets with len-prefixed names plus fixed policy/profile chunk lengths, so the next
|
|
|
|
|
|
city-connection pass can target the real record envelope instead of another blind scan.
|
2026-04-18 08:41:29 -07:00
|
|
|
|
- The fixed `0x55f2` row inside each region triplet is now decoded structurally as three leading
|
|
|
|
|
|
`f32` lanes, three reserved `u32` lanes, and a trailing `u16` word, so the next save-region
|
|
|
|
|
|
slice can focus on the larger `0x55f3` payload where the pending/completion/one-shot latches are
|
|
|
|
|
|
most likely to live.
|
2026-04-18 08:47:09 -07:00
|
|
|
|
- The larger `0x55f3` payload now also exposes an embedded direct profile collection with grounded
|
|
|
|
|
|
live-id/count headers, fixed `0x22`-byte rows, profile names, and trailing weight scalars, so
|
|
|
|
|
|
the remaining region work is on the unresolved payload fields above that collection rather than
|
|
|
|
|
|
on the profile subcollection itself.
|
2026-04-18 11:06:06 -07:00
|
|
|
|
- Grounded real saves now also show that the region-side `0x55f3` payload has zero trailing
|
|
|
|
|
|
padding beyond that embedded profile collection, so the remaining region blocker has shifted
|
|
|
|
|
|
from “find the hidden tail inside this payload” to “find the separate owner seam that backs the
|
|
|
|
|
|
runtime latches the city-connection branch still reads.”
|
2026-04-18 11:16:28 -07:00
|
|
|
|
- Save inspection now also exports a generic low-tag unclassified collection scan over plausible
|
2026-04-18 11:45:52 -07:00
|
|
|
|
indexed-collection headers, now through a lightweight CLI path that does not require full bundle
|
|
|
|
|
|
inspection and now filters out candidates nested inside already-grounded company/chairman/train/
|
|
|
|
|
|
region/placed-structure spans.
|
|
|
|
|
|
- That lightweight scan now also narrows the real save frontier to a much smaller stable candidate
|
|
|
|
|
|
set across `p.gms`, `q.gms`, and `Autosave.gms`, with the exact `0x38a5/0x38a6/0x38a7` family
|
|
|
|
|
|
standing out as the strongest current placed-structure dynamic side-buffer candidate.
|
|
|
|
|
|
- The `0x38a5/0x38a6/0x38a7` family now also has a first dedicated parser scaffold in
|
|
|
|
|
|
`rrt-runtime`: its synthetic regression is grounded, its header shape is checked in, and the
|
|
|
|
|
|
parser now expects a compact 6-byte prefix plus separator byte before an embedded
|
|
|
|
|
|
placed-structure-style dual-name row rather than treating the family as anonymous residue.
|
2026-04-18 11:50:53 -07:00
|
|
|
|
- That exact `0x38a5/0x38a6/0x38a7` parser is now also wired through a lightweight CLI inspector
|
|
|
|
|
|
and the normal save company/chairman analysis output, and grounded real saves now prove the
|
|
|
|
|
|
same seam directly:
|
|
|
|
|
|
`q.gms` exposes `live_record_count=3865`, prefix `0x0005d368/0x0001/0xff`, and first embedded
|
|
|
|
|
|
names `TrackCapST_Cap.3dp` / `Infrastructure`; `p.gms` exposes the same structure with
|
|
|
|
|
|
`live_record_count=2467`.
|
2026-04-18 11:53:13 -07:00
|
|
|
|
- That same direct `0x38a5` probe now also samples multiple embedded name rows with their
|
|
|
|
|
|
preceding compact prefixes, showing that the seam is not a one-off wrapper: grounded `q.gms`
|
|
|
|
|
|
samples include repeated `TunnelSTBrick_*` names under `Infrastructure` with compact leading
|
|
|
|
|
|
dwords like `0x000055f3` and `0xff0000ff`, so the next pass can target the semantics of those
|
|
|
|
|
|
compact prefix patterns instead of hunting the owner seam itself.
|
2026-04-18 11:59:47 -07:00
|
|
|
|
- The `0x38a5` probe now also summarizes all embedded compact prefix regimes instead of just the
|
|
|
|
|
|
first few samples: grounded `q.gms` currently exposes seven stable pattern groups across 138
|
|
|
|
|
|
embedded rows, with the dominant `0xff000000/0x0001/0xff` group carrying 62 bridge-section
|
|
|
|
|
|
rows, the `0xff0000ff/0x0001/0xff` and `0xf3010100/0x0055/0x00` groups concentrating cap-like
|
|
|
|
|
|
rows, and a smaller `0x000055f3/0x0001/0xff` group carrying 17 tunnel-section / cap rows whose
|
|
|
|
|
|
leading dword matches the embedded placed-structure profile tag directly.
|
2026-04-18 12:09:08 -07:00
|
|
|
|
- The save-company/chairman analysis path now also compares that grounded `0x38a5` side-buffer
|
|
|
|
|
|
name-pair corpus against the grounded `0x36b1` triplet name-pair corpus directly; on `q.gms`
|
|
|
|
|
|
the overlap is currently zero (`0/138` decoded side-buffer rows and `0/5` unique side-buffer
|
|
|
|
|
|
name pairs match the 56-triplet corpus), which shifts the remaining placed-structure work away
|
|
|
|
|
|
from “prove these are aliases” toward “find how the separate infrastructure-asset owner seam is
|
|
|
|
|
|
consumed by city-connection / linked-transit service.”
|
2026-04-18 12:16:28 -07:00
|
|
|
|
- Save inspection now also has a dedicated probe for the atlas-backed region queued-notice node
|
|
|
|
|
|
shape (`payload seed 0x005c87a8`, kind `7`, zero promotion latch, region id, amount, `-1/-1`
|
|
|
|
|
|
tails), plus a matching lightweight CLI inspector. Grounded `q.gms`, `p.gms`, and `Autosave.gms`
|
|
|
|
|
|
all currently return `null`, which is useful negative evidence: the transient region notice
|
|
|
|
|
|
queue is not obviously persisted in these ordinary saves.
|
2026-04-18 10:52:59 -07:00
|
|
|
|
- The placed-structure tagged save stream now also exposes repeated `0x55f1/0x55f2/0x55f3`
|
|
|
|
|
|
triplets with dual name stems, a fixed five-`f32` policy row, and a compact `0x5dc1...0x5dc2`
|
|
|
|
|
|
footer carrying one raw `u32` payload lane plus one live `i32` status lane, so the remaining
|
|
|
|
|
|
placed-structure work is semantic closure of those owned fields rather than envelope discovery.
|
2026-04-18 11:00:28 -07:00
|
|
|
|
- That compact placed-structure `i32` footer status lane is now partially grounded as owned
|
|
|
|
|
|
semantics too: observed non-farm families stay at `-1`, while farm families use nonnegative
|
|
|
|
|
|
`0..11` buckets that are now exported as farm growth-stage indices instead of opaque raw status
|
|
|
|
|
|
residue.
|
2026-04-18 06:38:21 -07:00
|
|
|
|
- Stepped calendar progression now also refreshes save-world owner time fields, including packed
|
|
|
|
|
|
year, packed tuple words, absolute counter, and the derived selected-year gap scalar.
|
2026-04-18 06:27:00 -07:00
|
|
|
|
- Automatic year-rollover calendar stepping now invokes periodic-boundary service.
|
2026-04-18 06:51:22 -07:00
|
|
|
|
- Save-native world locomotive policy owner state now flows through runtime restore state,
|
|
|
|
|
|
summaries, and keyed world-flag execution for the grounded `All Steam/Diesel/Electric Locos
|
|
|
|
|
|
Avail.` descriptor strip plus the cached available-locomotive rating.
|
2026-04-18 06:59:06 -07:00
|
|
|
|
- The selected-year bucket ladder rooted in `0x00433bd0` is now checked in as a static artifact,
|
|
|
|
|
|
and runtime restore state now derives both the selected-year bucket scalar and the
|
|
|
|
|
|
`[world+0x0bde]` economic-tuning mirror from owner-family inputs instead of preserving stale
|
|
|
|
|
|
load-time residue.
|
2026-04-18 07:06:30 -07:00
|
|
|
|
- That same selected-year owner family now also rebuilds the direct bucket trio
|
|
|
|
|
|
`[world+0x65/+0x69/+0x6d]`, the complement trio `[world+0x71/+0x75/+0x79]`, and the scaled
|
|
|
|
|
|
companion trio `[world+0x7d/+0x81/+0x85]` from the checked-in `0x00433bd0` artifact instead of
|
|
|
|
|
|
preserving stale save-time residue.
|
2026-04-18 07:13:49 -07:00
|
|
|
|
- The save-native company direct-record seam now also carries the full outer periodic-company
|
|
|
|
|
|
side-latch trio rooted at `0x0d17/0x0d18/0x0d56`, including the preferred-locomotive
|
|
|
|
|
|
engine-type chooser byte beside the city-connection and linked-transit finance gates.
|
2026-04-18 07:23:07 -07:00
|
|
|
|
- That same side-latch trio now also has a runtime-owned service-state map and summary surface,
|
|
|
|
|
|
so later periodic company-service work can stop reading those lanes directly from imported
|
|
|
|
|
|
market/cache residue.
|
2026-04-18 07:26:39 -07:00
|
|
|
|
- The periodic-boundary owner now also clears the transient preferred-locomotive side latch every
|
|
|
|
|
|
cycle and reseeds the finance latches from market state where present, while preserving
|
|
|
|
|
|
side-latch-only company context when no market projection exists.
|
2026-04-18 07:42:59 -07:00
|
|
|
|
- The outer periodic-company seam now also has a first-class runtime reader:
|
|
|
|
|
|
selected-company summaries and finance readers can resolve the base `[world+0x4c74]`
|
|
|
|
|
|
route-preference byte, the effective electric-only override fed by `0x0d17`, and the matching
|
|
|
|
|
|
`1.4x` versus `1.8x` route-quality multiplier through owned periodic-service state instead of
|
|
|
|
|
|
leaving that bridge in atlas notes.
|
2026-04-18 07:49:37 -07:00
|
|
|
|
- That same periodic-company seam now also owns a first-class route-preference apply/restore
|
|
|
|
|
|
mutation lane: runtime service state tracks the active and last electric override, beginning the
|
|
|
|
|
|
override rewrites `[world+0x4c74]` to the effective route preference for the selected company
|
|
|
|
|
|
service pass, and ending the override restores the base world byte instead of leaving the seam as
|
|
|
|
|
|
a pure reader bridge.
|
2026-04-18 07:57:06 -07:00
|
|
|
|
- The same route-preference mutation seam now also carries explicit apply/restore service counters
|
|
|
|
|
|
through runtime service state and summaries, so later periodic-company branches can assert that
|
|
|
|
|
|
override activity happened even before the missing city-connection / linked-transit service
|
|
|
|
|
|
owners are fully rehosted.
|
2026-04-18 06:27:00 -07:00
|
|
|
|
- Company cash, confiscation, and major governance effects now write through owner state instead of
|
|
|
|
|
|
drifting from market/cache readers.
|
|
|
|
|
|
- Company credit rating, prime rate, book value per share, investor confidence, and management
|
|
|
|
|
|
attitude now refresh from grounded owner-state readers.
|
|
|
|
|
|
- Annual finance service persists structured news events and grounded debt/share flow totals.
|