Skip to content

feat(stovepipe): publish issue-opening hooks and retain issue metadata - #1030

Open
mnoah1 wants to merge 1 commit into
mainfrom
mnoah1/stovepipe-issue-hooks
Open

mnoah1 wants to merge 1 commit into
mainfrom
mnoah1/stovepipe-issue-hooks

Conversation

@mnoah1

@mnoah1 mnoah1 commented Nov 6, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Publish an issue.opened hook after an opening's history and projections are durable, including reopenings.

  • Use case will be to post an internal slack notification when a new issue first appears (instead of waiting for the build to complete)
  • Add generic namespaced issue metadata that survives observations, closure, and reopening through version-guarded snapshot updates.
  • Append its nullable JSON column at the end of issue_state; provision that column before deploying code that uses it. Hook implementations can use the metadata to retain external references and delivery state.

Test Plan

  • Deploy in staging with our internal slack implementation added. Trigger a build that includes a new failure and get it to post to a channel.

Revert Plan

Revert this PR. The nullable metadata column can remain in place.

Stack

  1. refactor(stovepipe): decouple issue tracking DLQ recovery #1029
  2. @ feat(stovepipe): publish issue-opening hooks and retain issue metadata #1030

@mnoah1
mnoah1 added this pull request to stack #1031 November 6, 2026 20:44
@mnoah1
mnoah1 marked this pull request as ready for review November 6, 2026 20:50
@mnoah1
mnoah1 requested review from a team, behinddwalls and sbalabanov as code owners November 6, 2026 20:50
Base automatically changed from mnoah1/stovepipe-issuetrack-recovery to main November 6, 2026 21:18
Summary:
Publish an issue.opened hook after an opening's history and projections are durable, including reopenings. Retries retain the event ID and transition timestamp. Pass the queue already available during reconciliation, and keep hook publication in normal processing so DLQ recovery only repairs state and abandons failed work.

Add generic namespaced issue metadata that survives observations, closure, and reopening through version-guarded snapshot updates. Append its nullable JSON column at the end of issue_state; provision that column before deploying code that uses it. Hook implementations can use the metadata to retain external references and delivery state.

Builds on #1029, which separates DLQ recovery from the normal controller.

Test Plan:
TestIssueOpeningHookLifecycle covers openings and reopenings; TestIssueOpeningHookRetriesAfterDurableHistory covers stable retry identity and persistence ordering; TestIssueOpeningHookSkippedByDLQ verifies abandonment with a failing hook publisher. Storage unit and MySQL integration tests cover metadata round trips and version guards. Ran the hook-event, issue-tracking, entity, MySQL storage, and reference server suites, the issue-state MySQL integration cases, and formatting, lint, module-tidy, and Gazelle checks.

Revert Plan:
Revert this PR. The nullable metadata column can remain in place.
@prathshenoy
prathshenoy force-pushed the mnoah1/stovepipe-issue-hooks branch from 970e4d2 to 970ce8f Compare November 6, 2026 21:19

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