Commit Graph

2334 Commits

Author SHA1 Message Date
Drew T b398a9d908 docs(phase-31): narrow main's link defect — retarget delta == sizeof(.text 800c2.o) == 0x2A0
- call site is libmcrd1/func_80060D9C.s +0xD8, referencing the callee BY NAME (jal func_80061FA8)
- our build resolves that name 0x2A0 later, which is EXACTLY the .text size of build/src/800c2.o,
  the object starting at 0x80061FA8 -> the name binds to the END of the object (the next
  section's first symbol, firstfile in psyq/apicard/A66.o) instead of its start
- 3 ordered hypotheses recorded (duplicate func_80061FA8/.NON_MATCHING pair; object dropped or
  reordered when src/800.o gains an undefined ref; an absolute symbol shadowing the object's)
- everything to test it is in the map + the 4 preserved main drafts
2026-08-15 02:33:02 -06:00
Drew T cb30f26799 fix(phase-31): recover 3 falsely-withheld wave-G drafts (3/3 banked); symfix flags are ADVISORY
- I withheld 3 drafts on symfix STALE/AMBIGUOUS flags; all 3 already used the CORRECT PsyQ
  names (RotMatrixY, RotTransSV). What symfix called 'draft-only symbols' were LOCAL
  identifiers: a typedef, two inline-asm macro names, two local struct typedefs.
- gated unchanged -> 3/3 banked. wave G closes 35/36.
- two symfix defects behind it: (a) local typedef/macro names counted as symbol references;
  (b) draft-symbol extraction misses some extern forms, so a name the draft DOES declare
  still reports as asm-only.
- OPERATING RULE: symfix is advisory, the whole-binary gate is the arbiter. Never withhold a
  standalone-MATCH draft on a symfix flag alone (R39 applied to my own judgement).
2026-08-15 02:10:46 -06:00
Drew T 3d58d596fd feat(phase-31): worker gate — +3 fns x0 propagated (fleet 95.4%) 2026-08-15 02:10:09 -06:00
Drew T efd0dd4ee1 feat(phase-31): wave G — 36/36 drafted, 32 banked, fleet 95.4%; §174 law 1b (PsyQ symbol names)
- wave G: 36 atlas mass cards on ov_SC03_006 -> 36/36 standalone (100%, independently
  re-verified), 32 banked of 33 gated, ONE gate group. R22 213/213. stubs -> 11,788.
- two TU-packed waves now confirm the shape: ~1 rebuild per wave instead of 23.
- law 1b added to the wave prompt: agents reconstruct CODE at 91-100% but INVENT PsyQ symbol
  names (S80131E00->Square0, Blk20_...->RotMatrixY, SRM_...->RotTransSV). Dangerous because
  match_one MASKS relocations -> a wrong callee name still reports MATCH; only the
  whole-binary gate + symbol audit catch it, after a wasted rebuild.
- 3 wave-G drafts held by that audit (would previously have crashed it pre-commit:2330).
2026-08-15 01:54:31 -06:00
Drew T fc01c01bb1 feat(phase-31): worker gate — +32 fns x0 propagated (fleet 95.4%) 2026-08-15 01:49:32 -06:00
Drew T e64a803609 fix(phase-31): aprop_symfix survives curated (non-hex) symbol names
- deltas[int(new[-8:],16) - int(old[-8:],16)] assumed every symbol is func_XXXXXXXX/D_XXXXXXXX.
  A draft whose target calls a PsyQ symbol by name (Square0, RotMatrixY) raised
  ValueError and aborted the WHOLE audit — in wave F one such callee took down a 55-draft
  batch, and the rename itself (re.subn) had already succeeded.
- a curated pair is a plain 1:1 rename with no address delta: count it as 'named-1:1' and
  carry on (R32 — one unparseable pair must never answer for the batch). Delta print made
  mixed-key safe.
- verified on the literal incident values: old aborts on 'Square0'; new completes, counting
  2 named renames + still bucketing the hex pair by its 0x484c delta
2026-08-15 01:32:34 -06:00
Drew T a024049279 feat(phase-31): worker gate — +6 fns x0 propagated (fleet 95.3%) 2026-08-15 01:25:06 -06:00
Drew T ab649794ca feat(phase-31): wave F — 50 banked from ONE gate group; the TU-packed mass lane is the campaign shape
- wave F: 60 atlas 'mass' cards (fresh crack, NO seed body) -> 55/60 standalone pre-repair
  (59/60 post-repair), 50 BANKED of 53 gated, in a SINGLE gate group. R22 213/213.
- the throughput thesis is confirmed: wave D banked 45 across 23 whole-binary rebuilds;
  wave F banked 50 across 1. gate cost scales with (binary,TU) groups, not drafts.
- the fresh-crack lane converts like the seeded lanes (~91%) => the atlas's ~7k draftable
  candidates are all reachable, not just those resembling a prior match.
- grinder: 0 banked across 8 seeds / 11 ILS cycles (band exhausted); re-exposed the Phase-22
  split-file blindness (no .s under md_MAIN_027).
- KNOWN DEFECT logged: aprop_symfix crashes on non-hex symbols (int('Square0',16)) — one
  PsyQ-named callee aborts the whole audit; needs 1:1-rename handling + per-pair isolation.
- stubs 11,876 -> 11,826
2026-08-15 01:23:33 -06:00
Drew T 32ce39bb12 feat(phase-31): propagate func_801898C8 (gate lane) 2026-08-15 01:18:03 -06:00
Drew T 39ca4b70a3 feat(phase-31): worker gate — +50 fns x0 propagated (fleet 95.3%) 2026-08-15 01:15:39 -06:00
Drew T 1a23d90b31 chore(phase-31): R22 213/213 after wave D; wave F launched (first TU-packed wave, 60 drafts/1 gate group) 2026-08-15 00:35:03 -06:00
Drew T dde7a35ca3 feat(phase-31): wave D banked 45/48 + main link-blocker diagnosed; selector packs by gate group
- wave D (48 adapt cards): 47/48 standalone, 45 BANKED across two gates (40 + 5 late-repair).
  Operational lesson: build the gate slate AFTER the repair stage lands — the first slate was
  built early and 5 rescued drafts needed a second gate.
- wave C (35: 11 tell + 24 weak): 32 banked, 91% gate. Weak lane proven 24/24 on haiku.
- MAIN BLOCKER DIAGNOSED (the night's most valuable finding): main drafts are byte-correct yet
  gate 0/4. Byte-diff of the built EXE = exactly 2 bytes in 413,696, NOT in the drafted fn: a
  jal at 0x80060E74 retargets func_80061FA8 (game code, 800c2.o) -> firstfile (PsyQ libapi
  A66.o). Adding one C fn perturbs symbol resolution between game code and the LINKED PsyQ
  archives. main is an INTEGRATION wall, not a matching wall -> its own lane; excluded from
  build_wave_atlas by default.
- build_wave_atlas.py now packs by (binary, TU) — the REAL gate-group key, since each group is
  one whole-binary rebuild (wave D: 42 drafts / 23 groups = the throughput ceiling).
- 3 NEARs enqueued as grinder fuel incl. func_80183578 at close=1 DELAY-SLOT (§60a precedent).
2026-08-15 00:32:03 -06:00
Drew T 587a98cb32 feat(phase-31): propagate func_801815DC (gate lane) 2026-08-15 00:30:11 -06:00
Drew T 54f7575330 feat(phase-31): propagate func_8017FA58 (gate lane) 2026-08-15 00:30:01 -06:00
Drew T cdf35c80db feat(phase-31): worker gate — +1 fns x0 propagated (fleet 95.3%) 2026-08-15 00:29:46 -06:00
Drew T b833d8b50b feat(phase-31): worker gate — +2 fns x0 propagated (fleet 95.3%) 2026-08-15 00:28:54 -06:00
Drew T 315e317d34 feat(phase-31): worker gate — +1 fns x0 propagated (fleet 95.3%) 2026-08-15 00:28:03 -06:00
Drew T 14fe335537 feat(phase-31): worker gate — +1 fns x0 propagated (fleet 95.3%) 2026-08-15 00:27:09 -06:00
Drew T 5266f80310 feat(phase-31): propagate func_8017DAC4 (gate lane) 2026-08-15 00:24:48 -06:00
Drew T 1db86c257c feat(phase-31): propagate func_8018C3F0 (gate lane) 2026-08-15 00:24:23 -06:00
Drew T 00e79e7764 feat(phase-31): propagate func_8018C1E0 (gate lane) 2026-08-15 00:24:13 -06:00
Drew T e438963a00 feat(phase-31): propagate func_8018B614 (gate lane) 2026-08-15 00:24:03 -06:00
Drew T d7c3f880ce feat(phase-31): propagate func_8018B660 (gate lane) 2026-08-15 00:23:53 -06:00
Drew T 26e1017081 feat(phase-31): propagate func_8018BDA4 (gate lane) 2026-08-15 00:23:44 -06:00
Drew T ea60d4bf2a feat(phase-31): propagate func_801803BC (gate lane) 2026-08-15 00:23:18 -06:00
Drew T da135fb006 feat(phase-31): propagate func_80181648 (gate lane) 2026-08-15 00:23:08 -06:00
Drew T 78e9a90dd6 feat(phase-31): propagate func_80183604 (gate lane) 2026-08-15 00:22:15 -06:00
Drew T 44e6df94f3 feat(phase-31): propagate func_8017FD28 (gate lane) 2026-08-15 00:22:05 -06:00
Drew T b6daf72510 feat(phase-31): propagate func_8017FD88 (gate lane) 2026-08-15 00:21:56 -06:00
Drew T 62b488d706 feat(phase-31): propagate func_8017FAAC (gate lane) 2026-08-15 00:21:46 -06:00
Drew T aeabe3d485 feat(phase-31): propagate func_8017F174 (gate lane) 2026-08-15 00:21:37 -06:00
Drew T 3887005068 feat(phase-31): propagate func_8017DBDC (gate lane) 2026-08-15 00:21:27 -06:00
Drew T 75b01f0133 feat(phase-31): propagate func_8017EBC8 (gate lane) 2026-08-15 00:20:47 -06:00
Drew T 0d3bed88aa feat(phase-31): propagate func_80182630 (gate lane) 2026-08-15 00:19:24 -06:00
Drew T 1f997192c3 feat(phase-31): propagate func_80189898 (gate lane) 2026-08-15 00:19:15 -06:00
Drew T 2fa5515136 feat(phase-31): propagate func_8017BFEC (gate lane) 2026-08-15 00:19:06 -06:00
Drew T 575efd6ef3 feat(phase-31): worker gate — +1 fns x0 propagated (fleet 95.3%) 2026-08-15 00:18:55 -06:00
Drew T cf11220807 feat(phase-31): worker gate — +2 fns x0 propagated (fleet 95.3%) 2026-08-15 00:17:56 -06:00
Drew T b9bd116696 feat(phase-31): worker gate — +1 fns x0 propagated (fleet 95.3%) 2026-08-15 00:16:57 -06:00
Drew T 92f6cdd8ae feat(phase-31): worker gate — +1 fns x0 propagated (fleet 95.3%) 2026-08-15 00:16:04 -06:00
Drew T 2ff02e5210 feat(phase-31): worker gate — +1 fns x0 propagated (fleet 95.3%) 2026-08-15 00:15:11 -06:00
Drew T 3f567d5578 feat(phase-31): worker gate — +1 fns x0 propagated (fleet 95.3%) 2026-08-15 00:14:12 -06:00
Drew T 041ebf31c8 feat(phase-31): worker gate — +5 fns x0 propagated (fleet 95.3%) 2026-08-15 00:13:18 -06:00
Drew T 27a879835e feat(phase-31): worker gate — +12 fns x0 propagated (fleet 95.3%) 2026-08-15 00:12:28 -06:00
Drew T 97c1ddf0d3 feat(phase-31): worker gate — +1 fns x0 propagated (fleet 95.3%) 2026-08-15 00:11:19 -06:00
Drew T baa488ad94 feat(phase-31): worker gate — +1 fns x0 propagated (fleet 95.3%) 2026-08-15 00:09:20 -06:00
Drew T 0fa386c14d feat(phase-31): worker gate — +1 fns x0 propagated (fleet 95.3%) 2026-08-15 00:08:27 -06:00
Drew T da3129f6f7 feat(phase-31): worker gate — +1 fns x0 propagated (fleet 95.3%) 2026-08-15 00:07:34 -06:00
Drew T 4bc9a0980a feat(phase-31): worker gate — +1 fns x0 propagated (fleet 95.3%) 2026-08-15 00:06:40 -06:00
Drew T b74ab90a96 feat(phase-31): worker gate — +1 fns x0 propagated (fleet 95.3%) 2026-08-15 00:05:44 -06:00