Deepen engine type parser semantics
This commit is contained in:
parent
cbfe0a8df9
commit
1bd4158c0c
7 changed files with 297 additions and 33 deletions
|
|
@ -10,11 +10,10 @@ This file is the short active queue for the current runtime and reverse-engineer
|
|||
|
||||
## Current Active Items
|
||||
|
||||
- No active repo-local non-dynamic items remain.
|
||||
The last local static head was the locomotives-page tail, and the checked [locomotive catalog tail census](../artifacts/exports/rt3-1.06/locomotive-catalog-tail-census.json) now exhausts the full local `.gms + .gmx` corpus under `rt3_wineprefix/drive_c`: `29` candidate saves found, `26` parsed samples, `5` catalog-bearing saves, one save-stable ordinal prefix through `58` (`VL80T`), two observed `59+` tail clusters (`g.gms` with `242 A1 / Class 460 / Class A1 / Class P8 / U1`, and the four classic 1.05 saves with `GP 35 / U1 / Zephyr`), zero observed `Class QJ`, and zero packed-event carriers for descriptor `452` or the upper bands `457..474` / `475..502`.
|
||||
The added `18` `.gmx` sandbox saves widen the local corpus and packed-event coverage, but they still contribute no named locomotive table and no derived `locomotive_catalog`, so they do not move the save-native tail evidence beyond the same five catalog-bearing `.gms` saves.
|
||||
That means the remaining locomotive questions are no longer repo-local static work. They now require either a broader save corpus or dynamic tracing.
|
||||
Preserved checked locomotive blocker detail now lives in [Locomotive descriptor tails](rehost-queue/locomotive-descriptor-tails-2026-04-21.md).
|
||||
- The active static parser head is now the `engine_types` semantics frontier.
|
||||
The repo now has structural inspectors for `.car`, `.lco`, `.cgo`, and `.cct`, but the binary side is still only partially semantic: the checked 1.05 corpus grounds `.car` fixed strings at `0x0c / 0x48 / 0x84` plus a second fixed stem slot at `0xa2` and a side-view resource name at `0xc0`, while `.lco` carries a stable primary stem at `0x04` and only conditional companion/body slots at `0x0c` and `0x12` when the leading stem slot is padded.
|
||||
The next honest static work is to keep promoting those fixed lanes into stable parser fields and decide how far `.cgo` and the remaining `EngineTypes` sidecars can be grounded without overclaiming semantics.
|
||||
Preserved checked parser detail now lives in [EngineTypes parser semantics](rehost-queue/engine-types-parser-semantics-2026-04-21.md).
|
||||
Preserved checked format inventory detail now lives in [RT3 format inventory](rehost-queue/format-inventory-2026-04-21.md).
|
||||
|
||||
## Preserved External And Dynamic Blockers
|
||||
|
|
@ -34,6 +33,7 @@ This file is the short active queue for the current runtime and reverse-engineer
|
|||
## Preserved Detail
|
||||
|
||||
- [Archive snapshot](rehost-queue/archive-2026-04-19.md)
|
||||
- [EngineTypes parser semantics](rehost-queue/engine-types-parser-semantics-2026-04-21.md)
|
||||
- [RT3 format inventory](rehost-queue/format-inventory-2026-04-21.md)
|
||||
- [Locomotive descriptor tails](rehost-queue/locomotive-descriptor-tails-2026-04-21.md)
|
||||
- [Periodic company control lane](rehost-queue/periodic-company-control-lane-2026-04-21.md)
|
||||
|
|
|
|||
|
|
@ -4,6 +4,9 @@ This directory preserves older queue snapshots and long-form implementation note
|
|||
useful as evidence, but should not stay in the short active queue file.
|
||||
|
||||
- `archive-2026-04-19.md`: preserved detailed queue snapshot from the pre-index cleanup.
|
||||
- `engine-types-parser-semantics-2026-04-21.md`: current static parser frontier for the
|
||||
`engine_types` family, including the grounded `.car` fixed slots, guarded `.lco` companion/body
|
||||
slots, and the remaining semantic questions around `.cgo`.
|
||||
- `format-inventory-2026-04-21.md`: current file-format inventory under `rt3/` and `rt3_105/`,
|
||||
including the RT3-native families we still do not parse.
|
||||
- `locomotive-descriptor-tails-2026-04-21.md`: checked `.gms + .gmx` local locomotive catalog
|
||||
|
|
|
|||
|
|
@ -0,0 +1,70 @@
|
|||
# EngineTypes Parser Semantics (2026-04-21)
|
||||
|
||||
This note preserves the current static parser frontier for the `engine_types` family after the
|
||||
first `.car` / `.lco` / `.cgo` / `.cct` inspector pass landed.
|
||||
|
||||
## Grounded Fixed Lanes
|
||||
|
||||
- `.car` is no longer just a three-string header:
|
||||
- `0x0c`: primary display name
|
||||
- `0x48`: content name
|
||||
- `0x84`: internal stem
|
||||
- `0xa2`: second fixed stem slot
|
||||
- `0xc0`: side-view resource name such as `CarSideView_1.imb`
|
||||
- The checked 1.05 corpus (`145` `.car` files) carries all five of those `.car` slots on every
|
||||
file inspected so far.
|
||||
- `.lco` carries one always-present primary stem at `0x04`.
|
||||
- `.lco` only carries meaningful secondary slots when that leading stem slot is padded:
|
||||
- `0x0c`: conditional companion stem such as `VL80T` or `Zephyr`
|
||||
- `0x12`: conditional body label such as `Loco`
|
||||
- The checked 1.05 corpus (`66` `.lco` files) shows why the guard matters: long primary stems
|
||||
such as `AtlanticL` naturally spill across `0x0c`, so `0x0c` and `0x12` are not independent
|
||||
fixed fields unless the earlier slot is actually zero-padded.
|
||||
- `.cgo` looks structurally narrow right now: the checked 1.05 corpus has `37` files, all exactly
|
||||
`25` bytes long, each carrying one leading scalar lane plus an inline content stem at `0x04`.
|
||||
- `.cct` remains the least ambiguous sidecar: current shipped files still look like narrow one-row
|
||||
text metadata.
|
||||
|
||||
## What The Current Parser Now Owns
|
||||
|
||||
- `.car`
|
||||
- primary display name
|
||||
- content name
|
||||
- internal stem
|
||||
- auxiliary stem slot
|
||||
- side-view resource name
|
||||
- `.lco`
|
||||
- full internal stem
|
||||
- conditional companion stem slot
|
||||
- conditional body-type label
|
||||
- early raw numeric lane block `0x20..0x54`
|
||||
- `.cgo`
|
||||
- leading scalar lane
|
||||
- content stem
|
||||
- `.cct`
|
||||
- tokenized identifier/value row
|
||||
|
||||
## Remaining Static Questions
|
||||
|
||||
- `.car`
|
||||
- what the `0xa2` auxiliary stem really represents across locomotive, tender, and freight-car
|
||||
families: alias root, image key, or alternate content stem
|
||||
- whether the trailing side-view resource can be tied cleanly to `.imb` metadata without
|
||||
inventing frontend semantics
|
||||
- `.lco`
|
||||
- whether the guarded companion-stem slot is a tender/fallback display family, a foreign reuse
|
||||
key, or only a subset authoring convenience
|
||||
- how much of the early numeric lane block can be promoted from raw `u32/f32` views into stable
|
||||
typed semantics without dynamic evidence
|
||||
- `.cgo`
|
||||
- whether the leading scalar is enough to justify a named typed field, or whether it should stay
|
||||
a conservative raw scalar until more binary/code correlation exists
|
||||
|
||||
## Next Static Parser Work
|
||||
|
||||
- keep extending `engine_types` instead of creating a parallel parser family
|
||||
- prefer fixed-slot promotion only when the corpus proves the slot is independent rather than a
|
||||
spillover from an earlier variable-width stem
|
||||
- treat `.cgo` as parser-complete structurally unless a clearer gameplay consumer appears
|
||||
- keep the broader remaining unparsed-family list in [RT3 format inventory](format-inventory-2026-04-21.md)
|
||||
rather than duplicating it here
|
||||
Loading…
Add table
Add a link
Reference in a new issue