Evidence
| Release version | 1.4.1 |
|---|
| Tested commit | 5b1a975a716275fae238e73b07179c70e8cbaca2 |
|---|
| Generated | 2026-10-27T16:46:51.427Z |
|---|
| Measurement tooling commit | 5b1a975a716275fae238e73b07179c70e8cbaca2 |
|---|
| Runner | GitHub Actions ubuntu-22.04 |
|---|
| Workload | tosklight_render_to_protocol_encoding_pipeline · hard_floor |
|---|
Measured shows
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.
Released Linux bundleexact published AppImage
→Tauri Desk under Xvfbunrestricted, and one core for the demo show
→WebKit Fixture Sheetreal production UI, kept active
→Bundled Light servershow, Dynamics, and DMX output
→40 Hz schedulercadence diagnostics
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
Runner configuration
| CPU | Intel(R) Xeon(R) 6973P-C |
|---|
| Logical cores | 4 |
|---|
| RAM | 15.6 GiB |
|---|
| Operating system | linux |
|---|
| Architecture | x86_64 |
|---|
| ToskLight release | 1.4.1 |
|---|
| Benchmark package version | 1.4.1 |
|---|
| Rust toolchain | rustc 1.99.0 (b940084d7 2026-09-28) |
|---|
| Build profile | release |
|---|
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.
| Fixtures | 1024 |
|---|
| Universes | 32 |
|---|
| Fixtures per universe | 32 |
|---|
| Requested output cadence | 60 Hz |
|---|
| Achieved output cadence | 60.03259687966016 Hz |
|---|
| Average engine-only output cadence | 60 Hz |
|---|
| Minimum one-second cadence | 60 Hz |
|---|
| Windows below minimum | — |
|---|
| Deadline misses | 0 |
|---|
| Dropped ticks | 0 |
|---|
| Deferred ticks | 0 |
|---|
| Acceptance tier | healthy |
|---|
| Configured cadence held | met |
|---|
| Limiting measured phase | Engine render and fixture projection |
|---|
| Limiting phase p95 | 9675.648 µs |
|---|
— means the metric was unavailable in the normalized evidence.
Large-show mutation
| Fixture batch | p50 | p95 |
|---|
| 120 fixtures | 3361.069 µs | 3505.196 µs |
|---|
| 1200 fixtures | 3365.969 µs | 3429.192 µs |
|---|
Gate: pass
Persisted Patch transaction
| Batch | p50 | p95 | p95 budget | Gate |
|---|
| 1 fixture | 52111.647 µs | 53495.827 µs | 250000 µs | pass |
|---|
| 100 fixtures | 105653.387 µs | 131169.355 µs | 500000 µs | pass |
|---|
UI action-to-visible latency is informational and is not yet a release gate.
2,048-fixture limit diagnostic
| Fixtures | 2048 |
|---|
| Fixtures per universe | 64 |
|---|
| Requested output cadence | 60 Hz |
|---|
| Achieved output cadence | 60.03370389391205 Hz |
|---|
| Minimum one-second cadence | 60 Hz |
|---|
| Deadline misses | 0 |
|---|
| Dropped ticks | 0 |
|---|
| Deferred ticks | 0 |
|---|
| 100 Hz reference (diagnostic) | met |
|---|
| Limiting measured phase | Engine render and fixture projection |
|---|
| Limiting phase p95 | 9294.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.
Storybook →Reviewed operator surfaces, states, and deterministic product stories.Code Safari →Guided routes through architecture, persistence, tests, and one action end to end.Semantic test catalog →Searchable human-readable contracts compiled from the acceptance suite.Source on GitHub →The complete Rust, TypeScript, React, Tauri, tests, issues, and build history.Build and test guide →Authoritative commands for local development, packages, documentation, and verification.