Every fixture, test document, tool example and document now uses an invented kitchen-and-baking handbook series, written in this repository. The package's behaviour is unchanged; src/ changes are comments and help text only. - Generated fixtures are regenerated from their generators. Their structural counts are identical before and after: elements, images, rows, cells, headings, bookmarks and the witness inventory's per-document totals. The image-inbox and accounting documents are renamed kapittel-84-*. - tools/okf_accounting_gate.py: the two options that named one real corpus each are replaced by a generic, repeatable --corpus PATH with no default. Row 5 compares the PDF pair alone. Gate verdict unchanged: RED rows 2, 3, 6. - tools/okf_witness.py: the STS JSON reader for one publisher's delivery is removed, along with its three twins and five tests. The mutation harness loses W09. - docs/: 13 dated reports that documented runs on a retired reference corpus are removed, and 40 are neutralized. Dead links are removed, and no new dangling path is introduced. - The synthetic MCP-gate corpus and the residual probe words are neutral. Valgt: keep the `okf quality --fasit` bar value (the measured fraction, one corpus) and rewrite only its provenance, because the verdict stays unchanged and the number names nothing. Term check with the local list: 0 of 411 tracked files, 0 file names, 0 of 27 binary fixtures. Suite after git add: 2457 passed, 1 skipped. The base tree had 2460 passed and 2 skipped; five tests went with the JSON reader and four were added by the term check. ruff, ruff format and mypy --strict src/ are clean. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
131 lines
7.3 KiB
Markdown
131 lines
7.3 KiB
Markdown
# 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 | **proposed 828 plan(s); 0 with no boundary; 0 unreadable**, 828 of 828, 6 015 md |
|
|
| reference standard, XML | **2 761 concepts** of 2 761 declared 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.
|
|
- **828 of 828 and 2 761 of 2 761 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.
|