Skip to content

feat(stovepipe): add BuildRequest/BuildSignal queue contract#376

Merged
behinddwalls merged 2 commits into
uber:mainfrom
roychying:chenghan.ying/stovepipe-build/buildsignal-queue-contract
Jul 20, 2026
Merged

feat(stovepipe): add BuildRequest/BuildSignal queue contract#376
behinddwalls merged 2 commits into
uber:mainfrom
roychying:chenghan.ying/stovepipe-build/buildsignal-queue-contract

Conversation

@roychying

Copy link
Copy Markdown
Contributor

Why?

Stovepipe's pipeline needs two more internal queue stages to carry a request through building and polling its build result: build (process/analyze hands off a request once its build scope is decided) and buildsignal (build hands off the triggered build so its status can be polled to a terminal state). Both stages' wire payloads need to be defined before their controllers can be implemented, per the algorithms in doc/rfc/stovepipe/steps/build.md and buildsignal.md.

What?

  • Added buildsignal.proto / generated buildsignal.pb.go, defining BuildSignal { id } — the build id to poll, following the same "id only" convention as the rest of the internal pipeline (producer and consumer share the store, so redelivery stays idempotent).
  • Added TopicKeyBuildSignal alongside the existing TopicKeyBuild in topics.go, and the BuildSignal alias in messagequeue.go.
    • Renamed process_test.gomessagequeue_test.go since its round-trip and topic-key-binding guard tests are package-wide, not process-specific, and extended them to cover BuildSignal (round-trip test, wire-format check, and the TestTopicKeysBindEveryTopicKey drift guard).

Test Plan

  • make build and make test - all clean

Issue

@roychying
roychying requested review from a team, behinddwalls and sbalabanov as code owners July 15, 2026 21:45
@roychying
roychying force-pushed the chenghan.ying/stovepipe-build/buildsignal-queue-contract branch from e9cb9e4 to 75f2997 Compare July 16, 2026 18:11
@behinddwalls
behinddwalls added this pull request to the merge queue Jul 20, 2026
Merged via the queue into uber:main with commit 39d61fe Jul 20, 2026
15 checks passed
JamyDev pushed a commit that referenced this pull request Jul 24, 2026
## Why?
Stovepipe's pipeline needs two more internal queue stages to carry a
request through building and polling its build result: `build`
(process/analyze hands off a request once its build scope is decided)
and `buildsignal` (build hands off the triggered build so its status can
be polled to a terminal state). Both stages' wire payloads need to be
defined before their controllers can be implemented, per the algorithms
in `doc/rfc/stovepipe/steps/build.md` and `buildsignal.md`.

## What?
- Added `buildsignal.proto` / generated `buildsignal.pb.go`, defining
`BuildSignal { id }` — the build id to poll, following the same "id
only" convention as the rest of the internal pipeline (producer and
consumer share the store, so redelivery stays idempotent).
- Added `TopicKeyBuildSignal` alongside the existing `TopicKeyBuild` in
`topics.go`, and the `BuildSignal` alias in `messagequeue.go`.
- - Renamed `process_test.go` → `messagequeue_test.go` since its
round-trip and topic-key-binding guard tests are package-wide, not
process-specific, and extended them to cover `BuildSignal` (round-trip
test, wire-format check, and the `TestTopicKeysBindEveryTopicKey` drift
guard).

## Test Plan
 - `make build` and `make test` - all clean
 
## Issue
<!-- 
Link the issue here. 
- Use 'Closes #123' if this is the final fix. 
- Use 'Part of #123' or just '#123' if the feature is still in progress.
-->
JamyDev pushed a commit that referenced this pull request Jul 24, 2026
## Why?
Stovepipe's pipeline needs two more internal queue stages to carry a
request through building and polling its build result: `build`
(process/analyze hands off a request once its build scope is decided)
and `buildsignal` (build hands off the triggered build so its status can
be polled to a terminal state). Both stages' wire payloads need to be
defined before their controllers can be implemented, per the algorithms
in `doc/rfc/stovepipe/steps/build.md` and `buildsignal.md`.

## What?
- Added `buildsignal.proto` / generated `buildsignal.pb.go`, defining
`BuildSignal { id }` — the build id to poll, following the same "id
only" convention as the rest of the internal pipeline (producer and
consumer share the store, so redelivery stays idempotent).
- Added `TopicKeyBuildSignal` alongside the existing `TopicKeyBuild` in
`topics.go`, and the `BuildSignal` alias in `messagequeue.go`.
- - Renamed `process_test.go` → `messagequeue_test.go` since its
round-trip and topic-key-binding guard tests are package-wide, not
process-specific, and extended them to cover `BuildSignal` (round-trip
test, wire-format check, and the `TestTopicKeysBindEveryTopicKey` drift
guard).

## Test Plan
 - `make build` and `make test` - all clean
 
## Issue
<!-- 
Link the issue here. 
- Use 'Closes #123' if this is the final fix. 
- Use 'Part of #123' or just '#123' if the feature is still in progress.
-->
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