docs(readme): one file-type table, not two

`### Binary extraction` carried its own six-row Format/Reader/Evidence table
over the same rows the pinned table now holds. It was true when written and
reachable by exactly the failure this module exists for: three evidence classes
copied into prose no test reads. That section now points at the pinned table
and keeps its prose about the extra.

A fifth assertion in `tests/test_docs_promises.py` holds the duplicate gone.
Known-positive: the same query finds 8 table lines in that section on the
previous commit, so it can go red.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Kjell Tore Guttormsen 2026-09-12 21:36:28 +02:00
commit d310dbb34e
3 changed files with 26 additions and 11 deletions

View file

@ -21,9 +21,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
is absent (`.doc`, `.epub`, `.eml`/`.msg`, image files, source files,
`.one`/`.vsd`) as facts rather than as a queue. Four new assertions in
`tests/test_docs_promises.py` pin the table's row set, its evidence cells and
its core/extra split to the registry, and the opening to the table. No change
to `extract.py`: nothing about what is read moved, only what the README says
about it.
its core/extra split to the registry, and the opening to the table. The
six-row Format/Reader/Evidence table that `### Binary extraction` carried is
gone with them: it duplicated three evidence classes in prose no test read,
and that section now points at the pinned table. A fifth assertion holds it
gone -- the same query finds 8 table lines in that section before the change.
No change to `extract.py`: nothing about what is read moved, only what the
README says about it.
## [0.8.5] — 2026-09-12

View file

@ -1057,14 +1057,11 @@ rather than found on `PATH`, with its version asserted against a pin. A host
carrying a different converter is refused, not silently used: extraction is
deterministic within a converter version and not across one.
| Format | Reader | Evidence |
|---|---|---|
| `pdf` | `pdfplumber` | measured |
| `docx` | converter | measured |
| `xlsx` | converter | measured |
| `pptx` | converter | **constructed** |
| `odt` | converter | **constructed** |
| `rtf` | converter | **constructed** |
These six rows have their reader and their evidence class in the one table
this README carries: [Supported file types](#supported-file-types), which is
pinned to the extraction registry cell by cell. A second table here would be a
copy nothing checks, and a copy of an evidence class is exactly the thing that
goes false quietly.
**`constructed` means what it says, and it is a weaker word than `measured`
on purpose.** The corpus this work was measured on contains **zero** `pptx`,

View file

@ -193,3 +193,17 @@ def test_the_readme_opening_does_not_name_five_of_thirteen() -> None:
every = set(_CORE_EXTRACTORS) | set(_OPTIONAL_EXTRACTORS)
named = {s for s in every if re.search(rf"\b{s.lstrip('.')}\b", intro, re.IGNORECASE)}
assert named == every, f"the opening names {sorted(named)}, not all of {sorted(every)}"
def test_the_readme_carries_only_one_file_type_table() -> None:
"""A second table over the same rows is a copy nothing checks.
`### Binary extraction` carried its own six-row Format/Reader/Evidence
table until 2026-09-12. It was true when written, and it was reachable by
exactly the failure this module exists for: an evidence class copied into
prose that no test reads. Its rows now live in the pinned table alone.
"""
text = README.read_text(encoding="utf-8")
section = text.split("### Binary extraction", 1)[1].split("\n## ", 1)[0]
rows = [line for line in section.splitlines() if line.strip().startswith("|")]
assert not rows, f"a second file-type table is back under Binary extraction: {rows}"