re: all 277 base-solver rows classified objectively; 53 are data-table schemas

name_block_bases.py extended with a per-row data-table test; artefact +57/-0,
byte-identical across two runs (now ~2 min 12 s -- it adds a disc-wide pak scan).

The test is objective, not by eye: a row is a data-table schema if its names are
IDXD record/field names on the disc (13450 such names disc-wide).  53 of 277 rows
are >=50 % disc names with >=8 names; the other 224 are engine/XDK vocabulary,
compiled key lists, or noise.

The two axes are independent: against base confidence, solved bases split 34
table / 136 not, round bases 16 / 91.  "Round base" and "not a table" are
different questions.

The 53 contain every loader already known -- that is the control.  Five rows in
the 53 are unowned, each noun grepped and appearing in no docs/re/ file:
sub_823BDAA8 r11 (33) = the S16 boss's muzzle/attach frames (GN_MainGun_*_Muz*);
sub_823BDAA8 r10 (25) = motion names (Motion_stand, Motion_attackA_start), the
EnumMotions family DefTables declares; sub_82315AE8 r11 (20) = the Guardian
record's own fields, i.e. the S16 boss loader; sub_8219E560 r11 (18) = the
leaderboard screen keys; sub_825F2CF0 + sub_825F2F88 r0 (30 each, same base) =
post-processing (FinalPassBG, FogMin/MaxDistance).

Four rows that look new are not, and their disc-overlap says so -- 53-70 % rather
than ~100 %, because they mix arsenal fields the corpus owns (ConditionToDevelop,
WeaponDesc, SilhouetteModel) with literal screen coordinates as strings.

Not settled: none of the five was opened -- this iteration produced the shortlist,
not the findings.

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 23:09:57 +00:00
parent dd6b13c751
commit ced73c5488
4 changed files with 177 additions and 1 deletions

View File

@@ -5339,3 +5339,47 @@ with no mesh, and the one gear mesh carries three gear names.
`CollisionSet` library (its 18 blobs are byte-identical, so a name join was not
attempted); why `Body01` has no mesh; and none of the shader slots was traced to
a shipped shader.
---
## ✅ 2026-08-27 — all 277 base-solver rows classified objectively; 53 are data-table schemas
Item (a). `name_block_bases.py` extended with a per-row data-table test; artefact
**+57/0**, byte-identical across two runs (~2 min 12 s now — it adds a disc-wide
pak scan).
🔑 **The test is objective, not by eye:** a row is a *data-table schema* if its
names are **IDXD record/field names on the disc** (13 450 such names disc-wide).
**53 of 277 rows** are ≥50 % disc names with ≥8 names; the other 224 are engine
/ XDK vocabulary, compiled key lists, or noise.
⚠️ **The two axes are independent.** Against base confidence: `solved` bases
split 34 table / 136 not, `round` bases 16 / 91. So "round base" and "not a
table" are different questions — the earlier round-base warning was about
*where* the base is, this is about *what the names are*.
✅ The 53 contain every loader already known (the control): unit definitions,
stage settings, `PlayerParams`, hangar, `AIParams`, the weapon datasheet, the
`PG*` roster, the three screen key lists.
❔ **Five rows in the 53 are unowned — each noun grepped, appearing in no
`docs/re/` file:**
* `sub_823BDAA8` r11 (33) — `rou_e901` + `GN_MainGun_01_MuzC`, `GN_MainGun_02_Muz01…`:
the **S16 boss's muzzle/attach frames**, sitting beside the collision table.
* `sub_823BDAA8` r10 (25) — `Motion_stand`, `Motion_stand_b1`, `Motion_attackA_start`…:
**motion names**, the `EnumMotions` family that `DefTables` declares.
* `sub_82315AE8` r11 (20) — `InitRotation`, `MaxRotationSpeed`, `RotationAccel`,
`MaxVerticalSpeed`: the **`Guardian` record's own fields** — the S16 boss loader.
* `sub_8219E560` r11 (18) — `Detail_Rank`, `MISSIONS`, `Detail_Board_Permanent`:
the **leaderboard screen** keys.
* `sub_825F2CF0` + `sub_825F2F88` r0 (30 each, same base) — `FinalPassBG`,
`FinalPassToneRatio`, `FogMin/MaxDistance`: **post-processing**.
⚠️ **Four rows that look new are not**, and their disc-overlap says so: 5370 %
rather than ~100 %, because they mix arsenal fields the corpus owns
(`ConditionToDevelop`, `WeaponDesc`, `SilhouetteModel`) with **literal screen
coordinates as strings** (`757,228`, `903,343`, `1092,457`).
🟡 Not settled: none of the five was opened — this iteration produced the
shortlist, not the findings. The 224 non-table rows were not partitioned further
(XDK vs game engine vs noise).