Background
After #111 closed and a fresh CF Workers Builds trigger was created (`b576abfd-4b89-4bdc-9189-d7b44ba8f1b7`, 2026-05-23), the first real build ran on main HEAD (`652917a`, PR #116 merge) and failed at the install step in 6s.
This is the first real signal in months — prior failures were 0s phantoms from leaky disabled triggers (now deleted).
Real failure
Build log:
```
Detected the following tools from environment: pnpm@10.11.1, nodejs@22.16.0
Installing project dependencies: pnpm install --frozen-lockfile
ERR_PNPM_OUTDATED_LOCKFILE Cannot install with "frozen-lockfile" because pnpm-lock.yaml is not up to date with package.json
```
CF auto-detects pnpm because `pnpm-lock.yaml` exists at repo root. The build_command in the trigger does not control the install step.
Root cause (two layers)
Layer 1 — Stale lockfile: `pnpm-lock.yaml` (March 2026) is older than `package-lock.json` (May 2026). Specifically, `package.json` has `"@chittyos/schema": "file:../../CHITTYFOUNDATION/chittyschema"` but the pnpm lockfile predates this.
Layer 2 — Local-path dep won't resolve in CF builders: Even with a fresh lockfile, `@chittyos/schema` is a `file:../../CHITTYFOUNDATION/chittyschema` reference. The path `../../CHITTYFOUNDATION/chittyschema` does not exist in the CF build environment. `npm view @chittyos/schema` → 404 (not published).
Options
- Publish `@chittyos/schema` to npm (or a private registry) — cleanest, unblocks any CI environment. Requires coordination with CHITTYFOUNDATION/chittyschema.
- Vendor schema locally — copy needed exports into chittyfinance under `server/lib/schema/` or similar. Loses upstream updates.
- Skip install entirely — set a custom `build.command` that runs vite/wrangler without `pnpm install` first. Wouldn't work because tsx/wrangler need node_modules.
- Remove pnpm-lock.yaml + fix dep — forces CF to use npm. Doesn't fix the file: ref.
Recommendation
Option 1 (publish chittyschema) + delete the stale `pnpm-lock.yaml`. Two existing branches `fix/workers-builds-use-pnpm` and `fix/workers-builds-vite-peer-conflict` already attempted partial fixes — review before opening a new fix branch.
Acceptance
- CF Workers Builds completes successfully on main HEAD
- `Workers Builds: chittyfinance` posts SUCCESS to GitHub checks on PR merges
- No reliance on local filesystem paths for dependencies
Related: closes loop on #111 (which was the 0s phantom — that's resolved; this is the real underlying issue exposed by the fix).
Background
After #111 closed and a fresh CF Workers Builds trigger was created (`b576abfd-4b89-4bdc-9189-d7b44ba8f1b7`, 2026-05-23), the first real build ran on main HEAD (`652917a`, PR #116 merge) and failed at the install step in 6s.
This is the first real signal in months — prior failures were 0s phantoms from leaky disabled triggers (now deleted).
Real failure
Build log:
```
Detected the following tools from environment: pnpm@10.11.1, nodejs@22.16.0
Installing project dependencies: pnpm install --frozen-lockfile
ERR_PNPM_OUTDATED_LOCKFILE Cannot install with "frozen-lockfile" because pnpm-lock.yaml is not up to date with package.json
```
CF auto-detects pnpm because `pnpm-lock.yaml` exists at repo root. The build_command in the trigger does not control the install step.
Root cause (two layers)
Layer 1 — Stale lockfile: `pnpm-lock.yaml` (March 2026) is older than `package-lock.json` (May 2026). Specifically, `package.json` has `"@chittyos/schema": "file:../../CHITTYFOUNDATION/chittyschema"` but the pnpm lockfile predates this.
Layer 2 — Local-path dep won't resolve in CF builders: Even with a fresh lockfile, `@chittyos/schema` is a `file:../../CHITTYFOUNDATION/chittyschema` reference. The path `../../CHITTYFOUNDATION/chittyschema` does not exist in the CF build environment. `npm view @chittyos/schema` → 404 (not published).
Options
Recommendation
Option 1 (publish chittyschema) + delete the stale `pnpm-lock.yaml`. Two existing branches `fix/workers-builds-use-pnpm` and `fix/workers-builds-vite-peer-conflict` already attempted partial fixes — review before opening a new fix branch.
Acceptance
Related: closes loop on #111 (which was the 0s phantom — that's resolved; this is the real underlying issue exposed by the fix).