re: the Enumerate declaration tables close DefTables (130 -> 1413 of 1425 IDXD)

The string harvest could never name DefTables because those names are not
spelled out as "something.tbl" anywhere on the disc -- they are declared.

An IDXD object whose single record is named Enumerate is a DECLARATION TABLE:
its field NAMES are the names of other objects, each resolving as
name_hash("<field name>.tbl").  EnumLODSet_test.tbl declares 676,
EnumGameModel_test.tbl 360; the disc holds 144 such objects (138 in DefTables,
one in each GP_MAIN_GAME_*) declaring 1298 distinct names.

Route 2 names +1283 entries route 1 could not.  130 + 1283 + 12 = 1425, no
overlap, 99.2 % coverage.  Zero partials: of 5 suffixes x 6 prefixes, ('', .tbl)
scored 1036/1036 and every other combination scored 0.  Residual in full: 8
declaration tables nothing declares, 2 LOD sets (Model rou_e004 / rou_e013), 2
motion sets; 15 declared names have no pak entry at all.

REFUTED alongside it: the 40 XPR2 manifests are not the naming source -- their
82 Name= values and 82 DataFile/Source paths resolve 0 entries under any of the
5 suffixes.  They share the MODEL namespace only: 40 of the 82 appear as the
Model field value inside the tables.

Artefact +17/-18, every line paired, byte-identical across two runs.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PMRJjbxLqZtsb5Vb7KunPE
This commit is contained in:
Claude (auto)
2026-08-27 19:59:20 +00:00
parent cade6bc1a5
commit 90dba25a71
5 changed files with 173 additions and 19 deletions

View File

@@ -4793,3 +4793,61 @@ manifests name meshes like `machines\rou_e104\objects\…xbg` — whether those
names hash to the LOD/motion table keys is untested). The 337 unnamed IDXD in
each `GP_MAIN_GAME_*` are also uncharacterised — the same census would say what
they are, and was not run this iteration.
---
## ✅✅ 2026-08-27 — the `Enumerate` declaration tables close `DefTables` (99.2 %)
Item taken: "do the XPR2 manifest model names hash to the `DefTables` LOD/motion
tables?" — **refuted**, and the real naming source found next to it.
**Docs checked first:** `archive-naming.md` (mine); `isl-condition-builtins.md`
owns the 40 XPR2 manifests; `stage-definition-table.md` / `stage-mission-tables.md`
own the names `EnumLODSet_test.tbl` / `EnumGameModel_test.tbl` and record that
they live in `DefTables.pak` — but **neither says what is inside them**.
🔴 **REFUTED — the XPR2 manifests are not a naming source.** Their 82 `Name=`
values and 82 `DataFile`/`Source` paths, hashed bare and under
`.tbl`/`.xbg`/`.xpr`/`.prt`/`game:\`, resolve **0** `DefTables` entries. They do
share the *model* namespace: 40 of the 82 appear as the `Model` field VALUE
inside the LOD/motion tables (1 272 distinct `Model` values). ⚠️ The first
attempt regexed `Name="` and found 0 values — the manifests write `Name = "…"`
with spaces; a regex miss looks exactly like a null result.
✅✅ **An IDXD object whose single record is named `Enumerate` is a DECLARATION
TABLE: its FIELD NAMES are the names of other objects**, each resolving as
`name_hash("<field name>.tbl")`. `EnumLODSet_test.tbl` declares 676 names,
`EnumGameModel_test.tbl` 360; the disc holds **144** such objects (138 in
`DefTables`, one in each `GP_MAIN_GAME_*`) declaring **1 298** distinct names.
| | |
|---|---:|
| `DefTables` named by the string harvest (route 1) | 130 |
| **named by the declaration tables (route 2)** | **+1 283** |
| still unnamed | **12** |
| **coverage** | **1 413 / 1 425 IDXD = 99.2 %** |
`130 + 1283 + 12 = 1425`, no overlap between routes. ✅ **Zero partials and the
suffix is exact**: of 5 suffixes × 6 prefixes, `('', '.tbl')` scored 1 036/1 036
on the `_test` declarations and every other combination scored 0.
**Residual, in full:** 8 declaration tables nothing declares (the other 130 are
named by route 1, from the stage tables that reference them), 2
`Generic+Level_0` LOD sets whose `Model` reads `rou_e004`/`rou_e013`, and 2
motion sets. **15 declared names have no pak entry** — content that did not ship.
`archive_naming.py` extended with route 2; artefact **+17/−18**, every line
paired (the DefTables census row 130→1413 and its shape list collapsing 17→3).
Byte-identical across two runs.
🟡 Not settled: **why those 12 are unreachable** — no attempt was made to name
the 8 orphan declaration tables or the 4 stragglers. And the six
`GP_MAIN_GAME_*` `Enumerate` objects named **nothing** there; what they declare
and where it lives was not chased.
❔ Handed forward: with `DefTables` closed, the largest unnamed block is the
identical **337 IDXD in each `GP_MAIN_GAME_*`**, 53 shapes led by `Shell+Weapon`
(90), `Faces+Generic` (64), the unit shape
`Effect+Explosion+Generic+Maneuver+Mass+SE+Shield+StructureCount` (44) and a
chatter table (8) — weapon/unit/chatter families the corpus already documents
under other names. Characterising them is the next item.