Commit a11cad3
release: v1.108.184 — a ranking cannot prove absence
Closes the finding disclosed when 1.108.183 shipped. search_symbols' semantic
exit hand-rolled the legacy negative_evidence block and emitted no
_meta.verdict, so not one absence gate shipped since 1.108.166 applied to it —
while it printed "Do not claim this feature exists" anyway.
Reproduced before touching code. semantic=True, token_budget=1 over a repo
CONTAINING the target:
result_count: 0
_meta.truncated: true
best_match_score: 53.774
warning: "No implementation found ... Do not claim this exists."
_meta.verdict: null
A strong match reported in the same breath as its own absence. That is the
item-1 defect fixed on the lexical path in 1.108.177, left standing here.
- The exit builds the SAME verdict as the lexical one, so every gate applies,
and it finally receives the pre-scan identity capture (#377 item 6) that was
taken on the shared path and never handed to the diverging branch.
- NEW verdict.absence_unprovable. The lexical path's absence rests on a corpus
fact: no symbol in the index contains any query term. An embedding ranking's
zero result rests on embedding geometry, and a symbol can sit in the corpus
scoring at or below zero against the query vector. So a semantic or hybrid
zero result is degraded and can never reach absent. Expressed as a downgrade
so absence_refusal does the refusing; checked LAST among the degraded gates,
because every gate above names something the caller can fix.
- NEW verdict.absence_refused. Every gate since 1.108.166 downgrades to
degraded, and the in-band disclosure was gated on the state still reading
absent — so the better a gate worked, the less the caller was told. On a
default install (meta_fields: []) a refused scan arrived as a bare empty
response with no verdict and no reason.
- Producer.completeness_by_mode. Giving the semantic exit a verdict made it
mintable under a completeness reading "lexical BM25 over the inverted index",
false for an embedding ranking. The 1.108.183 pinning test failed, the mode
was reviewed, and hybrid/semantic_only now declare their own. The gate
catching its own author is the design working.
- Both new verdict blocks published in the schema in this commit.
NOT done, deliberately: the two fusion exits still carry no verdict. They
assert nothing false, and giving them one means first deciding whether a WRR
ranking that includes a lexical channel can prove absence. Pinned by a test.
Suite 6057 passed + the known 12 local-ONNX env failures. Replay gate green.
No tool-count change, no INDEX_VERSION change.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>1 parent 54db050 commit a11cad3
11 files changed
Lines changed: 884 additions & 51 deletions
File tree
- schemas
- src/jcodemunch_mcp
- evidence
- retrieval
- tools
- tests
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
5 | 118 | | |
6 | 119 | | |
7 | 120 | | |
| |||
0 commit comments