rrt/docs/rehost-queue.md

11 KiB

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

  • Reconstruct the save-side region record body on top of the newly corrected non-direct tagged 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.
  • 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 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 6-byte prefix lane and its relation to the embedded 0x55f1/0x55f2/0x55f3 row subset.
  • 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

  • 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.
  • 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.
  • 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 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 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.