rrt/docs/rehost-queue.md

210 lines
16 KiB
Markdown
Raw Normal View History

# Rehost Queue
Working rule:
- Do not stop after commits.
- After each commit, check this queue and continue.
- Only stop if the queue is empty, you hit a real blocker, or you need approval.
- Before any final response, state which stop condition is true. If none is true, continue.
## Next
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
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.
- 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
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
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.
- 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
stop depending on atlas-only placed-structure and local-runtime refresh notes, especially the
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`
name rows now make it the grounded placed-structure dynamic side-buffer owner; the remaining
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
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.
- Extend shellless clock advancement so more periodic-company service branches consume owned
runtime time state directly instead of only the explicit periodic service command.
- Keep widening selected-year world-owner state only when a full owning reader/rebuild family is
grounded strongly enough to avoid one-off leaf guesses.
## 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.
- The city-connection announcement / linked-transit roster-maintenance branch is still blocked at
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.
## 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.
- 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.
- 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.”
- 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.
- 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.
- 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.”
- 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.
- 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`.
- 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.
- 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.
- 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.”
- 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.
- 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.
- 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.
- 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.
- Automatic year-rollover calendar stepping now invokes periodic-boundary service.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.