test(fixtures): replace sector-specific example material with generic, fictitious examples — green
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>
This commit is contained in:
parent
1e7345a401
commit
9d1f4b14ed
174 changed files with 1889 additions and 6512 deletions
|
|
@ -1,7 +1,7 @@
|
|||
"""Every image a bundle carries must be one a model can actually SHOW.
|
||||
|
||||
0.10.0 carried what a document declared, in whatever format the publisher
|
||||
happened to ship. Measured 2026-09-19 over the frozen R761 delivery's own
|
||||
happened to ship. Measured 2026-09-19 over a frozen reference delivery's own
|
||||
`assets/` directory (denominator 50): 29 JPEG, 2 PNG and **19 "PC bitmap,
|
||||
Windows 3.x, 8-bit, compression 1"** -- RLE8 BMP. The 19 are carried byte for
|
||||
byte and are correct files; they are also files no model reads, so a figure
|
||||
|
|
@ -128,7 +128,7 @@ def _file_header(offbits: int, body: int) -> bytes:
|
|||
|
||||
|
||||
def bmp_rle8(width: int, height: int, palette: bytes, stream: bytes) -> bytes:
|
||||
"""A Windows 3.x 8-bit RLE8 BMP, the shape 19 of R761's 50 assets have."""
|
||||
"""A Windows 3.x 8-bit RLE8 BMP, the shape 19 of a real delivery's 50 assets have."""
|
||||
entries = len(palette) // 3
|
||||
table = b"".join(
|
||||
bytes((palette[i * 3 + 2], palette[i * 3 + 1], palette[i * 3], 0)) for i in range(entries)
|
||||
|
|
@ -226,11 +226,11 @@ def _inbox(root: Path) -> Path:
|
|||
(inbox / "graphics" / "figur-rle8.bmp").write_bytes(bmp_rle8(8, 4, PALETTE, RLE8_STREAM))
|
||||
(inbox / "graphics" / "figur-flat.bmp").write_bytes(bmp_24(RGB_ROWS))
|
||||
(inbox / "graphics" / "skjema.tiff").write_bytes(TIFF_STUB)
|
||||
(inbox / "prosess.html").write_text(
|
||||
"<!doctype html>\n<html><head><title>Prosess 84</title></head>\n<body>\n"
|
||||
"<h1>84 Konstruksjoner av betong</h1>\n"
|
||||
"<p>Toleranseklassene staar i figuren under.</p>\n"
|
||||
'<img src="graphics/figur-rle8.bmp" alt="Figur 84-1 Toleranseklasser">\n'
|
||||
(inbox / "kapittel.html").write_text(
|
||||
"<!doctype html>\n<html><head><title>Kapittel 84</title></head>\n<body>\n"
|
||||
"<h1>84 Brød og boller</h1>\n"
|
||||
"<p>Hevetidsklassene staar i figuren under.</p>\n"
|
||||
'<img src="graphics/figur-rle8.bmp" alt="Figur 84-1 Hevetidsklasser">\n'
|
||||
"<p>Og prinsippet:</p>\n"
|
||||
'<img src="graphics/figur-flat.bmp" alt="Figur 84-2 Prinsipp">\n'
|
||||
"<p>Og skjemaet:</p>\n"
|
||||
|
|
@ -446,7 +446,7 @@ def test_a_bmp_whose_name_claims_png_is_still_converted() -> None:
|
|||
carry this file unchanged and call it viewable, and every structural check
|
||||
downstream would agree with it -- the count, the suffix and the pointer.
|
||||
|
||||
The R761 delivery is why this is not hypothetical: its graphics directory
|
||||
A real delivery is why this is not hypothetical: its graphics directory
|
||||
holds `.bmp`, `.jpg` and `.png` side by side and the document's own
|
||||
`xlink:href` values are whatever the publisher's tool wrote.
|
||||
"""
|
||||
|
|
@ -573,7 +573,7 @@ def test_the_cuts_below_land_on_the_opcodes_this_file_names() -> None:
|
|||
def test_a_truncated_rle8_stream_is_refused_with_a_published_code() -> None:
|
||||
"""Eval point 6 again, on the one case that was silent.
|
||||
|
||||
Measured by PM 2026-09-19 on a real R761 asset (352x548 = 192 896 pixels):
|
||||
Measured by PM 2026-09-19 on a real delivered asset (352x548 = 192 896 pixels):
|
||||
a stream cut to 90 % carried with 13 923 pixels wrong, to 50 % with 95 890,
|
||||
to 10 % with 166 525 -- no code, no row, a partly blank PNG under a name
|
||||
that says it holds the source's pixels. The uncompressed path already
|
||||
|
|
@ -585,7 +585,7 @@ def test_a_truncated_rle8_stream_is_refused_with_a_published_code() -> None:
|
|||
the format's own value and what an independent decoder produces.
|
||||
|
||||
THIS GUARD IS THE TERMINATOR, and it is read off the corpus rather than
|
||||
chosen: over the 25 RLE8 BMPs the frozen R761 delivery ships (24 distinct;
|
||||
chosen: over the 25 RLE8 BMPs a frozen reference delivery ships (24 distinct;
|
||||
the bundle carries 19), 25 of 25 end at an explicit end-of-bitmap escape, that escape is the stream's LAST
|
||||
two bytes on 25 of 25, and `biSizeImage` equals the available bytes on
|
||||
25 of 25. So a stream that runs out before its terminator is refused, and
|
||||
|
|
@ -723,7 +723,7 @@ def test_a_stream_that_stops_before_the_frame_is_refused() -> None:
|
|||
|
||||
A PIXEL coverage count would be a different rule and a wrong one: it
|
||||
refuses the delta the format defines, and 0 of the 25 RLE8 BMPs
|
||||
the R761 delivery ships would be affected either way (25 of 25 paint every
|
||||
that delivery ships would be affected either way (25 of 25 paint every
|
||||
pixel, 25 of 25 reach the end of the frame, 0 of 25 use a delta), so the
|
||||
corpus cannot choose between them. The independent decoder can.
|
||||
"""
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue