Skip to content

refactor(runway): collapse orchestrator into single-service domain#272

Merged
behinddwalls merged 1 commit into
mainfrom
runway/single-service
Jun 25, 2026
Merged

refactor(runway): collapse orchestrator into single-service domain#272
behinddwalls merged 1 commit into
mainfrom
runway/single-service

Conversation

@behinddwalls

@behinddwalls behinddwalls commented Jun 25, 2026

Copy link
Copy Markdown
Collaborator

Summary

Why?

Runway only ever had a single service, so the per-domain gateway/ + orchestrator/ split wrapped it in an empty service layer. Making the runway domain be the service removes that indirection and matches how runway actually works — a consumer-only landing service with no gateway.

What?

Collapses the orchestrator service segment out of the runway domain:

  • runway/orchestrator/controller/*runway/controller/*
  • api/runway/orchestrator/{proto,protopb}api/runway/{proto,protopb}
  • example/runway/orchestrator/{client,server}example/runway/{client,server}

The proto package becomes uber.runway (was uber.runway.orchestrator) and the RPC service RunwayOrchestrator becomes Runway. Server/client identifiers, metric scope, and the ServiceName ping field follow suit. Build tooling (tool/proto, Makefile targets, docker-compose.yml, Dockerfile) and docs (CLAUDE.md, runway/README.md, runway workflow RFC) are updated, documenting the single-service-domain pattern.

Test Plan

  • make build
  • make proto + make gazelle (idempotent)
  • ✅ runway tests: //runway/..., //api/runway/..., //example/runway/...

@behinddwalls behinddwalls marked this pull request as ready for review June 25, 2026 14:29
@behinddwalls behinddwalls requested review from a team and sbalabanov as code owners June 25, 2026 14:29
Runway only ever had a single service, so the per-domain `gateway/` + `orchestrator/` split wrapped it in an empty service layer. Making the runway domain *be* the service removes that indirection and matches how runway actually works — a consumer-only landing service with no gateway.

Collapses the `orchestrator` service segment out of the runway domain:

- `runway/orchestrator/controller/*` → `runway/controller/*`
- `api/runway/orchestrator/{proto,protopb}` → `api/runway/{proto,protopb}`
- `example/runway/orchestrator/{client,server}` → `example/runway/{client,server}`

The proto package becomes `uber.runway` (was `uber.runway.orchestrator`) and the RPC service `RunwayOrchestrator` becomes `Runway`. Server/client identifiers, metric scope, and the `ServiceName` ping field follow suit. Build tooling (`tool/proto`, `Makefile` targets, `docker-compose.yml`, `Dockerfile`) and docs (`CLAUDE.md`, `runway/README.md`, runway workflow RFC) are updated, documenting the single-service-domain pattern.

- ✅ `make build`
- ✅ `make proto` + `make gazelle` (idempotent)
- ✅ runway tests: `//runway/...`, `//api/runway/...`, `//example/runway/...`

Co-authored-by: Cursor <cursoragent@cursor.com>
@behinddwalls behinddwalls force-pushed the runway/single-service branch from ac6c543 to 57ea58f Compare June 25, 2026 16:32
@behinddwalls behinddwalls merged commit a03304d into main Jun 25, 2026
15 checks passed
@behinddwalls behinddwalls deleted the runway/single-service branch June 25, 2026 16:52
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