docs(governance): PENDING-96 addendum — (a)+(b)+(c)-tag landed, item stays OPEN

Recorded after the act. The jurist's wording tightening is adopted as the
operative framing: coverage and query-matching are different kinds of claim,
and the falsifier bounds the finding rather than merely illustrating it.

Landed in studium-engine@49a8851. Kept open on the jurist's process point —
the finding is that a fixed instrument produced false confidence while
wearing a mark that made it more credible, so shipping a better string is
itself a small "feeling of done". Closing condition stated: PENDING-97 ruled
→ RETRIEVAL_BLINDNESS re-verified against whatever retrieval then exists → a
regression test binding the six banked probes.

Third open item surfaced during the work and recorded rather than fixed:
retrieve.py has no test coverage whatsoever.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WuMjg3ipEVa3n8CoSzoyvc
This commit is contained in:
David F Glidden
2026-08-04 17:35:56 +02:00
co-authored by Claude Opus 5
parent 3a1790dcd6
commit dca2d5d270
+28
View File
@@ -826,6 +826,34 @@ Measured against the register itself before acting. Four corrections; the item's
**Files affected:** `~/_Dev/studium-engine/engine/retrieve.py` (the silence branch and its warrant string). **None touched.** **Files affected:** `~/_Dev/studium-engine/engine/retrieve.py` (the silence branch and its warrant string). **None touched.**
**Awaiting:** Steward authorization. **Awaiting:** Steward authorization.
### ADDENDUM — 2026-08-04, AUTHORIZED and PARTLY LANDED. **This item stays OPEN.**
*Recorded after the act, not before it.*
**Jurist sharpening, adopted.** The diagnosis was refined in review and the refinement is now the operative framing: the completeness check verifies **document coverage** — every book was scanned — while the warrant claimed something about **query-matching**, a different kind of claim. A check defined by the retrieval mechanism's own notion of "found" cannot see a miss that mechanism is structurally blind to. The falsifier does real work: the check is not wrong in general, only wrong exactly when a true match exists under a variant the tokenizer does not fold.
**LANDED (a), tightened past my draft on the jurist's wording.** My proposed replacement still carried a smaller version of the same overclaim — "the index is complete and current" is true of document coverage and unverified of query-matching, and a reader who does not already hold that distinction collapses the two, exactly as the engine did. Now shipped:
> `SILENCE — ✓ coverage-warranted · tier: single-method`
> Every document in the served scope (13 section(s), 5685 chunk(s)) was scanned, and the index is current as-of *T*. **The query as submitted matched no indexed tokens.**
The verdict mark was tightened by the same logic: `✓ warranted` beside a silence reads as *this silence is correct*, when only the coverage half was ever checked — hence `✓ coverage-warranted` / `✗ COVERAGE UNWARRANTED`.
**LANDED (b)** as a fixed constant `RETRIEVAL_BLINDNESS`, attached to **every** silence (warranted and unwarranted alike), since the blindness is a property of the implementation and not of the query. Its content is verified against `chunker.normalize` and the FTS5 query path, not asserted: token-level under `normalizer@1` (NFC · long-s · ligatures · soft hyphen · whitespace), multi-token queries conjunctive, no spelling fold, no stemming, no semantic matching — closing with *"its absence here is not evidence of its absence from the corpus."*
**LANDED (c)-tag only.** `silence_tier: "single-method"` now rides on every silence, so the future cross-checked silence needs no third string migration at the display layer. The (c) mechanism itself remains correctly deferred behind PENDING-97.
**Coupling registered in code, not in memory.** A `⚠` comment at the constant states that `RETRIEVAL_BLINDNESS` **must** be revisited the moment PENDING-97 lands — any change to query construction, orthographic folding, or a semantic layer turns it into stale doctrine describing a mechanism that no longer exists. Registered at the site rather than trusted to a future session's recall.
**Why this item does not close.** The jurist's process point, adopted: the finding *is* that a fixed instrument produced false confidence while wearing a mark that made it more credible — so shipping a better string is itself a small instance of "the feeling of done." Three things remain:
1. **The disclosure is provisional until PENDING-97 is ruled.** Its accuracy has a shelf life tied to a decision not yet taken.
2. **(c) is deferred, not done** — one method still establishes every silence.
3. ⚠ **The fix is unguarded.** `tests/` holds `test_ingest_gate.py` and `test_verify_quote.py` and **nothing references `retrieve.py`** — the organ whose output the steward reads directly has no test at all. The new wording can regress silently. Surfaced, not fixed: a retrieval test suite written against a retrieval method about to change is the wasted design the (c) deferral already refused.
**Closing condition:** PENDING-97 ruled → `RETRIEVAL_BLINDNESS` re-verified against whatever retrieval then exists → a regression test binding the six banked probes. Not before.
**Verification run, both directions:** `grey zone` → coverage-warranted silence carrying the blindness (the false-silence case, now honest). `the quality without a name` → identical form, and **correctly** silent (*The Timeless Way of Building* is not among the 13 sources). The two now read alike, which is right: the engine cannot distinguish them, and pretending it could was the defect. `gray zone` → 3 citations surfacing `## The Gray Zone` itself. Full six-probe set re-run; hit path and `--json` shape intact.
**Files touched:** `~/_Dev/studium-engine/engine/retrieve.py` (imports · two module constants · silence construction ×2 · display).
## PENDING-97 — Engine retrieval AND-s bare tokens and has no semantic layer: recall collapses as the question lengthens ## PENDING-97 — Engine retrieval AND-s bare tokens and has no semantic layer: recall collapses as the question lengthens
**Date:** 2026-08-04 **Date:** 2026-08-04
**Tag:** [PROPOSAL] **Tag:** [PROPOSAL]