mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-10-01 23:52:03 -04:00
docs(phase-31): S79 #7 close — cookbook §492 (plumbing was three things: a raw-splice bank, an -O0 checker flag, two R48 same-name phantoms), census 32, report, backlog ledger, checkpoint (task #8 brief); func_80011380 pinned as the §474 proved wall
Stubs 35 -> 32 after the #7 banks (commit:3873 commit:3874); R22 fleet 213/213 (.run/S79_check_all_7.log). ov_SC05_018:func_80180BE0 and ov_SC06_010:func_801809E4 have NO draft: their ledger drafts were other overlays' same-named functions (.run/backlog_drafts/<fn>.c is keyed by bare fn name) -> drafting pool. config/wave_exclude.txt: main:func_80011380 pinned WALL with the §474 proof (fold-const split_tree + stupid.c adjacency), 4 entries.
This commit is contained in:
@@ -1,10 +1,7 @@
|
||||
{"ts": "2026-08-25 23:39:15", "addr": "0x80180b3c", "name": "func_80180B3C", "reach": null, "klass": null, "nins": 297, "status": "near", "closeness": 125, "where_stuck": "resolver DIFF (real-TU rtu_match, 20260825-233820): mine=296 target=297", "best_draft": ".run/wave_eo/shard478/func_80180B3C.c", "binary": "ov_SC02_027", "source": "resolver", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-08-29 17:19:19", "addr": "0x80181804", "name": "func_80181804", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 0, "where_stuck": "match_one MATCH but the whole-binary gate rejected \u2014 CAUSE NOT DETERMINED. FIRST re-derive the destination TU from the asm subdir: asm/<ov>/nonmatchings/<TU_stem>/<fn>.s => src/<ov>/<TU_stem>.c (the third path component IS the TU). Only then look for a decl conflict or a codegen residual.", "best_draft": ".run/backlog_drafts/func_80181804.c", "binary": "ov_SC04_018", "source": "family-remap", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-08-25 23:39:15", "addr": "0x800d06e8", "name": "func_800D06E8", "reach": null, "klass": null, "nins": null, "status": "failed", "closeness": null, "where_stuck": "resolver CC1 (real-TU rtu_match, 20260825-233820): .run/resolver/work/resident__func_800D06E8/c0/rtu/func_800D06E8/t.c:1770: conflicting types for `Struct80078E78'", "best_draft": ".run/wave_ch/shard62/func_800D06E8.c", "binary": "resident", "source": "resolver", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-08-26 02:23:19", "addr": "0x80180b3c", "name": "func_80180B3C", "reach": null, "klass": null, "nins": 21, "status": "near", "closeness": 287, "where_stuck": "resolver DIFF (real-TU rtu_match, 20260826-022235): mine=287 target=21", "best_draft": ".run/wave_eq/shard63/func_80180B3C.c", "binary": "ov_SC07_000", "source": "resolver", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-08-26 05:32:16", "addr": "0x800cb00c", "name": "func_800CB00C", "reach": null, "klass": null, "nins": 123, "status": "near", "closeness": 168, "where_stuck": "resolver DIFF (real-TU rtu_match, 20260826-053145): mine=174 target=123", "best_draft": ".run/wave_g0c/shard30/func_800CB00C.c", "binary": "md_MAIN_034", "source": "resolver", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-08-29 17:19:19", "addr": "0x80181cb8", "name": "func_80181CB8", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 0, "where_stuck": "match_one MATCH but the whole-binary gate rejected \u2014 CAUSE NOT DETERMINED. FIRST re-derive the destination TU from the asm subdir: asm/<ov>/nonmatchings/<TU_stem>/<fn>.s => src/<ov>/<TU_stem>.c (the third path component IS the TU). Only then look for a decl conflict or a codegen residual.", "best_draft": ".run/backlog_drafts/func_80181CB8.c", "binary": "ov_SC04_018", "source": "family-remap", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-09-01 20:34:37", "addr": "0x80062144", "name": "func_80062144", "reach": null, "klass": null, "nins": null, "status": "failed", "closeness": null, "where_stuck": "won't compile standalone (loose-typing / missing decl)", "best_draft": null, "binary": "main", "source": "S70-332b", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-09-03 00:04:37", "addr": "0x80180b3c", "name": "func_80180B3C", "reach": null, "klass": null, "nins": null, "status": "failed", "closeness": null, "where_stuck": "won't compile standalone (loose-typing / missing decl)", "best_draft": ".run/backlog_drafts/func_80180B3C.c", "binary": "ov_SC02_027", "source": "s75-redraft", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-09-03 19:09:54", "addr": "0x800cb17c", "name": "func_800CB17C", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 0, "where_stuck": "match_one MATCH but the whole-binary gate rejected \u2014 CAUSE NOT DETERMINED. FIRST re-derive the destination TU from the asm subdir: asm/<ov>/nonmatchings/<TU_stem>/<fn>.s => src/<ov>/<TU_stem>.c (the third path component IS the TU). Only then look for a decl conflict or a codegen residual.", "best_draft": ".run/backlog_drafts/func_800CB17C.c", "binary": "md_MAIN_020", "source": "worker", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-09-03 19:42:37", "addr": "0x80181e04", "name": "func_80181E04", "reach": null, "klass": null, "nins": null, "status": "failed", "closeness": null, "where_stuck": "won't compile standalone (loose-typing / missing decl)", "best_draft": ".run/backlog_drafts/func_80181E04.c", "binary": "ov_SC01_001", "source": "worker", "residual": null, "passes_tried": null}
|
||||
|
||||
@@ -5,3 +5,4 @@
|
||||
md_MAIN_034:func_800CB00C # WALL: compiler wall (merged from S68_walls_332.txt)
|
||||
ov_SC03_105:func_801834A4 # WALL: loop.c movable ordering, closeness 6 (S71)
|
||||
ov_SC06_022:func_8017DF28 # WALL: expand_block_move copy_addr_to_reg pseudo + cse reuse, closeness 2 (S71)
|
||||
main:func_80011380 # WALL: §474 PROVED C-level floor (closeness 6) — fold-const.c:882 split_tree merges MULT(MULT(i,2),2); the two escapes each cost one instruction (stupid.c:497 adjacency / expand_decl use-brackets); §388 -O0 colouring oracle. Pinned S79 #8.
|
||||
|
||||
+8
-11
@@ -2,17 +2,14 @@
|
||||
|
||||
> Generated by `tools/backlog.py render` from `.run/backlog.jsonl`. These are functions the Phase-21 automation got **close** on but did NOT byte-match. The whole-binary byte-gate is the sole arbiter (G3/P9): **byte-matches bank and are NOT listed here** — only genuine near-misses/blockers are. Ranked by hand-session priority: **reach** (×N propagation leverage) → **closeness** (match_one mismatch count, lower = closer) → **size**. Each row's `best_draft` is the closest C the machine reached — resume from there.
|
||||
|
||||
**Open near-misses:** 10 · by status {'near': 6, 'failed': 4} · by class {None: 10}
|
||||
**Open near-misses:** 7 · by status {'near': 3, 'failed': 4} · by class {None: 7}
|
||||
|
||||
| # | addr | reach | class | nins | status | closeness | where it stuck | best draft |
|
||||
|--:|------|------:|-------|-----:|--------|----------:|----------------|------------|
|
||||
| 1 | func_80181804 | None | | None | near | 0 | match_one MATCH but the whole-binary gate rejected — CAUSE NOT DETERMINED. FIRST re-derive the destination TU from the asm subdir: asm/<ov>/nonmatchings/<TU_stem>/<fn>.s => src/<ov>/<TU_stem>.c (the third path component IS the TU). Only then look for a decl conflict or a codegen residual. | `.run/backlog_drafts/func_80181804.c` |
|
||||
| 2 | func_80181CB8 | None | | None | near | 0 | match_one MATCH but the whole-binary gate rejected — CAUSE NOT DETERMINED. FIRST re-derive the destination TU from the asm subdir: asm/<ov>/nonmatchings/<TU_stem>/<fn>.s => src/<ov>/<TU_stem>.c (the third path component IS the TU). Only then look for a decl conflict or a codegen residual. | `.run/backlog_drafts/func_80181CB8.c` |
|
||||
| 3 | func_800CB17C | None | | None | near | 0 | match_one MATCH but the whole-binary gate rejected — CAUSE NOT DETERMINED. FIRST re-derive the destination TU from the asm subdir: asm/<ov>/nonmatchings/<TU_stem>/<fn>.s => src/<ov>/<TU_stem>.c (the third path component IS the TU). Only then look for a decl conflict or a codegen residual. | `.run/backlog_drafts/func_800CB17C.c` |
|
||||
| 4 | func_80180B3C | None | | 297 | near | 125 | resolver DIFF (real-TU rtu_match, 20260825-233820): mine=296 target=297 | `.run/wave_eo/shard478/func_80180B3C.c` |
|
||||
| 5 | func_800CB00C | None | | 123 | near | 168 | resolver DIFF (real-TU rtu_match, 20260826-053145): mine=174 target=123 | `.run/wave_g0c/shard30/func_800CB00C.c` |
|
||||
| 6 | func_80180B3C | None | | 21 | near | 287 | resolver DIFF (real-TU rtu_match, 20260826-022235): mine=287 target=21 | `.run/wave_eq/shard63/func_80180B3C.c` |
|
||||
| 7 | func_800D06E8 | None | | None | failed | | resolver CC1 (real-TU rtu_match, 20260825-233820): .run/resolver/work/resident__func_800D06E8/c0/rtu/func_800D06E8/t.c:1770: conflicting types for `Struct80078E78' | `.run/wave_ch/shard62/func_800D06E8.c` |
|
||||
| 8 | func_80062144 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | |
|
||||
| 9 | func_80180B3C | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80180B3C.c` |
|
||||
| 10 | func_80181E04 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80181E04.c` |
|
||||
| 1 | func_80180B3C | None | | 297 | near | 125 | resolver DIFF (real-TU rtu_match, 20260825-233820): mine=296 target=297 | `.run/wave_eo/shard478/func_80180B3C.c` |
|
||||
| 2 | func_800CB00C | None | | 123 | near | 168 | resolver DIFF (real-TU rtu_match, 20260826-053145): mine=174 target=123 | `.run/wave_g0c/shard30/func_800CB00C.c` |
|
||||
| 3 | func_80180B3C | None | | 21 | near | 287 | resolver DIFF (real-TU rtu_match, 20260826-022235): mine=287 target=21 | `.run/wave_eq/shard63/func_80180B3C.c` |
|
||||
| 4 | func_800D06E8 | None | | None | failed | | resolver CC1 (real-TU rtu_match, 20260825-233820): .run/resolver/work/resident__func_800D06E8/c0/rtu/func_800D06E8/t.c:1770: conflicting types for `Struct80078E78' | `.run/wave_ch/shard62/func_800D06E8.c` |
|
||||
| 5 | func_80062144 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | |
|
||||
| 6 | func_80180B3C | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80180B3C.c` |
|
||||
| 7 | func_80181E04 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80181E04.c` |
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
> **Generated by `tools/cookbook_index.py` — do not hand-edit** (R33). Regenerate after adding a cookbook section.
|
||||
>
|
||||
> `docs/matching-cookbook.md` is ~716 KB / 1159 sections. Grepping it blind is how three P30 wave-1 agents each "discovered" an idiom that was already written down. **Start here, then read the section.** A section appears under every symptom it addresses.
|
||||
> `docs/matching-cookbook.md` is ~716 KB / 1160 sections. Grepping it blind is how three P30 wave-1 agents each "discovered" an idiom that was already written down. **Start here, then read the section.** A section appears under every symptom it addresses.
|
||||
|
||||
**How to use:** name what you SEE in the diff (a stolen delay slot, an extra `la`, a swapped register pair, a `conflicting types` error), find that symptom below, read those sections first. If nothing fits, THEN grind — and add a section when you win.
|
||||
|
||||
@@ -841,7 +841,7 @@
|
||||
- **§3-D.** — AN OFFLINE JTBL-RODATA PLACEMENT AUDIT (CLAIMED: `md_MAIN_034:func_800CB00C` — did NOT bank, and that is the point) <sub>L35008</sub>
|
||||
- **§491** — ★★ — THE MECHANICAL LEFTOVERS (P31 S79 #6): A PHANTOM STUB, TWO JTBL TWINS, ONE EXACT CLONE — AND THREE TOOL GAPS THE BANKS EXPOSED <sub>L36346</sub>
|
||||
|
||||
### optimisation level (-O0/-O2) (25)
|
||||
### optimisation level (-O0/-O2) (26)
|
||||
|
||||
- **§6** — Per-module optimization mixing — the -O0 boot module (Phase 7) <sub>L265</sub>
|
||||
- **Detecting** — the opt level (do this first) <sub>L273</sub>
|
||||
@@ -868,6 +868,7 @@
|
||||
- **§466** — `main` (509 ins, -O0): ADDRESS CONTEXT EMITS `mult` INDEX-FIRST <sub>L35310</sub>
|
||||
- **§474** — A *PROVED* C-LEVEL FLOOR: `split_tree` + `stupid.c` (-O0), from `main:func_80011380` <sub>L35544</sub>
|
||||
- **§486** — ★★★ — CARVING AN `-O0` ISLAND IN **main**: FIVE COUPLED PIECES, AND THE TWO THAT ANNOUNCE THEMSELVES (P31 S77) <sub>L36105</sub>
|
||||
- **§492** — ★★ — "C-PLUMBING" WAS THREE DIFFERENT THINGS (P31 S79 #7): A RAW SPLICE THE GATE'S LADDER BROKE, TWO -O0 BODIES THE CHECKER COMPILED AT -O2, AND TWO DRAFTS THAT BELONGED TO OTHER OVERLAYS <sub>L36392</sub>
|
||||
|
||||
### family propagation & sweeps (123)
|
||||
|
||||
@@ -995,7 +996,7 @@
|
||||
- **§421** — ★★★ — A `la $tN` + `addiu` PAIR CAN BE A **RELOAD** ARTIFACT THAT NO C SPELLING REACHES (P31 S71; byte-proven `md_SC07_003/func_801A293C`, 313 ins, 6 → 0) <sub>L33729</sub>
|
||||
- **§446** — ★★★ — "RELOC-ONLY REMAP GATED DIFF" IS A CARVE VERDICT, NOT A CODEGEN VERDICT, UNTIL YOU DIFF THE `.text` (P31 S75; 4 siblings + 1 latent, ~1,300 ins) <sub>L34807</sub>
|
||||
|
||||
### integration / TU plumbing (83)
|
||||
### integration / TU plumbing (84)
|
||||
|
||||
- **§8c** — Splitting a TU means rebuilding its DECLARATION ENVIRONMENT, not moving text (Phase 26 session 6) <sub>L456</sub>
|
||||
- **§8d** — Templating a body INTO a TU must not CHANGE its declaration environment — demote the carried data externs (Phase 26 session 8, byte-proven on `func_8015AE2C` ×133) <sub>L502</sub>
|
||||
@@ -1080,8 +1081,9 @@
|
||||
- **§440** — ★★★ — A `.rodata` CARVE PIECE BINDS TO A SUBSEG, NOT TO A FUNCTION: EXTEND THE CARVE INSTEAD OF ISOLATING (P31 S74; 6 banked, resident included) <sub>L34576</sub>
|
||||
- **§442** — ★★★ — A RECOVERY RUNG THAT REWRITES A LEGAL CONSTRUCT INTO AN ILLEGAL ONE READS EXACTLY LIKE A CODEGEN WALL (P31 S75; `reconcile_tu`, 344 ins unblocked) <sub>L34647</sub>
|
||||
- **§477** — ★★★ — THE `self_decl_tu` CLASS IS A SOLVED, MECHANICAL LANE: 16 DRAFTS, 16 BANKS (P31 S77) <sub>L35713</sub>
|
||||
- **§492** — ★★ — "C-PLUMBING" WAS THREE DIFFERENT THINGS (P31 S79 #7): A RAW SPLICE THE GATE'S LADDER BROKE, TWO -O0 BODIES THE CHECKER COMPILED AT -O2, AND TWO DRAFTS THAT BELONGED TO OTHER OVERLAYS <sub>L36392</sub>
|
||||
|
||||
### build graph, splat & the harness (211)
|
||||
### build graph, splat & the harness (212)
|
||||
|
||||
- **§4** — Flag/toolchain gotchas <sub>L190</sub>
|
||||
- **Build** — mechanism — per-file opt override (splat resegmentation) <sub>L307</sub>
|
||||
@@ -1294,6 +1296,7 @@
|
||||
- **§489** — ★★★ — SCATTERED `.bss` IS A PARTITION PROBLEM: SPLIT THE SECTION INTO PER-BASE PIECES AT LINK-PREPARE (P31 S78 #4; closes the §9.1 exclusion class 3/3) <sub>L36242</sub>
|
||||
- **§490** — ★★★ — THE "WALL" BAND WAS A LIBRARY VERSION AWAY: LIBPAD 4.2.1 + LIBAPI 4.2 FOUND, THE WHOLE 0x8005CE18–0x8005FC68 BAND + THE APICARD REGION LINKED FROM REAL OBJECTS (P31 S79 #13/#5) <sub>L36300</sub>
|
||||
- **§491** — ★★ — THE MECHANICAL LEFTOVERS (P31 S79 #6): A PHANTOM STUB, TWO JTBL TWINS, ONE EXACT CLONE — AND THREE TOOL GAPS THE BANKS EXPOSED <sub>L36346</sub>
|
||||
- **§492** — ★★ — "C-PLUMBING" WAS THREE DIFFERENT THINGS (P31 S79 #7): A RAW SPLICE THE GATE'S LADDER BROKE, TWO -O0 BODIES THE CHECKER COMPILED AT -O2, AND TWO DRAFTS THAT BELONGED TO OTHER OVERLAYS <sub>L36392</sub>
|
||||
|
||||
### process, measurement & doctrine (141)
|
||||
|
||||
@@ -2941,6 +2944,7 @@
|
||||
- **§489** — ★★★ — SCATTERED `.bss` IS A PARTITION PROBLEM: SPLIT THE SECTION INTO PER-BASE PIECES AT LINK-PREPARE (P31 S78 #4; closes the §9.1 exclusion class 3/3) <sub>L36242</sub>
|
||||
- **§490** — ★★★ — THE "WALL" BAND WAS A LIBRARY VERSION AWAY: LIBPAD 4.2.1 + LIBAPI 4.2 FOUND, THE WHOLE 0x8005CE18–0x8005FC68 BAND + THE APICARD REGION LINKED FROM REAL OBJECTS (P31 S79 #13/#5) <sub>L36300</sub>
|
||||
- **§491** — ★★ — THE MECHANICAL LEFTOVERS (P31 S79 #6): A PHANTOM STUB, TWO JTBL TWINS, ONE EXACT CLONE — AND THREE TOOL GAPS THE BANKS EXPOSED <sub>L36346</sub>
|
||||
- **§492** — ★★ — "C-PLUMBING" WAS THREE DIFFERENT THINGS (P31 S79 #7): A RAW SPLICE THE GATE'S LADDER BROKE, TWO -O0 BODIES THE CHECKER COMPILED AT -O2, AND TWO DRAFTS THAT BELONGED TO OTHER OVERLAYS <sub>L36392</sub>
|
||||
|
||||
|
||||
---
|
||||
@@ -4112,3 +4116,4 @@ Notes routinely quote that as a section id. This table resolves it. Grep bait: `
|
||||
| L36242 | §489 | ★★★ — SCATTERED `.bss` IS A PARTITION PROBLEM: SPLIT THE SECTION INTO PER-BASE PIECES AT L |
|
||||
| L36300 | §490 | ★★★ — THE "WALL" BAND WAS A LIBRARY VERSION AWAY: LIBPAD 4.2.1 + LIBAPI 4.2 FOUND, THE WHO |
|
||||
| L36346 | §491 | ★★ — THE MECHANICAL LEFTOVERS (P31 S79 #6): A PHANTOM STUB, TWO JTBL TWINS, ONE EXACT CLON |
|
||||
| L36392 | §492 | ★★ — "C-PLUMBING" WAS THREE DIFFERENT THINGS (P31 S79 #7): A RAW SPLICE THE GATE'S LADDER |
|
||||
|
||||
@@ -36389,3 +36389,31 @@ standard tail carve at gate time, no draft exists. `md_MAIN_003:func_800D0100` (
|
||||
`func_80010B40`): `family_remap` raises on `main` as a source (its image reader expects a flat overlay blob) —
|
||||
hand-remap or the C-PLUMBING route (#7).
|
||||
|
||||
#### §492 ★★ — "C-PLUMBING" WAS THREE DIFFERENT THINGS (P31 S79 #7): A RAW SPLICE THE GATE'S LADDER BROKE, TWO -O0 BODIES THE CHECKER COMPILED AT -O2, AND TWO DRAFTS THAT BELONGED TO OTHER OVERLAYS
|
||||
|
||||
**The class as the census named it:** five stubs whose bodies were "proven close=0" and whose TU spelling
|
||||
refused them. The real-TU compile (`rtu_match`, §491's route) sorted them into three unrelated cases:
|
||||
|
||||
**(a) The gate's ladder mutated a correct body.** `md_MAIN_020:func_800CB17C` (30 ins) was `rtu_match`
|
||||
MATCH and `parallel_gate` NEAR (`near: 1, failed: 0`) — the "match_one MATCH but the whole-binary gate
|
||||
rejected — CAUSE NOT DETERMINED" verdict the census had carried. Hand-splicing the raw draft into the TU
|
||||
and running `make build` was byte-identical first try. `gate_stage`'s stages (`canon_resident_calls` →
|
||||
`cast_call_sites` → `sig_unify`) are pure draft rewrites that usually help; here one of them changed the
|
||||
codegen. When rtu_match says MATCH and the gate says NEAR, the raw splice is the bank (or `--skip-stages`).
|
||||
|
||||
**(b) An -O0 island TU.** `md_MAIN_003:func_800D06BC` (33) and `func_800D0100` (29) live in
|
||||
`md_MAIN_003_o0e`, a TU the Makefile's `-O0` wildcard compiles at -O0; their close-0 drafts had simply never
|
||||
been gated (attempts=0). `rtu_match` without `--o0` showed the target's `$fp` frames against an empty
|
||||
"mine" column — the checker's flag, not the draft, was wrong; with `--o0` both MATCH, and the worktree gate
|
||||
banked both (the build already compiled the TU right).
|
||||
|
||||
**(c) Same name, other overlay (R48).** `ov_SC05_018:func_80180BE0` (target 65 ins) and
|
||||
`ov_SC06_010:func_801809E4` (33) had "drafts" of 15 and 220 ins: every on-disk `func_801809E4.c` is
|
||||
ov_SC01_080's function of that name (the `sweep_bb` dirs), and `.run/backlog_drafts/<fn>.c` is keyed by the
|
||||
bare function name, so the census's `drafts`/`closeness` columns and the ledger's `best_draft` pointed at a
|
||||
different function that happens to share the address. Two of five "plumbing" rows were phantoms: those two
|
||||
functions have NO draft and go to the drafting task. Fix to make: key `backlog_drafts` and the journal join
|
||||
by `(binary, fn)` — the same defect class as R48's three collisions.
|
||||
|
||||
Net: 3 banks, 2 reclassified, 0 tokens; stubs 35 → 32.
|
||||
|
||||
|
||||
@@ -4,16 +4,16 @@
|
||||
# cross-binary collapsible-byte leverage: docs/duplicates.cross.md.
|
||||
|
||||
# THREE progress metrics (all matter — see the labels):
|
||||
FLEET fn-count byte-ident: 363122 / 363157 = 99.99% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay)
|
||||
FLEET instr-weighted : 13479710 / 13485889 = 100.0% (shipped .text across main + resident + 211 overlays; the decomp.dev-DISPLAY number)
|
||||
FLEET distinct-code(uniq): 5807817 / 5813996 = 99.9% (90910/90929 unique fns; the DISTINCT-RE number)
|
||||
FLEET fn-count byte-ident: 363125 / 363157 = 99.99% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay)
|
||||
FLEET instr-weighted : 13479802 / 13485889 = 100.0% (shipped .text across main + resident + 211 overlays; the decomp.dev-DISPLAY number)
|
||||
FLEET distinct-code(uniq): 5807909 / 5813996 = 99.9% (90913/90929 unique fns; the DISTINCT-RE number)
|
||||
MAIN game-code weighted : 38748 / 41534 = 93.3% (INCLUDED in the fleet numbers above since 2026-07-22 — roadmap §1 metrics contract; LINKED-excluding Ghidra sig dated 2026-08-05; boundaries INDEPENDENTLY VERIFIED since P31 S77 — `make sig-main-oracle` + `make audit-corpus`: 0 phantom, 0 truncated, 1 explained pad-tail)
|
||||
(fleet EXCLUDING main, for continuity with pre-2026-07-22 readings: 13440962 / 13444355 = 100.0%)
|
||||
(fleet EXCLUDING main, for continuity with pre-2026-07-22 readings: 13441054 / 13444355 = 100.0%)
|
||||
|
||||
FLEET REAL substantive : 360645 (of which dedup-shared 255632 via 2220 groups / 255708 instances)
|
||||
FLEET REAL substantive : 360647 (of which dedup-shared 255632 via 2220 groups / 255708 instances)
|
||||
FLEET LINKED PsyQ objs : 1256
|
||||
FLEET NON_MATCHING : 0 (0 in any default build — G4)
|
||||
FLEET INCLUDE_ASM stubs : 35
|
||||
FLEET INCLUDE_ASM stubs : 32
|
||||
FLEET matchable : 363157
|
||||
|
||||
| binary | REAL | shared | LINKED | byte-ident | matchable | byte-ident % |
|
||||
@@ -21,7 +21,7 @@ FLEET matchable : 363157
|
||||
| main | 773 | 2 | 1256 | 2075 | 2091 | 99.2% |
|
||||
| resident | 141 | 0 | 0 | 143 | 145 | 98.6% |
|
||||
| md_MAIN_001 | 11 | 0 | 0 | 11 | 11 | 100.0% |
|
||||
| md_MAIN_003 | 53 | 0 | 0 | 59 | 64 | 92.2% |
|
||||
| md_MAIN_003 | 55 | 0 | 0 | 61 | 64 | 95.3% |
|
||||
| md_MAIN_008 | 6 | 0 | 0 | 6 | 6 | 100.0% |
|
||||
| md_MAIN_011 | 20 | 0 | 0 | 21 | 21 | 100.0% |
|
||||
| md_MAIN_013 | 16 | 0 | 0 | 16 | 16 | 100.0% |
|
||||
@@ -31,7 +31,7 @@ FLEET matchable : 363157
|
||||
| md_MAIN_017 | 10 | 0 | 0 | 10 | 10 | 100.0% |
|
||||
| md_MAIN_018 | 10 | 0 | 0 | 11 | 11 | 100.0% |
|
||||
| md_MAIN_019 | 22 | 0 | 0 | 22 | 22 | 100.0% |
|
||||
| md_MAIN_020 | 12 | 0 | 0 | 13 | 14 | 92.9% |
|
||||
| md_MAIN_020 | 12 | 0 | 0 | 14 | 14 | 100.0% |
|
||||
| md_MAIN_021 | 10 | 0 | 0 | 11 | 11 | 100.0% |
|
||||
| md_MAIN_022 | 31 | 0 | 0 | 33 | 33 | 100.0% |
|
||||
| md_MAIN_023 | 5 | 1 | 0 | 6 | 6 | 100.0% |
|
||||
|
||||
+33
-17
@@ -139,6 +139,17 @@ Instead of roadmap-v2 P31's per-function grind, Phase 31 organizes the 12,059 re
|
||||
still needs its pad-spec entry; parallel_gate merges leave the main tree's split stale → extract first).
|
||||
tools-health/report regenerated; R22 fleet **213/213** (`.run/S79_check_all_6.log`); twin_rescan: 2 open
|
||||
stubs keep a banked twin (ov_SC02_017 d=2, md_MAIN_003 d=1), nothing newly free.
|
||||
**#7 DONE (S79, 2026-09-04; `commit:3873` `commit:3874` `commit:orphan-26`):** the "C-PLUMBING 5" were three
|
||||
things (cookbook **§492**): (a) `md_MAIN_020:func_800CB17C` — `rtu_match` MATCH, `parallel_gate` NEAR
|
||||
("CAUSE NOT DETERMINED" explained: gate_stage's transform ladder altered a correct body) → banked by a RAW
|
||||
splice (0990e041); (b) `md_MAIN_003:func_800D06BC` + `func_800D0100` — an -O0 island TU; the standalone
|
||||
checker needed `--o0`, the drafts had never been gated (attempts=0) → both banked via parallel_gate
|
||||
(dd1b32ec); (c) `ov_SC05_018:func_80180BE0` (65) and `ov_SC06_010:func_801809E4` (33) — their "drafts" were
|
||||
OTHER overlays' same-named functions (`.run/backlog_drafts/<fn>.c` and the journal join are keyed by bare
|
||||
fn name, R48) → NO draft exists; reclassified to the drafting pool (#9). Stubs 35 → **32** (main 16,
|
||||
md_MAIN_003 3, resident 2, ov 11). R22 fleet **213/213** (`.run/S79_check_all_7.log`); twin_rescan 1 twin
|
||||
left (ov_SC02_017 d=2). `main:func_80011380` pinned WALL (§474 proof) in `config/wave_exclude.txt`.
|
||||
Defect to fix later: key `backlog_drafts`/journal lookups by (binary, fn).
|
||||
- [ ] **Tclose — PhaseEnd** (gate 2). (Max)
|
||||
|
||||
## Standing verification (every task)
|
||||
@@ -8056,13 +8067,14 @@ for free. Three of our own measuring tools were lying (one hid a broken build, o
|
||||
saved names, one under-counted the main program by 32 points); all fixed, and the main program is now
|
||||
honestly 91.8% real C. Next: a small piece of linker surgery so two more Sony objects can be linked.
|
||||
|
||||
## 🛑 SESSION CHECKPOINT — S79 FINAL (2026-09-04). SUPERSEDES every earlier block in this file. Phase 31 T10 CONTINUES — the COMPLETION SPRINT, tasks #7 → #11 remain (#4, #13, #5 and #6 DONE this session).
|
||||
## 🛑 SESSION CHECKPOINT — S79 FINAL (2026-09-04). SUPERSEDES every earlier block in this file. Phase 31 T10 CONTINUES — the COMPLETION SPRINT, tasks #8 → #11 remain (#4, #13, #5, #6 and #7 DONE this session).
|
||||
|
||||
Written for a FRESH SESSION with none of this context. Read it in full before doing anything.
|
||||
**HEAD = the S79 task-#6 docs commit, on top of the #6 bank commits (`commit:3868` `commit:3869` `commit:3870`
|
||||
`commit:3871`), #5 `commit:3867`, #13 `commit:3866`, #4 `commit:3865` (Drew pushes, R6); no `Claude-Session:`/
|
||||
`Co-Authored-By` trailers (R5 + the S78 decision).** Model Fable 5.1; effort **xHigh** default for #7–#10,
|
||||
**Max** for #11 (R27: prompt Drew and WAIT for the actual `/effort` line). No Ultracode / no waves in this sprint. The Ghidra MCP server
|
||||
**HEAD = the S79 task-#7 docs commit (`commit:orphan-26`, amended with this block), on top of the #7 banks
|
||||
(`commit:3873` `commit:3874`), the #6 commits (`commit:3868` `commit:3869` `commit:3870` `commit:3871` `commit:3872`), #5
|
||||
`commit:3867`, #13 `commit:3866`, #4 `commit:3865` (Drew pushes, R6); no `Claude-Session:`/`Co-Authored-By` trailers
|
||||
(R5 + the S78 decision).** Model Fable 5.1; effort **xHigh** default for #8–#10, **Max** for #11 (R27: prompt
|
||||
Drew and WAIT for the actual `/effort` line). No Ultracode / no waves in this sprint. The Ghidra MCP server
|
||||
restarts via the SessionStart hook → Drew runs `/mcp` (R29); no RE task is next, so no G2 ping needed
|
||||
until one is. Ghidra DB churn (`db.*.gbf`, `~index`) is R23 restart-noise: do NOT stage it.
|
||||
|
||||
@@ -8073,6 +8085,8 @@ dir (`.run/obj40` + `.run/obj42`; `.run/S79_build_band_sdk.log`) and WITHOUT the
|
||||
(+ main), check-all **213 passed, 0 failed of 213** (rc=0, 2m32s); `frontier_classify` regenerated after it:
|
||||
**39 rows = 38 stubs + the data word**, main 16. After #6: fleet again **213 / 213** (`.run/S79_check_all_6.log`,
|
||||
2m35s); census **35 rows = 35 stubs** (main 16 · md_MAIN_003 5 · resident 2 · ov_SC03_105 2 · 10 singles).
|
||||
After #7: fleet **213 / 213** (`.run/S79_check_all_7.log`); census **32 stubs** (main 16 · md_MAIN_003 3 ·
|
||||
resident 2 · ov_SC03_105 2 · 9 singles).
|
||||
(The task-#4 state was verified the same way earlier in the session: `.run/S79_check_all.log` 213/213.)
|
||||
|
||||
# 1. THE SESSION IN ONE PARAGRAPH
|
||||
@@ -8100,14 +8114,14 @@ for the plumbing route).
|
||||
|
||||
# 2. THE CENSUS (S79 close; every number with its denominator, R41)
|
||||
|
||||
* **Stubs: 35 of 363,157 matchable (`.run/frontier_s79.json`, `tools/frontier_classify.py` — regenerated after
|
||||
the #6 fleet; #5 removed the 13 band stubs, #6 removed 3 + the data-word row).** Classes:
|
||||
* **Stubs: 32 of 363,157 matchable (`.run/frontier_s79.json`, `tools/frontier_classify.py` — regenerated after
|
||||
the #7 fleet; #5 removed the 13 band stubs, #6 removed 3 + the data-word row, #7 removed 3).** Classes:
|
||||
B-CARVE jtbl 5 (resident `func_800D06E8` 344 [close 292 — really F-FAR] + `func_800D128C` 243 [close-0
|
||||
draft; the carve is refused NON-CONTIGUOUS → subseg split], ov_SC02_017 `func_80186C64` 209 [same refusal;
|
||||
d=2 twin ov_SC02_016], md_MAIN_034 `func_800CB00C` 152 [leading-island table + wrong-sized draft],
|
||||
ov_SC05_010 `func_8017FFA8` 88 [tail carve fine, no draft]) · C-PLUMBING close=0 5 (ov_SC05_018
|
||||
`func_80180BE0` 65, ov_SC06_010 `func_801809E4` 33, md_MAIN_003 `func_800D06BC` 33 + `func_800D0100` 29
|
||||
[d=1 twin of main `func_80010B40`], md_MAIN_020 `func_800CB17C` 30) · D-NEAR ≤25 6 (main
|
||||
ov_SC05_010 `func_8017FFA8` 88 [tail carve fine, no draft]) · "C-PLUMBING" 2 — really NO-DRAFT (ov_SC05_018
|
||||
`func_80180BE0` 65, ov_SC06_010 `func_801809E4` 33: the census's close=0 came from same-named functions in
|
||||
other overlays, R48; drafting pool) · D-NEAR ≤25 6 (main
|
||||
`func_80011380` 192 boot -O0 floor §474, `func_80015760` 106, `func_80015608` 86, `func_80039B20` 79,
|
||||
`func_80038698` 74; ov_SC03_105 `func_801834A4` 106) · F-FAR 9 (main `func_80032A74` 422, `func_80015B6C`
|
||||
120, `func_8002AC98` 114, `func_80020DA4` 100, `func_800391D4` 75, `func_80039DEC` 74, `func_8002FDE8` 73,
|
||||
@@ -8115,11 +8129,12 @@ for the plumbing route).
|
||||
`func_8001EFE0` 468, `func_80023BF0` 281; ov_SC03_105 `func_80185810` 489; md_MAIN_003 `func_800CF3E8`
|
||||
469 + `func_800D1D14` 65 + `func_800D0174` 36; ov_SC07_002 `func_8017DC80` 346; ov_SC01_001 `func_80181E04`
|
||||
269; ov_SC06_022 `func_8017DF28` 119) · H-VIRGIN 1 (md_MAIN_003 `D_800D3200`, a data word → splat fix).
|
||||
Per binary: **main 16 (2,786 ins)** · resident 2 · md 7 · overlays 10 across 8 binaries. The 13 that
|
||||
Per binary: **main 16 (2,786 ins)** · resident 2 · md 4 · overlays 10 across 8 binaries. The 13 that
|
||||
left with #5: PadInfoAct, `_padSetMainMode`, `_padInitSioMode`, `func_8005D734`, `PadInitDirect`,
|
||||
`func_80062144`, `func_8005F290`, `_dirFailAuto`, `_padStartCom`, `func_8005ECC0`, `func_8005F830`,
|
||||
`func_8005ED4C`, `func_8005F450` — all libpad 4.2.1 / libapi 4.2 objects. The 3 + 1 that left with #6:
|
||||
ov_SC04_018 `func_80181804`/`func_80181CB8`, ov_SC05_005 `func_80181828`, and the `D_800D3200` row.
|
||||
ov_SC04_018 `func_80181804`/`func_80181CB8`, ov_SC05_005 `func_80181828`, and the `D_800D3200` row. The 3
|
||||
that left with #7: md_MAIN_020 `func_800CB17C`, md_MAIN_003 `func_800D06BC` + `func_800D0100`.
|
||||
* **Verbatim `__asm__` bodies: 6 in tree** (main 3 + md_MAIN_003 2 + ov_SC03_107 1); manifest
|
||||
`config/verbatim_manifest.json` = **6 rows** after two subtractive `--update`s this session (200 → 33 → 6):
|
||||
crt0 `start`/`__main`/`__do_global_dtors` (CRT, PERMANENT), GAME-ASM `md_MAIN_003:func_800D3204/3234`
|
||||
@@ -8141,7 +8156,7 @@ for the plumbing route).
|
||||
libcd 18/2, libgs 34/8, libetc 5/1, libgpu 3/2, libmcrd 2/2, libc2 17/2, libgte 70/30, snd 63/12,
|
||||
apicard 26/7 (libapi 4.2 + libcard 4.0), libapi42 23/2, libpad421 7/2 — 268 objects / 70 blocks.
|
||||
|
||||
# 3. THE TASK LIST (harness tasks; Drew-confirmed order 2026-09-04) — DONE: #1 #2 #12 #3 #4 #13 #5 #6
|
||||
# 3. THE TASK LIST (harness tasks; Drew-confirmed order 2026-09-04) — DONE: #1 #2 #12 #3 #4 #13 #5 #6 #7
|
||||
|
||||
| # | task | status | effort |
|
||||
|---|---|---|---|
|
||||
@@ -8153,8 +8168,8 @@ for the plumbing route).
|
||||
| 13 | bounded hunt for LIBPAD.LIB 4.2.1 / 4.3 — **FOUND** (RTL 4.2 + the J421PD 4.2.1 patch; 46/46 byte-identical) | DONE S79 `commit:3866` | — |
|
||||
| 5 | the band + the apicard region LINKED from libpad 4.2.1 + libapi 4.2 (`libapi1/2`, `libpad1/2`, `apicard5-7`; 13 stubs, 4 TUs, the reorder island gone) | DONE S79 `commit:orphan-24` | — |
|
||||
| 6 | mechanical: `D_800D3200` + the 2 ov_SC04_018 twins + ov_SC05_005's clone banked; the 5 carves deferred with named blockers (§491) | DONE S79 | — |
|
||||
| **7** | **C-PLUMBING 5 via `recover_route` / `rtu_match` / §376–§378 (bodies proven close=0)** | **NEXT** | **xHigh** |
|
||||
| 8 | D-NEAR non-band 6: permuter/ILS/§31 or §474 wall-proof each | pending | xHigh |
|
||||
| 7 | C-PLUMBING: 3 banked (raw splice; -O0 checker flag), 2 were phantoms (R48 same-name drafts) → drafting pool | DONE S79 | — |
|
||||
| **8** | **D-NEAR 6: permuter ILS on the four permuter-class residuals; §474 wall pinned for `func_80011380`; the S71 pin for ov_SC03_105 stands** | **NEXT** | **xHigh** |
|
||||
| 9 | F-FAR 10 + G-UNKNOWN 12: one journal-noted agent per function | pending | xHigh |
|
||||
| 10 | verbatim end-state + PERMANENT ratification + `main()` | pending | xHigh |
|
||||
| 11 | Tclose PhaseEnd on the corrected denominators | pending | Max |
|
||||
@@ -8303,5 +8318,6 @@ program — twelve functions carried as "compiler walls", plus the controller an
|
||||
now links straight from Sony's library instead of being rewritten by hand. Main's open functions went from 29
|
||||
to 16 and the whole game's from 51 to 38; nothing about the game changed. The mechanical leftovers then
|
||||
went: the mis-typed data word, two twin functions and one exact clone banked for free (38 → 35), and each
|
||||
remaining jump-table case now has a named reason it is not free. Next: the five functions whose bodies are
|
||||
already right and only the file's declarations refuse them.
|
||||
remaining jump-table case now has a named reason it is not free. Of the five functions whose bodies were
|
||||
"already right", three really were and are banked (35 → 32); the other two had no draft at all — the ledger had
|
||||
handed us other overlays' functions of the same name. Next: the six near-misses.
|
||||
|
||||
Reference in New Issue
Block a user