v1.108.165 — claim-scoped evidence in the handoff contract (#377 phase 1)
Added
A handoff section may now carry caller-authored claims, each with its own evidence_refs (#377 phase 1, design by @mightydanp).
v1 proved every cited ref was retrieved this session, but it could not say
which retrieval backs which sentence: refs landed in one global block at the
end of the body. A reader could not tell which proof supported which claim.
Each claim is {id, statement, evidence_refs, classification?}. Ids are
unique across the whole handoff rather than per section, since the id is the
machine-readable anchor a caller cites and two sections owning the same id
would make that citation ambiguous. Statements and classifications are
preserved verbatim; the server never rewrites one. Each claim's refs are
attested separately, so an unknown ref returns invalid_claims: [{claim_id, unknown_refs}] and names the claim that cited it instead of
vanishing into one global failure list. Evidence renders beside the claim it
supports.
Three decisions the proposal left open:
- The input picks the contract. No claims anywhere means the schema string
staysjcodemunch.handoff/v1and the body is byte-identical to what v1
rendered;claims_attestedis omitted from the receipt rather than reported
as0. Any claim promotes the handoff tojcodemunch.handoff/v2. - Claims can satisfy
evidence_refs. A caller who scoped everything to
claims should not have to restate it globally. Strictly more permissive, so
no existing call changes. - Claim refs join the canonical evidence index, caller order first, so a v1
consumer reading a v2 handoff still sees every reference where it expects.
core_compact unchanged at 3996. New tests/test_v1_108_165.py (18,
including the byte-identical v1 guard). No schema, tool-count, or
INDEX_VERSION change. Suite 5595.
Known limit, disclosed on #377 before anyone builds against it: phase 1 does
not narrow what counts as a match. Attestation still accepts the file
component of a served id, so citing a whole file attests even when one
unrelated symbol from it was served. Narrowing that is phase 2 (evidence
receipts), which is deferred.
Suite parity same day: jdocmunch-mcp v1.116.0 and jdatamunch-mcp v1.25.0.
#377 stays open as the tracker for the rest of the arc.