Commit Graph

  • e5f59c12f4 phase-36: T3 close — the campaign tool proven end to end on ov_SC04_011 (batches t3_tus1 + t3_tus2, R22 218/218 each): the zero-register use composed into its host edit (the one refused body redrawn via --redraw), a removed site consumes its trailing !FAKE marker, the census counts ORPHAN markers (--check fails on them; the walk cache keyed on the tool's hash — it had hidden them) and delever --scrub removes them (2 scrubbed here, object identical, R22 218/218 wall 143 s); the cycle's greps fixed (no ^ anchor, an empty verify line refuses, THE PHASE'S NUMBER line, entries before the checkpoint block); the number 53,033 sites / 15,638 bodies (2,246 distinct) · 310 marked · 0 orphans; SETUP + dictionary rows; kit corpus; the t3_tus1 entry rewritten from the logs (R66); the 🛑 block rewritten for T4 Drew T 2026-09-09 03:14:30 -06:00
  • 7ee458dd7f src(phase-36): T3 batch t3_tus2 — delever: batch t3_tus2 — 1 files (TUs; 1 drawable) · 2 bodies: 0 lever-free, 1 residue, 1 refused · sites removed 2 / needed 2 / refused 1 / deferred 0 · replays 0 (0 disagreed) · compiles 6 in 3 s wall · final 1/1 identical · written 1 files | R22 check-all: 218 passed, 0 failed of 218 | census: THE PHASE'S NUMBER (pins + asm statements, GTE excluded): 53,033 sites in 15,638 bodies (2,246 distinct) · marked !FAKE 310 · UNMARKED 52,723 (delever_cycle) Drew T 2026-09-09 02:56:55 -06:00
  • cd24727ddb src(phase-36): T3 batch t3_tus1 — | R22 check-all: 218 passed, 0 failed of 218 | census: lever_census: 218 binaries · 4,121 TUs + 3,181 headers · coverage OK · unclassified 0 · verbatim excluded 13 fn / 14 sites (manifest 13) (delever_cycle) Drew T 2026-09-09 02:50:39 -06:00
  • 39e3e1851f phase-36: T3 (tools) — tools/delever.py the campaign tool: --plan/--apply (the file is the write unit, its final compile through every recipe the proof; 'done' = a ledger fact keyed by the body's normalized text before/after; replay from an exemplar in one compile; !FAKE markers on class A/B survivors; --restore from inflight.json; --apply-body for T6/T7; a selftest with a stub oracle), the launder-ASSIGNMENT rewrite (989 of 4,793 direct launders — deleting them made cc1 2.7.2 abort: the probe's 'Done' error, reproduced 3/3), macro shapes (SHB deleted, a launder expression valued, compound macros refused for T5), the oracle's COMPILE-CRASH verdict + judge_all + the mtime restore, the census's src_stamp/head, tools/delever_cycle.sh (apply → R22 → census → log + headline → commit); selftest OK; census 53,234 unchanged; calibration 177/177; plan ov_SC04_011 = 18 files / 176 bodies / 540 sites; SETUP + dictionary rows; kit corpus; T7 waves need Drew's direct approval (decisions) Drew T 2026-09-09 02:45:58 -06:00
  • 89676f096a phase-36: S97 close checkpoint — the 🛑 headline names T0–T2 as committed (T2 617f29e30), the open T1b split for Drew, S98's §0; Ghidra MCP stopped (R23) Drew T 2026-09-09 02:11:27 -06:00
  • 772052dff2 phase-36: checkpoint for T3 — the 🛑 block's §0–§2 rewritten (T0–T2 done at 617f29e30; the number 53,234 sites / 15,679 bodies / 2,227 distinct; the probe's pricing; T3's build order and the paid-for gotchas) Drew T 2026-09-09 02:03:52 -06:00
  • 617f29e30c phase-36: T2 — the oracle and the probe: tools/delever_oracle.py (4,284 recipes via make -n -W; a candidate compiled in place to a scratch object and compared with the fleet run's; calibrated 177/177 untouched + twin 32/32 + positive control DIFFERS) and tools/delever.py (positional rewrites per lever class, rung A strip-all + rung B greedy, headers serial after the TU phase); --probe on 283 distinct bodies: A identical 53/283, sites removed 561/1,309 (42.9 %), needed 748 (launder 77 %, barrier 82 %, pins 45 % — v0/v1 + a0–a3 dominant), 0.225 s per compile — T4 priced at ~94k compiles ≈ 0.5 h, the residue ≈ 81 % of bodies ≈ 1,800 distinct exemplars; dictionary + SETUP rows; kit corpus; the 🛑 block for T3 Drew T 2026-09-09 02:03:04 -06:00
  • a1407bdfc1 phase-36: T1b — the verbatim manifest learns the in-function form (49 rows: 27 PERMANENT hand asm incl. 22 per-overlay scratchpad stack-switch trampolines, 8 Sony GsTMDfast* routines carried as asm, 11 DECOMPILE-NOW + 3 UNCERTAIN game bodies never decompiled); verbatim_check detects the form structurally via lever_census.whole_body_asm_functions (--strict: 2,709 bodies, no drift); the census defers exclusion to the manifest's dispositions — the phase's number 53,234 sites in 15,679 bodies (2,227 distinct); progress.py counts PERMANENT (27) + SDK (8) with a dated correction; README/wiki/verification/gen3 docs corrected (14 game functions were asm in C shells); kit corpus Drew T 2026-09-09 01:44:31 -06:00
  • 357f8a1ed3 phase-36: T1 — tools/lever_census.py, the self-asserting lever census (coverage asm 80,396 = 66,415 live + 7,189 macro-block + 6,792 comment/dead; 4/4 controls; the five manifest bodies excluded): 53,221 pin/asm sites in 15,666 bodies (2,214 distinct) — 37,720 register pins + 15,501 asm statements, 0 marked; 6,911 GTE ops and 23 whole-body asm routines in C shells (2,683 sites, outside the manifest — Drew's call) set apart; progress.py levers block + README sentence; dictionary + SETUP rows; kit corpus; the 🛑 block for T2 Drew T 2026-09-09 00:52:22 -06:00
  • 63b8866261 phase-36: T0 — baseline (R22 clean fleet 218/218 in 88 s), the P36 evidence allowlist, CURRENT_PHASE.md from the approved plan (levers off: pins + asm statements + volatile + register, GTE consolidated, grind to zero; R100–R106 ratified at gate 1) Drew T 2026-09-09 00:21:44 -06:00
  • e6d98dd1d4 chore(phase-35): CLOSE — Gen3's dedup phase: one source per unique function (3,175 shared headers, 3,173 registry groups incl. the h_text tier, the macro header gone, the five twins from one directory, S1 a tools-health gate with a second oracle, 14 macro-era tools frozen and 4 retired behind a guard, the published counts corrected) — v2.1.0 Drew T 2026-09-08 23:19:40 -06:00
  • c1a901373f phase-35: checkpoint at the 90 % context guard — T0–T8 (+T5b) closed; the 🛑 block rewritten for T9, the close (Tier 1, Max, fresh session): gates, the metrics table with its commands, the milestone items, the reviewer sequence, the PhaseEnd/DIGEST/log steps, seven rule candidates, gotchas Drew T 2026-09-08 22:53:19 -06:00
  • ce837b1e46 docs(phase-35): T8 — the record: The-dedup-engine.md rewritten for the shared-source model (the shape, the h_exact/h_text/h_norm tiers, share_body and its four first-day defects, the S1 gate and the second oracle, the numbers as a dated derivation); Repository-layout, Where-the-project-goes-next, Verification-and-progress, how-to ch.10, README prose, gen3-standards (§4 row struck, DoD item met), gen3-handoff (dated snapshots); cookbook §453 + a retirement banner on §14, the index regenerated; decision-log P35 (R31), accelerators P35, DIGEST §4; doc_links strict 0 broken, wiki 32/32, kit coverage OK, kit corpus Drew T 2026-09-08 22:52:09 -06:00
  • e7b0cfb626 docs(phase-35): T5b verify — tools-health OK with the text tier in every rung (S1 10,180/10,180, dedup-check 3173/0, the guard 0); the timeline regenerated Drew T 2026-09-08 22:47:26 -06:00
  • ac8c29edb1 src(phase-35): T5b — the text tier: 38 same-address functions whose bytes vary per binary (the TU's declaration environment carries the original per-overlay variance) share one text each through h_text registry groups with per-member h_exact — 1,957 private copies in 1,540 TUs replaced by the include, 38 headers (func_<VRAM>__t<hash8>.h), 138/138 binaries green per binary, 0 rejected; dedup_integrate C1 per member (3173 validated, 0 failed); share_census indexes h_text groups by site, exports text classes, the S1 text half is a violation (0 now), the census json carries the oracle's counts; share_body --bucket text; progress.py/README: 103,015 bodies written once, 38 text-tier functions / 2,030 sites, 1,668 copies of 381 tiny bodies deferred; R22 clean fleet 218/218 in 90 s; SETUP; kit corpus Drew T 2026-09-08 22:39:42 -06:00
  • a2d6f036a9 phase-35: the second oracle's finding decided (Max, delegated) — T5b: a text tier (h_text groups with per-member h_exact) for the 38 same-address texts whose bytes vary per overlay through the TU's declaration environment (2,030 sites); the 380 same-address texts inside the deferred cross-address classes stay deferred for the names phase's parameterized form; T5b inserted before T8 Drew T 2026-09-08 22:01:09 -06:00
  • c8224e657f tools(phase-35): T7 — the S1 invariant wired into tools-health (share_census --selftest + --check --strict-macros --strict-text, by exit code), C2c/C2d in dedup_integrate --check (one source under src/shared/ defining one function; every member's site includes it — from the census's per-instance forms), progress.py: unique_function_bodies 105,007 / duplicate_source_copies 160 in 51 ledgered classes + the dated corrections list + the README sentence; the second oracle refined (distinct TUs; deferred vs pending vs violation): 380 texts deferred inside cross-address classes, 38 same-address texts / 2,030 sites byte-variant per binary (PENDING the owner), 0 violations; negative control in place: one reverted include -> S1 FAIL naming the class + C2d naming the member; tools-health OK (551 s) Drew T 2026-09-08 21:46:05 -06:00
  • 79eb66fa07 phase-35: checkpoint refreshed at the T6 close — state (HEAD, dedup numbers, tools) and the resume sequence T7 → T9 Drew T 2026-09-08 21:17:00 -06:00
  • 93b4706c96 docs(phase-35): T6 CLOSE — tools-health OK with the macro-form guard (0 LIVE tools reference the retired form; 14 frozen, 38 retired); the timeline regenerated against the committed digest (74 rows); the wiki's dedup page repointed from the retired dedup_propagate to share_body (T8 rewrites it); the cycle driver's dictionary row without rule ids (the kit's leak check); the three red chain runs and their causes in the phase log Drew T 2026-09-08 21:16:02 -06:00
  • db63fcc673 tools(phase-35): T6 part 2 — the dead macro branches dropped from 12 live tools; the macro-form guard in tool_census --check (ast scan of every LIVE tool, FROZEN/retired/6 whitelisted detectors excluded; 0 LIVE tools reference the retired form; --guard-root negative control: the pre-T4 tree flags exactly the 12 fixed + 3 retired); progress.py: an empty-bodied included member is EMPTY, not folded into REAL (the R32 bucket assertion caught the double count) — the fleet denominator 363,221 -> 363,680 (+459: SC03_015's 219 single-site macros, SC03_118 +3, the never-extended members of five groups) and REAL 360,744 -> 350,533 with EMPTY up the same; progress.json + README block + fleet table regenerated; SETUP; kit corpus Drew T 2026-09-08 20:53:05 -06:00
  • 5a9f455e60 tools(phase-35): T6 part 1 — 14 macro-era tools FROZEN (tools/frozen.py: one refusal from main(), imports never exit; the plan's 7 + 7 the guard census found, family_remap's CLI among them), 4 retired to tools/sunset/ (dedup_propagate + dedup_extend -> share_body.py with add_members_surgical and the load_sig library moved verbatim; macro_draft; test_reconcile_ledger), six lane callers repointed to share_body --apply --bucket new, validate_targets imports share_body, tool_census accepts FROZEN; dictionary + sunset README rows; kit corpus Drew T 2026-09-08 20:32:21 -06:00
  • cd43347791 config(phase-35): T5 CLOSE — the registry behind the source repaired (639 including-but-unlisted members added to 5 groups, the 5 verbose groups converted to shorthand; add_members_surgical refuses a verbose group, R43); S1: 10,180 classes, 10,180 satisfied, 0 violations (share_census --check exit 0); same-vram backlog 1,099 -> 51 classes = the ledger (50 TU-CONFLICT + 1 GATE-REJECT); dedup-check 3135/0; audit-binaries OK; registry 2,220 -> 3,135 groups; the tail run (bucket new empty); cycle logs; SETUP (the context guard); kit corpus Drew T 2026-09-08 20:24:28 -06:00
  • 4ba4b20805 build(phase-35): T5 — R22 after bucket new batch 8: clean fleet check-all: 218 passed, 0 failed of 218 (wall=88.98 s) Drew T 2026-09-08 20:06:54 -06:00
  • f803ada170 src(phase-35): T5 bucket new batch 8 — registered 75 groups, 150 sites in 30 TUs replaced by the include, gated 4/4 binaries green per binary, rejected classes 0 ledgered (share_body_cycle) Drew T 2026-09-08 20:05:25 -06:00
  • b4c7e5830c src(phase-35): T5 bucket new batch 7 — registered 120 groups, 240 sites in 63 TUs replaced by the include, gated 34/34 binaries green per binary, rejected classes 0 ledgered (share_body_cycle) Drew T 2026-09-08 20:04:57 -06:00
  • e771e29bf1 build(phase-35): T5 — R22 after bucket new batch 6: clean fleet check-all: 218 passed, 0 failed of 218 (wall=84.30 s) Drew T 2026-09-08 20:04:24 -06:00
  • 2dbdaa28c4 src(phase-35): T5 bucket new batch 6 — registered 119 groups, 240 sites in 40 TUs replaced by the include, gated 14/14 binaries green per binary, rejected classes 1 ledgered (share_body_cycle) Drew T 2026-09-08 20:03:00 -06:00
  • ef1dd7eb33 src(phase-35): T5 bucket new batch 5 — registered 120 groups, 329 sites in 75 TUs replaced by the include, gated 15/15 binaries green per binary, rejected classes 1 ledgered (share_body_cycle) Drew T 2026-09-08 20:02:08 -06:00
  • 92c81ab7ad build(phase-35): T5 — R22 after bucket new batch 4: clean fleet check-all: 218 passed, 0 failed of 218 (wall=221.86 s) Drew T 2026-09-08 20:00:48 -06:00
  • 9f0cb82ff9 src(phase-35): T5 bucket new batch 4 — registered 120 groups, 360 sites in 69 TUs replaced by the include, gated 15/15 binaries green per binary, rejected classes 0 ledgered (share_body_cycle) Drew T 2026-09-08 19:57:06 -06:00
  • 3c14ee490a src(phase-35): T5 bucket new batch 3 — registered 120 groups, 358 sites in 59 TUs replaced by the include, gated 12/12 binaries green per binary, rejected classes 0 ledgered (share_body_cycle) Drew T 2026-09-08 19:55:15 -06:00
  • e4b25e5f70 tools(phase-35): T5 — share_body_cycle.sh, the unattended batch cycle for bucket new (batch → exit code + gated N/N → phase-log entry → commit → clean fleet run every N batches, stops on the first red); share_body --label; dictionary row + SETUP; kit corpus Drew T 2026-09-08 19:53:09 -06:00
  • a9353b4122 src(phase-35): T5 bucket new batch 2 — registered 120 groups, 360 sites in 69 TUs replaced by the include, gated 9/9 binaries green per binary, rejected classes 0 ledgered Drew T 2026-09-08 19:48:06 -06:00
  • 9aaa08391e src(phase-35): T5 bucket new batch 1 — 120 same-address classes given one source (120 headers under src/shared/ov/, 1,482 private copies in 535 TUs replaced by the include, 120 registry groups appended), 165/165 binaries green per binary; 1 class rejected (a body relying on a file-scope extern outside its definition), ledgered Drew T 2026-09-08 19:46:25 -06:00
  • 29951c4fe1 build(phase-35): T5 — R22 after bucket 0: clean fleet check-all 218 passed, 0 failed of 218 in 84 s (fleet CPU 2,230 s -> 1,335 s); the re-exemplar batch record Drew T 2026-09-08 19:43:52 -06:00
  • a60340c6d4 src(phase-35): T5 — E_func_80168B70 re-exemplared from the majority text (share_body.py --reexemplar: header ← ov_SC01_000's copy, 7/7 includers green first, then 134 private copies → the include in 129 TUs, 141/141 binaries green, 0 rejected; the minority-header ledger row dropped); bucket 0 closed: 183 classes → 135 fully shared, 48 ledgered TU-CONFLICT (late-overlay declaration conflicts, for the types phase); SETUP paragraph (--batches, snapshot restore, the cause rule, --repair-registry, --reexemplar); kit corpus Drew T 2026-09-08 19:41:40 -06:00
  • 1b49048c02 phase-35: T5 step 5 decided (Max, delegated) — E_func_80168B70's header is re-exemplared from the majority text (the cast-at-call form compiles under both declaration environments); the 48 late-overlay declaration conflicts stay ledgered TU-CONFLICT for the types phase; the mis-stated TU-repair option corrected; the checkpoint headline refreshed Drew T 2026-09-08 19:33:54 -06:00
  • 5325fd506b src(phase-35): T5 bucket 0 run 3 — 78 private copies in 24 TUs replaced by the shared include, 87 members extended (141/141 binaries green per binary); share_body: a twin's instance queued the same (tu, line) edit twice and the second replacement swallowed the next function (7 classes rejected in the five twin primaries on that artifact; now deduped), chained file:line: warning lines never a cause; the ledger re-judged by the fixed tool: 49 rows with real diagnostics (conflicting types / too few arguments in the late overlays), E_func_80168B70 kept with its cause pending the exemplar decision; kit corpus Drew T 2026-09-08 19:31:19 -06:00
  • 090f8fb428 config(phase-35): T5 — the registry repaired: 378 listed-but-private members removed from 79 groups (share_body.py --repair-registry, derived from the census on (binary, vram); the 317 ledgered rejected pairs + 61 sites the S94 bisects wiped); dedup-check 2221/0, C1 256,120/256,120; census A 1,812 · B 183, same-vram backlog 1,099 -> 999 classes; the first cut's name-only match (9,269 removed, 14 groups emptied) caught by dedup-check + a known-true control and reverted before commit Drew T 2026-09-08 19:20:48 -06:00
  • f4163518a2 tools(phase-35): T5 — share_body.py: the failure cause is the first non-warning file:line diagnostic (gcc 2.7.2 errors carry no 'error' token — 254 of 303 rejections had read 'Error 33'), reason codes SYMBOL-NAME / GATE-REJECT / PARSE-ERROR / TU-CONFLICT derived from it and recorded with the cause in every ledger note, the bisect restores from an in-memory pre-edit snapshot (never git checkout — it wiped the previous batch's uncommitted shares), one batch per invocation by default; controls on the real red cc1.err + six synthetic logs; ledger header + kit corpus Drew T 2026-09-08 19:14:45 -06:00
  • aacbd71eb9 src(phase-35): T5 bucket 0 (second run, finished after S94 died — banked by S96) — 170 private copies in 8 overlays replaced by the shared include (ov_SC07_006 49, ov_SC07_007 29, ov_SC07_011 29, ov_SC07_010 28, ov_SC01_077 19, ov_SC02_037 6, ov_MAIN_012 5, ov_SC03_107 5); 141/141 binaries green per binary (make check + object A/B); 55 classes rejected in 325 (class, binary) pairs, ledgered TU-CONFLICT in config/dedup_exceptions.tsv; run_extend2.log + the batch records; phase log + checkpoint headline Drew T 2026-09-08 19:11:16 -06:00
  • 1259eaa83c phase-35: S95 — three rule candidates recorded for the PhaseEnd (a bank commit carries its log line + the 🛑 headline; a tool restores from its own snapshot, never git checkout; a cause extractor is negative-controlled against the compiler's real message forms) Drew T 2026-09-08 19:08:15 -06:00
  • ecffc38950 phase-35: S95 recovery checkpoint — T5's state reconstructed from the S94 transcript (the tool + probe commit, bucket 0's first pass and the second run that finished after the session died), the dirty tree inventoried as run 2's bank (170 shares in 8 overlays, uncommitted), three share_body defects named (gcc-2.7.2 error lines unmatched → 'Error 33', the git-checkout bisect wiping the previous batch's shares, one ledger reason for four causes), the registry-ahead-of-source count (317 of 325 rejected pairs still listed), the E_func_80168B70 cause (too many arguments to func_80146C3C), the T6 hit list; the 🛑 block rewritten with the resume sequence Drew T 2026-09-08 19:07:38 -06:00
  • 571374b979 src(phase-35): T5 bucket 0 (first pass) — 788 members extended into their registry groups, private copies replaced by the include where the per-binary gate held (141/141 and 146/146 binaries green after bisect); share_body: the bisect now re-applies the kept classes in one bottom-up pass per TU (its per-class sequential re-application had shifted later classes' lines and rejected 125 of 183 classes on its own artifacts), the failure detail from error lines only, rejected extend classes ledgered, groups extended only with members that passed Drew T 2026-09-08 18:30:29 -06:00
  • 0bccef9016 tools(phase-35): T5 — share_body.py, the permanent share tool for the include-at-site form (exemplar by majority text, header written once, private copies → include at their position, per-binary gate with object comparison and bisect, registry appended by text, exception ledger); the R37 probe: func_801681FC shared by ov_SC04_008 + ov_SC05_009 (2/2 binaries green, group S_func_801681FC); the census exports per-instance line ranges; bind_alias_header factored out of macro_to_header; SETUP + dictionary rows; kit corpus Drew T 2026-09-08 18:12:41 -06:00
  • a8457663fc src(phase-35): T4 finalize — engine_core.h, ov_setters.h and clearTbl40.h deleted; the legacy sites converted (clearTbl40 as the SHARED_FN parameterized control in src/800_c.c; the three SC01_005 accessors as headers), the whale header moved under ov/ with every -O0 includer rewritten, 7 alias-form bodies given their own __asm__ binding, the registry's source/func lines text-edited by id, three non-shared headers rewritten; --verify OK (0 macro sites, no macro header); R22 clean fleet check-all: 218 passed, 0 failed of 218 in 145 s; dedup-check 2220/0; audit-binaries OK; the census 362,389/362,389 with 0 macro sites; SETUP + dictionary rows; kit corpus Drew T 2026-09-08 18:06:04 -06:00
  • c53a9e1a91 src(phase-35): T4 — every DEFINE_func_X() macro body becomes a plain-C header under src/shared/<space>/ included at its site (sotn's shape): 2,215 headers (ov/ 2,204, three module slots 12; 86 with the stable h_exact suffix), 246,347 sites in 3,818 TUs, the engine_prelude.h include in place of engine_core.h, 1,300 dead macros dropped; L0/L1: 213 binaries BYTE-IDENTICAL, 4,121/4,121 objects byte-identical before and after (tools/macro_to_header.py --apply, .run/P35/convert/ledger.txt); engine_core.h and the legacy headers still present until --finalize Drew T 2026-09-08 17:51:39 -06:00
  • 0e38b51a37 build(phase-35): T3 close — the five twin pairs collapsed onto one source directory each (10 aliases, 166 files deleted); R22 clean fleet run check-all: 218 passed, 0 failed of 218 (309 s); the census after the twins: same-vram backlog 4,667 -> 1,099 classes, 3,580 classes twin-covered, S1 9,081/10,180 satisfied; rules check (P6) done; kit corpus for pads_audit Drew T 2026-09-08 17:33:42 -06:00
  • 6ebb3dac33 build(phase-35): T3 — ov_SC03_015 TWIN_OF ov_SC03_014 with the primary's carve: yaml, JTBL_INTERLEAVE and the per-object JTBL_PADS lines regenerated from ov_SC03_014 by alias substitution (the twin's retired jump-table splits with them), create_c_files: False, src/ov_SC03_015/ deleted; twin + primary BYTE-IDENTICAL; interleave_check ALIGNED + pads_audit on the twin (R60; pads_audit now reads a twin's source through the oracle); dedup-check 0 failed; audit-binaries OK Drew T 2026-09-08 17:24:42 -06:00
  • 2648aa5a92 build(phase-35): T3 — ov_SC04_019 TWIN_OF ov_SC04_018 with the primary's carve: yaml, JTBL_INTERLEAVE and the per-object JTBL_PADS lines regenerated from ov_SC04_018 by alias substitution (the twin's retired jump-table splits with them), create_c_files: False, src/ov_SC04_019/ deleted; twin + primary BYTE-IDENTICAL; interleave_check ALIGNED + pads_audit on the twin (R60; pads_audit now reads a twin's source through the oracle); dedup-check 0 failed; audit-binaries OK Drew T 2026-09-08 17:21:44 -06:00
  • e79cfcc06d build(phase-35): T3 — ov_SC03_119 TWIN_OF ov_SC03_118 and ov_SC02_003 TWIN_OF ov_SC02_000 (equal carves): the twins' source dirs deleted, create_c_files: False, both twins and both primaries BYTE-IDENTICAL, audit-binaries OK, dedup-check per twin 0 failed Drew T 2026-09-08 17:15:01 -06:00
  • 9b0816e74a build(phase-35): T3 probe — ov_SC01_006 is a TWIN of ov_SC01_005: one source directory per payload. Makefile twin rules (build/src/<twin>/<twin>%.o <- src/<primary>/<primary>%.c, same recipe, -O0 objects kept), overlays.mk TWIN_OF + SRC_DIR, the twin's yaml create_c_files: False, src/ov_SC01_006/ (30 files) deleted; twin + primary BYTE-IDENTICAL (56760dbe), the concurrent race test green, every consumer sees the twin through the oracle; share_census: copies = distinct sites, TWIN-COVERED reported (575 classes for the pair) Drew T 2026-09-08 17:10:00 -06:00
  • 24e8ff72d6 tools(phase-35): T2 close — the kit's verbatim copies of the 16 edited tools regenerated (make kit-corpus; tool_census --check OK), the chain's remaining rungs green by exit code; the regenerated timeline (33 commits today); the phase log: T2 ☑, NEXT = T3 Drew T 2026-09-08 17:01:21 -06:00
  • 4ec752e683 docs(phase-35): T2 — the generated timeline regenerated from the committed digest (363,221) Drew T 2026-09-08 16:46:59 -06:00
  • 6cb056c932 tools(phase-35): T2 — the health chain learns the include-at-site and twin forms while the macro form still builds: one source-dir oracle (corpus.src_dirs/src_dir/twin_of from the Makefile), share_census.header_defs as the one reader of the include form, progress.classify counts include sites (fold keeps 255,632), overlay_src_split's include item kind + loud macro-table refusal, dedup_integrate C2a' (a header must DEFINE func), audit_binaries prelude + twin citizenship (CHECK 3b), cdecl differential not-applicable when the macro header is gone, recursive shared-header globs; the count correction 363,214 -> 363,221 (7 whale include sites never registered; ov_MAIN_012 2,401 -> 2,402) regenerated into progress.json + README Drew T 2026-09-08 16:46:55 -06:00
  • 8bb1d876d6 docs(phase-35): T1 — the generated tool index for share_census.py; the T1 slip named in the phase log Drew T 2026-09-08 16:26:31 -06:00
  • 72a77e7d3c tools(phase-35): T1 fix — the census's dictionary row is kit-ladder P10, not the project phase; kit corpus regenerated; tool_census --check OK. The previous commit claimed the corpus regenerated while kit-corpus had exited 2 and the census had refused the row — its chain read an echo's status, not the check's (R97); this one chains on the checks' own exit codes Drew T 2026-09-08 16:26:00 -06:00
  • 1dbffee87d tools(phase-35): T1 — share_census.py, the fleet census of byte-identical function classes + the S1 'one source per unique function' checker with its exception ledger; 362,389/362,389 sig instances covered, 10,180 classes (A 1,712 · B 282 · C 6,107 · D 1,861 · M 218), self-test 7/7, four controls as measured; SETUP + dictionary rows, kit corpus regenerated Drew T 2026-09-08 16:24:08 -06:00
  • f811833394 chore(phase-35): OPEN — Gen3's dedup phase at gate 1 (R96–R99 ratified; the plan verbatim in CURRENT_PHASE.md); the R22 baseline 218/218 from clean in 157 s; tools-health OK after the kit corpus regen + the R96–R99 coverage rows; the ov_SC06_033 include-form probe: 34/34 objects byte-identical, build 1.12 s → 0.52 s, the 137 macro-redefinition warnings gone Drew T 2026-09-08 16:03:00 -06:00
  • 48170fd7fa chore(phase-34): CLOSE — Gen2 EXIT: the repository public, protect-main, decomp.dev + the wiki live, the decomp.me preset requested at 100%, the outreach sent, the aftercare done (v2.0.0) Drew T 2026-09-08 14:28:32 -06:00
  • 577da268ea docs(phase-34): the fleet digest as regenerated by the close tools-health (the build-derived main sig's date); the gate-2 live re-check record Drew T 2026-09-08 14:18:42 -06:00
  • bf5a9a401a docs(phase-34): task 8 part 2 — the close tools-health OK on run 5 (5,917 lines); the doc_links and kit_coverage findings on the way, DK-81, the false-green commit named Drew T 2026-09-08 14:18:01 -06:00
  • 9f2aa46b52 kit(phase-34): coverage map — KIT: paths are relative to decomp-architect/ (three rows fixed); kit_coverage is green HERE (0 uncovered rules, 0 uncovered accelerators) — the previous commit's message claimed green while three rows were refused (a masked exit code) Drew T 2026-09-08 14:09:10 -06:00
  • 81ec819451 kit(phase-34): DK-81 (the flip day's lessons) + coverage-map dispositions for R84–R95 — kit_coverage green; the kernel range now DK-1…DK-81 Drew T 2026-09-08 14:08:20 -06:00
  • a13d1cd9a7 docs(phase-34): two wiki citations of untracked paths (the outreach draft, the archive folder) rewritten as prose — doc_links --strict green again Drew T 2026-09-08 13:56:34 -06:00
  • cd768d717a tools(phase-34): cdecl --audit — create its scratch dir and refuse (never misgrade) when the gcc adjudication cannot run; the prune had removed .run/audit and every unparsed draft line read as a DEFECT Drew T 2026-09-08 13:46:38 -06:00
  • 4f35be0191 docs(phase-34): task 7 closed — the wiki re-synced (be8a6cc) on Drew's word; task 8 opened Drew T 2026-09-08 13:42:46 -06:00
  • a1d47bb002 docs(phase-34): task 7 part 2 — C11: ~9 GB of untracked campaign scratch pruned (46G→37G), public_rewrite kept to the probe inputs; DIGEST §0/§1/§4, decision-log P34 S93, accelerators, SETUP posture, direction page; README shows the generated timeline Drew T 2026-09-08 13:39:26 -06:00
  • 1ff6b5395b docs(phase-34): task 7 part 1 — docs/sunset/ leaves the tree (Drew: the Archive index is the record; history v1.32.1 keeps the files), tools/sunset/ stays for the index; wiki/doc sentences rewritten; checks green Drew T 2026-09-08 13:30:01 -06:00
  • fe45f7f016 docs(phase-34): task 6 addendum — Drew's #ai reply posted; docs/outreach/ untracked and ignored on his decision (sent notes stay local); doc_links DEFAULT, Reference-index row, SETUP rows updated; corpus regenerated Drew T 2026-09-08 13:23:18 -06:00
  • 19c676f474 docs(phase-34): outreach — the decomp.me #ai channel reply drafted from the record (Drew's words to edit) Drew T 2026-09-08 13:05:16 -06:00
  • 95c9c0d122 docs(phase-34): task 6 closed — the tools post in the decomp.me Discord; Decompedia rows for xsig (PlayStation tools) and BFM-decomp (PlayStation projects), verified Drew T 2026-09-08 13:02:49 -06:00
  • 6ce1a38c61 docs(phase-34): tools announcement — add the xsig v2 direction (1:1 first, then wider tiers with context) to the post draft Drew T 2026-09-08 12:54:55 -06:00
  • b018bb8cec docs(phase-34): task 6 addendum — xsig v2 (the whole knowledge base behind one search: 1-to-1, then the best expansion path with context) recorded in gen3-handoff §7 as a parked Gen3 idea Drew T 2026-09-08 12:48:23 -06:00
  • b3d72df3a5 docs(phase-34): task 6 (Claude's half) — xsig topics + homepage set and verified; the permuter fork confirmed gone; the tools post awaits Drew Drew T 2026-09-08 12:39:31 -06:00
  • 279f440c04 docs(phase-34): task 5 — the wiki is live: 32 pages synced to BFM-decomp.wiki (75c17d0) on Drew's one-off R6 waiver; pages verified unauthenticated, 0 dead links Drew T 2026-09-08 12:38:55 -06:00
  • a601c74cb9 docs(phase-34): task 4 — D3: decomp.dev registered and verified (decomp.dev/Druthulu/BFM-decomp, 100.00%/100.00%, hero image); frogress skipped this phase, pending by name Drew T 2026-09-08 12:34:54 -06:00
  • 559122ed17 docs(phase-34): task 3 — E2 sent: the Archipelago note as AegeusEvander/Brave-Fencer-Musashi-AP-World#1; reply handling recorded as pending Drew T 2026-09-08 12:11:25 -06:00
  • 9e8a055e6c docs(phase-34): task 2 — E1 done: scratch mIu4d at 100%, preset request decompme/decomp.me#2106, manual search closes ledger row 14; preset creation pending Drew T 2026-09-08 12:07:15 -06:00
  • c9a3d7b891 tools+docs(phase-34): task 2 part 1 — the decomp.me paste form: verbatim_target_s.py --gas (assemblable target), decompme_replica.sh steps D (the paste through decomp.me's as, 26/26) + E (the bundle), doc §5 step 2, SETUP rows, dictionary, kit corpus regenerated Drew T 2026-09-08 11:54:22 -06:00
  • f12e103e51 docs(phase-34): task 1 addendum — Actions green on the public repo (no-rom 34257901983, progress 34257901996 on df055e36c); task 1 closed Drew T 2026-09-08 11:37:23 -06:00
  • df055e36c0 docs(phase-34): task 1 — C10 the flip: public, after-flip probe PASS 33/33, archive private, wiki enabled + description/topics/homepage, ruleset protect-main (22564862); Actions check pending the push Drew T 2026-09-08 11:30:37 -06:00
  • 710ef6ffd9 docs(phase-34): task 0 — the pre-flip probe: PASS, 33/33 sampled old hashes gone, control OK (.run/P34/probe/pre_flip.log) Drew T 2026-09-08 10:43:35 -06:00
  • c9dffdcfd8 docs(phase-34): task 0a — open the phase: CURRENT_PHASE.md (the gate-1 plan verbatim + the 🛑 block), R84–R95 ratified into DIGEST §3 (+ §0), the .run/P34 evidence allowlist, the 10-row harness task list Drew T 2026-09-08 10:42:18 -06:00
  • eb342dc9fe chore(phase-33.5): CLOSE — the wiki as source of truth, 59 docs + 34 tools sunset, tracked .run flip-ready, the memory reconciled, the day-one decomp kit with three dictionaries / DK-1–80 / G1–67 / a coverage check / five dry-runs (v1.32.1) Drew T 2026-09-08 09:36:10 -06:00
  • 845fd8848b kit+docs(phase-33.5): task 15 prep — the health chain into the record corpus (14.5 addendum), the regenerated timeline, the task-15 log + the closed checkpoint Drew T 2026-09-08 00:09:39 -06:00
  • 9044c35b65 docs(phase-33.5): task 14.5 close — log entry (the record 56 files / 358 copies; kit_coverage 83 rules + 59 entries, 0 uncovered; the mining pass 777/634/143 → DK-69–DK-80; dry-run 5 PASS 20/20; the two instrument findings) + checkpoint (NEXT = task 15, Max, Tier 1) Drew T 2026-09-07 23:54:29 -06:00
  • 8594081d86 kit+docs(phase-33.5): task 14.5 part 3a — dry-run 5 of the final kit (fresh throwaway, fresh Opus agent): PASS, 0 failed verify lines; the run-5 rows Drew T 2026-09-07 23:53:11 -06:00
  • 8a698e1b79 kit+docs(phase-33.5): task 14.5 part 2 — the phase-log mining pass banked: DK-69–DK-80 from 143 worklog lessons; the S92 accelerators + decision-log entries Drew T 2026-09-07 23:24:14 -06:00
  • 0c29c9e16b tools+kit(phase-33.5): task 14.5 part 1 — the record as the third dictionary + kit_coverage (every rule and every accelerator entry cited or dispositioned) Drew T 2026-09-07 23:03:34 -06:00
  • ecd1c2f51c docs(phase-33.5): plan amendment 3 (Drew, S92) — task 14.5: the record as the third dictionary (how-to, decision log, accelerators, retrospective, story, playbook, effort map, gen3 docs, DIGEST, every PhaseEnd — verbatim, asserted equal), tools/kit_coverage.py (every R-rule and every accelerator entry cited by a kit provenance line or dispositioned in config/kit_coverage_map.tsv), and the phase-log mining pass (22 read-only agent slices over the 26 logs, only lessons banked nowhere, verified against the cited lines); the measured answer to Drew's question recorded (57 of 83 rules cited, 40 of 53 accelerator entries, 0 PhaseEnds/logs) Drew T 2026-09-07 22:51:20 -06:00
  • 9937fd7e39 docs+kit(phase-33.5): task 14 — the S91-b types hindsight implemented in the kit + the wiki page Start-a-new-decomp-project.md + the rows Drew T 2026-09-07 22:40:17 -06:00
  • 3c4e185feb docs(phase-33.5): decision-log 'P33.5 S91-b' — hindsight on types (Drew's question): Phase 17 measured struct context byte-neutral (0/10/2) so types are not a codegen lever, but banking was the bottleneck and 1,232 drafter-invented definitions + the width/signedness near-miss class say types are a BANKING and WIDTH lever — the achievable early form is a canonical type file from the first bank (one definition per shape, widths proven at bank time, no duplicate definition or raw cast banked); task 14 amended to implement items (a)–(e) in the kit (DK-65, the Phase-6 milestone, G62 extended, the type tools' need-keys, the cookbook front page, the methodology); checkpoint updated Drew T 2026-09-07 22:19:25 -06:00
  • 827295e241 tools+docs(phase-33.5): task 13.5 — the tools audit + the two dictionaries: tools/tool_census.py (two agreeing enumerations of 327 tool files; docstring/SETUP row/consumers/class derived from the tree; the authored half in config/tool_dictionary.tsv — phase · portability · the NEED each tool answers · what · adapts · verdict — with coverage asserted both ways) → docs/tool-index.md (need-keyed, KEEP-GEN, Reference-index row, wiki + how-to pointers), the kit's tools/MANIFEST.md regenerated (header states live 293 + superseded 28 = 321 rows), and the two verbatim corpora in-tree (Drew, confirmed S91): decomp-architect/corpus/tools/<phase>/ (302 copies + 28 superseded pointers + INDEX) and corpus/cookbook/ (the cookbook, its symptom index, the codegen map, a front page stating what transfers per compiler) — sha1-equal to their sources by tool_census --check in tools-health, regenerated by make kit-corpus; kit_lint exempts the corpus dirs (verbatim evidence) but syntax-checks them; G66 (consult the tool dictionary first) + G67 (translate an inherited idiom through its pass) + two memory seeds (34 at install); SETUP Step 6 installs docs/knowledge-corpus.md and checks the manifest against its own stated total; the ops-setup dictionary rows; the intake's Phase 7 cites G66/G67 and Phase 10 + Part C name the raw-cast → declared-symbol step; templates/layout-contract.md (the five-tool probe, a draft for the split). The review under Drew's criterion: 93 no-consumer tools (one Opus agent's draft, verified: 0 defects, every successor live, 0 live consumers, 0 collisions; four one-off verdicts overturned to STILL-NEEDED) → 34 retired by git mv to tools/sunset/ (28 superseded, 6 one-offs; README review table; SETUP rows moved; Archive-index group). Run 4 (fresh throwaway, the final kit): stopped on my Step-6 check (321 vs the live 293) → both sides derived → resumed → PASS 10/10, manifest 56 == 56, 4 commits, guardrails held (the one foreign path was the timeline regenerated by the detached tools-health). tools-health OK; doc_links --strict rc 0; audit_public OK over 6,842 paths; the purge probe PASSED (Phase 34's gate open). decision-log "P33.5 S91" + accelerators "P33.5 S91" banked; log + checkpoint (NEXT = task 14, xHigh, fresh session) Drew T 2026-09-07 22:09:15 -06:00
  • 3307775e5b docs(phase-33.5): plan amendment 2 (Drew, 2026-09-07) — task 13.5 gains the dictionaries, in-tree now: the tool index rows as need-keyed dictionary entries, tool_census --corpus materialising the toolset and the knowledge base verbatim into decomp-architect/corpus/{tools,cookbook}/ with equality asserted in tools-health, kit_lint exempting the corpus dirs by directory, two memory seeds + two rules (consult the tool dictionary first; translate the source idiom through the pass), the five-tool layout-contract probe; the checkpoint's open decision marked confirmed Drew T 2026-09-07 21:00:35 -06:00
  • a291c2b479 tools+docs(phase-33.5): task 13 — the kit's dry-run install under D6's guardrails: three runs in a throwaway repo (PA 2.0 + the kit, one Opus subagent per run, every answer from answers.md, writes only inside the throwaway), judged independently by judge.py (manifest set, placeholder audit, 14 check-ignore probes, G == 65, seeds == 32, trailer-free commits, the audit, PhaseEnd/log state, BEFORE/AFTER guardrails incl. the real tree's dirty paths). Run 1 FAILED at kit Step 3.7: ProjectArchitect's directory-form .run/ ignore defeats every re-include beneath it and the kit forbade the edit → SETUP Step 3.0 (the one named edit above a marker) + Step 0.4 + Step 10.1 scoped past both packages with a plain grep + a troubleshooting row. Run 2 (resumed from Step 3, the fixed kit) PASSED 10/10 and found two more → Step 10.2 in-memory compile (py_compile always writes bytecode), the "never paste a literal double-brace" rule (SETUP + docs-README), Step 10.6's digest synopsis, README "Findings for ProjectArchitect" (three upstream items); the judge's own two false FAILs fixed (scope; dirty PATHS not count). Run 3 (fresh throwaway, fresh agent, the final kit) PASSED 10/10 with 0 defects; its 57-line manifest vs my 46 exposed a spec gap → Step 10.5 tightened to an exact derivable rule; regenerated 53 == 53; judge PASS 20/20; every guardrail value unchanged. Evidence tracked under .run/P33.5/kit-dryrun/ (answers, expected manifest, before/after ×2, install logs, manifests ×3, verdicts ×2, judge.py; the gitignore block re-includes *.py); audit_public OK over the 14 fixture files; log + checkpoint (NEXT = task 13.5, xHigh; the dictionary amendment recorded as awaiting Drew's go) Drew T 2026-09-07 20:54:03 -06:00
  • 4c1d5d9f7c docs(phase-33.5): task 12 — kit part 3: decomp-architect/SETUP.md (Step 0 contract with the write-scope guardrails; Step 1 the PA-2.0 pin, the ladder-in-constitution check, the §E precondition, Path A only, the Phase-0.5 phase file; Step 2 the interview + the answers: file contract; Step 3 the firewall with the planted-fixture negative control and the check-ignore probes; Step 4 layout; Step 5 bootstrap + the checkpoint commit; Step 6 the flywheel documents that outlive the package; Step 7 the registry seed inserted before §E′ with the renumber fallback; Step 8 the overlays by marker + config templates instead of a live settings/mcp merge + the skeletons; Step 9 the memory seed; Step 10 the leftover-placeholder audit, the sorted install manifest, PhaseEnd_Phase0.5, the close commit, the five-part final message, hard stop; install manifest; troubleshooting); class 7 of the firewall gains /.claude-state/transcripts/ (a decomp's transcripts quote the target) and the scratch block re-includes .run/README.md — wiki fence + template re-extracted (75 lines identical); pa-overlays Block 7 → config/decomp-hooks.snippet.json + config/mcp.json.template (no comment keys in JSON); PLACEHOLDERS "Filled" wording aligned with the steps; verify: kit_lint OK over 44 files, doc_links --strict rc 0, 19/19 PA installer mechanisms with counterparts, 12/12 markers present in their templates, all placeholders named, every Step reference resolves; log + checkpoint (NEXT = task 13, the dry-run, xHigh) Drew T 2026-09-07 19:42:41 -06:00
  • 6fb2bc7f8c docs(phase-33.5): plan amendment (Drew, 2026-09-07) — task 13.5 added: the tools audit + a derived tool index (tool_census.py → docs/tool-index.md, the kit MANIFEST re-derived, the 91 no-consumer tools reviewed under Drew's criterion: still needed for a future decomp / superseded by a named successor / one-off; retirement into tools/sunset/ only after the consumer census); measured baseline 326 tool files, 224 SETUP rows, 91 without a runtime consumer Drew T 2026-09-07 19:35:19 -06:00
  • 9235800fb7 tools+docs(phase-33.5): task 11 — kit part 2: the firewall pack (templates/gitignore.decomp extracted byte-for-byte from the wiki fence — gitignore_template_check now runs in tools-health; firewall.txt with purge:/glob:/required:/pending:/fixture: rules; audit_public.template.py generalised from the repo's audit with its sources in the config, refusing zero sources; firewall-fixture/ = 16 synthetic bytes + sha1, the planted negative control), no-rom.template.yml, the docs/.run READMEs, ops-setup.decomp.md, bootstrap.template.sh (skeleton), CLAUDE.decomp-overlay.md (the four fail-safes + session-start extras), pa-overlays.md (7 fenced blocks: DIGEST, the 🛑 checkpoint block, the PhaseEnd narrative axis, effort rows, cookbook entry shape + triage table, wave-playbook skeleton, settings/mcp), the LICENSE/NOTICE/README/CONTRIBUTING skeletons, .clang-format + make-format.snippet.mk; tools/MANIFEST.md (325 tool files by ladder phase from one read-only survey, coverage 325/325, as Phase-N tasks); tools/kit_lint.py (fence-aware leak grep, the PLACEHOLDERS set-diff, in-memory compile / bash -n / JSON+YAML, the gitignore diff, TODO counts, coverage; --selftest = the R39 control) wired into tools-health; decomp-architect/README.md in doc_links DEFAULT; SETUP row; PLACEHOLDERS Used-in cells reconciled; make tools-health OK on this tree (detached run, .run/P33.5/tools_health_t11.log); story-timeline regenerated by the report step; log + checkpoint (NEXT = task 12, Max) Drew T 2026-09-07 19:22:51 -06:00
  • 83de29c023 docs(phase-33.5): task 10 — kit part 1: decomp-architect/README.md (the three install steps, what it installs and does NOT, the PA-2.0 pin, new-projects-only), intake.decomp.md (PA Mode-1's twelve items pre-answered + the 11-row phase ladder with a machine-checkable milestone, the tools built, the G-rules in force and the DK-kernels that earned each row + the six readability inversions + the §E-empty instruction for PA's generation step), decomp-architect.md (the methodology, 13 sections), templates/registry-E.decomp.md (G1–G65 in seven groups, each with a provenance line), corpus/decomp-kernels.md (DK-1…DK-64 + the failure museum condensed), templates/PLACEHOLDERS.md (the 22-placeholder contract kit_lint diffs against); fence-aware lint 0 hits over 23 files, placeholders 22 == 22, ladder 11/11 rows cite a kernel, 0 dangling G/DK cites; The-ROM-firewall.md residue paragraph re-pointed to the tracked untracked_after_rewrite.txt (doc_links exited 1 in BOTH modes at e1463d430 — the citation went UNTRACKED at task 8's git rm --cached; strict rc 0 now); log + checkpoint (NEXT = task 11, xHigh) Drew T 2026-09-07 18:44:49 -06:00