From 45a0c95e0a0c9366ab38e17a0df634f8eadd330b Mon Sep 17 00:00:00 2001 From: Petr Glaser Date: Sat, 19 Sep 2026 10:55:52 +0200 Subject: [PATCH 1/2] fix(test): adopt effect-rstest PR #4 canary and drop the pnpm patch npm effect-rstest@0.1.4 predates upstream PR #4 and lacks its fixes, which is why main still carried patches/effect-rstest@0.1.4.patch. Pin the immutable merged-commit canary f29b3f49 that contains Effect equality, scoped test lifetimes and timed-out settlement upstream, remove the patch and its patchedDependencies entry, and regenerate the lockfile. Closes #507 Co-Authored-By: Claude Fable 5.1 --- app/apps/shell-super-app/package.json | 2 +- app/package.json | 2 +- app/packages/core-runtime/package.json | 2 +- .../package.json | 2 +- app/packages/email-delivery/package.json | 2 +- .../gateway-principal-verifier/package.json | 2 +- .../package.json | 2 +- app/packages/shared-contracts/package.json | 2 +- app/patches/effect-rstest@0.1.4.patch | 68 ------------------- app/pnpm-lock.yaml | 55 ++++++++------- app/pnpm-workspace.yaml | 1 - .../commerce-customer-context/package.json | 2 +- app/verticals/party-registry/package.json | 2 +- .../payment-term-catalog/package.json | 2 +- 14 files changed, 38 insertions(+), 108 deletions(-) delete mode 100644 app/patches/effect-rstest@0.1.4.patch diff --git a/app/apps/shell-super-app/package.json b/app/apps/shell-super-app/package.json index bac562490..afd7019b0 100644 --- a/app/apps/shell-super-app/package.json +++ b/app/apps/shell-super-app/package.json @@ -81,7 +81,7 @@ "typescript": "7.0.2", "wrangler": "4.116.0", "zephyr-rspack-plugin": "1.2.4", - "effect-rstest": "0.1.4", + "effect-rstest": "https://pkg.pr.new/ScriptedAlchemy/effect-rstest@f29b3f495d45a11037334620bf5f693414fb5578", "cross-env": "10.1.0", "@modern-js/app-tools-extensions": "npm:@bleedingdev/modern-js-app-tools-extensions@3.9.0-ultramodern.11", "@modern-js/plugin-bff-build-extensions": "npm:@bleedingdev/modern-js-plugin-bff-build-extensions@3.9.0-ultramodern.11", diff --git a/app/package.json b/app/package.json index 65fcade1a..d2b1a0c1d 100644 --- a/app/package.json +++ b/app/package.json @@ -104,7 +104,7 @@ "@effect/sql-pg": "4.0.0-rc.112" }, "devDependencies": { - "effect-rstest": "0.1.4", + "effect-rstest": "https://pkg.pr.new/ScriptedAlchemy/effect-rstest@f29b3f495d45a11037334620bf5f693414fb5578", "@rstest/core": "0.11.12", "@effect/platform-node": "4.0.0-rc.112", "@effect/tsgo": "0.41.0", diff --git a/app/packages/core-runtime/package.json b/app/packages/core-runtime/package.json index c4b8dc0fb..dbd381772 100644 --- a/app/packages/core-runtime/package.json +++ b/app/packages/core-runtime/package.json @@ -51,7 +51,7 @@ "@types/node": "^26.4.1", "@types/pg": "8.20.0", "drizzle-kit": "1.0.0-rc.5-ab785fc", - "effect-rstest": "0.1.4", + "effect-rstest": "https://pkg.pr.new/ScriptedAlchemy/effect-rstest@f29b3f495d45a11037334620bf5f693414fb5578", "yaml": "2.9.1" } } diff --git a/app/packages/customer-payment-term-contracts/package.json b/app/packages/customer-payment-term-contracts/package.json index fcca6b970..f5865eb2a 100644 --- a/app/packages/customer-payment-term-contracts/package.json +++ b/app/packages/customer-payment-term-contracts/package.json @@ -23,7 +23,7 @@ "devDependencies": { "@rstest/core": "0.11.12", "@types/node": "20.19.43", - "effect-rstest": "0.1.4" + "effect-rstest": "https://pkg.pr.new/ScriptedAlchemy/effect-rstest@f29b3f495d45a11037334620bf5f693414fb5578" }, "ontosContractOwner": { "appId": "commerce-customer-context", diff --git a/app/packages/email-delivery/package.json b/app/packages/email-delivery/package.json index f889d862f..fcd8b93c6 100644 --- a/app/packages/email-delivery/package.json +++ b/app/packages/email-delivery/package.json @@ -18,6 +18,6 @@ "devDependencies": { "@rstest/core": "0.11.12", "@types/node": "^26.4.1", - "effect-rstest": "0.1.4" + "effect-rstest": "https://pkg.pr.new/ScriptedAlchemy/effect-rstest@f29b3f495d45a11037334620bf5f693414fb5578" } } diff --git a/app/packages/gateway-principal-verifier/package.json b/app/packages/gateway-principal-verifier/package.json index 9a3f0bc3b..8282785e3 100644 --- a/app/packages/gateway-principal-verifier/package.json +++ b/app/packages/gateway-principal-verifier/package.json @@ -19,7 +19,7 @@ }, "devDependencies": { "@types/node": "^26.4.1", - "effect-rstest": "0.1.4", + "effect-rstest": "https://pkg.pr.new/ScriptedAlchemy/effect-rstest@f29b3f495d45a11037334620bf5f693414fb5578", "@rstest/core": "0.11.12" } } diff --git a/app/packages/payment-term-catalog-contracts/package.json b/app/packages/payment-term-catalog-contracts/package.json index 1b274e60f..e4cba81d9 100644 --- a/app/packages/payment-term-catalog-contracts/package.json +++ b/app/packages/payment-term-catalog-contracts/package.json @@ -24,7 +24,7 @@ "devDependencies": { "@rstest/core": "0.11.12", "@types/node": "20.19.43", - "effect-rstest": "0.1.4" + "effect-rstest": "https://pkg.pr.new/ScriptedAlchemy/effect-rstest@f29b3f495d45a11037334620bf5f693414fb5578" }, "ontosContractOwner": { "appId": "payment-term-catalog", diff --git a/app/packages/shared-contracts/package.json b/app/packages/shared-contracts/package.json index a6f62d11f..2399ab5a6 100644 --- a/app/packages/shared-contracts/package.json +++ b/app/packages/shared-contracts/package.json @@ -27,7 +27,7 @@ }, "devDependencies": { "@types/node": "^26.4.1", - "effect-rstest": "0.1.4", + "effect-rstest": "https://pkg.pr.new/ScriptedAlchemy/effect-rstest@f29b3f495d45a11037334620bf5f693414fb5578", "@rstest/core": "0.11.12" } } diff --git a/app/patches/effect-rstest@0.1.4.patch b/app/patches/effect-rstest@0.1.4.patch deleted file mode 100644 index 6721bf552..000000000 --- a/app/patches/effect-rstest@0.1.4.patch +++ /dev/null @@ -1,68 +0,0 @@ -diff --git a/dist/index.js b/dist/index.js ---- a/dist/index.js -+++ b/dist/index.js -@@ -7,6 +7,7 @@ - import * as __rspack_external_effect_Effect_41060786 from "effect/Effect"; - import * as __rspack_external_effect_Equal_84d564fb from "effect/Equal"; - import * as __rspack_external_effect_Exit_1ca64b33 from "effect/Exit"; -+import * as Fiber from "effect/Fiber"; - import * as __rspack_external_effect_Layer_69c46453 from "effect/Layer"; - import * as __rspack_external_effect_Predicate_45f92690 from "effect/Predicate"; - import * as __rspack_external_effect_Schedule_8bfd7ba9 from "effect/Schedule"; -@@ -22,11 +23,17 @@ - }, (effect, _, ctx)=>__rspack_external_effect_Effect_41060786.runPromise(effect, { - signal: ctx?.signal - })); --const runTest = (ctx)=>(effect)=>runPromise(effect, ctx); -+const runTest = (ctx)=>(effect)=>{ -+ let settlement; -+ ctx?.onTestFinished(()=>settlement, 0); -+ const result = runPromise(effect, ctx); -+ settlement = result.then(()=>{}, ()=>{}); -+ return result; -+}; - const TestEnv = __rspack_external_effect_Layer_69c46453.mergeAll(TestConsole.layer, TestClock.layer()); - const addEqualityTesters = ()=>{ - __rspack_external__rstest_core_d9441397.expect.addEqualityTesters([ -- (a, b)=>__rspack_external_effect_Equal_84d564fb.isEqual(a) || __rspack_external_effect_Equal_84d564fb.isEqual(b) ? __rspack_external_effect_Equal_84d564fb.equals(a, b) : void 0 -+ (a, b)=>__rspack_external_effect_Equal_84d564fb.isEqual(a) && __rspack_external_effect_Equal_84d564fb.isEqual(b) ? __rspack_external_effect_Equal_84d564fb.equals(a, b) : void 0 - ]); - }; - const hookTimeout = (timeout)=>void 0 === timeout ? void 0 : __rspack_external_effect_Duration_69e466c3.toMillis(__rspack_external_effect_Duration_69e466c3.fromInputUnsafe(timeout)); -@@ -125,10 +132,18 @@ - const memoMap = options?.memoMap ?? __rspack_external_effect_Effect_41060786.runSync(__rspack_external_effect_Layer_69c46453.makeMemoMap); - const scope = __rspack_external_effect_Effect_41060786.runSync(__rspack_external_effect_Scope_f87b0bd6.make()); - const contextEffect = __rspack_external_effect_Layer_69c46453.buildWithMemoMap(withTestEnv, memoMap, scope).pipe(__rspack_external_effect_Effect_41060786.orDie, __rspack_external_effect_Effect_41060786.cached, __rspack_external_effect_Effect_41060786.runSync); -+ let setupFiber; -+ const buildContext = ()=>runPromise(__rspack_external_effect_Effect_41060786.withFiber((fiber)=>{ -+ setupFiber = fiber; -+ return __rspack_external_effect_Effect_41060786.asVoid(contextEffect); -+ })); - let closePromise; - const closeScope = ()=>{ - if (void 0 !== closePromise) return closePromise; -- closePromise = runPromise(__rspack_external_effect_Scope_f87b0bd6.close(scope, __rspack_external_effect_Exit_1ca64b33["void"])).then(()=>{}); -+ closePromise = runPromise(__rspack_external_effect_Effect_41060786.andThen( -+ setupFiber !== undefined ? Fiber.interrupt(setupFiber) : __rspack_external_effect_Effect_41060786.void, -+ __rspack_external_effect_Scope_f87b0bd6.close(scope, __rspack_external_effect_Exit_1ca64b33["void"]) -+ )).then(()=>{}); - return closePromise; - }; - const makeIt = (it)=>makeItProxy(it, { -@@ -146,14 +161,14 @@ - if (1 === args.length) { - const timeout = hookTimeout(options?.timeout); - return __rspack_external__rstest_core_d9441397.describe("", ()=>{ -- __rspack_external__rstest_core_d9441397.beforeAll(()=>runPromise(__rspack_external_effect_Effect_41060786.asVoid(contextEffect)), timeout); -+ __rspack_external__rstest_core_d9441397.beforeAll(buildContext, timeout); - __rspack_external__rstest_core_d9441397.afterAll(()=>closeScope(), timeout); - return args[0](makeIt(testApi)); - }); - } - const describe = options?.concurrent === true ? __rspack_external__rstest_core_d9441397.describe.concurrent : options?.concurrent === false ? __rspack_external__rstest_core_d9441397.describe.sequential : __rspack_external__rstest_core_d9441397.describe; - return describe(args[0], ()=>{ -- __rspack_external__rstest_core_d9441397.beforeAll(()=>runPromise(__rspack_external_effect_Effect_41060786.asVoid(contextEffect)), hookTimeout(options?.timeout)); -+ __rspack_external__rstest_core_d9441397.beforeAll(buildContext, hookTimeout(options?.timeout)); - __rspack_external__rstest_core_d9441397.afterAll(()=>closeScope(), hookTimeout(options?.timeout)); - return args[1](makeIt(testApi)); - }); diff --git a/app/pnpm-lock.yaml b/app/pnpm-lock.yaml index 216993893..98e4a1c6a 100644 --- a/app/pnpm-lock.yaml +++ b/app/pnpm-lock.yaml @@ -189,7 +189,6 @@ patchedDependencies: '@module-federation/runtime-core@2.9.0': b241be221397f0e07dbe6c515725e12eaf3b418469bb7dd21750e6e4b215dd8d '@vercel/nft@0.29.2': c0ed4897b98e9055716031187bb8ea16739f6ae0843d35e4873f1a177472cac7 drizzle-orm@1.0.0-rc.5-ab785fc: b99614c9074d41f359743addc0f2a131dbd9c9c479d57cc0f0bb2bb1344bf5fe - effect-rstest@0.1.4: 400646897be54f02f39200a151f0f4a48428fc12dccbd7d91a7391b55247152a effect@4.0.0-rc.112: b7489e5109ec4daf5d6c7ac30956ed95c312f4077cbc973b8c82f0f340108ada eslint-plugin-perfectionist@5.10.1: 9e69fb6189199155ccf29de79c5127492dcebff0b0a1fdf79bb3cd72704501a7 msgpackr@2.1.0: de5c91fa6cfd894d171ed06673af40046ba97c7eb604409caf5f510e1a8a5b7a @@ -279,8 +278,8 @@ importers: specifier: 4.0.0-rc.112 version: 4.0.0-rc.112(patch_hash=b7489e5109ec4daf5d6c7ac30956ed95c312f4077cbc973b8c82f0f340108ada) effect-rstest: - specifier: 0.1.4 - version: 0.1.4(patch_hash=400646897be54f02f39200a151f0f4a48428fc12dccbd7d91a7391b55247152a)(@rstest/core@0.11.12(@module-federation/runtime-tools@2.9.0)(core-js@3.50.0)(happy-dom@20.8.3))(effect@4.0.0-rc.112(patch_hash=b7489e5109ec4daf5d6c7ac30956ed95c312f4077cbc973b8c82f0f340108ada)) + specifier: https://pkg.pr.new/ScriptedAlchemy/effect-rstest@f29b3f495d45a11037334620bf5f693414fb5578 + version: https://pkg.pr.new/ScriptedAlchemy/effect-rstest@f29b3f495d45a11037334620bf5f693414fb5578(@rstest/core@0.11.12(@module-federation/runtime-tools@2.9.0)(core-js@3.50.0)(happy-dom@20.8.3))(effect@4.0.0-rc.112(patch_hash=b7489e5109ec4daf5d6c7ac30956ed95c312f4077cbc973b8c82f0f340108ada)) esbuild: specifier: 0.28.1 version: 0.28.1 @@ -493,8 +492,8 @@ importers: specifier: 1.0.0-rc.5-ab785fc version: 1.0.0-rc.5-ab785fc effect-rstest: - specifier: 0.1.4 - version: 0.1.4(patch_hash=400646897be54f02f39200a151f0f4a48428fc12dccbd7d91a7391b55247152a)(@rstest/core@0.11.12(@module-federation/runtime-tools@2.9.0)(core-js@3.50.0)(happy-dom@20.8.3))(effect@4.0.0-rc.112(patch_hash=b7489e5109ec4daf5d6c7ac30956ed95c312f4077cbc973b8c82f0f340108ada)) + specifier: https://pkg.pr.new/ScriptedAlchemy/effect-rstest@f29b3f495d45a11037334620bf5f693414fb5578 + version: https://pkg.pr.new/ScriptedAlchemy/effect-rstest@f29b3f495d45a11037334620bf5f693414fb5578(@rstest/core@0.11.12(@module-federation/runtime-tools@2.9.0)(core-js@3.50.0)(happy-dom@20.8.3))(effect@4.0.0-rc.112(patch_hash=b7489e5109ec4daf5d6c7ac30956ed95c312f4077cbc973b8c82f0f340108ada)) happy-dom: specifier: 20.8.3 version: 20.8.3 @@ -545,8 +544,8 @@ importers: specifier: 1.0.0-rc.5-ab785fc version: 1.0.0-rc.5-ab785fc effect-rstest: - specifier: 0.1.4 - version: 0.1.4(patch_hash=400646897be54f02f39200a151f0f4a48428fc12dccbd7d91a7391b55247152a)(@rstest/core@0.11.12(@module-federation/runtime-tools@2.9.0)(core-js@3.50.0)(happy-dom@20.8.3))(effect@4.0.0-rc.112(patch_hash=b7489e5109ec4daf5d6c7ac30956ed95c312f4077cbc973b8c82f0f340108ada)) + specifier: https://pkg.pr.new/ScriptedAlchemy/effect-rstest@f29b3f495d45a11037334620bf5f693414fb5578 + version: https://pkg.pr.new/ScriptedAlchemy/effect-rstest@f29b3f495d45a11037334620bf5f693414fb5578(@rstest/core@0.11.12(@module-federation/runtime-tools@2.9.0)(core-js@3.50.0)(happy-dom@20.8.3))(effect@4.0.0-rc.112(patch_hash=b7489e5109ec4daf5d6c7ac30956ed95c312f4077cbc973b8c82f0f340108ada)) yaml: specifier: 2.9.1 version: 2.9.1 @@ -570,8 +569,8 @@ importers: specifier: 20.19.43 version: 20.19.43 effect-rstest: - specifier: 0.1.4 - version: 0.1.4(patch_hash=400646897be54f02f39200a151f0f4a48428fc12dccbd7d91a7391b55247152a)(@rstest/core@0.11.12(@module-federation/runtime-tools@2.9.0)(core-js@3.50.0)(happy-dom@20.8.3))(effect@4.0.0-rc.112(patch_hash=b7489e5109ec4daf5d6c7ac30956ed95c312f4077cbc973b8c82f0f340108ada)) + specifier: https://pkg.pr.new/ScriptedAlchemy/effect-rstest@f29b3f495d45a11037334620bf5f693414fb5578 + version: https://pkg.pr.new/ScriptedAlchemy/effect-rstest@f29b3f495d45a11037334620bf5f693414fb5578(@rstest/core@0.11.12(@module-federation/runtime-tools@2.9.0)(core-js@3.50.0)(happy-dom@20.8.3))(effect@4.0.0-rc.112(patch_hash=b7489e5109ec4daf5d6c7ac30956ed95c312f4077cbc973b8c82f0f340108ada)) packages/email-delivery: dependencies: @@ -586,8 +585,8 @@ importers: specifier: ^26.4.1 version: 26.5.1 effect-rstest: - specifier: 0.1.4 - version: 0.1.4(patch_hash=400646897be54f02f39200a151f0f4a48428fc12dccbd7d91a7391b55247152a)(@rstest/core@0.11.12(@module-federation/runtime-tools@2.9.0)(core-js@3.50.0)(happy-dom@20.8.3))(effect@4.0.0-rc.112(patch_hash=b7489e5109ec4daf5d6c7ac30956ed95c312f4077cbc973b8c82f0f340108ada)) + specifier: https://pkg.pr.new/ScriptedAlchemy/effect-rstest@f29b3f495d45a11037334620bf5f693414fb5578 + version: https://pkg.pr.new/ScriptedAlchemy/effect-rstest@f29b3f495d45a11037334620bf5f693414fb5578(@rstest/core@0.11.12(@module-federation/runtime-tools@2.9.0)(core-js@3.50.0)(happy-dom@20.8.3))(effect@4.0.0-rc.112(patch_hash=b7489e5109ec4daf5d6c7ac30956ed95c312f4077cbc973b8c82f0f340108ada)) packages/gateway-principal-verifier: dependencies: @@ -611,8 +610,8 @@ importers: specifier: ^26.4.1 version: 26.5.1 effect-rstest: - specifier: 0.1.4 - version: 0.1.4(patch_hash=400646897be54f02f39200a151f0f4a48428fc12dccbd7d91a7391b55247152a)(@rstest/core@0.11.12(@module-federation/runtime-tools@2.9.0)(core-js@3.50.0)(happy-dom@20.8.3))(effect@4.0.0-rc.112(patch_hash=b7489e5109ec4daf5d6c7ac30956ed95c312f4077cbc973b8c82f0f340108ada)) + specifier: https://pkg.pr.new/ScriptedAlchemy/effect-rstest@f29b3f495d45a11037334620bf5f693414fb5578 + version: https://pkg.pr.new/ScriptedAlchemy/effect-rstest@f29b3f495d45a11037334620bf5f693414fb5578(@rstest/core@0.11.12(@module-federation/runtime-tools@2.9.0)(core-js@3.50.0)(happy-dom@20.8.3))(effect@4.0.0-rc.112(patch_hash=b7489e5109ec4daf5d6c7ac30956ed95c312f4077cbc973b8c82f0f340108ada)) packages/payment-term-catalog-contracts: dependencies: @@ -633,8 +632,8 @@ importers: specifier: 20.19.43 version: 20.19.43 effect-rstest: - specifier: 0.1.4 - version: 0.1.4(patch_hash=400646897be54f02f39200a151f0f4a48428fc12dccbd7d91a7391b55247152a)(@rstest/core@0.11.12(@module-federation/runtime-tools@2.9.0)(core-js@3.50.0)(happy-dom@20.8.3))(effect@4.0.0-rc.112(patch_hash=b7489e5109ec4daf5d6c7ac30956ed95c312f4077cbc973b8c82f0f340108ada)) + specifier: https://pkg.pr.new/ScriptedAlchemy/effect-rstest@f29b3f495d45a11037334620bf5f693414fb5578 + version: https://pkg.pr.new/ScriptedAlchemy/effect-rstest@f29b3f495d45a11037334620bf5f693414fb5578(@rstest/core@0.11.12(@module-federation/runtime-tools@2.9.0)(core-js@3.50.0)(happy-dom@20.8.3))(effect@4.0.0-rc.112(patch_hash=b7489e5109ec4daf5d6c7ac30956ed95c312f4077cbc973b8c82f0f340108ada)) packages/shared-contracts: dependencies: @@ -658,8 +657,8 @@ importers: specifier: ^26.4.1 version: 26.5.1 effect-rstest: - specifier: 0.1.4 - version: 0.1.4(patch_hash=400646897be54f02f39200a151f0f4a48428fc12dccbd7d91a7391b55247152a)(@rstest/core@0.11.12(@module-federation/runtime-tools@2.9.0)(core-js@3.50.0)(happy-dom@20.8.3))(effect@4.0.0-rc.112(patch_hash=b7489e5109ec4daf5d6c7ac30956ed95c312f4077cbc973b8c82f0f340108ada)) + specifier: https://pkg.pr.new/ScriptedAlchemy/effect-rstest@f29b3f495d45a11037334620bf5f693414fb5578 + version: https://pkg.pr.new/ScriptedAlchemy/effect-rstest@f29b3f495d45a11037334620bf5f693414fb5578(@rstest/core@0.11.12(@module-federation/runtime-tools@2.9.0)(core-js@3.50.0)(happy-dom@20.8.3))(effect@4.0.0-rc.112(patch_hash=b7489e5109ec4daf5d6c7ac30956ed95c312f4077cbc973b8c82f0f340108ada)) packages/shared-design-tokens: {} @@ -790,8 +789,8 @@ importers: specifier: 1.0.0-rc.5-ab785fc version: 1.0.0-rc.5-ab785fc effect-rstest: - specifier: 0.1.4 - version: 0.1.4(patch_hash=400646897be54f02f39200a151f0f4a48428fc12dccbd7d91a7391b55247152a)(@rstest/core@0.11.12(@module-federation/runtime-tools@2.9.0)(core-js@3.50.0)(happy-dom@20.8.3))(effect@4.0.0-rc.112(patch_hash=b7489e5109ec4daf5d6c7ac30956ed95c312f4077cbc973b8c82f0f340108ada)) + specifier: https://pkg.pr.new/ScriptedAlchemy/effect-rstest@f29b3f495d45a11037334620bf5f693414fb5578 + version: https://pkg.pr.new/ScriptedAlchemy/effect-rstest@f29b3f495d45a11037334620bf5f693414fb5578(@rstest/core@0.11.12(@module-federation/runtime-tools@2.9.0)(core-js@3.50.0)(happy-dom@20.8.3))(effect@4.0.0-rc.112(patch_hash=b7489e5109ec4daf5d6c7ac30956ed95c312f4077cbc973b8c82f0f340108ada)) typescript: specifier: 7.0.2 version: 7.0.2 @@ -929,8 +928,8 @@ importers: specifier: 1.0.0-rc.5-ab785fc version: 1.0.0-rc.5-ab785fc effect-rstest: - specifier: 0.1.4 - version: 0.1.4(patch_hash=400646897be54f02f39200a151f0f4a48428fc12dccbd7d91a7391b55247152a)(@rstest/core@0.11.12(@module-federation/runtime-tools@2.9.0)(core-js@3.50.0)(happy-dom@20.8.3))(effect@4.0.0-rc.112(patch_hash=b7489e5109ec4daf5d6c7ac30956ed95c312f4077cbc973b8c82f0f340108ada)) + specifier: https://pkg.pr.new/ScriptedAlchemy/effect-rstest@f29b3f495d45a11037334620bf5f693414fb5578 + version: https://pkg.pr.new/ScriptedAlchemy/effect-rstest@f29b3f495d45a11037334620bf5f693414fb5578(@rstest/core@0.11.12(@module-federation/runtime-tools@2.9.0)(core-js@3.50.0)(happy-dom@20.8.3))(effect@4.0.0-rc.112(patch_hash=b7489e5109ec4daf5d6c7ac30956ed95c312f4077cbc973b8c82f0f340108ada)) fast-check: specifier: 4.9.0 version: 4.9.0 @@ -1047,8 +1046,8 @@ importers: specifier: 1.0.0-rc.5-ab785fc version: 1.0.0-rc.5-ab785fc effect-rstest: - specifier: 0.1.4 - version: 0.1.4(patch_hash=400646897be54f02f39200a151f0f4a48428fc12dccbd7d91a7391b55247152a)(@rstest/core@0.11.12(@module-federation/runtime-tools@2.9.0)(core-js@3.50.0)(happy-dom@20.8.3))(effect@4.0.0-rc.112(patch_hash=b7489e5109ec4daf5d6c7ac30956ed95c312f4077cbc973b8c82f0f340108ada)) + specifier: https://pkg.pr.new/ScriptedAlchemy/effect-rstest@f29b3f495d45a11037334620bf5f693414fb5578 + version: https://pkg.pr.new/ScriptedAlchemy/effect-rstest@f29b3f495d45a11037334620bf5f693414fb5578(@rstest/core@0.11.12(@module-federation/runtime-tools@2.9.0)(core-js@3.50.0)(happy-dom@20.8.3))(effect@4.0.0-rc.112(patch_hash=b7489e5109ec4daf5d6c7ac30956ed95c312f4077cbc973b8c82f0f340108ada)) typescript: specifier: 7.0.2 version: 7.0.2 @@ -5845,11 +5844,11 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - effect-rstest@0.1.4: - resolution: {integrity: sha512-0JTpwz1giYQLPYk5OLerS/JZJBQb2ve8h6jwY7DR75sb53z2Sl44+IsjGj4Hh1xC80m91tTR/gqfLPbR1lkH3g==} - engines: {node: ^20.19.0 || >=22.12.0} + effect-rstest@https://pkg.pr.new/ScriptedAlchemy/effect-rstest@f29b3f495d45a11037334620bf5f693414fb5578: + resolution: {integrity: sha512-hr8irxbYTk3OA+3IKz920JlZyIT4/rouzR6fJdy4uXRRi3Nyq6E03VgTZJNcEqtODoq2hgdDrMn9yEy9x47eiQ==, tarball: https://pkg.pr.new/ScriptedAlchemy/effect-rstest@f29b3f495d45a11037334620bf5f693414fb5578} + version: 0.1.0 peerDependencies: - '@rstest/core': '>=0.11.12 <0.12.0' + '@rstest/core': ^0.11.11 effect: 4.0.0-rc.112 effect@4.0.0-rc.112: @@ -13928,7 +13927,7 @@ snapshots: eastasianwidth@0.2.0: {} - effect-rstest@0.1.4(patch_hash=400646897be54f02f39200a151f0f4a48428fc12dccbd7d91a7391b55247152a)(@rstest/core@0.11.12(@module-federation/runtime-tools@2.9.0)(core-js@3.50.0)(happy-dom@20.8.3))(effect@4.0.0-rc.112(patch_hash=b7489e5109ec4daf5d6c7ac30956ed95c312f4077cbc973b8c82f0f340108ada)): + effect-rstest@https://pkg.pr.new/ScriptedAlchemy/effect-rstest@f29b3f495d45a11037334620bf5f693414fb5578(@rstest/core@0.11.12(@module-federation/runtime-tools@2.9.0)(core-js@3.50.0)(happy-dom@20.8.3))(effect@4.0.0-rc.112(patch_hash=b7489e5109ec4daf5d6c7ac30956ed95c312f4077cbc973b8c82f0f340108ada)): dependencies: '@rstest/core': 0.11.12(@module-federation/runtime-tools@2.9.0)(core-js@3.50.0)(happy-dom@20.8.3) effect: 4.0.0-rc.112(patch_hash=b7489e5109ec4daf5d6c7ac30956ed95c312f4077cbc973b8c82f0f340108ada) diff --git a/app/pnpm-workspace.yaml b/app/pnpm-workspace.yaml index 56179c9a8..7ceb29f9b 100644 --- a/app/pnpm-workspace.yaml +++ b/app/pnpm-workspace.yaml @@ -91,7 +91,6 @@ allowBuilds: sharp: true workerd: true patchedDependencies: - effect-rstest@0.1.4: patches/effect-rstest@0.1.4.patch '@bleedingdev/modern-js-app-tools-extensions@3.9.0-ultramodern.11': patches/@bleedingdev__modern-js-app-tools-extensions@3.9.0-ultramodern.11.patch '@bleedingdev/modern-js-code-tools@3.9.0-ultramodern.11': patches/@bleedingdev__modern-js-code-tools@3.9.0-ultramodern.11.patch effect@4.0.0-rc.112: patches/effect-cli-metadata@4.0.0-rc.112.patch diff --git a/app/verticals/commerce-customer-context/package.json b/app/verticals/commerce-customer-context/package.json index 6ebfea08f..648726882 100644 --- a/app/verticals/commerce-customer-context/package.json +++ b/app/verticals/commerce-customer-context/package.json @@ -186,7 +186,7 @@ "bun-types": "1.4.0", "cross-env": "10.1.0", "drizzle-kit": "1.0.0-rc.5-ab785fc", - "effect-rstest": "0.1.4", + "effect-rstest": "https://pkg.pr.new/ScriptedAlchemy/effect-rstest@f29b3f495d45a11037334620bf5f693414fb5578", "typescript": "7.0.2", "wrangler": "4.116.0" }, diff --git a/app/verticals/party-registry/package.json b/app/verticals/party-registry/package.json index 3a4a669f5..11d780d1c 100644 --- a/app/verticals/party-registry/package.json +++ b/app/verticals/party-registry/package.json @@ -100,7 +100,7 @@ "typescript": "7.0.2", "wrangler": "4.116.0", "zephyr-rspack-plugin": "1.2.4", - "effect-rstest": "0.1.4", + "effect-rstest": "https://pkg.pr.new/ScriptedAlchemy/effect-rstest@f29b3f495d45a11037334620bf5f693414fb5578", "cross-env": "10.1.0", "@modern-js/app-tools-extensions": "npm:@bleedingdev/modern-js-app-tools-extensions@3.9.0-ultramodern.11", "@modern-js/plugin-bff-build-extensions": "npm:@bleedingdev/modern-js-plugin-bff-build-extensions@3.9.0-ultramodern.11", diff --git a/app/verticals/payment-term-catalog/package.json b/app/verticals/payment-term-catalog/package.json index 5ffa71d91..c4cdab0b2 100644 --- a/app/verticals/payment-term-catalog/package.json +++ b/app/verticals/payment-term-catalog/package.json @@ -61,7 +61,7 @@ "@types/react": "^19.2.18", "@types/react-dom": "^19.2.4", "drizzle-kit": "1.0.0-rc.5-ab785fc", - "effect-rstest": "0.1.4", + "effect-rstest": "https://pkg.pr.new/ScriptedAlchemy/effect-rstest@f29b3f495d45a11037334620bf5f693414fb5578", "typescript": "7.0.2", "wrangler": "4.116.0", "cross-env": "10.1.0" From 3160860ecca10465dd7621affac1880afee6555c Mon Sep 17 00:00:00 2001 From: Petr Glaser Date: Sat, 19 Sep 2026 11:00:29 +0200 Subject: [PATCH 2/2] docs(lint): describe the unpatched effect-rstest canary pin Co-Authored-By: Claude Fable 5.1 --- app/tools/oxlint/effect-native/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/tools/oxlint/effect-native/README.md b/app/tools/oxlint/effect-native/README.md index fffc838fd..2eeab8f79 100644 --- a/app/tools/oxlint/effect-native/README.md +++ b/app/tools/oxlint/effect-native/README.md @@ -81,7 +81,7 @@ Place examples under `invalid/` and `valid/`; `// expect-count: N` at the start ## Test runtime policy -`no-effect-run-in-tests` rejects references, calls, imports, re-exports, and dynamic imports of `Effect.run*` inside tests, including test support and harness directories. Use `it.effect`, `it.live`, and `it.layer` from `effect-rstest` so the runner owns services, scopes, test time, and configuration. The external package owns the runner boundary; there is no repository-owned implementation or harness-path allowlist. The immutable upstream canary currently uses a temporary pnpm patch for [effect-rstest PR #4](https://github.com/ScriptedAlchemy/effect-rstest/pull/4). [OntOS #507](https://github.com/TechsioCZ/ontos/issues/507) tracks replacing it with a published upstream package and deleting the patch; do not add a local runner alias or wrapper. +`no-effect-run-in-tests` rejects references, calls, imports, re-exports, and dynamic imports of `Effect.run*` inside tests, including test support and harness directories. Use `it.effect`, `it.live`, and `it.layer` from `effect-rstest` so the runner owns services, scopes, test time, and configuration. The external package owns the runner boundary; there is no repository-owned implementation or harness-path allowlist. The workspace pins the immutable upstream merged-commit canary that already contains [effect-rstest PR #4](https://github.com/ScriptedAlchemy/effect-rstest/pull/4), with no pnpm patch; `scripts/tests/effect-rstest-package.test.mts` verifies the installed package's equality, schema-property, and timeout/finalizer behavior. The npm `effect-rstest` releases are a separate publishing line that does not yet carry those fixes, so do not swap the canary for a registry version until its `dist` passes that guard test, and do not add a local patch, runner alias, or wrapper. Playwright/e2e adapters remain exempt through `ignorePaths`. Type-only imports, non-Effect bindings, and ManagedRuntime instance methods are not Effect root-function violations. Nested Effect re-entry is diagnosed by `no-nested-effect-run`. Additional rule options are `testPaths`, `effectModules`, and `effectModuleSources`; there is no fixer or suggestion.