Skip to content

feat(stovepipe): record analysis and repair history - #995

Open
mnoah1 wants to merge 3 commits into
mainfrom
mnoah1/stovepipe-request-history-events
Open

mnoah1 wants to merge 3 commits into
mainfrom
mnoah1/stovepipe-request-history-events

Conversation

@mnoah1

@mnoah1 mnoah1 commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Why?

Stovepipe request history does not show when terminal issue analysis or reconciliation finishes, or whether repair work was submitted, skipped, or abandoned.

What?

  • Add build_analysis_completed, issues_reconciled, fix_submitted, fix_submission_skipped, and fix_submission_abandoned; preserve the existing issue_tracking_abandoned event and recovery behavior.
  • Retain history idempotently and repair missing entries from durable fix associations and completed reconciliation checkpoints. Register fix recovery without submitting more repair work or changing validation outcomes.
  • Cover retries, closure suppression, uncertain external acceptance, long fix IDs, and server registration.

Test Plan

For local exercise, run make local-stovepipe-start. The reference service uses no-op issue detection and repair execution; external repair acceptance requires a deployment-supplied executor and was not exercised manually.

Passed eight focused Bazel suites covering build analysis, fix submission, issue tracking, request-log materialization, entities, build signals, recording, and server registration; formatting, lint, tidy, and Gazelle checks also passed.

The full repository build and all 184 unit/web test targets also passed.

Revert Plan

Revert this PR; no schema changes are required.

Issues

Summary:
## Why?

Stovepipe request history does not show when terminal issue analysis or reconciliation finishes, or whether repair work was submitted, skipped, or abandoned.

## What?

- Add `build_analysis_completed`, `issues_reconciled`, `fix_submitted`, `fix_submission_skipped`, and `fix_submission_abandoned`; preserve the existing `issue_tracking_abandoned` event and recovery behavior.
- Retain history idempotently and repair missing entries from durable fix associations and completed reconciliation checkpoints. Register fix recovery without submitting more repair work or changing validation outcomes.
- Cover retries, closure suppression, uncertain external acceptance, long fix IDs, and server registration.

Test Plan:
For local exercise, run `make local-stovepipe-start`. The reference service uses no-op issue detection and repair execution; external repair acceptance requires a deployment-supplied executor and was not exercised manually.
@mnoah1
mnoah1 marked this pull request as ready for review October 30, 2026 18:43
@mnoah1
mnoah1 requested review from a team, behinddwalls and sbalabanov as code owners October 30, 2026 18:43
@mnoah1
mnoah1 enabled auto-merge October 30, 2026 19:41
"go.uber.org/zap"
)

func TestSubmittedFixHistoryRepairsWithoutResubmitting(t *testing.T) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: the new tests could follow the table-driven convention in AGENTS.md

hold = !finalize && !request.State.IsTerminal()
}

if build.Status.IsTerminal() {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

build_analysis_completed stores the detector's per-run issue_count. seems terminal builds can be analyzed more than once since the hold path before buildsignal records the winner. Is it possible that a differing count (e.g. the provider is still ingesting test reports on the first pass) turns into a metadata conflict, the delivery gets dead-lettered, and finalize is never published then?

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.

2 participants