re: AIParams disc-wide, and a correction to my own last entry

CORRECTION FIRST.  Last iteration I recorded sub_8233C368 as unblocking a
NEEDS-HUMAN item -- "the corpus carries the AI tail of Maneuver as
NEEDS-HUMAN/runtime; it is statically reachable after all."  That was wrong.
stage-mission-tables.md already documents AIParams_S02.tbl as exact original
values obtained by static RE, directly portable, listing all 20 field names and
both shapes.  I grepped FiringLength and saw the file but did not read the
section.  Finding the owning doc is not reading it.  The only genuinely new part
was the loader's name.

What is new: the census generalises Stage 02 to the disc.  23 AIParams objects,
identical in all six GP_MAIN_GAME_* paks, sharing ONE declared-name set of 34
profiles; 782 profile records = 23 x 34; 0 declared names without a record in
their own object.  So "34 AI profiles" is not a Stage-02 fact -- every stage
carries the same 34 and only the values move.  The roster is declared by an
Enumerate_AIs record whose field names are the profile names, the same
declaration-table mechanism that closed DefTables.

Type predicts the field count with exactly two exceptions: Fleet -> 6 fields is
253/253 zero partials; Squad -> 20 fields is 483/529.  The 46-record residual in
full: AI_Test and AI_CraftSquadron_Test, both Type = Squad with only the six base
fields, in all 23 objects.  No profile's shape varies between objects.

New regenerator aiparams_census.py, 45-line artefact, 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 21:57:24 +00:00
parent 17b4a791eb
commit 2456d28f1a
6 changed files with 230 additions and 10 deletions

View File

@@ -5125,3 +5125,44 @@ cross-linking the S16 `Guardian` object), `sub_822AFA50`
🟡 Not settled: the index says what each function *names*, not what each *means*
— nothing above was opened. And the 107 low-confidence rows were flagged, not
re-solved with a stricter method.
---
## ✅⚠️ 2026-08-27 — `AIParams` disc-wide, and a correction to my own last entry
Item (a), "open `sub_8233C368`, the AI table". New regenerator
`tools/re-capture/aiparams_census.py` → `docs/re/data/aiparams-census.txt`
(45 lines, byte-identical across two runs).
⚠️ **CORRECTION FIRST.** Last iteration I recorded `sub_8233C368` as unblocking a
NEEDS-HUMAN item — *"the corpus carries the AI tail of `Maneuver` as
NEEDS-HUMAN/runtime; it is statically reachable after all."* **That was wrong.**
`stage-mission-tables.md` already documents `AIParams_S02.tbl` as ✅ *"exact
original values obtained by static RE… usable in the port directly"*, listing all
20 field names and both shapes. I grepped `FiringLength` and saw the file, but
did not read the section. **Finding the owning doc is not reading it** — the same
lesson this corpus has paid for before. The only genuinely new part was the
**loader's name**.
✅ **What is new: the census generalises Stage 02 to the disc.** 23 `AIParams`
objects, identical in all six `GP_MAIN_GAME_*` paks, sharing **one** declared-name
set of **34** profiles; **782** profile records = 23 × 34; **0** declared names
without a record in their own object. So "34 AI profiles" is not a Stage-02 fact —
**every stage carries the same 34 and only the values move.**
🔑 The roster is declared by an **`Enumerate_AIs` record whose field names are the
profile names** — the same declaration-table mechanism that closed `DefTables`.
⚠️ **`Type` predicts the field count, with exactly two exceptions.**
`Fleet` → 6 fields is **253/253, zero partials**; `Squad` → 20 fields is
**483/529**. The 46-record residual, in full: **`AI_Test` and
`AI_CraftSquadron_Test`**, both `Type = Squad` with only the six base fields, in
all 23 objects (2 × 23 = 46) — the family's `_Test` templates again. **No
profile's shape varies between objects (0).**
✅ **The loader**: `sub_8233C368`, `r28`, base `0x8208583C`, 20 names — exactly
the field set above and nothing else.
🟡 Not settled: which of the 23 objects belongs to which stage (only
`AIParams_S02.tbl` is named by the corpus; the disc-wide harvest was not re-run
against the other 22), and what consumes an `AIID` at runtime.