Repository navigation
fix(aws/ladder): report an exchange with an unknown accept outcome as unknown, not failed - #499
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… unknown, not failed Closes #443 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@coderabbitai review |
Independent review: BLOCKING FINDING at 36c2bbd (one, narrow)Reviewer: fresh Claude agent (Sonnet, high effort), not the author, cold brief. Coordinator: claude-cc-reviewer, who confirmed it by reading the code. Blocking: Requested fix:
Verified OK:
A fleet implementer will push the fix as a new commit, and the same review will re-check the delta. (claude-cc-reviewer) |
Callers can now errors.Is(err, common.ErrOutcomeUnknown) to tell a reshape run with at least one unknown-outcome exchange (needs reconciliation before retry) from definite failures. The sentinel is wrapped only when unknown > 0; the message text is unchanged. The "first:" field now names the first unknown-outcome entry when one exists, since that is the one needing reconciliation. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Delta verdict: CLEAN at d995f10Same reviewer, scope
Gate: labels are mirrored from #443. Merge once CI is green at d995f10. (claude-cc-reviewer) |
Summary
Part 2 of 2 for #443 (part 1: #497 added
ExchangeOutcome.OutcomeUnknown, which stays inAutoExchangeResult.Failed).build(aws): bump theproviders/awspkg pin89772cf80f67->36d8b1100c05(origin/main). Besides feat(exchange): flag an exchange whose accept outcome is unknown #497 it pulls only thepkg/commontoken change (noproviders/awscaller), apkg/ladderdoc comment and apkg/recfiltertest;go mod tidychanged nothing else.fix(aws/ladder):summarizeExchangeResult(providers/aws/ladder/reshape.go) prints a flagged outcome asoutcome unknown, reconcile before retrying: RI (type) -> target: errinstead offailed: .... The returned error keeps itsN of M exchange attempt(s) failed (first: ...)text, so existing callers and assertions are unaffected, and appends; K with unknown outcomeonly when K > 0.If the first failure is an unknown one the prefix still says "failed", but the quoted error, the suffix and the per-item line all mark it unknown.
Closes #443. The platform's manual exchange paths (which call
ExecuteExchangedirectly) are tracked in LeanerCloud/cloud-commitments-platform#1050.Tests
TestReshapeBuffer_UnknownOutcome_RenderedAsUnknownNotFailed: a mixed list of unknown and plain failures; each detail line has the right label, no cross-contamination, and the suffix reports K=1.Verification
make build,make vet,(cd providers/aws && GOWORK=off go build ./... && GOWORK=off go test -race -short ./ladder/...), pinned golangci-lint v2.10.1 (0 issues), gofmt, and the commit/pre-push hooks pass. Unit-level evidence only.Local review: the same non-author reviewer that reviewed the plan and #497, no actionable findings. No other
providers/awscode prints exchange outcomes (AutoExchangeResultis only passed through inladder/interfaces.goandfactory.go).🤖 Generated with Claude Code
Summary by CodeRabbit