Track missing engine side view resources

This commit is contained in:
Jan Petykiewicz 2026-04-21 23:16:07 -07:00
commit ee98ab8302
3 changed files with 11 additions and 1 deletions

View file

@ -153,6 +153,7 @@ pub struct EngineTypesInspectionReport {
pub car_side_view_resource_counts: BTreeMap<String, usize>, pub car_side_view_resource_counts: BTreeMap<String, usize>,
pub car_side_view_resource_pk4_match_count: usize, pub car_side_view_resource_pk4_match_count: usize,
pub car_side_view_resource_pk4_missing_count: usize, pub car_side_view_resource_pk4_missing_count: usize,
pub car_side_view_resource_pk4_missing_counts: BTreeMap<String, usize>,
pub car_auxiliary_stem_counts: BTreeMap<String, usize>, pub car_auxiliary_stem_counts: BTreeMap<String, usize>,
pub car_auxiliary_stem_relation_counts: BTreeMap<String, usize>, pub car_auxiliary_stem_relation_counts: BTreeMap<String, usize>,
pub internal_ne_profile_pk4_match_count: usize, pub internal_ne_profile_pk4_match_count: usize,
@ -383,6 +384,12 @@ pub fn inspect_engine_types_dir(
.iter() .iter()
.filter(|family| family.side_view_resource_found_in_pk4 == Some(false)) .filter(|family| family.side_view_resource_found_in_pk4 == Some(false))
.count(); .count();
let car_side_view_resource_pk4_missing_counts = count_named_values(
family_entries
.iter()
.filter(|family| family.side_view_resource_found_in_pk4 == Some(false))
.filter_map(|family| family.side_view_resource.as_deref()),
);
let car_auxiliary_stem_counts = count_named_values( let car_auxiliary_stem_counts = count_named_values(
family_entries family_entries
.iter() .iter()
@ -493,6 +500,7 @@ pub fn inspect_engine_types_dir(
car_side_view_resource_counts, car_side_view_resource_counts,
car_side_view_resource_pk4_match_count, car_side_view_resource_pk4_match_count,
car_side_view_resource_pk4_missing_count, car_side_view_resource_pk4_missing_count,
car_side_view_resource_pk4_missing_counts,
car_auxiliary_stem_counts, car_auxiliary_stem_counts,
car_auxiliary_stem_relation_counts, car_auxiliary_stem_relation_counts,
internal_ne_profile_pk4_match_count, internal_ne_profile_pk4_match_count,

View file

@ -15,7 +15,7 @@ This file is the short active queue for the current runtime and reverse-engineer
The checked 1.05 corpus now also splits `.car` auxiliary stems into `126` direct matches, `14` role-neutral roots, and only `5` truly distinct cases, while `.cgo` collapses into five stable scalar ladders instead of arbitrary floats. The checked 1.05 corpus now also splits `.car` auxiliary stems into `126` direct matches, `14` role-neutral roots, and only `5` truly distinct cases, while `.cgo` collapses into five stable scalar ladders instead of arbitrary floats.
The early `.lco` lane block is now partially partitioned too: only offsets `0x20`, `0x34`, `0x38`, `0x3c`, `0x44`, `0x48`, and `0x54` behave like low-cardinality buckets, while the other early lanes still look high-variance. The early `.lco` lane block is now partially partitioned too: only offsets `0x20`, `0x34`, `0x38`, `0x3c`, `0x44`, `0x48`, and `0x54` behave like low-cardinality buckets, while the other early lanes still look high-variance.
The side-view resource path is now grounded into `Data/2D/rt3_2IMB.PK4`, and the `.imb` parser now decodes shipped comment-suffixed numeric rows plus `_NE` profile fields such as `HorizontalScaleModifier` and `ImageWHScaled`. The side-view resource path is now grounded into `Data/2D/rt3_2IMB.PK4`, and the `.imb` parser now decodes shipped comment-suffixed numeric rows plus `_NE` profile fields such as `HorizontalScaleModifier` and `ImageWHScaled`.
The checked PK4 linkage split is now explicit too: `132 / 145` side-view resource names resolve directly, but the remaining `13` are the missing `CarSideView_3.imb` cohort, while `43 / 145` derived `{internal_stem}_NE.imb` names resolve and all of those hits belong to matched locomotive pairs. The checked PK4 linkage split is now explicit too: `132 / 145` side-view resource names resolve directly, but the remaining `13` are the missing `CarSideView_3.imb` cohort and that hole exists in both checked installs, while `43 / 145` derived `{internal_stem}_NE.imb` names resolve and all of those hits belong to matched locomotive pairs.
The next honest static work is to keep promoting those fixed lanes into stable parser fields, explain the five remaining distinct auxiliary-stem cases, and decide how far the `.cgo` ladders plus the low-cardinality `.lco` lanes can be grounded without overclaiming semantics. The next honest static work is to keep promoting those fixed lanes into stable parser fields, explain the five remaining distinct auxiliary-stem cases, and decide how far the `.cgo` ladders plus the low-cardinality `.lco` lanes 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 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 checked format inventory detail now lives in [RT3 format inventory](rehost-queue/format-inventory-2026-04-21.md).

View file

@ -64,6 +64,8 @@ first `.car` / `.lco` / `.cgo` / `.cct` inspector pass landed.
- `43 / 145` derived `{internal_stem}_NE.imb` names resolve directly inside `rt3_2IMB.PK4` - `43 / 145` derived `{internal_stem}_NE.imb` names resolve directly inside `rt3_2IMB.PK4`
- every one of those `43` `_NE` hits belongs to a matched locomotive `.car/.lco` pair - every one of those `43` `_NE` hits belongs to a matched locomotive `.car/.lco` pair
- no freight-car or tender family currently resolves to a packaged `{internal_stem}_NE.imb` - no freight-car or tender family currently resolves to a packaged `{internal_stem}_NE.imb`
- That `CarSideView_3.imb` hole is now confirmed across both checked installs (`rt3` and
`rt3_105`): neither shipped `rt3_2IMB.PK4` contains a `CarSideView_3.imb` entry.
## What The Current Parser Now Owns ## What The Current Parser Now Owns