From 2d4d43b2bcf7b710ff755712dc7c030847cdf85b Mon Sep 17 00:00:00 2001 From: Ryan Carniato Date: Fri, 18 Sep 2026 10:23:14 -0700 Subject: [PATCH] =?UTF-8?q?docs(perf):=20Store=20/=20List=20Delivery=20Lan?= =?UTF-8?q?e=20=E2=80=94=20the=20Octane=20board=20campaign=20(2026-08-16?= =?UTF-8?q?=20=E2=86=92=2009-18)=20and=20the=20board=20workflow?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Hand-off for the store/list performance campaign, so it can continue in a fresh session. performance-experiments.md gains the lane: goal and rulings, instruments (Octane fork, local dbmon harness, results dirs), the seven experiments in order with PR/branch, measurement and verdict (patch channel + driver #3079/#3091/#3229, regions branch, unified For slot #3281 / engine #3308, small-move #3227, coarse reads #3275, create-floor diets #3270/#3367/#3368, props/spread/view work), the fixture authoring rules and what the two passes covered, the uibench findings (endpoint cloning 7.7x -> 2.5x; signal shape 0.46x the reconcile shape on 96/96 cases, ruled idiomatic), the todomvc add100 4x that was measurement noise, the Sep 9 -> Sep 17 board with its caveats, standing lessons, and the ordered open targets (disposal first). benchmarking-strategy.md gains the Octane board workflow: fork/branch, linking next, running, comparing, the gotchas each learned the hard way, and the single-op profiling method. Co-authored-by: Claude via Cursor --- documentation/benchmarking-strategy.md | 91 ++++++ documentation/performance-experiments.md | 343 +++++++++++++++++++++++ 2 files changed, 434 insertions(+) diff --git a/documentation/benchmarking-strategy.md b/documentation/benchmarking-strategy.md index afa8be73d..8bcb1fda8 100644 --- a/documentation/benchmarking-strategy.md +++ b/documentation/benchmarking-strategy.md @@ -378,6 +378,97 @@ Some gaps are not optimization targets. From the 2026-05 investigation: - **σ-band, not point estimates.** Single-run "improvements" that fall inside the σ band of the baseline are not improvements. +## Octane board workflow + +The cross-framework source of truth since 2026-08 is Octane's benchmark +board run from our fork, with Solid linked to a local `next` build. The +campaign that built this and what it found is the +[Store / List Delivery Lane](./performance-experiments.md#store--list-delivery-lane-2026-08-16--2026-09-18-the-octane-board) +in the journal. The mechanics: + +**Where.** Fork `ryansolid/octane`, branch `solid-rc8-fixtures-rebase` +(upstream `main` + our Solid fixture commits; rebase it when upstream +moves — the Solid fixtures are ours alone, upstream still pins +2.0-beta.20). Local checkout `~/Development/octane-fork`. A second +checkout, `~/Development/octane`, holds the pre-September experiment +scaffolding and the older results directories. + +**Linking `next`.** Keep a worktree of this repo on `origin/next` +(`~/Development/solid-next-bench`), `pnpm install`, `pnpm build` in +`packages/compiler` (native binary, needs cargo), then +`pnpm turbo run build --filter=@solidjs/signals --filter=solid-js +--filter=@solidjs/web --filter=@solidjs/babel-plugin --filter=@solidjs/compiler`. +In the fork's `pnpm-workspace.yaml` `overrides:` block, point `solid-js`, +`@solidjs/web`, `@solidjs/signals`, `@solidjs/compiler` and +`@solidjs/babel-plugin` at `link:../solid-next-bench/packages/`, +then `pnpm install --no-frozen-lockfile`. `@solidjs/vite-plugin` stays +npm and picks the linked compiler up through the override — verify with +`readlink -f node_modules/.pnpm/@solidjs+vite-plugin*/node_modules/@solidjs/compiler`. +**Keep the override and the lockfile it produces uncommitted**; the +fixture branch must install from the published rc for anyone else. + +**Running.** From the fork root: + +```bash +env -u PLAYWRIGHT_BROWSERS_PATH node benchmarks/bench.mjs \ + --results-dir=benchmarks/results-