Measured in public

Development

Release evidence, test methodology, source, component stories, architecture tours, and operator-facing acceptance contracts in one place.

Engine-only probe: HEALTHY: The 1,024-fixture workload stayed at or above 60 Hz (60 Hz). The 2,048-fixture diagnostic is reported separately and does not change this indicator.

Evidence

Release version1.4.1
Tested commit5b1a975a716275fae238e73b07179c70e8cbaca2
Generated2026-10-27T16:46:51.427Z
Measurement tooling commit5b1a975a716275fae238e73b07179c70e8cbaca2
RunnerGitHub Actions ubuntu-22.04
Workloadtosklight_render_to_protocol_encoding_pipeline · hard_floor

Measured shows

Test setLoadOutput cadenceOutput intervalsCPU and RAM
224 parameters / 24 fixturesunrestricted
1 patched DMX universes
Stage: off
224 DMX slots188 dyn. attr.
20 master lanes
39.4 Hz · 95% floor39.3 / 40 / 44 Hz
min / avg / max
target 40 Hz
60 s measured11.8% p958.1% avg · 13.8% max Desk app CPU
0.86 GiB max RAM
Demo show — 3,544 parameters / 312 fixtureslocked to 1 core
9 patched DMX universes
Stage: off
3,544 DMX slots1,575 dyn. attr.
20 master lanes
39.3 Hz · 95% floor39.1 / 40 / 40.6 Hz
min / avg / max
target 40 Hz
60.04 s measured46.5% p9532.8% avg · 55.3% max Desk app CPU
1.01 GiB max RAM
Demo show — 3,544 parameters / 312 fixturesunrestricted
9 patched DMX universes
Stage: off
3,544 DMX slots1,575 dyn. attr.
20 master lanes
39.3 Hz · 95% floor39.3 / 40 / 43.3 Hz
min / avg / max
target 40 Hz
60.01 s measured47.5% p9537.1% avg · 170.7% max Desk app CPU
1.20 GiB max RAM
8,064 parameters / 576 fixturesunrestricted
16 patched DMX universes
Stage: off
8,064 DMX slots5,408 dyn. attr.
20 master lanes
39.4 Hz · 95% floor39.4 / 40 / 41.8 Hz
min / avg / max
target 40 Hz
60 s measured109.2% p9581.7% avg · 109.7% max Desk app CPU
2.01 GiB max RAM
16,384 parameters / 1,024 fixturesunrestricted
32 patched DMX universes
Stage: off
16,384 DMX slots8,578 dyn. attr.
20 master lanes
37.6 Hz · 95% floor37.2 / 39.4 / 40.7 Hz
min / avg / max
target 40 Hz
60 s measured190% p95153.8% avg · 193.1% max Desk app CPU
2.68 GiB max RAM

These released-Desk measurements are separate from the engine-only probe below. They use different workloads and requested rates; their Hz values are not directly comparable. This is the same measured-scenario table shown on the main GitHub Pages page. A row is graded by its slowest sampled window first and then its mean; each row shows its own requested target.

How the test runs

The current Control baseline runs the released Linux Desk with its real Fixture Sheet and Dynamics active, requesting 40 Hz. Stage is off. The demo also runs with the complete app restricted to one CPU core. Each row shows its target, Stage state and elapsed duration.

Output cadence counts completed output ticks, not the Fixture Sheet paint rate or 3D renderer FPS. The 95% floor is the fifth percentile: 95% of sampled windows held at least this rate. A 40 Hz target caps scheduled throughput; this is not a maximum-capacity test. DMX slots count patched addresses including fine bytes; Dynamic attributes count animated components, including virtual intensity and logical heads.

New runs target 60 seconds and use the server clock. Older runs polled 60 times and included native Stage under software graphics; their duration is marked nominal. They cannot establish a renderer-off baseline. The engine-only probe below uses a different workload and target.

The API coordinator loads each real show and confirms the Fixture Sheet remains responsive. Linux process sampling measures the Desk application tree and separates its Light server from the Tauri/WebKit processes. Node and Xvfb are excluded. Playwright is not launched. Current Control baselines explicitly disable Stage and verify no renderer process is running. Older raw reports included native Stage rendering, even though the summary omitted that state; those runs cannot be treated as a renderer-off baseline. CI uses software-rendered WebKit under Xvfb; this is not a desktop GPU benchmark.

Application process breakdown

Test setModeProcess scopeAverage CPUMaximum CPUMaximum RAM
224 parameters / 24 fixturesunrestrictedComplete Desk app tree8.1%13.8%0.86 GiB
224 parameters / 24 fixturesunrestrictedBundled Light server6.1%8.9%0.30 GiB
224 parameters / 24 fixturesunrestrictedWebKit1.8%4.9%0.39 GiB
224 parameters / 24 fixturesunrestrictedNative Stage renderer0%0%0.00 GiB
224 parameters / 24 fixturesunrestrictedTauri host0.2%1%0.18 GiB
Demo show — 3,544 parameters / 312 fixtureslocked to 1 coreComplete Desk app tree32.8%55.3%1.01 GiB
Demo show — 3,544 parameters / 312 fixtureslocked to 1 coreBundled Light server23.4%31.6%0.30 GiB
Demo show — 3,544 parameters / 312 fixtureslocked to 1 coreWebKit9.1%22.7%0.55 GiB
Demo show — 3,544 parameters / 312 fixtureslocked to 1 coreNative Stage renderer0%0%0.00 GiB
Demo show — 3,544 parameters / 312 fixtureslocked to 1 coreTauri host0.3%2%0.16 GiB
Demo show — 3,544 parameters / 312 fixturesunrestrictedComplete Desk app tree37.1%170.7%1.20 GiB
Demo show — 3,544 parameters / 312 fixturesunrestrictedBundled Light server24.6%119.5%0.58 GiB
Demo show — 3,544 parameters / 312 fixturesunrestrictedWebKit12.2%51.2%0.47 GiB
Demo show — 3,544 parameters / 312 fixturesunrestrictedNative Stage renderer0%0%0.00 GiB
Demo show — 3,544 parameters / 312 fixturesunrestrictedTauri host0.3%2%0.16 GiB
8,064 parameters / 576 fixturesunrestrictedComplete Desk app tree81.7%109.7%2.01 GiB
8,064 parameters / 576 fixturesunrestrictedBundled Light server58.7%75.4%1.28 GiB
8,064 parameters / 576 fixturesunrestrictedWebKit22.7%60.9%0.57 GiB
8,064 parameters / 576 fixturesunrestrictedNative Stage renderer0%0%0.00 GiB
8,064 parameters / 576 fixturesunrestrictedTauri host0.3%2%0.17 GiB
16,384 parameters / 1,024 fixturesunrestrictedComplete Desk app tree153.8%193.1%2.68 GiB
16,384 parameters / 1,024 fixturesunrestrictedBundled Light server116.2%171.1%1.88 GiB
16,384 parameters / 1,024 fixturesunrestrictedWebKit37.3%78.3%0.65 GiB
16,384 parameters / 1,024 fixturesunrestrictedNative Stage renderer0%0%0.00 GiB
16,384 parameters / 1,024 fixturesunrestrictedTauri host0.3%2%0.17 GiB

Runner configuration

CPUIntel(R) Xeon(R) 6973P-C
Logical cores4
RAM15.6 GiB
Operating systemlinux
Architecturex86_64
ToskLight release1.4.1
Benchmark package version1.4.1
Rust toolchainrustc 1.99.0 (b940084d7 2026-09-28)
Build profilerelease

Separate Stage demonstration

The canonical demo did not produce valid current-release performance evidence.

Separate engine-only probe — 1,024 fixtures

This probe runs without Tauri, WebKit, Fixture Sheet subscribers, or a 3D renderer and has its own requested cadence. Its result does not measure the same path as the released-Desk rows above. Green means at least 60 Hz; yellow means at least 40 Hz; below that is red. This released Linux probe measures engine rendering and output encoding without opening a UI. Packaged Stage acceptance is a separate GPU test; its targets do not claim that these desktop rows achieved those rates.

Fixtures1024
Universes32
Fixtures per universe32
Requested output cadence60 Hz
Achieved output cadence60.03259687966016 Hz
Average engine-only output cadence60 Hz
Minimum one-second cadence60 Hz
Windows below minimum—
Deadline misses0
Dropped ticks0
Deferred ticks0
Acceptance tierhealthy
Configured cadence heldmet
Limiting measured phaseEngine render and fixture projection
Limiting phase p959675.648 µs

— means the metric was unavailable in the normalized evidence.

Large-show mutation

Fixture batchp50p95
120 fixtures3361.069 µs3505.196 µs
1200 fixtures3365.969 µs3429.192 µs

Gate: pass

Persisted Patch transaction

Batchp50p95p95 budgetGate
1 fixture52111.647 µs53495.827 µs250000 µspass
100 fixtures105653.387 µs131169.355 µs500000 µspass

UI action-to-visible latency is informational and is not yet a release gate.

2,048-fixture limit diagnostic

Fixtures2048
Fixtures per universe64
Requested output cadence60 Hz
Achieved output cadence60.03370389391205 Hz
Minimum one-second cadence60 Hz
Deadline misses0
Dropped ticks0
Deferred ticks0
100 Hz reference (diagnostic)met
Limiting measured phaseEngine render and fixture projection
Limiting phase p959294.963 µs

This 2,048-fixture capacity probe is diagnostic only and never changes the release indicator.

Failed or unavailable gates

None reported.

Download the detailed benchmark report →

Developer resources

Start with the surface or contract closest to the change you want to make.