Skip to content

Test: Railway PR preview deploy#7

Closed
MichaelFisher1997 wants to merge 2 commits into
masterfrom
test/railway-preview-verify
Closed

Test: Railway PR preview deploy#7
MichaelFisher1997 wants to merge 2 commits into
masterfrom
test/railway-preview-verify

Conversation

@MichaelFisher1997

Copy link
Copy Markdown
Contributor

Throwaway PR to verify Railway PR Environments clone both game and website services into an ephemeral preview. Safe to close after the Railway bot posts the preview URLs.

@railway-app

railway-app Bot commented Jun 17, 2026

Copy link
Copy Markdown

🚅 Deployed to the voxl-pr-7 environment in voxl

Service Status Web Updated (UTC)
website ✅ Success (View Logs) Web Jun 17, 2026 at 11:18 pm
game ✅ Success (View Logs) Web Jun 17, 2026 at 11:18 pm

@railway-app railway-app Bot temporarily deployed to voxl / voxl-pr-7 June 17, 2026 23:17 Destroyed
@MichaelFisher1997

Copy link
Copy Markdown
Contributor Author

Verification complete — both services deployed to preview. Closing throwaway PR.

@MichaelFisher1997 MichaelFisher1997 deleted the test/railway-preview-verify branch June 17, 2026 23:19
@github-actions

Copy link
Copy Markdown

📋 Summary

No linked issues are mentioned in the PR description. The PR is explicitly labeled as a throwaway test to verify Railway PR Environments clone the game and website services into an ephemeral preview. It adds Railway IAC configuration (.railway/railway.ts), supporting docs, an opencode skill, and the railway CLI as a dev dependency. Game and website typecheck/build both pass, but the Railway service configuration references Dockerfiles whose nginx images hardcode port 80, which likely conflicts with Railway's injected PORT variable.

📌 Review Metadata

🔴 Critical Issues (Must Fix - Blocks Merge)

None identified.

⚠️ High Priority Issues (Should Fix)

[HIGH] .railway/railway.ts:8-24 — Railway services preserve PORT, but containers hardcode nginx to port 80
Confidence: Medium
Description: Both game and website services set env.PORT: preserve(). For a fresh Railway PR environment there is no pre-existing PORT value, so Railway will inject its default (commonly 3000). However, the referenced Dockerfiles use nginx:1.27-alpine with nginx/voxl.conf hardcoded to listen 80; and EXPOSE 80. The healthcheck path / will therefore probe the wrong port and the services will fail to come up.
Impact: The PR's stated goal—verifying that Railway PR previews work—is undermined because both services will likely fail their healthchecks.
Suggested Fix: Either explicitly pin the services to port 80 so Railway routes to the container's actual listener:

const game = service("game", {
  source: voxl,
  build: { buildEnvironment: "V3", builder: "DOCKERFILE", dockerfilePath: "Dockerfile" },
  healthcheck: "/",
  healthcheckTimeout: 100,
  env: {
    PORT: "80",
  },
});

or update the Dockerfiles/nginx config to honor the $PORT environment variable and remove the PORT: preserve() lines.

💡 Medium Priority Issues (Nice to Fix)

[MEDIUM] package.json:25railway dependency added to the game package
Confidence: Medium
Description: The root package.json is the game package. Adding the railway IAC CLI as a game devDependency bloats the game's install graph with a second esbuild version, graphql, etc. The Railway config, skill, and README live outside the game package, so the tooling should not be mixed into the game's manifest.
Impact: Slower installs, larger lockfile, and blurred package boundaries.
Suggested Fix: Move the railway dependency to a dedicated package.json under .railway/ (or another non-game location) so the game package remains focused on the WebGL build.

ℹ️ Low Priority Suggestions (Optional)

[LOW] .railway/railway.ts:11,21 — Explicit replicas: 1 is a platform default
Confidence: High
Description: The project's own Railway skill states "Do not add platform defaults unless the user explicitly wants them." replicas: 1 is the Railway default.
Suggested Fix: Remove the replicas: 1 lines from both services.

[LOW] README.md:333 — Throwaway comment should not be merged
Confidence: High
Description: The PR adds <!-- preview-deploy verification (throwaway) --> to the bottom of the README. The PR body itself says this is throwaway and safe to close.
Suggested Fix: Remove this comment before merging, or close the PR without merging.

[LOW] .railway/railway.ts:8,18buildEnvironment: "V3" is likely a platform default
Confidence: Medium
Description: Same guidance as above: omit platform defaults unless explicitly desired.
Suggested Fix: Remove buildEnvironment: "V3" from both build objects.

📊 SOLID Principles Score

Principle Score Notes
Single Responsibility 6 Railway config is separated into its own files, but the railway CLI dep is dropped into the game package.
Open/Closed 8 New infrastructure files are additive; no existing game/site logic is modified.
Liskov Substitution 8 N/A for configuration; helpers are used idiomatically.
Interface Segregation 8 Railway DSL helpers are used rather than low-level internals.
Dependency Inversion 6 Tightly coupled to the railway CLI package; no abstraction layer.
Average 7.2

🎯 Final Assessment

Overall Confidence Score: 50%

How to interpret: 31-60%: Moderate concerns, several issues need addressing.

Confidence Breakdown:

  • Code Quality: 70% (clean Railway DSL usage, good docs/skill)
  • Completeness: 50% (config is structurally complete but deploy-time port mismatch means previews likely won't actually work)
  • Risk Level: 40% (no runtime code risk, but misconfigured deploys waste preview time)
  • Test Coverage: N/A (infrastructure change; builds pass but no automated Railway plan validation possible without auth)

Merge Readiness:

  • All critical issues resolved
  • SOLID average score >= 6.0
  • Overall confidence >= 60%
  • No security concerns
  • Tests present and passing (N/A for infra, but deploy validation is missing)

Verdict:

MERGE WITH FIXES

Fix the PORT mismatch before merging (or close the PR as the author intended, since it is labeled throwaway). Also remove the throwaway README comment and consider relocating the railway dependency out of the game package.

New%20session%20-%202026-06-17T23%3A17%3A55.897Z
opencode session  |  github run

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