Add candidate table header cluster export
This commit is contained in:
parent
c9f79fdf76
commit
0240c08012
8 changed files with 152 additions and 10 deletions
|
|
@ -31,6 +31,7 @@ Canonical derived outputs for the patch 1.06 executable.
|
||||||
- `event-effects-building-bindings.json`
|
- `event-effects-building-bindings.json`
|
||||||
- `economy-cargo-sources.json`
|
- `economy-cargo-sources.json`
|
||||||
- `building-type-sources.json`
|
- `building-type-sources.json`
|
||||||
|
- `candidate-table-header-clusters.json`
|
||||||
- `candidate-table-named-runs.json`
|
- `candidate-table-named-runs.json`
|
||||||
- `compact-event-dispatch-cluster-counts.json`
|
- `compact-event-dispatch-cluster-counts.json`
|
||||||
- `selected-year-bucket-ladder.json`
|
- `selected-year-bucket-ladder.json`
|
||||||
|
|
|
||||||
114
artifacts/exports/rt3-1.06/candidate-table-header-clusters.json
Normal file
114
artifacts/exports/rt3-1.06/candidate-table-header-clusters.json
Normal file
|
|
@ -0,0 +1,114 @@
|
||||||
|
{
|
||||||
|
"root_path": "rt3_wineprefix/drive_c/rt3/maps",
|
||||||
|
"file_count": 37,
|
||||||
|
"cluster_count": 3,
|
||||||
|
"skipped_file_count": 4,
|
||||||
|
"clusters": [
|
||||||
|
{
|
||||||
|
"header_word_0_hex": "0x00000000",
|
||||||
|
"header_word_1_hex": "0x00000000",
|
||||||
|
"file_count": 27,
|
||||||
|
"profile_families": [
|
||||||
|
"map-fixed-catalog-container-unknown",
|
||||||
|
"rt3-105-scenario-map-container-v1"
|
||||||
|
],
|
||||||
|
"source_kinds": [
|
||||||
|
"map-fixed-catalog-range"
|
||||||
|
],
|
||||||
|
"zero_trailer_count_min": 0,
|
||||||
|
"zero_trailer_count_max": 56,
|
||||||
|
"zero_trailer_count_values": [
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
10,
|
||||||
|
11,
|
||||||
|
12,
|
||||||
|
13,
|
||||||
|
14,
|
||||||
|
15,
|
||||||
|
17,
|
||||||
|
18,
|
||||||
|
19,
|
||||||
|
21,
|
||||||
|
22,
|
||||||
|
32,
|
||||||
|
36,
|
||||||
|
41,
|
||||||
|
42,
|
||||||
|
51,
|
||||||
|
56
|
||||||
|
],
|
||||||
|
"distinct_zero_name_set_count": 27,
|
||||||
|
"sample_paths": [
|
||||||
|
"rt3_wineprefix/drive_c/rt3/maps/British Isles.gmp",
|
||||||
|
"rt3_wineprefix/drive_c/rt3/maps/California Island.gmp",
|
||||||
|
"rt3_wineprefix/drive_c/rt3/maps/Chicago to New York.gmp",
|
||||||
|
"rt3_wineprefix/drive_c/rt3/maps/Coast to Coast.gmp",
|
||||||
|
"rt3_wineprefix/drive_c/rt3/maps/Dutchlantis.gmp",
|
||||||
|
"rt3_wineprefix/drive_c/rt3/maps/East Coast, USA.gmp",
|
||||||
|
"rt3_wineprefix/drive_c/rt3/maps/East of Mississippi.gmp",
|
||||||
|
"rt3_wineprefix/drive_c/rt3/maps/Eastern Canada.gmp",
|
||||||
|
"rt3_wineprefix/drive_c/rt3/maps/Eastern China.gmp",
|
||||||
|
"rt3_wineprefix/drive_c/rt3/maps/France.gmp",
|
||||||
|
"rt3_wineprefix/drive_c/rt3/maps/Germantown.gmp",
|
||||||
|
"rt3_wineprefix/drive_c/rt3/maps/Germany.gmp"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"header_word_0_hex": "0x10000000",
|
||||||
|
"header_word_1_hex": "0x00009000",
|
||||||
|
"file_count": 1,
|
||||||
|
"profile_families": [
|
||||||
|
"rt3-105-map-container-v1"
|
||||||
|
],
|
||||||
|
"source_kinds": [
|
||||||
|
"map-fixed-catalog-range"
|
||||||
|
],
|
||||||
|
"zero_trailer_count_min": 3,
|
||||||
|
"zero_trailer_count_max": 3,
|
||||||
|
"zero_trailer_count_values": [
|
||||||
|
3
|
||||||
|
],
|
||||||
|
"distinct_zero_name_set_count": 1,
|
||||||
|
"sample_paths": [
|
||||||
|
"rt3_wineprefix/drive_c/rt3/maps/Alternate USA.gmp"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"header_word_0_hex": "0xcdcdcdcd",
|
||||||
|
"header_word_1_hex": "0xcdcdcdcd",
|
||||||
|
"file_count": 9,
|
||||||
|
"profile_families": [
|
||||||
|
"map-fixed-catalog-container-unknown",
|
||||||
|
"rt3-105-alt-map-container-v1"
|
||||||
|
],
|
||||||
|
"source_kinds": [
|
||||||
|
"map-fixed-catalog-range"
|
||||||
|
],
|
||||||
|
"zero_trailer_count_min": 14,
|
||||||
|
"zero_trailer_count_max": 67,
|
||||||
|
"zero_trailer_count_values": [
|
||||||
|
14,
|
||||||
|
17,
|
||||||
|
18,
|
||||||
|
19,
|
||||||
|
21,
|
||||||
|
42,
|
||||||
|
67
|
||||||
|
],
|
||||||
|
"distinct_zero_name_set_count": 9,
|
||||||
|
"sample_paths": [
|
||||||
|
"rt3_wineprefix/drive_c/rt3/maps/Argentina Opens Up.gmp",
|
||||||
|
"rt3_wineprefix/drive_c/rt3/maps/Britain.gmp",
|
||||||
|
"rt3_wineprefix/drive_c/rt3/maps/Crossing the Alps.gmp",
|
||||||
|
"rt3_wineprefix/drive_c/rt3/maps/Greenland Growing.gmp",
|
||||||
|
"rt3_wineprefix/drive_c/rt3/maps/Japan Trembles.gmp",
|
||||||
|
"rt3_wineprefix/drive_c/rt3/maps/Louisiana.gmp",
|
||||||
|
"rt3_wineprefix/drive_c/rt3/maps/Pacific NW.gmp",
|
||||||
|
"rt3_wineprefix/drive_c/rt3/maps/South East Australia.gmp",
|
||||||
|
"rt3_wineprefix/drive_c/rt3/maps/Spanish Mainline.gmp"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -69,6 +69,7 @@ The broader `compare-candidate-table` surface agrees with the same conclusion:
|
||||||
The checked-in Tier-2 evidence set now joins three canonical exports directly:
|
The checked-in Tier-2 evidence set now joins three canonical exports directly:
|
||||||
|
|
||||||
- `artifacts/exports/rt3-1.06/building-type-sources.json`
|
- `artifacts/exports/rt3-1.06/building-type-sources.json`
|
||||||
|
- `artifacts/exports/rt3-1.06/candidate-table-header-clusters.json`
|
||||||
- `artifacts/exports/rt3-1.06/event-effects-building-bindings.json`
|
- `artifacts/exports/rt3-1.06/event-effects-building-bindings.json`
|
||||||
- `artifacts/exports/rt3-1.06/candidate-table-named-runs.json`
|
- `artifacts/exports/rt3-1.06/candidate-table-named-runs.json`
|
||||||
|
|
||||||
|
|
@ -84,6 +85,11 @@ Taken together they keep the current frontier narrow and concrete:
|
||||||
split visible directly, `port00_warehouse00_row_pair_map_paths` keeps the carrier maps checked
|
split visible directly, `port00_warehouse00_row_pair_map_paths` keeps the carrier maps checked
|
||||||
in, and the same export also keeps `files_with_port01_11_run_at_45_55_count = 37` plus
|
in, and the same export also keeps `files_with_port01_11_run_at_45_55_count = 37` plus
|
||||||
`files_with_warehouse01_11_run_at_56_66_count = 37` across the whole probe-bearing corpus.
|
`files_with_warehouse01_11_run_at_56_66_count = 37` across the whole probe-bearing corpus.
|
||||||
|
- `candidate-table-header-clusters.json` now keeps the root scan grounded too, with only `3`
|
||||||
|
stable header families across the same `37` maps:
|
||||||
|
`0x00000000 / 0x00000000 -> 27 maps`,
|
||||||
|
`0xcdcdcdcd / 0xcdcdcdcd -> 9 maps`, and
|
||||||
|
`0x10000000 / 0x00009000 -> 1 map` (`Alternate USA.gmp`).
|
||||||
- the same export now keeps the row/trailer crossover explicit too:
|
- the same export now keeps the row/trailer crossover explicit too:
|
||||||
`row_pair_and_numbered_trailer_family_map_counts` records
|
`row_pair_and_numbered_trailer_family_map_counts` records
|
||||||
`35/43 :: 0x00000001 -> 25 maps`, `35/43 :: 0x00000000 -> 5 maps`,
|
`35/43 :: 0x00000001 -> 25 maps`, `35/43 :: 0x00000000 -> 5 maps`,
|
||||||
|
|
@ -91,9 +97,9 @@ Taken together they keep the current frontier narrow and concrete:
|
||||||
does not collapse to one numbered trailer lane.
|
does not collapse to one numbered trailer lane.
|
||||||
|
|
||||||
So the open question is no longer whether the numbered families exist in stock assets, bindings,
|
So the open question is no longer whether the numbered families exist in stock assets, bindings,
|
||||||
or shipped candidate tables. The real remaining question is which earlier seed/projection seam
|
or shipped candidate tables, nor whether the fixed header side is unbounded. The real remaining
|
||||||
lets that fixed candidate-table cluster reach `0x00412d70` with nonzero bank-qualified state
|
question is which earlier seed/projection seam lets that fixed candidate-table cluster reach
|
||||||
before `0x00419230` ever clones or renames it.
|
`0x00412d70` with nonzero bank-qualified state before `0x00419230` ever clones or renames it.
|
||||||
|
|
||||||
## Current Implication
|
## Current Implication
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,7 @@ pub const REQUIRED_EXPORTS: &[&str] = &[
|
||||||
"artifacts/exports/rt3-1.06/event-effects-building-bindings.json",
|
"artifacts/exports/rt3-1.06/event-effects-building-bindings.json",
|
||||||
"artifacts/exports/rt3-1.06/event-effects-semantic-catalog.json",
|
"artifacts/exports/rt3-1.06/event-effects-semantic-catalog.json",
|
||||||
"artifacts/exports/rt3-1.06/building-type-sources.json",
|
"artifacts/exports/rt3-1.06/building-type-sources.json",
|
||||||
|
"artifacts/exports/rt3-1.06/candidate-table-header-clusters.json",
|
||||||
"artifacts/exports/rt3-1.06/candidate-table-named-runs.json",
|
"artifacts/exports/rt3-1.06/candidate-table-named-runs.json",
|
||||||
"artifacts/exports/rt3-1.06/compact-event-dispatch-cluster-counts.json",
|
"artifacts/exports/rt3-1.06/compact-event-dispatch-cluster-counts.json",
|
||||||
"artifacts/exports/rt3-1.06/economy-cargo-sources.json",
|
"artifacts/exports/rt3-1.06/economy-cargo-sources.json",
|
||||||
|
|
|
||||||
|
|
@ -1244,11 +1244,15 @@
|
||||||
problem is no longer whether those names exist as stable scenario rows; it is how that fixed
|
problem is no longer whether those names exist as stable scenario rows; it is how that fixed
|
||||||
candidate-table cluster is projected into the later aux-record bank and then into the live clone
|
candidate-table cluster is projected into the later aux-record bank and then into the live clone
|
||||||
families.
|
families.
|
||||||
The root scan narrows the real corpus for that question too. `runtime scan-candidate-table-headers
|
The root scan narrows the real corpus for that question too. The checked export
|
||||||
rt3_wineprefix/drive_c/rt3/maps` shows `37` probe-bearing shipped maps and `4` skips, while the
|
`artifacts/exports/rt3-1.06/candidate-table-header-clusters.json` now keeps the fixed header
|
||||||
narrower `runtime scan-candidate-table-named-runs` command now keeps those aggregates explicit
|
side grounded directly: `37` probe-bearing shipped maps, `4` skips, and only `3` stable header
|
||||||
too: `port00_warehouse00_row_pair_map_counts` records the two stable `00`-row families across
|
families across that whole corpus, namely `0x00000000 / 0x00000000 -> 27 maps`,
|
||||||
those `37` probe-bearing maps as `35/43 -> 30 maps` and `10/18 -> 7 maps`, while
|
`0xcdcdcdcd / 0xcdcdcdcd -> 9 maps`, and `0x10000000 / 0x00009000 -> 1 map`
|
||||||
|
(`Alternate USA.gmp`). The narrower
|
||||||
|
`artifacts/exports/rt3-1.06/candidate-table-named-runs.json` export keeps the row/run aggregates
|
||||||
|
explicit too: `port00_warehouse00_row_pair_map_counts` records the two stable `00`-row families
|
||||||
|
across those `37` probe-bearing maps as `35/43 -> 30 maps` and `10/18 -> 7 maps`, while
|
||||||
`files_with_port01_11_run_at_45_55_count = 37` and
|
`files_with_port01_11_run_at_45_55_count = 37` and
|
||||||
`files_with_warehouse01_11_run_at_56_66_count = 37` keep the `Port01..11` / `Warehouse01..11`
|
`files_with_warehouse01_11_run_at_56_66_count = 37` keep the `Port01..11` / `Warehouse01..11`
|
||||||
runs fixed at rows `45..55` and `56..66` in every probe-bearing map. Trailer families split
|
runs fixed at rows `45..55` and `56..66` in every probe-bearing map. Trailer families split
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ This file is the short active queue for the current runtime and reverse-engineer
|
||||||
The checked `rt3_105/maps` compact-dispatch corpus is now exported directly and partially mirrored into the periodic-company trace: `41` maps scanned, `38` with dispatch-strip rows, `318` nondirect rows total, the add-building subset is only `10` grouped occurrences across `7` descriptor keys, and the strongest broader nondirect families are now bounded too at `36` grouped occurrences across `18` maps for `nondirect-ge1e-h0001-0360-0004-0100-0200-p0000-0000-0000-ffff :: [864:4]` plus `27` across `14` maps for the mixed `[-1:4]` cluster. All of those checked rows still lack recovered trigger kind. The active open question is therefore which ordinary loaded rows acquire or bypass the missing trigger-kind control lane before they can reach placed-structure mutation opcodes.
|
The checked `rt3_105/maps` compact-dispatch corpus is now exported directly and partially mirrored into the periodic-company trace: `41` maps scanned, `38` with dispatch-strip rows, `318` nondirect rows total, the add-building subset is only `10` grouped occurrences across `7` descriptor keys, and the strongest broader nondirect families are now bounded too at `36` grouped occurrences across `18` maps for `nondirect-ge1e-h0001-0360-0004-0100-0200-p0000-0000-0000-ffff :: [864:4]` plus `27` across `14` maps for the mixed `[-1:4]` cluster. All of those checked rows still lack recovered trigger kind. The active open question is therefore which ordinary loaded rows acquire or bypass the missing trigger-kind control lane before they can reach placed-structure mutation opcodes.
|
||||||
Preserved checked control-lane detail now lives in [Periodic company control lane](rehost-queue/periodic-company-control-lane-2026-04-21.md).
|
Preserved checked control-lane detail now lives in [Periodic company control lane](rehost-queue/periodic-company-control-lane-2026-04-21.md).
|
||||||
- Keep the next static Tier-2 building pass focused on the earlier seed/projection seam into `0x00412d70`, not another broad `BuildingTypes` sweep.
|
- Keep the next static Tier-2 building pass focused on the earlier seed/projection seam into `0x00412d70`, not another broad `BuildingTypes` sweep.
|
||||||
The grounded owner strip is `0x004196c0 -> 0x00414490 -> 0x00416ce0 -> 0x00419230`, and the checked candidate-table export now keeps the concrete row families explicit too: among the `37` probe-bearing maps, `Port00/Warehouse00` stay at `35/43` on `30` maps and shift earlier to `10/18` on `7`, while `Port01..11` / `Warehouse01..11` stay fixed at `45..55` / `56..66` and the numbered trailer family splits independently at `0x00000001 -> 28 maps` versus `0x00000000 -> 9 maps`. The new crossover matrix stays mixed rather than collapsing to one side too: `35/43 :: 0x00000001 -> 25 maps`, `35/43 :: 0x00000000 -> 5 maps`, `10/18 :: 0x00000000 -> 4 maps`, and `10/18 :: 0x00000001 -> 3 maps`. The stock `BuildingTypes` side is narrower too: across `77` checked `.bca` files only `MachineShop.bca` carries nonzero selector bytes at `0xb8..0xbb`, while the broader nonzero stock signal lives in the `22`-file `.bty` alias-root family with `dword_0xbb = 0x000001f4`, especially the `TextileMill` branch that already covers `Port.bty` and `Warehouse.bty`. The active open question is therefore which earlier seed/projection path lifts that narrow stock-side signal and the fixed numbered cluster into nonzero live `[candidate+0xba/+0xbb]` before `0x00412d70` and `0x00419230` consume it.
|
The grounded owner strip is `0x004196c0 -> 0x00414490 -> 0x00416ce0 -> 0x00419230`, and the checked candidate-table exports now keep the concrete scenario-side families explicit too: among the `37` probe-bearing maps, `Port00/Warehouse00` stay at `35/43` on `30` maps and shift earlier to `10/18` on `7`, while `Port01..11` / `Warehouse01..11` stay fixed at `45..55` / `56..66` and the numbered trailer family splits independently at `0x00000001 -> 28 maps` versus `0x00000000 -> 9 maps`. The new crossover matrix stays mixed rather than collapsing to one side too: `35/43 :: 0x00000001 -> 25 maps`, `35/43 :: 0x00000000 -> 5 maps`, `10/18 :: 0x00000000 -> 4 maps`, and `10/18 :: 0x00000001 -> 3 maps`. The checked header-cluster export keeps the same root scan bounded to only `3` families: `0x00000000 / 0x00000000 -> 27 maps`, `0xcdcdcdcd / 0xcdcdcdcd -> 9 maps`, and `0x10000000 / 0x00009000 -> 1 map` (`Alternate USA.gmp`). The stock `BuildingTypes` side is narrower too: across `77` checked `.bca` files only `MachineShop.bca` carries nonzero selector bytes at `0xb8..0xbb`, while the broader nonzero stock signal lives in the `22`-file `.bty` alias-root family with `dword_0xbb = 0x000001f4`, especially the `TextileMill` branch that already covers `Port.bty` and `Warehouse.bty`. The active open question is therefore which earlier seed/projection path lifts that narrow stock-side signal and the fixed numbered cluster into nonzero live `[candidate+0xba/+0xbb]` before `0x00412d70` and `0x00419230` consume it.
|
||||||
Preserved checked row-family detail now lives in [Tier2 candidate row families](rehost-queue/tier2-candidate-row-families-2026-04-21.md).
|
Preserved checked row-family detail now lives in [Tier2 candidate row families](rehost-queue/tier2-candidate-row-families-2026-04-21.md).
|
||||||
Preserved checked stock selector-byte detail now lives in [Tier2 selector-byte sources](rehost-queue/tier2-selector-byte-sources-2026-04-21.md).
|
Preserved checked stock selector-byte detail now lives in [Tier2 selector-byte sources](rehost-queue/tier2-selector-byte-sources-2026-04-21.md).
|
||||||
Preserved checked rebuild sequencing detail now lives in [Tier2 rebuild sequencing](rehost-queue/tier2-rebuild-sequencing-2026-04-21.md).
|
Preserved checked rebuild sequencing detail now lives in [Tier2 rebuild sequencing](rehost-queue/tier2-rebuild-sequencing-2026-04-21.md).
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ useful as evidence, but should not stay in the short active queue file.
|
||||||
for the active periodic-company queue head, including the top ordinary nondirect cluster carrier
|
for the active periodic-company queue head, including the top ordinary nondirect cluster carrier
|
||||||
maps.
|
maps.
|
||||||
- `tier2-candidate-row-families-2026-04-21.md`: checked candidate-table row-family, trailer-family,
|
- `tier2-candidate-row-families-2026-04-21.md`: checked candidate-table row-family, trailer-family,
|
||||||
and crossover carrier-map split for the active Tier-2 `0x00412d70` queue head.
|
header-cluster, and crossover carrier-map split for the active Tier-2 `0x00412d70` queue head.
|
||||||
- `tier2-rebuild-sequencing-2026-04-21.md`: checked late bringup sequencing across
|
- `tier2-rebuild-sequencing-2026-04-21.md`: checked late bringup sequencing across
|
||||||
`0x00435630 / 0x00412d70 / 0x00412fb0 / 0x00412c10` for the active Tier-2 queue head.
|
`0x00435630 / 0x00412d70 / 0x00412fb0 / 0x00412c10` for the active Tier-2 queue head.
|
||||||
- `tier2-selector-byte-sources-2026-04-21.md`: checked stock `BuildingTypes` selector-byte and
|
- `tier2-selector-byte-sources-2026-04-21.md`: checked stock `BuildingTypes` selector-byte and
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ short queue can stay focused on the owner question rather than restating export
|
||||||
## Checked Export
|
## Checked Export
|
||||||
|
|
||||||
- `artifacts/exports/rt3-1.06/candidate-table-named-runs.json`
|
- `artifacts/exports/rt3-1.06/candidate-table-named-runs.json`
|
||||||
|
- `artifacts/exports/rt3-1.06/candidate-table-header-clusters.json`
|
||||||
|
|
||||||
The export now keeps the row-family split explicit instead of burying it only inside per-map
|
The export now keeps the row-family split explicit instead of burying it only inside per-map
|
||||||
samples:
|
samples:
|
||||||
|
|
@ -23,6 +24,10 @@ samples:
|
||||||
- `35/43 :: 0x00000000 -> 5`
|
- `35/43 :: 0x00000000 -> 5`
|
||||||
- `10/18 :: 0x00000000 -> 4`
|
- `10/18 :: 0x00000000 -> 4`
|
||||||
- `10/18 :: 0x00000001 -> 3`
|
- `10/18 :: 0x00000001 -> 3`
|
||||||
|
- `candidate-table-header-clusters.json`
|
||||||
|
- `0x00000000 / 0x00000000 -> 27`
|
||||||
|
- `0xcdcdcdcd / 0xcdcdcdcd -> 9`
|
||||||
|
- `0x10000000 / 0x00009000 -> 1`
|
||||||
|
|
||||||
## Off-Row Carrier Maps
|
## Off-Row Carrier Maps
|
||||||
|
|
||||||
|
|
@ -39,6 +44,17 @@ The earlier `10/18` family is narrow and fully enumerated in the checked export:
|
||||||
Everything else in the current probe-bearing corpus keeps the `35/43` `Port00` / `Warehouse00`
|
Everything else in the current probe-bearing corpus keeps the `35/43` `Port00` / `Warehouse00`
|
||||||
pair while still preserving the fixed numbered runs at `45..55` and `56..66`.
|
pair while still preserving the fixed numbered runs at `45..55` and `56..66`.
|
||||||
|
|
||||||
|
## Header Clusters
|
||||||
|
|
||||||
|
The checked header-cluster export keeps the root scan bounded too:
|
||||||
|
|
||||||
|
- only `3` stable header families exist across the `37` probe-bearing maps
|
||||||
|
- the dominant family is `0x00000000 / 0x00000000` on `27` maps
|
||||||
|
- the secondary family is `0xcdcdcdcd / 0xcdcdcdcd` on `9` maps
|
||||||
|
- `Alternate USA.gmp` is the lone `0x10000000 / 0x00009000` outlier
|
||||||
|
|
||||||
|
So the candidate-table header side is no longer an unbounded per-map surface either.
|
||||||
|
|
||||||
## Crossover Reading
|
## Crossover Reading
|
||||||
|
|
||||||
The new crossover field keeps the row-family and trailer-family interaction explicit too:
|
The new crossover field keeps the row-family and trailer-family interaction explicit too:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue