Skip to content

Add static statechart devtools visualizer - #172

Merged
SandroMaglione merged 6 commits into
mainfrom
codex/static-elk-chart
Aug 25, 2026
Merged

Add static statechart devtools visualizer#172
SandroMaglione merged 6 commits into
mainfrom
codex/static-elk-chart

Conversation

@SandroMaglione

@SandroMaglione SandroMaglione commented Aug 25, 2026

Copy link
Copy Markdown
Member

Summary\n\n- replace the devtools text tree with a static ELK statechart that uses the viewport, supports zoom and pan, and keeps inspection in an on-demand panel\n- replace planner-backed simulation with an edge-only, side-effect-free walkthrough that preserves compound and parallel topology, targetless self-loops, explicit runtime-target gaps, and timeline branching\n- replace the public module with immutable sessions, remove the planner HTTP and worker protocol, and keep machine and event schemas as read-only contracts\n\n## Changeset\n\n- [x] Added or updated for a library or package-metadata change\n- [ ] Not required because this PR does not change a publishable package\n\nThe minor changeset includes the direct migration from to . The fixed package group keeps core and devtools on the same version.\n\n## Validation\n\n- [x]

@ check /Users/sandromaglione/Development/projects/typeonce/effect-machine
pnpm format:check && pnpm check:architecture && pnpm check:ci && pnpm docs:api:check && pnpm docs:site:check && pnpm typecheck && pnpm build && pnpm test && pnpm test:types && pnpm test:consumer && pnpm pack:check && pnpm devtools:pack-check

@ format:check /Users/sandromaglione/Development/projects/typeonce/effect-machine
dprint check

@ check:architecture /Users/sandromaglione/Development/projects/typeonce/effect-machine
node --test scripts/check-architecture.test.mjs && node scripts/check-architecture.mjs packages/effect-machine && node scripts/check-devtools-architecture.mjs packages/devtools

✔ accepts Effect-shaped modules and ignores type-only back-edges (229.603708ms)
✔ rejects public implementation bypasses and inferred internal signatures (223.998167ms)
✔ rejects entrypoint leaks, black-box internal imports, barrels, and legacy filenames (131.34475ms)
✔ rejects value back-edges and execution-layer inversions (109.511708ms)
✔ rejects outward machine semantic dependencies (91.105084ms)
✔ detects runtime cycles while permitting type-only cycles (191.916958ms)
✔ includes re-exports and dynamic imports in the runtime graph (103.651417ms)
ℹ tests 7
ℹ suites 0
ℹ pass 7
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 1324.942042
Architecture checks passed
Devtools architecture checks passed

@ check:ci /Users/sandromaglione/Development/projects/typeonce/effect-machine
node --test scripts/ci-changes.test.mjs scripts/invoke-autocomplete.test.mjs scripts/release-contract.test.mjs scripts/runtime-performance-compatibility.test.mjs scripts/runtime-performance-regression.test.mjs

✔ skips performance for documentation changes (0.955916ms)
✔ runs type performance for public source changes (0.131916ms)
✔ adds runtime performance for machine implementation changes (2.438875ms)
✔ distinguishes performance dependencies from unrelated tooling (0.116958ms)
✔ classifies performance harness and classifier changes (0.088916ms)
✔ contextually completes Effect invocation factories while authoring (18.877083ms)
✔ contextually completes Stream element handlers while authoring (0.422375ms)
✔ contextually completes transition definitions while authoring (5.778375ms)
✔ core and devtools release with the same version (13.989125ms)
✔ adapts the state-definition constructor across the public rename (1.08325ms)
✔ adapts wrapped static transition definitions when that capability is present (0.198667ms)
✔ adapts benchmark definitions to callable fluent transition selectors (0.165ms)
✔ adapts benchmark definitions to value selectors and target-first initial entry (0.510542ms)
✔ uses the object child invocation compatibility capability when available (0.366417ms)
✔ adapts child invocations to the state-local fluent selector (0.599291ms)
✔ adapts lifecycle names for the legacy child invocation capability (0.180667ms)
✔ fails closed when a legacy capability cannot preserve lifecycle semantics (0.2405ms)
✔ accepts changes within the fixed regression floors (1.499458ms)
✔ rejects large throughput and heap regressions (0.584333ms)
✔ uses process variability when it exceeds the fixed floor (0.21375ms)
✔ ignores unrelated implementations (0.19625ms)
ℹ tests 21
ℹ suites 0
ℹ pass 21
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 1787.435375

@ docs:api:check /Users/sandromaglione/Development/projects/typeonce/effect-machine
pnpm docs:api:test && node scripts/api-reference/generate.mjs --check

@ docs:api:test /Users/sandromaglione/Development/projects/typeonce/effect-machine
node --test scripts/api-reference/*.test.mjs

✔ parses an Effect-style leading module comment (0.9355ms)
✔ keeps tags inside code fences as example source (0.1405ms)
✔ normalizes categories, signatures, examples, tags, and source links (1.135542ms)
✔ normalizes documented parameters into declaration-owned usage sections (0.677917ms)
✔ projects a nested API reflection into an ordered core workflow (8.740292ms)
ℹ tests 5
ℹ suites 0
ℹ pass 5
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 376.577125
[info] json generated at /var/folders/92/6ydqnl6j31s8pmllyy9jzzvm0000gn/T/effect-machine-api-reference-eIWkkr/v4/@typeonce/effect-machine/Machine.json
[info] json generated at /var/folders/92/6ydqnl6j31s8pmllyy9jzzvm0000gn/T/effect-machine-api-reference-eIWkkr/v4/@typeonce/effect-machine/testing/MachineTest.json
[info] json generated at /var/folders/92/6ydqnl6j31s8pmllyy9jzzvm0000gn/T/effect-machine-api-reference-eIWkkr/v4/@typeonce/effect-machine/unstable/reactivity/AtomMachine.json
[info] json generated at /var/folders/92/6ydqnl6j31s8pmllyy9jzzvm0000gn/T/effect-machine-api-reference-eIWkkr/v4/@typeonce/effect-machine/unstable/cluster/ClusterMachine.json
Validated API reference dataset (4 modules)

@ docs:site:check /Users/sandromaglione/Development/projects/typeonce/effect-machine
pnpm docs:site:test && pnpm docs:api && node scripts/api-reference-site/generate.mjs --check

@ docs:site:test /Users/sandromaglione/Development/projects/typeonce/effect-machine
node --test scripts/api-reference-site/*.test.mjs

✔ derives stable module routes from JSON paths (0.838208ms)
✔ renders documentation prose while escaping source HTML (0.392625ms)
✔ renders fenced code with highlighting and copy controls (0.986625ms)
✔ renders the agent guide Markdown below the changelog navigation (13.784041ms)
✔ assigns deterministic unique anchors to duplicate declarations (0.133209ms)
✔ highlights TypeScript without changing its source text (0.164625ms)
✔ normalizes root, project, and custom-domain base paths (0.180334ms)
✔ parses Changesets release entries and pending descriptions (1.0105ms)
✔ renders a navigable changelog with release dates (0.495833ms)
✔ renders collapsible category navigation with declaration anchors (0.4825ms)
✔ renders declaration-owned usage sections and documented members in the guide (0.659916ms)
✔ renders the ordered workflow only in the standalone guide (0.570083ms)
✔ renders canonical and social metadata without exposing the internal channel (0.154125ms)
✔ links the header to the repository root and exposes its star-count target (0.189042ms)
✔ omits the star badge when the build does not supply a count (0.091708ms)
✔ accepts only non-negative safe integers for build-time GitHub stars (0.1705ms)
✔ accepts only root GitHub repository URLs for the header integration (0.081209ms)
✔ keeps the internal Effect channel out of the homepage label (0.20375ms)
✔ generates manifest, robots, and sitemap URLs from the deployment base (0.163ms)
✔ accepts only pathless HTTPS production origins (0.093959ms)
ℹ tests 20
ℹ suites 0
ℹ pass 20
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 316.026541

@ docs:api /Users/sandromaglione/Development/projects/typeonce/effect-machine
node scripts/api-reference/generate.mjs

[info] json generated at ./.data/api-reference/v4/@typeonce/effect-machine/Machine.json
[info] json generated at ./.data/api-reference/v4/@typeonce/effect-machine/testing/MachineTest.json
[info] json generated at ./.data/api-reference/v4/@typeonce/effect-machine/unstable/reactivity/AtomMachine.json
[info] json generated at ./.data/api-reference/v4/@typeonce/effect-machine/unstable/cluster/ClusterMachine.json
Generated API reference dataset in .data/api-reference/v4
Validated API reference site (4 modules)

@ typecheck /Users/sandromaglione/Development/projects/typeonce/effect-machine
pnpm --recursive --filter "./packages/**" run check && tsc -p tsconfig.tests.json

Scope: 2 of 3 workspace projects
packages/effect-machine check$ tsc -b tsconfig.json
packages/effect-machine check: Done
packages/devtools check$ tsc -p tsconfig.json
packages/devtools check: Done

@ build /Users/sandromaglione/Development/projects/typeonce/effect-machine
pnpm --recursive --filter "./packages/**" run build

Scope: 2 of 3 workspace projects
packages/effect-machine build$ tsc -b tsconfig.build.json
packages/effect-machine build: Done
packages/devtools build$ node scripts/clean.mjs && vite build --config vite.config.ts && tsc -p tsconfig.build.json
packages/devtools build: vite v8.1.5 building client environment for production...
packages/devtools build: �[2K
packages/devtools build: transforming...✓ 156 modules transformed.
packages/devtools build: rendering chunks...
packages/devtools build: computing gzip size...
packages/devtools build: dist/client/index.html 0.51 kB │ gzip: 0.31 kB
packages/devtools build: dist/client/assets/index-Cg7xzSkz.css 22.76 kB │ gzip: 5.29 kB
packages/devtools build: dist/client/assets/index-BTOAhezX.js 1,571.42 kB │ gzip: 487.11 kB
packages/devtools build: ✓ built in 725ms
packages/devtools build: [plugin builtin:vite-reporter]
packages/devtools build: (!) Some chunks are larger than 500 kB after minification. Consider:
packages/devtools build: - Using dynamic import() to code-split the application
packages/devtools build: - Use build.rolldownOptions.output.codeSplitting to improve chunking: https://rolldown.rs/reference/OutputOptions.codeSplitting
packages/devtools build: - Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.
packages/devtools build: Done

@ test /Users/sandromaglione/Development/projects/typeonce/effect-machine
vitest run

RUN v4.1.10 /Users/sandromaglione/Development/projects/typeonce/effect-machine

Test Files 49 passed (49)
Tests 545 passed (545)
Start at 17:07:25
Duration 8.33s (transform 4.79s, setup 0ms, import 27.49s, tests 20.90s, environment 4ms)

@ test:types /Users/sandromaglione/Development/projects/typeonce/effect-machine
pnpm --dir packages/effect-machine test:types

@typeonce/effect-machine@0.24.0 test:types /Users/sandromaglione/Development/projects/typeonce/effect-machine/packages/effect-machine
tstyche

···· TSTyche 7.2.1 at /Users/sandromaglione/Development/projects/typeonce/effect-machine/packages/effect-machine

uses TypeScript 6.0.3 with baseline TSConfig

pass ./typetest/machine/Activities.tst.ts
pass ./typetest/machine/Annotations.tst.ts
pass ./typetest/machine/Choice.tst.ts
pass ./typetest/machine/ConsumerTypes.tst.ts
pass ./typetest/machine/DeepHandlers.tst.ts
pass ./typetest/machine/DynamicChildren.tst.ts
pass ./typetest/machine/EventByTag.tst.ts
pass ./typetest/machine/EventConstructors.tst.ts
pass ./typetest/machine/History.tst.ts
pass ./typetest/machine/InitialEntry.tst.ts
pass ./typetest/machine/Inspection.tst.ts
pass ./typetest/machine/Machine.tst.ts
pass ./typetest/machine/MachineReferences.tst.ts
pass ./typetest/machine/Readiness.tst.ts
pass ./typetest/machine/Resume.tst.ts
pass ./typetest/machine/SnapshotContext.tst.ts
pass ./typetest/machine/StateDefinition.tst.ts
pass ./typetest/machine/StateUpdate.tst.ts
pass ./typetest/machine/StructuralStates.tst.ts
pass ./typetest/testing/Coverage.tst.ts
pass ./typetest/testing/Exploration.tst.ts
pass ./typetest/testing/FiniteModel.tst.ts
pass ./typetest/testing/Invariant.tst.ts
pass ./typetest/testing/MachineTest.tst.ts
pass ./typetest/testing/Probe.tst.ts
pass ./typetest/testing/ReferenceModel.tst.ts
pass ./typetest/testing/Verification.tst.ts
pass ./typetest/unstable/cluster/ClusterMachine.tst.ts
pass ./typetest/unstable/reactivity/AtomMachine.tst.ts

Targets: 1 passed, 1 total
Test files: 29 passed, 29 total
Tests: 196 passed, 196 total
Assertions: 1017 passed, 1017 total
Suppressed: 20 ignored, 20 total
Duration: 17.6s

@ test:consumer /Users/sandromaglione/Development/projects/typeonce/effect-machine
node scripts/test-consumer.mjs

packed root, reactivity, cluster, and testing entrypoints passed strict consumer validation

@ pack:check /Users/sandromaglione/Development/projects/typeonce/effect-machine
node scripts/pack-check.mjs

pack verification passed (211 files)

@ devtools:pack-check /Users/sandromaglione/Development/projects/typeonce/effect-machine
node scripts/devtools-pack-check.mjs

installed devtools CLI, worker, browser, live reload, shutdown, and failure handling passed\n- [x]

@ perf:types /Users/sandromaglione/Development/projects/typeonce/effect-machine
pnpm build && node scripts/type-performance.mjs

@ build /Users/sandromaglione/Development/projects/typeonce/effect-machine
pnpm --recursive --filter "./packages/**" run build

Scope: 2 of 3 workspace projects
packages/effect-machine build$ tsc -b tsconfig.build.json
packages/effect-machine build: Done
packages/devtools build$ node scripts/clean.mjs && vite build --config vite.config.ts && tsc -p tsconfig.build.json
packages/devtools build: vite v8.1.5 building client environment for production...
packages/devtools build: �[2K
packages/devtools build: transforming...✓ 156 modules transformed.
packages/devtools build: rendering chunks...
packages/devtools build: computing gzip size...
packages/devtools build: dist/client/index.html 0.51 kB │ gzip: 0.31 kB
packages/devtools build: dist/client/assets/index-Cg7xzSkz.css 22.76 kB │ gzip: 5.29 kB
packages/devtools build: dist/client/assets/index-BTOAhezX.js 1,571.42 kB │ gzip: 487.11 kB
packages/devtools build: ✓ built in 617ms
packages/devtools build: [plugin builtin:vite-reporter]
packages/devtools build: (!) Some chunks are larger than 500 kB after minification. Consider:
packages/devtools build: - Using dynamic import() to code-split the application
packages/devtools build: - Use build.rolldownOptions.output.codeSplitting to improve chunking: https://rolldown.rs/reference/OutputOptions.codeSplitting
packages/devtools build: - Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.
packages/devtools build: Done
Type performance (TypeScript 6.0.3, skipLibCheck=true)

Scenario Instantiations Marginal Check time


Effect only 55 baseline 0.02s
Import effect-machine 55 +0 0.02s
Machine.states (3 states) 3,039 +2,984 0.06s
Machine.make (3 states, 2 events) 10,787 +7,740 0.11s
machine.handle (3 states, 2 transitions) 28,551 +17,764 0.16s
fluent transition (10 named branches) 122,775 +112,498 0.38s
fluent invocation (state-dependent Effect) 108,429 +99,018 0.30s
machine.handle (depth 24) 207,970 +187,474 0.48s
machine.handle (wide depth 16) 236,332 +217,043 0.54s
machine.handle (parallel/history/choice) 144,812 +124,167 0.38s
machine definition (3 independent implementations) 143,617 +127,576 0.48s
machine exact input/output/error/services 129,873 +115,217 0.33s
execution adapter readiness 136,469 +106,299 0.34s

Marginal is measured against the matching setup without that API call.
Check time is informational; instantiations are the stable comparison metric.
Configured total and marginal instantiation budgets are enforced before reporting.\n- [x]

@ perf:runtime /Users/sandromaglione/Development/projects/typeonce/effect-machine
pnpm build && node --expose-gc scripts/runtime-performance.mjs

@ build /Users/sandromaglione/Development/projects/typeonce/effect-machine
pnpm --recursive --filter "./packages/**" run build

Scope: 2 of 3 workspace projects
packages/effect-machine build$ tsc -b tsconfig.build.json
packages/effect-machine build: Done
packages/devtools build$ node scripts/clean.mjs && vite build --config vite.config.ts && tsc -p tsconfig.build.json
packages/devtools build: vite v8.1.5 building client environment for production...
packages/devtools build: �[2K
packages/devtools build: transforming...✓ 156 modules transformed.
packages/devtools build: rendering chunks...
packages/devtools build: computing gzip size...
packages/devtools build: dist/client/index.html 0.51 kB │ gzip: 0.31 kB
packages/devtools build: dist/client/assets/index-Cg7xzSkz.css 22.76 kB │ gzip: 5.29 kB
packages/devtools build: dist/client/assets/index-BTOAhezX.js 1,571.42 kB │ gzip: 487.11 kB
packages/devtools build: ✓ built in 640ms
packages/devtools build: [plugin builtin:vite-reporter]
packages/devtools build: (!) Some chunks are larger than 500 kB after minification. Consider:
packages/devtools build: - Using dynamic import() to code-split the application
packages/devtools build: - Use build.rolldownOptions.output.codeSplitting to improve chunking: https://rolldown.rs/reference/OutputOptions.codeSplitting
packages/devtools build: - Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.
packages/devtools build: Done
Runtime performance (v24.16.0, Apple M1)

┌─────────┬─────────────────────────┬───────────────────────────────────────────────────────┬─────────────────────────┬────────────┬───────────┬──────────┬───────────┐
│ (index) │ Implementation │ Scenario │ Median throughput │ Mean/op │ p95 batch │ Margin │ Samples │
├─────────┼─────────────────────────┼───────────────────────────────────────────────────────┼─────────────────────────┼────────────┼───────────┼──────────┼───────────┤
│ 0 │ 'Effect Machine 0.24.0' │ 'Plan counter transitions' │ '214,784 transitions/s' │ '4.95 µs' │ '0.62 ms' │ '±1.31%' │ '2,020' │
│ 1 │ 'Effect Machine 0.24.0' │ 'Drain burst with terminal fence' │ '650,407 increments/s' │ '1.71 µs' │ '0.67 ms' │ '±1.85%' │ '2,343' │
│ 2 │ 'Effect Machine 0.24.0' │ 'Drain burst with a change observer' │ '625,716 increments/s' │ '1.70 µs' │ '0.49 ms' │ '±1.25%' │ '2,359' │
│ 3 │ 'Effect Machine 0.24.0' │ 'Lookup and send to one child' │ '526,893 increments/s' │ '2.16 µs' │ '0.30 ms' │ '±1.68%' │ '4,624' │
│ 4 │ 'Effect Machine 0.24.0' │ 'Start and stop a machine' │ '244,918 machines/s' │ '5.08 µs' │ '0.00 ms' │ '±4.41%' │ '197,051' │
│ 5 │ 'Effect Machine 0.24.0' │ 'Start and stop a parent with one child' │ '61,069 families/s' │ '21.27 µs' │ '0.02 ms' │ '±5.12%' │ '47,022' │
│ 6 │ 'Effect Machine 0.24.0' │ 'Plan transitions through a compound state' │ '176,302 transitions/s' │ '6.44 µs' │ '0.84 ms' │ '±4.28%' │ '1,552' │
│ 7 │ 'Effect Machine 0.24.0' │ 'Plan transitions through parallel regions' │ '136,893 transitions/s' │ '7.74 µs' │ '0.96 ms' │ '±2.32%' │ '1,293' │
│ 8 │ 'Effect Machine 0.24.0' │ 'Drain burst through a compound state' │ '530,411 events/s' │ '2.82 µs' │ '1.80 ms' │ '±5.62%' │ '1,418' │
│ 9 │ 'Effect Machine 0.24.0' │ 'Drain burst through two parallel regions' │ '522,876 events/s' │ '2.18 µs' │ '0.78 ms' │ '±1.99%' │ '1,837' │
│ 10 │ 'Effect Machine 0.24.0' │ 'Drain a compound-state burst with a change observer' │ '524,751 events/s' │ '2.01 µs' │ '0.59 ms' │ '±1.08%' │ '1,987' │
│ 11 │ 'Effect Machine 0.24.0' │ 'Start and stop a raw generic process' │ '24,819 processes/s' │ '58.07 µs' │ '0.12 ms' │ '±5.25%' │ '17,250' │
│ 12 │ 'Effect Machine 0.24.0' │ 'Start and stop a raw compiled process' │ '110,595 processes/s' │ '12.82 µs' │ '0.01 ms' │ '±7.05%' │ '77,997' │
└─────────┴─────────────────────────┴───────────────────────────────────────────────────────┴─────────────────────────┴────────────┴───────────┴──────────┴───────────┘

Runtime memory after forced GC

┌─────────┬─────────────────────────┬────────────────────────────────────────────────┬─────────┬────────────────┬────────────┬──────────────┐
│ (index) │ Implementation │ Profile │ Units │ Heap delta │ Heap/unit │ RSS delta │
├─────────┼─────────────────────────┼────────────────────────────────────────────────┼─────────┼────────────────┼────────────┼──────────────┤
│ 0 │ 'Effect Machine 0.24.0' │ 'Idle machine' │ '100' │ '293 KiB' │ '2.9 KiB' │ '368 KiB' │
│ 1 │ 'Effect Machine 0.24.0' │ 'Idle machine' │ '500' │ '1,009.9 KiB' │ '2 KiB' │ '1,552 KiB' │
│ 2 │ 'Effect Machine 0.24.0' │ 'Idle machine' │ '1,000' │ '1,810.2 KiB' │ '1.8 KiB' │ '5,312 KiB' │
│ 3 │ 'Effect Machine 0.24.0' │ 'Raw generic managed process' │ '100' │ '1,528.9 KiB' │ '15.3 KiB' │ '672 KiB' │
│ 4 │ 'Effect Machine 0.24.0' │ 'Raw generic managed process' │ '500' │ '7,022.3 KiB' │ '14 KiB' │ '9,152 KiB' │
│ 5 │ 'Effect Machine 0.24.0' │ 'Raw generic managed process' │ '1,000' │ '13,946.1 KiB' │ '13.9 KiB' │ '17,840 KiB' │
│ 6 │ 'Effect Machine 0.24.0' │ 'Raw compiled process' │ '100' │ '391.5 KiB' │ '3.9 KiB' │ '160 KiB' │
│ 7 │ 'Effect Machine 0.24.0' │ 'Raw compiled process' │ '500' │ '1,638 KiB' │ '3.3 KiB' │ '896 KiB' │
│ 8 │ 'Effect Machine 0.24.0' │ 'Raw compiled process' │ '1,000' │ '3,171.6 KiB' │ '3.2 KiB' │ '2,400 KiB' │
│ 9 │ 'Effect Machine 0.24.0' │ 'Two independent idle machines' │ '100' │ '468.2 KiB' │ '4.7 KiB' │ '560 KiB' │
│ 10 │ 'Effect Machine 0.24.0' │ 'Two independent idle machines' │ '500' │ '1,903.2 KiB' │ '3.8 KiB' │ '9,440 KiB' │
│ 11 │ 'Effect Machine 0.24.0' │ 'Two independent idle machines' │ '1,000' │ '3,412 KiB' │ '3.4 KiB' │ '15,328 KiB' │
│ 12 │ 'Effect Machine 0.24.0' │ 'Idle parent with one child' │ '100' │ '781.6 KiB' │ '7.8 KiB' │ '352 KiB' │
│ 13 │ 'Effect Machine 0.24.0' │ 'Idle parent with one child' │ '500' │ '3,144.5 KiB' │ '6.3 KiB' │ '8,144 KiB' │
│ 14 │ 'Effect Machine 0.24.0' │ 'Idle parent with one child' │ '1,000' │ '5,851.1 KiB' │ '5.9 KiB' │ '13,936 KiB' │
│ 15 │ 'Effect Machine 0.24.0' │ 'Parent with observed child registry' │ '100' │ '1,292.9 KiB' │ '12.9 KiB' │ '608 KiB' │
│ 16 │ 'Effect Machine 0.24.0' │ 'Parent with observed child registry' │ '500' │ '5,278.1 KiB' │ '10.6 KiB' │ '8,352 KiB' │
│ 17 │ 'Effect Machine 0.24.0' │ 'Parent with observed child registry' │ '1,000' │ '10,086.3 KiB' │ '10.1 KiB' │ '26,640 KiB' │
│ 18 │ 'Effect Machine 0.24.0' │ 'Parent with observed invoked child snapshots' │ '100' │ '1,043 KiB' │ '10.4 KiB' │ '1,552 KiB' │
│ 19 │ 'Effect Machine 0.24.0' │ 'Parent with observed invoked child snapshots' │ '500' │ '3,564.2 KiB' │ '7.1 KiB' │ '10,944 KiB' │
│ 20 │ 'Effect Machine 0.24.0' │ 'Parent with observed invoked child snapshots' │ '1,000' │ '6,483.6 KiB' │ '6.5 KiB' │ '24,240 KiB' │
└─────────┴─────────────────────────┴────────────────────────────────────────────────┴─────────┴────────────────┴────────────┴──────────────┘
Effect Machine idle machine heap slope: 1.8 KiB per unit
Effect Machine estimated idle capacity per GiB: 591,435 machines
Effect Machine raw generic managed process heap slope: 13.9 KiB per unit
Effect Machine raw compiled process heap slope: 3.1 KiB per unit
Effect Machine two independent idle machines heap slope: 3.4 KiB per unit
Effect Machine idle parent with one child heap slope: 5.8 KiB per unit
Effect Machine parent with observed child registry heap slope: 10 KiB per unit
Effect Machine parent with observed invoked child snapshots heap slope: 6.3 KiB per unit
RSS is an allocator-sensitive diagnostic; heap slope is the primary memory metric.

Results are informational. Compare runs made on the same machine and runtime configuration. local smoke test\n- [x] Automated type-performance comparison passed or was not required\n- [x] Automated runtime- and memory-performance comparison passed or was not required\n\n

@SandroMaglione
SandroMaglione marked this pull request as ready for review August 25, 2026 15:03
@SandroMaglione
SandroMaglione merged commit 68152cb into main Aug 25, 2026
8 checks passed
@SandroMaglione
SandroMaglione deleted the codex/static-elk-chart branch August 25, 2026 15:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant