[FIX] Reduction 02: package reduces to 68.6% — the genre reading confirmed, Reduction 01 corrected

Prediction recorded in Reduction 01 BEFORE this census, so it could fail: the
package's Part I is 'Grounding (quoted verbatim)' and quotes CLAUDE.md directly,
so Q should be non-zero where it was zero. Q=9. D=40, where the ruling had none.

                 ruling    package
  sound           8.5%      68.6%
  PERFORMATIVE      12          0      <- the genre signature
  BLEND              9         25
  INHERITED          4          0
  UNSOURCED-QUOTE    3          0      <- §1's header clause worked

Genre reading confirmed eightfold: a package proposes, a ruling determines.

CORRECTS Reduction 01's strong conclusion that 'the reduction arm collapses into
the synthetic arm'. On package prose repair touches 31.4%, not 91.5% — reduction,
not authoring, and the two arms stay distinct. That conclusion was correctly
bounded at n=1; the bound was the whole of its content and one document collapsed
it. Reduction 01 now carries the correction inline.

BLEND is now the blocker and is genre-independent: 25 of 33 quarantines, 7 of
them rows of the Part IV table, which pairs a quote with an end-state and a
verdict — three primitives by construction.

Two check findings, one good and one bad:

§3.2 CAUGHT A REAL TAGGING ERROR OF MINE. Unit 145 was tagged Q; it is a sentence
ABOUT a quotation, not a quotation, so not verbatim-as-a-unit. Corrected to D.
The check found it, the reading did not — the 'quoted but not traced' defect the
jurist caught on 2026-07-19, mechanised.

§3.3 GAVE A FALSE PASS, found by looking. Part VII 'Disconfirming evidence' IS a
collected limitations section under §2a — the exact section trial 03 showed the
model skipping wholesale — and the screen missed it because it never says
'limitations'. Widened; the package now correctly FAILS §3.3. But no pattern can
decide this: a section titled only 'Part VII' defeats any wordlist, and a control
now asserts that. §3.3 is a SCREEN, not a decision; §2a belongs in §4's judgement
residue. Fourth time in three days a passing check certified the code while the
property failed, and the fourth found by a person looking.

A=0 IN BOTH DOCUMENTS, and it is the same fact as the §2a failure seen from the
other side: we do not name assumptions inline, we collect them into a section.
Our best governance prose is written in exactly the shape that defeats the reader
the section was written for.

Also fixed: the tool was still printing 'NOT checked here: §3.2' after §3.2 was
implemented — under-claiming, but still a false statement about what ran.

Kernel v1.1 candidates are now evidence-backed and remain UNAPPLIED; v1.0 stays
frozen and a revision is a new experiment. The false-positive control remains
unrun and neither reduction produced a usable control document.
This commit is contained in:
David F Glidden
2026-08-02 17:57:53 +02:00
parent 1ebaf6aba5
commit 4408506ffa
6 changed files with 593 additions and 199 deletions
+86 -2
View File
@@ -147,13 +147,97 @@ check(
"over-suppression would hide real boundaries",
)
print("\nDefects found by contact with a real package (splitter v1.2.0):")
ENUM = "**1. The canonical inquiry — a source, March 2026:**\n"
ENUM = "**1. The canonical inquiry, March 2026.** Then a second sentence.\n"
espans = split_spans(ENUM)
check("enumerator doc tiles", verify_tiling(espans, ENUM), [])
eprose = [ENUM[s["start"]:s["end"]] for s in espans if s["kind"] == "prose"]
check(
"(d) '**1.' does not orphan as a fragment",
any(t.strip().startswith("**1. The canonical") for t in eprose),
True,
f"got {eprose}",
)
YEAR = "The clause was added in 2026. The next sentence follows.\n"
check(
"(d) a real boundary after a year still splits",
len([s for s in split_spans(YEAR) if s["kind"] == "prose"]),
2,
"enumerator rule must not swallow '…in 2026. The next…'",
)
FM = '---\ntitle: "A title"\nstatus: "DRAFT. Nothing applied."\n---\n\nBody prose here.\n'
fmspans = split_spans(FM)
check("frontmatter doc tiles", verify_tiling(fmspans, FM), [])
check(
"(e) frontmatter is line-oriented, not shredded",
[FM[s["start"]:s["end"]] for s in fmspans if s["kind"] == "frontmatter"],
['title: "A title"\n', 'status: "DRAFT. Nothing applied."\n'],
)
check(
"(e) frontmatter stays taggable",
all(s["kind"] in TAGGABLE for s in fmspans if s["kind"] == "frontmatter"),
True,
"excluding it would shrink the quarantine in the author's favour",
)
print("\nForbidden-heading detector (§3.3) — must fire, and must not over-fire:")
for h in ("## Limitations", "## What this does not do", "### Open questions",
"## Caveats and scope", "## Assumptions"):
"## Caveats and scope", "## Assumptions",
# The FALSE PASS this screen actually gave, on a real package.
"## Part VII — Disconfirming evidence, which the steward asked to be carried",
"## Evidence against", "## Known gaps"):
check(f"fires on {h!r}", bool(FORBIDDEN_HEADING_RE.search(h)), True)
for h in ("## Part I — Grounding", "## The ruling", "## Conditions",
"## What changed"):
"## What changed", "## Part IV — Consequence-trace"):
check(f"quiet on {h!r}", bool(FORBIDDEN_HEADING_RE.search(h)), False)
check(
"screen is defeated by a bare section number — it is a screen, not a decision",
bool(FORBIDDEN_HEADING_RE.search("## Part VII")),
False,
"recorded so the pass is never read as a §2a verdict",
)
print("\nQ-resolution (§3.2) — must find a real quote and REJECT a fabricated one:")
from reduce import AXIOM_SOURCES, check_q_resolution, normalise_quote # noqa: E402
CLAUDE = AXIOM_SOURCES["CLAUDE.md"]
if CLAUDE.is_file():
# One genuine verbatim clause, one plausible fabrication.
QDOC = (
"> The loop is load-bearing\n"
"\n"
"> The loop is entirely optional and may be removed\n"
)
qspans2 = split_spans(QDOC)
qidx = [i for i, s in enumerate(qspans2) if s["kind"] in TAGGABLE]
check("q fixture tiles", verify_tiling(qspans2, QDOC), [])
check("q fixture has two quotable units", len(qidx), 2)
tags = {qidx[0]: ("Q", "CLAUDE.md"), qidx[1]: ("Q", "CLAUDE.md")}
probs = check_q_resolution(qspans2, QDOC, tags, {"CLAUDE.md": CLAUDE})
check("genuine quote resolves", any(f"span {qidx[0]}" in p for p in probs), False)
check(
"FABRICATED quote rejected",
any(f"span {qidx[1]}" in p for p in probs),
True,
"a §3.2 that cannot reject an invented quote checks nothing",
)
bad = check_q_resolution(
qspans2, QDOC, {qidx[0]: ("Q", "not-an-axiom-source.md")}, {"CLAUDE.md": CLAUDE}
)
check("unknown source rejected", len(bad), 1)
else:
failures.append("CLAUDE.md unresolvable — §3.2 control did not run")
print(" FAIL CLAUDE.md not found")
check(
"normalisation tolerates emphasis and rewrap, not word changes",
(normalise_quote("> **The loop** is\nload-bearing") == "The loop is load-bearing",
normalise_quote("The loop is load bearing") == "The loop is load-bearing"),
(True, False),
)
print("\nReal document — the splitter must tile actual governance prose:")
REAL = Path(__file__).resolve().parent.parent / "skill-harvest-fix-lane-JURIST-RULING-2026-08-01.md"