re: every AIParams object mapped to its stage, zero residual

StageResource.EnumerateAIParams names the table, and every name resolves.

29 StageResource records; 28 carry EnumerateAIParams (the one without it is the
_Test template); 23 distinct table names declared; 23/23 hash to an AIParams
object key under the prefix "stage\"; 0 objects left unnamed; 0 declared names
with no object.

AIParams_S01..S16 (16) + AIParams_S24..S29 (6) + AIParams_Tutorial.tbl shared by
six (UnitGroup_S18..S23, the tutorials) = 23 tables over 16 + 6 + 6 = 28 records.
The arithmetic closes both ways and matches the 23-object count found last
iteration.

Same sharing shape as the settings family (stage-settings-table.md: 24 objects,
StageParameter_Tutorial shared by six tutorials).  Two independent families agree
on how the tutorials are handled -- n=2, a pattern rather than a rule.

aiparams_census.py extended with the stage mapping; artefact +7/-0, byte-identical
across two runs; the other fourteen verify unchanged.

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 22:12:58 +00:00
parent 2456d28f1a
commit 9e2524d028
4 changed files with 102 additions and 0 deletions

View File

@@ -152,6 +152,28 @@ profiles and only the values move.** 🔑 The roster is declared the same way
`DefTables` names its tables: an **`Enumerate_AIs` record whose field names are
the profile names** (see [[archive-naming]] route 2).
### ✅ Which object is which stage — all 23 named, zero residual
`StageResource.EnumerateAIParams` names the table, and the names resolve:
| | |
|---|---:|
| `StageResource` records | 29 |
| carrying `EnumerateAIParams` | **28** (the one without it is the `_Test` template) |
| distinct table names declared | **23** |
| names that hash to an `AIParams` object key | **23 / 23** |
| objects left unnamed | **0** |
| declared names with no object | **0** |
The names are `AIParams_S01…S16` (16), `AIParams_S24…S29` (6) and
**`AIParams_Tutorial.tbl`, shared by six records** — `UnitGroup_S18…S23`, the six
tutorials. `16 + 6 + 1 = 23` tables over `16 + 6 + 6 = 28` records; the arithmetic
closes both ways.
🔑 That is the **same sharing shape as the settings family**
([[stage-settings-table]]: 24 objects, `StageParameter_Tutorial` shared by six).
The prefix is `stage\``name_hash` is case-insensitive, so its case is free.
### ⚠️ `Type` predicts the field count — with exactly two exceptions
| | |