From dd15442e0975f72a6f47c423947cd32d247d5777 Mon Sep 17 00:00:00 2001 From: Christopher Williams Date: Thu, 24 Sep 2026 06:51:50 -0400 Subject: [PATCH] =?UTF-8?q?phase10:=20control-record=20corrections=20?= =?UTF-8?q?=E2=80=94=20symbol=20count=20380=20(not=20392);=20record=20empt?= =?UTF-8?q?y-merge=20pipeline=20pre-validation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- phase-ends/CURRENT_PHASE.md | 19 ++++++++++++++++++- phase-ends/logs/Phase10.md | 10 +++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/phase-ends/CURRENT_PHASE.md b/phase-ends/CURRENT_PHASE.md index ed07a93..26e19be 100644 --- a/phase-ends/CURRENT_PHASE.md +++ b/phase-ends/CURRENT_PHASE.md @@ -38,7 +38,7 @@ Revalidated at head `25bf4a3` (the Phase 9 closure commit), before any Phase 10 | `make check` (test + extents-verify + gate) | exit 0; `regions=409 disagreements=0 result=AGREE`; `c_regions=409 differing_bytes=0 result=MATCH` | | Rebuilt/original SHA-1 | `e173426c157384ebf1b6caf8c6fea18a85a14af9` (both) | | Synthetic suite | 229 tests, `OK` | -| Registry | **409 regions / 400 distinct bodies** / 392 symbols | +| Registry | **409 regions / 400 distinct bodies** / 380 symbols | | Firewall | 0 tracked paths under any prohibited root (506 tracked files) | ## Worklist state (regenerated at P10-T1) @@ -74,6 +74,23 @@ The exclusion arithmetic now reconciles exactly. Of the 139 unregistered negativ `delay_slot_start=1` + 6 with no derived extent (never candidates) = 139, and **0 survive into the worklist**. +## Merge-pipeline pre-validation (P10-T1) + +Before any claim existed, the full merge path was exercised end-to-end with an +**empty** claim set to prove the machinery cannot surprise the coordinator when +real claims arrive: + +``` +sf3_merge apply --exe 'extracted/SCUS_946.40;1' --extents config/function_extents.tsv \ + --regions config/regions.tsv --claims --symbols config/symbols.tsv \ + --out-regions ... --out-symbols ... +``` + +Result: `rejected=0 added_regions=0 added_symbols=0 regions_total=409 +symbols_total=380 result=MERGED`, and both candidate files are **byte-identical** +to the tracked registry and symbol file. So an empty merge is a no-op and the +candidate-gate-before-promote step is wired correctly for this phase. + ## Partitions (P10-T1) 3-way, generated by interleaving worklist ranks (tier mix preserved by construction). Files under diff --git a/phase-ends/logs/Phase10.md b/phase-ends/logs/Phase10.md index 29eaa45..c81d43e 100644 --- a/phase-ends/logs/Phase10.md +++ b/phase-ends/logs/Phase10.md @@ -18,7 +18,7 @@ operational contract, which Phase 10 inherits verbatim). | whole-binary gate | `c_regions=409 differing_bytes=0 result=MATCH` | | SHA-1 (both files) | `e173426c157384ebf1b6caf8c6fea18a85a14af9` | | synthetic suite | 229 tests, `OK` | -| registry | 409 regions / 400 distinct bodies / 392 symbols | +| registry | 409 regions / 400 distinct bodies / 380 symbols | | firewall | 0 tracked paths under any prohibited root (506 tracked files) | **Session probing.** Three fresh sessions were live in the repository. All three @@ -66,6 +66,14 @@ derived extent (never candidates) = 139, and **0 survivors** into the worklist. pairwise intersections 0/0/0 and union == the 1343-row worklist (proved at generation). Files under `.run/p10/` (ignored). +**Merge-pipeline pre-validation.** With no claims yet, the full merge path was +exercised end-to-end against an empty claim set: `rejected=0 added_regions=0 +added_symbols=0 regions_total=409 symbols_total=380 result=MERGED`, and both +candidate files came out byte-identical to the tracked registry and symbol file. +An empty merge is therefore a no-op and the candidate-gate-before-promote step is +wired correctly for this phase. (This also corrected a coordinator miscount: the +symbol registry holds 380 rows under 13 comment lines, not 392.) + **Control-record commit:** `0557281`. ---