@@ -1214,7 +1214,11 @@ causes of FACT-DIFF. Tracked in #364 with its own acceptance.
12141214 1 taxonomy mutant unclassified, 0 survivors, 0 forbidden reasons;
12151215- ** A2.2-S** cumulative A2 after-evidence on M1 against the existing R with
12161216 population T: fact shape MOVED as preregistered, MOS UNCHANGED, verdict
1217- UNCHANGED;
1217+ UNCHANGED. Landed in the commit carrying this line (10.6.13): one
1218+ governed run of the reviewed orchestrator (` e3995753b58c ` , tooling branch
1219+ ` claude/p037-a2.2 ` ) against treatment ` dab3db19c461 ` , population T, baseline
1220+ R; ` accepted=true ` , ` is_evidence=true ` , ` state=accepted ` , every claim and
1221+ every eligibility predicate true; evidence recorded at ` f621400 ` ;
12181222- ** A2.2-D** door registration: ` guarded_facts ` and ` guarded_functions ` become
12191223 known, fail-loud vocabulary on both doors, still semantically inert; the
12201224 instrument change, a new T/R round; phase B only after its evidence is green.
@@ -1509,3 +1513,73 @@ six defects it once found and reads four rewrites by meaning; it does not
15091513enumerate the extractor's other seams, the hostile census remains pairwise, and
15101514lambdas / local functions stay the separate nested-function gap. After A2.2-5
15111515no functionality is added: A2.2-S measures the whole of A2 once against T/R.
1516+
1517+ #### 10.6.13 A2.2-S: the cumulative governed measurement (REPOSITORY FACT)
1518+
1519+ Four names, kept apart: ** T** = ` 4a8e6582e10222403cd40adc9e95db7e0228a1c2 `
1520+ (the frozen population); ** R** = ` 5fd6bfa6abd4c2af7e53712af300cf66c97f2f50 `
1521+ (the baseline evidence recorded at T); ** treatment** = ` dab3db19c4611c116f37f2b0e49354a0fd9bf384 `
1522+ (A2.2-5, the tree A2.2-S measures); the ** evidence orchestrator** =
1523+ ` e3995753b58cfc2c6b48b712963df6c51c79af66 ` (` scripts/p037_cumulative_evidence.py ` ,
1524+ tooling branch ` claude/p037-a2.2 ` , byte-identical to its branch tip, pinned by
1525+ ` --orchestrator-commit ` , never edited to obtain this result); the ** S
1526+ evidence commit** = ` f6214004f38258ef1bb2244d38552f233bc3f214 ` (this commit's
1527+ parent), which carries the six files this section quotes verbatim from.
1528+
1529+ The run executed on the preserved M1 measurement machine (` P037_A2_MEASUREMENT_M1 ` ,
1530+ the same machine and toolchain pins that produced R and the A2.1 after-evidence),
1531+ from a tooling checkout independent of the measured checkout, in ` --mode evidence `
1532+ (no ` --stage ` ). Provenance, read from ` p037-a2.2-s-cumulative.json ` , all true:
1533+ the orchestrator is clean and byte-identical to its pinned commit; the measured
1534+ checkout's HEAD is exactly the treatment and was authenticated against the
1535+ instrument's module blobs before any import; the instrument (` ownlang/ ` ,
1536+ ` rust/ ` , ` scripts/own-check.sh ` , ` scripts/p037_evidence.py ` ,
1537+ ` scripts/p037_mos_snapshot.py ` , ` scripts/p037_verdict_snapshot.py ` ,
1538+ ` scripts/shadow_compare.py ` ) is object-identical at T, at R and at the
1539+ treatment; every one of the four governed takes is fresh evidence and every
1540+ compare against R is eligible; every one of the 138 fact documents anchored
1541+ (zero ` anchors_failed ` ); the execution profile is single across the whole run;
1542+ the tree is clean after. Two prior attempts on this same machine did not reach
1543+ a result and are not this record: the first hung indefinitely inside the
1544+ extractor (a dotnet child stuck in ` futex_do_wait ` , zero CPU consumed across
1545+ 40+ minutes, traced afterward to the pinned ` .NET SDK ` directory having gone
1546+ missing from disk mid-run) and was killed rather than left to silently retry;
1547+ the second, after the SDK was restored byte-for-byte from the untouched
1548+ provisioning recipe and re-verified against R's execution profile, was
1549+ REFUSED cleanly by the orchestrator's own eligibility check (`before/after
1550+ execution profiles differ` ) because the ambient ` dotnet` on ` PATH` had
1551+ silently substituted an unpinned system installation once the pinned one was
1552+ gone — a real provenance failure, correctly caught, nothing published. This
1553+ record is the third attempt, run only after the pinned SDK was confirmed
1554+ byte-identical to R's execution profile.
1555+
1556+ Result: ` state=accepted ` , ` accepted=true ` , ` is_evidence=true ` . All six claims
1557+ true — ` facts_moved ` , ` mos_unchanged_both_engines ` ,
1558+ ` verdicts_unchanged_both_engines ` , ` unexpected_fact_changes_zero ` ,
1559+ ` layer_engines_agree ` , ` verdict_engines_agree ` — and all nine eligibility
1560+ predicates true. 138 fact documents measured (1 ` repo-tree ` document over the
1561+ 81-file repo population, 137 individual corpus documents): 47 changed (1 from
1562+ ` repo-tree ` , 46 from the corpus), 91 unchanged, 0 unexpected — every one of
1563+ the 47 changes classified as confined to ` functions[*].guarded_facts ` and the
1564+ ` guarded_functions[] ` carrier, none touching a legacy body, a signature,
1565+ ` services ` , ` components ` , ` stats ` or the schema version. The governed takes
1566+ against R: MOS repo ` UNCHANGED ` (` facts_moved=1 ` , ` python_mos_moved=0 ` ,
1567+ ` rust_mos_moved=0 ` , ` after_parity_moved=0 ` ); MOS corpus ` UNCHANGED `
1568+ (` facts_moved=46 ` , ` python_mos_moved=0 ` , ` rust_mos_moved=0 ` ,
1569+ ` after_parity_moved=0 ` ); verdict/python ` UNCHANGED ` at both ` level=verdict `
1570+ and ` level=all ` over 137 files; verdict/rust ` UNCHANGED ` at both levels over
1571+ 137 files, its ` own-cli ` qualified/executed sha256 equal and
1572+ ` post_run_intact=true ` . The layer differential (per-document digests, both
1573+ engines, anchored against T's own re-derived facts and the treatment's):
1574+ Python mismatches ` {lowered: 0, summaries: 0, verdicts: 0} ` ; Rust mismatches
1575+ ` {lowered: 0, summaries: 0, verdicts: 0} ` ; Python/Rust cross-engine
1576+ disagreements at the treatment ` {lowered: 0, summaries: 0, verdicts: 0} ` (and
1577+ at the baseline, independently, the same all-zero); verdict-snapshot
1578+ cross-engine disagreements over the 137 corpus files `{verdict: 0, all: 0,
1579+ exit: 0}`.
1580+
1581+ A2 treatment is closed by this measurement: the sidecar's fact surface moved
1582+ exactly where A2.2 licensed it to, MOS and verdicts on both engines did not
1583+ move at all, and the two engines agree with each other and with themselves
1584+ before and after. Nothing here reads ` guarded_facts ` or ` guarded_functions[] `
1585+ into a verdict; that is A2.2-D's own instrument epoch, not this one's claim.
0 commit comments