Repository navigation
Evaluate sessions through the shared evidence contract - #1160
Conversation
Every new contract field is omitted when null, so a legacy payload's bytes are unchanged; EvidenceRefText rejects a malformed ref by returning false rather than throwing. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ltV2 CapacitorJsonContext sets no DefaultIgnoreCondition, so the new trailing fields shipped explicit null keys on every legacy daemon message. Match the WhenWritingNull pattern already used for ACP's optional fields. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
CA1416 flags File.GetUnixFileMode/SetUnixFileMode calls a Skip.When
guard doesn't satisfy statically, so the two mode-asserting tests carry
[UnsupportedOSPlatform("windows")] alongside the runtime skip.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The last footer line on disk is authoritative, so a harness killed mid-question still leaves a ledger coverage and cite expansion can read; a torn final JSON line is ignored rather than failing the read. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
EnsureScopeAsync reopens the bound token before checking headroom, so a 404/409 there is scope loss before any refresh is attempted; the certification client resends only work_budget refs within one shared 90 s budget. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
A sibling arguments[n] key next to calls left the judge reading a null argument beside an unrelated field; resolved content now lands at calls[n].arguments, matching where an inline value would sit. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
A catalog without the advertisement, or a chain request, keeps every legacy request and payload byte-identical; the goldens pin it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
No wire field carries the drop counts, so they go to the observer; a pre-drain re-check that is not Ok discards the buffered facts rather than draining them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The prepared run's scope, read and citation clients send through the prepare call's HttpClient, so the cache owns and disposes it with the entry. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A judge's reported obligations array is not the persisted shape, so the verdict parser drops it and the strategy stamps before deserializing; the producer reconciles and stamps them itself. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… view The retrospective now reads each obligation as its id and status only, as the server's own retrospective does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Also drop the last plan-coordinate references from doc comments in the evidence code, left over from earlier commits on this branch. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
An exception escaping a tool call ends the stdio loop, so the question loses every later call and the charged call never reaches the ledger. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A timed-out read escaped as an OperationCanceledException, which `kcap eval` reports as "cancelled" and the daemon as the phase budget; only the caller's token or the phase's own budget may now decide either. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PR Summary by QodoEvaluate single sessions through the shared evidence contract
AI Description
Diagram
High-Level Assessment
Files changed (133)
|
Code Review by Qodo
1.
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A malformed or non-advancing answer ends the fit test as a failed read, so preparation falls back to retrieval instead of looping or throwing. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A trailing scope_moved call must still end the run, so its stop reason wins over the stale footer's. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Leaving the cache now cancels the run's active phase; the directory and the owned client are disposed only when its last lease ends. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Qodo item 7 (summary-only): Fixed in 93aa9c0: |
|
/agentic_review |
|
Code review by qodo was updated up to the latest commit 80eafbf |
A finalize cancelled by a second prepare under the same run id would otherwise evict and dispose its replacement. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
/agentic_review |
|
Code review by qodo was updated up to the latest commit f2b68df |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… read Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
/agentic_review |
|
Code review by qodo was updated up to the latest commit ab6b33f |
AI-2746 — no GitHub issue exists for this change; the server half is kurrent-io/kcap-server#2058.
What & why
kcap evaland the daemon fetched and kept a whole compacted trace, could not certify a citation, and reported budget stops as generic failures. When the server's eval catalog advertisesevidence_retrieval, a single-session run now prepares from the viewer's evidence scope through bounded reads. It judges one-shot or through eight tools served bykcap mcp judge --run, budgeted at the MCP boundary and ledgered to an owner-only per-run directory. Its citations are certified in batches and persisted withcoverage-v2. Without the advertisement, and always under--chain, requests and payloads are byte-identical to today.Where to look
Verification
From
src/cli,dotnet run --project test/<Project>/<Project>.csproj -- --treenode-filter "/*/*/<Class>/*"at the head:dotnet publish -c ReleaseofCapacitor.CliandCapacitor.Cli.Daemon(osx-arm64):grep -E 'IL[23][01][0-9]{2}'finds nothing.🤖 Generated with Claude Code