Skip to content

Hotfix 0.2.1: a clean checkout of 0.2.0 cannot install - #18

Merged
cursor[bot] merged 2 commits into
mainfrom
hotfix/0.2.1
Aug 13, 2026
Merged

cursor[bot] merged 2 commits into
mainfrom
hotfix/0.2.1

Conversation

@its-janghoon

Copy link
Copy Markdown
Member

Hotfix off main, as the branching model requires for a defect that is already in production. Merge with a merge commit, never squash, then tag v0.2.1 and merge back into develop.

What broke

The 0.2.0 bump moved all four packages to 0.2.0 and left the internal ranges behind:

  • apps/web asked for @redrob/harness@0.1.0
  • @redrob/harness asked for @redrob/tokenizers@0.1.0

Neither version exists any more, so yarn stopped resolving them from the workspace and went looking for private packages on the npm registry:

error Couldn't find package "@redrob/harness@0.1.0" required by "@redrob/web@0.2.0" on the "npm" registry.

Every CI job that runs yarn install --frozen-lockfile failed on main and on develop: verify, TypeScript conformance, Zero divergence, Quickstart without Python. A clean clone of v0.2.0 could not install at all.

Why the release QA missed it. Local yarn typecheck, lint, test, build, all ten verify:* scripts and a production-build click-through all passed, because node_modules was already linked from before the bump. Resolution is the one step a warm working tree never repeats, so nothing local could see it.

The fix

The workspaces now depend on each other by "*". Every package here is private: true, nothing publishes, and yarn.lock holds no @redrob/* entries, so an exact internal pin bought nothing and cost a second place to remember on every bump. A star range resolves to the workspace whatever the version, which retires this failure mode rather than repairing this instance of it.

Patch version bumped to 0.2.1 across the same five files.

CONTRIBUTING.md now states why the workspaces are not pinned, and adds the check that would have caught this: run yarn install --frozen-lockfile on the release branch in a clean checkout, not in your working tree.

Verification

Reproduced and fixed in throwaway worktrees, not in the warm tree:

Checkout yarn install --frozen-lockfile
v0.2.0 fails at [2/5] Resolving packages with the error above
hotfix/0.2.1 resolves and completes

Plus yarn typecheck, yarn lint, yarn build, and yarn test at 985/985 on this branch.

Open in Web Open in Cursor 

cursoragent and others added 2 commits August 13, 2026 08:18
Bumping the five version fields to 0.2.0 left apps/web asking for
@redrob/harness@0.1.0 and harness asking for @redrob/tokenizers@0.1.0, so yarn
stopped resolving them from the workspace and looked on npm, where these private
packages do not exist. Every CI job that runs yarn install --frozen-lockfile
failed on main, and a fresh clone of v0.2.0 could not install at all. A local
install did not notice, because node_modules was already linked.

Nothing here is published, so an exact internal pin only creates a second place
to remember on every bump. A star range resolves to the workspace regardless of
version, so the next bump cannot reintroduce this.

Co-authored-by: Janghoon Lee <savagemanage@users.noreply.github.com>
The five-file list was accurate and still let 0.2.0 ship a broken install,
because the internal dependency ranges were a sixth place nobody names. They no
longer need bumping, so the list is now complete on purpose rather than by
accident, and the release checklist gains the frozen-lockfile install that sees
a bump the way CI does.

Co-authored-by: Janghoon Lee <savagemanage@users.noreply.github.com>
@cursor
cursor Bot merged commit c5531cc into main Aug 13, 2026
7 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