Commit Graph

2778 Commits

Author SHA1 Message Date
Drew T 1525ed87f6 feat(decomp): main lane m11aaaa — 1 banked
One clean whole-EXE rebuild verified the batch (gate_main), and main re-checked
BYTE-IDENTICAL against config/check.us.sha before anything was credited.

  func_80027058
2026-08-25 00:52:46 -06:00
Drew T e76a55abdf fix(distill): a stale READY marker no longer blocks the lane forever
A marker is a CLAIM on work, not a record of it. axbm.json sat in .run/distill_ready
for 10.5 hours AFTER its waves were distilled into cookbook §269 — the reviewer landed
the sections, updated the mined state, and never removed the marker — and distill_scan's
one-pending-marker-at-a-time rule (correct, it stopped eight overlapping batches) then
refused to raise anything while 18 waves / 315 novel candidates accumulated behind it.

The marker's own waves are checkable against the mined state, so check them: a marker
whose every wave is already mined clears itself and says so. Negative control (R39): a
marker naming any still-unmined wave survives untouched.

Same family as R47 — a stage that consumes work must also consume the token that
represents it.
2026-08-25 00:49:24 -06:00
Drew T 75bfb04226 fix(maintenance): restore the S59 lane logic a stale second copy had reverted
.run/maintenance.sh (what runs) and tools/lanes/maintenance.sh (a pre-S59 copy) had
diverged. The 150->50 threshold tune landed on the stale copy and was then copied over
the live one, silently reverting five S59 fixes:

* the R47 shape filter (staging fell back to status=='AGREE' alone — the exact defect
  that staged 82 hopeless drafts every 45 minutes)
* the R48 (binary, fn) keying (bare-fn keys collide across overlays)
* reloc --fix MISMATCH auto-repair (measured 4/4 repaired to AGREE)
* rtu_second_chance (re-judges standalone COMPILE-FAILs against the real TU)
* fix_tu_ret_decls (the return-type half of the stale-decl wall)

Rebuilt from the S59 lineage with the 150->50 threshold and the periodic fleet R22
re-applied, both paths now byte-identical, `bash -n` clean, and the two-path hazard
documented in the header so the next edit cannot repeat it.

Also: relaunch_drafter_shell.sh 30s -> 5s ready-marker poll; regenerated backlog and
fleet progress artifacts.
2026-08-25 00:35:27 -06:00
Drew T 5bd66c7b5b feat(decomp): free A-prop sibling lane (maintenance pass) — zero model tokens 2026-08-25 00:32:56 -06:00
Drew T 9696f8fb14 docs(phase-31): S59 FINAL checkpoint — six harness defects, six lanes, and the rules they earned
1,342 banked, 140 commits, open stubs 6,575 (main 1,493 / overlay-md 5,082).

The session's one lesson, measured six times: every lane that looked like the models
underperforming was a harness defect — an -O0 oracle nothing ever passed, a lane
retired on a card-size verdict, carve machinery nothing fed, a poisoned main baseline
that made 737 drafts read as bad, a soft 429 killing 44-72% of shards at turn 1, and a
stager consuming one bit of one verdict.

Records what landed (jtbl island split + gate automation, the -O0 census and unlock,
the new main and distill lanes, two RED binaries fixed, the throughput settings with
their probe evidence, the portable-workflow doc), seven rule candidates for PhaseEnd
approval, the ranked open threads with the A-prop residual named and sized, and a
resume procedure that starts from campaign_status.py and verifies from the process
rather than the file.
2026-08-25 00:25:46 -06:00
Drew T 619f4dfaee tune(maintenance): trigger threshold 150 -> 50 banked (Drew)
150 was tuned for a lane that only re-swept an unchanged sibling pool and banked
nothing. The lane now consumes every verdict layer in the A-prop pipeline, carries the
free pre-gate reject recovery, and runs the periodic fleet R22 — a pass is worth
running on a much smaller refill.
2026-08-25 00:21:16 -06:00
Drew T 845df54ca1 feat(decomp): main lane m10b — 19 banked
One clean whole-EXE rebuild verified the batch (gate_main), and main re-checked
BYTE-IDENTICAL against config/check.us.sha before anything was credited.

  AverageZ3
  DpqColor3
  InvSquareRoot
  MatrixNormal
  OuterProduct12
  Square12
  VM_NOWON_OBJ_2A0
  VM_NOWON_OBJ_44C
  VectorNormalSS
  func_80013478
  func_8001C044
  func_80047EC8
  func_80049440
  func_80062434
  func_8006252C
  func_800625DC
  gfx2D_BG0_OBJ_658
  gfx2D_BG0_OBJ_698
  gfx2D_BG1_OBJ_648
2026-08-25 00:18:52 -06:00
Drew T 86c6d04092 feat(decomp): main lane m10ab — 10 banked
One clean whole-EXE rebuild verified the batch (gate_main), and main re-checked
BYTE-IDENTICAL against config/check.us.sha before anything was credited.

  SYS_OBJ_11C
  SYS_OBJ_19A4
  SYS_OBJ_222C
  SYS_OBJ_2CC4
  SYS_OBJ_640
  SetDrawOffset
  VM_NOWON_OBJ_230
  VM_NOWON_OBJ_2C8
  func_80028488
  func_80041354
2026-08-25 00:15:40 -06:00
Drew T a3e1430551 feat(decomp): main lane m10aabb — 2 banked
One clean whole-EXE rebuild verified the batch (gate_main), and main re-checked
BYTE-IDENTICAL against config/check.us.sha before anything was credited.

  func_8002EB10
  func_8005EA88
2026-08-25 00:15:26 -06:00
Drew T 2a95f6e0f1 feat(decomp): ox wave ce overlays — 40 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-25 00:14:57 -06:00
Drew T c1637b2ddc feat(decomp): main lane m10aaa — 1 banked
One clean whole-EXE rebuild verified the batch (gate_main), and main re-checked
BYTE-IDENTICAL against config/check.us.sha before anything was credited.

  func_800525DC
2026-08-25 00:13:22 -06:00
Drew T 85f6b79471 feat(maintenance): a periodic fleet R22 — nothing was watching the binaries no lane touches
Two binaries sat RED for hours today and nothing noticed: ov_SC07_010 from a
maintenance commit whose final tree state was provably never built, and ov_SC07_002
from a stale 2-table jtbl pad spec written at wave bp. Every lane only ever checks the
binary it is currently touching, so a byte-gate — a correctness oracle — was silent
about everything it did not build. They were found by accident, by an agent's scoped
R22 sweeping 141 binaries.

Every 4th maintenance pass (~3h), skipped while any gate is in flight (check-all
rebuilds stale objects and must not race a gate), it runs the fleet check and writes
any REDs to .run/fleet_red.txt with a loud log line. It FIXES NOTHING: a wrong repair
to a pad spec or a config is exactly how a silent byte shift gets committed, and the
two we fixed today each needed a different, evidence-led remedy.
2026-08-25 00:03:45 -06:00
Drew T f94cdac931 fix(jtbl): drop the stale 2-table pad spec that made ov_SC07_002 unbuildable
The binary has been RED since wave bp (commit:2687), where the gate-time jtbl carve
wrote 'JTBL_PADS := 0,0  # tables=+0x0,+0x20' for ov_SC07_002_jr_8017C8D0.o. The
object emits ONE rodata .align, so jtbl_rodata_pads refused every build:

  consumed 1 rodata .align(s) but 2 pad spec(s) given — table-count drift vs the carve
  make: *** [build/src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.o] Error 1

The carve itself is legitimate — jr_isolate_all's jr_inventory resolves every
committed .rodata carve in this binary to exactly one banked owner (R32/R33), so this
was never an orphaned carve. Only the pad SPEC was wrong, and §8e's own rule is that a
single-table span gets no line at all (its pipeline stays byte-identical to pre-§8e).
Removing the line restores it:

  sha1 fad71342019704d1dd6ec25f2f3934c97e322624 == config/check.ov_SC07_002.sha

Found by the A-prop agent's scoped R22 (141 binaries affected, 96 SHA-checked), which
also fixed ov_SC07_010 — a binary whose committed tree state had provably never been
built. Two RED binaries had been sitting in the fleet while every lane gated against
them; neither was noticed because no lane checks a binary it is not currently touching.
2026-08-24 23:52:50 -06:00
Drew T 656aa4f514 feat(decomp): main lane m09b — 16 banked
One clean whole-EXE rebuild verified the batch (gate_main), and main re-checked
BYTE-IDENTICAL against config/check.us.sha before anything was credited.

  SYS_OBJ_16C
  SYS_OBJ_1A70
  SYS_OBJ_FD8
  SetPriority
  SetRGBfifo
  SetRii
  SquareRoot12
  func_80010BB4
  func_80028304
  func_8002EA10
  func_80047D3C
  func_8005AB00
  func_8005B75C
  gfx2D_BG0_OBJ_1B4
  gfx2D_BG0_OBJ_4A0
  gteMIMefunc
2026-08-24 23:39:41 -06:00
Drew T 65fe4a81d4 docs(aprop-s59): final numbers — 64 banked exactly; sweep 3 honest 0/9 with the residual hypotheses named 2026-08-24 23:39:16 -06:00
Drew T 3960b3e28a fix(agents): retry the SOFT 429 — a 200 body carrying a rate-limit error was killing agents outright
OpenRouter returns a provider throttle as HTTP 200 whose body has no 'choices' and an
error of {"message": "Provider returned error", "code": 429}. That never reached the
429 handler, which keys on HTTPError, so it fell through to the 'no choices' raise and
ended the agent at turn 1 with no draft, no submit, $0.00 spent.

Measured, and it is not marginal:
  wave cb: 169 of 260 shards hit a soft 429
  wave cc: 115 of 260
  wave cd: 187 of 260   <- 260 shards 'finished cleanly', 72 drafts produced
  wave ce: 119 of 258

That is the draft-completion collapse. I had attributed 28-60% completion (against
84-89% before) to the straggler grace and raised it to 700s; the grace was never the
cause. The shard logs said 'finished cleanly' because the agent DID exit normally —
after being killed by an unretried rate limit on its first API call.

Now treated like every other transient: back off, retry, and log it as SOFT-BODY so
the rate telemetry stops under-counting 429s. Takes effect on the next wave's shards —
api_agent is spawned fresh per shard, so no lane restart is needed.

R40 again: the fleet looked like it was giving up, and the harness was hanging up on it.
2026-08-24 23:38:18 -06:00
Drew T ba2833739a feat(decomp): ox wave cc overlays — 18 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-24 23:36:29 -06:00
Drew T b5c422168a docs(decision-log): S59 A-prop decomposition — consume every verdict layer; never key by bare fn name 2026-08-24 23:34:37 -06:00
Drew T 12f7af65cf feat(decomp): main lane m09abb — 5 banked
One clean whole-EXE rebuild verified the batch (gate_main), and main re-checked
BYTE-IDENTICAL against config/check.us.sha before anything was credited.

  DrawSyncCallback
  SetSZfifo3
  _drs
  func_80059888
  func_80059D68
2026-08-24 23:33:39 -06:00
Drew T b8e3451e2f feat(decomp): main lane m09abab — 2 banked
One clean whole-EXE rebuild verified the batch (gate_main), and main re-checked
BYTE-IDENTICAL against config/check.us.sha before anything was credited.

  func_8002E818
  func_8005EAA8
2026-08-24 23:33:25 -06:00
Drew T 90efcc5e87 docs(accelerators): #7 — wire the full verdict ladder into template lanes from day one 2026-08-24 23:32:27 -06:00
Drew T 586916732c docs(aprop-s59): the measured decomposition + honest ceiling; cookbook §270-§273; lane wiring complete
docs/tool-designs/aprop-lane-s59.md: baseline (117 staged / 0 banked = 82
shape-DIFF + 19 standalone-fail + 16 near-0, none invisible), the defect
classes with byte-proofs, the fixed pipeline's end-to-end numbers (64+ banked,
zero tokens), the near-miss taxonomy (11 IMM tier-2, 8 wrong-family), the
ceiling with every refusal named and sized, and the two pre-existing RED
binaries the scoped R22 surfaced (SC07_010 fixed green; SC07_002 named for the
jtbl owner).

Cookbook: §270 the four-verdict law (instructions/symbols/TU/whole-binary —
stage on fewer and burn a build per missing layer forever), §271 ordinal
candidate pairing, §272 K&R the definition, §273 the wrong-oracle law.

maintenance.sh now runs the full recovered pipeline unattended: shape-gated
(binary,fn)-keyed staging, reloc --fix repair+recheck, rtu second chance,
fix_tu_ret_decls on fresh near-0 rejects.
2026-08-24 23:32:06 -06:00
Drew T 0f5c76da81 feat(decomp): main lane m09aa — 4 banked
One clean whole-EXE rebuild verified the batch (gate_main), and main re-checked
BYTE-IDENTICAL against config/check.us.sha before anything was credited.

  func_80011DA0
  func_80011E84
  func_800273F4
  func_8002D4C8
2026-08-24 23:30:32 -06:00
Drew T 19fb23dc46 fix(drafter): never block on the draw lock — the hazard it guarded is handled at the binary level now
Measured 23:20: the maintenance lane held .run/auto/draw.lock for a multi-minute
sweep, the pre-draw buffer happened to be empty, and the drafting fleet — the one
clock-limited resource — sat at 13 agents and 3 req/min printing 'gate holds the draw
lock and nothing is pre-drawn — waiting 30s' every thirty seconds.

That wait dates from when drawing during a gate was genuinely unsafe: corpus.stubs()
misreports for a binary whose sources carry a substituted draft (R35), so the draw
refused outright. Since 15:23 build_wave_atlas excludes exactly the binaries whose
per-binary gate lock is held and draws from the rest, so the hazard is handled at the
right granularity and the blanket wait now protects nothing.

Same lesson as the draw's own refusal earlier today: a guard scoped more broadly than
the hazard gets routed around or, worse, quietly starves the thing it sits in front of.
2026-08-24 23:22:55 -06:00
Drew T 40dea1c2a2 fix(aprop): three more decl-layer defects, each traced to a wrong-name or wrong-scope lookup
1. decl_for searched the DESTINATION for the SEED's name: a RENAMED symbol's
   destination spelling can only exist under the MEMBER's name, so the
   destination preference silently never applied to renamed data symbols
   (D_801B9DF8 adopted the seed's 'short' against the TU's file-scope 's32').
   dest/fleet tiers now search target_sym; seed tiers keep the seed name.
2. dest_scope is FILE-SCOPE-ONLY (brace-masked): the TUs are full of
   block-scope externs inside banked bodies, and a flat regex adopted one of
   those as 'the destination spelling' over the DEFINE macro's true file-scope
   decl.
3. A body-embedded block extern that diverges from the destination file scope
   is rewritten to the destination spelling when every use is ADDRESS-ONLY
   (type is codegen-irrelevant for &sym); valued uses keep the seed spelling.
+ fix_tu_ret_decls.draft_ret now parses K&R definitions (its first run SKIPped
  30 of 32 because the param decls sit between ')' and '{').
2026-08-24 23:19:47 -06:00
Drew T 2c61a5e051 feat(decomp): A-prop S59 TU-retype pass — 14 banked of 30, zero model tokens
tools/fix_tu_ret_decls.py: sweep-1's dominant residual (32 fresh near-0 rejects
— byte-correct bodies, TU-refused) is the RETURN-TYPE half of the stale-decl
wall: the TU forward-declares 'extern void f(void);' while the byte-true
definition returns s32; the gate's arity pre-pass relaxes the PARENS but not
the return. Retyping the TU's own decls to 'extern s32 f();' (byte-neutral:
every declared-void caller ignores $v0 — fix_header_decl's proven argument,
TU-scoped) banked 14 byte-identical, journaled edits kept only where the gate
paid. 12 SKIPs are void-returning defs (a different conflict, suspected
freshly-spliced (void) preambles), 4 retyped-but-refused.
2026-08-24 23:15:25 -06:00
Drew T 2364da4afd fix(decomp): ov_SC07_010 baseline back to green — one stale (void) decl no-proto'd
The S59 scoped R22 sweep (96 binaries whose TUs instantiate the DEFINE macros
my engine_core edit touched) found ov_SC07_010 RED at HEAD: the 14:57
maintenance commit (commit:2694) banked func_8017F2BC's (s16*) definition into a
TU that still carries an earlier draft-preamble decl 'extern void
func_8017F2BC(void);' at line 4932 — conflicting types, TU uncompilable, though
the TU is byte-identical to its committed state (how that pass reported green
is an open question for the lane's arity/splice ordering). Provenance checked:
my commits touch only func_80162CCC decls; the pinned cc1 accepts the
no-proto+definition pair in isolation. Fix: the arity pass's own byte-neutral
no-proto form; whole-binary SHA re-checked green. ov_SC07_002 remains RED on a
jtbl_rodata_pads carve drift (also pre-existing, also from earlier passes) —
named in docs/tool-designs/aprop-lane-s59.md, not papered over.
2026-08-24 23:03:34 -06:00
Drew T 488e009bd1 feat(decomp): ox wave cd overlays — 18 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-24 23:00:38 -06:00
Drew T 88da1eb03b feat(decomp): A-prop lane S59 sweep 2 — 12 banked of 33 recovered drafts, zero model tokens
Two new recovery mechanisms, both byte-proven this sweep:
  6/7  rtu-second-chance: standalone COMPILE-FAILs re-judged in their REAL TU
       (rtu_match) — 6 banked whole-binary; the standalone verdict was the
       wrong oracle for a TU-destined draft
  6/15 reloc UNRESOLVED/shape-MATCH: identity unverifiable locally, but the
       whole-binary gate is the arbiter — staging them is free banks
Not banked: 5 MISMATCH?-advisory, 4 reloc-repaired (symbols now right, bytes
still differ), 2 old K&R conversions, 9 UNRESOLVED, 1 rtu (all reverted by the
gate; drafts retained in backlog).
2026-08-24 22:52:27 -06:00
Drew T 5a80e15f91 chore(decomp): commit in-tree banked work before the next gate
Uncommitted src/ changes found at gate entry. These are banked functions from a lane that gates with commit=False, not residue — preserved, not reverted. Top-level src/*.c (main TUs) are excluded by construction (S59).
2026-08-24 22:51:46 -06:00
Drew T 65ef0ebae6 feat(decomp): main lane m08 — 19 banked
One clean whole-EXE rebuild verified the batch (gate_main), and main re-checked
BYTE-IDENTICAL against config/check.us.sha before anything was credited.

  AverageZ4
  SYS_OBJ_1D84
  SetSZfifo4
  SetVertexTri
  VM_NOWON_OBJ_3D4
  func_80011DCC
  func_8001282C
  func_80018450
  func_80018E9C
  func_8001BDA0
  func_8002109C
  func_800234E4
  func_800249F0
  func_80026128
  func_8002D29C
  func_80047E58
  func_800594CC
  func_800596F4
  func_8005ACF0
2026-08-24 22:51:16 -06:00
Drew T cbce26e272 feat(decomp): A-prop lane S59 sweep 1 — 38 banked of 80 staged, zero model tokens
The population that banked 0/117 on three consecutive passes banks 38/80 with
the S59 fixes, attributed against the 21:04 baseline classes:
  29  the closeness-2 ordinal cluster (value/offset swap -> candidate pairing
      adjudicated by match_one at draft time)
   4  the near-0 TU-integration class (K&R definitions + the arity pre-pass;
      func_80162CCC x3 overlays among them — 42 engine_core.h caller decls
      kept no-proto for the banked set, byte-neutral for empty calls)
   5  drafts the old pipeline refused or mis-staged
Every bank is whole-binary SHA-verified by gate_stage/harvest_verify (G3/P9).
2026-08-24 22:42:53 -06:00
Drew T 89b4064c10 feat(decomp): ox wave cb overlays — 12 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-24 22:30:24 -06:00
Drew T 3d1a79a70c fix(aprop): reloc --fix keyed by (binary,fn); lane gains rtu second-chance, MISMATCH auto-repair, borrow-tier decls
reloc_identity --fix's rowmap keyed rows by fn alone, so three same-named
func_8013BCDC rows across binaries all received ONE binary's draft — 2 of 4
'no textual occurrence' refusals were the tool editing the wrong file. Keyed
by (binary, fn): 4/4 repaired to AGREE/MATCH (byte-checked by re-run).

maintenance.sh: stage on status in {AGREE,UNRESOLVED} AND shape==MATCH keyed
(binary,fn); run reloc --fix on MISMATCH rows and re-check so repairs stage the
same pass; add rtu_second_chance for standalone COMPILE-FAILs (7/27 measured
TU-byte-MATCH, previously dropped unjudged).

aprop_autodraft decl_for gains the BORROW tier: when both home TU and seed are
silent, adopt a sibling TU's extern spelling under the same body-compatibility
guards — 'which TU may conflict' (home only) and 'where a guess may come from'
(anywhere) are different questions; refusing outright left 125 members undrafted.
2026-08-24 22:29:29 -06:00
Drew T b2c2b23007 fix(aprop): S59 lane overhaul — four measured defects, each byte-diagnosed before the fix
Baseline measured on the 21:04 pass (117 staged, 0 banked): 82 near real-diff /
19 standalone compile-fail / 16 near-0 TU-integration; zero drafts invisible to
the gate (the 'drafts: 0' probe was the triage harness racing itself — a shared
per-fn probe dir rm -rf'd by a concurrent triage run, not lane plumbing).

1. K&R definitions (aprop_autodraft.kr_definition): the near-0 class is the TU's
   own '(void)' decls + empty K&R call sites rejecting the draft's ANSI def
   ('too few arguments' after the arity pre-pass relaxes the decls). K&R the def
   when every param is promotion-safe; byte-proven MATCH on func_80162CCC's real
   TU (rtu_match) where the ANSI form CC1-failed.
2. decl_for scope: the destination is the HOME TU ONLY, macro-expanded
   (dest_scope) — the whole-binary concat adopted spellings the home TU never
   declares; and a dest spelling is adopted only when the seed body can compile
   against it (void-return-value guard + call-arity guard; measured 42 and 15
   fresh drafts died on each before the guards).
3. Ordinal IMM pairing is now a CANDIDATE SET (family_remap._ordinal_candidates):
   the single-guess form paired the first spelling's occurrences only and shipped
   35 of 117 drafts with value/offset swapped ('*(p+3)=2' for '*(p+2)=3',
   closeness-2 forever); candidates are adjudicated with match_one at draft time.
4. Staging filter (maintenance.sh): stage only AGREE + shape==MATCH, keyed by
   (binary, fn) — status-only staging burned 82 whole-binary builds per pass on
   drafts match_one had already refuted, every 45 minutes.
+ tools/rtu_second_chance.py: standalone COMPILE-FAIL is the wrong oracle for a
  TU-destined draft; re-judge those against the real TU (rtu_match) and stage
  the MATCHes.
2026-08-24 22:22:12 -06:00
Drew T 60e161cc6e feat(decomp): main lane m07bb — 10 banked
One clean whole-EXE rebuild verified the batch (gate_main), and main re-checked
BYTE-IDENTICAL against config/check.us.sha before anything was credited.

  ClearImage2
  GsSortBg
  SYS_OBJ_1578
  SYS_OBJ_1790
  SetGraphReverse
  func_800167F0
  func_8005C1C0
  func_8005D8A0
  func_8005E804
  func_8005EA54
2026-08-24 22:12:02 -06:00
Drew T 144c7c1b0a feat(decomp): main lane m07bab — 4 banked
One clean whole-EXE rebuild verified the batch (gate_main), and main re-checked
BYTE-IDENTICAL against config/check.us.sha before anything was credited.

  StartRCnt
  func_800145EC
  func_8005E79C
  func_8005EAC8
2026-08-24 22:11:48 -06:00
Drew T d63214844e feat(decomp): main lane m07ab — 4 banked
One clean whole-EXE rebuild verified the batch (gate_main), and main re-checked
BYTE-IDENTICAL against config/check.us.sha before anything was credited.

  VectorNormal
  func_80018714
  func_8001A0FC
  func_80029240
2026-08-24 22:09:14 -06:00
Drew T 78d11e65d6 feat(decomp): main lane m07aaa — 3 banked
One clean whole-EXE rebuild verified the batch (gate_main), and main re-checked
BYTE-IDENTICAL against config/check.us.sha before anything was credited.

  SYS_OBJ_19D8
  func_8001751C
  func_8005B684
2026-08-24 22:05:27 -06:00
Drew T 8b2a1e5f1f feat(decomp): ox wave ca overlays — 42 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-24 21:40:22 -06:00
Drew T 6a48a490fc fix(recovery): validate the binary before staging; aprop_autodraft adopts the TU's spelling and refuses asm bodies
MY BUG, SAME DAY, SAME CLASS. recover_rejects staged by the binary field of
aprop_symfix's output slate — and aprop_symfix tags its REBASE VARIANTS into that
field (ov_MAIN_012-cn, -cn-cast, -cn-cast-rc, -s2in, -s2in-uni). Staged verbatim,
each variant became its own directory and sweep_parallel was handed 273 directories
naming binaries THAT DO NOT EXIST: 553 drafts that could never be gated against
anything, while the sweep reported 'over 331 binaries'. It now resolves the variant
tag back to a real binary, keeps ONE variant per target, and COUNTS what it cannot
resolve (R43). The 290 bogus staging dirs are cleaned; 118 real drafts remain.

aprop_autodraft, per Drew:
  * decl_for prefers the DESTINATION TU's own spelling and falls back to the seed's
    only when the destination is silent (wave law 2 — the destination is
    authoritative; 45 of 188 staged drafts declared a conflicting type).
  * it REFUSES a seed whose body is a verbatim __asm__ block. Those transcribe
    instructions rather than decompiling them, trivially 'MATCH' the local oracle
    because they ARE the target's bytes, and would count as matched functions in every
    progress number while nothing was decompiled. 26 of 188 were this shape. §265 is a
    deliberate human escape hatch for hand-written asm, not something an unattended
    lane propagates across a family.

Measured before changing the drafting prompt instead: model waves bw/bx/by/bz produced
ZERO whole-body asm across 530 drafts, so this is a tool behaviour, not a model one. A
blanket 'no asm' rule on every card would have cost us the sanctioned one-line levers
(§5a fences, §17 register pins) that appear in 32-47 drafts per wave.
2026-08-24 21:33:32 -06:00
Drew T b0236a091c feat(decomp): main lane m06bb — 8 banked
One clean whole-EXE rebuild verified the batch (gate_main), and main re-checked
BYTE-IDENTICAL against config/check.us.sha before anything was credited.

  GetRCnt
  StopRCnt
  func_8005BED8
  func_8005D6A0
  func_8005D980
  func_8005E9D4
  func_8005F228
  func_8005F728
2026-08-24 21:11:53 -06:00
Drew T b63d46a688 feat(decomp): main lane m06ab — 7 banked
One clean whole-EXE rebuild verified the batch (gate_main), and main re-checked
BYTE-IDENTICAL against config/check.us.sha before anything was credited.

  func_80014094
  func_8001599C
  func_80015A2C
  func_80016A7C
  func_80017758
  func_8001BFD0
  func_8002AED0
2026-08-24 21:07:17 -06:00
Drew T 71fc425afa feat(decomp): main lane m06aaba — 2 banked
One clean whole-EXE rebuild verified the batch (gate_main), and main re-checked
BYTE-IDENTICAL against config/check.us.sha before anything was credited.

  func_80015978
  func_800290E0
2026-08-24 21:04:14 -06:00
Drew T c8102cd95d feat(decomp): main lane m06aaa — 4 banked
One clean whole-EXE rebuild verified the batch (gate_main), and main re-checked
BYTE-IDENTICAL against config/check.us.sha before anything was credited.

  SYS_OBJ_11C0
  SYS_OBJ_210
  func_80016224
  func_8005C29C
2026-08-24 21:03:40 -06:00
Drew T 826d5dfe1c feat(decomp): ox wave bz overlays — 21 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-24 20:44:52 -06:00
Drew T 15e0020d8c feat(decomp): free A-prop sibling lane (maintenance pass) — zero model tokens 2026-08-24 20:41:28 -06:00
Drew T 626ba89e71 chore(decomp): commit in-tree banked work before the next gate
Uncommitted src/ changes found at gate entry. These are banked functions from a lane that gates with commit=False, not residue — preserved, not reverted. Top-level src/*.c (main TUs) are excluded by construction (S59).
2026-08-24 20:31:48 -06:00
Drew T 0077cb484a feat(decomp): main lane m05b — 16 banked
One clean whole-EXE rebuild verified the batch (gate_main), and main re-checked
BYTE-IDENTICAL against config/check.us.sha before anything was credited.

  GetODE
  SYS_OBJ_1AA4
  SYS_OBJ_604
  SYS_OBJ_F00
  SYS_OBJ_F24
  _getctl
  _status
  func_80018C64
  func_8001C0C8
  func_80037FC4
  func_8005ADB8
  func_8005B710
  func_8005D4B8
  func_8005E1A4
  func_8005EAE8
  func_8005F6CC
2026-08-24 20:13:28 -06:00
Drew T 7360ec951c feat(decomp): ox wave by overlays — 23 banked
Committed before the main batch: gate_main reverts on failure and would take these with it.
2026-08-24 20:10:33 -06:00