report each compared node's trace in the graph matrix, on request (ADR-0031) - #134
Conversation
…R-0031, closes #127) The walk already holds every node evaluation's ADR-0027 trace and drops it; a wire client showing why one node went unknown had nothing to render. - experimental_test_graphs accepts an optional boolean include_traces, decoded exactly as the rehearsal boolean; experimental graph test grows --include-traces on both forms. Off is the previous payload, byte for byte. - Each reported comparison of an evaluated node carries the evaluation's own trace, by pointer so presence tracks the request: asked is present, [] at minimum (the contract's floor, held at the one assignment), not asked is absent. An undeclared node was never evaluated and has no trace. - Traces ride inside each row's marshaled report, so the existing budget charges them with no new machinery. - ADR-0027 §0's matrix-results-carry-no-traces determination is partially superseded for graph matrix node comparisons via the index annotation; its text is untouched. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Signed-off-by: Brian Jin <35789537+kikashy@users.noreply.github.com>
The presence tests cannot tell the real trace from an empty substitute (the mutation check said so); this one compares the comparison's trace byte for byte against what the evaluate composite reports for the same node and inputs. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Signed-off-by: Brian Jin <35789537+kikashy@users.noreply.github.com>
…iew round 1) - Budget differentials on both paths: the bare run fits its own bytes exactly, the traced run overruns that boundary and is refused by JPS-GRAPH-REPORT-BUDGET — no magic numbers, the reconcile makes the bare spend equal the envelope's bytes. - The CLI project walk is asserted like the path-named form; deleting its wiring now fails a test. - include_traces refusals are pinned to their full messages, rehearsal-style, including number/object/array values and both case-folded spellings; the tools-list pins the closed schema's optional boolean like rehearsal's. - The declined-equals-omitted equality compares literal wire bytes, not a remarshal that would hide an unmodelled member. - Two-node row pins each comparison to its own node's trace; a headline mismatch is pinned to zero comparisons and zero traces. - Help, Long, ADR, and changelog say JSON report; the human rendering is deliberately unchanged. Two stale two-member comments now say three. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Signed-off-by: Brian Jin <35789537+kikashy@users.noreply.github.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Signed-off-by: Brian Jin <35789537+kikashy@users.noreply.github.com>
Review round 1 — dispositionReviewer: Codex (codex-cli 0.145.0, OpenAI) · Reviewed SHA:
Also adopted from the verification notes: the declined-equals-omitted equality now compares literal wire bytes ( Reviewer's sandbox could not start ADR-0031 flipped to accepted ( |
|
🎉 Thank you for your contribution to Judgment Pack! If you’d like another task, choose a path that interests you: |
Closes #127.
ADR-0031:
experimental_test_graphsaccepts an optional booleaninclude_traces(decoded exactly as ADR-0028's rehearsal boolean — exact spelling, JSON boolean only);experimental graph testgrows--include-traceson both forms. Asked, each reported comparison of an evaluated node carries the evaluation's own ADR-0027 trace, by pointer so presence tracks the request (asked is present,[]at minimum; not asked is absent — off is the previous payload byte for byte). An undeclared node was never evaluated and carries none; a row that fails before node comparisons carries none. Traces ride inside each row's marshaled report, so the existing ADR-0026 budget charges them with no new machinery.ADR-0027 §0's matrix-results-carry-no-traces determination is partially superseded for graph matrix node comparisons via the index annotation; its text is untouched, per the ADR README's partial-supersession rule.
Tests assert the wire: presence on every compared node across MCP/CLI/graph layers, absence (not emptiness) when unasked with declined-equals-omitted byte identity, trace retention on a mismatching comparison, no trace on an undeclared node, byte equality between the comparison's trace and the evaluate composite's for the same node and inputs, and case-fold/type refusals for the new member. Six mutations each fail a test; the one safeguard that cannot discriminate is the nil-floor guard in the attach (unreachable while the evaluator honors ADR-0027 §1's never-nil floor), labeled here as such.
Material-decision impact: public-surface; review: round to be posted on this PR
🤖 Generated with Claude Code