Repository navigation
Upgrade Effect from 4.0.0-beta.73 to stable 4.0.0 (all @effect/* packages, language-service 0.87.3) #4551
Description
Goal
Upgrade every Effect package from the pre-release pin 4.0.0-beta.73 (PAN-1562, 2026-05-28) to the stable Effect 4.0.0 (released 2026-10-01). This moves Overdeck off a 4-month-old beta and onto the supported line: 34 later betas and 118 release candidates of fixes.
Current pins (single-version pinning, PAN-1562)
package.json catalog (~lines 49-54), root dependencies (~lines 78, 162-164, 182) and packages/contracts/package.json (~line 33):
| Package | Now | Target |
|---|---|---|
effect |
4.0.0-beta.73 | 4.0.0 |
@effect/platform-node |
4.0.0-beta.73 | 4.0.0 |
@effect/platform-bun |
4.0.0-beta.73 | 4.0.0 |
@effect/platform-node-shared |
4.0.0-beta.73 | 4.0.0 |
@effect/sql-sqlite-bun |
4.0.0-beta.73 | 4.0.0 |
@effect/vitest |
4.0.0-beta.73 | 4.0.0 |
@effect/language-service |
0.84.2 | 0.87.3 |
Each @effect/* 4.0.0 declares peerDependencies.effect: ^4.0.0. 705 files under src/ and packages/ import from effect.
Plan
- Read the Effect 4.0 release notes and the changelog from beta.73 through 4.0.0 (the GitHub releases of Effect-TS/effect). List every breaking change that touches an API Overdeck uses, with the files affected (
git grep). - Bump all seven packages together, keeping single-version pinning: one exact version per package across every workspace, catalog entries updated,
bun installthen commitbun.lock. - Fix the breaks in one PR. Keep the repo's Effect conventions:
docs/EFFECT-BRIDGING.md(no new façades;npm run lint:effect-facadesmust not regress) anddocs/EFFECT-DIAGNOSTICS.md(the language-service diagnostics ratchet). Any new diagnostics the newer language service reports are fixed or ratchet-recorded per that doc, never silenced wholesale. - Gates:
npm run typecheck,npm run lint(includinglint:effect-facades,lint:circular,lint:dist-externalsthroughnpm run build), andnpx vitest runon the touched test files. CI runs the full suite. - Packaging check: after
npm run build, confirmlint:dist-externalspasses and thatnpm packplus a cleannpxof the tarball prints the version (the release skill's clean-install check). Effect is a runtime dependency, so a broken externals list ships a crash. - Docs: update
docs/EFFECT-BRIDGING.mdanddocs/EFFECT-DIAGNOSTICS.mdwhere APIs or ratchet counts change, and add a v0.66.0 changelog note under "Changed".
Acceptance criteria
- Every
effectand@effect/*version in everypackage.jsonand the catalog is4.0.0(@effect/language-service0.87.3), andbun.lockis updated. -
npm run typecheck,npm run lintandnpm run buildpass;lint:effect-facadesand the diagnostics ratchet do not regress. - CI is fully green on the PR.
- A clean
npxof the packed tarball prints the package version. - The PR lists the breaking changes found and how each was handled.
Routing and sequencing
This touches review, merge and agent-runtime code (TENET-10): supervised pan handoff, not an unattended pan start. Run it after the verification/auto-merge bundle (PAN-4527/4532/4531/4540/4534, conversation 3230) merges. Those fixes make the large PR's own verification reliable, and running both at once would conflict.
Activity