feat(propose,cli): the coverage gap had one cause, and round 7's own decomposition did not reproduce
Round 7 named two open items: a table-block candidate displacing a declared
heading (26 041 characters between entries, `md` at 3 of 4 declared headings)
and 17 590 characters after the last entry, never examined. Measured on
`a364ef4`, the first premise does not reproduce and the second is not a
separate mechanism.
`md` recovers 4 of 4, not 3 of 4. D1 (`--keep-table-heading`) is the repair
for exactly the mechanism round 7 § 5 describes, and round 7 moved it into
the default in the same commit -- so § 5 is a pre-move measurement presented
as the post-move state. That is round 7's own trap, stated in its own report:
a number about a rule is a measurement of a configuration. Nothing held the
cell, which is why it could be wrong and stay wrong.
The remaining gap has ONE cause. Every rule closes a span against the NEXT
MARK; three steps then remove a mark after its neighbour's `end` was fixed
against it. The orphan check leaks 18 527 characters over 15 of 39 documents,
`fold_units` clause 1 leaks 7 514 between entries, and the same clause on the
last run leaks all 17 590 tail characters -- with `unit_fold=False` the corpus
tail gap is 0. Round 6 already established the principle (filter at admission,
let the mark above carry the text) and it was never applied post-filter.
`--close-span-gaps` states it once, after the fold, where every removal has
happened: a span runs to the next SURVIVOR, the last to the end of the text.
It adds no boundary. Measured: 43 631 characters (2.51 %) -> 0, entries
429 = 429, K2 concepts 436 = 436, the operator's folder 52 md = 52.
All four acceptance conditions hold at once. The 12-position reference is
label-identical -- 11 of 12 under |F|[3]=12 and 10 of 12 under |F|[3]=11,
both readings reported, not one position moved. hit@8 holds [1,1,1,1,1,-] on
the round 8 bundle (436), the round 7 default (436) and Arm B (629), and the
known-negative reproduces on the new bytes: `--no-tie-shared-rank` gives
[2,1,1,1,1,-].
The pin is rebuilt against the default that actually ships
(`K2-bundle-default-20260911`, 832 files, digest 8c93e5e3...); two independent
builds of it differ in nothing, `log.md` included.
Two measurement failures are recorded rather than hidden. The corpus identity
check first used `xargs` without `-print0`, every filename split on its
spaces, `shasum` read nothing, and both sides agreed on a digest of the
failure; a control against the digest of empty input separated them. And the
smoke build cannot prove the flag arrives -- the operator's folder has a
coverage gap of zero already, so `diff -rq` is 0 either way; the plumbing has
its own test on a document that has the defect.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
a364ef4c7d
commit
956714594d
8 changed files with 592 additions and 22 deletions
34
CLAUDE.md
34
CLAUDE.md
|
|
@ -276,16 +276,17 @@ and fixtures, never code.
|
|||
collide); `--ingested-at` and `--proposed-at` default to one shared epoch
|
||||
constant rather than the clock, because a wall-clock default takes
|
||||
rebuild-equals-incremental away from anyone who omits them.
|
||||
**Eight segmentation rules are REACHABLE here, and since 2026-09-10 ALL
|
||||
EIGHT are ON by default** -- `--outline-run 3`, `--table-grid` and
|
||||
**Nine segmentation rules are REACHABLE here, and since 2026-09-11 ALL
|
||||
NINE are ON by default** -- `--outline-run 3`, `--table-grid` and
|
||||
`--unit-fold` since 2026-09-08, `--drop-wrapped-outline` and
|
||||
`--outline-gate` since 2026-09-09, `--sheet-section-rows`,
|
||||
`--keep-table-heading` and `--first-span-from-zero` since 2026-09-10, each
|
||||
`--keep-table-heading` and `--first-span-from-zero` since 2026-09-10, and
|
||||
`--close-span-gaps` since 2026-09-11, each
|
||||
with an explicit opt-out (`--outline-run 0`, `--no-table-grid`,
|
||||
`--no-unit-fold`, `--keep-wrapped-outline`, `--no-outline-gate`,
|
||||
`--no-sheet-section-rows`, `--no-keep-table-heading`,
|
||||
`--no-first-span-from-zero`) that together reproduce the pre-move bytes --
|
||||
measured, `diff -rq` 0 differences, not asserted. **The 2026-09-09 pair is one
|
||||
`--no-first-span-from-zero`, `--no-close-span-gaps`) that together reproduce
|
||||
the pre-move bytes -- measured, `diff -rq` 0 differences, not asserted. **The 2026-09-09 pair is one
|
||||
decision and cannot be split**: the gate takes `pdf` from 2 of 8 to 5 of 8
|
||||
and the pair takes it to 7 of 8 (the sheet 5 of 12 -> 10 of 12, `docx`
|
||||
unchanged at 3 of 3). **The gate is G1+G2:** Arm D's RECOVERED headings are
|
||||
|
|
@ -336,10 +337,27 @@ and fixtures, never code.
|
|||
decision cites belongs to another configuration:** Arm F's 5 of 12 was
|
||||
measured with `--table-grid` ON; without it the same sample scores 2 of 12
|
||||
and `docx` 0 of 3, because the fold's table clause has no joined table to
|
||||
fold. The eight: `--outline-run N` (Arm D), `--table-grid` (Arm E),
|
||||
fold. The nine: `--outline-run N` (Arm D), `--table-grid` (Arm E),
|
||||
`--unit-fold` (Arm F), `--keep-table-heading` (D1), `--sheet-section-rows`
|
||||
and `--drop-wrapped-outline` (both D3), `--outline-gate` (G1+G2) and
|
||||
`--first-span-from-zero`, each passed to the proposer unchanged. That last
|
||||
and `--drop-wrapped-outline` (both D3), `--outline-gate` (G1+G2),
|
||||
`--first-span-from-zero` and `--close-span-gaps`, each passed to the
|
||||
proposer unchanged. **The last two are the same defect at two ends and
|
||||
NEITHER is a segmentation rule**: a mark removed after its neighbour's span
|
||||
was closed takes that text out of the plan. Round 8 measured the whole
|
||||
remainder -- 43 631 characters, 2.51 %, over 8 of 32 documents with a plan --
|
||||
down to **0**, with the concept count identical at 436 and every hit@8 row
|
||||
holding rank 1 on both K2 bundles and the reference sheet label-identical at
|
||||
11 of 12. Three steps leak: the orphan check (18 527 characters over 15 of
|
||||
39 documents), `fold_units` clause 1 between entries (7 514) and the same
|
||||
clause on the last run (all 17 590 tail characters; with `unit_fold=False`
|
||||
the corpus tail gap is 0). **Round 7's own § 5 does not reproduce**: it
|
||||
reports `md` at 3 of 4 declared headings and a `rule:table-block` displacing
|
||||
`## 3 Prising`, but D1 -- the repair for exactly that -- became the default
|
||||
in the same commit, so the number describes the configuration that existed
|
||||
before the move. On `a364ef4` the default recovers **4 of 4**, and
|
||||
`tests/test_md_declared_headings.py` now holds the cell with its cause as a
|
||||
known-negative. Report:
|
||||
`docs/2026-09-11-k3-runde8-tabellblokk-og-siste-spenn.md`. That last
|
||||
one is ON since 2026-09-10 and is not a segmentation rule at all -- it adds
|
||||
no boundary, and the K2 concept count is identical with and without it
|
||||
(425 = 425 on the 2026-09-09 default). It repairs a measured loss: **32 of
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue