Skip to content

docs(deploy): capture the service-cutover ordering traps as a checklist - #84

Merged
PetrefiedThunder merged 1 commit into
mainfrom
claude/inflow-lab-ux-onboarding-uwr3dc
Aug 13, 2026
Merged

docs(deploy): capture the service-cutover ordering traps as a checklist#84
PetrefiedThunder merged 1 commit into
mainfrom
claude/inflow-lab-ux-onboarding-uwr3dc

Conversation

@PetrefiedThunder

Copy link
Copy Markdown
Collaborator

Summary

Adds a "Moving the demo to a new service (cutover checklist)" subsection to the Railway Shared Demo docs, written from what the August 2026 cutover actually hit rather than from theory. Four ordered steps, each with its verification probe:

  1. REGENGINE_CORS_ORIGINS = change, never copy/reference. The value names the host, so a Railway reference variable carries the old URL — which breaks both CORS headers and every state-changing request, since app/auth_middleware.py gates writes on the same list. This single stale value kept both nightly smokes red for three days after chore: cut the shared demo over to the GitHub-connected Railway service #82 merged (Remote Smoke is failing against the shared demo #80, Remote Browser Smoke is failing against the shared demo #81), initially attributed to the wrong cause.
  2. Secrets referenced from the old service must become concrete before the old service can be retired, or auth breaks on the new one.
  3. Retarget all consumers, including the one outside this repo: the RegEngine dashboard's proxy is a Next.js route hosted on Vercel, so INFLOW_LAB_SERVICE_URL is a Vercel env var (inert until a production redeploy) — a venue nothing previously documented.
  4. Only then retire the old service.

Why now

#82's decommissioning note covered the auth/HMAC copy but omitted the CORS change and the Vercel venue — the two things that actually bit. This closes that documentation gap while the incident details are fresh; the resolution evidence lives in #80/#81.

Test Plan

  • Docs-only change; no code or workflow touched.
  • Both verification probes in the checklist were run for real during the incident (CORS origin echo; BFF healthz commit_source) and are transcribed from the working commands.

🤖 Generated with Claude Code

https://claude.ai/code/session_014ykFQkKR1XmCtSkDRCT4sT


Generated by Claude Code

The August 2026 cutover to the GitHub-connected Railway service hit two
ordering traps that nothing documented:

- REGENGINE_CORS_ORIGINS came across as a Railway reference variable, so
  it carried the OLD service's URL. Because the same allowlist also gates
  state-changing requests (auth_middleware), this broke both CORS headers
  and every write — and kept the nightly smokes red for three days after
  the cutover PR merged, initially attributed to the wrong cause.
- The dashboard reaches the demo through a Next.js proxy route hosted on
  Vercel, so INFLOW_LAB_SERVICE_URL is a Vercel env var, not a Railway
  one — and Vercel bakes env at build, so setting it does nothing until
  production is redeployed. Nothing recorded this venue.

Write the four-step checklist (CORS = change-not-copy, secrets = make
concrete, consumers = retarget incl. the Vercel var, then retire) into
the Railway Shared Demo section, each step with its verification probe.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014ykFQkKR1XmCtSkDRCT4sT
@PetrefiedThunder
PetrefiedThunder marked this pull request as ready for review August 13, 2026 00:55
@PetrefiedThunder
PetrefiedThunder merged commit a698ceb into main Aug 13, 2026
2 checks passed
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