Commit Graph

125 Commits

Author SHA1 Message Date
Christopher Williams e407d5d2f2 phase9: merge C 3 — 361 regions / 352 distinct bodies
Worker C closed 0x80031F2C (a row the coordinator had recorded as a
negative) via the F23 struct-assignment lever (second confirmation) —
stale negative removed. Also 0x800129C8, 0x8009132C (F22: unsigned char
local re-masks an already-zero-extended lbu — width-of-DESTINATION tell).
C's link-error finding recorded: 'small-data section too large' on a
region that built fine = a duplicate gp symbol (name mismatch), not a -G
problem. New negative 0x80042E68 pairs with 0x80042DD4; named pointer
lever untried. Gate MATCH whole-binary SHA-1
e173426c157384ebf1b6caf8c6fea18a85a14af9.
2026-09-24 01:57:36 -04:00
Christopher Williams 8300f855a5 phase9: ledger — cycle-4 349 bodies, gate-incident and F19 recurrences 2026-09-24 01:52:48 -04:00
Christopher Williams cd60c6b3ea phase9: merge worker C 3 — 358 regions / 349 distinct bodies
3 tier-2 frames from C (0x800A6840, 0x8002C728, 0x8002E968). Gate DIFF
avoided: C's 0x8002C728 used the name g_80121B84 which resolves implicitly
WITHOUT the gp marker (F19) — its local superset carried a g_-marked row so
C's own run matched, but the tracked registry only has D_80121B84. Fixed the
source to the tracked name; re-verified MATCH. C's 0x80025070 'negative'
corrected: that row is the coordinator's registered claim (stale index
entry removed). C's address-arithmetic charter warning (lui + negative
displacement must be hand-derived; five occurrences) recorded. Gate MATCH
whole-binary SHA-1 e173426c157384ebf1b6caf8c6fea18a85a14af9.
2026-09-24 01:52:24 -04:00
Christopher Williams 814340cb20 phase9: merge B 3 — 355 regions / 346 distinct bodies
Worker B: 3 more tier-2 frames (0x80036328, 0x800AA2B4, 0x80021FF4 — the
latter with the base+offset decode and the clearest finding-13 scratch
constant yet) + symbol D_80121978 (gp). 23 new bodies this cycle.

GATE INCIDENT: the first candidate gate DIFFed with 4 extra bytes because
src/func_80025070.c was DELETED from the working tree after my commit
( status) — the build used a stale/wrong object. Restored from git and
re-gated clean. Lesson recorded: every tracked src/ file is a claim; a
registry row whose source is missing breaks the whole-binary gate with a
cascade, so the pre-gate 'git status src/' check must catch deletions too.
Gate MATCH whole-binary SHA-1
e173426c157384ebf1b6caf8c6fea18a85a14af9.
2026-09-24 01:51:09 -04:00
Christopher Williams a23222dcfb phase9: ledger — hygiene catch (registry sources must be committed) 2026-09-24 01:47:03 -04:00
Christopher Williams 29e89ad999 phase9: commit worker B's report-5 sources (registry already carried them; sources were omitted from the earlier merge commit) 2026-09-24 01:46:54 -04:00
Christopher Williams 99626648b3 phase9: ledger — context rotation plan, maspsx limitation 2026-09-24 01:46:02 -04:00
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