Skip to content

fix(runway): ISS-004 retry transient Git failures - #678

Draft
sbalabanov wants to merge 1 commit into
mainfrom
sergeyb/fix-iss-004-git-classifier
Draft

fix(runway): ISS-004 retry transient Git failures#678
sbalabanov wants to merge 1 commit into
mainfrom
sergeyb/fix-iss-004-git-classifier

Conversation

@sbalabanov

Copy link
Copy Markdown
Contributor

Summary

Intent:

  • Prevent temporary Git process and remote failures from being dead-lettered on their first delivery.
  • Preserve terminal merge-result behavior and fail fast for recognizable permanent Git configuration failures.

Changes:

  • Add structured Git command errors and a centralized Git classifier for retryability and dependency attribution.
  • Preserve Git process causes through Runway merger wrapping and wire the classifier into the primary consumer.
  • Cover classifier decisions and verify Runway nacks transient Git failures while rejecting unknown failures.

Reproduction:

  • A merge delivery runs git fetch origin or git push origin ... while the remote temporarily resets the connection, producing a wrapped *exec.ExitError.
  • Previously Runway registered only generic and MySQL classifiers, so the error stayed non-retryable and the consumer rejected it to the DLQ after one attempt.
  • With this change the structured Git error is classified as a retryable dependency failure, so the consumer nacks it for redelivery; authentication, invalid repository/configuration, process-start, and unknown command failures remain non-retryable.

Generated by the 🪄 pr-create skill in devexp-agent-marketplace

Test Plan

AI Verification

Validated at 623ae95 on Sep 4 22:20 UTC · 14 files analyzed · 2s

Validator Status Issues
fix-disclosure not_applicable 0
arc-lint not_applicable 0
visual-web not_applicable 0
go-thrift-lint not_applicable 0
android-coverage not_applicable 0
ios-lint not_applicable 0
web-lint not_applicable 0
web-repocheck not_applicable 0
diff-template not_applicable 0
go-coverage not_applicable 0
visual-ios not_applicable 0
go-proto-lint not_applicable 0
android-lint not_applicable 0
java-lint not_applicable 0
java-coverage not_applicable 0
uber-one not_applicable 0
web-typecheck not_applicable 0
go-gazelle not_applicable 0
web-coverage not_applicable 0
web-unit not_applicable 0
merge-conflict not_applicable 0
go-lint not_applicable 0
arc-unit not_applicable 0
visual-android not_applicable 0
ios-test not_applicable 0
ureview completed 0
custom not_applicable 0

0 issues detected

Skipped validators: claude · EngWiki

Prior runs

Run at c9ee7a8 on Sep 4 22:19 UTC · 14 files · 2s · 0 issues detected

Issues

T3-ISS-004

Summary:
Intent:
- Prevent temporary Git process and remote failures from being dead-lettered on their first delivery.
- Preserve terminal merge-result behavior and fail fast for recognizable permanent Git configuration failures.

Changes:
- Add structured Git command errors and a centralized Git classifier for retryability and dependency attribution.
- Preserve Git process causes through Runway merger wrapping and wire the classifier into the primary consumer.
- Cover classifier decisions and verify Runway nacks transient Git failures while rejecting unknown failures.

Reproduction:
- A merge delivery runs `git fetch origin` or `git push origin ...` while the remote temporarily resets the connection, producing a wrapped `*exec.ExitError`.
- Previously Runway registered only generic and MySQL classifiers, so the error stayed non-retryable and the consumer rejected it to the DLQ after one attempt.
- With this change the structured Git error is classified as a retryable dependency failure, so the consumer nacks it for redelivery; authentication, invalid repository/configuration, process-start, and unknown command failures remain non-retryable.

---

<sub>Generated by the 🪄 [pr-create](https://sg.uberinternal.com/code.uber.internal/uber-code/devexp-agent-marketplace/-/blob/claude-code/plugins/dev/uber-dev/skills/pr-create/SKILL.md) skill in devexp-agent-marketplace</sub>
@CLAassistant

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

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.

3 participants