Skip to content

refactor(stovepipe): collapse to a single Ping-only service#271

Merged
behinddwalls merged 1 commit into
mainfrom
stovepipe
Jun 25, 2026
Merged

refactor(stovepipe): collapse to a single Ping-only service#271
behinddwalls merged 1 commit into
mainfrom
stovepipe

Conversation

@behinddwalls

@behinddwalls behinddwalls commented Jun 25, 2026

Copy link
Copy Markdown
Collaborator

Summary

Why?

Stovepipe was scaffolded with the full two-service shape (gateway + orchestrator) plus entities, storage extensions, and queue/topic wiring copied from SubmitQueue. None of that is exercised yet — the only working surface is the Ping health check. Carrying the unused gateway/orchestrator split, entities, extensions, and pipeline plumbing adds maintenance cost (mocks, schemas, compose stacks, build targets) with no behavior behind it.

What?

Reduce Stovepipe to a single Ping-only service and promote its packages to the domain top level:

  • Wire contract: replace api/stovepipe/{gateway,orchestrator}/ with a single api/stovepipe/proto/stovepipe.proto (service uber.submitqueue.stovepipe.Stovepipe, Ping only) and regenerated api/stovepipe/protopb/. The change import and Ingest RPC are dropped.
  • Domain: promote the controller to stovepipe/controller/ (ServiceName: "stovepipe"). Remove stovepipe/{gateway,orchestrator,entity,extension,core}/.
  • Example: collapse to one example/stovepipe/server + example/stovepipe/client and a single-service docker-compose.yml with no MySQL/queue dependency (default gRPC port :8083, :8080 in Docker).
  • Integration test: test/integration/stovepipe/ now exercises Ping only (no MySQL/schema), context svc-stovepipe.
  • Wiring: single api_stovepipe codegen target in tool/proto, one # gazelle:resolve for api/stovepipe/protopb, and Makefile targets consolidated to build-stovepipe-linux / local-stovepipe-start|stop|logs / run-client-stovepipe.
  • Docs: stovepipe/README.md, example/README.md, and doc/howto/TESTING.md updated to the single-service layout.

Entities, extensions, and the orchestration pipeline can be reintroduced incrementally as Stovepipe grows real behavior.

Test Plan

  • make proto && make gazelle && make tidy (no unexpected churn)
  • make build (230 targets)
  • make test (59 tests, incl. //stovepipe/controller:controller_test)
  • make fmt, make lint-license
  • bazel build //test/integration/stovepipe:stovepipe_test and all //{api,example,}/stovepipe/...

@behinddwalls behinddwalls marked this pull request as ready for review June 25, 2026 06:08
@behinddwalls behinddwalls requested review from a team and sbalabanov as code owners June 25, 2026 06:08
@behinddwalls behinddwalls force-pushed the stovepipe branch 2 times, most recently from 07e9b09 to 9acd7e3 Compare June 25, 2026 06:12
## Summary

### Why?

Stovepipe was scaffolded with the full two-service shape (gateway + orchestrator) plus entities, storage extensions, and queue/topic wiring copied from SubmitQueue. None of that is exercised yet — the only working surface is the `Ping` health check. Carrying the unused gateway/orchestrator split, entities, extensions, and pipeline plumbing adds maintenance cost (mocks, schemas, compose stacks, build targets) with no behavior behind it.

### What?

Reduce Stovepipe to a single Ping-only service and promote its packages to the domain top level:

- Wire contract: replace `api/stovepipe/{gateway,orchestrator}/` with a single `api/stovepipe/proto/stovepipe.proto` (service `uber.submitqueue.stovepipe.Stovepipe`, `Ping` only) and regenerated `api/stovepipe/protopb/`. The `change` import and `Ingest` RPC are dropped.
- Domain: promote the controller to `stovepipe/controller/` (`ServiceName: "stovepipe"`). Remove `stovepipe/{gateway,orchestrator,entity,extension,core}/`.
- Example: collapse to one `example/stovepipe/server` + `example/stovepipe/client` and a single-service `docker-compose.yml` with no MySQL/queue dependency (default gRPC port `:8083`, `:8080` in Docker).
- Integration test: `test/integration/stovepipe/` now exercises Ping only (no MySQL/schema), context `svc-stovepipe`.
- Wiring: single `api_stovepipe` codegen target in `tool/proto`, one `# gazelle:resolve` for `api/stovepipe/protopb`, and Makefile targets consolidated to `build-stovepipe-linux` / `local-stovepipe-start|stop|logs` / `run-client-stovepipe`.
- Docs: `stovepipe/README.md`, `example/README.md`, and `doc/howto/TESTING.md` updated to the single-service layout.

Entities, extensions, and the orchestration pipeline can be reintroduced incrementally as Stovepipe grows real behavior.

## Test Plan

- ✅ `make proto` && `make gazelle` && `make tidy` (no unexpected churn)
- ✅ `make build` (230 targets)
- ✅ `make test` (59 tests, incl. `//stovepipe/controller:controller_test`)
- ✅ `make fmt`, `make lint-license`
- ✅ `bazel build //test/integration/stovepipe:stovepipe_test` and all `//{api,example,}/stovepipe/...`
@behinddwalls behinddwalls merged commit bbb00d7 into main Jun 25, 2026
15 checks passed
@behinddwalls behinddwalls deleted the stovepipe branch June 25, 2026 16:25
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