Repository navigation
Warn when a review flow's reviewer participant vendor disagrees with the applied echo - #403
Conversation
…d echo Nothing re-validated the reviewer's vendor after the start-time echo check: a wrongly-vendored reviewer appearing later (e.g. a heal relaunch resolving a different vendor than the run pinned) reached the driver silently, with status rendering both fields side by side and never noticing they disagree. The status and polled-round-result surfaces now cross-check applied_reviewer_vendor against the "reviewer" participant's vendor from the same body, and honor the server's reviewer_vendor_mismatch flag (the fold-side check, for responses whose participant list is read-model lagged). On disagreement a warning renders — before the result text on the polled surface — telling the driver to treat results as suspect and close the flow. A warning rather than a tool error: these responses carry round results and pending messages the driver still needs. Reviewer-scoped: the run-level echo describes only the "reviewer" role, so a multi-participant flow's other roles never trip it, and an absent vendor in a partial body is not evidence of disagreement. Linear: AI-1585 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
PR Summary by QodoWarn when reviewer vendor mismatches applied reviewer vendor in CLI output
AI Description
Diagram
High-Level Assessment
Files changed (2)
|
Code Review by Qodo
1.
|
…mment Qodo on #403: the warning is user-facing CLI surface, so README documents it next to the workspace disclosure it accompanies, and the helper's XML doc drops rationale the code and warning text already carry. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Qodo on #403: the warning tells the driver to close the flow, so a rotated-out (stopped) reviewer entry with an older vendor must not raise a false alarm against the active one. Only active reviewer entries compare locally; the server's flag still covers stopped-row divergence it can see. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Nothing re-validated the reviewer's vendor after the start-time echo check (
CheckVendorOverrideResult): a wrongly-vendored reviewer appearing later — the realistic path is a heal relaunch resolving a different vendor than the run pinned — would reach the driver silently, with status rendering both fields side by side and never noticing they disagree.This is the CLI (defensive) half of the cross-check; the server (authoritative) half is kurrent-io/kcap-server#1225. Either half works without the other.
Linear: AI-1585 (closes AI-1489 §8's last uncovered negative case).
What
AppendReviewerVendorMismatchWarningcross-checksapplied_reviewer_vendoragainst thereviewerparticipant's vendor from the same response body, and additionally honors the server's newreviewer_vendor_mismatchflag. On disagreement it renders:on both surfaces that parse the status body:
FormatStatusResponse(get_flow_status/get_review_flow_status) — after the participants block it contradicts;FormatPolledRoundResult(the async round-result poll) — before the result text, so the driver reads the warning before the suspect result.Decisions
reviewerrole; a multi-participant flow's other roles legitimately run different vendors and never trip the warning. An absent vendor in a partial body is not evidence of disagreement.Tests
Mismatch, server-flag-only (no participants), agreement negative, non-reviewer-role negative, and polled-surface ordering. Mutation-tested: dropping the local comparison fails the two local-arm tests; dropping the flag arm fails the flag test.
🤖 Generated with Claude Code