Skip to content

feat(platform): add pipeline.Construct engine#403

Draft
JamyDev wants to merge 1 commit into
jamy/platform-lifecyclefrom
jamy/platform-pipeline
Draft

feat(platform): add pipeline.Construct engine#403
JamyDev wants to merge 1 commit into
jamy/platform-lifecyclefrom
jamy/platform-pipeline

Conversation

@JamyDev

@JamyDev JamyDev commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

Summary

Test plan

  • 10 unit tests: single stage, DLQ pairing, multiple stages, empty stages error, controller creation failure, DLQ creation failure, publish-only topics, topic name overrides, resolveTopicName table test, dlqTopicKey, buildTopicConfigs
  • bazel test //platform/pipeline:go_default_test passes
  • make gazelle — BUILD.bazel in sync
  • make fmt — code formatted

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com

Test Plan

Issues

Stack

  1. feat(platform): add lifecycle.Component and lifecycle.Group #402
  2. @ feat(platform): add pipeline.Construct engine #403
  3. feat(orchestrator): add pipeline self-declaration #404
  4. feat(orchestrator): rewrite main.go to use pipeline.Construct #405

## Summary

- Introduces `platform/pipeline` with the typed `Construct[D]` engine
- `Stage[D]` struct declares pipeline topology as a typed table (key, name, consumer group, controller constructor, optional DLQ)
- Engine builds topic registry, creates primary + DLQ consumers, eagerly constructs all controllers, pairs DLQ stages automatically
- Returns a `lifecycle.Component` for ordered start/stop
- Options: `TopicNames`, `Classifiers`, `PublishOnly`, `ExtraComponents`
- Pure addition — no existing code changes

Step 2 of the [Modular Queue Wiring RFC](https://github.com/uber/submitqueue/blob/main/doc/rfc/submitqueue/modular-queue-wiring.md). Stacked on #402.

## Test plan

- [x] 10 unit tests: single stage, DLQ pairing, multiple stages, empty stages error, controller creation failure, DLQ creation failure, publish-only topics, topic name overrides, resolveTopicName table test, dlqTopicKey, buildTopicConfigs
- [x] `bazel test //platform/pipeline:go_default_test` passes
- [x] `make gazelle` — BUILD.bazel in sync
- [x] `make fmt` — code formatted

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@JamyDev
JamyDev force-pushed the jamy/platform-lifecycle branch from e52af1b to 6a9c542 Compare July 21, 2026 17:59
@JamyDev
JamyDev force-pushed the jamy/platform-pipeline branch from b49618c to c37eaea Compare July 21, 2026 17:59
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