Skip to content

fix(stovepipe): finalize builds independently of running observations - #1008

Draft
mnoah1 wants to merge 1 commit into
mnoah1/stovepipe-task-scoped-closurefrom
mnoah1/stovepipe-finalization-order
Draft

mnoah1 wants to merge 1 commit into
mnoah1/stovepipe-task-scoped-closurefrom
mnoah1/stovepipe-finalization-order

Conversation

@mnoah1

@mnoah1 mnoah1 commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Why?

A running observation from a newer build advances the queue-wide source boundary and discards an older build's delayed finalization. This can leave resolved issues open, even when the newer observation reports no failures.

What?

Builds on #1007, which limits task-wide closure suppression to the affected task.

Retain a separate terminal request boundary across running refreshes. A newer running observation no longer invalidates an older finalization: each issue instead skips older sources while the rest of the finalization continues. Completed or abandoned terminal passes still supersede older work. Recovery preserves the same boundary, and finalization admission, completion, and stale-final discards are logged at info level.

Provision the non-null issue_tracking.finalized_request_id column with an empty default before deploying the updated normal and recovery controllers together. The canonical schema and rollout documentation are included. Existing completed terminal records seed their boundary from their request ID; existing refresh records have no retained terminal boundary.

Test Plan

  • Reproduced the original discard with empty, unrelated-failure, and same-failure refreshes before applying the fix; all three regression cases now pass.
  • Issue-tracking, entity, and MySQL storage Bazel unit tests pass, covering skipped issues across batches, checkpoint retries, recovery, retained terminal boundaries, and existing terminal records.
  • The real MySQL storage integration suite and repository formatting, lint, dependency, and Gazelle checks pass.

Revert Plan

Revert this PR and restart the consumers together. The added finalized_request_id column can remain.

Issues

Stack

  1. fix(stovepipe): scope task-wide closure suppression to its task #1007
  2. @ fix(stovepipe): finalize builds independently of running observations #1008

@mnoah1
mnoah1 force-pushed the mnoah1/stovepipe-finalization-order branch from bf9d8ff to 49b7760 Compare November 4, 2026 15:26

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