Skip to content

v0.27.0-beta — Evidence coverage, and four defects it uncovered

Pre-release
Pre-release

Choose a tag to compare

@joslat joslat released this 22 Aug 14:56
· 47 commits to main since this release
6892c91

The instrument

QuestionEvidenceDiagnostics gains RequiredEvidenceSessionCount, RequiredEvidenceSessionsRetrieved and RequiredEvidenceSessionsInAnswerContext.

Every gold diagnostic before this was an at-least-one check over Retrieved, which is adequate only when a single session carries the answer — for a question assembled from four, one-of-four and four-of-four both reported GoldSessionPresent: true. And AnswerContext, the references actually supplied to the answer model, carried no gold analysis at all. Retrieval could rank every required session highly while a downstream context budget dropped most of them, with nothing in the envelope to show it.

The gap between the two new counts localizes a failure to a boundary rather than a subsystem. It is session-based rather than text-based, so it needs no evidence content and works under EvidenceCaptureMode.References with no privacy implication.

RequiredEvidenceSessionsInAnswerContext is null, never 0, when no answer-context reference carries a session ID — uninstrumented and starved must not read alike.

Four defects this uncovered, worst first

V3 and V6 count silence as a PASS. 258 of 387 V3 calls (66.7%) and 182 of 861 V6 calls (21.1%) returned no content. V3 passes when a gold-ablated context fails to reproduce the answer, and an empty completion cannot reproduce anything. This direction is anti-conservative — it certifies validity the evidence does not support — and V3 is the probe that establishes gold is load-bearing. V3 and V6 results are uncitable until re-run. V1, V2 and V7 are unaffected.

V8 and V9 count silence as error. 5 of 10 V8 failures and 32 of 111 V9 failures family-wide had no captured answer. Conservative, so every published ceiling is a lower bound. Disclosed per corpus as probes.no_answer_captured, with question IDs.

No vertical has a validated difficulty ladder. The rule that certified one ranked coverage with the calibration scaffolding in place and never compared the slope against the structural ceiling min(1, K/G). Neither correction works alone, which is why it survived three revisions. Every corpus now carries difficulty_validated: false; WorkingMemory's stamp is retired.

Arithmetic's duration never states its day-counting convention and gold silently fixes one. Four of four misses across two independent oracles are exactly gold + spells, with perfect arithmetic in every one.

Gates added

  • Empty-response rate per probe arm is published as probes.empty_rate_by_arm and gated by a corpus test. The ceiling and ratchet are C# constants, never read from the record. Verified by tightening the ratchet until it failed on all seven verticals.
  • A docs check refuses prose asserting a validated ladder while no corpus stamps one. Verified against the pre-fix tree: it rediscovers all three stale claims, no false positives.

Also in this release

PartnerDesk "The Trusted Supplier" sample — a third-party MCP turns a well-behaved due-diligence agent into a data-exfiltration tool, and Gatekeeper stops it at two levels. A real MCP server as a child process over stdio, four phases on one keypress, and 75 tests asserting over the recorded trajectory, the tool-effect ledger and Gatekeeper's verdicts rather than console text.

Verification

Release configuration, every target framework: 9202 net8.0, 9202 net9.0, 9420 net10.0, 985 × 3 memory, 75 PartnerDesk, 9 NuGet-consumer. Zero failures, 13/13 CI checks green.

Upgrading

Additive. Nothing removed or renamed. If you consume V3/V6 results, treat them as unestablished until the re-baseline; if you compare against published V8/V9 ceilings, exclude the no_answer_captured question IDs.