[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:
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user