From 6f39dc2a2c6ef2d975c522cc36da02ae6ba9bfdf Mon Sep 17 00:00:00 2001 From: Christopher Williams Date: Fri, 25 Sep 2026 00:33:00 -0400 Subject: [PATCH] phase12: record second-batch checkpoint 3 --- docs/MATCHING_COOKBOOK.md | 15 +++++++++++++++ phase-ends/CURRENT_PHASE.md | 17 +++++++++-------- phase-ends/logs/Phase12.md | 36 ++++++++++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+), 8 deletions(-) diff --git a/docs/MATCHING_COOKBOOK.md b/docs/MATCHING_COOKBOOK.md index 667449e..b62f98b 100644 --- a/docs/MATCHING_COOKBOOK.md +++ b/docs/MATCHING_COOKBOOK.md @@ -3393,3 +3393,18 @@ separate source-level statement. The same principle explains the earlier `0x8002D17C` `$5` queue binding and is distinct from finding 192's structural-first rule: first get the control/dataflow shape right, then preserve the register handoff that carries a value across that shape. + +### 194. Small framed rows still need exact struct and call-result dataflow (solo, Phase 12) + +The later small-row matches show two recurring traps. `0x800B6CB4` needs an eight-byte prefix in +its node view to place the link at +8, and its clear target is a different gp word from the head +pointer. `0x80029E88` passes the first helper's return value into the second helper; passing the +pre-call value creates an extra live local and a 12-byte length excess. `0x80086DBC` likewise needs +an unsigned global comparison and a `short` return to select `sltiu` and the final sign-extension. + +> **For a short exact row, verify the type-induced offsets and the value crossing each call before +> tuning register bindings. A one-field struct or a plausible pre-call argument can account for +> several instructions of apparent scheduler noise.** + +These are the same structural-first discipline as finding 192, applied to rows small enough that +a single mistaken offset or return edge dominates the entire comparison. diff --git a/phase-ends/CURRENT_PHASE.md b/phase-ends/CURRENT_PHASE.md index 1d51c44..a1f3f88 100644 --- a/phase-ends/CURRENT_PHASE.md +++ b/phase-ends/CURRENT_PHASE.md @@ -6,17 +6,18 @@ ## STATE — SOLO CONTINUATION, 2026-09-24 (current) -**703 bodies / 712 regions**, from 685 / 694 at the last session stop — **+18 bodies / +18 regions**. -The Phase 12 milestone remains 750 bodies, so **+47 remains**. The promoted whole-binary gate is green: -`c_regions=712`, `differing_bytes=0`, SHA-1 +**707 bodies / 716 regions**, from 685 / 694 at the last session stop — **+22 bodies / +22 regions**. +The Phase 12 milestone remains 750 bodies, so **+43 remains**. The promoted whole-binary gate is green: +`c_regions=716`, `differing_bytes=0`, SHA-1 `e173426c157384ebf1b6caf8c6fea18a85a14af9`; 344 synthetic tests pass and extents report -`regions=712 disagreements=0 result=AGREE`. +`regions=716 disagreements=0 result=AGREE`. -The requested second batch of 20 is underway. Eight additional bodies are now matched: +The requested second batch of 20 is underway. Twelve additional bodies are now matched: `0x800BC9C4`, `0x800BC8C4`, `0x8006BB0C`, `0x8002D17C`, `0x801029A0`, `0x80055958`, -`0x80023A4C`, and `0x8006BA3C`. Worklist regeneration is now 970 rows; -`excluded_already_registered=710` continues the already-characterised two-row registry lag and -is not a correctness issue because the 712-region gate proves the registry simultaneously. +`0x80023A4C`, `0x8006BA3C`, `0x80086DBC`, `0x8007759C`, `0x800B6CB4`, and `0x80029E88`. +Worklist regeneration is now 966 rows; `excluded_already_registered=714` continues the +already-characterised two-row registry lag and is not a correctness issue because the 716-region + gate proves the registry simultaneously. ## STATE — SESSION STOP, 2026-09-24 23:35 (historical; superseded by the state above, kept for provenance) **685 bodies / 694 regions**, from 602 / 611 at the Phase 11 close — **+83 bodies**. **Milestone 750 was NOT diff --git a/phase-ends/logs/Phase12.md b/phase-ends/logs/Phase12.md index d2edf6c..19bebeb 100644 --- a/phase-ends/logs/Phase12.md +++ b/phase-ends/logs/Phase12.md @@ -2131,6 +2131,40 @@ confirmed. **Batch checkpoint: 8 additional bodies / 8 regions matched; current count 703 bodies / 712 regions.** +### Batch task 9 — `0x80086DBC` (64 B) MATCH + +* Exact extent: `0x80086DBC..0x80086DFC`, 64 bytes, grade `exact`. +* An unsigned global comparison selects the zero-return path; the `short` return type supplies + the target's sign-extension of the helper result. +* Tracked source md5: `1549be88d8d7264f4e0f9f24e058e575`; fresh range and candidate gate were + zero-difference. Promoted gate: 713 regions; `make check` passed. + +### Batch task 10 — `0x8007759C` (72 B) MATCH + +* Exact extent: `0x8007759C..0x800775E4`, 72 bytes, grade `exact`. +* A gp-marked table pointer, 96-byte indexed stride, +12 entry displacement, and byte fields at + input offsets 41/59 produce the target's single helper-call sequence. +* Tracked source md5: `baa4964f01948de9b9a84c5eee5401d6`; fresh range and candidate gate were + zero-difference. Promoted gate: 714 regions; `make check` passed. + +### Batch task 11 — `0x800B6CB4` (76 B) MATCH + +* Exact extent: `0x800B6CB4..0x800B6D00`, 76 bytes, grade `exact`. +* The node view needs an eight-byte prefix for its +8 link. The source also distinguishes the + head pointer D_80122034 from the separate gp word g_8012277C cleared before walking. +* Tracked source md5: `bdb4741362227b317fb3937e7dec9bd1`; fresh range and candidate gate were + zero-difference. Promoted gate: 715 regions; `make check` passed. + +### Batch task 12 — `0x80029E88` (80 B) MATCH + +* Exact extent: `0x80029E88..0x80029ED8`, 80 bytes, grade `exact`. +* The second helper receives the first helper's return value, not the pre-call shifted value; + correcting that dataflow removes the extra saved local and matches the 24-byte frame. +* Tracked source md5: `d7be93899c764dd71c28322d30b6a191`; fresh range and candidate gate were + zero-difference. Promoted gate: 716 regions; `make check` passed. + +**Batch checkpoint: 12 additional bodies / 12 regions matched; current count 707 bodies / 716 regions.** + ### Bounded attempts in the second batch — stopped without registration * `0x800321F8`: explicit branch/goto and register-binding forms reached 80/88/92-byte variants but @@ -2164,3 +2198,5 @@ confirmed. * `0x8006BA3C` intermediate candidates were superseded by the final exact source above. * `0x800FEE3C` remains a bounded multi-exit dbr duplication row from the prior phase; no source was promoted in this batch. +* `0x80070454`: exact 72-byte initializer remained one call-block delay `nop` short after bounded + goto and nested-call forms.