fix(showcase): add showcase-harness-worker to Railway SSOT (railway-envs.ts)#5280
Merged
Conversation
…nvs.ts) The pool-fleet cutover manually created the staging-only `showcase-harness-worker` Railway service (HARNESS_ROLE=worker, 2 replicas) and flipped the existing `harness` service to HARNESS_ROLE=control-plane. The new service was untracked in the SSOT, so verify-railway-image-refs.ts failed the "Showcase: Build & Push" workflow on every push to main (1 untracked Railway service), which skipped the harness `build` job and blocked harness image rebuilds. Add the worker to SERVICES as a staging-only, domain-less queue worker: - ciBuilt:false — it runs the SAME `showcase-harness` image the existing harness build slot produces; there is no separate worker build. - gateIgnore:true / gateValidated:false — no prod instance and no public domain, so it does not fit the symmetric dual-env shape the image-ref gate validates. gateIgnore clears the "untracked Railway service" failure (any SSOT entry counts as known) without tripping a false "missing from prod" failure. - repoNameOverride → showcase-harness so the image-ref shape resolves. - probe disabled in both envs (no externally-reachable health endpoint). Regenerate railway-envs.generated.json and update the SSOT-count and gate-coverage test invariants (27→28 services; worker is the sole intentional gateIgnore/gateValidated:false entry).
Contributor
|
The latest updates on your projects. Learn more about Vercel for GitHub.
2 Skipped Deployments
|
Contributor
📣 Social Copy GeneratorGenerate social media copies (Twitter/X, LinkedIn, Blog Post) for this PR using Claude.
|
Contributor
Production Digest-Pinning AuditAudit could not run this round. ErrorRun 2026-06-05 13:00:32 PDT — 0 finding(s). |
5 tasks
jpr5
added a commit
that referenced
this pull request
Jun 5, 2026
…SOT (unblock harness builds) (#5286) ## Summary The `showcase_build` workflow's pre-build `verify-image-refs` gate (SSOT = `showcase/scripts/railway-envs.ts`) was **failing all staging deploys** with `1 untracked Railway services`. The interim `harness-legacy` staging service (id `11279eba-97eb-417e-82a5-7cb4254eb147`, project `showcase`, env `staging`) exists on Railway but had no SSOT entry, so the Railway→SSOT drift check failed → build skipped → nothing deployed (this blocked PR #5283's merge build). `harness-legacy` is the **interim legacy all-probe harness** (`HARNESS_ROLE` unset) stood up to keep non-d6 coverage live during the fleet migration. It is **not CI-built** (runs a pinned pre-fleet image digest set out-of-band) and will be torn down at migration end. ## Change - Adds a `harness-legacy` entry to `SERVICES` mirroring the `showcase-harness-worker` precedent (PR #5280): - `ciBuilt: false` — not built by `showcase_build`; no dedicated build slot. - `gateIgnore: true` — deliberately-untracked for the image-ref gate. `findUntrackedServices` treats any SSOT entry as known, so this clears the "untracked" failure; `gateValidated: false` keeps `findMissingServices` from flagging it. - `repoNameOverride` → `showcase-harness` for both envs (same image-ref shape as the control-plane harness). - Real serviceInstance IDs recorded for both envs (resolved via Railway GraphQL); probe disabled in both envs. - Regenerates `railway-envs.generated.json`. - Updates service-count and gate-ignored carve-out assertions across the three affected test files (28 → 29 services; `harness-legacy` added to the two `GATE_IGNORED` sets). ## Verification - **Live gate (red→green):** without the entry, `verify-railway-image-refs.ts` exits **1** with `harness-legacy is not in the SSOT`; with the entry it exits **0** — `✓ 54 env-scoped instances verified (2 skipped)`. - **Full scripts test suite green:** 1771 passed (49 files), including `railway-envs.test.ts`, `verify-railway-image-refs.test.ts`, and `emit-railway-envs-json.test.ts`. - **`emit --check`** confirms `railway-envs.generated.json` is in sync. - **tsc** clean (`tsc --noEmit -p showcase/scripts/tsconfig.json`). ## Test plan - [x] `npx tsx showcase/scripts/verify-railway-image-refs.ts` exits 0 against live Railway - [x] `vitest run` in `showcase/scripts` fully green - [x] `npx tsx showcase/scripts/emit-railway-envs-json.ts --check` passes - [x] `tsc --noEmit -p showcase/scripts/tsconfig.json` clean - [ ] CI green on this PR 🤖 Generated with [Claude Code](https://claude.com/claude-code)
pull Bot
pushed a commit
to TheRakeshPurohit/CopilotKit
that referenced
this pull request
Jun 5, 2026
…SOT (unblock harness builds) The showcase_build verify-image-refs gate (SSOT = showcase/scripts/railway-envs.ts) was failing with "1 untracked Railway services" because the interim harness-legacy staging service (the legacy all-probe harness kept live during the pool-fleet migration) exists on Railway but had no SSOT entry. That Railway->SSOT drift check skips the build, so nothing deploys. Adds a harness-legacy SERVICES entry mirroring the showcase-harness-worker precedent (PR CopilotKit#5280): ciBuilt:false (not built by showcase_build, runs a pinned out-of-band digest) and gateIgnore:true (deliberately-untracked for the image-ref gate). findUntrackedServices treats any SSOT entry as known, so this clears the untracked failure; gateValidated:false keeps findMissingServices from flagging it. Real serviceInstance IDs for both envs recorded from Railway GraphQL. Regenerates railway-envs.generated.json and updates the service-count / gate-ignored carve-out assertions (28->29 services). Verified: live verify-railway-image-refs.ts now exits 0 ("54 env-scoped instances verified, 2 skipped"); without the entry it exits 1 with the harness-legacy untracked failure. Full scripts test suite green (1771 passed).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The pool-fleet cutover manually created a new staging-only Railway service
showcase-harness-worker(HARNESS_ROLE=worker, 2 replicas) and flipped the existingharnessservice to HARNESS_ROLE=control-plane. The new service was not in the SSOT (showcase/scripts/railway-envs.ts), soverify-railway-image-refs.tsfailed the "Showcase: Build & Push" workflow on every push to main:Because the
buildjobneeds: [verify-image-refs], that gate failure skipped the harness build — meaning recent harness fixes (e.g. #5279's chat-rung probe) never rebuilt to staging. The secondaryAggregate build resultsENOENT failure was a downstream consequence of the skipped build.This PR adds
showcase-harness-workertoSERVICES, matching the live Railway service:ciBuilt: false— the worker runs the SAMEshowcase-harnessGHCR image the existing harness build slot produces; there is no separate worker build slot.gateIgnore: true/gateValidated: false— the worker is staging-only (no prod serviceInstance) and domain-less (it pulls jobs from the control-plane queue rather than serving HTTP), so it does not fit the symmetric dual-env / public-domain shape the image-ref gate validates.gateIgnoreclears the "untracked Railway service" failure (any SSOT entry counts as known) without triggering a false "missing from prod" failure (findMissingServicesonly checksgateValidated: trueentries).repoNameOverride→showcase-harnessso the image-ref shape resolves correctly.The existing
harness(now control-plane) entry is unchanged and remains correct (it still builds + serves theshowcase-harnessimage on its public domain).Also regenerates
railway-envs.generated.jsonand updates the SSOT-count / gate-coverage test invariants (27 → 28 services; the worker is the sole intentionalgateIgnore/gateValidated:falseentry).Proof
Against live Railway (CLI auth):
✗ Railway image-ref drift detected (... 1 untracked Railway services ...)✓ 54 env-scoped instances verified (1 skipped)— worker is the 1 skipped (gateIgnore), 0 untracked.emit-railway-envs-json.ts --check: up to date.Test plan
verify-railway-image-refs.tspasses against live Railway (0 untracked)emit-railway-envs-json.ts --checkpasses (generated JSON regenerated)showcase/scriptsvitest suite: 1772 passed (49 files)