{"source":"(1)","generatedAt":"2026-10-09T08:37:31.966Z","nodeBuild":{"protocol":"node-lab-modes-2026-10-04.1","buildMode":"production","packageSourceFingerprint":"150caa4056dc9a53c0949c661d058bd15d8fbf12a32a8cbccc515394950b9194","modeToolingFingerprint":"8c235e85d077f40062c138c843cc0e1902e8552b2b38481040ba1a36a55392e8","raphGuardCoverage":"not-applicable-no-conditional-guards","raphGuardInputs":[],"correctnessInputs":{"fingerprint":"6ac1c02b004b511dacaf3ad65de9fbbc72d469277d2b3a04920586f9b0f89c8a","files":[{"path":"src/test/benchmarks/labs/reactivity/correctness/build-mode-setup.mjs","sha256":"9698070f103bcb1fedead50450b015b98c3fa6d002001cadd99c3108273e1354"},{"path":"src/test/benchmarks/labs/reactivity/correctness/Raph.ts","sha256":"2f786b74abe02de5ea2209d21f7f4a88c50742e156aa2826318d66eb6e7afd66"},{"path":"src/test/benchmarks/labs/reactivity/correctness/reflex-adapter.d.mts","sha256":"586973bd5629784560bea7bbad84a8523d08ad97e7bbdcd2bb03c996082041fe"},{"path":"src/test/benchmarks/labs/reactivity/correctness/reflex-adapter.mjs","sha256":"2e6a059e72f43521eca9a8ff141b6ac0f451ee90b10e8d82aab20eac6a2d889d"},{"path":"src/test/benchmarks/labs/reactivity/correctness/run.test.ts","sha256":"08455d889d034ee9a1f991f8ac00365fe44ad9c5d0ffbe3f3e76691ce7b65399"},{"path":"src/test/benchmarks/labs/reactivity/correctness/vue-versions.ts","sha256":"9b6897efe34d150bd60fd2d78777a66b3861bdc009577925c7db6f0356fafdf1"},{"path":"src/test/benchmarks/labs/reactivity/package.json","sha256":"a01f98cf127a409fe8126b2012b8c3509a3013c9f1d1498a1fb0521e9c7886dd"},{"path":"src/test/benchmarks/labs/reactivity/pnpm-lock.yaml","sha256":"82ed7ea21a88d51f59992a8e3a098704bb98f6bf827c20cda93a3bfba980bff1"},{"path":"src/test/benchmarks/labs/reactivity/reactive-framework-test-suite-master/package-lock.json","sha256":"c061423b5443852f450f5de658a1a89b06f7efadccaf99ea9759ba8ca5220d04"},{"path":"src/test/benchmarks/labs/reactivity/reactive-framework-test-suite-master/package.json","sha256":"44dba22ccf67adafaf8db219961349445353db5c80b99c93d8bbeb1a29d21b20"},{"path":"src/test/benchmarks/labs/reactivity/reactive-framework-test-suite-master/src/assert.ts","sha256":"504c20d64149dd1cfa029640bbb952d4e949c3b5c73845fb4185a86b5b14d779"},{"path":"src/test/benchmarks/labs/reactivity/reactive-framework-test-suite-master/src/batching.ts","sha256":"58990647c16b2d069cdfb02c056e24e877c87432793edc6c37a34a283a57e222"},{"path":"src/test/benchmarks/labs/reactivity/reactive-framework-test-suite-master/src/behaviorDifferences.ts","sha256":"3626d0f88769c13185f8b9b9c94792549e67d51b62c8055de82ae1e7c794a281"},{"path":"src/test/benchmarks/labs/reactivity/reactive-framework-test-suite-master/src/computedEval.ts","sha256":"f11e0f185c928cd5d45f9e45e693a79b5be648792a0dc83ba404ad526acf7535"},{"path":"src/test/benchmarks/labs/reactivity/reactive-framework-test-suite-master/src/cycleDetection.ts","sha256":"d414e8d0b69e482692977cb660e771bf408e6ea2b474e34e3afa6d6c232acc44"},{"path":"src/test/benchmarks/labs/reactivity/reactive-framework-test-suite-master/src/dynamicDeps.ts","sha256":"ba37b0665311f01116869cab84ac5012815e2cbbda4dea58f46fa4405ba5c2c1"},{"path":"src/test/benchmarks/labs/reactivity/reactive-framework-test-suite-master/src/effectLifecycle.ts","sha256":"d63030d1573168053b7bf50f581e4a1768e4eaf4f41b1876b14565e846ee4c00"},{"path":"src/test/benchmarks/labs/reactivity/reactive-framework-test-suite-master/src/equality.ts","sha256":"da4c1e9bd42ec3628ba1875d21d4878b689e0af0534b9992bb3680fee7b69c26"},{"path":"src/test/benchmarks/labs/reactivity/reactive-framework-test-suite-master/src/errorHandling.ts","sha256":"617cd4872b886bc5283739a49aa9c1971badf8e49e6e91d6951ea387dea0a8c5"},{"path":"src/test/benchmarks/labs/reactivity/reactive-framework-test-suite-master/src/framework.ts","sha256":"d5a2743cf2140c09de4d0f9c7cf63f5ebf618a1438b041e897b619292d9f9ae6"},{"path":"src/test/benchmarks/labs/reactivity/reactive-framework-test-suite-master/src/graphPropagation.ts","sha256":"1623026946d36984e262b2eb7c63bfe467ff872d84ab0ed8de17839bc5c42941"},{"path":"src/test/benchmarks/labs/reactivity/reactive-framework-test-suite-master/src/index.ts","sha256":"46fd0e92985de719005e65c7caaec40db2067cdcff586e247254b3cef5b24600"},{"path":"src/test/benchmarks/labs/reactivity/reactive-framework-test-suite-master/src/innerWrite.ts","sha256":"7d45f2a93f90bb936aa9d2ab52e47ffc3b10231aa6914e502e6be6b01830e76e"},{"path":"src/test/benchmarks/labs/reactivity/reactive-framework-test-suite-master/src/memoryGc.ts","sha256":"72d132375384b0df0fb0ef734a687124015d8ae0701695962bafb039abc95ea5"},{"path":"src/test/benchmarks/labs/reactivity/reactive-framework-test-suite-master/src/nestedEffects.ts","sha256":"01a1333c99a6347e1ef2b15f6cff19245c1d0e3644b54be22222e6274fd2e30b"},{"path":"src/test/benchmarks/labs/reactivity/reactive-framework-test-suite-master/src/staleEvaluation.ts","sha256":"833c0a52b0a1d2a584762ef00d9fb0b4bcaf317b5016e838a22eabe01d39a464"},{"path":"src/test/benchmarks/labs/reactivity/reactive-framework-test-suite-master/src/untracked.ts","sha256":"89ccd0f99e0f3a8fc011f992e772fd1bb2420e03235c8fb4a8b2ee561e84f825"},{"path":"src/test/benchmarks/labs/reactivity/reactive-framework-test-suite-master/test/env.d.ts","sha256":"ee0c319441a470cf8017e7520084e500f160f9d03c3c13b20e0f8de23e82c2e2"},{"path":"src/test/benchmarks/labs/reactivity/reactive-framework-test-suite-master/test/frameworks/alienSignals.ts","sha256":"c7b34a8c7656dd60bd6e97e9b26f7f3e984abe569fbc77acb2248722dc0a3466"},{"path":"src/test/benchmarks/labs/reactivity/reactive-framework-test-suite-master/test/frameworks/angularSignals.ts","sha256":"0d36b1a532391ea4d3321a6c7f35e4008c67e6cd6b37f0aea9c09b6217a4bff6"},{"path":"src/test/benchmarks/labs/reactivity/reactive-framework-test-suite-master/test/frameworks/anod.ts","sha256":"f0c61505aaab191eda7cf28a078f04aaa061d8ba083d60c9ef85524297234c13"},{"path":"src/test/benchmarks/labs/reactivity/reactive-framework-test-suite-master/test/frameworks/index.ts","sha256":"0c266846cd83412e9285ec458268d07f8d270e6143b1642d011f169dabca15fc"},{"path":"src/test/benchmarks/labs/reactivity/reactive-framework-test-suite-master/test/frameworks/mobx.ts","sha256":"efdee9d90e6b00c235636aaa66f30ddec5f2151431c138328fc6613a05272601"},{"path":"src/test/benchmarks/labs/reactivity/reactive-framework-test-suite-master/test/frameworks/pota.ts","sha256":"135bd610a797048f38c550d615e25cdf0e44dce20e7dcf06e3cd4899b2133237"},{"path":"src/test/benchmarks/labs/reactivity/reactive-framework-test-suite-master/test/frameworks/preactSignals.ts","sha256":"14feb493b616bc49717d6c939b29188575f97610a877e22268827b0b0d11f00f"},{"path":"src/test/benchmarks/labs/reactivity/reactive-framework-test-suite-master/test/frameworks/reactively.ts","sha256":"cf98f2af47a820326f28cf0829d16cf19a8dbcfbab0bbc4caeb7eb1964e46261"},{"path":"src/test/benchmarks/labs/reactivity/reactive-framework-test-suite-master/test/frameworks/reatom.ts","sha256":"61c1cdba08c1c225af59bb7cb11a3b4f0a14df356f1f6bc461c3b90a465ffbb8"},{"path":"src/test/benchmarks/labs/reactivity/reactive-framework-test-suite-master/test/frameworks/sjs.ts","sha256":"5704ee1cc88936dc0d416aa72a49a22fca0a9c39f48681c025cd00492498c6cf"},{"path":"src/test/benchmarks/labs/reactivity/reactive-framework-test-suite-master/test/frameworks/solid.ts","sha256":"b7152fb77551f66f6edd356e211d34fd00ab8fd1659976052e4f58ab4f71e60d"},{"path":"src/test/benchmarks/labs/reactivity/reactive-framework-test-suite-master/test/frameworks/svelte.ts","sha256":"653ac3c1890b20d5a7d580e01e5f8811bf77610c3f77ad9694520784de1f9faa"},{"path":"src/test/benchmarks/labs/reactivity/reactive-framework-test-suite-master/test/frameworks/tansu.ts","sha256":"d83055aef978d0f54b305a8a5a17b49613d452f3e4eaabefa8d77f3cd2bdf3e0"},{"path":"src/test/benchmarks/labs/reactivity/reactive-framework-test-suite-master/test/frameworks/tc39Signals.ts","sha256":"8151356f591f065105e8fe44b9dac37adce0130765824e194cececfff06f4eb4"},{"path":"src/test/benchmarks/labs/reactivity/reactive-framework-test-suite-master/test/frameworks/vueReactivity.ts","sha256":"9fae76550330b82cc96b794e77cfeae52889b024ec25795789255e7600b6a589"},{"path":"src/test/benchmarks/labs/reactivity/reactive-framework-test-suite-master/test/frameworks/xReactivity.ts","sha256":"e3ee89617e4c95dc6ac8869715ef78d3372c3ea1b9ad66067a8f8ad2acc1c06c"},{"path":"src/test/benchmarks/labs/reactivity/reactive-framework-test-suite-master/test/run.test.ts","sha256":"5255d10dabbb712d7af8339803c43e1055caa1e91d375b00e151d574fde9ac87"},{"path":"src/test/benchmarks/labs/reactivity/reactive-framework-test-suite-master/tsconfig.json","sha256":"e3b4654daf5ee5130e08674ac493aa9b323411dca942acb3d8e3782f671c5d4f"},{"path":"src/test/benchmarks/labs/reactivity/reactive-framework-test-suite-master/vitest.config.ts","sha256":"9d32c25a1ace67d06bb8a9879cbc0b3a546035036a95489bc3256b05fcb20054"},{"path":"src/test/benchmarks/labs/reactivity/scripts/run-correctness.mjs","sha256":"366827bf9fd0a39c828bdace83074445b6d98c1e453be0dd629695a67ffef40a"},{"path":"src/test/benchmarks/labs/reactivity/vitest.correctness.config.ts","sha256":"776512fb3d166e1b056e775e83871382ebc1253da27c330c439d2b20c35e88a4"}]},"artifact":"vite-source-correctness","folding":"Vite source mode definitions; externalized dependency folding not claimed"},"sourceAndInputsUnchanged":true,"light":false,"frameworks":["Raph Next Signals","reflex","alien-signals","@preact/signals-core","@reactively/core","tansu","signal-polyfill (TC39)","@vue/reactivity 3.5.43","@vue/reactivity 3.6.0-rc.9","mobx","@reatom/core","svelte","solid-js","@solidjs/signals","S.js","pota","@angular/core","anod"],"failures":{"reflex":"timeout after 60000 ms","@reatom/core":"exit 1","@solidjs/signals":"timeout after 60000 ms"},"runStatus":{"Raph Next Signals":{"status":"complete"},"reflex":{"status":"timeout","warning":"timeout after 60000 ms"},"alien-signals":{"status":"complete"},"@preact/signals-core":{"status":"complete"},"@reactively/core":{"status":"complete"},"tansu":{"status":"complete"},"signal-polyfill (TC39)":{"status":"complete"},"@vue/reactivity 3.5.43":{"status":"complete"},"@vue/reactivity 3.6.0-rc.9":{"status":"complete"},"mobx":{"status":"complete"},"@reatom/core":{"status":"complete-with-warning","warning":"exit 1"},"svelte":{"status":"complete"},"solid-js":{"status":"complete"},"@solidjs/signals":{"status":"timeout","warning":"timeout after 60000 ms"},"S.js":{"status":"complete"},"pota":{"status":"complete"},"@angular/core":{"status":"complete"},"anod":{"status":"complete"}},"sections":[{"section":"Graph Propagation","testNames":["#1 diamond","#2 diamond + tail","#3 jagged diamond + tails","#5 drop A→B→A updates","#6 one unchanged dep does not block update from changed dep","#7 unchanged computed values stop propagation to downstream","#8 topological order","#9 linear convergence","#10 exponential convergence","#116 other listeners still notified after one disposes","#157 three-way diamond: sub updates when two of three deps unmark","#187 effect disposal deactivates upstream computed","#188 batch + dynamic deps: unnecessary recompute avoided","#189 multi-signal change: topological ordering preserved","#190 computed notifies newly-subscribed effect after prior read","#191 effect sees latest computed value when subscribing after source change","#192 effect not re-run when computed dep value unchanged","#204 multi-source fan-in","#205 multi-source cross-diamond","#206 stacked diamonds","#207 wide fan-out: all effects fire once","#208 deep asymmetric join (depth 3 vs 1)"],"results":{"Raph Next Signals":{"#1 diamond":"pass","#2 diamond + tail":"pass","#3 jagged diamond + tails":"pass","#5 drop A→B→A updates":"pass","#6 one unchanged dep does not block update from changed dep":"pass","#7 unchanged computed values stop propagation to downstream":"pass","#8 topological order":"pass","#9 linear convergence":"pass","#10 exponential convergence":"pass","#116 other listeners still notified after one disposes":"pass","#157 three-way diamond: sub updates when two of three deps unmark":"pass","#187 effect disposal deactivates upstream computed":"pass","#188 batch + dynamic deps: unnecessary recompute avoided":"pass","#189 multi-signal change: topological ordering preserved":"pass","#190 computed notifies newly-subscribed effect after prior read":"pass","#191 effect sees latest computed value when subscribing after source change":"pass","#192 effect not re-run when computed dep value unchanged":"pass","#204 multi-source fan-in":"pass","#205 multi-source cross-diamond":"pass","#206 stacked diamonds":"pass","#207 wide fan-out: all effects fire once":"pass","#208 deep asymmetric join (depth 3 vs 1)":"pass"},"reflex":{"#1 diamond":"timeout","#2 diamond + tail":"timeout","#3 jagged diamond + tails":"timeout","#5 drop A→B→A updates":"timeout","#6 one unchanged dep does not block update from changed dep":"timeout","#7 unchanged computed values stop propagation to downstream":"timeout","#8 topological order":"timeout","#9 linear convergence":"timeout","#10 exponential convergence":"timeout","#116 other listeners still notified after one disposes":"timeout","#157 three-way diamond: sub updates when two of three deps unmark":"timeout","#187 effect disposal deactivates upstream computed":"timeout","#188 batch + dynamic deps: unnecessary recompute avoided":"timeout","#189 multi-signal change: topological ordering preserved":"timeout","#190 computed notifies newly-subscribed effect after prior read":"timeout","#191 effect sees latest computed value when subscribing after source change":"timeout","#192 effect not re-run when computed dep value unchanged":"timeout","#204 multi-source fan-in":"timeout","#205 multi-source cross-diamond":"timeout","#206 stacked diamonds":"timeout","#207 wide fan-out: all effects fire once":"timeout","#208 deep asymmetric join (depth 3 vs 1)":"timeout"},"alien-signals":{"#1 diamond":"pass","#2 diamond + tail":"pass","#3 jagged diamond + tails":"pass","#5 drop A→B→A updates":"pass","#6 one unchanged dep does not block update from changed dep":"pass","#7 unchanged computed values stop propagation to downstream":"pass","#8 topological order":"pass","#9 linear convergence":"pass","#10 exponential convergence":"pass","#116 other listeners still notified after one disposes":"pass","#157 three-way diamond: sub updates when two of three deps unmark":"pass","#187 effect disposal deactivates upstream computed":"pass","#188 batch + dynamic deps: unnecessary recompute avoided":"pass","#189 multi-signal change: topological ordering preserved":"pass","#190 computed notifies newly-subscribed effect after prior read":"pass","#191 effect sees latest computed value when subscribing after source change":"pass","#192 effect not re-run when computed dep value unchanged":"pass","#204 multi-source fan-in":"pass","#205 multi-source cross-diamond":"pass","#206 stacked diamonds":"pass","#207 wide fan-out: all effects fire once":"pass","#208 deep asymmetric join (depth 3 vs 1)":"pass"},"@preact/signals-core":{"#1 diamond":"pass","#2 diamond + tail":"pass","#3 jagged diamond + tails":"pass","#5 drop A→B→A updates":"pass","#6 one unchanged dep does not block update from changed dep":"pass","#7 unchanged computed values stop propagation to downstream":"pass","#8 topological order":"pass","#9 linear convergence":"pass","#10 exponential convergence":"pass","#116 other listeners still notified after one disposes":"pass","#157 three-way diamond: sub updates when two of three deps unmark":"pass","#187 effect disposal deactivates upstream computed":"pass","#188 batch + dynamic deps: unnecessary recompute avoided":"pass","#189 multi-signal change: topological ordering preserved":"pass","#190 computed notifies newly-subscribed effect after prior read":"pass","#191 effect sees latest computed value when subscribing after source change":"pass","#192 effect not re-run when computed dep value unchanged":"pass","#204 multi-source fan-in":"pass","#205 multi-source cross-diamond":"pass","#206 stacked diamonds":"pass","#207 wide fan-out: all effects fire once":"pass","#208 deep asymmetric join (depth 3 vs 1)":"pass"},"@reactively/core":{"#1 diamond":"pass","#2 diamond + tail":"pass","#3 jagged diamond + tails":"pass","#5 drop A→B→A updates":"pass","#6 one unchanged dep does not block update from changed dep":"pass","#7 unchanged computed values stop propagation to downstream":"pass","#8 topological order":"pass","#9 linear convergence":"pass","#10 exponential convergence":"pass","#116 other listeners still notified after one disposes":"pass","#157 three-way diamond: sub updates when two of three deps unmark":"pass","#187 effect disposal deactivates upstream computed":"pass","#188 batch + dynamic deps: unnecessary recompute avoided":"skip","#189 multi-signal change: topological ordering preserved":"pass","#190 computed notifies newly-subscribed effect after prior read":"pass","#191 effect sees latest computed value when subscribing after source change":"pass","#192 effect not re-run when computed dep value unchanged":"pass","#204 multi-source fan-in":"skip","#205 multi-source cross-diamond":"pass","#206 stacked diamonds":"pass","#207 wide fan-out: all effects fire once":"pass","#208 deep asymmetric join (depth 3 vs 1)":"pass"},"tansu":{"#1 diamond":"pass","#2 diamond + tail":"pass","#3 jagged diamond + tails":"pass","#5 drop A→B→A updates":"pass","#6 one unchanged dep does not block update from changed dep":"pass","#7 unchanged computed values stop propagation to downstream":"pass","#8 topological order":"pass","#9 linear convergence":"pass","#10 exponential convergence":"pass","#116 other listeners still notified after one disposes":"pass","#157 three-way diamond: sub updates when two of three deps unmark":"pass","#187 effect disposal deactivates upstream computed":"pass","#188 batch + dynamic deps: unnecessary recompute avoided":"pass","#189 multi-signal change: topological ordering preserved":"pass","#190 computed notifies newly-subscribed effect after prior read":"pass","#191 effect sees latest computed value when subscribing after source change":"pass","#192 effect not re-run when computed dep value unchanged":"pass","#204 multi-source fan-in":"pass","#205 multi-source cross-diamond":"pass","#206 stacked diamonds":"pass","#207 wide fan-out: all effects fire once":"pass","#208 deep asymmetric join (depth 3 vs 1)":"pass"},"signal-polyfill (TC39)":{"#1 diamond":"pass","#2 diamond + tail":"pass","#3 jagged diamond + tails":"pass","#5 drop A→B→A updates":"pass","#6 one unchanged dep does not block update from changed dep":"pass","#7 unchanged computed values stop propagation to downstream":"pass","#8 topological order":"pass","#9 linear convergence":"pass","#10 exponential convergence":"pass","#116 other listeners still notified after one disposes":"pass","#157 three-way diamond: sub updates when two of three deps unmark":"pass","#187 effect disposal deactivates upstream computed":"pass","#188 batch + dynamic deps: unnecessary recompute avoided":"skip","#189 multi-signal change: topological ordering preserved":"pass","#190 computed notifies newly-subscribed effect after prior read":"pass","#191 effect sees latest computed value when subscribing after source change":"pass","#192 effect not re-run when computed dep value unchanged":"pass","#204 multi-source fan-in":"skip","#205 multi-source cross-diamond":"pass","#206 stacked diamonds":"pass","#207 wide fan-out: all effects fire once":"pass","#208 deep asymmetric join (depth 3 vs 1)":"pass"},"@vue/reactivity 3.5.43":{"#1 diamond":"pass","#2 diamond + tail":"pass","#3 jagged diamond + tails":"pass","#5 drop A→B→A updates":"pass","#6 one unchanged dep does not block update from changed dep":"pass","#7 unchanged computed values stop propagation to downstream":"pass","#8 topological order":"pass","#9 linear convergence":"pass","#10 exponential convergence":"pass","#116 other listeners still notified after one disposes":"pass","#157 three-way diamond: sub updates when two of three deps unmark":"pass","#187 effect disposal deactivates upstream computed":"pass","#188 batch + dynamic deps: unnecessary recompute avoided":"pass","#189 multi-signal change: topological ordering preserved":"pass","#190 computed notifies newly-subscribed effect after prior read":"pass","#191 effect sees latest computed value when subscribing after source change":"pass","#192 effect not re-run when computed dep value unchanged":"pass","#204 multi-source fan-in":"pass","#205 multi-source cross-diamond":"pass","#206 stacked diamonds":"pass","#207 wide fan-out: all effects fire once":"pass","#208 deep asymmetric join (depth 3 vs 1)":"pass"},"@vue/reactivity 3.6.0-rc.9":{"#1 diamond":"pass","#2 diamond + tail":"pass","#3 jagged diamond + tails":"pass","#5 drop A→B→A updates":"pass","#6 one unchanged dep does not block update from changed dep":"pass","#7 unchanged computed values stop propagation to downstream":"pass","#8 topological order":"pass","#9 linear convergence":"pass","#10 exponential convergence":"pass","#116 other listeners still notified after one disposes":"pass","#157 three-way diamond: sub updates when two of three deps unmark":"pass","#187 effect disposal deactivates upstream computed":"pass","#188 batch + dynamic deps: unnecessary recompute avoided":"pass","#189 multi-signal change: topological ordering preserved":"pass","#190 computed notifies newly-subscribed effect after prior read":"pass","#191 effect sees latest computed value when subscribing after source change":"pass","#192 effect not re-run when computed dep value unchanged":"pass","#204 multi-source fan-in":"fail","#205 multi-source cross-diamond":"pass","#206 stacked diamonds":"pass","#207 wide fan-out: all effects fire once":"pass","#208 deep asymmetric join (depth 3 vs 1)":"pass"},"mobx":{"#1 diamond":"pass","#2 diamond + tail":"pass","#3 jagged diamond + tails":"pass","#5 drop A→B→A updates":"pass","#6 one unchanged dep does not block update from changed dep":"pass","#7 unchanged computed values stop propagation to downstream":"fail","#8 topological order":"pass","#9 linear convergence":"pass","#10 exponential convergence":"pass","#116 other listeners still notified after one disposes":"pass","#157 three-way diamond: sub updates when two of three deps unmark":"pass","#187 effect disposal deactivates upstream computed":"pass","#188 batch + dynamic deps: unnecessary recompute avoided":"fail","#189 multi-signal change: topological ordering preserved":"pass","#190 computed notifies newly-subscribed effect after prior read":"pass","#191 effect sees latest computed value when subscribing after source change":"pass","#192 effect not re-run when computed dep value unchanged":"pass","#204 multi-source fan-in":"fail","#205 multi-source cross-diamond":"pass","#206 stacked diamonds":"pass","#207 wide fan-out: all effects fire once":"pass","#208 deep asymmetric join (depth 3 vs 1)":"pass"},"@reatom/core":{"#1 diamond":"pass","#2 diamond + tail":"pass","#3 jagged diamond + tails":"pass","#5 drop A→B→A updates":"pass","#6 one unchanged dep does not block update from changed dep":"pass","#7 unchanged computed values stop propagation to downstream":"pass","#8 topological order":"pass","#9 linear convergence":"pass","#10 exponential convergence":"pass","#116 other listeners still notified after one disposes":"pass","#157 three-way diamond: sub updates when two of three deps unmark":"pass","#187 effect disposal deactivates upstream computed":"pass","#188 batch + dynamic deps: unnecessary recompute avoided":"pass","#189 multi-signal change: topological ordering preserved":"pass","#190 computed notifies newly-subscribed effect after prior read":"pass","#191 effect sees latest computed value when subscribing after source change":"pass","#192 effect not re-run when computed dep value unchanged":"pass","#204 multi-source fan-in":"pass","#205 multi-source cross-diamond":"pass","#206 stacked diamonds":"pass","#207 wide fan-out: all effects fire once":"pass","#208 deep asymmetric join (depth 3 vs 1)":"pass"},"svelte":{"#1 diamond":"pass","#2 diamond + tail":"pass","#3 jagged diamond + tails":"pass","#5 drop A→B→A updates":"pass","#6 one unchanged dep does not block update from changed dep":"pass","#7 unchanged computed values stop propagation to downstream":"pass","#8 topological order":"pass","#9 linear convergence":"pass","#10 exponential convergence":"pass","#116 other listeners still notified after one disposes":"pass","#157 three-way diamond: sub updates when two of three deps unmark":"pass","#187 effect disposal deactivates upstream computed":"pass","#188 batch + dynamic deps: unnecessary recompute avoided":"skip","#189 multi-signal change: topological ordering preserved":"pass","#190 computed notifies newly-subscribed effect after prior read":"pass","#191 effect sees latest computed value when subscribing after source change":"pass","#192 effect not re-run when computed dep value unchanged":"pass","#204 multi-source fan-in":"skip","#205 multi-source cross-diamond":"pass","#206 stacked diamonds":"pass","#207 wide fan-out: all effects fire once":"pass","#208 deep asymmetric join (depth 3 vs 1)":"pass"},"solid-js":{"#1 diamond":"pass","#2 diamond + tail":"pass","#3 jagged diamond + tails":"pass","#5 drop A→B→A updates":"pass","#6 one unchanged dep does not block update from changed dep":"pass","#7 unchanged computed values stop propagation to downstream":"pass","#8 topological order":"pass","#9 linear convergence":"pass","#10 exponential convergence":"pass","#116 other listeners still notified after one disposes":"pass","#157 three-way diamond: sub updates when two of three deps unmark":"pass","#187 effect disposal deactivates upstream computed":"fail","#188 batch + dynamic deps: unnecessary recompute avoided":"fail","#189 multi-signal change: topological ordering preserved":"fail","#190 computed notifies newly-subscribed effect after prior read":"pass","#191 effect sees latest computed value when subscribing after source change":"pass","#192 effect not re-run when computed dep value unchanged":"pass","#204 multi-source fan-in":"pass","#205 multi-source cross-diamond":"fail","#206 stacked diamonds":"pass","#207 wide fan-out: all effects fire once":"pass","#208 deep asymmetric join (depth 3 vs 1)":"pass"},"@solidjs/signals":{"#1 diamond":"timeout","#2 diamond + tail":"timeout","#3 jagged diamond + tails":"timeout","#5 drop A→B→A updates":"timeout","#6 one unchanged dep does not block update from changed dep":"timeout","#7 unchanged computed values stop propagation to downstream":"timeout","#8 topological order":"timeout","#9 linear convergence":"timeout","#10 exponential convergence":"timeout","#116 other listeners still notified after one disposes":"timeout","#157 three-way diamond: sub updates when two of three deps unmark":"timeout","#187 effect disposal deactivates upstream computed":"timeout","#188 batch + dynamic deps: unnecessary recompute avoided":"timeout","#189 multi-signal change: topological ordering preserved":"timeout","#190 computed notifies newly-subscribed effect after prior read":"timeout","#191 effect sees latest computed value when subscribing after source change":"timeout","#192 effect not re-run when computed dep value unchanged":"timeout","#204 multi-source fan-in":"timeout","#205 multi-source cross-diamond":"timeout","#206 stacked diamonds":"timeout","#207 wide fan-out: all effects fire once":"timeout","#208 deep asymmetric join (depth 3 vs 1)":"timeout"},"S.js":{"#1 diamond":"pass","#2 diamond + tail":"pass","#3 jagged diamond + tails":"pass","#5 drop A→B→A updates":"pass","#6 one unchanged dep does not block update from changed dep":"pass","#7 unchanged computed values stop propagation to downstream":"fail","#8 topological order":"pass","#9 linear convergence":"pass","#10 exponential convergence":"pass","#116 other listeners still notified after one disposes":"pass","#157 three-way diamond: sub updates when two of three deps unmark":"pass","#187 effect disposal deactivates upstream computed":"fail","#188 batch + dynamic deps: unnecessary recompute avoided":"fail","#189 multi-signal change: topological ordering preserved":"fail","#190 computed notifies newly-subscribed effect after prior read":"pass","#191 effect sees latest computed value when subscribing after source change":"pass","#192 effect not re-run when computed dep value unchanged":"fail","#204 multi-source fan-in":"pass","#205 multi-source cross-diamond":"fail","#206 stacked diamonds":"pass","#207 wide fan-out: all effects fire once":"pass","#208 deep asymmetric join (depth 3 vs 1)":"pass"},"pota":{"#1 diamond":"pass","#2 diamond + tail":"pass","#3 jagged diamond + tails":"pass","#5 drop A→B→A updates":"pass","#6 one unchanged dep does not block update from changed dep":"pass","#7 unchanged computed values stop propagation to downstream":"pass","#8 topological order":"pass","#9 linear convergence":"pass","#10 exponential convergence":"pass","#116 other listeners still notified after one disposes":"fail","#157 three-way diamond: sub updates when two of three deps unmark":"pass","#187 effect disposal deactivates upstream computed":"fail","#188 batch + dynamic deps: unnecessary recompute avoided":"fail","#189 multi-signal change: topological ordering preserved":"fail","#190 computed notifies newly-subscribed effect after prior read":"fail","#191 effect sees latest computed value when subscribing after source change":"pass","#192 effect not re-run when computed dep value unchanged":"pass","#204 multi-source fan-in":"fail","#205 multi-source cross-diamond":"fail","#206 stacked diamonds":"pass","#207 wide fan-out: all effects fire once":"fail","#208 deep asymmetric join (depth 3 vs 1)":"pass"},"@angular/core":{"#1 diamond":"pass","#2 diamond + tail":"pass","#3 jagged diamond + tails":"pass","#5 drop A→B→A updates":"pass","#6 one unchanged dep does not block update from changed dep":"pass","#7 unchanged computed values stop propagation to downstream":"pass","#8 topological order":"pass","#9 linear convergence":"pass","#10 exponential convergence":"pass","#116 other listeners still notified after one disposes":"pass","#157 three-way diamond: sub updates when two of three deps unmark":"pass","#187 effect disposal deactivates upstream computed":"pass","#188 batch + dynamic deps: unnecessary recompute avoided":"skip","#189 multi-signal change: topological ordering preserved":"pass","#190 computed notifies newly-subscribed effect after prior read":"pass","#191 effect sees latest computed value when subscribing after source change":"pass","#192 effect not re-run when computed dep value unchanged":"pass","#204 multi-source fan-in":"skip","#205 multi-source cross-diamond":"pass","#206 stacked diamonds":"pass","#207 wide fan-out: all effects fire once":"pass","#208 deep asymmetric join (depth 3 vs 1)":"pass"},"anod":{"#1 diamond":"pass","#2 diamond + tail":"pass","#3 jagged diamond + tails":"pass","#5 drop A→B→A updates":"pass","#6 one unchanged dep does not block update from changed dep":"pass","#7 unchanged computed values stop propagation to downstream":"pass","#8 topological order":"pass","#9 linear convergence":"pass","#10 exponential convergence":"pass","#116 other listeners still notified after one disposes":"pass","#157 three-way diamond: sub updates when two of three deps unmark":"pass","#187 effect disposal deactivates upstream computed":"pass","#188 batch + dynamic deps: unnecessary recompute avoided":"pass","#189 multi-signal change: topological ordering preserved":"pass","#190 computed notifies newly-subscribed effect after prior read":"pass","#191 effect sees latest computed value when subscribing after source change":"pass","#192 effect not re-run when computed dep value unchanged":"pass","#204 multi-source fan-in":"pass","#205 multi-source cross-diamond":"pass","#206 stacked diamonds":"pass","#207 wide fan-out: all effects fire once":"pass","#208 deep asymmetric join (depth 3 vs 1)":"pass"}}},{"section":"Dynamic Dependencies","testNames":["#12 active dep triggers, inactive dep does not","#13 switching branches deactivates old deps","#14 new deps updated before dependee","#16 lazy branch","#165 computed dep cleanup doesn't delete sibling subscription","#166 after dep removed via branch switch, re-subscribing works","#193 sequential dirty check: branch switch skips unreachable computed","#194 chained computed dirty reallocation via effect","#195 chained computed dirty reallocation via manual read","#196 maybe-dirty diamond: first dep unmarked, second still triggers","#197 chained value-equality stops propagation across multiple writes","#198 effect discovers new branch deps","#199 effect ignores inactive branch dep","#200 independent dep tracking across effects with dynamic deps"],"results":{"Raph Next Signals":{"#12 active dep triggers, inactive dep does not":"pass","#13 switching branches deactivates old deps":"pass","#14 new deps updated before dependee":"pass","#16 lazy branch":"pass","#165 computed dep cleanup doesn't delete sibling subscription":"pass","#166 after dep removed via branch switch, re-subscribing works":"pass","#193 sequential dirty check: branch switch skips unreachable computed":"pass","#194 chained computed dirty reallocation via effect":"pass","#195 chained computed dirty reallocation via manual read":"pass","#196 maybe-dirty diamond: first dep unmarked, second still triggers":"pass","#197 chained value-equality stops propagation across multiple writes":"pass","#198 effect discovers new branch deps":"pass","#199 effect ignores inactive branch dep":"pass","#200 independent dep tracking across effects with dynamic deps":"pass"},"reflex":{"#12 active dep triggers, inactive dep does not":"timeout","#13 switching branches deactivates old deps":"timeout","#14 new deps updated before dependee":"timeout","#16 lazy branch":"timeout","#165 computed dep cleanup doesn't delete sibling subscription":"timeout","#166 after dep removed via branch switch, re-subscribing works":"timeout","#193 sequential dirty check: branch switch skips unreachable computed":"timeout","#194 chained computed dirty reallocation via effect":"timeout","#195 chained computed dirty reallocation via manual read":"timeout","#196 maybe-dirty diamond: first dep unmarked, second still triggers":"timeout","#197 chained value-equality stops propagation across multiple writes":"timeout","#198 effect discovers new branch deps":"timeout","#199 effect ignores inactive branch dep":"timeout","#200 independent dep tracking across effects with dynamic deps":"timeout"},"alien-signals":{"#12 active dep triggers, inactive dep does not":"pass","#13 switching branches deactivates old deps":"pass","#14 new deps updated before dependee":"pass","#16 lazy branch":"pass","#165 computed dep cleanup doesn't delete sibling subscription":"pass","#166 after dep removed via branch switch, re-subscribing works":"pass","#193 sequential dirty check: branch switch skips unreachable computed":"pass","#194 chained computed dirty reallocation via effect":"pass","#195 chained computed dirty reallocation via manual read":"pass","#196 maybe-dirty diamond: first dep unmarked, second still triggers":"pass","#197 chained value-equality stops propagation across multiple writes":"pass","#198 effect discovers new branch deps":"pass","#199 effect ignores inactive branch dep":"pass","#200 independent dep tracking across effects with dynamic deps":"pass"},"@preact/signals-core":{"#12 active dep triggers, inactive dep does not":"pass","#13 switching branches deactivates old deps":"pass","#14 new deps updated before dependee":"pass","#16 lazy branch":"pass","#165 computed dep cleanup doesn't delete sibling subscription":"pass","#166 after dep removed via branch switch, re-subscribing works":"pass","#193 sequential dirty check: branch switch skips unreachable computed":"pass","#194 chained computed dirty reallocation via effect":"pass","#195 chained computed dirty reallocation via manual read":"pass","#196 maybe-dirty diamond: first dep unmarked, second still triggers":"pass","#197 chained value-equality stops propagation across multiple writes":"pass","#198 effect discovers new branch deps":"pass","#199 effect ignores inactive branch dep":"pass","#200 independent dep tracking across effects with dynamic deps":"pass"},"@reactively/core":{"#12 active dep triggers, inactive dep does not":"pass","#13 switching branches deactivates old deps":"pass","#14 new deps updated before dependee":"pass","#16 lazy branch":"pass","#165 computed dep cleanup doesn't delete sibling subscription":"pass","#166 after dep removed via branch switch, re-subscribing works":"pass","#193 sequential dirty check: branch switch skips unreachable computed":"pass","#194 chained computed dirty reallocation via effect":"pass","#195 chained computed dirty reallocation via manual read":"pass","#196 maybe-dirty diamond: first dep unmarked, second still triggers":"pass","#197 chained value-equality stops propagation across multiple writes":"pass","#198 effect discovers new branch deps":"pass","#199 effect ignores inactive branch dep":"pass","#200 independent dep tracking across effects with dynamic deps":"fail"},"tansu":{"#12 active dep triggers, inactive dep does not":"pass","#13 switching branches deactivates old deps":"pass","#14 new deps updated before dependee":"pass","#16 lazy branch":"pass","#165 computed dep cleanup doesn't delete sibling subscription":"pass","#166 after dep removed via branch switch, re-subscribing works":"pass","#193 sequential dirty check: branch switch skips unreachable computed":"pass","#194 chained computed dirty reallocation via effect":"pass","#195 chained computed dirty reallocation via manual read":"pass","#196 maybe-dirty diamond: first dep unmarked, second still triggers":"pass","#197 chained value-equality stops propagation across multiple writes":"pass","#198 effect discovers new branch deps":"pass","#199 effect ignores inactive branch dep":"pass","#200 independent dep tracking across effects with dynamic deps":"pass"},"signal-polyfill (TC39)":{"#12 active dep triggers, inactive dep does not":"pass","#13 switching branches deactivates old deps":"pass","#14 new deps updated before dependee":"pass","#16 lazy branch":"pass","#165 computed dep cleanup doesn't delete sibling subscription":"pass","#166 after dep removed via branch switch, re-subscribing works":"pass","#193 sequential dirty check: branch switch skips unreachable computed":"pass","#194 chained computed dirty reallocation via effect":"pass","#195 chained computed dirty reallocation via manual read":"pass","#196 maybe-dirty diamond: first dep unmarked, second still triggers":"pass","#197 chained value-equality stops propagation across multiple writes":"pass","#198 effect discovers new branch deps":"pass","#199 effect ignores inactive branch dep":"pass","#200 independent dep tracking across effects with dynamic deps":"pass"},"@vue/reactivity 3.5.43":{"#12 active dep triggers, inactive dep does not":"pass","#13 switching branches deactivates old deps":"pass","#14 new deps updated before dependee":"pass","#16 lazy branch":"pass","#165 computed dep cleanup doesn't delete sibling subscription":"pass","#166 after dep removed via branch switch, re-subscribing works":"pass","#193 sequential dirty check: branch switch skips unreachable computed":"pass","#194 chained computed dirty reallocation via effect":"pass","#195 chained computed dirty reallocation via manual read":"pass","#196 maybe-dirty diamond: first dep unmarked, second still triggers":"pass","#197 chained value-equality stops propagation across multiple writes":"pass","#198 effect discovers new branch deps":"pass","#199 effect ignores inactive branch dep":"pass","#200 independent dep tracking across effects with dynamic deps":"pass"},"@vue/reactivity 3.6.0-rc.9":{"#12 active dep triggers, inactive dep does not":"pass","#13 switching branches deactivates old deps":"pass","#14 new deps updated before dependee":"pass","#16 lazy branch":"pass","#165 computed dep cleanup doesn't delete sibling subscription":"pass","#166 after dep removed via branch switch, re-subscribing works":"pass","#193 sequential dirty check: branch switch skips unreachable computed":"pass","#194 chained computed dirty reallocation via effect":"pass","#195 chained computed dirty reallocation via manual read":"pass","#196 maybe-dirty diamond: first dep unmarked, second still triggers":"pass","#197 chained value-equality stops propagation across multiple writes":"pass","#198 effect discovers new branch deps":"pass","#199 effect ignores inactive branch dep":"pass","#200 independent dep tracking across effects with dynamic deps":"pass"},"mobx":{"#12 active dep triggers, inactive dep does not":"fail","#13 switching branches deactivates old deps":"fail","#14 new deps updated before dependee":"pass","#16 lazy branch":"pass","#165 computed dep cleanup doesn't delete sibling subscription":"pass","#166 after dep removed via branch switch, re-subscribing works":"pass","#193 sequential dirty check: branch switch skips unreachable computed":"pass","#194 chained computed dirty reallocation via effect":"pass","#195 chained computed dirty reallocation via manual read":"pass","#196 maybe-dirty diamond: first dep unmarked, second still triggers":"pass","#197 chained value-equality stops propagation across multiple writes":"pass","#198 effect discovers new branch deps":"pass","#199 effect ignores inactive branch dep":"pass","#200 independent dep tracking across effects with dynamic deps":"pass"},"@reatom/core":{"#12 active dep triggers, inactive dep does not":"pass","#13 switching branches deactivates old deps":"pass","#14 new deps updated before dependee":"pass","#16 lazy branch":"pass","#165 computed dep cleanup doesn't delete sibling subscription":"pass","#166 after dep removed via branch switch, re-subscribing works":"pass","#193 sequential dirty check: branch switch skips unreachable computed":"pass","#194 chained computed dirty reallocation via effect":"pass","#195 chained computed dirty reallocation via manual read":"pass","#196 maybe-dirty diamond: first dep unmarked, second still triggers":"pass","#197 chained value-equality stops propagation across multiple writes":"pass","#198 effect discovers new branch deps":"pass","#199 effect ignores inactive branch dep":"pass","#200 independent dep tracking across effects with dynamic deps":"pass"},"svelte":{"#12 active dep triggers, inactive dep does not":"pass","#13 switching branches deactivates old deps":"pass","#14 new deps updated before dependee":"pass","#16 lazy branch":"pass","#165 computed dep cleanup doesn't delete sibling subscription":"pass","#166 after dep removed via branch switch, re-subscribing works":"pass","#193 sequential dirty check: branch switch skips unreachable computed":"pass","#194 chained computed dirty reallocation via effect":"pass","#195 chained computed dirty reallocation via manual read":"pass","#196 maybe-dirty diamond: first dep unmarked, second still triggers":"pass","#197 chained value-equality stops propagation across multiple writes":"pass","#198 effect discovers new branch deps":"pass","#199 effect ignores inactive branch dep":"pass","#200 independent dep tracking across effects with dynamic deps":"pass"},"solid-js":{"#12 active dep triggers, inactive dep does not":"pass","#13 switching branches deactivates old deps":"pass","#14 new deps updated before dependee":"pass","#16 lazy branch":"pass","#165 computed dep cleanup doesn't delete sibling subscription":"pass","#166 after dep removed via branch switch, re-subscribing works":"pass","#193 sequential dirty check: branch switch skips unreachable computed":"fail","#194 chained computed dirty reallocation via effect":"pass","#195 chained computed dirty reallocation via manual read":"pass","#196 maybe-dirty diamond: first dep unmarked, second still triggers":"pass","#197 chained value-equality stops propagation across multiple writes":"pass","#198 effect discovers new branch deps":"pass","#199 effect ignores inactive branch dep":"pass","#200 independent dep tracking across effects with dynamic deps":"pass"},"@solidjs/signals":{"#12 active dep triggers, inactive dep does not":"timeout","#13 switching branches deactivates old deps":"timeout","#14 new deps updated before dependee":"timeout","#16 lazy branch":"timeout","#165 computed dep cleanup doesn't delete sibling subscription":"timeout","#166 after dep removed via branch switch, re-subscribing works":"timeout","#193 sequential dirty check: branch switch skips unreachable computed":"timeout","#194 chained computed dirty reallocation via effect":"timeout","#195 chained computed dirty reallocation via manual read":"timeout","#196 maybe-dirty diamond: first dep unmarked, second still triggers":"timeout","#197 chained value-equality stops propagation across multiple writes":"timeout","#198 effect discovers new branch deps":"timeout","#199 effect ignores inactive branch dep":"timeout","#200 independent dep tracking across effects with dynamic deps":"timeout"},"S.js":{"#12 active dep triggers, inactive dep does not":"pass","#13 switching branches deactivates old deps":"pass","#14 new deps updated before dependee":"pass","#16 lazy branch":"pass","#165 computed dep cleanup doesn't delete sibling subscription":"pass","#166 after dep removed via branch switch, re-subscribing works":"pass","#193 sequential dirty check: branch switch skips unreachable computed":"fail","#194 chained computed dirty reallocation via effect":"pass","#195 chained computed dirty reallocation via manual read":"pass","#196 maybe-dirty diamond: first dep unmarked, second still triggers":"pass","#197 chained value-equality stops propagation across multiple writes":"fail","#198 effect discovers new branch deps":"pass","#199 effect ignores inactive branch dep":"pass","#200 independent dep tracking across effects with dynamic deps":"pass"},"pota":{"#12 active dep triggers, inactive dep does not":"pass","#13 switching branches deactivates old deps":"pass","#14 new deps updated before dependee":"pass","#16 lazy branch":"pass","#165 computed dep cleanup doesn't delete sibling subscription":"pass","#166 after dep removed via branch switch, re-subscribing works":"fail","#193 sequential dirty check: branch switch skips unreachable computed":"fail","#194 chained computed dirty reallocation via effect":"fail","#195 chained computed dirty reallocation via manual read":"pass","#196 maybe-dirty diamond: first dep unmarked, second still triggers":"pass","#197 chained value-equality stops propagation across multiple writes":"pass","#198 effect discovers new branch deps":"fail","#199 effect ignores inactive branch dep":"fail","#200 independent dep tracking across effects with dynamic deps":"fail"},"@angular/core":{"#12 active dep triggers, inactive dep does not":"pass","#13 switching branches deactivates old deps":"pass","#14 new deps updated before dependee":"pass","#16 lazy branch":"pass","#165 computed dep cleanup doesn't delete sibling subscription":"pass","#166 after dep removed via branch switch, re-subscribing works":"pass","#193 sequential dirty check: branch switch skips unreachable computed":"pass","#194 chained computed dirty reallocation via effect":"pass","#195 chained computed dirty reallocation via manual read":"pass","#196 maybe-dirty diamond: first dep unmarked, second still triggers":"pass","#197 chained value-equality stops propagation across multiple writes":"pass","#198 effect discovers new branch deps":"pass","#199 effect ignores inactive branch dep":"pass","#200 independent dep tracking across effects with dynamic deps":"pass"},"anod":{"#12 active dep triggers, inactive dep does not":"pass","#13 switching branches deactivates old deps":"pass","#14 new deps updated before dependee":"pass","#16 lazy branch":"pass","#165 computed dep cleanup doesn't delete sibling subscription":"pass","#166 after dep removed via branch switch, re-subscribing works":"pass","#193 sequential dirty check: branch switch skips unreachable computed":"pass","#194 chained computed dirty reallocation via effect":"pass","#195 chained computed dirty reallocation via manual read":"pass","#196 maybe-dirty diamond: first dep unmarked, second still triggers":"pass","#197 chained value-equality stops propagation across multiple writes":"pass","#198 effect discovers new branch deps":"pass","#199 effect ignores inactive branch dep":"pass","#200 independent dep tracking across effects with dynamic deps":"pass"}}},{"section":"Computed Evaluation","testNames":["#18 cached — not re-evaluated if deps unchanged","#19 returns updated value after dep change","#21 chained computed dirty reallocation after trigger","#22 chained computed avoids redundant re-compute","#23 sync access of invalidated chained computed runs effect","#24 dependency evaluation order consistent with last access","#25 no re-compute if zero dependencies","#26 computed remains live after losing all subscribers","#145 undefined is a valid computed value (not uninitialized)","#147 computed not recomputed in batch if dep reverts","#149 batch preserves correct evaluation order","#115 signal creation inside computed is allowed","#27 downstream not re-evaluated unless value changed"],"results":{"Raph Next Signals":{"#18 cached — not re-evaluated if deps unchanged":"pass","#19 returns updated value after dep change":"pass","#21 chained computed dirty reallocation after trigger":"pass","#22 chained computed avoids redundant re-compute":"pass","#23 sync access of invalidated chained computed runs effect":"pass","#24 dependency evaluation order consistent with last access":"pass","#25 no re-compute if zero dependencies":"pass","#26 computed remains live after losing all subscribers":"pass","#145 undefined is a valid computed value (not uninitialized)":"pass","#147 computed not recomputed in batch if dep reverts":"pass","#149 batch preserves correct evaluation order":"pass","#115 signal creation inside computed is allowed":"pass","#27 downstream not re-evaluated unless value changed":"pass"},"reflex":{"#18 cached — not re-evaluated if deps unchanged":"timeout","#19 returns updated value after dep change":"timeout","#21 chained computed dirty reallocation after trigger":"timeout","#22 chained computed avoids redundant re-compute":"timeout","#23 sync access of invalidated chained computed runs effect":"timeout","#24 dependency evaluation order consistent with last access":"timeout","#25 no re-compute if zero dependencies":"timeout","#26 computed remains live after losing all subscribers":"timeout","#145 undefined is a valid computed value (not uninitialized)":"timeout","#147 computed not recomputed in batch if dep reverts":"timeout","#149 batch preserves correct evaluation order":"timeout","#115 signal creation inside computed is allowed":"timeout","#27 downstream not re-evaluated unless value changed":"timeout"},"alien-signals":{"#18 cached — not re-evaluated if deps unchanged":"pass","#19 returns updated value after dep change":"pass","#21 chained computed dirty reallocation after trigger":"pass","#22 chained computed avoids redundant re-compute":"pass","#23 sync access of invalidated chained computed runs effect":"pass","#24 dependency evaluation order consistent with last access":"pass","#25 no re-compute if zero dependencies":"pass","#26 computed remains live after losing all subscribers":"pass","#145 undefined is a valid computed value (not uninitialized)":"pass","#147 computed not recomputed in batch if dep reverts":"pass","#149 batch preserves correct evaluation order":"pass","#115 signal creation inside computed is allowed":"pass","#27 downstream not re-evaluated unless value changed":"pass"},"@preact/signals-core":{"#18 cached — not re-evaluated if deps unchanged":"pass","#19 returns updated value after dep change":"pass","#21 chained computed dirty reallocation after trigger":"pass","#22 chained computed avoids redundant re-compute":"pass","#23 sync access of invalidated chained computed runs effect":"pass","#24 dependency evaluation order consistent with last access":"pass","#25 no re-compute if zero dependencies":"pass","#26 computed remains live after losing all subscribers":"pass","#145 undefined is a valid computed value (not uninitialized)":"pass","#147 computed not recomputed in batch if dep reverts":"pass","#149 batch preserves correct evaluation order":"pass","#115 signal creation inside computed is allowed":"pass","#27 downstream not re-evaluated unless value changed":"pass"},"@reactively/core":{"#18 cached — not re-evaluated if deps unchanged":"pass","#19 returns updated value after dep change":"pass","#21 chained computed dirty reallocation after trigger":"pass","#22 chained computed avoids redundant re-compute":"pass","#23 sync access of invalidated chained computed runs effect":"pass","#24 dependency evaluation order consistent with last access":"pass","#25 no re-compute if zero dependencies":"pass","#26 computed remains live after losing all subscribers":"pass","#145 undefined is a valid computed value (not uninitialized)":"pass","#147 computed not recomputed in batch if dep reverts":"skip","#149 batch preserves correct evaluation order":"skip","#115 signal creation inside computed is allowed":"pass","#27 downstream not re-evaluated unless value changed":"pass"},"tansu":{"#18 cached — not re-evaluated if deps unchanged":"pass","#19 returns updated value after dep change":"pass","#21 chained computed dirty reallocation after trigger":"pass","#22 chained computed avoids redundant re-compute":"pass","#23 sync access of invalidated chained computed runs effect":"pass","#24 dependency evaluation order consistent with last access":"pass","#25 no re-compute if zero dependencies":"pass","#26 computed remains live after losing all subscribers":"pass","#145 undefined is a valid computed value (not uninitialized)":"pass","#147 computed not recomputed in batch if dep reverts":"pass","#149 batch preserves correct evaluation order":"pass","#115 signal creation inside computed is allowed":"pass","#27 downstream not re-evaluated unless value changed":"pass"},"signal-polyfill (TC39)":{"#18 cached — not re-evaluated if deps unchanged":"pass","#19 returns updated value after dep change":"pass","#21 chained computed dirty reallocation after trigger":"pass","#22 chained computed avoids redundant re-compute":"pass","#23 sync access of invalidated chained computed runs effect":"pass","#24 dependency evaluation order consistent with last access":"pass","#25 no re-compute if zero dependencies":"pass","#26 computed remains live after losing all subscribers":"pass","#145 undefined is a valid computed value (not uninitialized)":"pass","#147 computed not recomputed in batch if dep reverts":"skip","#149 batch preserves correct evaluation order":"skip","#115 signal creation inside computed is allowed":"pass","#27 downstream not re-evaluated unless value changed":"pass"},"@vue/reactivity 3.5.43":{"#18 cached — not re-evaluated if deps unchanged":"pass","#19 returns updated value after dep change":"pass","#21 chained computed dirty reallocation after trigger":"pass","#22 chained computed avoids redundant re-compute":"pass","#23 sync access of invalidated chained computed runs effect":"pass","#24 dependency evaluation order consistent with last access":"pass","#25 no re-compute if zero dependencies":"pass","#26 computed remains live after losing all subscribers":"pass","#145 undefined is a valid computed value (not uninitialized)":"pass","#147 computed not recomputed in batch if dep reverts":"fail","#149 batch preserves correct evaluation order":"pass","#115 signal creation inside computed is allowed":"pass","#27 downstream not re-evaluated unless value changed":"pass"},"@vue/reactivity 3.6.0-rc.9":{"#18 cached — not re-evaluated if deps unchanged":"pass","#19 returns updated value after dep change":"pass","#21 chained computed dirty reallocation after trigger":"pass","#22 chained computed avoids redundant re-compute":"pass","#23 sync access of invalidated chained computed runs effect":"pass","#24 dependency evaluation order consistent with last access":"pass","#25 no re-compute if zero dependencies":"pass","#26 computed remains live after losing all subscribers":"pass","#145 undefined is a valid computed value (not uninitialized)":"pass","#147 computed not recomputed in batch if dep reverts":"pass","#149 batch preserves correct evaluation order":"pass","#115 signal creation inside computed is allowed":"pass","#27 downstream not re-evaluated unless value changed":"pass"},"mobx":{"#18 cached — not re-evaluated if deps unchanged":"fail","#19 returns updated value after dep change":"pass","#21 chained computed dirty reallocation after trigger":"pass","#22 chained computed avoids redundant re-compute":"pass","#23 sync access of invalidated chained computed runs effect":"pass","#24 dependency evaluation order consistent with last access":"pass","#25 no re-compute if zero dependencies":"fail","#26 computed remains live after losing all subscribers":"pass","#145 undefined is a valid computed value (not uninitialized)":"pass","#147 computed not recomputed in batch if dep reverts":"fail","#149 batch preserves correct evaluation order":"fail","#115 signal creation inside computed is allowed":"pass","#27 downstream not re-evaluated unless value changed":"fail"},"@reatom/core":{"#18 cached — not re-evaluated if deps unchanged":"pass","#19 returns updated value after dep change":"pass","#21 chained computed dirty reallocation after trigger":"pass","#22 chained computed avoids redundant re-compute":"pass","#23 sync access of invalidated chained computed runs effect":"pass","#24 dependency evaluation order consistent with last access":"pass","#25 no re-compute if zero dependencies":"pass","#26 computed remains live after losing all subscribers":"pass","#145 undefined is a valid computed value (not uninitialized)":"pass","#147 computed not recomputed in batch if dep reverts":"pass","#149 batch preserves correct evaluation order":"pass","#115 signal creation inside computed is allowed":"pass","#27 downstream not re-evaluated unless value changed":"pass"},"svelte":{"#18 cached — not re-evaluated if deps unchanged":"pass","#19 returns updated value after dep change":"pass","#21 chained computed dirty reallocation after trigger":"pass","#22 chained computed avoids redundant re-compute":"pass","#23 sync access of invalidated chained computed runs effect":"pass","#24 dependency evaluation order consistent with last access":"pass","#25 no re-compute if zero dependencies":"pass","#26 computed remains live after losing all subscribers":"pass","#145 undefined is a valid computed value (not uninitialized)":"pass","#147 computed not recomputed in batch if dep reverts":"skip","#149 batch preserves correct evaluation order":"skip","#115 signal creation inside computed is allowed":"pass","#27 downstream not re-evaluated unless value changed":"pass"},"solid-js":{"#18 cached — not re-evaluated if deps unchanged":"pass","#19 returns updated value after dep change":"pass","#21 chained computed dirty reallocation after trigger":"pass","#22 chained computed avoids redundant re-compute":"pass","#23 sync access of invalidated chained computed runs effect":"pass","#24 dependency evaluation order consistent with last access":"pass","#25 no re-compute if zero dependencies":"pass","#26 computed remains live after losing all subscribers":"pass","#145 undefined is a valid computed value (not uninitialized)":"pass","#147 computed not recomputed in batch if dep reverts":"fail","#149 batch preserves correct evaluation order":"pass","#115 signal creation inside computed is allowed":"pass","#27 downstream not re-evaluated unless value changed":"pass"},"@solidjs/signals":{"#18 cached — not re-evaluated if deps unchanged":"timeout","#19 returns updated value after dep change":"timeout","#21 chained computed dirty reallocation after trigger":"timeout","#22 chained computed avoids redundant re-compute":"timeout","#23 sync access of invalidated chained computed runs effect":"timeout","#24 dependency evaluation order consistent with last access":"timeout","#25 no re-compute if zero dependencies":"timeout","#26 computed remains live after losing all subscribers":"timeout","#145 undefined is a valid computed value (not uninitialized)":"timeout","#147 computed not recomputed in batch if dep reverts":"timeout","#149 batch preserves correct evaluation order":"timeout","#115 signal creation inside computed is allowed":"timeout","#27 downstream not re-evaluated unless value changed":"timeout"},"S.js":{"#18 cached — not re-evaluated if deps unchanged":"pass","#19 returns updated value after dep change":"pass","#21 chained computed dirty reallocation after trigger":"pass","#22 chained computed avoids redundant re-compute":"pass","#23 sync access of invalidated chained computed runs effect":"pass","#24 dependency evaluation order consistent with last access":"pass","#25 no re-compute if zero dependencies":"pass","#26 computed remains live after losing all subscribers":"pass","#145 undefined is a valid computed value (not uninitialized)":"pass","#147 computed not recomputed in batch if dep reverts":"fail","#149 batch preserves correct evaluation order":"pass","#115 signal creation inside computed is allowed":"pass","#27 downstream not re-evaluated unless value changed":"fail"},"pota":{"#18 cached — not re-evaluated if deps unchanged":"pass","#19 returns updated value after dep change":"pass","#21 chained computed dirty reallocation after trigger":"pass","#22 chained computed avoids redundant re-compute":"pass","#23 sync access of invalidated chained computed runs effect":"fail","#24 dependency evaluation order consistent with last access":"pass","#25 no re-compute if zero dependencies":"pass","#26 computed remains live after losing all subscribers":"pass","#145 undefined is a valid computed value (not uninitialized)":"pass","#147 computed not recomputed in batch if dep reverts":"fail","#149 batch preserves correct evaluation order":"pass","#115 signal creation inside computed is allowed":"pass","#27 downstream not re-evaluated unless value changed":"pass"},"@angular/core":{"#18 cached — not re-evaluated if deps unchanged":"pass","#19 returns updated value after dep change":"pass","#21 chained computed dirty reallocation after trigger":"pass","#22 chained computed avoids redundant re-compute":"pass","#23 sync access of invalidated chained computed runs effect":"pass","#24 dependency evaluation order consistent with last access":"pass","#25 no re-compute if zero dependencies":"pass","#26 computed remains live after losing all subscribers":"pass","#145 undefined is a valid computed value (not uninitialized)":"pass","#147 computed not recomputed in batch if dep reverts":"skip","#149 batch preserves correct evaluation order":"skip","#115 signal creation inside computed is allowed":"pass","#27 downstream not re-evaluated unless value changed":"pass"},"anod":{"#18 cached — not re-evaluated if deps unchanged":"pass","#19 returns updated value after dep change":"pass","#21 chained computed dirty reallocation after trigger":"pass","#22 chained computed avoids redundant re-compute":"pass","#23 sync access of invalidated chained computed runs effect":"pass","#24 dependency evaluation order consistent with last access":"pass","#25 no re-compute if zero dependencies":"pass","#26 computed remains live after losing all subscribers":"pass","#145 undefined is a valid computed value (not uninitialized)":"pass","#147 computed not recomputed in batch if dep reverts":"fail","#149 batch preserves correct evaluation order":"pass","#115 signal creation inside computed is allowed":"pass","#27 downstream not re-evaluated unless value changed":"pass"}}},{"section":"Equality & Same-Value Optimization","testNames":["#28 same primitive value — no propagation","#34 pruning stops at first unchanged node","#169 live pruning: effect not re-run when intermediate computed returns same","#220 computed same object reference — no downstream propagation"],"results":{"Raph Next Signals":{"#28 same primitive value — no propagation":"pass","#34 pruning stops at first unchanged node":"pass","#169 live pruning: effect not re-run when intermediate computed returns same":"pass","#220 computed same object reference — no downstream propagation":"pass"},"reflex":{"#28 same primitive value — no propagation":"timeout","#34 pruning stops at first unchanged node":"timeout","#169 live pruning: effect not re-run when intermediate computed returns same":"timeout","#220 computed same object reference — no downstream propagation":"timeout"},"alien-signals":{"#28 same primitive value — no propagation":"pass","#34 pruning stops at first unchanged node":"pass","#169 live pruning: effect not re-run when intermediate computed returns same":"pass","#220 computed same object reference — no downstream propagation":"pass"},"@preact/signals-core":{"#28 same primitive value — no propagation":"pass","#34 pruning stops at first unchanged node":"pass","#169 live pruning: effect not re-run when intermediate computed returns same":"pass","#220 computed same object reference — no downstream propagation":"pass"},"@reactively/core":{"#28 same primitive value — no propagation":"pass","#34 pruning stops at first unchanged node":"pass","#169 live pruning: effect not re-run when intermediate computed returns same":"pass","#220 computed same object reference — no downstream propagation":"pass"},"tansu":{"#28 same primitive value — no propagation":"pass","#34 pruning stops at first unchanged node":"pass","#169 live pruning: effect not re-run when intermediate computed returns same":"pass","#220 computed same object reference — no downstream propagation":"fail"},"signal-polyfill (TC39)":{"#28 same primitive value — no propagation":"pass","#34 pruning stops at first unchanged node":"pass","#169 live pruning: effect not re-run when intermediate computed returns same":"pass","#220 computed same object reference — no downstream propagation":"pass"},"@vue/reactivity 3.5.43":{"#28 same primitive value — no propagation":"pass","#34 pruning stops at first unchanged node":"pass","#169 live pruning: effect not re-run when intermediate computed returns same":"pass","#220 computed same object reference — no downstream propagation":"pass"},"@vue/reactivity 3.6.0-rc.9":{"#28 same primitive value — no propagation":"pass","#34 pruning stops at first unchanged node":"pass","#169 live pruning: effect not re-run when intermediate computed returns same":"pass","#220 computed same object reference — no downstream propagation":"pass"},"mobx":{"#28 same primitive value — no propagation":"fail","#34 pruning stops at first unchanged node":"fail","#169 live pruning: effect not re-run when intermediate computed returns same":"pass","#220 computed same object reference — no downstream propagation":"fail"},"@reatom/core":{"#28 same primitive value — no propagation":"pass","#34 pruning stops at first unchanged node":"pass","#169 live pruning: effect not re-run when intermediate computed returns same":"pass","#220 computed same object reference — no downstream propagation":"pass"},"svelte":{"#28 same primitive value — no propagation":"pass","#34 pruning stops at first unchanged node":"pass","#169 live pruning: effect not re-run when intermediate computed returns same":"pass","#220 computed same object reference — no downstream propagation":"pass"},"solid-js":{"#28 same primitive value — no propagation":"pass","#34 pruning stops at first unchanged node":"pass","#169 live pruning: effect not re-run when intermediate computed returns same":"pass","#220 computed same object reference — no downstream propagation":"pass"},"@solidjs/signals":{"#28 same primitive value — no propagation":"timeout","#34 pruning stops at first unchanged node":"timeout","#169 live pruning: effect not re-run when intermediate computed returns same":"timeout","#220 computed same object reference — no downstream propagation":"timeout"},"S.js":{"#28 same primitive value — no propagation":"fail","#34 pruning stops at first unchanged node":"fail","#169 live pruning: effect not re-run when intermediate computed returns same":"fail","#220 computed same object reference — no downstream propagation":"fail"},"pota":{"#28 same primitive value — no propagation":"pass","#34 pruning stops at first unchanged node":"pass","#169 live pruning: effect not re-run when intermediate computed returns same":"pass","#220 computed same object reference — no downstream propagation":"pass"},"@angular/core":{"#28 same primitive value — no propagation":"pass","#34 pruning stops at first unchanged node":"pass","#169 live pruning: effect not re-run when intermediate computed returns same":"pass","#220 computed same object reference — no downstream propagation":"pass"},"anod":{"#28 same primitive value — no propagation":"pass","#34 pruning stops at first unchanged node":"pass","#169 live pruning: effect not re-run when intermediate computed returns same":"pass","#220 computed same object reference — no downstream propagation":"pass"}}},{"section":"Effect Lifecycle","testNames":["#35 effect runs callback immediately on creation","#36 effect re-runs when dependency changes","#38 effect cleanup fn called before each re-run","#39 effect cleanup fn called on disposal","#40 effect cleanup runs outside reactive evaluation context","#42 effect not executed if disposed during pending batch","#108 effect self-dispose during execution is safe","#110 double-dispose is safe","#111 cleanup-triggered dispose prevents re-run","#141 dispose during execution then continue: no re-run","#143 destroyed effect not re-scheduled on later updates","#178 dispose cleanup reads don't leak to parent tracking context","#214 parent disposes and recreates child: downstream sees correct value","#201 computed-triggered disposal: effect skipped and no subscription leak","#202 computed-triggered disposal: sibling effects still notified","#203 computed disposal with unchanged-value sibling computed","#216 effects fire in creation order on shared signal","#217 new effect after dispose works normally","#222 effect created inside cleanup tracks its own deps","#229 cleanup reads computed: sees fresh value","#230 cleanup writes signal inside batch propagates after flush","#231 untracked inside cleanup: still no tracking","#233 cleanup write then read of dependent computed: sees new value","#235 batch inside effect body coalesces writes","#236 cleanup write to own dep: bounded recursion completes","#237 cleanup ordering on outer re-run: outer-cleanup before re-run, inner before outer if cascaded","#238 cleanup ordering on dispose: inner before outer if cascaded","#241 three-level cleanup ordering: deepest first if cascaded","#242 effect in computed: old inner cleanup (if any) before new eval","#243 cleanup ordering correct after prior inner-only re-run"],"results":{"Raph Next Signals":{"#35 effect runs callback immediately on creation":"pass","#36 effect re-runs when dependency changes":"pass","#38 effect cleanup fn called before each re-run":"pass","#39 effect cleanup fn called on disposal":"pass","#40 effect cleanup runs outside reactive evaluation context":"pass","#42 effect not executed if disposed during pending batch":"pass","#108 effect self-dispose during execution is safe":"pass","#110 double-dispose is safe":"pass","#111 cleanup-triggered dispose prevents re-run":"pass","#141 dispose during execution then continue: no re-run":"pass","#143 destroyed effect not re-scheduled on later updates":"pass","#178 dispose cleanup reads don't leak to parent tracking context":"pass","#214 parent disposes and recreates child: downstream sees correct value":"pass","#201 computed-triggered disposal: effect skipped and no subscription leak":"pass","#202 computed-triggered disposal: sibling effects still notified":"pass","#203 computed disposal with unchanged-value sibling computed":"pass","#216 effects fire in creation order on shared signal":"pass","#217 new effect after dispose works normally":"pass","#222 effect created inside cleanup tracks its own deps":"pass","#229 cleanup reads computed: sees fresh value":"pass","#230 cleanup writes signal inside batch propagates after flush":"pass","#231 untracked inside cleanup: still no tracking":"pass","#233 cleanup write then read of dependent computed: sees new value":"pass","#235 batch inside effect body coalesces writes":"pass","#236 cleanup write to own dep: bounded recursion completes":"pass","#237 cleanup ordering on outer re-run: outer-cleanup before re-run, inner before outer if cascaded":"pass","#238 cleanup ordering on dispose: inner before outer if cascaded":"pass","#241 three-level cleanup ordering: deepest first if cascaded":"pass","#242 effect in computed: old inner cleanup (if any) before new eval":"pass","#243 cleanup ordering correct after prior inner-only re-run":"pass"},"reflex":{"#35 effect runs callback immediately on creation":"timeout","#36 effect re-runs when dependency changes":"timeout","#38 effect cleanup fn called before each re-run":"timeout","#39 effect cleanup fn called on disposal":"timeout","#40 effect cleanup runs outside reactive evaluation context":"timeout","#42 effect not executed if disposed during pending batch":"timeout","#108 effect self-dispose during execution is safe":"timeout","#110 double-dispose is safe":"timeout","#111 cleanup-triggered dispose prevents re-run":"timeout","#141 dispose during execution then continue: no re-run":"timeout","#143 destroyed effect not re-scheduled on later updates":"timeout","#178 dispose cleanup reads don't leak to parent tracking context":"timeout","#214 parent disposes and recreates child: downstream sees correct value":"timeout","#201 computed-triggered disposal: effect skipped and no subscription leak":"timeout","#202 computed-triggered disposal: sibling effects still notified":"timeout","#203 computed disposal with unchanged-value sibling computed":"timeout","#216 effects fire in creation order on shared signal":"timeout","#217 new effect after dispose works normally":"timeout","#222 effect created inside cleanup tracks its own deps":"timeout","#229 cleanup reads computed: sees fresh value":"timeout","#230 cleanup writes signal inside batch propagates after flush":"timeout","#231 untracked inside cleanup: still no tracking":"timeout","#233 cleanup write then read of dependent computed: sees new value":"timeout","#235 batch inside effect body coalesces writes":"timeout","#236 cleanup write to own dep: bounded recursion completes":"timeout","#237 cleanup ordering on outer re-run: outer-cleanup before re-run, inner before outer if cascaded":"timeout","#238 cleanup ordering on dispose: inner before outer if cascaded":"timeout","#241 three-level cleanup ordering: deepest first if cascaded":"timeout","#242 effect in computed: old inner cleanup (if any) before new eval":"timeout","#243 cleanup ordering correct after prior inner-only re-run":"timeout"},"alien-signals":{"#35 effect runs callback immediately on creation":"pass","#36 effect re-runs when dependency changes":"pass","#38 effect cleanup fn called before each re-run":"pass","#39 effect cleanup fn called on disposal":"pass","#40 effect cleanup runs outside reactive evaluation context":"pass","#42 effect not executed if disposed during pending batch":"pass","#108 effect self-dispose during execution is safe":"pass","#110 double-dispose is safe":"pass","#111 cleanup-triggered dispose prevents re-run":"pass","#141 dispose during execution then continue: no re-run":"pass","#143 destroyed effect not re-scheduled on later updates":"pass","#178 dispose cleanup reads don't leak to parent tracking context":"pass","#214 parent disposes and recreates child: downstream sees correct value":"pass","#201 computed-triggered disposal: effect skipped and no subscription leak":"pass","#202 computed-triggered disposal: sibling effects still notified":"pass","#203 computed disposal with unchanged-value sibling computed":"pass","#216 effects fire in creation order on shared signal":"pass","#217 new effect after dispose works normally":"pass","#222 effect created inside cleanup tracks its own deps":"pass","#229 cleanup reads computed: sees fresh value":"pass","#230 cleanup writes signal inside batch propagates after flush":"pass","#231 untracked inside cleanup: still no tracking":"pass","#233 cleanup write then read of dependent computed: sees new value":"pass","#235 batch inside effect body coalesces writes":"pass","#236 cleanup write to own dep: bounded recursion completes":"pass","#237 cleanup ordering on outer re-run: outer-cleanup before re-run, inner before outer if cascaded":"pass","#238 cleanup ordering on dispose: inner before outer if cascaded":"pass","#241 three-level cleanup ordering: deepest first if cascaded":"pass","#242 effect in computed: old inner cleanup (if any) before new eval":"pass","#243 cleanup ordering correct after prior inner-only re-run":"pass"},"@preact/signals-core":{"#35 effect runs callback immediately on creation":"pass","#36 effect re-runs when dependency changes":"pass","#38 effect cleanup fn called before each re-run":"pass","#39 effect cleanup fn called on disposal":"pass","#40 effect cleanup runs outside reactive evaluation context":"pass","#42 effect not executed if disposed during pending batch":"pass","#108 effect self-dispose during execution is safe":"pass","#110 double-dispose is safe":"pass","#111 cleanup-triggered dispose prevents re-run":"pass","#141 dispose during execution then continue: no re-run":"pass","#143 destroyed effect not re-scheduled on later updates":"pass","#178 dispose cleanup reads don't leak to parent tracking context":"pass","#214 parent disposes and recreates child: downstream sees correct value":"pass","#201 computed-triggered disposal: effect skipped and no subscription leak":"pass","#202 computed-triggered disposal: sibling effects still notified":"pass","#203 computed disposal with unchanged-value sibling computed":"pass","#216 effects fire in creation order on shared signal":"pass","#217 new effect after dispose works normally":"pass","#222 effect created inside cleanup tracks its own deps":"pass","#229 cleanup reads computed: sees fresh value":"pass","#230 cleanup writes signal inside batch propagates after flush":"pass","#231 untracked inside cleanup: still no tracking":"pass","#233 cleanup write then read of dependent computed: sees new value":"pass","#235 batch inside effect body coalesces writes":"fail","#236 cleanup write to own dep: bounded recursion completes":"pass","#237 cleanup ordering on outer re-run: outer-cleanup before re-run, inner before outer if cascaded":"pass","#238 cleanup ordering on dispose: inner before outer if cascaded":"pass","#241 three-level cleanup ordering: deepest first if cascaded":"pass","#242 effect in computed: old inner cleanup (if any) before new eval":"pass","#243 cleanup ordering correct after prior inner-only re-run":"pass"},"@reactively/core":{"#35 effect runs callback immediately on creation":"pass","#36 effect re-runs when dependency changes":"pass","#38 effect cleanup fn called before each re-run":"skip","#39 effect cleanup fn called on disposal":"skip","#40 effect cleanup runs outside reactive evaluation context":"skip","#42 effect not executed if disposed during pending batch":"skip","#108 effect self-dispose during execution is safe":"pass","#110 double-dispose is safe":"skip","#111 cleanup-triggered dispose prevents re-run":"skip","#141 dispose during execution then continue: no re-run":"pass","#143 destroyed effect not re-scheduled on later updates":"pass","#178 dispose cleanup reads don't leak to parent tracking context":"skip","#214 parent disposes and recreates child: downstream sees correct value":"pass","#201 computed-triggered disposal: effect skipped and no subscription leak":"fail","#202 computed-triggered disposal: sibling effects still notified":"pass","#203 computed disposal with unchanged-value sibling computed":"pass","#216 effects fire in creation order on shared signal":"pass","#217 new effect after dispose works normally":"pass","#222 effect created inside cleanup tracks its own deps":"skip","#229 cleanup reads computed: sees fresh value":"skip","#230 cleanup writes signal inside batch propagates after flush":"skip","#231 untracked inside cleanup: still no tracking":"skip","#233 cleanup write then read of dependent computed: sees new value":"skip","#235 batch inside effect body coalesces writes":"skip","#236 cleanup write to own dep: bounded recursion completes":"skip","#237 cleanup ordering on outer re-run: outer-cleanup before re-run, inner before outer if cascaded":"skip","#238 cleanup ordering on dispose: inner before outer if cascaded":"skip","#241 three-level cleanup ordering: deepest first if cascaded":"skip","#242 effect in computed: old inner cleanup (if any) before new eval":"skip","#243 cleanup ordering correct after prior inner-only re-run":"skip"},"tansu":{"#35 effect runs callback immediately on creation":"pass","#36 effect re-runs when dependency changes":"pass","#38 effect cleanup fn called before each re-run":"skip","#39 effect cleanup fn called on disposal":"skip","#40 effect cleanup runs outside reactive evaluation context":"skip","#42 effect not executed if disposed during pending batch":"pass","#108 effect self-dispose during execution is safe":"pass","#110 double-dispose is safe":"skip","#111 cleanup-triggered dispose prevents re-run":"skip","#141 dispose during execution then continue: no re-run":"pass","#143 destroyed effect not re-scheduled on later updates":"pass","#178 dispose cleanup reads don't leak to parent tracking context":"skip","#214 parent disposes and recreates child: downstream sees correct value":"pass","#201 computed-triggered disposal: effect skipped and no subscription leak":"fail","#202 computed-triggered disposal: sibling effects still notified":"pass","#203 computed disposal with unchanged-value sibling computed":"pass","#216 effects fire in creation order on shared signal":"pass","#217 new effect after dispose works normally":"pass","#222 effect created inside cleanup tracks its own deps":"skip","#229 cleanup reads computed: sees fresh value":"skip","#230 cleanup writes signal inside batch propagates after flush":"skip","#231 untracked inside cleanup: still no tracking":"skip","#233 cleanup write then read of dependent computed: sees new value":"skip","#235 batch inside effect body coalesces writes":"fail","#236 cleanup write to own dep: bounded recursion completes":"skip","#237 cleanup ordering on outer re-run: outer-cleanup before re-run, inner before outer if cascaded":"skip","#238 cleanup ordering on dispose: inner before outer if cascaded":"skip","#241 three-level cleanup ordering: deepest first if cascaded":"skip","#242 effect in computed: old inner cleanup (if any) before new eval":"skip","#243 cleanup ordering correct after prior inner-only re-run":"skip"},"signal-polyfill (TC39)":{"#35 effect runs callback immediately on creation":"pass","#36 effect re-runs when dependency changes":"pass","#38 effect cleanup fn called before each re-run":"pass","#39 effect cleanup fn called on disposal":"pass","#40 effect cleanup runs outside reactive evaluation context":"fail","#42 effect not executed if disposed during pending batch":"skip","#108 effect self-dispose during execution is safe":"pass","#110 double-dispose is safe":"pass","#111 cleanup-triggered dispose prevents re-run":"pass","#141 dispose during execution then continue: no re-run":"pass","#143 destroyed effect not re-scheduled on later updates":"pass","#178 dispose cleanup reads don't leak to parent tracking context":"fail","#214 parent disposes and recreates child: downstream sees correct value":"pass","#201 computed-triggered disposal: effect skipped and no subscription leak":"fail","#202 computed-triggered disposal: sibling effects still notified":"pass","#203 computed disposal with unchanged-value sibling computed":"pass","#216 effects fire in creation order on shared signal":"pass","#217 new effect after dispose works normally":"pass","#222 effect created inside cleanup tracks its own deps":"pass","#229 cleanup reads computed: sees fresh value":"pass","#230 cleanup writes signal inside batch propagates after flush":"skip","#231 untracked inside cleanup: still no tracking":"pass","#233 cleanup write then read of dependent computed: sees new value":"pass","#235 batch inside effect body coalesces writes":"skip","#236 cleanup write to own dep: bounded recursion completes":"pass","#237 cleanup ordering on outer re-run: outer-cleanup before re-run, inner before outer if cascaded":"pass","#238 cleanup ordering on dispose: inner before outer if cascaded":"pass","#241 three-level cleanup ordering: deepest first if cascaded":"pass","#242 effect in computed: old inner cleanup (if any) before new eval":"pass","#243 cleanup ordering correct after prior inner-only re-run":"pass"},"@vue/reactivity 3.5.43":{"#35 effect runs callback immediately on creation":"pass","#36 effect re-runs when dependency changes":"pass","#38 effect cleanup fn called before each re-run":"pass","#39 effect cleanup fn called on disposal":"pass","#40 effect cleanup runs outside reactive evaluation context":"pass","#42 effect not executed if disposed during pending batch":"pass","#108 effect self-dispose during execution is safe":"pass","#110 double-dispose is safe":"pass","#111 cleanup-triggered dispose prevents re-run":"pass","#141 dispose during execution then continue: no re-run":"fail","#143 destroyed effect not re-scheduled on later updates":"pass","#178 dispose cleanup reads don't leak to parent tracking context":"pass","#214 parent disposes and recreates child: downstream sees correct value":"pass","#201 computed-triggered disposal: effect skipped and no subscription leak":"fail","#202 computed-triggered disposal: sibling effects still notified":"pass","#203 computed disposal with unchanged-value sibling computed":"pass","#216 effects fire in creation order on shared signal":"pass","#217 new effect after dispose works normally":"pass","#222 effect created inside cleanup tracks its own deps":"pass","#229 cleanup reads computed: sees fresh value":"pass","#230 cleanup writes signal inside batch propagates after flush":"pass","#231 untracked inside cleanup: still no tracking":"pass","#233 cleanup write then read of dependent computed: sees new value":"pass","#235 batch inside effect body coalesces writes":"pass","#236 cleanup write to own dep: bounded recursion completes":"pass","#237 cleanup ordering on outer re-run: outer-cleanup before re-run, inner before outer if cascaded":"pass","#238 cleanup ordering on dispose: inner before outer if cascaded":"pass","#241 three-level cleanup ordering: deepest first if cascaded":"pass","#242 effect in computed: old inner cleanup (if any) before new eval":"pass","#243 cleanup ordering correct after prior inner-only re-run":"pass"},"@vue/reactivity 3.6.0-rc.9":{"#35 effect runs callback immediately on creation":"pass","#36 effect re-runs when dependency changes":"pass","#38 effect cleanup fn called before each re-run":"pass","#39 effect cleanup fn called on disposal":"pass","#40 effect cleanup runs outside reactive evaluation context":"pass","#42 effect not executed if disposed during pending batch":"fail","#108 effect self-dispose during execution is safe":"pass","#110 double-dispose is safe":"pass","#111 cleanup-triggered dispose prevents re-run":"pass","#141 dispose during execution then continue: no re-run":"pass","#143 destroyed effect not re-scheduled on later updates":"pass","#178 dispose cleanup reads don't leak to parent tracking context":"pass","#214 parent disposes and recreates child: downstream sees correct value":"pass","#201 computed-triggered disposal: effect skipped and no subscription leak":"fail","#202 computed-triggered disposal: sibling effects still notified":"pass","#203 computed disposal with unchanged-value sibling computed":"pass","#216 effects fire in creation order on shared signal":"pass","#217 new effect after dispose works normally":"pass","#222 effect created inside cleanup tracks its own deps":"pass","#229 cleanup reads computed: sees fresh value":"pass","#230 cleanup writes signal inside batch propagates after flush":"pass","#231 untracked inside cleanup: still no tracking":"pass","#233 cleanup write then read of dependent computed: sees new value":"pass","#235 batch inside effect body coalesces writes":"fail","#236 cleanup write to own dep: bounded recursion completes":"pass","#237 cleanup ordering on outer re-run: outer-cleanup before re-run, inner before outer if cascaded":"pass","#238 cleanup ordering on dispose: inner before outer if cascaded":"pass","#241 three-level cleanup ordering: deepest first if cascaded":"pass","#242 effect in computed: old inner cleanup (if any) before new eval":"pass","#243 cleanup ordering correct after prior inner-only re-run":"pass"},"mobx":{"#35 effect runs callback immediately on creation":"pass","#36 effect re-runs when dependency changes":"pass","#38 effect cleanup fn called before each re-run":"skip","#39 effect cleanup fn called on disposal":"skip","#40 effect cleanup runs outside reactive evaluation context":"skip","#42 effect not executed if disposed during pending batch":"fail","#108 effect self-dispose during execution is safe":"pass","#110 double-dispose is safe":"skip","#111 cleanup-triggered dispose prevents re-run":"skip","#141 dispose during execution then continue: no re-run":"pass","#143 destroyed effect not re-scheduled on later updates":"pass","#178 dispose cleanup reads don't leak to parent tracking context":"skip","#214 parent disposes and recreates child: downstream sees correct value":"pass","#201 computed-triggered disposal: effect skipped and no subscription leak":"pass","#202 computed-triggered disposal: sibling effects still notified":"pass","#203 computed disposal with unchanged-value sibling computed":"pass","#216 effects fire in creation order on shared signal":"pass","#217 new effect after dispose works normally":"pass","#222 effect created inside cleanup tracks its own deps":"skip","#229 cleanup reads computed: sees fresh value":"skip","#230 cleanup writes signal inside batch propagates after flush":"skip","#231 untracked inside cleanup: still no tracking":"skip","#233 cleanup write then read of dependent computed: sees new value":"skip","#235 batch inside effect body coalesces writes":"fail","#236 cleanup write to own dep: bounded recursion completes":"skip","#237 cleanup ordering on outer re-run: outer-cleanup before re-run, inner before outer if cascaded":"skip","#238 cleanup ordering on dispose: inner before outer if cascaded":"skip","#241 three-level cleanup ordering: deepest first if cascaded":"skip","#242 effect in computed: old inner cleanup (if any) before new eval":"skip","#243 cleanup ordering correct after prior inner-only re-run":"skip"},"@reatom/core":{"#35 effect runs callback immediately on creation":"pass","#36 effect re-runs when dependency changes":"pass","#38 effect cleanup fn called before each re-run":"pass","#39 effect cleanup fn called on disposal":"pass","#40 effect cleanup runs outside reactive evaluation context":"pass","#42 effect not executed if disposed during pending batch":"pass","#108 effect self-dispose during execution is safe":"pass","#110 double-dispose is safe":"pass","#111 cleanup-triggered dispose prevents re-run":"pass","#141 dispose during execution then continue: no re-run":"pass","#143 destroyed effect not re-scheduled on later updates":"pass","#178 dispose cleanup reads don't leak to parent tracking context":"pass","#214 parent disposes and recreates child: downstream sees correct value":"pass","#201 computed-triggered disposal: effect skipped and no subscription leak":"pass","#202 computed-triggered disposal: sibling effects still notified":"pass","#203 computed disposal with unchanged-value sibling computed":"pass","#216 effects fire in creation order on shared signal":"pass","#217 new effect after dispose works normally":"pass","#222 effect created inside cleanup tracks its own deps":"fail","#229 cleanup reads computed: sees fresh value":"pass","#230 cleanup writes signal inside batch propagates after flush":"pass","#231 untracked inside cleanup: still no tracking":"pass","#233 cleanup write then read of dependent computed: sees new value":"pass","#235 batch inside effect body coalesces writes":"fail","#236 cleanup write to own dep: bounded recursion completes":"pass","#237 cleanup ordering on outer re-run: outer-cleanup before re-run, inner before outer if cascaded":"pass","#238 cleanup ordering on dispose: inner before outer if cascaded":"pass","#241 three-level cleanup ordering: deepest first if cascaded":"pass","#242 effect in computed: old inner cleanup (if any) before new eval":"pass","#243 cleanup ordering correct after prior inner-only re-run":"pass"},"svelte":{"#35 effect runs callback immediately on creation":"pass","#36 effect re-runs when dependency changes":"pass","#38 effect cleanup fn called before each re-run":"pass","#39 effect cleanup fn called on disposal":"pass","#40 effect cleanup runs outside reactive evaluation context":"pass","#42 effect not executed if disposed during pending batch":"skip","#108 effect self-dispose during execution is safe":"pass","#110 double-dispose is safe":"pass","#111 cleanup-triggered dispose prevents re-run":"fail","#141 dispose during execution then continue: no re-run":"pass","#143 destroyed effect not re-scheduled on later updates":"pass","#178 dispose cleanup reads don't leak to parent tracking context":"pass","#214 parent disposes and recreates child: downstream sees correct value":"pass","#201 computed-triggered disposal: effect skipped and no subscription leak":"pass","#202 computed-triggered disposal: sibling effects still notified":"fail","#203 computed disposal with unchanged-value sibling computed":"pass","#216 effects fire in creation order on shared signal":"pass","#217 new effect after dispose works normally":"pass","#222 effect created inside cleanup tracks its own deps":"pass","#229 cleanup reads computed: sees fresh value":"fail","#230 cleanup writes signal inside batch propagates after flush":"skip","#231 untracked inside cleanup: still no tracking":"skip","#233 cleanup write then read of dependent computed: sees new value":"pass","#235 batch inside effect body coalesces writes":"skip","#236 cleanup write to own dep: bounded recursion completes":"pass","#237 cleanup ordering on outer re-run: outer-cleanup before re-run, inner before outer if cascaded":"pass","#238 cleanup ordering on dispose: inner before outer if cascaded":"pass","#241 three-level cleanup ordering: deepest first if cascaded":"pass","#242 effect in computed: old inner cleanup (if any) before new eval":"pass","#243 cleanup ordering correct after prior inner-only re-run":"pass"},"solid-js":{"#35 effect runs callback immediately on creation":"pass","#36 effect re-runs when dependency changes":"pass","#38 effect cleanup fn called before each re-run":"pass","#39 effect cleanup fn called on disposal":"pass","#40 effect cleanup runs outside reactive evaluation context":"pass","#42 effect not executed if disposed during pending batch":"pass","#108 effect self-dispose during execution is safe":"pass","#110 double-dispose is safe":"pass","#111 cleanup-triggered dispose prevents re-run":"fail","#141 dispose during execution then continue: no re-run":"fail","#143 destroyed effect not re-scheduled on later updates":"pass","#178 dispose cleanup reads don't leak to parent tracking context":"pass","#214 parent disposes and recreates child: downstream sees correct value":"pass","#201 computed-triggered disposal: effect skipped and no subscription leak":"pass","#202 computed-triggered disposal: sibling effects still notified":"pass","#203 computed disposal with unchanged-value sibling computed":"pass","#216 effects fire in creation order on shared signal":"fail","#217 new effect after dispose works normally":"pass","#222 effect created inside cleanup tracks its own deps":"pass","#229 cleanup reads computed: sees fresh value":"pass","#230 cleanup writes signal inside batch propagates after flush":"pass","#231 untracked inside cleanup: still no tracking":"pass","#233 cleanup write then read of dependent computed: sees new value":"pass","#235 batch inside effect body coalesces writes":"fail","#236 cleanup write to own dep: bounded recursion completes":"pass","#237 cleanup ordering on outer re-run: outer-cleanup before re-run, inner before outer if cascaded":"pass","#238 cleanup ordering on dispose: inner before outer if cascaded":"pass","#241 three-level cleanup ordering: deepest first if cascaded":"pass","#242 effect in computed: old inner cleanup (if any) before new eval":"pass","#243 cleanup ordering correct after prior inner-only re-run":"pass"},"@solidjs/signals":{"#35 effect runs callback immediately on creation":"timeout","#36 effect re-runs when dependency changes":"timeout","#38 effect cleanup fn called before each re-run":"timeout","#39 effect cleanup fn called on disposal":"timeout","#40 effect cleanup runs outside reactive evaluation context":"timeout","#42 effect not executed if disposed during pending batch":"timeout","#108 effect self-dispose during execution is safe":"timeout","#110 double-dispose is safe":"timeout","#111 cleanup-triggered dispose prevents re-run":"timeout","#141 dispose during execution then continue: no re-run":"timeout","#143 destroyed effect not re-scheduled on later updates":"timeout","#178 dispose cleanup reads don't leak to parent tracking context":"timeout","#214 parent disposes and recreates child: downstream sees correct value":"timeout","#201 computed-triggered disposal: effect skipped and no subscription leak":"timeout","#202 computed-triggered disposal: sibling effects still notified":"timeout","#203 computed disposal with unchanged-value sibling computed":"timeout","#216 effects fire in creation order on shared signal":"timeout","#217 new effect after dispose works normally":"timeout","#222 effect created inside cleanup tracks its own deps":"timeout","#229 cleanup reads computed: sees fresh value":"timeout","#230 cleanup writes signal inside batch propagates after flush":"timeout","#231 untracked inside cleanup: still no tracking":"timeout","#233 cleanup write then read of dependent computed: sees new value":"timeout","#235 batch inside effect body coalesces writes":"timeout","#236 cleanup write to own dep: bounded recursion completes":"timeout","#237 cleanup ordering on outer re-run: outer-cleanup before re-run, inner before outer if cascaded":"timeout","#238 cleanup ordering on dispose: inner before outer if cascaded":"timeout","#241 three-level cleanup ordering: deepest first if cascaded":"timeout","#242 effect in computed: old inner cleanup (if any) before new eval":"timeout","#243 cleanup ordering correct after prior inner-only re-run":"timeout"},"S.js":{"#35 effect runs callback immediately on creation":"pass","#36 effect re-runs when dependency changes":"pass","#38 effect cleanup fn called before each re-run":"pass","#39 effect cleanup fn called on disposal":"pass","#40 effect cleanup runs outside reactive evaluation context":"fail","#42 effect not executed if disposed during pending batch":"fail","#108 effect self-dispose during execution is safe":"pass","#110 double-dispose is safe":"pass","#111 cleanup-triggered dispose prevents re-run":"pass","#141 dispose during execution then continue: no re-run":"pass","#143 destroyed effect not re-scheduled on later updates":"pass","#178 dispose cleanup reads don't leak to parent tracking context":"pass","#214 parent disposes and recreates child: downstream sees correct value":"pass","#201 computed-triggered disposal: effect skipped and no subscription leak":"fail","#202 computed-triggered disposal: sibling effects still notified":"pass","#203 computed disposal with unchanged-value sibling computed":"pass","#216 effects fire in creation order on shared signal":"pass","#217 new effect after dispose works normally":"pass","#222 effect created inside cleanup tracks its own deps":"pass","#229 cleanup reads computed: sees fresh value":"pass","#230 cleanup writes signal inside batch propagates after flush":"fail","#231 untracked inside cleanup: still no tracking":"pass","#233 cleanup write then read of dependent computed: sees new value":"fail","#235 batch inside effect body coalesces writes":"fail","#236 cleanup write to own dep: bounded recursion completes":"pass","#237 cleanup ordering on outer re-run: outer-cleanup before re-run, inner before outer if cascaded":"pass","#238 cleanup ordering on dispose: inner before outer if cascaded":"pass","#241 three-level cleanup ordering: deepest first if cascaded":"pass","#242 effect in computed: old inner cleanup (if any) before new eval":"pass","#243 cleanup ordering correct after prior inner-only re-run":"pass"},"pota":{"#35 effect runs callback immediately on creation":"pass","#36 effect re-runs when dependency changes":"fail","#38 effect cleanup fn called before each re-run":"fail","#39 effect cleanup fn called on disposal":"pass","#40 effect cleanup runs outside reactive evaluation context":"fail","#42 effect not executed if disposed during pending batch":"pass","#108 effect self-dispose during execution is safe":"fail","#110 double-dispose is safe":"pass","#111 cleanup-triggered dispose prevents re-run":"fail","#141 dispose during execution then continue: no re-run":"fail","#143 destroyed effect not re-scheduled on later updates":"pass","#178 dispose cleanup reads don't leak to parent tracking context":"fail","#214 parent disposes and recreates child: downstream sees correct value":"pass","#201 computed-triggered disposal: effect skipped and no subscription leak":"pass","#202 computed-triggered disposal: sibling effects still notified":"fail","#203 computed disposal with unchanged-value sibling computed":"pass","#216 effects fire in creation order on shared signal":"fail","#217 new effect after dispose works normally":"fail","#222 effect created inside cleanup tracks its own deps":"fail","#229 cleanup reads computed: sees fresh value":"fail","#230 cleanup writes signal inside batch propagates after flush":"fail","#231 untracked inside cleanup: still no tracking":"fail","#233 cleanup write then read of dependent computed: sees new value":"fail","#235 batch inside effect body coalesces writes":"fail","#236 cleanup write to own dep: bounded recursion completes":"pass","#237 cleanup ordering on outer re-run: outer-cleanup before re-run, inner before outer if cascaded":"fail","#238 cleanup ordering on dispose: inner before outer if cascaded":"pass","#241 three-level cleanup ordering: deepest first if cascaded":"pass","#242 effect in computed: old inner cleanup (if any) before new eval":"pass","#243 cleanup ordering correct after prior inner-only re-run":"fail"},"@angular/core":{"#35 effect runs callback immediately on creation":"pass","#36 effect re-runs when dependency changes":"pass","#38 effect cleanup fn called before each re-run":"pass","#39 effect cleanup fn called on disposal":"pass","#40 effect cleanup runs outside reactive evaluation context":"fail","#42 effect not executed if disposed during pending batch":"skip","#108 effect self-dispose during execution is safe":"pass","#110 double-dispose is safe":"pass","#111 cleanup-triggered dispose prevents re-run":"fail","#141 dispose during execution then continue: no re-run":"pass","#143 destroyed effect not re-scheduled on later updates":"pass","#178 dispose cleanup reads don't leak to parent tracking context":"fail","#214 parent disposes and recreates child: downstream sees correct value":"pass","#201 computed-triggered disposal: effect skipped and no subscription leak":"fail","#202 computed-triggered disposal: sibling effects still notified":"fail","#203 computed disposal with unchanged-value sibling computed":"pass","#216 effects fire in creation order on shared signal":"pass","#217 new effect after dispose works normally":"pass","#222 effect created inside cleanup tracks its own deps":"pass","#229 cleanup reads computed: sees fresh value":"pass","#230 cleanup writes signal inside batch propagates after flush":"skip","#231 untracked inside cleanup: still no tracking":"pass","#233 cleanup write then read of dependent computed: sees new value":"pass","#235 batch inside effect body coalesces writes":"skip","#236 cleanup write to own dep: bounded recursion completes":"fail","#237 cleanup ordering on outer re-run: outer-cleanup before re-run, inner before outer if cascaded":"pass","#238 cleanup ordering on dispose: inner before outer if cascaded":"pass","#241 three-level cleanup ordering: deepest first if cascaded":"pass","#242 effect in computed: old inner cleanup (if any) before new eval":"pass","#243 cleanup ordering correct after prior inner-only re-run":"pass"},"anod":{"#35 effect runs callback immediately on creation":"pass","#36 effect re-runs when dependency changes":"pass","#38 effect cleanup fn called before each re-run":"pass","#39 effect cleanup fn called on disposal":"pass","#40 effect cleanup runs outside reactive evaluation context":"pass","#42 effect not executed if disposed during pending batch":"pass","#108 effect self-dispose during execution is safe":"pass","#110 double-dispose is safe":"pass","#111 cleanup-triggered dispose prevents re-run":"pass","#141 dispose during execution then continue: no re-run":"pass","#143 destroyed effect not re-scheduled on later updates":"pass","#178 dispose cleanup reads don't leak to parent tracking context":"pass","#214 parent disposes and recreates child: downstream sees correct value":"pass","#201 computed-triggered disposal: effect skipped and no subscription leak":"fail","#202 computed-triggered disposal: sibling effects still notified":"pass","#203 computed disposal with unchanged-value sibling computed":"pass","#216 effects fire in creation order on shared signal":"pass","#217 new effect after dispose works normally":"pass","#222 effect created inside cleanup tracks its own deps":"pass","#229 cleanup reads computed: sees fresh value":"pass","#230 cleanup writes signal inside batch propagates after flush":"pass","#231 untracked inside cleanup: still no tracking":"pass","#233 cleanup write then read of dependent computed: sees new value":"fail","#235 batch inside effect body coalesces writes":"fail","#236 cleanup write to own dep: bounded recursion completes":"pass","#237 cleanup ordering on outer re-run: outer-cleanup before re-run, inner before outer if cascaded":"fail","#238 cleanup ordering on dispose: inner before outer if cascaded":"fail","#241 three-level cleanup ordering: deepest first if cascaded":"fail","#242 effect in computed: old inner cleanup (if any) before new eval":"pass","#243 cleanup ordering correct after prior inner-only re-run":"fail"}}},{"section":"Nested Effects & Ordering","testNames":["#43 outer effect runs before inner effect","#45 untracked inner effect does not subscribe to deps","#46 duplicate subscribers don't cause duplicate notifications","#47 effect recursion handled on first execution","#163 parent effect not triggered by child's own signal","#164 inner autorun created inside outer tracks own deps","#170 inner effect not triggered when computed dep resolves unchanged","#209 three-level nested effect: cascading disposal","#210 multiple inner effects all cleaned when outer re-runs","#48 nested effects depend on state of outer effects","#226 outer keeps responding to own deps after inner re-runs","#227 outer responds after one of multiple sibling inners re-runs","#228 outer responds after inner re-runs multiple times"],"results":{"Raph Next Signals":{"#43 outer effect runs before inner effect":"pass","#45 untracked inner effect does not subscribe to deps":"pass","#46 duplicate subscribers don't cause duplicate notifications":"pass","#47 effect recursion handled on first execution":"pass","#163 parent effect not triggered by child's own signal":"pass","#164 inner autorun created inside outer tracks own deps":"pass","#170 inner effect not triggered when computed dep resolves unchanged":"pass","#209 three-level nested effect: cascading disposal":"pass","#210 multiple inner effects all cleaned when outer re-runs":"pass","#48 nested effects depend on state of outer effects":"pass","#226 outer keeps responding to own deps after inner re-runs":"pass","#227 outer responds after one of multiple sibling inners re-runs":"pass","#228 outer responds after inner re-runs multiple times":"pass"},"reflex":{"#43 outer effect runs before inner effect":"timeout","#45 untracked inner effect does not subscribe to deps":"timeout","#46 duplicate subscribers don't cause duplicate notifications":"timeout","#47 effect recursion handled on first execution":"timeout","#163 parent effect not triggered by child's own signal":"timeout","#164 inner autorun created inside outer tracks own deps":"timeout","#170 inner effect not triggered when computed dep resolves unchanged":"timeout","#209 three-level nested effect: cascading disposal":"timeout","#210 multiple inner effects all cleaned when outer re-runs":"timeout","#48 nested effects depend on state of outer effects":"timeout","#226 outer keeps responding to own deps after inner re-runs":"timeout","#227 outer responds after one of multiple sibling inners re-runs":"timeout","#228 outer responds after inner re-runs multiple times":"timeout"},"alien-signals":{"#43 outer effect runs before inner effect":"pass","#45 untracked inner effect does not subscribe to deps":"pass","#46 duplicate subscribers don't cause duplicate notifications":"pass","#47 effect recursion handled on first execution":"pass","#163 parent effect not triggered by child's own signal":"pass","#164 inner autorun created inside outer tracks own deps":"pass","#170 inner effect not triggered when computed dep resolves unchanged":"pass","#209 three-level nested effect: cascading disposal":"pass","#210 multiple inner effects all cleaned when outer re-runs":"pass","#48 nested effects depend on state of outer effects":"pass","#226 outer keeps responding to own deps after inner re-runs":"pass","#227 outer responds after one of multiple sibling inners re-runs":"pass","#228 outer responds after inner re-runs multiple times":"pass"},"@preact/signals-core":{"#43 outer effect runs before inner effect":"pass","#45 untracked inner effect does not subscribe to deps":"pass","#46 duplicate subscribers don't cause duplicate notifications":"pass","#47 effect recursion handled on first execution":"pass","#163 parent effect not triggered by child's own signal":"pass","#164 inner autorun created inside outer tracks own deps":"pass","#170 inner effect not triggered when computed dep resolves unchanged":"pass","#209 three-level nested effect: cascading disposal":"fail","#210 multiple inner effects all cleaned when outer re-runs":"fail","#48 nested effects depend on state of outer effects":"pass","#226 outer keeps responding to own deps after inner re-runs":"pass","#227 outer responds after one of multiple sibling inners re-runs":"pass","#228 outer responds after inner re-runs multiple times":"pass"},"@reactively/core":{"#43 outer effect runs before inner effect":"fail","#45 untracked inner effect does not subscribe to deps":"skip","#46 duplicate subscribers don't cause duplicate notifications":"pass","#47 effect recursion handled on first execution":"pass","#163 parent effect not triggered by child's own signal":"fail","#164 inner autorun created inside outer tracks own deps":"fail","#170 inner effect not triggered when computed dep resolves unchanged":"fail","#209 three-level nested effect: cascading disposal":"fail","#210 multiple inner effects all cleaned when outer re-runs":"fail","#48 nested effects depend on state of outer effects":"fail","#226 outer keeps responding to own deps after inner re-runs":"fail","#227 outer responds after one of multiple sibling inners re-runs":"fail","#228 outer responds after inner re-runs multiple times":"fail"},"tansu":{"#43 outer effect runs before inner effect":"pass","#45 untracked inner effect does not subscribe to deps":"pass","#46 duplicate subscribers don't cause duplicate notifications":"pass","#47 effect recursion handled on first execution":"pass","#163 parent effect not triggered by child's own signal":"pass","#164 inner autorun created inside outer tracks own deps":"pass","#170 inner effect not triggered when computed dep resolves unchanged":"pass","#209 three-level nested effect: cascading disposal":"fail","#210 multiple inner effects all cleaned when outer re-runs":"fail","#48 nested effects depend on state of outer effects":"pass","#226 outer keeps responding to own deps after inner re-runs":"pass","#227 outer responds after one of multiple sibling inners re-runs":"pass","#228 outer responds after inner re-runs multiple times":"pass"},"signal-polyfill (TC39)":{"#43 outer effect runs before inner effect":"pass","#45 untracked inner effect does not subscribe to deps":"pass","#46 duplicate subscribers don't cause duplicate notifications":"pass","#47 effect recursion handled on first execution":"pass","#163 parent effect not triggered by child's own signal":"pass","#164 inner autorun created inside outer tracks own deps":"pass","#170 inner effect not triggered when computed dep resolves unchanged":"pass","#209 three-level nested effect: cascading disposal":"fail","#210 multiple inner effects all cleaned when outer re-runs":"fail","#48 nested effects depend on state of outer effects":"pass","#226 outer keeps responding to own deps after inner re-runs":"pass","#227 outer responds after one of multiple sibling inners re-runs":"pass","#228 outer responds after inner re-runs multiple times":"pass"},"@vue/reactivity 3.5.43":{"#43 outer effect runs before inner effect":"pass","#45 untracked inner effect does not subscribe to deps":"pass","#46 duplicate subscribers don't cause duplicate notifications":"pass","#47 effect recursion handled on first execution":"pass","#163 parent effect not triggered by child's own signal":"pass","#164 inner autorun created inside outer tracks own deps":"pass","#170 inner effect not triggered when computed dep resolves unchanged":"pass","#209 three-level nested effect: cascading disposal":"fail","#210 multiple inner effects all cleaned when outer re-runs":"fail","#48 nested effects depend on state of outer effects":"pass","#226 outer keeps responding to own deps after inner re-runs":"pass","#227 outer responds after one of multiple sibling inners re-runs":"pass","#228 outer responds after inner re-runs multiple times":"pass"},"@vue/reactivity 3.6.0-rc.9":{"#43 outer effect runs before inner effect":"pass","#45 untracked inner effect does not subscribe to deps":"pass","#46 duplicate subscribers don't cause duplicate notifications":"pass","#47 effect recursion handled on first execution":"pass","#163 parent effect not triggered by child's own signal":"pass","#164 inner autorun created inside outer tracks own deps":"pass","#170 inner effect not triggered when computed dep resolves unchanged":"pass","#209 three-level nested effect: cascading disposal":"fail","#210 multiple inner effects all cleaned when outer re-runs":"fail","#48 nested effects depend on state of outer effects":"pass","#226 outer keeps responding to own deps after inner re-runs":"pass","#227 outer responds after one of multiple sibling inners re-runs":"pass","#228 outer responds after inner re-runs multiple times":"pass"},"mobx":{"#43 outer effect runs before inner effect":"pass","#45 untracked inner effect does not subscribe to deps":"pass","#46 duplicate subscribers don't cause duplicate notifications":"pass","#47 effect recursion handled on first execution":"pass","#163 parent effect not triggered by child's own signal":"pass","#164 inner autorun created inside outer tracks own deps":"pass","#170 inner effect not triggered when computed dep resolves unchanged":"pass","#209 three-level nested effect: cascading disposal":"fail","#210 multiple inner effects all cleaned when outer re-runs":"fail","#48 nested effects depend on state of outer effects":"pass","#226 outer keeps responding to own deps after inner re-runs":"pass","#227 outer responds after one of multiple sibling inners re-runs":"pass","#228 outer responds after inner re-runs multiple times":"pass"},"@reatom/core":{"#43 outer effect runs before inner effect":"pass","#45 untracked inner effect does not subscribe to deps":"pass","#46 duplicate subscribers don't cause duplicate notifications":"pass","#47 effect recursion handled on first execution":"pass","#163 parent effect not triggered by child's own signal":"pass","#164 inner autorun created inside outer tracks own deps":"pass","#170 inner effect not triggered when computed dep resolves unchanged":"pass","#209 three-level nested effect: cascading disposal":"pass","#210 multiple inner effects all cleaned when outer re-runs":"pass","#48 nested effects depend on state of outer effects":"pass","#226 outer keeps responding to own deps after inner re-runs":"pass","#227 outer responds after one of multiple sibling inners re-runs":"pass","#228 outer responds after inner re-runs multiple times":"pass"},"svelte":{"#43 outer effect runs before inner effect":"pass","#45 untracked inner effect does not subscribe to deps":"skip","#46 duplicate subscribers don't cause duplicate notifications":"pass","#47 effect recursion handled on first execution":"fail","#163 parent effect not triggered by child's own signal":"fail","#164 inner autorun created inside outer tracks own deps":"pass","#170 inner effect not triggered when computed dep resolves unchanged":"pass","#209 three-level nested effect: cascading disposal":"fail","#210 multiple inner effects all cleaned when outer re-runs":"fail","#48 nested effects depend on state of outer effects":"pass","#226 outer keeps responding to own deps after inner re-runs":"pass","#227 outer responds after one of multiple sibling inners re-runs":"pass","#228 outer responds after inner re-runs multiple times":"pass"},"solid-js":{"#43 outer effect runs before inner effect":"pass","#45 untracked inner effect does not subscribe to deps":"pass","#46 duplicate subscribers don't cause duplicate notifications":"pass","#47 effect recursion handled on first execution":"pass","#163 parent effect not triggered by child's own signal":"pass","#164 inner autorun created inside outer tracks own deps":"pass","#170 inner effect not triggered when computed dep resolves unchanged":"pass","#209 three-level nested effect: cascading disposal":"fail","#210 multiple inner effects all cleaned when outer re-runs":"fail","#48 nested effects depend on state of outer effects":"pass","#226 outer keeps responding to own deps after inner re-runs":"pass","#227 outer responds after one of multiple sibling inners re-runs":"pass","#228 outer responds after inner re-runs multiple times":"pass"},"@solidjs/signals":{"#43 outer effect runs before inner effect":"timeout","#45 untracked inner effect does not subscribe to deps":"timeout","#46 duplicate subscribers don't cause duplicate notifications":"timeout","#47 effect recursion handled on first execution":"timeout","#163 parent effect not triggered by child's own signal":"timeout","#164 inner autorun created inside outer tracks own deps":"timeout","#170 inner effect not triggered when computed dep resolves unchanged":"timeout","#209 three-level nested effect: cascading disposal":"timeout","#210 multiple inner effects all cleaned when outer re-runs":"timeout","#48 nested effects depend on state of outer effects":"timeout","#226 outer keeps responding to own deps after inner re-runs":"timeout","#227 outer responds after one of multiple sibling inners re-runs":"timeout","#228 outer responds after inner re-runs multiple times":"timeout"},"S.js":{"#43 outer effect runs before inner effect":"pass","#45 untracked inner effect does not subscribe to deps":"pass","#46 duplicate subscribers don't cause duplicate notifications":"pass","#47 effect recursion handled on first execution":"pass","#163 parent effect not triggered by child's own signal":"pass","#164 inner autorun created inside outer tracks own deps":"pass","#170 inner effect not triggered when computed dep resolves unchanged":"fail","#209 three-level nested effect: cascading disposal":"fail","#210 multiple inner effects all cleaned when outer re-runs":"fail","#48 nested effects depend on state of outer effects":"pass","#226 outer keeps responding to own deps after inner re-runs":"pass","#227 outer responds after one of multiple sibling inners re-runs":"pass","#228 outer responds after inner re-runs multiple times":"pass"},"pota":{"#43 outer effect runs before inner effect":"pass","#45 untracked inner effect does not subscribe to deps":"pass","#46 duplicate subscribers don't cause duplicate notifications":"fail","#47 effect recursion handled on first execution":"pass","#163 parent effect not triggered by child's own signal":"fail","#164 inner autorun created inside outer tracks own deps":"fail","#170 inner effect not triggered when computed dep resolves unchanged":"pass","#209 three-level nested effect: cascading disposal":"pass","#210 multiple inner effects all cleaned when outer re-runs":"fail","#48 nested effects depend on state of outer effects":"pass","#226 outer keeps responding to own deps after inner re-runs":"fail","#227 outer responds after one of multiple sibling inners re-runs":"fail","#228 outer responds after inner re-runs multiple times":"fail"},"@angular/core":{"#43 outer effect runs before inner effect":"pass","#45 untracked inner effect does not subscribe to deps":"pass","#46 duplicate subscribers don't cause duplicate notifications":"pass","#47 effect recursion handled on first execution":"pass","#163 parent effect not triggered by child's own signal":"pass","#164 inner autorun created inside outer tracks own deps":"pass","#170 inner effect not triggered when computed dep resolves unchanged":"pass","#209 three-level nested effect: cascading disposal":"fail","#210 multiple inner effects all cleaned when outer re-runs":"fail","#48 nested effects depend on state of outer effects":"pass","#226 outer keeps responding to own deps after inner re-runs":"pass","#227 outer responds after one of multiple sibling inners re-runs":"pass","#228 outer responds after inner re-runs multiple times":"pass"},"anod":{"#43 outer effect runs before inner effect":"pass","#45 untracked inner effect does not subscribe to deps":"pass","#46 duplicate subscribers don't cause duplicate notifications":"pass","#47 effect recursion handled on first execution":"pass","#163 parent effect not triggered by child's own signal":"pass","#164 inner autorun created inside outer tracks own deps":"pass","#170 inner effect not triggered when computed dep resolves unchanged":"pass","#209 three-level nested effect: cascading disposal":"pass","#210 multiple inner effects all cleaned when outer re-runs":"pass","#48 nested effects depend on state of outer effects":"pass","#226 outer keeps responding to own deps after inner re-runs":"pass","#227 outer responds after one of multiple sibling inners re-runs":"pass","#228 outer responds after inner re-runs multiple times":"pass"}}},{"section":"Inner Write","testNames":["#50 effect writes back to signal","#51 effect cleanup modifying dependency does not retrigger","#52 computed writing to signal","#53 inner write: only final value observed","#54 inner mutations propagate until changes settle","#56 effect re-scheduled after reading from derived then writing","#112 computed side-effect doesn't affect sibling computeds","#114 inner write final value unchanged: no downstream notification","#133 listener writes back: second listener skipped if no net change","#134 listener writes back: second listener gets final value","#135 chained computed inner write: downstream only sees settled","#136 computed inner write unchanged: no downstream notification","#137 computed inner write changed: downstream notified","#138 independent computeds sharing source, one inner-writes","#172 computed writing to own dep: never caches","#180 inner write through computed chain resets signal","#179 computed self-increment: intra-run read-after-write values correct","#113 inner write convergence: converges or cycle-detects","#57 computed side effect triggers downstream","#181 computed writes multiple signals: downstream sees consistent pair","#182 computed side effect + batch: writes visible after flush","#183 branch switch stops computed side effect","#184 nested computeds: outer reads inner, both have side effects","#185 computed side effect write visible despite later throw","#186 effect observes computed side-channel write during propagation","#213 inner write during initial effect execution doesn't block future propagation","#212 inner write through computed doesn't block future propagation","#224 effect sees fresh computed after sibling's mid-flush inner write","#225 mid-flush fan-in: e3 sees both sibling effects' inner writes"],"results":{"Raph Next Signals":{"#50 effect writes back to signal":"pass","#51 effect cleanup modifying dependency does not retrigger":"pass","#52 computed writing to signal":"pass","#53 inner write: only final value observed":"pass","#54 inner mutations propagate until changes settle":"pass","#56 effect re-scheduled after reading from derived then writing":"pass","#112 computed side-effect doesn't affect sibling computeds":"pass","#114 inner write final value unchanged: no downstream notification":"pass","#133 listener writes back: second listener skipped if no net change":"pass","#134 listener writes back: second listener gets final value":"pass","#135 chained computed inner write: downstream only sees settled":"pass","#136 computed inner write unchanged: no downstream notification":"pass","#137 computed inner write changed: downstream notified":"pass","#138 independent computeds sharing source, one inner-writes":"pass","#172 computed writing to own dep: never caches":"pass","#180 inner write through computed chain resets signal":"pass","#179 computed self-increment: intra-run read-after-write values correct":"pass","#113 inner write convergence: converges or cycle-detects":"pass","#57 computed side effect triggers downstream":"pass","#181 computed writes multiple signals: downstream sees consistent pair":"pass","#182 computed side effect + batch: writes visible after flush":"pass","#183 branch switch stops computed side effect":"pass","#184 nested computeds: outer reads inner, both have side effects":"pass","#185 computed side effect write visible despite later throw":"pass","#186 effect observes computed side-channel write during propagation":"pass","#213 inner write during initial effect execution doesn't block future propagation":"pass","#212 inner write through computed doesn't block future propagation":"pass","#224 effect sees fresh computed after sibling's mid-flush inner write":"pass","#225 mid-flush fan-in: e3 sees both sibling effects' inner writes":"pass"},"reflex":{"#50 effect writes back to signal":"timeout","#51 effect cleanup modifying dependency does not retrigger":"timeout","#52 computed writing to signal":"timeout","#53 inner write: only final value observed":"timeout","#54 inner mutations propagate until changes settle":"timeout","#56 effect re-scheduled after reading from derived then writing":"timeout","#112 computed side-effect doesn't affect sibling computeds":"timeout","#114 inner write final value unchanged: no downstream notification":"timeout","#133 listener writes back: second listener skipped if no net change":"timeout","#134 listener writes back: second listener gets final value":"timeout","#135 chained computed inner write: downstream only sees settled":"timeout","#136 computed inner write unchanged: no downstream notification":"timeout","#137 computed inner write changed: downstream notified":"timeout","#138 independent computeds sharing source, one inner-writes":"timeout","#172 computed writing to own dep: never caches":"timeout","#180 inner write through computed chain resets signal":"timeout","#179 computed self-increment: intra-run read-after-write values correct":"timeout","#113 inner write convergence: converges or cycle-detects":"timeout","#57 computed side effect triggers downstream":"timeout","#181 computed writes multiple signals: downstream sees consistent pair":"timeout","#182 computed side effect + batch: writes visible after flush":"timeout","#183 branch switch stops computed side effect":"timeout","#184 nested computeds: outer reads inner, both have side effects":"timeout","#185 computed side effect write visible despite later throw":"timeout","#186 effect observes computed side-channel write during propagation":"timeout","#213 inner write during initial effect execution doesn't block future propagation":"timeout","#212 inner write through computed doesn't block future propagation":"timeout","#224 effect sees fresh computed after sibling's mid-flush inner write":"timeout","#225 mid-flush fan-in: e3 sees both sibling effects' inner writes":"timeout"},"alien-signals":{"#50 effect writes back to signal":"pass","#51 effect cleanup modifying dependency does not retrigger":"pass","#52 computed writing to signal":"pass","#53 inner write: only final value observed":"pass","#54 inner mutations propagate until changes settle":"pass","#56 effect re-scheduled after reading from derived then writing":"pass","#112 computed side-effect doesn't affect sibling computeds":"pass","#114 inner write final value unchanged: no downstream notification":"pass","#133 listener writes back: second listener skipped if no net change":"pass","#134 listener writes back: second listener gets final value":"pass","#135 chained computed inner write: downstream only sees settled":"pass","#136 computed inner write unchanged: no downstream notification":"pass","#137 computed inner write changed: downstream notified":"pass","#138 independent computeds sharing source, one inner-writes":"pass","#172 computed writing to own dep: never caches":"pass","#180 inner write through computed chain resets signal":"pass","#179 computed self-increment: intra-run read-after-write values correct":"pass","#113 inner write convergence: converges or cycle-detects":"pass","#57 computed side effect triggers downstream":"pass","#181 computed writes multiple signals: downstream sees consistent pair":"pass","#182 computed side effect + batch: writes visible after flush":"pass","#183 branch switch stops computed side effect":"pass","#184 nested computeds: outer reads inner, both have side effects":"pass","#185 computed side effect write visible despite later throw":"pass","#186 effect observes computed side-channel write during propagation":"pass","#213 inner write during initial effect execution doesn't block future propagation":"pass","#212 inner write through computed doesn't block future propagation":"pass","#224 effect sees fresh computed after sibling's mid-flush inner write":"pass","#225 mid-flush fan-in: e3 sees both sibling effects' inner writes":"pass"},"@preact/signals-core":{"#50 effect writes back to signal":"pass","#51 effect cleanup modifying dependency does not retrigger":"pass","#52 computed writing to signal":"pass","#53 inner write: only final value observed":"pass","#54 inner mutations propagate until changes settle":"pass","#56 effect re-scheduled after reading from derived then writing":"pass","#112 computed side-effect doesn't affect sibling computeds":"pass","#114 inner write final value unchanged: no downstream notification":"pass","#133 listener writes back: second listener skipped if no net change":"pass","#134 listener writes back: second listener gets final value":"pass","#135 chained computed inner write: downstream only sees settled":"pass","#136 computed inner write unchanged: no downstream notification":"pass","#137 computed inner write changed: downstream notified":"pass","#138 independent computeds sharing source, one inner-writes":"pass","#172 computed writing to own dep: never caches":"pass","#180 inner write through computed chain resets signal":"pass","#179 computed self-increment: intra-run read-after-write values correct":"pass","#113 inner write convergence: converges or cycle-detects":"pass","#57 computed side effect triggers downstream":"pass","#181 computed writes multiple signals: downstream sees consistent pair":"pass","#182 computed side effect + batch: writes visible after flush":"pass","#183 branch switch stops computed side effect":"pass","#184 nested computeds: outer reads inner, both have side effects":"pass","#185 computed side effect write visible despite later throw":"pass","#186 effect observes computed side-channel write during propagation":"pass","#213 inner write during initial effect execution doesn't block future propagation":"pass","#212 inner write through computed doesn't block future propagation":"pass","#224 effect sees fresh computed after sibling's mid-flush inner write":"pass","#225 mid-flush fan-in: e3 sees both sibling effects' inner writes":"pass"},"@reactively/core":{"#50 effect writes back to signal":"fail","#51 effect cleanup modifying dependency does not retrigger":"skip","#52 computed writing to signal":"pass","#53 inner write: only final value observed":"pass","#54 inner mutations propagate until changes settle":"pass","#56 effect re-scheduled after reading from derived then writing":"pass","#112 computed side-effect doesn't affect sibling computeds":"pass","#114 inner write final value unchanged: no downstream notification":"pass","#133 listener writes back: second listener skipped if no net change":"pass","#134 listener writes back: second listener gets final value":"pass","#135 chained computed inner write: downstream only sees settled":"pass","#136 computed inner write unchanged: no downstream notification":"pass","#137 computed inner write changed: downstream notified":"pass","#138 independent computeds sharing source, one inner-writes":"pass","#172 computed writing to own dep: never caches":"pass","#180 inner write through computed chain resets signal":"pass","#179 computed self-increment: intra-run read-after-write values correct":"fail","#113 inner write convergence: converges or cycle-detects":"pass","#57 computed side effect triggers downstream":"pass","#181 computed writes multiple signals: downstream sees consistent pair":"pass","#182 computed side effect + batch: writes visible after flush":"skip","#183 branch switch stops computed side effect":"pass","#184 nested computeds: outer reads inner, both have side effects":"pass","#185 computed side effect write visible despite later throw":"pass","#186 effect observes computed side-channel write during propagation":"fail","#213 inner write during initial effect execution doesn't block future propagation":"pass","#212 inner write through computed doesn't block future propagation":"pass","#224 effect sees fresh computed after sibling's mid-flush inner write":"fail","#225 mid-flush fan-in: e3 sees both sibling effects' inner writes":"fail"},"tansu":{"#50 effect writes back to signal":"pass","#51 effect cleanup modifying dependency does not retrigger":"skip","#52 computed writing to signal":"pass","#53 inner write: only final value observed":"pass","#54 inner mutations propagate until changes settle":"pass","#56 effect re-scheduled after reading from derived then writing":"pass","#112 computed side-effect doesn't affect sibling computeds":"pass","#114 inner write final value unchanged: no downstream notification":"pass","#133 listener writes back: second listener skipped if no net change":"pass","#134 listener writes back: second listener gets final value":"pass","#135 chained computed inner write: downstream only sees settled":"pass","#136 computed inner write unchanged: no downstream notification":"pass","#137 computed inner write changed: downstream notified":"pass","#138 independent computeds sharing source, one inner-writes":"pass","#172 computed writing to own dep: never caches":"pass","#180 inner write through computed chain resets signal":"pass","#179 computed self-increment: intra-run read-after-write values correct":"fail","#113 inner write convergence: converges or cycle-detects":"pass","#57 computed side effect triggers downstream":"pass","#181 computed writes multiple signals: downstream sees consistent pair":"pass","#182 computed side effect + batch: writes visible after flush":"pass","#183 branch switch stops computed side effect":"pass","#184 nested computeds: outer reads inner, both have side effects":"pass","#185 computed side effect write visible despite later throw":"pass","#186 effect observes computed side-channel write during propagation":"pass","#213 inner write during initial effect execution doesn't block future propagation":"pass","#212 inner write through computed doesn't block future propagation":"pass","#224 effect sees fresh computed after sibling's mid-flush inner write":"pass","#225 mid-flush fan-in: e3 sees both sibling effects' inner writes":"pass"},"signal-polyfill (TC39)":{"#50 effect writes back to signal":"pass","#51 effect cleanup modifying dependency does not retrigger":"pass","#52 computed writing to signal":"pass","#53 inner write: only final value observed":"pass","#54 inner mutations propagate until changes settle":"pass","#56 effect re-scheduled after reading from derived then writing":"pass","#112 computed side-effect doesn't affect sibling computeds":"pass","#114 inner write final value unchanged: no downstream notification":"pass","#133 listener writes back: second listener skipped if no net change":"pass","#134 listener writes back: second listener gets final value":"pass","#135 chained computed inner write: downstream only sees settled":"pass","#136 computed inner write unchanged: no downstream notification":"pass","#137 computed inner write changed: downstream notified":"pass","#138 independent computeds sharing source, one inner-writes":"pass","#172 computed writing to own dep: never caches":"pass","#180 inner write through computed chain resets signal":"pass","#179 computed self-increment: intra-run read-after-write values correct":"fail","#113 inner write convergence: converges or cycle-detects":"pass","#57 computed side effect triggers downstream":"pass","#181 computed writes multiple signals: downstream sees consistent pair":"pass","#182 computed side effect + batch: writes visible after flush":"skip","#183 branch switch stops computed side effect":"pass","#184 nested computeds: outer reads inner, both have side effects":"pass","#185 computed side effect write visible despite later throw":"pass","#186 effect observes computed side-channel write during propagation":"pass","#213 inner write during initial effect execution doesn't block future propagation":"fail","#212 inner write through computed doesn't block future propagation":"fail","#224 effect sees fresh computed after sibling's mid-flush inner write":"pass","#225 mid-flush fan-in: e3 sees both sibling effects' inner writes":"pass"},"@vue/reactivity 3.5.43":{"#50 effect writes back to signal":"pass","#51 effect cleanup modifying dependency does not retrigger":"pass","#52 computed writing to signal":"pass","#53 inner write: only final value observed":"pass","#54 inner mutations propagate until changes settle":"pass","#56 effect re-scheduled after reading from derived then writing":"pass","#112 computed side-effect doesn't affect sibling computeds":"pass","#114 inner write final value unchanged: no downstream notification":"pass","#133 listener writes back: second listener skipped if no net change":"pass","#134 listener writes back: second listener gets final value":"pass","#135 chained computed inner write: downstream only sees settled":"pass","#136 computed inner write unchanged: no downstream notification":"pass","#137 computed inner write changed: downstream notified":"pass","#138 independent computeds sharing source, one inner-writes":"pass","#172 computed writing to own dep: never caches":"pass","#180 inner write through computed chain resets signal":"pass","#179 computed self-increment: intra-run read-after-write values correct":"pass","#113 inner write convergence: converges or cycle-detects":"pass","#57 computed side effect triggers downstream":"pass","#181 computed writes multiple signals: downstream sees consistent pair":"pass","#182 computed side effect + batch: writes visible after flush":"pass","#183 branch switch stops computed side effect":"pass","#184 nested computeds: outer reads inner, both have side effects":"pass","#185 computed side effect write visible despite later throw":"pass","#186 effect observes computed side-channel write during propagation":"pass","#213 inner write during initial effect execution doesn't block future propagation":"pass","#212 inner write through computed doesn't block future propagation":"pass","#224 effect sees fresh computed after sibling's mid-flush inner write":"pass","#225 mid-flush fan-in: e3 sees both sibling effects' inner writes":"pass"},"@vue/reactivity 3.6.0-rc.9":{"#50 effect writes back to signal":"pass","#51 effect cleanup modifying dependency does not retrigger":"pass","#52 computed writing to signal":"pass","#53 inner write: only final value observed":"pass","#54 inner mutations propagate until changes settle":"pass","#56 effect re-scheduled after reading from derived then writing":"pass","#112 computed side-effect doesn't affect sibling computeds":"pass","#114 inner write final value unchanged: no downstream notification":"pass","#133 listener writes back: second listener skipped if no net change":"pass","#134 listener writes back: second listener gets final value":"pass","#135 chained computed inner write: downstream only sees settled":"pass","#136 computed inner write unchanged: no downstream notification":"pass","#137 computed inner write changed: downstream notified":"pass","#138 independent computeds sharing source, one inner-writes":"pass","#172 computed writing to own dep: never caches":"pass","#180 inner write through computed chain resets signal":"pass","#179 computed self-increment: intra-run read-after-write values correct":"pass","#113 inner write convergence: converges or cycle-detects":"pass","#57 computed side effect triggers downstream":"pass","#181 computed writes multiple signals: downstream sees consistent pair":"pass","#182 computed side effect + batch: writes visible after flush":"pass","#183 branch switch stops computed side effect":"pass","#184 nested computeds: outer reads inner, both have side effects":"pass","#185 computed side effect write visible despite later throw":"pass","#186 effect observes computed side-channel write during propagation":"pass","#213 inner write during initial effect execution doesn't block future propagation":"pass","#212 inner write through computed doesn't block future propagation":"pass","#224 effect sees fresh computed after sibling's mid-flush inner write":"pass","#225 mid-flush fan-in: e3 sees both sibling effects' inner writes":"pass"},"mobx":{"#50 effect writes back to signal":"pass","#51 effect cleanup modifying dependency does not retrigger":"skip","#52 computed writing to signal":"pass","#53 inner write: only final value observed":"pass","#54 inner mutations propagate until changes settle":"pass","#56 effect re-scheduled after reading from derived then writing":"pass","#112 computed side-effect doesn't affect sibling computeds":"pass","#114 inner write final value unchanged: no downstream notification":"pass","#133 listener writes back: second listener skipped if no net change":"pass","#134 listener writes back: second listener gets final value":"pass","#135 chained computed inner write: downstream only sees settled":"pass","#136 computed inner write unchanged: no downstream notification":"pass","#137 computed inner write changed: downstream notified":"pass","#138 independent computeds sharing source, one inner-writes":"pass","#172 computed writing to own dep: never caches":"pass","#180 inner write through computed chain resets signal":"pass","#179 computed self-increment: intra-run read-after-write values correct":"pass","#113 inner write convergence: converges or cycle-detects":"pass","#57 computed side effect triggers downstream":"pass","#181 computed writes multiple signals: downstream sees consistent pair":"pass","#182 computed side effect + batch: writes visible after flush":"fail","#183 branch switch stops computed side effect":"pass","#184 nested computeds: outer reads inner, both have side effects":"pass","#185 computed side effect write visible despite later throw":"pass","#186 effect observes computed side-channel write during propagation":"pass","#213 inner write during initial effect execution doesn't block future propagation":"pass","#212 inner write through computed doesn't block future propagation":"pass","#224 effect sees fresh computed after sibling's mid-flush inner write":"pass","#225 mid-flush fan-in: e3 sees both sibling effects' inner writes":"pass"},"@reatom/core":{"#50 effect writes back to signal":"pass","#51 effect cleanup modifying dependency does not retrigger":"pass","#52 computed writing to signal":"pass","#53 inner write: only final value observed":"pass","#54 inner mutations propagate until changes settle":"pass","#56 effect re-scheduled after reading from derived then writing":"pass","#112 computed side-effect doesn't affect sibling computeds":"pass","#114 inner write final value unchanged: no downstream notification":"pass","#133 listener writes back: second listener skipped if no net change":"pass","#134 listener writes back: second listener gets final value":"pass","#135 chained computed inner write: downstream only sees settled":"pass","#136 computed inner write unchanged: no downstream notification":"pass","#137 computed inner write changed: downstream notified":"pass","#138 independent computeds sharing source, one inner-writes":"pass","#172 computed writing to own dep: never caches":"pass","#180 inner write through computed chain resets signal":"pass","#179 computed self-increment: intra-run read-after-write values correct":"fail","#113 inner write convergence: converges or cycle-detects":"pass","#57 computed side effect triggers downstream":"pass","#181 computed writes multiple signals: downstream sees consistent pair":"pass","#182 computed side effect + batch: writes visible after flush":"pass","#183 branch switch stops computed side effect":"pass","#184 nested computeds: outer reads inner, both have side effects":"pass","#185 computed side effect write visible despite later throw":"pass","#186 effect observes computed side-channel write during propagation":"pass","#213 inner write during initial effect execution doesn't block future propagation":"pass","#212 inner write through computed doesn't block future propagation":"pass","#224 effect sees fresh computed after sibling's mid-flush inner write":"pass","#225 mid-flush fan-in: e3 sees both sibling effects' inner writes":"pass"},"svelte":{"#50 effect writes back to signal":"pass","#51 effect cleanup modifying dependency does not retrigger":"pass","#52 computed writing to signal":"pass","#53 inner write: only final value observed":"pass","#54 inner mutations propagate until changes settle":"fail","#56 effect re-scheduled after reading from derived then writing":"pass","#112 computed side-effect doesn't affect sibling computeds":"pass","#114 inner write final value unchanged: no downstream notification":"pass","#133 listener writes back: second listener skipped if no net change":"pass","#134 listener writes back: second listener gets final value":"pass","#135 chained computed inner write: downstream only sees settled":"pass","#136 computed inner write unchanged: no downstream notification":"pass","#137 computed inner write changed: downstream notified":"pass","#138 independent computeds sharing source, one inner-writes":"pass","#172 computed writing to own dep: never caches":"pass","#180 inner write through computed chain resets signal":"pass","#179 computed self-increment: intra-run read-after-write values correct":"fail","#113 inner write convergence: converges or cycle-detects":"pass","#57 computed side effect triggers downstream":"fail","#181 computed writes multiple signals: downstream sees consistent pair":"pass","#182 computed side effect + batch: writes visible after flush":"skip","#183 branch switch stops computed side effect":"pass","#184 nested computeds: outer reads inner, both have side effects":"pass","#185 computed side effect write visible despite later throw":"pass","#186 effect observes computed side-channel write during propagation":"pass","#213 inner write during initial effect execution doesn't block future propagation":"fail","#212 inner write through computed doesn't block future propagation":"pass","#224 effect sees fresh computed after sibling's mid-flush inner write":"pass","#225 mid-flush fan-in: e3 sees both sibling effects' inner writes":"pass"},"solid-js":{"#50 effect writes back to signal":"pass","#51 effect cleanup modifying dependency does not retrigger":"pass","#52 computed writing to signal":"pass","#53 inner write: only final value observed":"pass","#54 inner mutations propagate until changes settle":"pass","#56 effect re-scheduled after reading from derived then writing":"pass","#112 computed side-effect doesn't affect sibling computeds":"pass","#114 inner write final value unchanged: no downstream notification":"pass","#133 listener writes back: second listener skipped if no net change":"pass","#134 listener writes back: second listener gets final value":"pass","#135 chained computed inner write: downstream only sees settled":"pass","#136 computed inner write unchanged: no downstream notification":"pass","#137 computed inner write changed: downstream notified":"pass","#138 independent computeds sharing source, one inner-writes":"pass","#172 computed writing to own dep: never caches":"pass","#180 inner write through computed chain resets signal":"pass","#179 computed self-increment: intra-run read-after-write values correct":"fail","#113 inner write convergence: converges or cycle-detects":"pass","#57 computed side effect triggers downstream":"pass","#181 computed writes multiple signals: downstream sees consistent pair":"pass","#182 computed side effect + batch: writes visible after flush":"pass","#183 branch switch stops computed side effect":"fail","#184 nested computeds: outer reads inner, both have side effects":"pass","#185 computed side effect write visible despite later throw":"fail","#186 effect observes computed side-channel write during propagation":"pass","#213 inner write during initial effect execution doesn't block future propagation":"pass","#212 inner write through computed doesn't block future propagation":"pass","#224 effect sees fresh computed after sibling's mid-flush inner write":"pass","#225 mid-flush fan-in: e3 sees both sibling effects' inner writes":"pass"},"@solidjs/signals":{"#50 effect writes back to signal":"timeout","#51 effect cleanup modifying dependency does not retrigger":"timeout","#52 computed writing to signal":"timeout","#53 inner write: only final value observed":"timeout","#54 inner mutations propagate until changes settle":"timeout","#56 effect re-scheduled after reading from derived then writing":"timeout","#112 computed side-effect doesn't affect sibling computeds":"timeout","#114 inner write final value unchanged: no downstream notification":"timeout","#133 listener writes back: second listener skipped if no net change":"timeout","#134 listener writes back: second listener gets final value":"timeout","#135 chained computed inner write: downstream only sees settled":"timeout","#136 computed inner write unchanged: no downstream notification":"timeout","#137 computed inner write changed: downstream notified":"timeout","#138 independent computeds sharing source, one inner-writes":"timeout","#172 computed writing to own dep: never caches":"timeout","#180 inner write through computed chain resets signal":"timeout","#179 computed self-increment: intra-run read-after-write values correct":"timeout","#113 inner write convergence: converges or cycle-detects":"timeout","#57 computed side effect triggers downstream":"timeout","#181 computed writes multiple signals: downstream sees consistent pair":"timeout","#182 computed side effect + batch: writes visible after flush":"timeout","#183 branch switch stops computed side effect":"timeout","#184 nested computeds: outer reads inner, both have side effects":"timeout","#185 computed side effect write visible despite later throw":"timeout","#186 effect observes computed side-channel write during propagation":"timeout","#213 inner write during initial effect execution doesn't block future propagation":"timeout","#212 inner write through computed doesn't block future propagation":"timeout","#224 effect sees fresh computed after sibling's mid-flush inner write":"timeout","#225 mid-flush fan-in: e3 sees both sibling effects' inner writes":"timeout"},"S.js":{"#50 effect writes back to signal":"pass","#51 effect cleanup modifying dependency does not retrigger":"fail","#52 computed writing to signal":"pass","#53 inner write: only final value observed":"pass","#54 inner mutations propagate until changes settle":"pass","#56 effect re-scheduled after reading from derived then writing":"pass","#112 computed side-effect doesn't affect sibling computeds":"pass","#114 inner write final value unchanged: no downstream notification":"pass","#133 listener writes back: second listener skipped if no net change":"pass","#134 listener writes back: second listener gets final value":"pass","#135 chained computed inner write: downstream only sees settled":"pass","#136 computed inner write unchanged: no downstream notification":"pass","#137 computed inner write changed: downstream notified":"pass","#138 independent computeds sharing source, one inner-writes":"pass","#172 computed writing to own dep: never caches":"pass","#180 inner write through computed chain resets signal":"pass","#179 computed self-increment: intra-run read-after-write values correct":"fail","#113 inner write convergence: converges or cycle-detects":"pass","#57 computed side effect triggers downstream":"pass","#181 computed writes multiple signals: downstream sees consistent pair":"pass","#182 computed side effect + batch: writes visible after flush":"fail","#183 branch switch stops computed side effect":"fail","#184 nested computeds: outer reads inner, both have side effects":"pass","#185 computed side effect write visible despite later throw":"fail","#186 effect observes computed side-channel write during propagation":"pass","#213 inner write during initial effect execution doesn't block future propagation":"pass","#212 inner write through computed doesn't block future propagation":"pass","#224 effect sees fresh computed after sibling's mid-flush inner write":"pass","#225 mid-flush fan-in: e3 sees both sibling effects' inner writes":"pass"},"pota":{"#50 effect writes back to signal":"fail","#51 effect cleanup modifying dependency does not retrigger":"fail","#52 computed writing to signal":"pass","#53 inner write: only final value observed":"fail","#54 inner mutations propagate until changes settle":"fail","#56 effect re-scheduled after reading from derived then writing":"fail","#112 computed side-effect doesn't affect sibling computeds":"pass","#114 inner write final value unchanged: no downstream notification":"pass","#133 listener writes back: second listener skipped if no net change":"fail","#134 listener writes back: second listener gets final value":"fail","#135 chained computed inner write: downstream only sees settled":"pass","#136 computed inner write unchanged: no downstream notification":"pass","#137 computed inner write changed: downstream notified":"pass","#138 independent computeds sharing source, one inner-writes":"pass","#172 computed writing to own dep: never caches":"pass","#180 inner write through computed chain resets signal":"fail","#179 computed self-increment: intra-run read-after-write values correct":"fail","#113 inner write convergence: converges or cycle-detects":"pass","#57 computed side effect triggers downstream":"pass","#181 computed writes multiple signals: downstream sees consistent pair":"pass","#182 computed side effect + batch: writes visible after flush":"fail","#183 branch switch stops computed side effect":"fail","#184 nested computeds: outer reads inner, both have side effects":"pass","#185 computed side effect write visible despite later throw":"fail","#186 effect observes computed side-channel write during propagation":"fail","#213 inner write during initial effect execution doesn't block future propagation":"fail","#212 inner write through computed doesn't block future propagation":"fail","#224 effect sees fresh computed after sibling's mid-flush inner write":"fail","#225 mid-flush fan-in: e3 sees both sibling effects' inner writes":"fail"},"@angular/core":{"#50 effect writes back to signal":"pass","#51 effect cleanup modifying dependency does not retrigger":"pass","#52 computed writing to signal":"pass","#53 inner write: only final value observed":"pass","#54 inner mutations propagate until changes settle":"pass","#56 effect re-scheduled after reading from derived then writing":"pass","#112 computed side-effect doesn't affect sibling computeds":"pass","#114 inner write final value unchanged: no downstream notification":"pass","#133 listener writes back: second listener skipped if no net change":"pass","#134 listener writes back: second listener gets final value":"pass","#135 chained computed inner write: downstream only sees settled":"pass","#136 computed inner write unchanged: no downstream notification":"pass","#137 computed inner write changed: downstream notified":"pass","#138 independent computeds sharing source, one inner-writes":"pass","#172 computed writing to own dep: never caches":"pass","#180 inner write through computed chain resets signal":"pass","#179 computed self-increment: intra-run read-after-write values correct":"fail","#113 inner write convergence: converges or cycle-detects":"pass","#57 computed side effect triggers downstream":"fail","#181 computed writes multiple signals: downstream sees consistent pair":"pass","#182 computed side effect + batch: writes visible after flush":"skip","#183 branch switch stops computed side effect":"pass","#184 nested computeds: outer reads inner, both have side effects":"pass","#185 computed side effect write visible despite later throw":"pass","#186 effect observes computed side-channel write during propagation":"pass","#213 inner write during initial effect execution doesn't block future propagation":"pass","#212 inner write through computed doesn't block future propagation":"pass","#224 effect sees fresh computed after sibling's mid-flush inner write":"pass","#225 mid-flush fan-in: e3 sees both sibling effects' inner writes":"pass"},"anod":{"#50 effect writes back to signal":"pass","#51 effect cleanup modifying dependency does not retrigger":"pass","#52 computed writing to signal":"pass","#53 inner write: only final value observed":"pass","#54 inner mutations propagate until changes settle":"pass","#56 effect re-scheduled after reading from derived then writing":"pass","#112 computed side-effect doesn't affect sibling computeds":"pass","#114 inner write final value unchanged: no downstream notification":"pass","#133 listener writes back: second listener skipped if no net change":"pass","#134 listener writes back: second listener gets final value":"pass","#135 chained computed inner write: downstream only sees settled":"pass","#136 computed inner write unchanged: no downstream notification":"pass","#137 computed inner write changed: downstream notified":"pass","#138 independent computeds sharing source, one inner-writes":"pass","#172 computed writing to own dep: never caches":"pass","#180 inner write through computed chain resets signal":"pass","#179 computed self-increment: intra-run read-after-write values correct":"fail","#113 inner write convergence: converges or cycle-detects":"pass","#57 computed side effect triggers downstream":"pass","#181 computed writes multiple signals: downstream sees consistent pair":"pass","#182 computed side effect + batch: writes visible after flush":"fail","#183 branch switch stops computed side effect":"pass","#184 nested computeds: outer reads inner, both have side effects":"pass","#185 computed side effect write visible despite later throw":"pass","#186 effect observes computed side-channel write during propagation":"pass","#213 inner write during initial effect execution doesn't block future propagation":"pass","#212 inner write through computed doesn't block future propagation":"pass","#224 effect sees fresh computed after sibling's mid-flush inner write":"pass","#225 mid-flush fan-in: e3 sees both sibling effects' inner writes":"pass"}}},{"section":"Cycle & Infinite Loop Detection","testNames":["#61 indirect cycle through effects","#63 cycle from modifying a branch (dynamic cycle creation)","#153 computed self-dep recovery after catching cycle error","#64 max iteration limit reached","#221 three-effect cycle stays bounded","#223 cycle through computed stays bounded"],"results":{"Raph Next Signals":{"#61 indirect cycle through effects":"pass","#63 cycle from modifying a branch (dynamic cycle creation)":"pass","#153 computed self-dep recovery after catching cycle error":"pass","#64 max iteration limit reached":"pass","#221 three-effect cycle stays bounded":"pass","#223 cycle through computed stays bounded":"pass"},"reflex":{"#61 indirect cycle through effects":"timeout","#63 cycle from modifying a branch (dynamic cycle creation)":"timeout","#153 computed self-dep recovery after catching cycle error":"timeout","#64 max iteration limit reached":"timeout","#221 three-effect cycle stays bounded":"timeout","#223 cycle through computed stays bounded":"timeout"},"alien-signals":{"#61 indirect cycle through effects":"pass","#63 cycle from modifying a branch (dynamic cycle creation)":"pass","#153 computed self-dep recovery after catching cycle error":"pass","#64 max iteration limit reached":"pass","#221 three-effect cycle stays bounded":"pass","#223 cycle through computed stays bounded":"pass"},"@preact/signals-core":{"#61 indirect cycle through effects":"pass","#63 cycle from modifying a branch (dynamic cycle creation)":"pass","#153 computed self-dep recovery after catching cycle error":"pass","#64 max iteration limit reached":"pass","#221 three-effect cycle stays bounded":"pass","#223 cycle through computed stays bounded":"pass"},"@reactively/core":{"#61 indirect cycle through effects":"pass","#63 cycle from modifying a branch (dynamic cycle creation)":"pass","#153 computed self-dep recovery after catching cycle error":"pass","#64 max iteration limit reached":"fail","#221 three-effect cycle stays bounded":"fail","#223 cycle through computed stays bounded":"fail"},"tansu":{"#61 indirect cycle through effects":"pass","#63 cycle from modifying a branch (dynamic cycle creation)":"pass","#153 computed self-dep recovery after catching cycle error":"pass","#64 max iteration limit reached":"pass","#221 three-effect cycle stays bounded":"pass","#223 cycle through computed stays bounded":"pass"},"signal-polyfill (TC39)":{"#61 indirect cycle through effects":"pass","#63 cycle from modifying a branch (dynamic cycle creation)":"pass","#153 computed self-dep recovery after catching cycle error":"pass","#64 max iteration limit reached":"pass","#221 three-effect cycle stays bounded":"pass","#223 cycle through computed stays bounded":"pass"},"@vue/reactivity 3.5.43":{"#61 indirect cycle through effects":"pass","#63 cycle from modifying a branch (dynamic cycle creation)":"pass","#153 computed self-dep recovery after catching cycle error":"pass","#64 max iteration limit reached":"pass","#221 three-effect cycle stays bounded":"pass","#223 cycle through computed stays bounded":"pass"},"@vue/reactivity 3.6.0-rc.9":{"#61 indirect cycle through effects":"pass","#63 cycle from modifying a branch (dynamic cycle creation)":"pass","#153 computed self-dep recovery after catching cycle error":"pass","#64 max iteration limit reached":"pass","#221 three-effect cycle stays bounded":"pass","#223 cycle through computed stays bounded":"pass"},"mobx":{"#61 indirect cycle through effects":"pass","#63 cycle from modifying a branch (dynamic cycle creation)":"pass","#153 computed self-dep recovery after catching cycle error":"pass","#64 max iteration limit reached":"pass","#221 three-effect cycle stays bounded":"pass","#223 cycle through computed stays bounded":"pass"},"@reatom/core":{"#61 indirect cycle through effects":"pass","#63 cycle from modifying a branch (dynamic cycle creation)":"pass","#153 computed self-dep recovery after catching cycle error":"fail","#64 max iteration limit reached":"pass","#221 three-effect cycle stays bounded":"pass","#223 cycle through computed stays bounded":"pass"},"svelte":{"#61 indirect cycle through effects":"pass","#63 cycle from modifying a branch (dynamic cycle creation)":"pass","#153 computed self-dep recovery after catching cycle error":"fail","#64 max iteration limit reached":"pass","#221 three-effect cycle stays bounded":"pass","#223 cycle through computed stays bounded":"pass"},"solid-js":{"#61 indirect cycle through effects":"pass","#63 cycle from modifying a branch (dynamic cycle creation)":"pass","#153 computed self-dep recovery after catching cycle error":"pass","#64 max iteration limit reached":"pass","#221 three-effect cycle stays bounded":"pass","#223 cycle through computed stays bounded":"pass"},"@solidjs/signals":{"#61 indirect cycle through effects":"timeout","#63 cycle from modifying a branch (dynamic cycle creation)":"timeout","#153 computed self-dep recovery after catching cycle error":"timeout","#64 max iteration limit reached":"timeout","#221 three-effect cycle stays bounded":"timeout","#223 cycle through computed stays bounded":"timeout"},"S.js":{"#61 indirect cycle through effects":"pass","#63 cycle from modifying a branch (dynamic cycle creation)":"pass","#153 computed self-dep recovery after catching cycle error":"pass","#64 max iteration limit reached":"pass","#221 three-effect cycle stays bounded":"pass","#223 cycle through computed stays bounded":"pass"},"pota":{"#61 indirect cycle through effects":"pass","#63 cycle from modifying a branch (dynamic cycle creation)":"fail","#153 computed self-dep recovery after catching cycle error":"pass","#64 max iteration limit reached":"pass","#221 three-effect cycle stays bounded":"pass","#223 cycle through computed stays bounded":"pass"},"@angular/core":{"#61 indirect cycle through effects":"pass","#63 cycle from modifying a branch (dynamic cycle creation)":"pass","#153 computed self-dep recovery after catching cycle error":"pass","#64 max iteration limit reached":"pass","#221 three-effect cycle stays bounded":"pass","#223 cycle through computed stays bounded":"pass"},"anod":{"#61 indirect cycle through effects":"pass","#63 cycle from modifying a branch (dynamic cycle creation)":"pass","#153 computed self-dep recovery after catching cycle error":"pass","#64 max iteration limit reached":"pass","#221 three-effect cycle stays bounded":"pass","#223 cycle through computed stays bounded":"pass"}}},{"section":"Batching / Transaction","testNames":["#66 nested batches: outer completion triggers propagation","#67 signals readable with updated value inside batch","#69 pending effects run even if batch callback throws","#70 effect first run is immediate even inside batch","#72 intermediate values skipped (only final value observed)","#119 batch: computed same result despite source change — no effect run","#120 cleanup writes inside effect are implicitly batched","#121 pending effects run even if some effects throw during batch","#122 post-batch writes work normally","#123 repeated no-op batches don't re-trigger effects","#124 trigger+dispose+retrigger in batch = no run","#125 batch: source reverts → computed not notified","#126 new effect inside batch after write sees updated value","#127 unsubscribe inside batch: not called at end","#128 reading computed in batch forces upstream evaluation","#129 reading one computed doesn't notify sibling effect early","#130 effect inner writes are implicitly batched","#131 derived-of-derived: source reverts in batch","#132 batch: computed not recomputed if dep reverts","#74 multiple signals grouped in single update"],"results":{"Raph Next Signals":{"#66 nested batches: outer completion triggers propagation":"pass","#67 signals readable with updated value inside batch":"pass","#69 pending effects run even if batch callback throws":"pass","#70 effect first run is immediate even inside batch":"pass","#72 intermediate values skipped (only final value observed)":"pass","#119 batch: computed same result despite source change — no effect run":"pass","#120 cleanup writes inside effect are implicitly batched":"pass","#121 pending effects run even if some effects throw during batch":"pass","#122 post-batch writes work normally":"pass","#123 repeated no-op batches don't re-trigger effects":"pass","#124 trigger+dispose+retrigger in batch = no run":"pass","#125 batch: source reverts → computed not notified":"pass","#126 new effect inside batch after write sees updated value":"pass","#127 unsubscribe inside batch: not called at end":"pass","#128 reading computed in batch forces upstream evaluation":"pass","#129 reading one computed doesn't notify sibling effect early":"pass","#130 effect inner writes are implicitly batched":"pass","#131 derived-of-derived: source reverts in batch":"pass","#132 batch: computed not recomputed if dep reverts":"pass","#74 multiple signals grouped in single update":"pass"},"reflex":{"#66 nested batches: outer completion triggers propagation":"timeout","#67 signals readable with updated value inside batch":"timeout","#69 pending effects run even if batch callback throws":"timeout","#70 effect first run is immediate even inside batch":"timeout","#72 intermediate values skipped (only final value observed)":"timeout","#119 batch: computed same result despite source change — no effect run":"timeout","#120 cleanup writes inside effect are implicitly batched":"timeout","#121 pending effects run even if some effects throw during batch":"timeout","#122 post-batch writes work normally":"timeout","#123 repeated no-op batches don't re-trigger effects":"timeout","#124 trigger+dispose+retrigger in batch = no run":"timeout","#125 batch: source reverts → computed not notified":"timeout","#126 new effect inside batch after write sees updated value":"timeout","#127 unsubscribe inside batch: not called at end":"timeout","#128 reading computed in batch forces upstream evaluation":"timeout","#129 reading one computed doesn't notify sibling effect early":"timeout","#130 effect inner writes are implicitly batched":"timeout","#131 derived-of-derived: source reverts in batch":"timeout","#132 batch: computed not recomputed if dep reverts":"timeout","#74 multiple signals grouped in single update":"timeout"},"alien-signals":{"#66 nested batches: outer completion triggers propagation":"pass","#67 signals readable with updated value inside batch":"pass","#69 pending effects run even if batch callback throws":"pass","#70 effect first run is immediate even inside batch":"pass","#72 intermediate values skipped (only final value observed)":"pass","#119 batch: computed same result despite source change — no effect run":"pass","#120 cleanup writes inside effect are implicitly batched":"pass","#121 pending effects run even if some effects throw during batch":"pass","#122 post-batch writes work normally":"pass","#123 repeated no-op batches don't re-trigger effects":"pass","#124 trigger+dispose+retrigger in batch = no run":"pass","#125 batch: source reverts → computed not notified":"pass","#126 new effect inside batch after write sees updated value":"pass","#127 unsubscribe inside batch: not called at end":"pass","#128 reading computed in batch forces upstream evaluation":"pass","#129 reading one computed doesn't notify sibling effect early":"pass","#130 effect inner writes are implicitly batched":"pass","#131 derived-of-derived: source reverts in batch":"pass","#132 batch: computed not recomputed if dep reverts":"pass","#74 multiple signals grouped in single update":"pass"},"@preact/signals-core":{"#66 nested batches: outer completion triggers propagation":"pass","#67 signals readable with updated value inside batch":"pass","#69 pending effects run even if batch callback throws":"pass","#70 effect first run is immediate even inside batch":"pass","#72 intermediate values skipped (only final value observed)":"pass","#119 batch: computed same result despite source change — no effect run":"pass","#120 cleanup writes inside effect are implicitly batched":"pass","#121 pending effects run even if some effects throw during batch":"pass","#122 post-batch writes work normally":"pass","#123 repeated no-op batches don't re-trigger effects":"pass","#124 trigger+dispose+retrigger in batch = no run":"pass","#125 batch: source reverts → computed not notified":"pass","#126 new effect inside batch after write sees updated value":"pass","#127 unsubscribe inside batch: not called at end":"pass","#128 reading computed in batch forces upstream evaluation":"pass","#129 reading one computed doesn't notify sibling effect early":"pass","#130 effect inner writes are implicitly batched":"pass","#131 derived-of-derived: source reverts in batch":"pass","#132 batch: computed not recomputed if dep reverts":"pass","#74 multiple signals grouped in single update":"pass"},"@reactively/core":{"#66 nested batches: outer completion triggers propagation":"skip","#67 signals readable with updated value inside batch":"skip","#69 pending effects run even if batch callback throws":"skip","#70 effect first run is immediate even inside batch":"skip","#72 intermediate values skipped (only final value observed)":"skip","#119 batch: computed same result despite source change — no effect run":"skip","#120 cleanup writes inside effect are implicitly batched":"skip","#121 pending effects run even if some effects throw during batch":"skip","#122 post-batch writes work normally":"skip","#123 repeated no-op batches don't re-trigger effects":"skip","#124 trigger+dispose+retrigger in batch = no run":"skip","#125 batch: source reverts → computed not notified":"skip","#126 new effect inside batch after write sees updated value":"skip","#127 unsubscribe inside batch: not called at end":"skip","#128 reading computed in batch forces upstream evaluation":"skip","#129 reading one computed doesn't notify sibling effect early":"skip","#130 effect inner writes are implicitly batched":"fail","#131 derived-of-derived: source reverts in batch":"skip","#132 batch: computed not recomputed if dep reverts":"skip","#74 multiple signals grouped in single update":"skip"},"tansu":{"#66 nested batches: outer completion triggers propagation":"pass","#67 signals readable with updated value inside batch":"pass","#69 pending effects run even if batch callback throws":"pass","#70 effect first run is immediate even inside batch":"pass","#72 intermediate values skipped (only final value observed)":"pass","#119 batch: computed same result despite source change — no effect run":"pass","#120 cleanup writes inside effect are implicitly batched":"skip","#121 pending effects run even if some effects throw during batch":"pass","#122 post-batch writes work normally":"pass","#123 repeated no-op batches don't re-trigger effects":"pass","#124 trigger+dispose+retrigger in batch = no run":"pass","#125 batch: source reverts → computed not notified":"pass","#126 new effect inside batch after write sees updated value":"pass","#127 unsubscribe inside batch: not called at end":"pass","#128 reading computed in batch forces upstream evaluation":"pass","#129 reading one computed doesn't notify sibling effect early":"pass","#130 effect inner writes are implicitly batched":"pass","#131 derived-of-derived: source reverts in batch":"pass","#132 batch: computed not recomputed if dep reverts":"pass","#74 multiple signals grouped in single update":"pass"},"signal-polyfill (TC39)":{"#66 nested batches: outer completion triggers propagation":"skip","#67 signals readable with updated value inside batch":"skip","#69 pending effects run even if batch callback throws":"skip","#70 effect first run is immediate even inside batch":"skip","#72 intermediate values skipped (only final value observed)":"skip","#119 batch: computed same result despite source change — no effect run":"skip","#120 cleanup writes inside effect are implicitly batched":"pass","#121 pending effects run even if some effects throw during batch":"skip","#122 post-batch writes work normally":"skip","#123 repeated no-op batches don't re-trigger effects":"skip","#124 trigger+dispose+retrigger in batch = no run":"skip","#125 batch: source reverts → computed not notified":"skip","#126 new effect inside batch after write sees updated value":"skip","#127 unsubscribe inside batch: not called at end":"skip","#128 reading computed in batch forces upstream evaluation":"skip","#129 reading one computed doesn't notify sibling effect early":"skip","#130 effect inner writes are implicitly batched":"pass","#131 derived-of-derived: source reverts in batch":"skip","#132 batch: computed not recomputed if dep reverts":"skip","#74 multiple signals grouped in single update":"skip"},"@vue/reactivity 3.5.43":{"#66 nested batches: outer completion triggers propagation":"pass","#67 signals readable with updated value inside batch":"pass","#69 pending effects run even if batch callback throws":"pass","#70 effect first run is immediate even inside batch":"pass","#72 intermediate values skipped (only final value observed)":"pass","#119 batch: computed same result despite source change — no effect run":"pass","#120 cleanup writes inside effect are implicitly batched":"pass","#121 pending effects run even if some effects throw during batch":"pass","#122 post-batch writes work normally":"pass","#123 repeated no-op batches don't re-trigger effects":"fail","#124 trigger+dispose+retrigger in batch = no run":"pass","#125 batch: source reverts → computed not notified":"pass","#126 new effect inside batch after write sees updated value":"pass","#127 unsubscribe inside batch: not called at end":"pass","#128 reading computed in batch forces upstream evaluation":"pass","#129 reading one computed doesn't notify sibling effect early":"pass","#130 effect inner writes are implicitly batched":"pass","#131 derived-of-derived: source reverts in batch":"pass","#132 batch: computed not recomputed if dep reverts":"fail","#74 multiple signals grouped in single update":"pass"},"@vue/reactivity 3.6.0-rc.9":{"#66 nested batches: outer completion triggers propagation":"fail","#67 signals readable with updated value inside batch":"pass","#69 pending effects run even if batch callback throws":"pass","#70 effect first run is immediate even inside batch":"pass","#72 intermediate values skipped (only final value observed)":"fail","#119 batch: computed same result despite source change — no effect run":"fail","#120 cleanup writes inside effect are implicitly batched":"pass","#121 pending effects run even if some effects throw during batch":"pass","#122 post-batch writes work normally":"pass","#123 repeated no-op batches don't re-trigger effects":"fail","#124 trigger+dispose+retrigger in batch = no run":"fail","#125 batch: source reverts → computed not notified":"fail","#126 new effect inside batch after write sees updated value":"pass","#127 unsubscribe inside batch: not called at end":"fail","#128 reading computed in batch forces upstream evaluation":"pass","#129 reading one computed doesn't notify sibling effect early":"fail","#130 effect inner writes are implicitly batched":"pass","#131 derived-of-derived: source reverts in batch":"fail","#132 batch: computed not recomputed if dep reverts":"fail","#74 multiple signals grouped in single update":"fail"},"mobx":{"#66 nested batches: outer completion triggers propagation":"fail","#67 signals readable with updated value inside batch":"fail","#69 pending effects run even if batch callback throws":"fail","#70 effect first run is immediate even inside batch":"fail","#72 intermediate values skipped (only final value observed)":"fail","#119 batch: computed same result despite source change — no effect run":"fail","#120 cleanup writes inside effect are implicitly batched":"skip","#121 pending effects run even if some effects throw during batch":"fail","#122 post-batch writes work normally":"fail","#123 repeated no-op batches don't re-trigger effects":"fail","#124 trigger+dispose+retrigger in batch = no run":"fail","#125 batch: source reverts → computed not notified":"fail","#126 new effect inside batch after write sees updated value":"fail","#127 unsubscribe inside batch: not called at end":"fail","#128 reading computed in batch forces upstream evaluation":"fail","#129 reading one computed doesn't notify sibling effect early":"fail","#130 effect inner writes are implicitly batched":"pass","#131 derived-of-derived: source reverts in batch":"fail","#132 batch: computed not recomputed if dep reverts":"fail","#74 multiple signals grouped in single update":"fail"},"@reatom/core":{"#66 nested batches: outer completion triggers propagation":"pass","#67 signals readable with updated value inside batch":"pass","#69 pending effects run even if batch callback throws":"pass","#70 effect first run is immediate even inside batch":"pass","#72 intermediate values skipped (only final value observed)":"pass","#119 batch: computed same result despite source change — no effect run":"pass","#120 cleanup writes inside effect are implicitly batched":"pass","#121 pending effects run even if some effects throw during batch":"pass","#122 post-batch writes work normally":"pass","#123 repeated no-op batches don't re-trigger effects":"pass","#124 trigger+dispose+retrigger in batch = no run":"pass","#125 batch: source reverts → computed not notified":"pass","#126 new effect inside batch after write sees updated value":"pass","#127 unsubscribe inside batch: not called at end":"pass","#128 reading computed in batch forces upstream evaluation":"pass","#129 reading one computed doesn't notify sibling effect early":"pass","#130 effect inner writes are implicitly batched":"pass","#131 derived-of-derived: source reverts in batch":"pass","#132 batch: computed not recomputed if dep reverts":"pass","#74 multiple signals grouped in single update":"pass"},"svelte":{"#66 nested batches: outer completion triggers propagation":"skip","#67 signals readable with updated value inside batch":"skip","#69 pending effects run even if batch callback throws":"skip","#70 effect first run is immediate even inside batch":"skip","#72 intermediate values skipped (only final value observed)":"skip","#119 batch: computed same result despite source change — no effect run":"skip","#120 cleanup writes inside effect are implicitly batched":"fail","#121 pending effects run even if some effects throw during batch":"skip","#122 post-batch writes work normally":"skip","#123 repeated no-op batches don't re-trigger effects":"skip","#124 trigger+dispose+retrigger in batch = no run":"skip","#125 batch: source reverts → computed not notified":"skip","#126 new effect inside batch after write sees updated value":"skip","#127 unsubscribe inside batch: not called at end":"skip","#128 reading computed in batch forces upstream evaluation":"skip","#129 reading one computed doesn't notify sibling effect early":"skip","#130 effect inner writes are implicitly batched":"pass","#131 derived-of-derived: source reverts in batch":"skip","#132 batch: computed not recomputed if dep reverts":"skip","#74 multiple signals grouped in single update":"skip"},"solid-js":{"#66 nested batches: outer completion triggers propagation":"pass","#67 signals readable with updated value inside batch":"pass","#69 pending effects run even if batch callback throws":"fail","#70 effect first run is immediate even inside batch":"pass","#72 intermediate values skipped (only final value observed)":"pass","#119 batch: computed same result despite source change — no effect run":"pass","#120 cleanup writes inside effect are implicitly batched":"pass","#121 pending effects run even if some effects throw during batch":"pass","#122 post-batch writes work normally":"pass","#123 repeated no-op batches don't re-trigger effects":"fail","#124 trigger+dispose+retrigger in batch = no run":"pass","#125 batch: source reverts → computed not notified":"pass","#126 new effect inside batch after write sees updated value":"pass","#127 unsubscribe inside batch: not called at end":"pass","#128 reading computed in batch forces upstream evaluation":"pass","#129 reading one computed doesn't notify sibling effect early":"pass","#130 effect inner writes are implicitly batched":"pass","#131 derived-of-derived: source reverts in batch":"pass","#132 batch: computed not recomputed if dep reverts":"fail","#74 multiple signals grouped in single update":"pass"},"@solidjs/signals":{"#66 nested batches: outer completion triggers propagation":"timeout","#67 signals readable with updated value inside batch":"timeout","#69 pending effects run even if batch callback throws":"timeout","#70 effect first run is immediate even inside batch":"timeout","#72 intermediate values skipped (only final value observed)":"timeout","#119 batch: computed same result despite source change — no effect run":"timeout","#120 cleanup writes inside effect are implicitly batched":"timeout","#121 pending effects run even if some effects throw during batch":"timeout","#122 post-batch writes work normally":"timeout","#123 repeated no-op batches don't re-trigger effects":"timeout","#124 trigger+dispose+retrigger in batch = no run":"timeout","#125 batch: source reverts → computed not notified":"timeout","#126 new effect inside batch after write sees updated value":"timeout","#127 unsubscribe inside batch: not called at end":"timeout","#128 reading computed in batch forces upstream evaluation":"timeout","#129 reading one computed doesn't notify sibling effect early":"timeout","#130 effect inner writes are implicitly batched":"timeout","#131 derived-of-derived: source reverts in batch":"timeout","#132 batch: computed not recomputed if dep reverts":"timeout","#74 multiple signals grouped in single update":"timeout"},"S.js":{"#66 nested batches: outer completion triggers propagation":"fail","#67 signals readable with updated value inside batch":"fail","#69 pending effects run even if batch callback throws":"fail","#70 effect first run is immediate even inside batch":"pass","#72 intermediate values skipped (only final value observed)":"fail","#119 batch: computed same result despite source change — no effect run":"fail","#120 cleanup writes inside effect are implicitly batched":"pass","#121 pending effects run even if some effects throw during batch":"pass","#122 post-batch writes work normally":"pass","#123 repeated no-op batches don't re-trigger effects":"fail","#124 trigger+dispose+retrigger in batch = no run":"fail","#125 batch: source reverts → computed not notified":"fail","#126 new effect inside batch after write sees updated value":"pass","#127 unsubscribe inside batch: not called at end":"fail","#128 reading computed in batch forces upstream evaluation":"fail","#129 reading one computed doesn't notify sibling effect early":"pass","#130 effect inner writes are implicitly batched":"pass","#131 derived-of-derived: source reverts in batch":"fail","#132 batch: computed not recomputed if dep reverts":"fail","#74 multiple signals grouped in single update":"pass"},"pota":{"#66 nested batches: outer completion triggers propagation":"fail","#67 signals readable with updated value inside batch":"pass","#69 pending effects run even if batch callback throws":"fail","#70 effect first run is immediate even inside batch":"pass","#72 intermediate values skipped (only final value observed)":"fail","#119 batch: computed same result despite source change — no effect run":"pass","#120 cleanup writes inside effect are implicitly batched":"fail","#121 pending effects run even if some effects throw during batch":"fail","#122 post-batch writes work normally":"fail","#123 repeated no-op batches don't re-trigger effects":"pass","#124 trigger+dispose+retrigger in batch = no run":"pass","#125 batch: source reverts → computed not notified":"pass","#126 new effect inside batch after write sees updated value":"pass","#127 unsubscribe inside batch: not called at end":"pass","#128 reading computed in batch forces upstream evaluation":"pass","#129 reading one computed doesn't notify sibling effect early":"fail","#130 effect inner writes are implicitly batched":"fail","#131 derived-of-derived: source reverts in batch":"fail","#132 batch: computed not recomputed if dep reverts":"fail","#74 multiple signals grouped in single update":"fail"},"@angular/core":{"#66 nested batches: outer completion triggers propagation":"skip","#67 signals readable with updated value inside batch":"skip","#69 pending effects run even if batch callback throws":"skip","#70 effect first run is immediate even inside batch":"skip","#72 intermediate values skipped (only final value observed)":"skip","#119 batch: computed same result despite source change — no effect run":"skip","#120 cleanup writes inside effect are implicitly batched":"pass","#121 pending effects run even if some effects throw during batch":"skip","#122 post-batch writes work normally":"skip","#123 repeated no-op batches don't re-trigger effects":"skip","#124 trigger+dispose+retrigger in batch = no run":"skip","#125 batch: source reverts → computed not notified":"skip","#126 new effect inside batch after write sees updated value":"skip","#127 unsubscribe inside batch: not called at end":"skip","#128 reading computed in batch forces upstream evaluation":"skip","#129 reading one computed doesn't notify sibling effect early":"skip","#130 effect inner writes are implicitly batched":"pass","#131 derived-of-derived: source reverts in batch":"skip","#132 batch: computed not recomputed if dep reverts":"skip","#74 multiple signals grouped in single update":"skip"},"anod":{"#66 nested batches: outer completion triggers propagation":"pass","#67 signals readable with updated value inside batch":"fail","#69 pending effects run even if batch callback throws":"fail","#70 effect first run is immediate even inside batch":"pass","#72 intermediate values skipped (only final value observed)":"pass","#119 batch: computed same result despite source change — no effect run":"pass","#120 cleanup writes inside effect are implicitly batched":"pass","#121 pending effects run even if some effects throw during batch":"pass","#122 post-batch writes work normally":"pass","#123 repeated no-op batches don't re-trigger effects":"fail","#124 trigger+dispose+retrigger in batch = no run":"pass","#125 batch: source reverts → computed not notified":"fail","#126 new effect inside batch after write sees updated value":"pass","#127 unsubscribe inside batch: not called at end":"pass","#128 reading computed in batch forces upstream evaluation":"fail","#129 reading one computed doesn't notify sibling effect early":"pass","#130 effect inner writes are implicitly batched":"pass","#131 derived-of-derived: source reverts in batch":"fail","#132 batch: computed not recomputed if dep reverts":"fail","#74 multiple signals grouped in single update":"pass"}}},{"section":"Untracked / Unsampled Reads","testNames":["#75 untracked read in effect does not create dependency","#76 untracked read in computed does not create dependency","#117 untracked read of stale computed returns fresh value","#118 untracked transitively doesn't track through nested deps","#156 untracked write inside effect doesn't throw","#218 untracked read survives across batched writes","#219 batch inside untracked still coalesces writes"],"results":{"Raph Next Signals":{"#75 untracked read in effect does not create dependency":"pass","#76 untracked read in computed does not create dependency":"pass","#117 untracked read of stale computed returns fresh value":"pass","#118 untracked transitively doesn't track through nested deps":"pass","#156 untracked write inside effect doesn't throw":"pass","#218 untracked read survives across batched writes":"pass","#219 batch inside untracked still coalesces writes":"pass"},"reflex":{"#75 untracked read in effect does not create dependency":"timeout","#76 untracked read in computed does not create dependency":"timeout","#117 untracked read of stale computed returns fresh value":"timeout","#118 untracked transitively doesn't track through nested deps":"timeout","#156 untracked write inside effect doesn't throw":"timeout","#218 untracked read survives across batched writes":"timeout","#219 batch inside untracked still coalesces writes":"timeout"},"alien-signals":{"#75 untracked read in effect does not create dependency":"pass","#76 untracked read in computed does not create dependency":"pass","#117 untracked read of stale computed returns fresh value":"pass","#118 untracked transitively doesn't track through nested deps":"pass","#156 untracked write inside effect doesn't throw":"pass","#218 untracked read survives across batched writes":"pass","#219 batch inside untracked still coalesces writes":"pass"},"@preact/signals-core":{"#75 untracked read in effect does not create dependency":"pass","#76 untracked read in computed does not create dependency":"pass","#117 untracked read of stale computed returns fresh value":"pass","#118 untracked transitively doesn't track through nested deps":"pass","#156 untracked write inside effect doesn't throw":"pass","#218 untracked read survives across batched writes":"pass","#219 batch inside untracked still coalesces writes":"pass"},"@reactively/core":{"#75 untracked read in effect does not create dependency":"skip","#76 untracked read in computed does not create dependency":"skip","#117 untracked read of stale computed returns fresh value":"skip","#118 untracked transitively doesn't track through nested deps":"skip","#156 untracked write inside effect doesn't throw":"skip","#218 untracked read survives across batched writes":"skip","#219 batch inside untracked still coalesces writes":"skip"},"tansu":{"#75 untracked read in effect does not create dependency":"pass","#76 untracked read in computed does not create dependency":"pass","#117 untracked read of stale computed returns fresh value":"pass","#118 untracked transitively doesn't track through nested deps":"pass","#156 untracked write inside effect doesn't throw":"pass","#218 untracked read survives across batched writes":"pass","#219 batch inside untracked still coalesces writes":"pass"},"signal-polyfill (TC39)":{"#75 untracked read in effect does not create dependency":"pass","#76 untracked read in computed does not create dependency":"pass","#117 untracked read of stale computed returns fresh value":"pass","#118 untracked transitively doesn't track through nested deps":"pass","#156 untracked write inside effect doesn't throw":"pass","#218 untracked read survives across batched writes":"skip","#219 batch inside untracked still coalesces writes":"skip"},"@vue/reactivity 3.5.43":{"#75 untracked read in effect does not create dependency":"pass","#76 untracked read in computed does not create dependency":"pass","#117 untracked read of stale computed returns fresh value":"pass","#118 untracked transitively doesn't track through nested deps":"pass","#156 untracked write inside effect doesn't throw":"pass","#218 untracked read survives across batched writes":"pass","#219 batch inside untracked still coalesces writes":"pass"},"@vue/reactivity 3.6.0-rc.9":{"#75 untracked read in effect does not create dependency":"pass","#76 untracked read in computed does not create dependency":"pass","#117 untracked read of stale computed returns fresh value":"pass","#118 untracked transitively doesn't track through nested deps":"pass","#156 untracked write inside effect doesn't throw":"pass","#218 untracked read survives across batched writes":"pass","#219 batch inside untracked still coalesces writes":"fail"},"mobx":{"#75 untracked read in effect does not create dependency":"pass","#76 untracked read in computed does not create dependency":"fail","#117 untracked read of stale computed returns fresh value":"pass","#118 untracked transitively doesn't track through nested deps":"pass","#156 untracked write inside effect doesn't throw":"pass","#218 untracked read survives across batched writes":"fail","#219 batch inside untracked still coalesces writes":"fail"},"@reatom/core":{"#75 untracked read in effect does not create dependency":"pass","#76 untracked read in computed does not create dependency":"pass","#117 untracked read of stale computed returns fresh value":"pass","#118 untracked transitively doesn't track through nested deps":"pass","#156 untracked write inside effect doesn't throw":"pass","#218 untracked read survives across batched writes":"pass","#219 batch inside untracked still coalesces writes":"pass"},"svelte":{"#75 untracked read in effect does not create dependency":"skip","#76 untracked read in computed does not create dependency":"skip","#117 untracked read of stale computed returns fresh value":"skip","#118 untracked transitively doesn't track through nested deps":"skip","#156 untracked write inside effect doesn't throw":"skip","#218 untracked read survives across batched writes":"skip","#219 batch inside untracked still coalesces writes":"skip"},"solid-js":{"#75 untracked read in effect does not create dependency":"pass","#76 untracked read in computed does not create dependency":"pass","#117 untracked read of stale computed returns fresh value":"pass","#118 untracked transitively doesn't track through nested deps":"pass","#156 untracked write inside effect doesn't throw":"pass","#218 untracked read survives across batched writes":"pass","#219 batch inside untracked still coalesces writes":"pass"},"@solidjs/signals":{"#75 untracked read in effect does not create dependency":"timeout","#76 untracked read in computed does not create dependency":"timeout","#117 untracked read of stale computed returns fresh value":"timeout","#118 untracked transitively doesn't track through nested deps":"timeout","#156 untracked write inside effect doesn't throw":"timeout","#218 untracked read survives across batched writes":"timeout","#219 batch inside untracked still coalesces writes":"timeout"},"S.js":{"#75 untracked read in effect does not create dependency":"pass","#76 untracked read in computed does not create dependency":"pass","#117 untracked read of stale computed returns fresh value":"pass","#118 untracked transitively doesn't track through nested deps":"pass","#156 untracked write inside effect doesn't throw":"pass","#218 untracked read survives across batched writes":"pass","#219 batch inside untracked still coalesces writes":"fail"},"pota":{"#75 untracked read in effect does not create dependency":"fail","#76 untracked read in computed does not create dependency":"pass","#117 untracked read of stale computed returns fresh value":"pass","#118 untracked transitively doesn't track through nested deps":"pass","#156 untracked write inside effect doesn't throw":"fail","#218 untracked read survives across batched writes":"fail","#219 batch inside untracked still coalesces writes":"fail"},"@angular/core":{"#75 untracked read in effect does not create dependency":"pass","#76 untracked read in computed does not create dependency":"pass","#117 untracked read of stale computed returns fresh value":"pass","#118 untracked transitively doesn't track through nested deps":"pass","#156 untracked write inside effect doesn't throw":"pass","#218 untracked read survives across batched writes":"skip","#219 batch inside untracked still coalesces writes":"skip"},"anod":{"#75 untracked read in effect does not create dependency":"pass","#76 untracked read in computed does not create dependency":"pass","#117 untracked read of stale computed returns fresh value":"pass","#118 untracked transitively doesn't track through nested deps":"pass","#156 untracked write inside effect doesn't throw":"pass","#218 untracked read survives across batched writes":"pass","#219 batch inside untracked still coalesces writes":"pass"}}},{"section":"Error Handling","testNames":["#84 graph stays consistent after error in initial computed","#89 effect cleanup reset when effect throws","#90 effect disposed when cleanup throws","#91 exception halts propagation but other branches remain intact","#92 no stale scheduled updates left after exception","#154 batch throw: effects survive, graph consistent","#155 errors cached when watched by effect (live caching)","#177 skipped effects from failed flush not re-triggered by unrelated signal","#211 computed error chain: downstream computed also throws","#247 flush queue consistent after effect throw","#93 exception recovery in computed"],"results":{"Raph Next Signals":{"#84 graph stays consistent after error in initial computed":"pass","#89 effect cleanup reset when effect throws":"pass","#90 effect disposed when cleanup throws":"pass","#91 exception halts propagation but other branches remain intact":"pass","#92 no stale scheduled updates left after exception":"pass","#154 batch throw: effects survive, graph consistent":"pass","#155 errors cached when watched by effect (live caching)":"pass","#177 skipped effects from failed flush not re-triggered by unrelated signal":"pass","#211 computed error chain: downstream computed also throws":"pass","#247 flush queue consistent after effect throw":"pass","#93 exception recovery in computed":"pass"},"reflex":{"#84 graph stays consistent after error in initial computed":"timeout","#89 effect cleanup reset when effect throws":"timeout","#90 effect disposed when cleanup throws":"timeout","#91 exception halts propagation but other branches remain intact":"timeout","#92 no stale scheduled updates left after exception":"timeout","#154 batch throw: effects survive, graph consistent":"timeout","#155 errors cached when watched by effect (live caching)":"timeout","#177 skipped effects from failed flush not re-triggered by unrelated signal":"timeout","#211 computed error chain: downstream computed also throws":"timeout","#247 flush queue consistent after effect throw":"timeout","#93 exception recovery in computed":"timeout"},"alien-signals":{"#84 graph stays consistent after error in initial computed":"pass","#89 effect cleanup reset when effect throws":"pass","#90 effect disposed when cleanup throws":"pass","#91 exception halts propagation but other branches remain intact":"pass","#92 no stale scheduled updates left after exception":"pass","#154 batch throw: effects survive, graph consistent":"pass","#155 errors cached when watched by effect (live caching)":"pass","#177 skipped effects from failed flush not re-triggered by unrelated signal":"pass","#211 computed error chain: downstream computed also throws":"pass","#247 flush queue consistent after effect throw":"pass","#93 exception recovery in computed":"pass"},"@preact/signals-core":{"#84 graph stays consistent after error in initial computed":"pass","#89 effect cleanup reset when effect throws":"pass","#90 effect disposed when cleanup throws":"pass","#91 exception halts propagation but other branches remain intact":"pass","#92 no stale scheduled updates left after exception":"pass","#154 batch throw: effects survive, graph consistent":"pass","#155 errors cached when watched by effect (live caching)":"pass","#177 skipped effects from failed flush not re-triggered by unrelated signal":"pass","#211 computed error chain: downstream computed also throws":"pass","#247 flush queue consistent after effect throw":"pass","#93 exception recovery in computed":"pass"},"@reactively/core":{"#84 graph stays consistent after error in initial computed":"pass","#89 effect cleanup reset when effect throws":"skip","#90 effect disposed when cleanup throws":"skip","#91 exception halts propagation but other branches remain intact":"pass","#92 no stale scheduled updates left after exception":"pass","#154 batch throw: effects survive, graph consistent":"skip","#155 errors cached when watched by effect (live caching)":"pass","#177 skipped effects from failed flush not re-triggered by unrelated signal":"fail","#211 computed error chain: downstream computed also throws":"pass","#247 flush queue consistent after effect throw":"pass","#93 exception recovery in computed":"pass"},"tansu":{"#84 graph stays consistent after error in initial computed":"pass","#89 effect cleanup reset when effect throws":"skip","#90 effect disposed when cleanup throws":"skip","#91 exception halts propagation but other branches remain intact":"pass","#92 no stale scheduled updates left after exception":"pass","#154 batch throw: effects survive, graph consistent":"pass","#155 errors cached when watched by effect (live caching)":"pass","#177 skipped effects from failed flush not re-triggered by unrelated signal":"pass","#211 computed error chain: downstream computed also throws":"pass","#247 flush queue consistent after effect throw":"pass","#93 exception recovery in computed":"pass"},"signal-polyfill (TC39)":{"#84 graph stays consistent after error in initial computed":"pass","#89 effect cleanup reset when effect throws":"pass","#90 effect disposed when cleanup throws":"pass","#91 exception halts propagation but other branches remain intact":"pass","#92 no stale scheduled updates left after exception":"pass","#154 batch throw: effects survive, graph consistent":"skip","#155 errors cached when watched by effect (live caching)":"pass","#177 skipped effects from failed flush not re-triggered by unrelated signal":"pass","#211 computed error chain: downstream computed also throws":"pass","#247 flush queue consistent after effect throw":"pass","#93 exception recovery in computed":"pass"},"@vue/reactivity 3.5.43":{"#84 graph stays consistent after error in initial computed":"pass","#89 effect cleanup reset when effect throws":"pass","#90 effect disposed when cleanup throws":"pass","#91 exception halts propagation but other branches remain intact":"pass","#92 no stale scheduled updates left after exception":"pass","#154 batch throw: effects survive, graph consistent":"pass","#155 errors cached when watched by effect (live caching)":"pass","#177 skipped effects from failed flush not re-triggered by unrelated signal":"pass","#211 computed error chain: downstream computed also throws":"pass","#247 flush queue consistent after effect throw":"pass","#93 exception recovery in computed":"pass"},"@vue/reactivity 3.6.0-rc.9":{"#84 graph stays consistent after error in initial computed":"pass","#89 effect cleanup reset when effect throws":"pass","#90 effect disposed when cleanup throws":"pass","#91 exception halts propagation but other branches remain intact":"pass","#92 no stale scheduled updates left after exception":"pass","#154 batch throw: effects survive, graph consistent":"pass","#155 errors cached when watched by effect (live caching)":"pass","#177 skipped effects from failed flush not re-triggered by unrelated signal":"pass","#211 computed error chain: downstream computed also throws":"pass","#247 flush queue consistent after effect throw":"fail","#93 exception recovery in computed":"pass"},"mobx":{"#84 graph stays consistent after error in initial computed":"pass","#89 effect cleanup reset when effect throws":"skip","#90 effect disposed when cleanup throws":"skip","#91 exception halts propagation but other branches remain intact":"pass","#92 no stale scheduled updates left after exception":"pass","#154 batch throw: effects survive, graph consistent":"fail","#155 errors cached when watched by effect (live caching)":"pass","#177 skipped effects from failed flush not re-triggered by unrelated signal":"pass","#211 computed error chain: downstream computed also throws":"pass","#247 flush queue consistent after effect throw":"pass","#93 exception recovery in computed":"pass"},"@reatom/core":{"#84 graph stays consistent after error in initial computed":"pass","#89 effect cleanup reset when effect throws":"pass","#90 effect disposed when cleanup throws":"pass","#91 exception halts propagation but other branches remain intact":"pass","#92 no stale scheduled updates left after exception":"pass","#154 batch throw: effects survive, graph consistent":"pass","#155 errors cached when watched by effect (live caching)":"pass","#177 skipped effects from failed flush not re-triggered by unrelated signal":"pass","#211 computed error chain: downstream computed also throws":"pass","#247 flush queue consistent after effect throw":"pass","#93 exception recovery in computed":"pass"},"svelte":{"#84 graph stays consistent after error in initial computed":"pass","#89 effect cleanup reset when effect throws":"pass","#90 effect disposed when cleanup throws":"pass","#91 exception halts propagation but other branches remain intact":"pass","#92 no stale scheduled updates left after exception":"pass","#154 batch throw: effects survive, graph consistent":"skip","#155 errors cached when watched by effect (live caching)":"pass","#177 skipped effects from failed flush not re-triggered by unrelated signal":"pass","#211 computed error chain: downstream computed also throws":"pass","#247 flush queue consistent after effect throw":"pass","#93 exception recovery in computed":"pass"},"solid-js":{"#84 graph stays consistent after error in initial computed":"fail","#89 effect cleanup reset when effect throws":"pass","#90 effect disposed when cleanup throws":"pass","#91 exception halts propagation but other branches remain intact":"fail","#92 no stale scheduled updates left after exception":"fail","#154 batch throw: effects survive, graph consistent":"fail","#155 errors cached when watched by effect (live caching)":"fail","#177 skipped effects from failed flush not re-triggered by unrelated signal":"pass","#211 computed error chain: downstream computed also throws":"fail","#247 flush queue consistent after effect throw":"pass","#93 exception recovery in computed":"fail"},"@solidjs/signals":{"#84 graph stays consistent after error in initial computed":"timeout","#89 effect cleanup reset when effect throws":"timeout","#90 effect disposed when cleanup throws":"timeout","#91 exception halts propagation but other branches remain intact":"timeout","#92 no stale scheduled updates left after exception":"timeout","#154 batch throw: effects survive, graph consistent":"timeout","#155 errors cached when watched by effect (live caching)":"timeout","#177 skipped effects from failed flush not re-triggered by unrelated signal":"timeout","#211 computed error chain: downstream computed also throws":"timeout","#247 flush queue consistent after effect throw":"timeout","#93 exception recovery in computed":"timeout"},"S.js":{"#84 graph stays consistent after error in initial computed":"fail","#89 effect cleanup reset when effect throws":"pass","#90 effect disposed when cleanup throws":"pass","#91 exception halts propagation but other branches remain intact":"fail","#92 no stale scheduled updates left after exception":"fail","#154 batch throw: effects survive, graph consistent":"fail","#155 errors cached when watched by effect (live caching)":"fail","#177 skipped effects from failed flush not re-triggered by unrelated signal":"pass","#211 computed error chain: downstream computed also throws":"fail","#247 flush queue consistent after effect throw":"pass","#93 exception recovery in computed":"fail"},"pota":{"#84 graph stays consistent after error in initial computed":"pass","#89 effect cleanup reset when effect throws":"fail","#90 effect disposed when cleanup throws":"fail","#91 exception halts propagation but other branches remain intact":"pass","#92 no stale scheduled updates left after exception":"fail","#154 batch throw: effects survive, graph consistent":"fail","#155 errors cached when watched by effect (live caching)":"pass","#177 skipped effects from failed flush not re-triggered by unrelated signal":"fail","#211 computed error chain: downstream computed also throws":"fail","#247 flush queue consistent after effect throw":"fail","#93 exception recovery in computed":"fail"},"@angular/core":{"#84 graph stays consistent after error in initial computed":"pass","#89 effect cleanup reset when effect throws":"pass","#90 effect disposed when cleanup throws":"pass","#91 exception halts propagation but other branches remain intact":"pass","#92 no stale scheduled updates left after exception":"pass","#154 batch throw: effects survive, graph consistent":"skip","#155 errors cached when watched by effect (live caching)":"pass","#177 skipped effects from failed flush not re-triggered by unrelated signal":"fail","#211 computed error chain: downstream computed also throws":"pass","#247 flush queue consistent after effect throw":"fail","#93 exception recovery in computed":"pass"},"anod":{"#84 graph stays consistent after error in initial computed":"pass","#89 effect cleanup reset when effect throws":"pass","#90 effect disposed when cleanup throws":"pass","#91 exception halts propagation but other branches remain intact":"pass","#92 no stale scheduled updates left after exception":"pass","#154 batch throw: effects survive, graph consistent":"fail","#155 errors cached when watched by effect (live caching)":"pass","#177 skipped effects from failed flush not re-triggered by unrelated signal":"pass","#211 computed error chain: downstream computed also throws":"pass","#247 flush queue consistent after effect throw":"pass","#93 exception recovery in computed":"pass"}}},{"section":"Stale Evaluation Order","testNames":["#94 stale invocation does not trigger pending computations","#95 stale computations evaluated before their dependees","#158 stale chained computed accessed after update: values fresh","#159 pending computation created after dirty signal still updates","#97 flags indirectly updated during dirty-checking"],"results":{"Raph Next Signals":{"#94 stale invocation does not trigger pending computations":"pass","#95 stale computations evaluated before their dependees":"pass","#158 stale chained computed accessed after update: values fresh":"pass","#159 pending computation created after dirty signal still updates":"pass","#97 flags indirectly updated during dirty-checking":"pass"},"reflex":{"#94 stale invocation does not trigger pending computations":"timeout","#95 stale computations evaluated before their dependees":"timeout","#158 stale chained computed accessed after update: values fresh":"timeout","#159 pending computation created after dirty signal still updates":"timeout","#97 flags indirectly updated during dirty-checking":"timeout"},"alien-signals":{"#94 stale invocation does not trigger pending computations":"pass","#95 stale computations evaluated before their dependees":"pass","#158 stale chained computed accessed after update: values fresh":"pass","#159 pending computation created after dirty signal still updates":"pass","#97 flags indirectly updated during dirty-checking":"pass"},"@preact/signals-core":{"#94 stale invocation does not trigger pending computations":"pass","#95 stale computations evaluated before their dependees":"pass","#158 stale chained computed accessed after update: values fresh":"pass","#159 pending computation created after dirty signal still updates":"pass","#97 flags indirectly updated during dirty-checking":"pass"},"@reactively/core":{"#94 stale invocation does not trigger pending computations":"pass","#95 stale computations evaluated before their dependees":"pass","#158 stale chained computed accessed after update: values fresh":"pass","#159 pending computation created after dirty signal still updates":"pass","#97 flags indirectly updated during dirty-checking":"pass"},"tansu":{"#94 stale invocation does not trigger pending computations":"pass","#95 stale computations evaluated before their dependees":"pass","#158 stale chained computed accessed after update: values fresh":"pass","#159 pending computation created after dirty signal still updates":"pass","#97 flags indirectly updated during dirty-checking":"pass"},"signal-polyfill (TC39)":{"#94 stale invocation does not trigger pending computations":"pass","#95 stale computations evaluated before their dependees":"pass","#158 stale chained computed accessed after update: values fresh":"pass","#159 pending computation created after dirty signal still updates":"pass","#97 flags indirectly updated during dirty-checking":"pass"},"@vue/reactivity 3.5.43":{"#94 stale invocation does not trigger pending computations":"pass","#95 stale computations evaluated before their dependees":"pass","#158 stale chained computed accessed after update: values fresh":"pass","#159 pending computation created after dirty signal still updates":"pass","#97 flags indirectly updated during dirty-checking":"pass"},"@vue/reactivity 3.6.0-rc.9":{"#94 stale invocation does not trigger pending computations":"pass","#95 stale computations evaluated before their dependees":"pass","#158 stale chained computed accessed after update: values fresh":"pass","#159 pending computation created after dirty signal still updates":"pass","#97 flags indirectly updated during dirty-checking":"pass"},"mobx":{"#94 stale invocation does not trigger pending computations":"pass","#95 stale computations evaluated before their dependees":"fail","#158 stale chained computed accessed after update: values fresh":"pass","#159 pending computation created after dirty signal still updates":"pass","#97 flags indirectly updated during dirty-checking":"pass"},"@reatom/core":{"#94 stale invocation does not trigger pending computations":"pass","#95 stale computations evaluated before their dependees":"pass","#158 stale chained computed accessed after update: values fresh":"pass","#159 pending computation created after dirty signal still updates":"pass","#97 flags indirectly updated during dirty-checking":"pass"},"svelte":{"#94 stale invocation does not trigger pending computations":"pass","#95 stale computations evaluated before their dependees":"pass","#158 stale chained computed accessed after update: values fresh":"pass","#159 pending computation created after dirty signal still updates":"pass","#97 flags indirectly updated during dirty-checking":"pass"},"solid-js":{"#94 stale invocation does not trigger pending computations":"pass","#95 stale computations evaluated before their dependees":"pass","#158 stale chained computed accessed after update: values fresh":"pass","#159 pending computation created after dirty signal still updates":"pass","#97 flags indirectly updated during dirty-checking":"pass"},"@solidjs/signals":{"#94 stale invocation does not trigger pending computations":"timeout","#95 stale computations evaluated before their dependees":"timeout","#158 stale chained computed accessed after update: values fresh":"timeout","#159 pending computation created after dirty signal still updates":"timeout","#97 flags indirectly updated during dirty-checking":"timeout"},"S.js":{"#94 stale invocation does not trigger pending computations":"pass","#95 stale computations evaluated before their dependees":"pass","#158 stale chained computed accessed after update: values fresh":"pass","#159 pending computation created after dirty signal still updates":"pass","#97 flags indirectly updated during dirty-checking":"pass"},"pota":{"#94 stale invocation does not trigger pending computations":"pass","#95 stale computations evaluated before their dependees":"pass","#158 stale chained computed accessed after update: values fresh":"pass","#159 pending computation created after dirty signal still updates":"pass","#97 flags indirectly updated during dirty-checking":"pass"},"@angular/core":{"#94 stale invocation does not trigger pending computations":"pass","#95 stale computations evaluated before their dependees":"pass","#158 stale chained computed accessed after update: values fresh":"pass","#159 pending computation created after dirty signal still updates":"pass","#97 flags indirectly updated during dirty-checking":"pass"},"anod":{"#94 stale invocation does not trigger pending computations":"pass","#95 stale computations evaluated before their dependees":"pass","#158 stale chained computed accessed after update: values fresh":"pass","#159 pending computation created after dirty signal still updates":"pass","#97 flags indirectly updated during dirty-checking":"pass"}}},{"section":"Memory & GC","testNames":["#99 computed collectable by GC if nothing listening","#160 consumer links cleaned after losing all listeners","#161 multi-level computed cleanup after all listeners removed","#215 partial dispose: sibling effect still notified"],"results":{"Raph Next Signals":{"#99 computed collectable by GC if nothing listening":"pass","#160 consumer links cleaned after losing all listeners":"pass","#161 multi-level computed cleanup after all listeners removed":"pass","#215 partial dispose: sibling effect still notified":"pass"},"reflex":{"#99 computed collectable by GC if nothing listening":"timeout","#160 consumer links cleaned after losing all listeners":"timeout","#161 multi-level computed cleanup after all listeners removed":"timeout","#215 partial dispose: sibling effect still notified":"timeout"},"alien-signals":{"#99 computed collectable by GC if nothing listening":"pass","#160 consumer links cleaned after losing all listeners":"pass","#161 multi-level computed cleanup after all listeners removed":"pass","#215 partial dispose: sibling effect still notified":"pass"},"@preact/signals-core":{"#99 computed collectable by GC if nothing listening":"pass","#160 consumer links cleaned after losing all listeners":"pass","#161 multi-level computed cleanup after all listeners removed":"pass","#215 partial dispose: sibling effect still notified":"pass"},"@reactively/core":{"#99 computed collectable by GC if nothing listening":"pass","#160 consumer links cleaned after losing all listeners":"pass","#161 multi-level computed cleanup after all listeners removed":"pass","#215 partial dispose: sibling effect still notified":"pass"},"tansu":{"#99 computed collectable by GC if nothing listening":"pass","#160 consumer links cleaned after losing all listeners":"pass","#161 multi-level computed cleanup after all listeners removed":"pass","#215 partial dispose: sibling effect still notified":"pass"},"signal-polyfill (TC39)":{"#99 computed collectable by GC if nothing listening":"pass","#160 consumer links cleaned after losing all listeners":"pass","#161 multi-level computed cleanup after all listeners removed":"pass","#215 partial dispose: sibling effect still notified":"pass"},"@vue/reactivity 3.5.43":{"#99 computed collectable by GC if nothing listening":"pass","#160 consumer links cleaned after losing all listeners":"pass","#161 multi-level computed cleanup after all listeners removed":"pass","#215 partial dispose: sibling effect still notified":"pass"},"@vue/reactivity 3.6.0-rc.9":{"#99 computed collectable by GC if nothing listening":"pass","#160 consumer links cleaned after losing all listeners":"pass","#161 multi-level computed cleanup after all listeners removed":"pass","#215 partial dispose: sibling effect still notified":"pass"},"mobx":{"#99 computed collectable by GC if nothing listening":"pass","#160 consumer links cleaned after losing all listeners":"pass","#161 multi-level computed cleanup after all listeners removed":"pass","#215 partial dispose: sibling effect still notified":"pass"},"@reatom/core":{"#99 computed collectable by GC if nothing listening":"pass","#160 consumer links cleaned after losing all listeners":"pass","#161 multi-level computed cleanup after all listeners removed":"pass","#215 partial dispose: sibling effect still notified":"pass"},"svelte":{"#99 computed collectable by GC if nothing listening":"pass","#160 consumer links cleaned after losing all listeners":"pass","#161 multi-level computed cleanup after all listeners removed":"pass","#215 partial dispose: sibling effect still notified":"pass"},"solid-js":{"#99 computed collectable by GC if nothing listening":"pass","#160 consumer links cleaned after losing all listeners":"pass","#161 multi-level computed cleanup after all listeners removed":"pass","#215 partial dispose: sibling effect still notified":"pass"},"@solidjs/signals":{"#99 computed collectable by GC if nothing listening":"timeout","#160 consumer links cleaned after losing all listeners":"timeout","#161 multi-level computed cleanup after all listeners removed":"timeout","#215 partial dispose: sibling effect still notified":"timeout"},"S.js":{"#99 computed collectable by GC if nothing listening":"pass","#160 consumer links cleaned after losing all listeners":"pass","#161 multi-level computed cleanup after all listeners removed":"pass","#215 partial dispose: sibling effect still notified":"pass"},"pota":{"#99 computed collectable by GC if nothing listening":"pass","#160 consumer links cleaned after losing all listeners":"fail","#161 multi-level computed cleanup after all listeners removed":"fail","#215 partial dispose: sibling effect still notified":"fail"},"@angular/core":{"#99 computed collectable by GC if nothing listening":"pass","#160 consumer links cleaned after losing all listeners":"pass","#161 multi-level computed cleanup after all listeners removed":"pass","#215 partial dispose: sibling effect still notified":"pass"},"anod":{"#99 computed collectable by GC if nothing listening":"pass","#160 consumer links cleaned after losing all listeners":"pass","#161 multi-level computed cleanup after all listeners removed":"pass","#215 partial dispose: sibling effect still notified":"pass"}}},{"section":"Behavioral Differences","testNames":["#17 computed evaluation timing","#15 unread computed subscription","#146 recompute count on multiple dep changes","#29 NaN equality semantics","#167 computed NaN downstream propagation","#30 same-reference signal write","#176 batch return value","#173 mid-propagation read isolation","#174 intra-run read-after-write","#88 effect subscription after first-run throw","#106 effect throw isolation in flush","#86 computed error caching","#107 non-Error throw caching","#49 inner write re-run through computed chain","#62 infinite loop in effect","#175 effect multi-signal write batching","#246 throwing run body child effect cleanup","#244 sibling cleanup order on dispose"],"type":"behavioral","results":{"Raph Next Signals":{"#17 computed evaluation timing":"lazy","#15 unread computed subscription":"no subscription","#146 recompute count on multiple dep changes":"single recompute","#29 NaN equality semantics":"===","#167 computed NaN downstream propagation":"===","#30 same-reference signal write":"skips","#176 batch return value":"returns value","#173 mid-propagation read isolation":"post-write","#174 intra-run read-after-write":"post-write","#88 effect subscription after first-run throw":"unsubscribes","#106 effect throw isolation in flush":"continues","#86 computed error caching":"re-evaluates","#107 non-Error throw caching":"re-evaluates","#49 inner write re-run through computed chain":"runs 2x per write","#62 infinite loop in effect":"no throw","#175 effect multi-signal write batching":"batched","#246 throwing run body child effect cleanup":"disposes children","#244 sibling cleanup order on dispose":"LIFO"},"reflex":{"#17 computed evaluation timing":"timeout","#15 unread computed subscription":"timeout","#146 recompute count on multiple dep changes":"timeout","#29 NaN equality semantics":"timeout","#167 computed NaN downstream propagation":"timeout","#30 same-reference signal write":"timeout","#176 batch return value":"timeout","#173 mid-propagation read isolation":"timeout","#174 intra-run read-after-write":"timeout","#88 effect subscription after first-run throw":"timeout","#106 effect throw isolation in flush":"timeout","#86 computed error caching":"timeout","#107 non-Error throw caching":"timeout","#49 inner write re-run through computed chain":"timeout","#62 infinite loop in effect":"timeout","#175 effect multi-signal write batching":"timeout","#246 throwing run body child effect cleanup":"timeout","#244 sibling cleanup order on dispose":"timeout"},"alien-signals":{"#17 computed evaluation timing":"lazy","#15 unread computed subscription":"no subscription","#146 recompute count on multiple dep changes":"single recompute","#29 NaN equality semantics":"===","#167 computed NaN downstream propagation":"===","#30 same-reference signal write":"skips","#176 batch return value":"returns void","#173 mid-propagation read isolation":"post-write","#174 intra-run read-after-write":"post-write","#88 effect subscription after first-run throw":"keeps subscribed","#106 effect throw isolation in flush":"halts flush","#86 computed error caching":"returns stale","#107 non-Error throw caching":"returns stale","#49 inner write re-run through computed chain":"runs 1x per write","#62 infinite loop in effect":"no throw","#175 effect multi-signal write batching":"unbatched (2 runs)","#246 throwing run body child effect cleanup":"children survive","#244 sibling cleanup order on dispose":"LIFO"},"@preact/signals-core":{"#17 computed evaluation timing":"lazy","#15 unread computed subscription":"no subscription","#146 recompute count on multiple dep changes":"single recompute","#29 NaN equality semantics":"===","#167 computed NaN downstream propagation":"===","#30 same-reference signal write":"skips","#176 batch return value":"returns void","#173 mid-propagation read isolation":"post-write","#174 intra-run read-after-write":"post-write","#88 effect subscription after first-run throw":"unsubscribes","#106 effect throw isolation in flush":"continues","#86 computed error caching":"caches error","#107 non-Error throw caching":"caches error","#49 inner write re-run through computed chain":"runs 2x per write","#62 infinite loop in effect":"cycle detected","#175 effect multi-signal write batching":"batched","#246 throwing run body child effect cleanup":"children survive","#244 sibling cleanup order on dispose":"no cascade"},"@reactively/core":{"#17 computed evaluation timing":"lazy","#15 unread computed subscription":"no subscription","#146 recompute count on multiple dep changes":"single recompute","#29 NaN equality semantics":"===","#167 computed NaN downstream propagation":"===","#30 same-reference signal write":"skips","#176 batch return value":"skip","#173 mid-propagation read isolation":"throws","#174 intra-run read-after-write":"throws","#88 effect subscription after first-run throw":"keeps subscribed","#106 effect throw isolation in flush":"halts flush","#86 computed error caching":"re-evaluates","#107 non-Error throw caching":"re-evaluates","#49 inner write re-run through computed chain":"runs 2x per write","#62 infinite loop in effect":"manual bail (200+)","#175 effect multi-signal write batching":"error","#246 throwing run body child effect cleanup":"disposes children","#244 sibling cleanup order on dispose":"skip"},"tansu":{"#17 computed evaluation timing":"lazy","#15 unread computed subscription":"no subscription","#146 recompute count on multiple dep changes":"single recompute","#29 NaN equality semantics":"Object.is","#167 computed NaN downstream propagation":"Object.is","#30 same-reference signal write":"propagates","#176 batch return value":"returns void","#173 mid-propagation read isolation":"post-write","#174 intra-run read-after-write":"post-write","#88 effect subscription after first-run throw":"keeps subscribed","#106 effect throw isolation in flush":"continues","#86 computed error caching":"caches error","#107 non-Error throw caching":"caches error","#49 inner write re-run through computed chain":"runs 2x per write","#62 infinite loop in effect":"manual bail (200+)","#175 effect multi-signal write batching":"batched","#246 throwing run body child effect cleanup":"children survive","#244 sibling cleanup order on dispose":"skip"},"signal-polyfill (TC39)":{"#17 computed evaluation timing":"lazy","#15 unread computed subscription":"no subscription","#146 recompute count on multiple dep changes":"single recompute","#29 NaN equality semantics":"Object.is","#167 computed NaN downstream propagation":"Object.is","#30 same-reference signal write":"skips","#176 batch return value":"skip","#173 mid-propagation read isolation":"post-write","#174 intra-run read-after-write":"post-write","#88 effect subscription after first-run throw":"keeps subscribed","#106 effect throw isolation in flush":"continues","#86 computed error caching":"caches error","#107 non-Error throw caching":"caches error","#49 inner write re-run through computed chain":"runs 1x, then blocks","#62 infinite loop in effect":"no throw","#175 effect multi-signal write batching":"unbatched (2 runs)","#246 throwing run body child effect cleanup":"children survive","#244 sibling cleanup order on dispose":"no cascade"},"@vue/reactivity 3.5.43":{"#17 computed evaluation timing":"lazy","#15 unread computed subscription":"no subscription","#146 recompute count on multiple dep changes":"single recompute","#29 NaN equality semantics":"Object.is","#167 computed NaN downstream propagation":"Object.is","#30 same-reference signal write":"skips","#176 batch return value":"returns void","#173 mid-propagation read isolation":"post-write","#174 intra-run read-after-write":"post-write","#88 effect subscription after first-run throw":"keeps subscribed","#106 effect throw isolation in flush":"continues","#86 computed error caching":"returns stale","#107 non-Error throw caching":"returns stale","#49 inner write re-run through computed chain":"runs 1x per write","#62 infinite loop in effect":"no throw","#175 effect multi-signal write batching":"unbatched (2 runs)","#246 throwing run body child effect cleanup":"children survive","#244 sibling cleanup order on dispose":"no cascade"},"@vue/reactivity 3.6.0-rc.9":{"#17 computed evaluation timing":"lazy","#15 unread computed subscription":"no subscription","#146 recompute count on multiple dep changes":"single recompute","#29 NaN equality semantics":"Object.is","#167 computed NaN downstream propagation":"Object.is","#30 same-reference signal write":"skips","#176 batch return value":"returns void","#173 mid-propagation read isolation":"post-write","#174 intra-run read-after-write":"post-write","#88 effect subscription after first-run throw":"keeps subscribed","#106 effect throw isolation in flush":"halts flush","#86 computed error caching":"returns stale","#107 non-Error throw caching":"returns stale","#49 inner write re-run through computed chain":"runs 1x per write","#62 infinite loop in effect":"no throw","#175 effect multi-signal write batching":"unbatched (2 runs)","#246 throwing run body child effect cleanup":"children survive","#244 sibling cleanup order on dispose":"no cascade"},"mobx":{"#17 computed evaluation timing":"lazy","#15 unread computed subscription":"no subscription","#146 recompute count on multiple dep changes":"single recompute","#29 NaN equality semantics":"===","#167 computed NaN downstream propagation":"===","#30 same-reference signal write":"propagates","#176 batch return value":"error","#173 mid-propagation read isolation":"post-write","#174 intra-run read-after-write":"post-write","#88 effect subscription after first-run throw":"keeps subscribed","#106 effect throw isolation in flush":"continues","#86 computed error caching":"re-evaluates","#107 non-Error throw caching":"re-evaluates","#49 inner write re-run through computed chain":"runs 2x per write","#62 infinite loop in effect":"no throw","#175 effect multi-signal write batching":"batched","#246 throwing run body child effect cleanup":"children survive","#244 sibling cleanup order on dispose":"skip"},"@reatom/core":{"#17 computed evaluation timing":"lazy","#15 unread computed subscription":"no subscription","#146 recompute count on multiple dep changes":"single recompute","#29 NaN equality semantics":"Object.is","#167 computed NaN downstream propagation":"Object.is","#30 same-reference signal write":"skips","#176 batch return value":"returns void","#173 mid-propagation read isolation":"post-write","#174 intra-run read-after-write":"post-write","#88 effect subscription after first-run throw":"unsubscribes","#106 effect throw isolation in flush":"continues","#86 computed error caching":"caches error","#107 non-Error throw caching":"caches error","#49 inner write re-run through computed chain":"runs 2x per write","#62 infinite loop in effect":"cycle detected","#175 effect multi-signal write batching":"batched","#246 throwing run body child effect cleanup":"disposes children","#244 sibling cleanup order on dispose":"FIFO"},"svelte":{"#17 computed evaluation timing":"lazy","#15 unread computed subscription":"no subscription","#146 recompute count on multiple dep changes":"single recompute","#29 NaN equality semantics":"===","#167 computed NaN downstream propagation":"===","#30 same-reference signal write":"skips","#176 batch return value":"skip","#173 mid-propagation read isolation":"post-write","#174 intra-run read-after-write":"throws","#88 effect subscription after first-run throw":"unsubscribes","#106 effect throw isolation in flush":"halts flush","#86 computed error caching":"re-evaluates","#107 non-Error throw caching":"re-evaluates","#49 inner write re-run through computed chain":"runs 2x per write","#62 infinite loop in effect":"cycle detected","#175 effect multi-signal write batching":"batched","#246 throwing run body child effect cleanup":"children survive","#244 sibling cleanup order on dispose":"no cascade"},"solid-js":{"#17 computed evaluation timing":"eager","#15 unread computed subscription":"subscribes eagerly","#146 recompute count on multiple dep changes":"2 recomputes","#29 NaN equality semantics":"===","#167 computed NaN downstream propagation":"===","#30 same-reference signal write":"skips","#176 batch return value":"returns void","#173 mid-propagation read isolation":"post-write","#174 intra-run read-after-write":"post-write","#88 effect subscription after first-run throw":"unsubscribes","#106 effect throw isolation in flush":"halts flush","#86 computed error caching":"error","#107 non-Error throw caching":"error","#49 inner write re-run through computed chain":"runs 2x per write","#62 infinite loop in effect":"manual bail (200+)","#175 effect multi-signal write batching":"batched","#246 throwing run body child effect cleanup":"children survive","#244 sibling cleanup order on dispose":"no cascade"},"@solidjs/signals":{"#17 computed evaluation timing":"timeout","#15 unread computed subscription":"timeout","#146 recompute count on multiple dep changes":"timeout","#29 NaN equality semantics":"timeout","#167 computed NaN downstream propagation":"timeout","#30 same-reference signal write":"timeout","#176 batch return value":"timeout","#173 mid-propagation read isolation":"timeout","#174 intra-run read-after-write":"timeout","#88 effect subscription after first-run throw":"timeout","#106 effect throw isolation in flush":"timeout","#86 computed error caching":"timeout","#107 non-Error throw caching":"timeout","#49 inner write re-run through computed chain":"timeout","#62 infinite loop in effect":"timeout","#175 effect multi-signal write batching":"timeout","#246 throwing run body child effect cleanup":"timeout","#244 sibling cleanup order on dispose":"timeout"},"S.js":{"#17 computed evaluation timing":"eager","#15 unread computed subscription":"subscribes eagerly","#146 recompute count on multiple dep changes":"2 recomputes","#29 NaN equality semantics":"===","#167 computed NaN downstream propagation":"===","#30 same-reference signal write":"propagates","#176 batch return value":"returns void","#173 mid-propagation read isolation":"post-write","#174 intra-run read-after-write":"throws","#88 effect subscription after first-run throw":"keeps subscribed","#106 effect throw isolation in flush":"halts flush","#86 computed error caching":"error","#107 non-Error throw caching":"error","#49 inner write re-run through computed chain":"runs 2x per write","#62 infinite loop in effect":"manual bail (200+)","#175 effect multi-signal write batching":"batched","#246 throwing run body child effect cleanup":"children survive","#244 sibling cleanup order on dispose":"no cascade"},"pota":{"#17 computed evaluation timing":"lazy","#15 unread computed subscription":"no subscription","#146 recompute count on multiple dep changes":"2 recomputes","#29 NaN equality semantics":"===","#167 computed NaN downstream propagation":"===","#30 same-reference signal write":"skips","#176 batch return value":"returns void","#173 mid-propagation read isolation":"unknown","#174 intra-run read-after-write":"unknown","#88 effect subscription after first-run throw":"error","#106 effect throw isolation in flush":"error","#86 computed error caching":"re-evaluates","#107 non-Error throw caching":"re-evaluates","#49 inner write re-run through computed chain":"no re-run","#62 infinite loop in effect":"error","#175 effect multi-signal write batching":"batched","#246 throwing run body child effect cleanup":"disposes children","#244 sibling cleanup order on dispose":"no cascade"},"@angular/core":{"#17 computed evaluation timing":"lazy","#15 unread computed subscription":"no subscription","#146 recompute count on multiple dep changes":"single recompute","#29 NaN equality semantics":"Object.is","#167 computed NaN downstream propagation":"Object.is","#30 same-reference signal write":"skips","#176 batch return value":"skip","#173 mid-propagation read isolation":"post-write","#174 intra-run read-after-write":"post-write","#88 effect subscription after first-run throw":"keeps subscribed","#106 effect throw isolation in flush":"halts flush","#86 computed error caching":"caches error","#107 non-Error throw caching":"caches error","#49 inner write re-run through computed chain":"runs 2x per write","#62 infinite loop in effect":"manual bail (200+)","#175 effect multi-signal write batching":"unbatched (2 runs)","#246 throwing run body child effect cleanup":"children survive","#244 sibling cleanup order on dispose":"no cascade"},"anod":{"#17 computed evaluation timing":"eager","#15 unread computed subscription":"no subscription","#146 recompute count on multiple dep changes":"single recompute","#29 NaN equality semantics":"===","#167 computed NaN downstream propagation":"===","#30 same-reference signal write":"skips","#176 batch return value":"returns void","#173 mid-propagation read isolation":"post-write","#174 intra-run read-after-write":"post-write","#88 effect subscription after first-run throw":"unsubscribes","#106 effect throw isolation in flush":"continues","#86 computed error caching":"caches error","#107 non-Error throw caching":"caches error","#49 inner write re-run through computed chain":"runs 2x per write","#62 infinite loop in effect":"manual bail (200+)","#175 effect multi-signal write batching":"batched","#246 throwing run body child effect cleanup":"children survive","#244 sibling cleanup order on dispose":"LIFO"}}}]}