Skip to content

build(deps): effect 4.1.0 and @effect/tsgo 0.63.0 - #359

Merged
systemfsoftware-bot merged 4 commits into
mainfrom
deps/effect-4.1
Oct 29, 2026
Merged

systemfsoftware-bot merged 4 commits into
mainfrom
deps/effect-4.1

Conversation

@systemfsoftware-bot

@systemfsoftware-bot systemfsoftware-bot commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

Upgrades effect and every @effect/* to 4.1.0 and @effect/tsgo to 0.63.0 (catalog and the two packages' exact pins). oxlint moves to ~1.90.0 and oxlint-tsgolint to 7.0.2005, the pair tsgo 0.63.0 supports. pnpm overrides map @effect/opentelemetry, @effect/platform-node, @effect/platform-node-shared and @effect/tsgo to the catalog so the released tarballs do not pull a second copy; pnpm why effect shows only 4.1.0.

This unblocks mutation testing on effect 4.1.0. The published @systemfsoftware/stryker-js 17.0.2 and @systemfsoftware/stryker-js-vitest-runner 8.1.1 import effect/Crypto, which effect 4.1.0 removed, so a run fails with ERR_MODULE_NOT_FOUND on any repo that has moved to 4.1.0. This change migrates the source to effect/crypto/SecureRandom and Digest (NodeCrypto.layerSecureRandom/layerDigest), and a changeset releases a patch of the eight published packages. The effect peer range becomes ^4.1.0, because effect/crypto/* does not exist in 4.0.x.

Code changes the upgrade required:

  • effect/Crypto to effect/crypto/* in stryker-js (node-platform.ts), stryker-js-vitest-runner, test/e2e and test/bench; randomUUIDv4 to uuidV4(), digest to digestHex.
  • Schema classes get the { readonly brand: unique symbol } argument (tsgo schemaClassMissingBrand); the places that built them from plain objects now call .make. The sandbox script keeps its plain namespace record with Omit<..., 'brand'>.
  • MCP server: the toolkit is registered through McpServer.layerStdio({ registrations }), with a middleware that provides the engine services to each request (4.1 makes tool dependencies request-level).
  • FileSystem.File.Info dev/ino are bigint: the case-sensitivity probe and its property test use S.BigInt.
  • Report.MutationScore.match lost its explicit generic; CliError gained ValidationError in checker-parity.
  • Error classes whose payload field was name rename it (mutatorName, entryName, errorName), per errorPayloadShadowsName.
  • tsgo 0.63 style fixes: Effect.flatten, Effect.as, Effect.tap, Effect.trackSuccesses/trackErrors, a single Effect.provide.
  • The published contract documents and the generated report module are regenerated (effect 4.1.0 drops redundant isFinite checks).
  • No lint rule is turned off or downgraded: each package lists the unstable effect modules it imports in the tsgo plugin's allowedUnstableApis (tsconfig). The nine pre-existing unstable-api-usage: off lines are untouched.

Stream version: effect 4.1.0 writes the safe-integer range onto integer fields of the generated stream schema; the repo's contract version law counts that as breaking, so the run stream moves 8.0 to 9.0 and stryker-js-cli-contract takes a major changeset. Needs the owner's eye.

Known: the two typescript-checker integration tests that import Engine and Worker from the released stryker-js tarball (.sfs-deps, pinned by the stryker-published flake input) cannot load under effect 4.1.0 until the release from this change is published and the pin moves.

Local: lint, lint:tsgo, typecheck and build pass in all 24 packages; plugin-interface and cli-contract tests pass after regenerating the contracts.

https://claude.ai/code/session_017rX35xUAHEjVVaDKVVzubW

Move effect and every @effect/* to 4.1.0 and @effect/tsgo to 0.63.0 (oxlint ~1.90.0,
oxlint-tsgolint 7.0.2005, which tsgo 0.63 requires). effect 4.1.0 removed effect/Crypto,
which the published stryker-js and stryker-js-vitest-runner import: migrate to
effect/crypto/SecureRandom and Digest, brand Schema classes, register the MCP toolkit
through the stdio transport, and regenerate the published contract documents.

Claude-Session: https://claude.ai/code/session_017rX35xUAHEjVVaDKVVzubW
…unds

effect 4.1.0 writes the safe-integer range onto integer fields in the generated
stream schema. The contract version law counts that as a breaking stream change,
so the stream version moves to 9.0 and cli-contract takes a major changeset.

Claude-Session: https://claude.ai/code/session_017rX35xUAHEjVVaDKVVzubW
…rning the rule off

Revert the oxlint override entries that switched effecttsgo/unstable-api-usage off and list the
unstable modules each package imports in the tsgo plugin's allowedUnstableApis.

Claude-Session: https://claude.ai/code/session_017rX35xUAHEjVVaDKVVzubW
@systemfsoftware-bot
systemfsoftware-bot merged commit c661be3 into main Oct 29, 2026
17 of 18 checks passed
@systemfsoftware-bot
systemfsoftware-bot deleted the deps/effect-4.1 branch October 29, 2026 23:30
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