Repository navigation
Conversation
Release smoke copied a hand-kept list of manifests into its lockfile fixture. The list had drifted: evals and infra/task-cache were never resolved, and each new package needed a second edit. Build the fixture the way check:changed does: workspace manifests from readWorkspace() and mobile's file: modules from their directory. The smoke now fails when the regenerated lockfile lacks an importer the committed lockfile has. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — The release smoke now discovers workspace manifests automatically and checks that no committed lockfile importer is omitted. Changes are confined to temporary test fixtures and validation, without altering product defaults or release publishing. You can add or adjust custom eligibility rules. Learn more. |
|
No actionable comments were generated in the recent review.
|
| Layer / File(s) | Summary |
|---|---|
Discover workspace manifests scripts/release-smoke.ts |
The fixture manifest list now comes from workspace package directories and existing mobile module manifests instead of a fixed list. |
Check regenerated lockfile importers scripts/release-smoke.ts |
A helper reads importer names from the lockfile’s top-level importers section. The smoke test reports any repository importers missing from the regenerated lockfile. |
Estimated code review effort: 2 (Simple) | ~10 minutes
Change: Bug fix
Suggested reviewers: yordis
Merge Risk: 
Minimal · up to 39f99
-
No actionable merge-blocking risk was identified.
Pre-merge checks: 
4
-
Full details: Description check
-
Explanation
The description includes all required sections: Problem, Change, Scope and approval, and Verification. It explains the failure mode, implementation, scope rationale, test commands, observed results, and limitations.
-
Finishing Touches
-
Generate unit tests (beta)
-
- Create a new PR
-
- Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
|
Note Written by Verified in a real dev environmentVerified the release-smoke script at exact head Ran the unchanged Also temporarily added an importer without a workspace package, ran the script, and restored the lockfile. It correctly failed with The complete smoke run passed its six relay-state tests, four release-version assertions, nightly metadata assertions, and macOS/Windows updater-manifest checks, including Windows source cleanup and debug-manifest preservation. No source changes or pushes were needed. Not verifiedThis changes only a CI script. It has no app/client/provider path, so no dev server, browser interaction, or Codex turn was used as evidence. Native macOS/Windows updater execution and release publication were not exercised. The updater checks use the existing smoke-script YAML data. |
Problem
Release Smoke checks lockfile resolution by copying the repo's manifests into a temp folder, deleting the lockfile and running
vp install --lockfile-only. It copied a hand-kept list of manifests, and that list has drifted.evalsandinfra/task-cacheare workspace packages with importers inpnpm-lock.yaml, but the smoke never copied them, so it never resolved them, and it still passed. Every new package also needs a second edit to that list, which is why #14693, #18694 and #24180 each add a line to it.Change
The smoke now builds its fixture the way
check:changedalready does for its unused-patch check. Workspace manifests come fromreadWorkspace(), and mobile'sfile:module manifests come fromapps/mobile/modules. The root manifest, workspace config, lockfile,apps/mobile/depsandpatchesare copied as before.The smoke also compares the regenerated lockfile with the committed one and fails if any committed importer is missing. That uses pnpm's own output as the reference, so it also catches a workspace pattern
readWorkspace()can't read, such as**.Release behavior doesn't change. Only server, desktop, web and contracts get version bumps, and the updater manifest steps are untouched.
Scope and approval
This is a small, focused fix to a CI script, so it qualifies without a prior issue. #23988 lists it as an out-of-scope follow-up: "release-smoke's hard-coded workspace file list can drift from
readWorkspace()."The PRs that add a line to the list (#14693, #18694, #24180) would drop that line after this lands. #23700 edits a different part of the same file.
Verification
All runs used Node 26.12.1 and pnpm 12.14.0, the versions
package.jsonpins, on Linux.node scripts/release-smoke.ts: fails withRelease smoke did not resolve workspace packages: evals, infra/task-cache.Release smoke checks passed.All 40 committed importers resolve, and the four release version targets are still bumped to9.9.9-smoke.0.packages/release-smoke-probewith its lockfile importer, then removed. This branch passes and resolves it with no list edit. Base plus the check fails, namingevals, infra/task-cache, packages/release-smoke-probe.vp run check:changed 82b10d546c1041d8eff40425f076d61f608d518f: format, lint, knip and typecheck pass.Not checked:
.pnpmfile.cjs. The smoke didn't copy it before and still doesn't;check:changeddoes. I left it out to keep this to one problem.Prior PRs
readWorkspace(), which this reuses.Generated with Claude Opus 5.5 and GPT-6.1 Terra and GPT-6.1 Sol in T3 Code Nightly