Commit Graph

118 Commits

Author SHA1 Message Date
Christopher Williams f35ec5607e phase9: merge B 0x80034A80 — 352 regions / 343 bodies
Worker B's maspsx structural limitation recorded: a region needing
addu-encoded moves (maspsx expands move->addu, GNU as expands move->or)
AND an assembler-filled jr slot cannot be matched with any single
maspsx= setting — this explains a family of epilogue residuals. B
verified in .s files. Two negatives with mechanisms (0x800254B0 alloc,
0x800751E8 with negu — evidence FOR the toolchain, finding-26 route).
B self-corrected an invented-address method error. Gate MATCH whole-
binary SHA-1 e173426c157384ebf1b6caf8c6fea18a85a14af9.
2026-09-24 01:45:51 -04:00
Christopher Williams ec677c6c5c phase9: reconcile negatives (now-registered rows dropped) + worklist regen 2026-09-24 01:42:27 -04:00
Christopher Williams db93c35371 phase9: merge B 2 + coordinator 1 — 351 regions / 342 distinct bodies
Worker B matched 0x800F6330 (correcting my stale negative: destination is
0x8011AA18 via the signed-displacement finding-4 trap) and 0x80090B7C
(18th/19th first-attempt matches this cycle). Coordinator absorbed
0x80025070 (conditional dispatch wrapper). B's correction of its own
void-vs-valued epilogue tell accepted (0x800FBDC0 counterexample; the
shared-epilogue hypothesis stands untested — recorded as observation, not
rule). Gate MATCH whole-binary SHA-1
e173426c157384ebf1b6caf8c6fea18a85a14af9.
2026-09-24 01:42:16 -04:00
Christopher Williams 64561c9eca phase9: remove stale 0x800F6330 negative (worker B matched it; my symbol was the finding-4 sign-adjust trap — 0x8011AA18 not 0x8012AA18) 2026-09-24 01:41:46 -04:00
Christopher Williams 523b901eb3 phase9: ledger — rare-epilogue census (16 sites, library band) 2026-09-24 01:40:23 -04:00
Christopher Williams 66ed7931e0 phase9: add 0x8010036C negative (rare-epilogue-order, F21 3rd site) 2026-09-24 01:40:09 -04:00
Christopher Williams 6e1d032d6c phase9: add 0x80022E44 negative (adjacent-zero-store merge) 2026-09-24 01:39:19 -04:00
Christopher Williams 1d32496672 phase9: add 0x80024630 negative (stack-routed min, optimizer elision) 2026-09-24 01:38:01 -04:00
Christopher Williams 13efa438ce phase9: absorption — 0x800A623C + 0x800A5CEC (348 regions / 339 bodies)
Two more coordinator tier-2 wrappers, both first-try: 0x800A623C
(symbol-form constant + pass-through swap), 0x800A5CEC (guarded call with
zero in the jal slot). Gate MATCH whole-binary SHA-1
e173426c157384ebf1b6caf8c6fea18a85a14af9.
2026-09-24 01:37:17 -04:00
Christopher Williams 140549ede4 phase9: add 0x800F6330 negative (HI16-carry edge, finding-4) 2026-09-24 01:36:09 -04:00
Christopher Williams e149ad1880 phase9: ledger — cycle-4 337 bodies at the tier-2 pivot 2026-09-24 01:35:10 -04:00
Christopher Williams 28977d793b phase9: reconcile negatives + regenerate worklist (346 registered) 2026-09-24 01:35:03 -04:00
Christopher Williams 74785840c7 phase9: merge B 4 + C 4 — 346 regions / 337 distinct bodies
Worker B: 0x8002E3A8 bare unused frame (16B of pure stack adjustment from a
removed local — reproduced by declaring char unused[16] and nothing else),
0x8010AAC0 pass-through with arg reorder, 0x8008FF58 six-arg rebuild,
0x800F79C0 virtual dispatch. Worker C: 0x800268C4 (D_ names), 0x800697C4,
0x800658FC (F20 displacement-fold lever), 0x800A5CC8 (overlap with the
coordinator's claim — C's registration stood). Gate MATCH whole-binary
SHA-1 e173426c157384ebf1b6caf8c6fea18a85a14af9.
2026-09-24 01:34:54 -04:00
Christopher Williams cd53723c52 phase9: add 0x80099E34 negative (alloc-tiebreak, symbol-form address) 2026-09-24 01:33:39 -04:00
Christopher Williams 0a41a5ded6 phase9: ledger — cycle-4 tier-2 three-way volume 2026-09-24 01:31:38 -04:00
Christopher Williams 3ea7e13a99 phase9: merge B 0x80013D04 + coordinator wrappers — 339 regions / 330 bodies; reconcile report negatives
B's alignment-1 find closed 0x80013D04 first-attempt (lwl/lwr on provably
aligned addresses = declared-type alignment, not real alignment; Quad4
struct model). New symbol D_801219F4 (gp-relative address taken without
lui). Coordinator wrappers 0x800F8FC0/0x800A5CC8 (pass-through + constant-arg
delay-slot). Report negatives reconciled into the tracked index (0x800F9134,
0x80094370 now excluded by regenerated worklist). Gate MATCH whole-binary
SHA-1 e173426c157384ebf1b6caf8c6fea18a85a14af9.
2026-09-24 01:31:26 -04:00
Christopher Williams 0bbedfdd53 phase9: regenerate worklist + partitions after the merge (worker B's drift finding)
Worker B observed that gating each batch without regenerating the worklist
re-grows partition drift every cycle (their file was 10 rows stale). The
regeneration is now done alongside each merge; partitions re-proved disjoint
(486/486/486, total 1458).
2026-09-24 01:29:33 -04:00
Christopher Williams d3b919a794 phase9: merge coordinator tier-2 wrappers — 336 regions / 327 distinct bodies
4 coordinator wrappers: 0x80090028 (unsigned-char return narrowing + frame-
in-jr-slot via worker B's tell), 0x800BFEA0/0x800BFF00 (pass-through with a2=
a1+offset), 0x800F8F3C (valued wrapper, li v0,1 in slot). Gate MATCH
whole-binary SHA-1 e173426c157384ebf1b6caf8c6fea18a85a14af9.
2026-09-24 01:29:21 -04:00
Christopher Williams 7f06726154 phase9: ledger — cycle-4 tier-2 pivot validated as the efficiency rule 2026-09-24 01:27:07 -04:00
Christopher Williams b6dd0ad762 phase9: merge worker B tier-2 run — 329 regions / 320 distinct bodies
Worker B's tier-2 pivot delivered 9-for-9 first-attempt matches (vs 0-for-12
on the tier-1 head), confirming the frames-pin-allocation analysis. Findings
recorded: pass-through arguments idiom (4 occurrences), void-vs-valued
epilogue tell, 32-byte frame round-up anomaly (unexplained), faithful
no-null-check dereference. Gate MATCH whole-binary SHA-1
e173426c157384ebf1b6caf8c6fea18a85a14af9.
2026-09-24 01:26:57 -04:00
Christopher Williams 7bfeffc58b phase9: add 0x8003A5F4 negative (alloc+layout, worker-C diagnosis confirmed) 2026-09-24 01:22:41 -04:00
Christopher Williams 17802fe649 phase9: add 0x80012A48 negative (primitive-init scheduler family) 2026-09-24 01:21:51 -04:00
Christopher Williams 69eba852c8 phase9: merge worker C batch 2 — 320 regions / 311 distinct bodies
4 new (0x80082750, 0x8007EB8C, 0x800B34FC, 0x800C1EA8), 2 new gp symbols
(g_80122610, g_80122618) for the gp-relative table-address rows. Recorded
findings F17 (sra-vs-srl = signedness of the shifted value), F18
(inline mask strength-reduce -> bind to a local), F19 (address-shaped name
resolves implicitly but loses its gp marker -> use the registry's exact
name). Gate MATCH whole-binary SHA-1
e173426c157384ebf1b6caf8c6fea18a85a14af9.
2026-09-24 01:21:40 -04:00
Christopher Williams 130a043d91 phase9: absorption — 0x80099DC4 guarded byte-flag setter (316 regions / 307 bodies)
Per-guard inline reload of obj->p (finding-8 CSE prevention) + stack byte
argument (a1 was a 5th param at sp+16). Gate MATCH whole-binary SHA-1
e173426c157384ebf1b6caf8c6fea18a85a14af9.
2026-09-24 01:19:56 -04:00
Christopher Williams 9409338220 phase9: merge worker C resume batch — 315 regions / 306 distinct bodies
Worker C re-engaged on partition C closed 4 more (incl. 0x800450C4 which the
coordinator had recorded as a negative — C's source spelling beat the
coordinator's; the row is removed from the tracked index, the per-site
gp=-D_80121BFC override applied as recorded finding 16). 0x80065930 was
claimed by both C and the coordinator independently; skip-registered handled
the duplicate (coordinator's registration stood). Gate MATCH whole-binary
SHA-1 e173426c157384ebf1b6caf8c6fea18a85a14af9. C's F15 (do/while
counter-init-first for bottom-tested search loops) and F16 (mirrored-layout
lever is per-GUARD, tested guard by guard) recorded for the cookbook.
2026-09-24 01:18:14 -04:00
Christopher Williams 692b8cb800 phase9: absorption — 0x80065930 pair-table lookup (311 regions / 302 distinct bodies)
Coordinator matched the 30-entry key/value pair-table lookup on the first
attempt (array spelling reproduced the two walked pointers). Gate MATCH
whole-binary SHA-1 e173426c157384ebf1b6caf8c6fea18a85a14af9.
2026-09-24 01:17:17 -04:00
Christopher Williams afa690aea4 phase9: ledger — cycle-4 two-matcher state, pool difficulty confirmed 2026-09-24 01:16:13 -04:00
Christopher Williams c189e2fe22 phase9: add 0x80065494 negative (popcount scheduling) 2026-09-24 01:16:06 -04:00
Christopher Williams cca1d901be phase9: ledger — cycle-4 queue-fix effect and absorption negatives 2026-09-24 01:14:47 -04:00
Christopher Williams 38367bdee1 phase9: add 0x80042CE0 negative (paired-array geometry) 2026-09-24 01:14:28 -04:00
Christopher Williams 964a00f81c phase9: add 0x80018284 negative (struct-copy jr-slot shape) 2026-09-24 01:12:53 -04:00
Christopher Williams cd3e419e1e phase9: add 0x800450C4 negative (gp=-D_80121BFC site, alloc-tiebreak) 2026-09-24 01:11:44 -04:00
Christopher Williams 91d6bb2b10 phase9: ledger — cycle-3 queue fix and absorption update 2026-09-24 01:10:50 -04:00
Christopher Williams be04ecd5f3 phase9: add 0x80042D88 negative (strength-reduce sra5+sll2 class) 2026-09-24 01:10:32 -04:00
Christopher Williams e06deb5c1a phase9: refresh 0x800266A8 negative with the coordinator re-spelling result (3B) 2026-09-24 01:09:49 -04:00
Christopher Williams a38aa2603a phase9: recorded-negatives exclusion in sf3_triage (worker B, verified) + phase negatives index import
Worker B measured that recorded negatives cluster at the head of every
partition: 39 of the first 40 worklist rows and 57 of 271 tier-1 rows (21%)
were addresses an earlier session had already attempted and recorded. The
triage tool never read the negatives index, so every closed negative
returned to the queue head and workers rediscovered them.

Fix: sf3_triage reads the tracked config/near_match_negatives.tsv (a new
--negatives input) and excludes those rows as recorded_negative=69. The
tracked index was grown from 38 Phase-8 rows to 94 by importing 56 Phase-9
negatives from the workers' reports and the coordinator's absorption record
(filtered to unregistered; tracked rows win on conflict). Worklist
regenerated: the head is now genuinely fresh (0x800F9134, 0x80042D88,
0x800450C4, ...). 3 new synthetic tests; plan-level tests wired for the new
argument. The phase plan said extract negatives only at close; B's
measurement showed the harm is per-cycle, so the index is now a living
tracked input. Note for P9-T8: keep importing worker negatives each cycle.
2026-09-24 01:08:53 -04:00
Christopher Williams aa92ed22ea phase9: ledger — ADDI class extension and empty call-shape slice 2026-09-24 01:05:12 -04:00
Christopher Williams d1b9cf7ad1 phase9: extend trapping-arithmetic exclusion to the immediate ADDI form (worker B, verified)
Worker B found the exclusion detector's blind spot: opcode 0x08 (addi, traps
on overflow) appears in 7 of 1,666 worklist rows (frame adjustments
addi sp,sp,-28, loop counters) while 0 of 310 registered regions contains
one — the same disjointness signal as finding 26's R-type class. addiu (0x09)
is ubiquitous, so the 0x08 occurrences are the anomaly. Verified by the
coordinator from raw words: 7 rows, incl. 3 of partition A's 5 call-shape
rows (0x80011084, 0x800F3B10, 0x80010F30) and 0x800F3BB4 (previously
recorded as a separate coordinator negative — now explained by this class).
sf3_triage.trapping_arithmetic now counts opcode 0x08; worklist regenerated
(1,563 rows, excluded_trapping_arith=54). Synthetic test added.
P9-T5 route (a) widened: the immediate form is part of the class; the 7
ADDI rows are a ready-made minimal probe set for any cc1 candidate.
Also confirmed this cycle: the no-frame global-ra ISR family (ra saved to a
global, no stack frame — 0x801097A0 proved, 0x8010B420 pattern-transferred)
is a second library-asm class identical in kind to the CRT entry.
2026-09-24 01:05:01 -04:00
Christopher Williams 06121cd072 phase9: ledger — cycle 3 worker-B re-engagement, absorption negatives 2026-09-24 01:02:09 -04:00
Christopher Williams f8cdae42fd phase9: absorption batch 2 — 310 regions / 301 distinct bodies
Both worker-A-flagged high-value GTE rows closed by the coordinator:
0x80101C2C (nCLIP 0x480012 via lwc2/swc2/cfc2 asm, IR1-3 store + LZCR)
and 0x80102FA4 (mfc2 IR1/IR2 halfword stores + IR3 swc2 + LZCR). Added
gte_ldTRX/gte_ldTRY/gte_ldTRZ ($5-$7, translation block) to gtemac.h.
Gate MATCH whole-binary SHA-1 e173426c157384ebf1b6caf8c6fea18a85a14af9.

Bounded negatives recorded: 0x800F3BB4 (global-ra-save guard — CRT/library
asm pattern not reachable from C), 0x800B34A4/0x800A6658 (alloc-tiebreak),
0x800C3514 (alloc+layout), 0x800518BC (return-merge), 0x800F7930
(record-builder alloc), 0x800690E4 (loop-rotation), 0x80012A98
(scheduler-bound family).
2026-09-24 00:57:11 -04:00
Christopher Williams 345f5ecce6 phase9: coordinator absorption — 2 more regions (308 regions / 299 distinct bodies)
Coordinator absorbed partition B directly: 0x800F5AF8 (four pointer-slots
stored from constants — the globals at 0x8011A9E4 are POINTER VALUES read by
lw rt,sym then stored through, not direct symbol stores) and 0x80021FA8
(six 16-byte records, four fields zeroed via symbol+index, store-order fix).
0x800518BC recorded as a bounded return-merge negative. Gate MATCH
whole-binary SHA-1 e173426c157384ebf1b6caf8c6fea18a85a14af9.
2026-09-24 00:50:56 -04:00
Christopher Williams 85ae47d4a1 phase9: P9-T5 bounded investigation — route (a) closed, gap census + library-code evidence recorded 2026-09-24 00:46:59 -04:00
Christopher Williams 43201fa603 phase9: ledger — cycle-2 close, P9-T4 checkpoint crossed, all workers rotated 2026-09-24 00:44:15 -04:00
Christopher Williams 6d3a6ba434 phase9: bad-extent classification in sf3_triage (worker A's class, coordinator-verified)
Worker A reported nine worklist rows graded exact that are not function
starts. The coordinator verified the tell independently: a candidate whose
first instruction reads a register the range never defines (non-parameter),
or whose range has no jr/jalr return, is a wrong extent. Measured disjoint
from the matched corpus (7 worklist rows flagged incl. the runaway
0x801800C4 and the fallthrough 4-byte rows 0x80100808/0x80180808; 0 of 288
registered flagged). Implemented as excluded_bad_extent_start in sf3_triage
with 4 synthetic tests; worklist regenerated to 1,570 eligible rows.
2026-09-24 00:44:07 -04:00
Christopher Williams e523890b5f phase9: tracked worklist exclusions for the 0x80012A10 family and the maspsx-blocker row (0x8008A198) 2026-09-24 00:43:03 -04:00
Christopher Williams a106afe5ab phase9: merge worker A handoff — 306 regions / 297 distinct bodies
Worker A rotated out at 108 claims (+79 from its session) with a clean
handoff; final 4 rows verified MATCH by the coordinator. 18 new regions
gated MATCH whole-binary (c_regions=306, SHA-1
e173426c157384ebf1b6caf8c6fea18a85a14af9), make check green.

P9-T4 checkpoint (>=290 total) CROSSED at 297 bodies.
All three workers have now rotated out; the coordinator absorbs the
remaining partitions. Negatives census now 34 report rows from A alone
(25 match-class + 9 bad-extent triage), with the bad-extent class verified
independently by the coordinator (disjoint from 288 registered regions;
7 worklist rows flagged incl. the runaway 0x801800C4/0x80180808 that were
never excluded because they are fallthrough-graded).

Handoff notes recorded: two high-value unattempted GTE rows (0x80101C2C,
0x80102FA4 — need raw lwc2/swc2 asm with memory operands), 8 lever findings
for the next charter (srl=sra-unsigned, slti-sltiu 16-bit tell, single-exit
result shape, struct-assignment for a0/a1 loads, maspsx=off scope x2, side-
effect statement order, lui/lw address arithmetic, CSE-preventing symbols).
The bad-extent detector is implemented in sf3_triage with synthetic tests;
the regenerated worklist will exclude the class.
2026-09-24 00:42:33 -04:00
Christopher Williams 80a4e9e5ed phase9: merge 5 more — 288 regions / 279 distinct bodies
Worker A batch 10 incl. the finding-13 store-only callee caller, pointer-table
walk, byte-dispatch 2-arm (not switch). Three negatives recorded: epilogue-
order-variant THIRD data point 0x800FBD80 (class now 3 members outside CRT +
new arg-copy tell), alloc+storeform 0x800582AC (explicit lui/at form tied to
allocation), alloc-tiebreak 0x800161E0. Gate MATCH whole-binary SHA-1
e173426c157384ebf1b6caf8c6fea18a85a14af9.
2026-09-24 00:34:32 -04:00
Christopher Williams c286bc4355 phase9: merge worker C handoff close — 283 regions / 274 distinct bodies
Worker C rotated out on budget with a clean handoff (28 claims total, all
verified; 18 negatives with hypotheses). Its final 2 rows verified MATCH
(0x80101838 reopening closed via do/while + sentinel: this closes B's cycle-2
negative on the same address!; 0x8007C4A8). Handoff inheritance: orig.py
disassembly helper, F1-F14 findings confirmed, 2-byte free claim 0x800266A8
left with its exact hypothesis. Gate MATCH whole-binary SHA-1
e173426c157384ebf1b6caf8c6fea18a85a14af9.
2026-09-24 00:33:42 -04:00
Christopher Williams c160fa9326 phase9: merge 6 more — 281 regions / 272 distinct bodies
Worker A batch 9: if-conversion demo, pre-increment append, negate-magnitude,
guarded call pairs, epilogue-order-variant NEGATIVE 0x80100334 (finding 11's
'13 CRT sites' scoping corrected — this site is outside the CRT; recorded as
a third epilogue class data point), sched-tiebreak 0x8002515C. New symbol
D_80122160 (gp). Gate MATCH whole-binary SHA-1
e173426c157384ebf1b6caf8c6fea18a85a14af9.
2026-09-24 00:32:22 -04:00
Christopher Williams af9630b617 phase9: merge 7 more — 275 regions / 266 distinct bodies (worker A batch 8)
A's maspsx=off extension to CALL delay slots verified (0x80102B30: symbol-store
macro split around jal, 44B MATCH); third/fourth indirect-call wrappers through
D_8011FB4C; record-build shape; wrong-extent triage row 0x801BB450 recorded.
Gate MATCH whole-binary SHA-1 e173426c157384ebf1b6caf8c6fea18a85a14af9.
2026-09-24 00:29:40 -04:00