Skip to content

fix(cli): show typed graph receipt recovery fields (FUZZ-039 r2) - #718

Merged
randlee merged 1 commit into
fix/t-7-fuzz-017-r2-one-line-recordsfrom
fix/t-7-fuzz-039-r2-human-receipt-fields
Oct 8, 2026
Merged

randlee merged 1 commit into
fix/t-7-fuzz-017-r2-one-line-recordsfrom
fix/t-7-fuzz-039-r2-human-receipt-fields

Conversation

@randlee

@randlee randlee commented Oct 7, 2026

Copy link
Copy Markdown
Owner

Fixes comp-t-7.14.1 (sanity finding on FUZZ-039, comp-t-7.14): human-mode graph refusals print the typed error's structured details (affected id, read cause) and recovery guidance. Adds an additive execute_bead_request_with_diagnostics callback API in sc-composer-beads (existing entrypoints delegate with a no-op; receipt JSON, signatures and the Python binding unchanged). Tests run against a fake bd so they always execute.

Rebased 5541415 -> ad1c983 onto #717. Gates at ad1c983: clippy -D warnings clean, fmt clean, cargo test --workspace 1066 passed / 0 failed / 0 ignored.

🤖 Generated with Claude Code

@randlee

randlee commented Oct 7, 2026

Copy link
Copy Markdown
Owner Author

QA fix verification: comp-t-7.14.1-qa (D1-F1 / FUZZ-039) at ad1c983

Verdict: PASS. 1 carried finding verified fixed.

Finding Disposition
D1-F1 fixed

The fuzz coordinator, locked to D1-F1, verified at the pinned commit through the real CLI against a fake-bd stub:

  • print_human_receipt (via run_bead collecting diagnostics only when not --json) now prints the real error message plus details: (id and cause) and recovery: lines. Exercised: BEADS_GRAPH_PARENT_NOT_FOUND, BEADS_GRAPH_RELATION_INVALID, BEADS_GRAPH_ID_INVALID, BEADS_GRAPH_CONFLICT, BEADS_GRAPH_READ_FAILED. Read only, not run: SCOPE_MISMATCH, FORMULA_UNSUPPORTED, unknown relation endpoint, EDGE_MISSING (same generic diagnostics path).
  • The printed text matches the real error.rs message ("graph parent nosuch does not exist; ..."); the old test wording is gone.
  • Two regression tests (fuzz_039_human_preview_attach_prints_parent_refusal_reason, fuzz_039_human_receipts_preserve_conflict_id_and_read_cause) are un-ignored, assert message, details and recovery, pass (fuzz_039: 2 passed) and both fail on the base origin/sprint/t-7-phase-fuzz.
  • The --json branch is unchanged in code; the manual text matches the printed form. Human output of success receipts and the attach auth refusal is byte-identical to baseline.
  • Local fmt, clippy -D warnings and tests are clean at this head.

Notes, not findings of this round:

  • Control and bidi characters in ids reach the terminal raw in the human message line (ESC in the message line, U+202E in message and details); this is FUZZ-040 territory (round 2 poured).
  • GRAPH_READ_FAILED prints the cause twice (raw stderr excerpt plus message). Cosmetic.
  • The same commit shell-quotes the bd dep add recovery commands for EDGE_MISSING (a human-output change; the manual says only that they are printed). The unit test for it was not run by the verifier.

Disclosures: --json outputs for the other cases are not byte-identical to baseline, but the differences come from other commits in this stack (temp input path, --json -- argv ordering, elapsed_ms, the bad-id code now BEADS_GRAPH_ID_INVALID); the FUZZ-039 commit was not isolated, so that conclusion rests on reading the diff. The carried finding was filed by dev-sanity, not a QA reviewer, so the coordinator was hand-dispatched (fix-round-scope accepted sc-sanity-llm as owner, but it is not a QA reviewer). CI not checked (rate-limit rule).

@randlee

randlee commented Oct 7, 2026

Copy link
Copy Markdown
Owner Author

QA fix verification: comp-t-7.14-qa (FUZZ-039) at ad1c983

Verdict: PASS. 1 carried finding verified fixed.

Finding Disposition
fuzz-039 fixed

This task checks the same PR and the same pinned commit (ad1c983) as comp-t-7.14.1-qa, which I closed PASS minutes earlier after a full verification by the fuzz coordinator. I did not dispatch a second verifier; the evidence from that run covers both deliverables of comp-t-7.14:

  • Fix: in human mode print_human_receipt now prints the real error message plus details: (id and cause) and recovery: for the graph refusal codes (parent not found, relation invalid, id invalid, conflict, read failed exercised through the real CLI against a fake-bd stub; scope mismatch, unsupported formula, unknown endpoint and edge-missing read only). --json code path unchanged; manual text matches.
  • Regression tests: fuzz_039_human_preview_attach_prints_parent_refusal_reason and fuzz_039_human_receipts_preserve_conflict_id_and_read_cause are un-ignored, assert message, details and recovery, pass, and both fail on the base origin/sprint/t-7-phase-fuzz. The test from comp-t-7.14's own commit (t-7 FUZZ-039: regression test for human-mode graph refusal details #714) was the one the dev-sanity checker had faulted for a wrong expected message; the message now comes from the real error.
  • Local fmt, clippy -D warnings and tests clean at this head.

Same notes and disclosures as the 14.1 report on this PR (raw control/bidi characters in human text belong to FUZZ-040 round 2; --json byte-identity not isolated to the FUZZ-039 commit; fake bd; CI not checked per the rate-limit rule).

@randlee
randlee force-pushed the fix/t-7-fuzz-039-r2-human-receipt-fields branch from ad1c983 to 27b060e Compare October 8, 2026 00:25
@randlee
randlee removed this pull request from stack #625 October 8, 2026 00:45
@randlee
randlee added this pull request to stack #739 October 8, 2026 01:15
@randlee
randlee merged commit 19e4cb0 into integrate/phase-t Oct 8, 2026
23 checks passed
@randlee
randlee deleted the fix/t-7-fuzz-039-r2-human-receipt-fields branch October 8, 2026 01:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant