fix(inbox): refuse a segmentation plan that matches no dropped file

A plan is selected by content hash, so a mistyped source_sha256 matched
nothing, every dropped file fell through to the one-concept rule, and
process_inbox returned an ordinary success over a flat bundle. The
operator asked for segmentation, got none, and had no error to read --
the silent skip this library refuses everywhere else. vegnormal-okf is
about to run an N500 corpus through this path, where a silent zero
would read as "the corpus has no concepts".

The refusal asks whether a covering plan was FOUND, not whether every
file was examined, so an unreadable drop cannot mask it; and coverage
is recorded at selection, not after path validation, so a matched plan
with a refused entry path still reports its own per-file code. The
first cut got that second question wrong and an existing collision test
caught it; the case is now pinned by its own test, verified red against
the earlier form.

New code segmentation_plan_unmatched, registered in the SegmentationError
docstring register in the same commit. Fail-fast before any disk
mutation. The four existing goldens are byte-identical to baseline.

Co-Authored-By: Claude <claude-opus-5>
This commit is contained in:
Kjell Tore Guttormsen 2026-09-01 19:27:27 +02:00
commit 8f9b4c8cca
3 changed files with 123 additions and 0 deletions

View file

@ -177,6 +177,12 @@ class SegmentationError(IngestError):
offset had silently moved
- `segmentation_unsupported_profile` — a plan was passed to a profile that
does not declare the segmentation capability
- `segmentation_plan_unmatched` — the plan is well-formed but its
`source_sha256` matches no dropped file, so nothing would be segmented
and the run would report an ordinary success over a flat bundle. A
mistyped hash is the likely cause and it is unreadable from the result;
refusing is the only way the operator learns that the judgement they
adjudicated was never replayed
"""