Skip to content

Rollout: upgrade Effect and Foldkit - #49

Merged
bjacobso merged 1 commit into
mainfrom
conductor/rollout-effect-foldkit-411
Nov 1, 2026
Merged

bjacobso merged 1 commit into
mainfrom
conductor/rollout-effect-foldkit-411

Conversation

@bjacobso

@bjacobso bjacobso commented Nov 1, 2026 •

Copy link
Copy Markdown
Owner

Summary

Addresses only effect-latest and foldkit-latest. The earlier dependency rollout (#43) is merged; this branch starts fresh from origin/main at e24dcdb.

Packages Before After
effect, @effect/platform-browser, @effect/platform-node, @effect/platform-node-shared, @effect/sql-d1, @effect/sql-pg, @effect/sql-sqlite-do, @effect/sql-sqlite-node, @effect/vitest 4.0.3 4.1.1
foldkit, @foldkit/ui 0.168.0 0.170.0
@foldkit/vite-plugin 0.27.1 0.29.0

The catalog, public Effect peers, lockfile, installation guidance, and Changeset move together. All 12 selected packages have only their requested locked versions. No unused Foldkit companions were added.

Compatibility and migration

  • Remove Foldkit's old Node adapter overrides and all peer exceptions. Its new ~4.1.0 peers accept 4.1.1 directly; strict peer validation remains enabled.
  • Require Node 22.19.0+ for the workspace, CLI, and Node HTTP example to match the new Node platform adapters.
  • Alchemy beta.80 declares ^4.0.0 peers but imports the removed effect/Crypto module. Inspected beta.81 through beta.84; all retain that runtime import, so an Alchemy update alone does not solve it. A patch scoped to alchemy@2.0.0-beta.80 migrates OAuth state/PKCE to SecureRandom and Digest, provides these services in its platform layer, and updates the shipped source and declarations. scripts/check-alchemy.mjs, wired into pnpm check, checks Cloudflare provider imports and verifies PKCE against Node's SHA-256 without credentials or network calls. Remove the patch when upstream migrates these APIs.
  • Alchemy's D1 and Durable Object SQL dependencies accept ^4.0.0; two scoped catalog overrides align them to the tested 4.1.1 targets within their supported ranges. Its Distilled dependencies also accept Effect 4.1.1. No older Effect runtime or peer-range exception is needed.
  • Refresh all three served OpenAPI snapshots for Effect 4.1 schema deduplication, optional query-parameter encoding, and numeric string patterns. Dereferenced request/response bodies, routes, status codes, headers, and API metadata remain identical.
  • Triplex's application APIs compile unchanged against the selected releases. Both existing Alchemy stacks import successfully, and alchemy --help works without planning or deploying.

Verification

Verified on Node 24.22.1 with pnpm 10.11.0:

  • pnpm install --frozen-lockfile --strict-peer-dependencies — passed.
  • TURBO_CONCURRENCY=2 pnpm check — passed formatting, lint, Alchemy compatibility, all workspace types and checked docs/examples, unit/SQLite/workerd integration tests, package builds, and the docs build/llms link check.
  • pnpm pack:check — verified all 10 tarballs and a clean external consumer, including SQLite runtime and CLI checks; all packed Effect peers resolve to 4.1.1.
  • PG_TEST_URL=postgresql://triplex_test@127.0.0.1:55432/triplex_test pnpm test:postgres:integration — all 20 tests passed against a disposable PostgreSQL 17.10 instance.
  • pnpm exec playwright install chromium and pnpm test:e2e — all 13 Chromium tests passed, including dashboard interactions/screenshots, docs themes/mobile, embedded explorer, and playground. Existing image snapshots remain unchanged.
  • Audited catalogs plus every selected package/snapshot lock entry: all 12 targets match exactly. All 30 locked packages declaring an Effect peer accept 4.1.1.
  • pnpm exec alchemy --help, imports of both existing Alchemy stacks, and offline provider/PKCE checks passed.

Limitations

No implementation blockers remain for the selected items. The VM needed TURBO_CONCURRENCY=2 to avoid the existing five-second conformance timeouts under high parallel load; test assertions, timeouts, and repository concurrency settings are unchanged. One retry also cleared a stale Vitest filesystem-cache startup race.

FoundationDB's native integration suite remains opt-in and was not run because the native client is unavailable. Credentialed provider reconciliation remains outside this validation; no deployment, publication, or merge was performed.

Final status: Ready for review. Both selected dependency items are implemented and locally verified.


Open workspace in Conductor

@bjacobso
bjacobso merged commit 023aecd into main Nov 1, 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.

1 participant