Version Packages (beta) - #3717
Conversation
487a345 to
e1e64e3
Compare
5cf43d8 to
5a59bb8
Compare
b5aac02 to
9760f64
Compare
b55d57a to
447013b
Compare
d6a16f5 to
b2cac62
Compare
438f586 to
f771585
Compare
8535a74 to
dc68611
Compare
4ca6d17 to
7e48e7b
Compare
🧪 E2E Test Results❌ Some tests failed ❌ Failed E2E Tests▲ Vercel Production (9 failed)python-node (8 failed):
tanstack-start-node (1 failed):
🌐 Cross-language Conformance (9 failed)python (9 failed):
|
| Passed | Failed | Skipped | Total | |
|---|---|---|---|---|
| ❌ ▲ Vercel Production | 3569 | 9 | 742 | 4320 |
| ✅ 💻 Local Development | 3922 | 0 | 558 | 4480 |
| ✅ 📦 Local Production | 3922 | 0 | 558 | 4480 |
| ✅ 🐘 Local Postgres | 3922 | 0 | 558 | 4480 |
| ✅ 🪟 Windows | 320 | 0 | 0 | 320 |
| ❌ 🌐 Cross-language Conformance | 0 | 9 | 132 | 141 |
| ✅ vercel-http-transport | 817 | 0 | 143 | 960 |
| ✅ vercel-multi-region | 27 | 0 | 0 | 27 |
| ✅ vercel-ws-transport | 553 | 0 | 87 | 640 |
| Total | 17052 | 18 | 2778 | 19848 |
Details by Category
❌ ▲ Vercel Production
| App | Passed | Failed | Skipped |
|---|---|---|---|
| ✅ astro-node | 132 | 0 | 28 |
| ✅ astro-quickjs | 132 | 0 | 28 |
| ✅ example-node | 132 | 0 | 28 |
| ✅ example-quickjs | 132 | 0 | 28 |
| ✅ express-node | 132 | 0 | 28 |
| ✅ express-quickjs | 132 | 0 | 28 |
| ✅ fastify-node | 132 | 0 | 28 |
| ✅ fastify-quickjs | 132 | 0 | 28 |
| ✅ hono-node | 132 | 0 | 28 |
| ✅ hono-quickjs | 132 | 0 | 28 |
| ✅ nest-node | 132 | 0 | 28 |
| ✅ nest-quickjs | 132 | 0 | 28 |
| ✅ nextjs-turbopack-node | 157 | 0 | 3 |
| ✅ nextjs-turbopack-quickjs | 157 | 0 | 3 |
| ✅ nextjs-webpack-node | 157 | 0 | 3 |
| ✅ nextjs-webpack-quickjs | 157 | 0 | 3 |
| ✅ nitro-node | 132 | 0 | 28 |
| ✅ nitro-quickjs | 132 | 0 | 28 |
| ✅ nuxt-node | 132 | 0 | 28 |
| ✅ nuxt-quickjs | 132 | 0 | 28 |
| ❌ python-node | 0 | 8 | 152 |
| ✅ sveltekit-node | 151 | 0 | 9 |
| ✅ sveltekit-quickjs | 151 | 0 | 9 |
| ❌ tanstack-start-node | 131 | 1 | 28 |
| ✅ tanstack-start-quickjs | 132 | 0 | 28 |
| ✅ vite-node | 132 | 0 | 28 |
| ✅ vite-quickjs | 132 | 0 | 28 |
✅ 💻 Local Development
| App | Passed | Failed | Skipped |
|---|---|---|---|
| ✅ astro-stable-node | 134 | 0 | 26 |
| ✅ astro-stable-quickjs | 134 | 0 | 26 |
| ✅ express-stable-node | 134 | 0 | 26 |
| ✅ express-stable-quickjs | 134 | 0 | 26 |
| ✅ fastify-stable-node | 134 | 0 | 26 |
| ✅ fastify-stable-quickjs | 134 | 0 | 26 |
| ✅ hono-stable-node | 134 | 0 | 26 |
| ✅ hono-stable-quickjs | 134 | 0 | 26 |
| ✅ nest-stable-node | 134 | 0 | 26 |
| ✅ nest-stable-quickjs | 134 | 0 | 26 |
| ✅ nextjs-turbopack-canary-node | 141 | 0 | 19 |
| ✅ nextjs-turbopack-canary-quickjs | 141 | 0 | 19 |
| ✅ nextjs-turbopack-stable-node | 160 | 0 | 0 |
| ✅ nextjs-turbopack-stable-quickjs | 160 | 0 | 0 |
| ✅ nextjs-webpack-canary-node | 141 | 0 | 19 |
| ✅ nextjs-webpack-canary-quickjs | 141 | 0 | 19 |
| ✅ nextjs-webpack-stable-node | 160 | 0 | 0 |
| ✅ nextjs-webpack-stable-quickjs | 160 | 0 | 0 |
| ✅ nitro-stable-node | 134 | 0 | 26 |
| ✅ nitro-stable-quickjs | 134 | 0 | 26 |
| ✅ nuxt-stable-node | 134 | 0 | 26 |
| ✅ nuxt-stable-quickjs | 134 | 0 | 26 |
| ✅ sveltekit-stable-node | 153 | 0 | 7 |
| ✅ sveltekit-stable-quickjs | 153 | 0 | 7 |
| ✅ tanstack-start-node | 134 | 0 | 26 |
| ✅ tanstack-start-quickjs | 134 | 0 | 26 |
| ✅ vite-stable-node | 134 | 0 | 26 |
| ✅ vite-stable-quickjs | 134 | 0 | 26 |
✅ 📦 Local Production
| App | Passed | Failed | Skipped |
|---|---|---|---|
| ✅ astro-stable-node | 134 | 0 | 26 |
| ✅ astro-stable-quickjs | 134 | 0 | 26 |
| ✅ express-stable-node | 134 | 0 | 26 |
| ✅ express-stable-quickjs | 134 | 0 | 26 |
| ✅ fastify-stable-node | 134 | 0 | 26 |
| ✅ fastify-stable-quickjs | 134 | 0 | 26 |
| ✅ hono-stable-node | 134 | 0 | 26 |
| ✅ hono-stable-quickjs | 134 | 0 | 26 |
| ✅ nest-stable-node | 134 | 0 | 26 |
| ✅ nest-stable-quickjs | 134 | 0 | 26 |
| ✅ nextjs-turbopack-canary-node | 141 | 0 | 19 |
| ✅ nextjs-turbopack-canary-quickjs | 141 | 0 | 19 |
| ✅ nextjs-turbopack-stable-node | 160 | 0 | 0 |
| ✅ nextjs-turbopack-stable-quickjs | 160 | 0 | 0 |
| ✅ nextjs-webpack-canary-node | 141 | 0 | 19 |
| ✅ nextjs-webpack-canary-quickjs | 141 | 0 | 19 |
| ✅ nextjs-webpack-stable-node | 160 | 0 | 0 |
| ✅ nextjs-webpack-stable-quickjs | 160 | 0 | 0 |
| ✅ nitro-stable-node | 134 | 0 | 26 |
| ✅ nitro-stable-quickjs | 134 | 0 | 26 |
| ✅ nuxt-stable-node | 134 | 0 | 26 |
| ✅ nuxt-stable-quickjs | 134 | 0 | 26 |
| ✅ sveltekit-stable-node | 153 | 0 | 7 |
| ✅ sveltekit-stable-quickjs | 153 | 0 | 7 |
| ✅ tanstack-start-node | 134 | 0 | 26 |
| ✅ tanstack-start-quickjs | 134 | 0 | 26 |
| ✅ vite-stable-node | 134 | 0 | 26 |
| ✅ vite-stable-quickjs | 134 | 0 | 26 |
✅ 🐘 Local Postgres
| App | Passed | Failed | Skipped |
|---|---|---|---|
| ✅ astro-stable-node | 134 | 0 | 26 |
| ✅ astro-stable-quickjs | 134 | 0 | 26 |
| ✅ express-stable-node | 134 | 0 | 26 |
| ✅ express-stable-quickjs | 134 | 0 | 26 |
| ✅ fastify-stable-node | 134 | 0 | 26 |
| ✅ fastify-stable-quickjs | 134 | 0 | 26 |
| ✅ hono-stable-node | 134 | 0 | 26 |
| ✅ hono-stable-quickjs | 134 | 0 | 26 |
| ✅ nest-stable-node | 134 | 0 | 26 |
| ✅ nest-stable-quickjs | 134 | 0 | 26 |
| ✅ nextjs-turbopack-canary-node | 141 | 0 | 19 |
| ✅ nextjs-turbopack-canary-quickjs | 141 | 0 | 19 |
| ✅ nextjs-turbopack-stable-node | 160 | 0 | 0 |
| ✅ nextjs-turbopack-stable-quickjs | 160 | 0 | 0 |
| ✅ nextjs-webpack-canary-node | 141 | 0 | 19 |
| ✅ nextjs-webpack-canary-quickjs | 141 | 0 | 19 |
| ✅ nextjs-webpack-stable-node | 160 | 0 | 0 |
| ✅ nextjs-webpack-stable-quickjs | 160 | 0 | 0 |
| ✅ nitro-stable-node | 134 | 0 | 26 |
| ✅ nitro-stable-quickjs | 134 | 0 | 26 |
| ✅ nuxt-stable-node | 134 | 0 | 26 |
| ✅ nuxt-stable-quickjs | 134 | 0 | 26 |
| ✅ sveltekit-stable-node | 153 | 0 | 7 |
| ✅ sveltekit-stable-quickjs | 153 | 0 | 7 |
| ✅ tanstack-start-node | 134 | 0 | 26 |
| ✅ tanstack-start-quickjs | 134 | 0 | 26 |
| ✅ vite-stable-node | 134 | 0 | 26 |
| ✅ vite-stable-quickjs | 134 | 0 | 26 |
✅ 🪟 Windows
| App | Passed | Failed | Skipped |
|---|---|---|---|
| ✅ nextjs-turbopack-node | 160 | 0 | 0 |
| ✅ nextjs-turbopack-quickjs | 160 | 0 | 0 |
❌ 🌐 Cross-language Conformance
| App | Passed | Failed | Skipped |
|---|---|---|---|
| ❌ python | 0 | 9 | 132 |
✅ vercel-http-transport
| App | Passed | Failed | Skipped |
|---|---|---|---|
| ✅ example | 132 | 0 | 28 |
| ✅ express | 132 | 0 | 28 |
| ✅ hono | 132 | 0 | 28 |
| ✅ nextjs-turbopack | 157 | 0 | 3 |
| ✅ nitro | 132 | 0 | 28 |
| ✅ vite | 132 | 0 | 28 |
✅ vercel-multi-region
| App | Passed | Failed | Skipped |
|---|---|---|---|
| ✅ nextjs-turbopack | 27 | 0 | 0 |
✅ vercel-ws-transport
| App | Passed | Failed | Skipped |
|---|---|---|---|
| ✅ example | 132 | 0 | 28 |
| ✅ express | 132 | 0 | 28 |
| ✅ nextjs-turbopack | 157 | 0 | 3 |
| ✅ vite | 132 | 0 | 28 |
Sim WorldSimulated world deterministic testing for races. Traces 🟠 world-sim scenario book — 1 fail of 41 total
Full trace: |
e61f089 to
71bc027
Compare
4983134 to
bf9de1c
Compare
|
No backport to This is the changesets-generated "Version Packages (beta)" commit: it only consumes changeset files, bumps To override, re-run the Backport to stable workflow manually via |
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
mainis currently in pre mode so this branch has prereleases rather than normal releases. If you want to exit prereleases, runchangeset pre exitonmain.Releases
@workflow/core@5.0.0-beta.44
Minor Changes
#3700
9b1b8c7Thanks @VaguelySerious! - Pin correlation-ID draw order to event-log order (Node.js VM engine), so two concurrent replays of the same run assign the same IDs even when one loaded a shorter event-log prefix. SetWORKFLOW_LOG_ORDER_DRAWS=0to opt back into arrival-order delivery resolution.#3570
9454d51Thanks @pranaygp! - Addworld.runs.waitForTerminalStatus(runId, { timeoutMs, signal, resolveData })method, which long-polls until the run reaches a terminal status.await run.returnValuenow internally uses this, if the World supports it, instead of using a polling interval.#3634
7b79ba3Thanks @pranaygp! - New runs are created with the sealed-log event identity (specVersion 7). A sealed-log run's event positions are assigned by the backend before each write commits, so concurrent writers never contend for a position. A position whose writer dies is closed by the backend with anoopevent; replay steps over those without delivering them or advancing the deterministic clock. SetWORKFLOW_SEALED_LOG=0to put a deployment back on the previous scheme. Every runtime reads sealed logs either way, and a run's version is fixed at creation, so the setting only affects new runs.Patch Changes
#3675
5b5a926Thanks @TooTallNate! - Step-argument serialization failures now fail the step with a catchableSerializationError(via astep_failedevent, like a step-body failure) instead of failing the run from outside the workflow, and when uncaught they fail the run immediately as aUSER_ERRORrather than retrying until max queue deliveries.#3728
f771585Thanks @pranaygp! - Hold process-wide state onglobalThisrather than at module scope in the packages that get bundled into the host application's server build, where a bundler compiles one copy of each module per layer. Covers warn-once latches, lazy caches, the VM script and QuickJS asset caches, the dev-server port cache, and step single-flight, whose per-copy map was not actually single-flight. State that is deliberately per-copy is annotated with the reason.#3728
f771585Thanks @pranaygp! - Build the workflow entrypoint's queue handler from the runtime World (getWorld()) instead ofgetWorldHandlers(), so a process creates one World rather than two. A stateful World no longer gets duplicate connection pools or queue workers.#3743
bf9de1cThanks @VaguelySerious! - A wait-continuation delivered before its wait elapses now re-arms under a fresh idempotency key instead of losing the wait's timer. Previously the re-enqueue reused a key the early delivery had already spent, so the world's dedupe window dropped it and the run slept indefinitely with nothing scheduled to wake it.Updated dependencies [
f771585,f771585,d012bf0,9454d51,7b79ba3,f771585,bf9de1c,f771585,dc68611,dc68611]:@workflow/utils@5.0.0-beta.9
Minor Changes
f771585Thanks @pranaygp! - AddglobalSingleton(), which parks a package's process-wide state onglobalThisso bundled copies of a module in one process share it.Patch Changes
f771585Thanks @pranaygp! - DeclaresideEffects: falseso bundlers can drop the unused parts of the barrel from a host application's build.workflow@5.0.0-beta.44
Minor Changes
9b1b8c7Thanks @VaguelySerious! - Pin correlation-ID draw order to event-log order (Node.js VM engine), so two concurrent replays of the same run assign the same IDs even when one loaded a shorter event-log prefix. SetWORKFLOW_LOG_ORDER_DRAWS=0to opt back into arrival-order delivery resolution.Patch Changes
5b5a926,f771585,9b1b8c7,f771585,f771585,9454d51,7b79ba3,8a2648e,37ed049,f771585,bf9de1c]:@workflow/world@5.0.0-beta.29
Minor Changes
#3570
9454d51Thanks @pranaygp! - Addworld.runs.waitForTerminalStatus(runId, { timeoutMs, signal, resolveData })method, which long-polls until the run reaches a terminal status.await run.returnValuenow internally uses this, if the World supports it, instead of using a polling interval.#3634
7b79ba3Thanks @pranaygp! - New runs are created with the sealed-log event identity (specVersion 7). A sealed-log run's event positions are assigned by the backend before each write commits, so concurrent writers never contend for a position. A position whose writer dies is closed by the backend with anoopevent; replay steps over those without delivering them or advancing the deterministic clock. SetWORKFLOW_SEALED_LOG=0to put a deployment back on the previous scheme. Every runtime reads sealed logs either way, and a run's version is fixed at creation, so the setting only affects new runs.Patch Changes
#3728
f771585Thanks @pranaygp! - Hold process-wide state onglobalThisrather than at module scope in the packages that get bundled into the host application's server build, where a bundler compiles one copy of each module per layer. Covers warn-once latches, lazy caches, the VM script and QuickJS asset caches, the dev-server port cache, and step single-flight, whose per-copy map was not actually single-flight. State that is deliberately per-copy is annotated with the reason.#3743
bf9de1cThanks @VaguelySerious! - A wait-continuation delivered before its wait elapses now re-arms under a fresh idempotency key instead of losing the wait's timer. Previously the re-enqueue reused a key the early delivery had already spent, so the world's dedupe window dropped it and the run slept indefinitely with nothing scheduled to wake it.@workflow/world-local@5.0.0-beta.38
Minor Changes
#3570
9454d51Thanks @pranaygp! - Addworld.runs.waitForTerminalStatus(runId, { timeoutMs, signal, resolveData })method, which long-polls until the run reaches a terminal status.await run.returnValuenow internally uses this, if the World supports it, instead of using a polling interval.#3634
7b79ba3Thanks @pranaygp! - New runs are created with the sealed-log event identity (specVersion 7). A sealed-log run's event positions are assigned by the backend before each write commits, so concurrent writers never contend for a position. A position whose writer dies is closed by the backend with anoopevent; replay steps over those without delivering them or advancing the deterministic clock. SetWORKFLOW_SEALED_LOG=0to put a deployment back on the previous scheme. Every runtime reads sealed logs either way, and a run's version is fixed at creation, so the setting only affects new runs.Patch Changes
#3728
f771585Thanks @pranaygp! - Hold process-wide state (the WebSocket transport registry, HTTP connection pools, ULID factories, caches, log-once latches) onglobalThisinstead of at module scope. This de-duplicates state across bundled packages. Fixes WebSocket transport, which was registered in one module state but looked up in another.Updated dependencies [
f771585,f771585,9454d51,7b79ba3,f771585,bf9de1c]:@workflow/world-postgres@5.0.0-beta.36
Minor Changes
#3570
9454d51Thanks @pranaygp! - Addworld.runs.waitForTerminalStatus(runId, { timeoutMs, signal, resolveData })method, which long-polls until the run reaches a terminal status.await run.returnValuenow internally uses this, if the World supports it, instead of using a polling interval.#3634
7b79ba3Thanks @pranaygp! - New runs are created with the sealed-log event identity (specVersion 7). A sealed-log run's event positions are assigned by the backend before each write commits, so concurrent writers never contend for a position. A position whose writer dies is closed by the backend with anoopevent; replay steps over those without delivering them or advancing the deterministic clock. SetWORKFLOW_SEALED_LOG=0to put a deployment back on the previous scheme. Every runtime reads sealed logs either way, and a run's version is fixed at creation, so the setting only affects new runs.Patch Changes
#3575
71bc027Thanks @shin4141! - Commit step entities and theirstep_createdevents atomically.Updated dependencies [
f771585,f771585,9454d51,7b79ba3,f771585,bf9de1c,f771585]:@workflow/world-vercel@5.0.0-beta.40
Minor Changes
#3570
9454d51Thanks @pranaygp! - Addworld.runs.waitForTerminalStatus(runId, { timeoutMs, signal, resolveData })method, which long-polls until the run reaches a terminal status.await run.returnValuenow internally uses this, if the World supports it, instead of using a polling interval.#3634
7b79ba3Thanks @pranaygp! - New runs are created with the sealed-log event identity (specVersion 7). A sealed-log run's event positions are assigned by the backend before each write commits, so concurrent writers never contend for a position. A position whose writer dies is closed by the backend with anoopevent; replay steps over those without delivering them or advancing the deterministic clock. SetWORKFLOW_SEALED_LOG=0to put a deployment back on the previous scheme. Every runtime reads sealed logs either way, and a run's version is fixed at creation, so the setting only affects new runs.#3702
dc68611Thanks @shalabhc! - Default the events transport to WebSockets.WORKFLOW_EVENTS_TRANSPORT=httpopts back out; any other value, including unset, now takes the socket.
Patch Changes
#3599
d012bf0Thanks @karthikscale3! - Preserve upstream HTTP status codes when fetching Workflow run encryption keys.#3728
f771585Thanks @pranaygp! - Hold process-wide state (the WebSocket transport registry, HTTP connection pools, ULID factories, caches, log-once latches) onglobalThisinstead of at module scope. This de-duplicates state across bundled packages. Fixes WebSocket transport, which was registered in one module state but looked up in another.#3702
dc68611Thanks @shalabhc! - AddWORKFLOW_INTERNAL_EVENTS_TRANSPORT_STRICT, an internal flag that fails astep_completedwrite which falls back to HTTP while the WebSocket gate is on,so CI can tell a working socket from a silently demoted one.
Updated dependencies [
f771585,f771585,9454d51,7b79ba3,f771585,bf9de1c]:@workflow/ai@5.0.0-beta.14
Patch Changes
#3728
f771585Thanks @pranaygp! - Hold process-wide state onglobalThisrather than at module scope in the packages that get bundled into the host application's server build, where a bundler compiles one copy of each module per layer. Covers warn-once latches, lazy caches, the VM script and QuickJS asset caches, the dev-server port cache, and step single-flight, whose per-copy map was not actually single-flight. State that is deliberately per-copy is annotated with the reason.Updated dependencies [
f771585,9b1b8c7,f771585]:@workflow/astro@5.0.0-beta.44
Patch Changes
8a2648e]:@workflow/builders@5.0.0-beta.44
Patch Changes
#3454
8a2648eThanks @josuediazflores! - Emitmanifest.jsonin a stable order and remove a redundant compilation round per no-op rebuild in Next dev.Updated dependencies [
5b5a926,f771585,9b1b8c7,f771585,f771585,9454d51,7b79ba3,f771585,bf9de1c]:@workflow/cli@5.0.0-beta.44
Patch Changes
5b5a926,f771585,9b1b8c7,f771585,d012bf0,f771585,9454d51,7b79ba3,8a2648e,f771585,bf9de1c,f771585,dc68611,dc68611]:@workflow/errors@5.0.0-beta.18
Patch Changes
f771585,f771585]:@workflow/nest@5.0.0-beta.44
Patch Changes
#3728
f771585Thanks @pranaygp! - Hold process-wide state onglobalThisrather than at module scope in the packages that get bundled into the host application's server build, where a bundler compiles one copy of each module per layer. Covers warn-once latches, lazy caches, the VM script and QuickJS asset caches, the dev-server port cache, and step single-flight, whose per-copy map was not actually single-flight. State that is deliberately per-copy is annotated with the reason.Updated dependencies [
f771585,8a2648e,f771585]:@workflow/next@5.0.0-beta.44
Patch Changes
#3454
8a2648eThanks @josuediazflores! - Emitmanifest.jsonin a stable order and remove a redundant compilation round per no-op rebuild in Next dev.Updated dependencies [
5b5a926,9b1b8c7,f771585,f771585,9454d51,7b79ba3,8a2648e,bf9de1c]:@workflow/nitro@5.0.0-beta.44
Patch Changes
#3454
8a2648eThanks @josuediazflores! - Emitmanifest.jsonin a stable order and remove a redundant compilation round per no-op rebuild in Next dev.Updated dependencies [
5b5a926,9b1b8c7,f771585,f771585,9454d51,7b79ba3,8a2648e,bf9de1c]:@workflow/nuxt@5.0.0-beta.44
Patch Changes
8a2648e]:@workflow/rollup@5.0.0-beta.44
Patch Changes
8a2648e]:@workflow/sveltekit@5.0.0-beta.44
Patch Changes
#3509
37ed049Thanks @dummdidumm! - Load SvelteKit route configuration through@sveltejs/load-config, including projects that configure SvelteKit exclusively invite.config.Updated dependencies [
8a2648e]:@workflow/vite@5.0.0-beta.44
Patch Changes
8a2648e]:@workflow/vitest@5.0.0-beta.44
Patch Changes
5b5a926,9b1b8c7,f771585,f771585,9454d51,7b79ba3,8a2648e,bf9de1c,f771585]:@workflow/web@5.0.0-beta.44
Patch Changes
9454d51,7b79ba3,f771585]:@workflow/web-shared@5.0.0-beta.44
Patch Changes
#3715
5a59bb8Thanks @karthikscale3! - Allow consumers to disable decrypt controls and explain why decryption is unavailable.#3692
a06afeeThanks @mitul-s! - Prefix trace viewer marker context cards with "Hook received" or "Attribute set" before the relative time.#3634
7b79ba3Thanks @pranaygp! - Render sealed log positions (noopevents) as the log rows they are: shown in event lists, excluded from span geometry and trace duration, since a seal's timestamp belongs to whichever reader wrote it rather than to the run.#3684
4bd533dThanks @karthikscale3! - Display short step names when observability events contain a workflow-prefixed name.Updated dependencies [
5b5a926,f771585,9b1b8c7,f771585,f771585,9454d51,7b79ba3,f771585,bf9de1c]:@workflow/world-testing@5.0.0-beta.44
Patch Changes
#3728
f771585Thanks @pranaygp! - Annotate the test server's per-run invocation counter as deliberately per-copy, so it passes the module-scope state rule.#3737
7e48e7bThanks @VaguelySerious! - The event-id conformance test now floors a run's stampedspecVersionatmintedSpecVersion()rather thanSPEC_VERSION_CURRENT, so a World is not failed for stamping the version it was told to stamp while a spec bump is staged.Updated dependencies [
5b5a926,9b1b8c7,f771585,f771585,9454d51,7b79ba3,bf9de1c]: