Repository navigation
Move to stable Effect 4.0.x (0.2.0) - #9
Merged
Merged
Conversation
Peer effect becomes ">=4.0.3 <4.1" (was rc.112 || rc.115), the dev dependency is pinned to 4.0.4, and the packed-consumer matrix runs Effect 4.0.3 and 4.0.4. No source file changed: the built dist is byte-identical to 0.1.1. Adds CHANGELOG.md with the behaviour audit and the consumer migration note, and ships it in the package. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 13, 2026
bun.lock recorded the workspace peer as the old rc range; regenerated. CHANGELOG: the identical-output claim excluded a SchemaError cause (JSON is now compact; the path is an ABI violation the pinned asset does not produce), and the rechunk note is dropped because the decoder's rechunk(1) never took that path. Adds the numbered spec for issue #10 as AGENTS.md requires. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Refs #10 (issue + numbered spec
.github/ISSUE_SPECS/010-move-the-codec-to-stable-effect-4-0-x.md).Moves
@misofm/codecfrom Effect release candidates (peer4.0.0-rc.112 || 4.0.0-rc.115) to stable Effect 4.0.x somisofm/appcan move to the 4.0.4 train. Version0.1.1->0.2.0. Not tagged, not published.effectis>=4.0.3 <4.1; dev dependency pinned exactly to4.0.4(the codec imports onlyeffect, there is no@effect/*package); packed-consumer matrix is Effect 4.0.3 and 4.0.4 (was rc.112/rc.115).dist/compiled against 4.0.4 is byte-identical to the 0.1.1 build (all.js,.d.tsand maps), so the public API is identical.CHANGELOG.md(shipped in the package) with the behaviour audit and the consumer migration note.Why: with the app on 4.0.4,
engine-web-adapter@0.5.13(hard dependencyeffect@4.0.0-rc.112) ran a 4.0.4 codecLayerthrough its rc.112 runtime and failed withCannot read properties of undefined (reading 'scheduler'). The adapter port is a separate PR (misofm/engine-web-adapter, brancheffect-4.0.4) and depends on this one.Behaviour audit (Effect rc.112/rc.115 -> 4.0.4)
The codec uses
Stream.transformPullBracket,Stream.rechunk,Pull.matchEffect,Cause.done,Scope.addFinalizer,Effect.acquireRelease/scoped,Effect.try/tryPromise,Schema.TaggedError/Defect,Layer.effect,Context.Service. No partition, retry, Schedule, timeout or Worker. A differential script was run against {0.1.1 + rc.115, 0.1.1 + 4.0.4, 0.2.0 + 4.0.4, 0.2.0 + rc.115}; all four produced identical output for (one measured exception below): errormessage/name/JSON/Cause.pretty/Schema encoding (decode, encode and PCM errors, with and withoutcause/bigint fields); encoded FLAC SHA-256 + STREAMINFO MD5; decoded PCM SHA-256 +Complete; exit reasons for truncation, source failure (error returned by identity), bad options, bad PCM block; decoder interruption while waiting for input (1Interrupt, source finalizer once); earlytake(source finalizer once);Effect.timeouton a stalled source; encode interruption with a pending source (1Interrupt, no late writes).Known difference:
JSON.stringifyof aFlacDecodeErrorwhosecauseis aSchemaErroris now compact (Effect #8895); Schema encoding andCause.prettyare unchanged, and the only producer is an ABI-violation path the pinned asset does not take.Noted Effect changes and why they are unobservable here:
Scope.closefinalizers uninterruptible (rc.118; the decoder/encoder releases are synchronous), pending interruption kept when an uninterruptible effect fails (4.0.1; no uninterruptible region).Verification (local, Linux, Node 22.23.2, Bun 1.4.2)
bun install --frozen-lockfile,bun run check(prettier,tscincl. benchmark project, 40 pass / 5 native-only skipped / 0 fail): passedCODEC_NATIVE_FLAC=<pinned libFLAC 1.5.0 built by scripts/build-native-flac.sh> bun run test:integration: 5 passbun run build:wasm:verifywith the pinned Emscripten 6.0.9 at/data/codec-tooling/emsdk: encoder90da75c7...and decoder70caf381...reproduced exactlybun run pack:check(npm pack, isolated packed consumers on Effect 4.0.3 and 4.0.4: compiled TypeScript consumer, Bun, Node, Chromium/Firefox/WebKit workers, browser bundle has no server imports): passed; tarball SHA-2569a8cfcd254506617458b41fea315879393e5712c230ba8ecd2f971763ae22071npm install --strict-peer-deps effect@{4.0.4,4.0.3} <tarball>+npm ls: valid, one deduped effect;effect@4.0.0-rc.115is rejected withERESOLVEschedulerTypeError; with codec 0.2.0 + adapter 0.6.0 it succeeds (see adapter PR)Release (after review/merge; maintainers)
Per
.github/RELEASING.mdandnpm-publish.yml: workflow_dispatch onmainwithmode=publish,expected_sha=<merge commit>,expected_version=0.2.0; then tag/releasev0.2.0at that commit and record the run URL + registry integrity (as in.github/RELEASE_EVIDENCE/006/registry-release.json). The brancheffect-4.0.4-ci-distexists only so the adapter PR can install this codec from git before publication; delete it after release.🤖 Generated with Claude Code