Skip to content

Fix Docker builds and add Railway root config - #2

Merged
ralyodio merged 4 commits into
mainfrom
fix/docker-build-and-railway-config
Aug 11, 2026
Merged

ralyodio merged 4 commits into
mainfrom
fix/docker-build-and-railway-config

Conversation

@ralyodio

Copy link
Copy Markdown
Contributor

Two deploy blockers, both surfaced by real infrastructure rather than by tests.

1. All three Docker builds failed

error: Workspace dependency "@outreachgraph/recommend" not found
error: @outreachgraph/recommend@workspace:* failed to resolve

The Dockerfiles enumerated every package.json by hand to get a cacheable dependency layer. Adding packages/recommend broke all three images, because the workspace member was missing from the copy list while being present in bun.lock.

The enumeration was the bug, not the missing line. The dependency stage now copies the workspace wholesale. That costs some layer caching and buys a Dockerfile that cannot drift out of sync with the repository — this class of failure is now impossible rather than merely fixed.

Also adds .dockerignore, which was missing entirely: node_modules, .next and *.db were all being sent as build context.

2. Railway ran railpack instead of the Dockerfiles

✖ No start command detected.

Railway reads config-as-code from the repository root. The per-service railway.json files lived only under apps/*, so Railway found nothing, fell back to railpack auto-detection, and could not infer a start command for a Bun workspace.

Adds a root railway.json configuring the default service as the API, and documents the multi-service setup in the README:

Service Config file path
api /railway.json
web /apps/web/railway.json
worker /apps/worker/railway.json

Root Directory must stay unset — these Dockerfiles expect the repository root as their build context.

Note on verification

Docker is not installed on the machine these images were authored on, so the Dockerfiles were never built locally before being committed. CI is the first thing that ever ran them, and it caught this immediately. The docker job in CI is the guard going forward.

265 tests pass, typecheck clean.

🤖 Generated with Claude Code

ralyodio and others added 4 commits August 11, 2026 12:27
Closes the gap where the approval queue was fully built but nothing fed it.
A bare GitHub handle now walks the whole pipeline to a queued card:

  enrich -> resolve identities -> collect signals -> score -> recommend

GitHub first because it is free and its profiles carry links the person
published themselves. Verified live against a real account: three linked
identities (github 1.00, x 0.956 via cross_linked_profile + same_employer,
website 0.918 via same_personal_domain), signals extracted, scored, and a
recommendation produced.

The recommendation engine cannot invent capabilities — candidate actions are
filtered through allowedActions before anything is chosen, so on GitHub it
can only ever propose passive actions, never the disabled comment or DM. It
also cannot invent a reason: every recommendation names its trigger signal,
and only signals carrying verbatim evidence enter groundedSignalIds.

Signal classification is rule-based, not model-based, so it is reproducible.

265 tests, typecheck clean.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…onfig

The Dockerfiles listed every package.json by hand, so adding
packages/recommend broke all three builds:

  error: Workspace dependency "@outreachgraph/recommend" not found

The enumeration was the bug, not the missing line. The dependency stage now
copies the workspace wholesale, which costs some layer caching and buys a
Dockerfile that cannot drift out of sync with the repository.

Also adds .dockerignore (node_modules, .next, *.db were all being sent as
build context) and a root railway.json. Railway reads config from the repo
root; with the per-service files only under apps/*, it found nothing and
fell back to railpack, which cannot find a start command in a Bun workspace.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Copying only the root node_modules into a fresh builder stage loses the
per-package node_modules/.bin that Bun's workspace linking creates, so the
build failed with `next: command not found`. The builder now extends deps,
which already carries the full workspace layout.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@ralyodio
ralyodio merged commit 16c83ec into main Aug 11, 2026
6 checks passed
@ralyodio
ralyodio deleted the fix/docker-build-and-railway-config branch August 11, 2026 13:08
ralyodio added a commit that referenced this pull request Sep 28, 2026
Dependabot #1 and #2: unauthenticated RCE in the image optimization API with
AVIF files, and on Windows-hosted servers; both fixed in 16.3.3.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
ralyodio added a commit that referenced this pull request Sep 28, 2026
Dependabot #1 and #2: unauthenticated RCE in the image optimization API with
AVIF files, and on Windows-hosted servers; both fixed in 16.3.3.

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
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