Skip to content

ci: make the CI install frozen so a stale lockfile fails instead of resolving - #59

Merged
bryanfawcett merged 1 commit into
mainfrom
claude/mzizi-skills-publishing-i1r02q
Aug 11, 2026
Merged

ci: make the CI install frozen so a stale lockfile fails instead of resolving#59
bryanfawcett merged 1 commit into
mainfrom
claude/mzizi-skills-publishing-i1r02q

Conversation

@bryanfawcett

Copy link
Copy Markdown
Contributor

Follow-up to #58, which flagged this and deliberately left it alone.

=false was not an omission

Both installing jobs ran pnpm install --frozen-lockfile=false. That does not merely leave a flag off — it explicitly disables a safety default. pnpm says so in its own error text:

Note that in CI environments this setting is true by default.

Someone had to turn it off.

With it off, CI re-resolves instead of verifying. A dependency change committed without its lockfile update installs cleanly here and produces a tree that differs from every other machine — drift that surfaces later, somewhere else, with nothing pointing back at the commit that caused it. That is the same shape as the bug #58 was written to expose: a real problem CI is structurally unable to report.

Verification — a gate that cannot fail is not a gate

1. It turns nothing red today. The committed lockfile is already in sync:

Scope: all 7 workspace projects
Lockfile is up to date, resolution step is skipped

2. It actually bites. Injecting an undeclared dependency into package.json and re-running frozen:

ERR_PNPM_OUTDATED_LOCKFILE  Cannot install with "frozen-lockfile" because
pnpm-lock.yaml is not up to date with <ROOT>/package.json
  Failure reason:
  specifiers in the lockfile don't match specifiers in package.json

package.json was restored and re-checked clean afterwards (git diff --quiet → clean).

3. The full pipeline passes on a frozen install:

Job Result
skills valid — 1 public, 5 internal
audit No known vulnerabilities found
build complete — 58 pages
build (test) 4 suites passing

What this means going forward

A dependency PR must now carry its lockfile update, or build fails with a message that names the mismatch. Combined with #58's split, the three failure modes are now independently reportable: a malformed skills bundle, an advisory, and a broken-or-drifted build no longer mask one another.


🤖 Generated with Claude Code

https://claude.ai/code/session_01KQPxAPY7KvsN9WLbdLSQED


Generated by Claude Code

…esolving

Both installing jobs ran `pnpm install --frozen-lockfile=false`, which does not
merely omit a flag — it explicitly DISABLES a safety default. pnpm says so in
its own error text: "Note that in CI environments this setting is true by
default." Someone had to turn it off.

With it off, CI re-resolves rather than verifying. A dependency change
committed without its lockfile update installs cleanly here and produces a tree
that differs from every other machine, so the drift surfaces later and
somewhere else. That is the same shape as the bug this workflow just got split
to expose: a real problem that CI is structurally unable to report.

Frozen now, in both jobs.

Verified in three steps, because a gate that cannot fail is not a gate:

  1. The committed lockfile is already in sync — `pnpm install --frozen-lockfile`
     succeeds and reports "Lockfile is up to date, resolution step is skipped".
     So this flip turns nothing red today.
  2. The gate actually bites. Injecting an undeclared dependency into
     package.json and re-running gives ERR_PNPM_OUTDATED_LOCKFILE, "specifiers
     in the lockfile don't match specifiers in package.json". package.json was
     restored and re-checked clean afterwards.
  3. The full pipeline still passes on a frozen install: skills valid, audit
     clean, build complete, 4 test suites passing.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KQPxAPY7KvsN9WLbdLSQED
@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
nyuchi-docs-mcp f9fd0e7 Commit Preview URL

Branch Preview URL
Aug 11 2026, 07:34 AM

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
shamwari-docs-ai f9fd0e7 Commit Preview URL

Branch Preview URL
Aug 11 2026, 07:34 AM

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
nyuchi-docs f9fd0e7 Commit Preview URL

Branch Preview URL
Aug 11 2026, 07:35 AM

@bryanfawcett
bryanfawcett marked this pull request as ready for review August 11, 2026 07:43
@bryanfawcett
bryanfawcett merged commit 36a1da1 into main Aug 11, 2026
11 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