From f2cc730ae81a2805ba47595b59be82aa9d2e8bd3 Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Tue, 18 Aug 2026 02:20:59 -0600 Subject: [PATCH] chore(phase-31): S54 checkpoint refresh + wave-metrics row for wave W (412 banked, fleet 95.9/91.5/97.04) --- docs/family-cousins.md | 18 ++++++++-------- docs/family-hseq.md | 2 +- docs/wave-metrics.md | 29 ++++++++++++++++++++++++++ phase-ends/CURRENT_PHASE.md | 41 ++++++++++++++++++++++++++++++++++--- 4 files changed, 77 insertions(+), 13 deletions(-) diff --git a/docs/family-cousins.md b/docs/family-cousins.md index 6d1e20e589..56deeab40e 100644 --- a/docs/family-cousins.md +++ b/docs/family-cousins.md @@ -1,6 +1,6 @@ # P30 S49 — cousin-unit survey (similarity tier over the open frontier) -> Generated by `tools/family_cousins.py` at HEAD `commit:2511` from `.run/family_hseq.json` + the binary sigs (R32-checked against an independent stub recount — a stale map fails loud). Compare digests only at the same HEAD. +> Generated by `tools/family_cousins.py` at HEAD `commit:2515` from `.run/family_hseq.json` + the binary sigs (R32-checked against an independent stub recount — a stale map fails loud). Compare digests only at the same HEAD. > > **A unit is a CANDIDATE grouping** — same-source cousins split by skeleton drift (insertion/deletion; the li-expansion class). Cousins need a per-member seeded CRACK, never a `family_sweep` remap. The whole-binary byte-gate stays the sole arbiter. @@ -8,11 +8,11 @@ | category | units | open fns | open ins | lever | |---|--:|--:|--:|---| -| A-prop | 442 | 2082 | 93021 | family_sweep (propagation) | -| seeded | 360 | 892 | 33498 | seeded crack — edit a >=0.85-similar MATCHED body | -| cousin-multi | 1187 | 4070 | 167934 | 1 crack seeds the unit's other members | -| cold | 3039 | 3039 | 198450 | full-price crack (the honest unique tail) | -| **total** | **5028** | **10083** | **492903** | | +| A-prop | 443 | 2088 | 93423 | family_sweep (propagation) | +| seeded | 361 | 892 | 33782 | seeded crack — edit a >=0.85-similar MATCHED body | +| cousin-multi | 1182 | 4056 | 166475 | 1 crack seeds the unit's other members | +| cold | 2979 | 2979 | 193172 | full-price crack (the honest unique tail) | +| **total** | **4965** | **10015** | **486852** | | ## Top units by open instructions (whole-cluster weight) @@ -45,9 +45,9 @@ | 25 | cousin-multi | 810 | 10 | 2 | · | · | `ov_SC01_005:0x8017e108` (84 ins ×5) | | 26 | A-prop | 798 | 3 | 1 | 1.0 | `ov_SC01_000:0x80130d48` | `ov_SC01_077:0x80130d48` (266 ins ×3) | | 27 | cousin-multi | 784 | 4 | 1 | · | · | `ov_SC03_108:0x8017ffd0` (196 ins ×4 jr) | -| 28 | A-prop | 782 | 7 | 6 | 1.0 | `md_SC03_077:0x801ef9c0` | `ov_SC02_000:0x80181e70` (122 ins ×2) | -| 29 | cousin-multi | 767 | 15 | 7 | 0.839 | · | `ov_SC03_028:0x8018966c` (63 ins ×4) | -| 30 | seeded | 752 | 14 | 10 | 0.921 | `ov_SC02_027:0x8017f6d4` | `ov_SC02_027:0x8017f858` (48 ins ×3) | +| 28 | cousin-multi | 767 | 15 | 7 | 0.839 | · | `ov_SC03_028:0x8018966c` (63 ins ×4) | +| 29 | seeded | 752 | 14 | 10 | 0.921 | `ov_SC02_027:0x8017f6d4` | `ov_SC02_027:0x8017f858` (48 ins ×3) | +| 30 | A-prop | 684 | 6 | 5 | 1.0 | `md_SC03_077:0x801ef9c0` | `ov_SC02_000:0x80181e70` (122 ins ×2) | | 31 | cousin-multi | 680 | 8 | 2 | 0.7 | · | `md_SC03_077:0x801efb58` (87 ins ×4 jr) | | 32 | cousin-multi | 668 | 3 | 3 | · | · | `ov_SC02_017:0x80186770` (230 ins ×1) | | 33 | cousin-multi | 658 | 14 | 5 | · | · | `ov_SC04_018:0x80181124` (52 ins ×4) | diff --git a/docs/family-hseq.md b/docs/family-hseq.md index fb980da289..1762633e85 100644 --- a/docs/family-hseq.md +++ b/docs/family-hseq.md @@ -5,7 +5,7 @@ > Generated by `tools/family_hseq.py` from the 212 binary sigs + per-binary src stubs. Ranked by TEMPLATABLE byte-weight (PURE+IMM members × nins × 4). The byte-gate is the arbiter. > -> **Scope (212 binaries): 141 location overlays + 70 md_* modules + the resident · MAIN IS EXCLUDED** · generated at HEAD `commit:2514` · stub set derived from `corpus.stubs` — the same oracle `progress.py` counts, so same-tree overlay totals agree by construction; compare digests only at the same HEAD. +> **Scope (212 binaries): 141 location overlays + 70 md_* modules + the resident · MAIN IS EXCLUDED** · generated at HEAD `commit:2515` · stub set derived from `corpus.stubs` — the same oracle `progress.py` counts, so same-tree overlay totals agree by construction; compare digests only at the same HEAD. **Fleet (overlays):** 97.2% fn / 96.4% instr / 92.4% distinct-code matched. Unmatched: 10,015 instances / 486,852 ins (8,648 distinct classes). diff --git a/docs/wave-metrics.md b/docs/wave-metrics.md index 859a316eb2..65500347a3 100644 --- a/docs/wave-metrics.md +++ b/docs/wave-metrics.md @@ -261,3 +261,32 @@ that pointer all along while the card builder discarded it. fleet-wide 60-200 mass band thinning under `--rank total`. Each group is a whole-binary rebuild, so the gate cost per banked instruction is rising even while the bank rate holds. At ~12 groups, re-open the band question against the velocity ledger rather than drawing another wave on reflex. + +## Wave W (P31 S54) — the UNKNOWN lane, and the selector that was overriding the prompt + +| | wave V | **wave W** | +|---|--:|--:| +| cards / drafted ins | 70 / 6,503 | 71 / 6,500 | +| **gate groups** | 9 | **3** | +| **drafts per rebuild** | 7.8 | **24.3** | +| standalone MATCH | 69/70 | **71/71 of the agents that ran** (2 lost to server rate-limiting) | +| banked | 68 | **68** | +| mechanical siblings | 25 | **0** | +| index_gaps -> confirmed / rejected / already-covered | 67 -> 14 / 9 / 76 | 68 -> 4 / 3 / 41 | + +**The draw is the story.** Wave W's first draw came up SHORT — 63 cards, 5,647 ins, 10 gate groups — +continuing 5 -> 7 -> 9. Probing the atlas rather than accepting it: **`UNKNOWN` held 607 of the 1,179 +in-band members, more than every other lever lane combined**, and `build_wave_atlas`'s default +`--levers` excluded it — while the wave PROMPT tells every agent that UNKNOWN drafts like any other +lane. The tool was silently overriding the doctrine, and the "thinning frontier" was a default flag. + +**Two costs, both real, recorded so the next draw is a choice and not a reflex:** +* **Zero siblings.** UNKNOWN groups are mostly singletons: waves T/U/V got 49/34/25 functions free + from the remap, W got none. Face mass and delivered mass are different numbers (§193-A/`--rank + total`), and the UNKNOWN lane maximises the first at the expense of the second. +* **Harvest yield fell to 4** from 14. Partly the seeding (three sessions of laws off the table), + partly that this lane's functions are ordinary — the atlas could not name a lever precisely because + there was no distinctive one to name. + +**Gate-group concentration is the wall-clock lever overnight**: 3 rebuilds instead of 9 is roughly an +hour back per wave, and wall-clock — not tokens — is what bounds a session that runs waves in series. diff --git a/phase-ends/CURRENT_PHASE.md b/phase-ends/CURRENT_PHASE.md index a5e75265f5..bf281ebfdf 100644 --- a/phase-ends/CURRENT_PHASE.md +++ b/phase-ends/CURRENT_PHASE.md @@ -229,23 +229,58 @@ R22 clean-fleet **213/213** after every banked batch · tools-health green · 0 byte-neutral only if every existing USE SITE still compiles unchanged — and prefer editing the draft, which verifies in seconds, over the TU, which costs a rebuild and risks the whole file. +- 2026-08-18 — **WAVE W: 71/71 drafted, 68 banked in THREE gate groups — and the draw exposed that the + SELECTOR had been overriding the DOCTRINE.** The first draw came up short (63 cards / 5,647 ins / + 10 groups, continuing 5 -> 7 -> 9), so I probed the atlas instead of accepting it: **UNKNOWN held + 607 of the 1,179 in-band members — more than every other lane COMBINED — and + `build_wave_atlas`'s default `--levers` excluded it**, while the wave PROMPT tells every agent + "UNKNOWN does NOT mean hard — it means the atlas could not name a lever ... UNKNOWN cards draft + like any other lane (measured across waves O-S)". Redrawn with UNKNOWN in: **73 cards / 6,500 ins + in 3 GATE GROUPS = 24.3 drafts per rebuild** (T 14.2 · U 10.4 · V 7.8). Result: **71/71 of the + agents that ran matched** (2 died on server rate-limiting and are released back to the pool), + **68 banked** (ov_SC03_105 26/26 · md_SC07_004 34/36 · ov_SC06_006 8/8 — the first MODULE binary + drafted this session). UNKNOWN is now a DEFAULT lane (§198). **Recorded cost: zero siblings** — + UNKNOWN groups are mostly singletons, so the free remap that gave T/U/V 49/34/25 gave W nothing. + Concentration and sibling mass trade against each other; pick per wave. + +- 2026-08-18 — **§196 `decl_prior`: the card now carries the fleet's declaration consensus.** Chosen + by measurement, not intuition: wave V's tokens are **88.3% drafting / 8.4% repair / 3.2% reconcile** + at **9.3 match_one compiles per agent**, so the lever is what a drafter must GUESS before its first + compile. Two such guesses are answered in the tree — callee arity/return type (§195-A: the asm has + NO tell either way, the procedure is a two-arity A/B) and global type (every CONFLICTING-EXTERN + drop). `tools/decl_prior.py` indexes 4,162 files -> **67,094 symbols** (9,739 with a banked + DEFINITION); cards carry the rows for their own target's symbols, ranked DEF > TU (authoritative, + law 2) > FLEET modal + rivals with counts. I did NOT build the offset-width prior I first sketched: + the `.s` already gives access width unambiguously (`lh`/`lhu`/`lw`), so it would have been + redundant. Structs deferred to the readability pass per Drew. + +- 2026-08-18 — **§197 harvest (4 confirmed / 3 rejected / 41 already-covered), and one entry is banked + CONTESTED.** Two verifiers confirmed the same phenomenon (`lhu ; sll 16 ; sra 16+K` where the + target has `lh ; sra K`) and attributed it to DIFFERENT passes — cse's `fold_rtx` associative block + (with `-da` dumps showing the middle insn already gone in `x.i.cse`) vs combine preferring the + count-merge. R34 forbids reading agreement between disagreeing oracles as corroboration, so the + tell and the cure (a zero-byte asm re-tie; a FRESH TEMP works with no second SET at all) are banked + and the pass question is recorded open. Both verifiers independently **byte-refuted §136 type-form + rule 9's cure**: `u16 v[4]` and `SVECTOR v` compile byte-identically in rule 9's own context. + ## 🛑 SESSION CHECKPOINT — S54 FINAL (2026-08-17). Phase 31 CONTINUES. NOTHING IN FLIGHT. -**HEAD `commit:2509` · tree clean except Ghidra `db.*.gbf` restart-noise (R23: do NOT stage) · +**HEAD `commit:2515`+ · tree clean except Ghidra `db.*.gbf` restart-noise (R23: do NOT stage) · R22 `make check-all` = 213 passed / 0 failed of 213 from a CLEAN tree (run 3x this session, after each wave) · EXE `143dbb89` · 0 NON_MATCHING.** No process running, no cron armed, no workflow in flight. Drew pushes. -### Banked this session: 344 functions (235 gated heads + 108 mechanical siblings + 1 main) +### Banked this session: 412 functions (303 gated heads + 108 mechanical siblings + 1 main) | lane | banked | notes | |---|--:|---| | wave T — mass band, 5 groups | 70 of 70 | **zero drops** — first wave ever to bank every byte-verified draft | | wave U — mass band, 7 groups | 73 of 73 | **100% drafted AND 100% banked**; 15% fewer tokens, 64% of the wall-clock | | wave V — mass band, 9 groups | 68 of 69 | 8 of 9 groups clean | | mechanical siblings (`family_sweep --hseq`) | 49 + 34 + 25 = **108** | ~0 tokens; 9 failed of 112 attempts | +| wave W — UNKNOWN lane, 3 groups | 68 of 70 | 71/71 drafted; 0 siblings (UNKNOWN groups are singletons) | | §180 leftover sweep | 24 | byte-perfect drafts already on disk from waves M/O/P/R/S | -**Fleet 95.9% instr-weighted · 91.4% distinct-code · 97.02% fn-count · MAIN 20.5%.** +**Fleet 95.9% instr-weighted · 91.5% distinct-code · 97.04% fn-count · MAIN 20.5%.** (Session start: 95.6 / 90.8 / 96.92.) ### THE FIVE RESULTS THAT OUTLIVE THE COUNT