Skip to content

feat(stovepipe): offer newly opened issues to every registered fixer - #1033

Open
mnoah1 wants to merge 1 commit into
mnoah1/stovepipe-fixer-contractfrom
mnoah1/stovepipe-batch-repairs
Open

mnoah1 wants to merge 1 commit into
mnoah1/stovepipe-fixer-contractfrom
mnoah1/stovepipe-batch-repairs

Conversation

@mnoah1

@mnoah1 mnoah1 commented Nov 6, 2026 •

Copy link
Copy Markdown
Contributor

Why?

The existing fix controller selects one eligible issue and suppresses further submissions once any issue in the build has a fix ID. That build-wide limit prevents newly opened issues and additional fixer backends from receiving independent repair requests.

What?

Replace the build-wide gate with eligibility per issue opening and executor. Read every page of the build's observations, select still-open issues first seen in that build, and offer each registered executor all of its pending issues in one Submit call. Each backend chooses how to group submissions and enforce its own limits; a failure in one backend does not suppress another.

Create pending repair rows before submission, retain valid acceptance and skip receipts even alongside errors, preserve executor metadata through versioned updates, and restore history on replay without resubmitting durable outcomes. This applies the API from #1034 and storage from #1032 to the existing controller and reference-server wiring. DLQ recovery is extended separately in #1035.

Test Plan

./tool/bazel test //stovepipe/... //service/stovepipe/server:go_default_test --test_output=errors covers 28 test targets. The fix-controller tests exercise paginated batches, independent backends, partial acceptance, failed pending writes preventing dispatch, metadata preservation during version conflicts, retry without resubmitting durable outcomes, and preserved retry classification. Local lint, module-tidy, and Gazelle checks also completed.

Revert Plan

Revert #1035 first, then revert this PR together with #1034. The additive repair-state schema can remain.

Issue Links

No issue was provided. Part 3 of the repair-executor stack; based on #1034. DLQ recovery follows in #1035.

Stack

  1. feat(stovepipe): store fixer submissions per issue and backend #1032
  2. feat(stovepipe): extend fixer API for batching and multiple backends #1034
  3. @ feat(stovepipe): offer newly opened issues to every registered fixer #1033
  4. feat(stovepipe): extend fixer DLQ recovery to every issue and backend #1035

Summary:
Offer each registered executor all outstanding issue openings in one batch. Persist pending rows before dispatch and retain per-item acceptance or skips while preserving executor metadata through versioned updates. Restore durable history on replay and preserve independent error causes and valid partial receipts.

This builds on the batch executor contract. The existing DLQ behavior remains in place until the next PR migrates recovery to per-executor repair records.

Test Plan:
`./tool/bazel test //stovepipe/... //service/stovepipe/server:go_default_test --test_output=errors` exercises 28 targets covering batching across pages, multiple executors, partial acceptance, failed writes, version conflicts, history replay, and preservation of retry classification. Lint, tidy, and Gazelle checks verify the repository metadata.

Revert Plan:
Revert the dependent DLQ change first, then revert this PR together with its executor-contract prerequisite.
@mnoah1
mnoah1 force-pushed the mnoah1/stovepipe-batch-repairs branch from 05e1426 to 1148984 Compare November 6, 2026 22:11
@mnoah1
mnoah1 changed the base branch from mnoah1/stovepipe-repair-state to mnoah1/stovepipe-fixer-contract November 6, 2026 22:11
@mnoah1
mnoah1 added this pull request to stack #1038 November 6, 2026 22:26
@mnoah1 mnoah1 changed the title feat(stovepipe): dispatch pending issues to named batch repair executors feat(stovepipe): offer newly opened issues to every registered fixer Nov 6, 2026
@mnoah1
mnoah1 marked this pull request as ready for review November 6, 2026 22:31
@mnoah1
mnoah1 requested review from a team, behinddwalls and sbalabanov as code owners November 6, 2026 22:31

This branch has not been deployed

No deployments
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