Commit Graph

4140 Commits

Author SHA1 Message Date
Drew T 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) 2026-09-08 19:08:15 -06:00
Drew T 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 2026-09-08 19:07:38 -06:00
Drew T 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 2026-09-08 18:30:29 -06:00
Drew T 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 2026-09-08 18:12:41 -06:00
Drew T 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 2026-09-08 18:06:04 -06:00
Drew T 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 2026-09-08 17:51:39 -06:00
Drew T 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 2026-09-08 17:33:42 -06:00
Drew T 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 2026-09-08 17:24:42 -06:00
Drew T 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 2026-09-08 17:21:44 -06:00
Drew T 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 2026-09-08 17:15:01 -06:00
Drew T 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) 2026-09-08 17:10:00 -06:00
Drew T 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 2026-09-08 17:01:21 -06:00
Drew T 4ec752e683 docs(phase-35): T2 — the generated timeline regenerated from the committed digest (363,221) 2026-09-08 16:46:59 -06:00
Drew T 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 2026-09-08 16:46:55 -06:00
Drew T 8bb1d876d6 docs(phase-35): T1 — the generated tool index for share_census.py; the T1 slip named in the phase log 2026-09-08 16:26:31 -06:00
Drew T 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 2026-09-08 16:26:00 -06:00
Drew T 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 2026-09-08 16:24:08 -06:00
Drew T 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 2026-09-08 16:03:00 -06:00
Drew T 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) 2026-09-08 14:28:32 -06:00
Drew T 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 2026-09-08 14:18:42 -06:00
Drew T 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 2026-09-08 14:18:01 -06:00
Drew T 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) 2026-09-08 14:09:10 -06:00
Drew T 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 2026-09-08 14:08:20 -06:00
Drew T a13d1cd9a7 docs(phase-34): two wiki citations of untracked paths (the outreach draft, the archive folder) rewritten as prose — doc_links --strict green again 2026-09-08 13:56:34 -06:00
Drew T 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 2026-09-08 13:46:38 -06:00
Drew T 4f35be0191 docs(phase-34): task 7 closed — the wiki re-synced (be8a6cc) on Drew's word; task 8 opened 2026-09-08 13:42:46 -06:00
Drew T 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 2026-09-08 13:39:26 -06:00
Drew T 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 2026-09-08 13:30:01 -06:00
Drew T 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 2026-09-08 13:23:18 -06:00
Drew T 19c676f474 docs(phase-34): outreach — the decomp.me #ai channel reply drafted from the record (Drew's words to edit) 2026-09-08 13:05:16 -06:00
Drew T 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 2026-09-08 13:02:49 -06:00
Drew T 6ce1a38c61 docs(phase-34): tools announcement — add the xsig v2 direction (1:1 first, then wider tiers with context) to the post draft 2026-09-08 12:54:55 -06:00
Drew T 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 2026-09-08 12:48:23 -06:00
Drew T 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 2026-09-08 12:39:31 -06:00
Drew T 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 2026-09-08 12:38:55 -06:00
Drew T 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 2026-09-08 12:34:54 -06:00
Drew T 559122ed17 docs(phase-34): task 3 — E2 sent: the Archipelago note as AegeusEvander/Brave-Fencer-Musashi-AP-World#1; reply handling recorded as pending 2026-09-08 12:11:25 -06:00
Drew T 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 2026-09-08 12:07:15 -06:00
Drew T 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 2026-09-08 11:54:22 -06:00
Drew T f12e103e51 docs(phase-34): task 1 addendum — Actions green on the public repo (no-rom 34257901983, progress 34257901996 on df055e36c); task 1 closed 2026-09-08 11:37:23 -06:00
Drew T 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 2026-09-08 11:30:37 -06:00
Drew T 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) 2026-09-08 10:43:35 -06:00
Drew T 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 2026-09-08 10:42:18 -06:00
Drew T 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)
- PhaseEnd_Phase33.5.md written; CURRENT_PHASE.md archived to phase-ends/logs/Phase33.5.md (R19); DIGEST §0/§2/§3/§4 appended (step 3b)
- 3 sessions (S90–S92): the six wiki pages + the Archive index; the six documents folded; doc_links rewritten (six checks) +
  render reachability + timeline wired + gitignore_template_check + audit_public check 4; .run 1,086 → 868 (+ this phase's evidence);
  the memory store 80 == 80 + the 18-file seed; the kit (436 files): intake, SETUP, methodology, 19 templates, G1–G67, DK-1–DK-80,
  corpus/tools 302+28, corpus/cookbook, corpus/record 57 files incl. the health chain, memory-seed 18, MANIFEST; tool_census +
  config/tool_dictionary.tsv + docs/tool-index.md; kit_lint; kit_coverage + config/kit_coverage_map.tsv; the worklog mining pass
  (777 candidates / 634 banked / 143 new → DK-69–80); dry-runs 1–5 (judge PASS 20/20 on the final kit)
- close: tools-health OK (5,917 lines; kit_coverage's first run in the chain); real render 32 pages; doc_links --strict 0/0/0;
  audit_public OK over 6,945 paths; gate_scan PASS; every milestone item met with literal output
- rules: R74–R83 ratified at gate 1; candidates (i)–(xi) + the S91-b doctrine proposed for Phase 34 gate 1
- v1.32.0 -> v1.32.1
2026-09-08 09:36:10 -06:00
Drew T 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's question "is make tools-health set up for the decomp-architect to use as well?" — it was not: the chain's checks ship as
  tools and its lessons as kernels, but the Makefile recipe (a comment per rung naming the incident that earned it) lived outside
  tools/. tool_census --corpus now extracts `tools-health:` + `audit-digest:` VERBATIM into decomp-architect/corpus/record/build/
  tools-health.mk (derived text; --check regenerates and compares; 92 lines); the record front page's row; the intake's Phase-5
  tools column and the methodology's instruments section point at it. No installer step changed → no sixth dry-run owed; the
  installable snippet (a TODO(phase-N) per rung, Step 8) is recorded for the split phase.
- docs/story-timeline.md regenerated by tools-health's report step (R75)
- CURRENT_PHASE.md: the task-15 entry — real render 32 pages rc 0; tools-health OK (5,917 lines, kit_coverage's first run in the
  chain); doc_links --strict OK; audit_public OK over 6,945 paths; gate_scan PASS; the P7 walk of the six milestone items, each MET
  with literal output; Ghidra stopped (R23) — and the CLOSED checkpoint (NEXT = Drew's close commit, then Phase 34 in a fresh session)
- verify: tool_census --check OK; kit_lint OK; kit_coverage OK; doc_links --strict OK; audit_public OK on the new file
2026-09-08 00:09:39 -06:00
Drew T 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) 2026-09-07 23:54:29 -06:00
Drew T 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
- run 5 under BRIEF-run5.md (the D6 guardrails restated): ProjectArchitect 2.0 §1–§9 then the kit Steps 0–10, unattended from
  answers.md; 4 trailer-free commits; stopped_at null; manifest 57 == 57 (docs/inherited-record.md included); G 67; seeds 34/34;
  check-ignore 9/9 + 5/5; placeholder audit clean; the audit exits 0 in the throwaway; PhaseEnd_Phase0.5 + the archived log; tree
  clean; settings/statusline/memory/ghidra/dumps/~/.claude guardrails unchanged
- the agent's notes, acted on: the installer named pa-overlays.md without its templates/ folder at Steps 6 and 8 → `$KIT/templates/…`;
  its own write-scope slip (two staging files under /tmp, deleted) recorded; the manifest rule's silence on a file the installer
  creates and deletes itself noted
- the judge: my run-5 BEFORE snapshot stripped the first porcelain line's status space and so failed to exclude a deletion under the
  dry-run's own directory (the false flag of the first judge pass — re-filtered, not re-snapshotted); the judge's reader crashed on an
  empty dirty set (a one-token line) → tolerated; run-4 evidence kept under the .run4 suffix
- wiki page (five dry-runs, the run-5 row), Home/Tools/README/SETUP rows: five runs
2026-09-07 23:53:11 -06:00
Drew T 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
- 21 read-only Opus slices over the 26 worklogs (30,540 lines read; the three giants by line range), briefed by
  .run/P33.5/log-mining/BRIEF.md with the "already banked?" grep protocol: 777 candidates, 634 already banked, 143 NEW;
  every cited log line verified to exist by harvest.py and read; 142 banked + 1 dropped (the miner's own low-value verdict)
- decomp-kernels.md: twelve kernels DK-69–DK-80 (instrument blind spots; verdict staleness + the health suite; what earns
  belief; denominators/units/labels; leverage vs tractability + campaign scoping; models and prompts; the unattended run;
  agents and the tree; edits that keep proofs; the search harness + the compiler as evidence; maintaining the knowledge base;
  hosts and services), each provenance line generated from the slices' cited worklog lines (bank.py); section 8 retitled;
  Coverage "In all: DK-1 … DK-80"; every count mention → 80 (kit README, methodology, SETUP row, wiki page)
- docs/accelerators.md "P33.5 S92" (two accelerators: a distillation ships with a coverage check; the end-of-project worklog
  pass recovers the fixed-but-never-generalised lessons — 1 in 5 here) → cited by the twelve kernels (kit_coverage: 59 entries,
  42 cited + 15 dispositioned, 0 UNCOVERED; the matcher now requires an un-numbered entry's FULL group text);
  docs/decision-log.md "P33.5 S92" (R31: the question, the measurement, the pivot, the 82%/18% why, the hindsight path)
- evidence tracked under .run/P33.5/log-mining/ (BRIEF, 21 slice reports, HARVEST.md, HARVEST_TABLE.md, harvest.py, bank.py;
  a dated .gitignore block); expected-manifest +1 (docs/inherited-record.md); make kit-corpus regenerated the record copies
- verify: tool_census --check OK (358 copies); kit_coverage OK; kit_lint OK (0 leaks over 436 files); doc_links --strict OK;
  wiki_render --selftest 32/0; audit_public OK on the new files; 80 DK ids cited, 0 dangling
2026-09-07 23:24:14 -06:00
Drew T 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)
- decomp-architect/corpus/record/: the how-to (13), decision-log, accelerators, retrospective, story, wave-playbook, effort-map,
  gen3-standards, gen3-handoff, DIGEST and every PhaseEnd (34) verbatim behind an authored front page (what each is, how to
  read it, what is NOT there — the phase logs, R19 — and that the mining pass is their distillation); tool_census: RECORD_SOURCES
  + record_dest + the third corpus in plan/write/check (358 copies + 28 pointers, --check OK); kit_lint exempts corpus/record;
  SETUP Step 6 gains 2c docs/inherited-record.md (+ the verify line; expected-manifest +1); ops-setup/README/tree/methodology/
  wiki page/Home/Tools page/README bullet/SETUP row: "two dictionaries" → three
- tools/kit_coverage.py (+ config/kit_coverage_map.tsv): derives R1..R83 from DIGEST §3 (asserted contiguous) and the 58
  accelerator entries (headings + numbered items), asserts each is cited by a provenance line of the registry seed / the
  kernels or dispositioned (G / DK / FOLDED:G / ENV / PA / SEED: / KIT: / RECORD / COOKBOOK / NOT-PORTABLE; unknown ids
  refused); first run: 26 uncited rules + 21 uncited entries → DK-66 (a ledger's tie-break, a checker's widening and a blanket
  commit are part of the instrument — R70/R80/R52), DK-67 (the ignore file's directory-form wall — S91 (1)), DK-68 (a
  summarised signal is a claim, not ground truth — R14/R66) in a new kernels section 8 (the museum is 9; "In all" 68) + 41
  dispositions (15 PA, 3 ENV, folds into G6/G18/G38/G66/DK-12/19/20/22/25/26/31/35/44/45/46/57/61, 1 KIT template, 1 COOKBOOK);
  now 0 UNCOVERED on both populations; wired into tools-health after tool_census --check; SETUP row + dictionary row
- verify: tool_census --check OK; kit_coverage OK (rules 57 cited + 26 dispositioned / 83; accelerators 41 + 15 / 58);
  kit_lint OK; doc_links --strict OK; wiki_render --selftest 32 pages / 0 unlisted
2026-09-07 23:03:34 -06:00
Drew T 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) 2026-09-07 22:51:20 -06:00