llm-ingestion-okf/docs/2026-09-10-r3-release-v081.md
Kjell Tore Guttormsen 81d7194e20 docs: measurement prose names no document by its numbers — green
Section totals, a page count and build sizes identified one reference
document and one generated HTML corpus to anyone who knows them. They are
written as N, M, an offset of N or a share in docstrings, comments, help
text, reports, README, CLAUDE.md and the changelog; no measured relation
changes. Sums that let N be worked back are written in words. The
`okf quality --fasit` bar is 999/1000 (99.9 %), just under the known-good
arm's measured share, and every build measured keeps its verdict.

Red with the local list widened to those numbers: 52 tracked files. Green: 0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-23 14:52:03 +02:00

7.3 KiB

R3: release v0.8.1

A patch release and nothing else. It carries round 16's ranking rule (--title-covered) to a reproducible ref so a downstream consumer can re-measure its product (R2b) against a tag rather than against a branch tip. No new functionality, no behaviour change in src/, no push.

Tag: v0.8.1, local and annotated, on 3daf983 (chore(release): 0.8.1). v0.8.0 stays on 4d1f9d3 and v0.7.0 on 1260fac -- verified, both still resolve there.

1 What this round did, and what it did not

Did: the version on both lines it lives on (pyproject.toml and src/llm_ingestion_okf/__init__.py), round 16's changelog entry closed as [0.8.1] with one bullet added for the rule's measured downside, five install lines to @v0.8.1, the tag-history list given a current row and the previous one demoted, two prose lines and one test-count history sentence corrected where the tag would otherwise make them false, one commit, four gates, one tag.

Did not: no extractor, no arm, no flag moved. --pdf-outline and --bold-title stay OFF and --title-covered stays ON exactly as round 16 shipped it -- a release does not re-verify a default. No uv lock, no new dependency, docs/ history not rewritten, K3-15 not started, nothing pushed.

2 Premises, re-measured before building on them

Every premise the order carried reproduced, except one (SS 3).

premise re-measured
base is 4d1b522, tree clean 4d1b522, git status --short empty
v0.8.0 on 4d1f9d3, v0.7.0 on 1260fac both confirmed
git ls-remote origin refs/heads/main 078b7df -- everything since is unpushed
remote carries no v0.8.0 confirmed: newest remote tag is v0.7.0
install lines: README 4, llms.txt 1 confirmed on HEAD before editing
suite in the worktree 1582 passed, 1 skipped; 1583 collected
suite in a frozen export 1573 passed, 1 failed, 9 skipped -- the failure is test_the_four_existing_goldens_are_untouched, the export artefact (it runs git status against a repo root an export does not have)
ruff 0.16.6
okf check rule count 15, so K3-15 has not landed
okf --version still not a flag; version read with importlib.metadata

3 The deviations, stated before the work rather than after

The push list has three lines, not two. git ls-remote origin refs/heads/main is 078b7df and the remote carries no v0.8.0 at all, so the operator has to push main, v0.8.0 and v0.8.1. Measured with ls-remote against the remote, never against the local origin/main ref.

The downside the changelog had to state was in no tracked file. grep -rn 'RITB\|NS3935' over docs/ skills/ tests/ src/ returns nothing that records it (the control: the same grep finds NS3935 elsewhere, so it can find). It arrived from the order alone, so it was reproduced here before being published: on the five-document folder, built to scratch, the same question delivers the answering section at rank 1 with --no-title-covered and at rank 2 at the shipped default, with the other seven delivered places unchanged. The changelog states that at form level. The order's further claim -- that three other probe questions on the same folder improved -- was NOT reproduced here and is NOT published; leaving out a favourable number that was not measured in this round is the conservative cut, not a contradiction of it.

The XML folder is not one file. The order said it holds exactly one file. It holds 110: the one NISO-STS xml, and 109 images under graphics/ (43 png, 41 jpg, 25 bmp) which door B reaches because it walks recursively. The run reports them as extractor_unknown 109/110 -- coded, never silent -- and the concept count is unaffected. This is the repository's own recorded shape for that product, not a new defect.

The changelog's own row differs slightly from the order's summary. The order compressed hit@50 to "5/6 -> 6/6"; round 16's entry, which measured it, records 5/6 at default k and 6/6 at --k 50 before the rule. The entry's number governs and was not rewritten.

4 The four gates, after git add and after commit

ruff 0.16.6. ruff check src tests tools -- All checks passed. ruff format --check . -- 118 files already formatted. mypy src -- no issues in 21 source files. pytest -q -- 1582 passed, 1 skipped, 1583 collected, which is the figure the README publishes, re-measured on the release commit itself. uv sync --frozen --extra extract is the install that makes mypy src pass; plain --frozen drops the extra and mypy falls on pdfplumber.

5 The acceptance gate: installation FROM THE TAG

No uv tool install, no uv tool uninstall, no --force. The operator's PATH was measured and not touched: which okf reports not found both before and after this round -- it was already empty when the round started. Everything ran from the export's own venv.

git archive v0.8.1 | tar -x -C /tmp/r3-release-v081/r3-install/export
cd <export> && uv sync --frozen --extra extract
row measured
version from the tag's bytes 0.8.1 (importlib.metadata)
suite in the export 1573 passed, 1 failed, 9 skipped -- the export artefact
okf project on the five-document folder 26 concepts of 5 documents, 52 md, 0 of 5 rejected
HTML corpus (M files) proposed M plan(s); 0 with no boundary; 0 unreadable, M of M
reference standard, XML N concepts of its N declared titled sections at shipped defaults, no arm flag; 109 of 110 files are images and are coded extractor_unknown
okf check --skill ... --payload ... conformant, 15 rules, 0 findings

Bundles were built to scratch. ~/okf-test/dokumenter and a downstream consumer repository were read and never written.

6 Honesty limits

  • One machine, one interpreter. The installation is measured on this Intel Mac with the interpreter uv resolved here. It is not a portability claim.
  • okf project's 26 is ONE corpus of five documents. It is the same five every previous round used, so it is a regression control, not a sample.
  • M of M and N of N are ONE publisher's files from ONE product. Both numbers say the reader did not lose anything against its own denominator; neither says anything about a document nobody in that pipeline wrote.
  • The grep criterion is deliberately NOT "0 hits on v0.8.0". Two bare occurrences remain and must: the tag-history row, which exists to tell a reader what an older tag was, and the test-count history, which records what the figure was through each release. A criterion that drove them to zero would be deleting history to satisfy a query. Both greps ran with a known-positive control (@v0.8.1 = 5) so the zero is a measurement rather than a query that could never match.
  • "The tag installs" is not "the tag is correct". Nothing here re-measures hit@1. Every retrieval number in the changelog and in the tag-history row is round 16's, re-measured by PM and not by this round. The four rows above prove the exported bytes run and produce the counts the repository already published -- no more than that.
  • The downside is measured on one folder. Rank 1 -> 2 on one constructed known-negative question over 26 concepts. It names a mechanism (a short generic title is covered in full by more questions than a long one is); it does not size how often that mechanism fires.