Skip to content

ci(release): run release.sh unit tests on every PR; drop dead cli smoke test (#513) - #517

Merged
adnaan merged 1 commit into
mainfrom
issue-513
Jul 22, 2026
Merged

ci(release): run release.sh unit tests on every PR; drop dead cli smoke test (#513)#517
adnaan merged 1 commit into
mainfrom
issue-513

Conversation

@adnaan

@adnaan adnaan commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Closes #513.

What

scripts/ had shell test scripts that never ran in CI — they only executed when someone remembered to invoke them by hand, so the things they protect could regress silently. This wires the release-safety tests into CI and removes a dead one.

Wire both release tests into a dedicated Release Script Tests job

Both source release.sh with RELEASE_SH_LIB=1, run in a temp dir, and need no Go build or network, so the job skips Go setup entirely and runs in ~1s. release.sh is only exercised during a release — on main, under time pressure, with a tag about to be pushed — which is the worst possible moment to discover a regression, and exactly the situation the last four releases produced. Running these on every PR moves that discovery forward.

Delete test_cli_smoke.sh instead of wiring it

The issue named it as a script to wire in, but its premise is stale: it builds ./cmd/lvt, which was extracted to github.com/livetemplate/lvt (commit 2e595d29). The script errors immediately (directory not found) and has zero callers anywhere in the tree. Generator smoke coverage now lives in that repo's e2e suite (github.com/livetemplate/lvt/e2e/), so this deletion drops no protection — it just removes a stale local copy.

Removing it also resolves the issue's shebang-portability note: it was the only test script still using #!/bin/bash (which doesn't exist on NixOS and some distros). The remaining scripts already use #!/usr/bin/env bash, and the job invokes them via bash scripts/... regardless.

Note on gating

The repo enforces no required status checks (its ruleset carries only deletion + non_fast_forward), so this job — like every existing check — is a visible signal the maintainer heeds at merge time rather than a hard gate. Making it block would be a one-line ruleset addition if you want that.

Not in scope

  • The identical gap in client/scripts/test_release_changelog.sh (fix(release): promote the curated [Unreleased] instead of regenerating client#154) is a separate repo.
  • A pre-existing, unrelated flaky WS/testcontainer test (TestTopic_V8_…CrossInstance and its awaitWSContains helper class) panics under concurrent go test ./... Docker load. It's on main already and untouched by this diff; it's being handled as its own root-cause investigation.

Verification

  • bash scripts/test_release_changelog.sh → all checks pass
  • bash scripts/test_release_client_pin.sh → all checks pass
  • Workflow YAML parsed and job structure confirmed (unit-tests, fuzz-tests, release-script-tests)
  • Full go test ./... suite green via the pre-commit hook

🤖 Generated with Claude Code

…ke test (#513)

The two release-safety shell tests only ran when someone remembered to
invoke them by hand. release.sh is exercised only during a release — on
main, under time pressure, with a tag about to be pushed — so a regression
there surfaces at the worst possible moment. Four consecutive releases hit
exactly that. A test that runs on every PR moves the discovery forward.

Wire both into a dedicated pure-bash `Release Script Tests` job:
- test_release_changelog.sh — [Unreleased] promotion (added #512, covers #511)
- test_release_client_pin.sh — stale/unpublished client-pin guard (added #516)

Both source release.sh with RELEASE_SH_LIB=1, run in a temp dir, and need
no Go build or network, so the job skips Go setup and stays ~1s.

Delete test_cli_smoke.sh instead of wiring it: it builds ./cmd/lvt, which
was extracted to github.com/livetemplate/lvt (commit 2e595d2), so the
script errors immediately and has no callers anywhere. Generator smoke
coverage now lives in that repo's e2e suite — this drops no protection.
Removing it also resolves the issue's shebang-portability note; it was the
only test script still using #!/bin/bash.

The repo enforces no required status checks (ruleset carries only deletion
+ non_fast_forward), so this job is a visible signal the maintainer heeds
at merge, like every existing check.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ui2cwpeGkrUfRt8rh2FgGG
@claude

claude Bot commented Jul 22, 2026

Copy link
Copy Markdown

Review

Overview

Wires the two existing (but never-CI-run) release-safety bash test scripts — test_release_changelog.sh and test_release_client_pin.sh — into a new release-script-tests CI job, and deletes test_cli_smoke.sh, a dead script referencing the now-extracted cmd/lvt (confirmed: cmd/lvt no longer exists in this tree).

Correctness

  • Verified cmd/lvt doesn't exist in the repo and has no other references outside scripts/pre-commit.sh (which only checks a generated-code cleanup directory, unrelated to the CLI build) and the pre-existing grep -v '/cmd/lvt' filters in the other CI jobs. The deletion is safe — the script would fail immediately on go build ./cmd/lvt and has no callers.
  • release.sh's RELEASE_SH_LIB guard (scripts/release.sh:746) correctly gates main "$@" so sourcing it for the two test scripts doesn't trigger an actual release — confirmed by reading the guard directly.
  • New job correctly skips the Go setup/download steps present in unit-tests/fuzz-tests, consistent with the stated rationale (pure bash, no Go/network needed).

Style/Conventions

  • Uses bash scripts/... invocation rather than relying on the executable bit + shebang, sidestepping the exact shebang-portability issue (#!/bin/bash vs #!/usr/bin/env bash) that motivated deleting the smoke test — good internal consistency.
  • The explanatory comment block above the new job's steps: is appropriately scoped (explains why this job needs no Go/network, which isn't obvious from the YAML alone) rather than restating what each step does.

Risks / Things to double check

  • Per CLAUDE.md, this repo's ruleset has no required status checks, so this job is advisory only — worth confirming that's the intended end state here (the PR description already calls this out explicitly, so this is just a note, not a blocker).
  • Minor: the new job has no explicit timeout-minutes, unlike nothing else in this workflow either, so it's consistent with existing jobs — not a regression, just worth knowing a hang here (e.g. set -e masking a script that blocks on stdin) would run until the default GitHub Actions job timeout (6h) rather than failing fast. Not a blocker given the scripts are non-interactive and net-free.

Test coverage

Verdict

Small, low-risk CI change that does exactly what the description says. No functional issues found.

@github-actions

Copy link
Copy Markdown

✅ Performance Benchmark Results

Status: No significant regressions detected

Benchmark Comparison
                                                 │ testdata/benchmarks/baseline.txt │  current-bench.txt   │
                                                 │              sec/op              │    sec/op      vs base   │
DispatchWithState_Cached-8                                             243.8n ± ∞ ¹
E2EUserJourney-8                                                       257.0µ ± ∞ ¹
E2ETodoApp-8                                                           26.17µ ± ∞ ¹
E2ERangeOperations/add-items-8                                         9.541µ ± ∞ ¹
E2ERangeOperations/remove-items-8                                      5.600µ ± ∞ ¹
E2ERangeOperations/reorder-items-8                                     7.037µ ± ∞ ¹
E2ERangeOperations/update-items-8                                      6.930µ ± ∞ ¹
E2EMultipleSessions/sessions-1-8                                       2.781µ ± ∞ ¹
E2EMultipleSessions/sessions-10-8                                      28.64µ ± ∞ ¹
E2EMultipleSessions/sessions-100-8                                     303.0µ ± ∞ ¹
SpecificationCompliance-8                                              1.960µ ± ∞ ¹
ErrorPaths/invalid-template-syntax-8                                   1.856m ± ∞ ¹
ErrorPaths/missing-field-8                                             2.928µ ± ∞ ¹
ErrorPaths/nil-data-8                                                  3.994µ ± ∞ ¹
ErrorPaths/empty-template-8                                            1.942m ± ∞ ¹
TemplateExecute/initial-render-8                                       1.898m ± ∞ ¹
TemplateExecute/subsequent-render-8                                    3.025µ ± ∞ ¹
TemplateExecuteUpdates/no-changes-8                                    2.238µ ± ∞ ¹
TemplateExecuteUpdates/small-update-8                                  2.263µ ± ∞ ¹
TemplateExecuteUpdates/large-update-8                                  6.789µ ± ∞ ¹
TemplateComplexity/simple-fields-8                                     6.258µ ± ∞ ¹
TemplateComplexity/with-conditionals-8                                 4.250µ ± ∞ ¹
TemplateComplexity/with-ranges-8                                       8.797µ ± ∞ ¹
TemplateComplexity/deeply-nested-8                                     8.939µ ± ∞ ¹
TemplateConcurrent/goroutines-1-8                                      3.531µ ± ∞ ¹
TemplateConcurrent/goroutines-10-8                                     3.345µ ± ∞ ¹
TemplateConcurrent/goroutines-100-8                                    4.314µ ± ∞ ¹
Template_Execute-8                                                     3.230µ ± ∞ ¹
Template_ExecuteUpdates-8                                              2.414µ ± ∞ ¹
UserJourney-8                                                          880.1µ ± ∞ ¹
TreeNodeCreation/flat-8                                                483.1n ± ∞ ¹
TreeNodeCreation/nested-small-8                                        3.350µ ± ∞ ¹
TreeNodeCreation/nested-medium-8                                       7.878µ ± ∞ ¹
TreeNodeCreation/nested-large-8                                        23.90µ ± ∞ ¹
TreeNodeMarshalJSON/flat-8                                             4.074µ ± ∞ ¹
TreeNodeMarshalJSON/nested-small-8                                     46.27µ ± ∞ ¹
TreeNodeMarshalJSON/nested-medium-8                                    170.8µ ± ∞ ¹
WrapperInjection/full-html-8                                           2.955µ ± ∞ ¹
WrapperInjection/fragment-8                                            1.912µ ± ∞ ¹
ExtractWrapperContent-8                                                1.897µ ± ∞ ¹
ContextOperations/with-statics-8                                       2.265µ ± ∞ ¹
ContextOperations/without-statics-8                                    2.185µ ± ∞ ¹
TreeNodeClone/flat-8                                                   304.1n ± ∞ ¹
TreeNodeClone/nested-small-8                                           2.227µ ± ∞ ¹
TreeNodeClone/nested-medium-8                                          6.915µ ± ∞ ¹
TreeNodeToMap/flat-8                                                   694.1n ± ∞ ¹
TreeNodeToMap/nested-small-8                                           4.671µ ± ∞ ¹
TreeNodeToMap/nested-medium-8                                          14.39µ ± ∞ ¹
GenerateRandomID-8                                                     93.57n ± ∞ ¹
CalculateStructureFingerprint_Small-8                                  179.6n ± ∞ ¹
CalculateStructureFingerprint_Medium-8                                 3.568µ ± ∞ ¹
CalculateStructureFingerprint_Large-8                                  28.42µ ± ∞ ¹
CalculateStructureFingerprint_DeepNested-8                             3.450µ ± ∞ ¹
CalculateStructureFingerprint_Range100-8                               238.7n ± ∞ ¹
CalculateStructureFingerprint_Range1000-8                              239.4n ± ∞ ¹
FingerprintAlgorithms/small/MD5-previous-8                             289.1n ± ∞ ¹
FingerprintAlgorithms/small/FNV1a128-current-8                         214.3n ± ∞ ¹
FingerprintAlgorithms/medium/MD5-previous-8                            4.603µ ± ∞ ¹
FingerprintAlgorithms/medium/FNV1a128-current-8                        3.536µ ± ∞ ¹
FingerprintAlgorithms/large/MD5-previous-8                             36.37µ ± ∞ ¹
FingerprintAlgorithms/large/FNV1a128-current-8                         28.49µ ± ∞ ¹
FingerprintAlgorithms/deep-20/MD5-previous-8                           4.429µ ± ∞ ¹
FingerprintAlgorithms/deep-20/FNV1a128-current-8                       3.549µ ± ∞ ¹
ExecuteTemplateWithContext_Struct-8                                    1.882µ ± ∞ ¹
ExecuteTemplateWithContext_Map-8                                       2.030µ ± ∞ ¹
Precompute/eager_all_methods-8                                         7.748µ ± ∞ ¹
Precompute/referenced_only-8                                           955.5n ± ∞ ¹
Precompute/all_referenced-8                                            8.011µ ± ∞ ¹
CompareTreesNoChanges-8                                                132.4n ± ∞ ¹
CompareTreesSmallChange-8                                              59.75n ± ∞ ¹
CompareTreesLargeChange/10-8                                           190.8n ± ∞ ¹
CompareTreesLargeChange/100-8                                          1.297µ ± ∞ ¹
CompareTreesLargeChange/1000-8                                         25.17µ ± ∞ ¹
RangeDiffUpdate-8                                                      2.221µ ± ∞ ¹
RangeDiffInsert-8                                                      2.215µ ± ∞ ¹
RangeDiffRemove-8                                                      2.224µ ± ∞ ¹
RangeDiff_TreeNode_Update-8                                            26.59µ ± ∞ ¹
RangeDiff_TreeNode_Reorder-8                                           13.13µ ± ∞ ¹
RangeDiff_TreeNode_LargeList-8                                         321.6µ ± ∞ ¹
PrepareTreeForClient/with-statics-8                                    2.025n ± ∞ ¹
PrepareTreeForClient/without-statics-8                                 921.3n ± ∞ ¹
ClientNeedsStatics_SameStructure-8                                     6.454n ± ∞ ¹
ClientNeedsStatics_DifferentStructure-8                                6.133n ± ∞ ¹
ClientNeedsStatics_DeepNested-8                                        6.447n ± ∞ ¹
ClientNeedsStatics_Range-8                                             6.600n ± ∞ ¹
ClientNeedsStatics_NilOld-8                                            1.986n ± ∞ ¹
WireSize_WithStatics-8                                                 5.345µ ± ∞ ¹
WireSize_WithoutStatics-8                                              5.227µ ± ∞ ¹
WireSizeComparison/small_5_with_statics-8                              1.482µ ± ∞ ¹
WireSizeComparison/small_5_without_statics-8                           1.179µ ± ∞ ¹
WireSizeComparison/medium_20_with_statics-8                            5.284µ ± ∞ ¹
WireSizeComparison/medium_20_without_statics-8                         5.089µ ± ∞ ¹
WireSizeComparison/large_100_with_statics-8                            25.45µ ± ∞ ¹
WireSizeComparison/large_100_without_statics-8                         25.94µ ± ∞ ¹
Parse/simple-8                                                         2.327µ ± ∞ ¹
Parse/conditional-8                                                    3.764µ ± ∞ ¹
Parse/range-8                                                          3.485µ ± ∞ ¹
Parse/nested-8                                                         4.166µ ± ∞ ¹
Parse/complex-8                                                        7.498µ ± ∞ ¹
BuildTree/simple-8                                                     371.7n ± ∞ ¹
BuildTree/conditional-true-8                                           750.2n ± ∞ ¹
BuildTree/conditional-false-8                                          467.3n ± ∞ ¹
BuildTree/range-small-8                                                2.742µ ± ∞ ¹
BuildTreeScale/small-10-8                                              7.808µ ± ∞ ¹
BuildTreeScale/medium-100-8                                            72.15µ ± ∞ ¹
BuildTreeScale/large-1000-8                                            733.5µ ± ∞ ¹
NodeRender-8                                                           81.89n ± ∞ ¹
TreeToHTML/simple-8                                                    139.2n ± ∞ ¹
TreeToHTML/nested-8                                                    250.7n ± ∞ ¹
TreeToHTML/with-ranges-8                                               224.6n ± ∞ ¹
TreeToHTMLScale/small-10-8                                             853.2n ± ∞ ¹
TreeToHTMLScale/medium-100-8                                           7.146µ ± ∞ ¹
TreeToHTMLScale/large-1000-8                                           73.11µ ± ∞ ¹
IsVoidElement-8                                                        91.54n ± ∞ ¹
NodeRenderComplex-8                                                    230.5n ± ∞ ¹
ParseActionFromHTTP-8                                                  1.968µ ± ∞ ¹
ParseActionFromWebSocket-8                                             827.0n ± ∞ ¹
PrepareUpdate/without-errors-8                                        0.3640n ± ∞ ¹
PrepareUpdate/with-errors-8                                            17.39n ± ∞ ¹
SerializeUpdate-8                                                      998.0n ± ∞ ¹
PrepareAndSerialize/simple-update-8                                    1.014µ ± ∞ ¹
PrepareAndSerialize/with-metadata-8                                    1.308µ ± ∞ ¹
ParseActionScale/small-http-8                                          1.950µ ± ∞ ¹
ParseActionScale/small-ws-8                                            787.2n ± ∞ ¹
ParseActionScale/medium-http-8                                         2.657µ ± ∞ ¹
ParseActionScale/medium-ws-8                                           1.501µ ± ∞ ¹
ParseActionScale/large-http-8                                          4.011µ ± ∞ ¹
ParseActionScale/large-ws-8                                            2.914µ ± ∞ ¹
SerializeUpdateScale/simple-8                                          944.4n ± ∞ ¹
SerializeUpdateScale/nested-8                                          2.069µ ± ∞ ¹
SerializeUpdateScale/multiple-fields-8                                 1.547µ ± ∞ ¹
ConcurrentConnections/100_connections-8                                19.76µ ± ∞ ¹
ConcurrentConnections/1000_connections-8                               143.9µ ± ∞ ¹
RegisterUnregister-8                                                   2.698µ ± ∞ ¹
GetByGroup-8                                                           276.4n ± ∞ ¹
CloseConnection-8                                                      1.224µ ± ∞ ¹
MemoryUsage-8                                                          40.35µ ± ∞ ¹
BroadcastToGroup-8                                                     15.73µ ± ∞ ¹
BufferSizes/buf_10-8                                                   275.6n ± ∞ ¹
BufferSizes/buf_50-8                                                   172.5n ± ∞ ¹
BufferSizes/buf_100-8                                                  152.7n ± ∞ ¹
BufferSizes/buf_500-8                                                  175.3n ± ∞ ¹
BufferSizes/buf_1000-8                                                 175.7n ± ∞ ¹
ConcurrentRegistrations-8                                              2.708µ ± ∞ ¹
GetByGroupExcept-8                                                     297.9n ± ∞ ¹
DispatchWithState_Cached-4                                                             439.9n ± ∞ ¹
E2EUserJourney-4                                                                       521.8µ ± ∞ ¹
E2ETodoApp-4                                                                           47.96µ ± ∞ ¹
E2ERangeOperations/add-items-4                                                         20.16µ ± ∞ ¹
E2ERangeOperations/remove-items-4                                                      12.65µ ± ∞ ¹
E2ERangeOperations/reorder-items-4                                                     15.02µ ± ∞ ¹
E2ERangeOperations/update-items-4                                                      15.03µ ± ∞ ¹
E2EMultipleSessions/sessions-1-4                                                       5.325µ ± ∞ ¹
E2EMultipleSessions/sessions-10-4                                                      53.32µ ± ∞ ¹
E2EMultipleSessions/sessions-100-4                                                     553.5µ ± ∞ ¹
SpecificationCompliance-4                                                              3.803µ ± ∞ ¹
ErrorPaths/invalid-template-syntax-4                                                   1.486m ± ∞ ¹
ErrorPaths/missing-field-4                                                             5.465µ ± ∞ ¹
ErrorPaths/nil-data-4                                                                  4.079µ ± ∞ ¹
ErrorPaths/empty-template-4                                                            1.523m ± ∞ ¹
RangeFullSwap_Simple_N10-4                                                             126.0µ ± ∞ ¹
RangeFullSwap_Simple_N100-4                                                            1.130m ± ∞ ¹
RangeFullSwap_Simple_N1000-4                                                           10.43m ± ∞ ¹
RangeFullSwap_DynamicBranch_N10-4                                                      227.2µ ± ∞ ¹
RangeFullSwap_DynamicBranch_N100-4                                                     2.128m ± ∞ ¹
RangeFullSwap_DynamicBranch_N1000-4                                                    20.35m ± ∞ ¹
RecursiveRender-4                                                                      2.131m ± ∞ ¹
RecursiveUpdate-4                                                                      12.64m ± ∞ ¹
OpaqueHTMLBaseline-4                                                                   890.0µ ± ∞ ¹
SystemCard/Counter/Dashboard/session-memory-4                                          34.08µ ± ∞ ¹
SystemCard/Counter/Dashboard/update-4                                                  16.85µ ± ∞ ¹
SystemCard/Counter/Dashboard/state-clone-4                                             708.9n ± ∞ ¹
SystemCard/Counter/Dashboard/payload-size-4                                            16.89µ ± ∞ ¹
SystemCard/Todo_App/session-memory-4                                                   397.2µ ± ∞ ¹
SystemCard/Todo_App/update-4                                                           485.2µ ± ∞ ¹
SystemCard/Todo_App/state-clone-4                                                      13.05µ ± ∞ ¹
SystemCard/Todo_App/payload-size-4                                                     481.7µ ± ∞ ¹
SystemCard/Social_Feed/session-memory-4                                                1.164m ± ∞ ¹
SystemCard/Social_Feed/update-4                                                        1.201m ± ∞ ¹
SystemCard/Social_Feed/state-clone-4                                                   50.23µ ± ∞ ¹
SystemCard/Social_Feed/payload-size-4                                                  1.196m ± ∞ ¹
SystemCard/Chat/Collab/session-memory-4                                                1.722m ± ∞ ¹
SystemCard/Chat/Collab/update-4                                                        1.245m ± ∞ ¹
SystemCard/Chat/Collab/state-clone-4                                                   59.69µ ± ∞ ¹
SystemCard/Chat/Collab/payload-size-4                                                  1.245m ± ∞ ¹
TemplateExecute/initial-render-4                                                       1.550m ± ∞ ¹
TemplateExecute/subsequent-render-4                                                    5.779µ ± ∞ ¹
TemplateExecuteUpdates/no-changes-4                                                    4.554µ ± ∞ ¹
TemplateExecuteUpdates/small-update-4                                                  4.563µ ± ∞ ¹
TemplateExecuteUpdates/large-update-4                                                  12.19µ ± ∞ ¹
TemplateComplexity/simple-fields-4                                                     11.19µ ± ∞ ¹
TemplateComplexity/with-conditionals-4                                                 7.643µ ± ∞ ¹
TemplateComplexity/with-ranges-4                                                       18.14µ ± ∞ ¹
TemplateComplexity/deeply-nested-4                                                     17.61µ ± ∞ ¹
TemplateConcurrent/goroutines-1-4                                                      5.908µ ± ∞ ¹
TemplateConcurrent/goroutines-10-4                                                     5.921µ ± ∞ ¹
TemplateConcurrent/goroutines-100-4                                                    6.086µ ± ∞ ¹
Template_Execute-4                                                                     5.819µ ± ∞ ¹
Template_ExecuteUpdates-4                                                              4.616µ ± ∞ ¹
TopicFanoutByN/N=1-4                                                                   451.6n ± ∞ ¹
TopicFanoutByN/N=5-4                                                                   1.343µ ± ∞ ¹
TopicFanoutByN/N=10-4                                                                  3.153µ ± ∞ ¹
TopicFanoutByN/N=50-4                                                                  18.83µ ± ∞ ¹
TopicFanoutByN/N=100-4                                                                 39.50µ ± ∞ ¹
TopicPatternScanByP/P=1-4                                                              369.4n ± ∞ ¹
TopicPatternScanByP/P=10-4                                                             1.560µ ± ∞ ¹
TopicPatternScanByP/P=100-4                                                            13.29µ ± ∞ ¹
UserJourney-4                                                                          1.581m ± ∞ ¹
TreeNodeCreation/flat-4                                                                651.6n ± ∞ ¹
TreeNodeCreation/nested-small-4                                                        4.459µ ± ∞ ¹
TreeNodeCreation/nested-medium-4                                                       13.57µ ± ∞ ¹
TreeNodeCreation/nested-large-4                                                        41.06µ ± ∞ ¹
TreeNodeMarshalJSON/flat-4                                                             5.437µ ± ∞ ¹
TreeNodeMarshalJSON/nested-small-4                                                     39.91µ ± ∞ ¹
TreeNodeMarshalJSON/nested-medium-4                                                    123.3µ ± ∞ ¹
WrapperInjection/full-html-4                                                           5.516µ ± ∞ ¹
WrapperInjection/fragment-4                                                            3.578µ ± ∞ ¹
WrapperInjection/string-fallback-tokenizer-4                                           3.375µ ± ∞ ¹
ExtractWrapperContent-4                                                                3.443µ ± ∞ ¹
ContextOperations/with-statics-4                                                       3.702µ ± ∞ ¹
ContextOperations/without-statics-4                                                    3.704µ ± ∞ ¹
TreeNodeClone/flat-4                                                                   527.0n ± ∞ ¹
TreeNodeClone/nested-small-4                                                           3.699µ ± ∞ ¹
TreeNodeClone/nested-medium-4                                                          11.30µ ± ∞ ¹
TreeNodeToMap/flat-4                                                                   1.004µ ± ∞ ¹
TreeNodeToMap/nested-small-4                                                           6.938µ ± ∞ ¹
TreeNodeToMap/nested-medium-4                                                          21.20µ ± ∞ ¹
GenerateRandomID-4                                                                     107.8n ± ∞ ¹
CalculateStructureFingerprint_Small-4                                                  246.0n ± ∞ ¹
CalculateStructureFingerprint_Medium-4                                                 4.499µ ± ∞ ¹
CalculateStructureFingerprint_Large-4                                                  32.34µ ± ∞ ¹
CalculateStructureFingerprint_DeepNested-4                                             5.006µ ± ∞ ¹
CalculateStructureFingerprint_Range100-4                                               314.3n ± ∞ ¹
CalculateStructureFingerprint_Range1000-4                                              321.5n ± ∞ ¹
FingerprintAlgorithms/small/MD5-previous-4                                             404.8n ± ∞ ¹
FingerprintAlgorithms/small/FNV1a128-current-4                                         302.6n ± ∞ ¹
FingerprintAlgorithms/medium/MD5-previous-4                                            6.175µ ± ∞ ¹
FingerprintAlgorithms/medium/FNV1a128-current-4                                        4.671µ ± ∞ ¹
FingerprintAlgorithms/large/MD5-previous-4                                             46.25µ ± ∞ ¹
FingerprintAlgorithms/large/FNV1a128-current-4                                         33.26µ ± ∞ ¹
FingerprintAlgorithms/deep-20/MD5-previous-4                                           5.191µ ± ∞ ¹
FingerprintAlgorithms/deep-20/FNV1a128-current-4                                       4.078µ ± ∞ ¹
ExecuteTemplateWithContext_Struct-4                                                    3.471µ ± ∞ ¹
ExecuteTemplateWithContext_Map-4                                                       3.711µ ± ∞ ¹
Precompute/eager_all_methods-4                                                         4.744µ ± ∞ ¹
Precompute/referenced_only-4                                                           450.8n ± ∞ ¹
Precompute/all_referenced-4                                                            4.867µ ± ∞ ¹
CompareTreesNoChanges-4                                                                212.6n ± ∞ ¹
CompareTreesSmallChange-4                                                              105.8n ± ∞ ¹
CompareTreesLargeChange/10-4                                                           317.7n ± ∞ ¹
CompareTreesLargeChange/100-4                                                          2.250µ ± ∞ ¹
CompareTreesLargeChange/1000-4                                                         41.75µ ± ∞ ¹
RangeDiffUpdate-4                                                                      4.580µ ± ∞ ¹
RangeDiffInsert-4                                                                      4.620µ ± ∞ ¹
RangeDiffRemove-4                                                                      4.685µ ± ∞ ¹
RangeDiff_TreeNode_Update-4                                                            163.2µ ± ∞ ¹
RangeDiff_TreeNode_Reorder-4                                                           115.5µ ± ∞ ¹
RangeDiff_TreeNode_LargeList-4                                                         1.845m ± ∞ ¹
PrepareTreeForClient/with-statics-4                                                    2.372n ± ∞ ¹
PrepareTreeForClient/without-statics-4                                                 1.576µ ± ∞ ¹
ClientNeedsStatics_SameStructure-4                                                     9.376n ± ∞ ¹
ClientNeedsStatics_DifferentStructure-4                                                8.746n ± ∞ ¹
ClientNeedsStatics_DeepNested-4                                                        9.370n ± ∞ ¹
ClientNeedsStatics_Range-4                                                             9.669n ± ∞ ¹
ClientNeedsStatics_NilOld-4                                                            1.872n ± ∞ ¹
WireSize_WithStatics-4                                                                 8.997µ ± ∞ ¹
WireSize_WithoutStatics-4                                                              8.804µ ± ∞ ¹
WireSizeComparison/small_5_with_statics-4                                              2.571µ ± ∞ ¹
WireSizeComparison/small_5_without_statics-4                                           2.193µ ± ∞ ¹
WireSizeComparison/medium_20_with_statics-4                                            8.989µ ± ∞ ¹
WireSizeComparison/medium_20_without_statics-4                                         8.809µ ± ∞ ¹
WireSizeComparison/large_100_with_statics-4                                            40.37µ ± ∞ ¹
WireSizeComparison/large_100_without_statics-4                                         41.41µ ± ∞ ¹
RangeDiff_Stream_Append_Small-4                                                        8.199µ ± ∞ ¹
RangeDiff_Stream_Append_Medium-4                                                       71.81µ ± ∞ ¹
RangeDiff_Stream_Append_Large-4                                                        9.053m ± ∞ ¹
RangeDiff_Stream_Update_Small-4                                                        7.984µ ± ∞ ¹
RangeDiff_Stream_Update_Medium-4                                                       71.96µ ± ∞ ¹
RangeDiff_Stream_Update_Large-4                                                        9.722m ± ∞ ¹
RangeDiff_Stream_Reorder_Small-4                                                       7.336µ ± ∞ ¹
RangeDiff_Stream_Reorder_Medium-4                                                      65.42µ ± ∞ ¹
RangeDiff_Stream_Reorder_Large-4                                                       7.518m ± ∞ ¹
RangeDiff_Stream_Append_WireSize_Small-4                                               10.65µ ± ∞ ¹
RangeDiff_Stream_Append_WireSize_Medium-4                                              74.86µ ± ∞ ¹
RangeDiff_Stream_Append_WireSize_Large-4                                               8.998m ± ∞ ¹
RangeDiff_Stream_Update_WireSize_Small-4                                               9.194µ ± ∞ ¹
RangeDiff_Stream_Update_WireSize_Medium-4                                              74.62µ ± ∞ ¹
RangeDiff_Stream_Update_WireSize_Large-4                                               9.787m ± ∞ ¹
RangeDiff_Stream_Reorder_WireSize_Small-4                                              8.059µ ± ∞ ¹
RangeDiff_Stream_Reorder_WireSize_Medium-4                                             69.52µ ± ∞ ¹
RangeDiff_Stream_Reorder_WireSize_Large-4                                              8.003m ± ∞ ¹
RangeDiff_LegacyPartialDelta_Update_WireSize-4                                         623.2n ± ∞ ¹
Parse/simple-4                                                                         4.518µ ± ∞ ¹
Parse/conditional-4                                                                    7.211µ ± ∞ ¹
Parse/range-4                                                                          6.468µ ± ∞ ¹
Parse/nested-4                                                                         8.016µ ± ∞ ¹
Parse/complex-4                                                                        14.41µ ± ∞ ¹
BuildTree/simple-4                                                                     663.3n ± ∞ ¹
BuildTree/conditional-true-4                                                           1.268µ ± ∞ ¹
BuildTree/conditional-false-4                                                          841.2n ± ∞ ¹
BuildTree/range-small-4                                                                4.004µ ± ∞ ¹
BuildTreeScale/small-10-4                                                              10.95µ ± ∞ ¹
BuildTreeScale/medium-100-4                                                            99.36µ ± ∞ ¹
BuildTreeScale/large-1000-4                                                            874.5µ ± ∞ ¹
NodeRender-4                                                                           106.8n ± ∞ ¹
TreeToHTML/simple-4                                                                    206.8n ± ∞ ¹
TreeToHTML/nested-4                                                                    334.4n ± ∞ ¹
TreeToHTML/with-ranges-4                                                               316.1n ± ∞ ¹
TreeToHTMLScale/small-10-4                                                             1.276µ ± ∞ ¹
TreeToHTMLScale/medium-100-4                                                           10.76µ ± ∞ ¹
TreeToHTMLScale/large-1000-4                                                           109.4µ ± ∞ ¹
IsVoidElement-4                                                                        96.89n ± ∞ ¹
NodeRenderComplex-4                                                                    300.0n ± ∞ ¹
ParseActionFromHTTP-4                                                                  2.742µ ± ∞ ¹
ParseActionFromWebSocket-4                                                             510.4n ± ∞ ¹
PrepareUpdate/without-errors-4                                                        0.3118n ± ∞ ¹
PrepareUpdate/with-errors-4                                                            31.35n ± ∞ ¹
SerializeUpdate-4                                                                      1.181µ ± ∞ ¹
PrepareAndSerialize/simple-update-4                                                    1.213µ ± ∞ ¹
PrepareAndSerialize/with-metadata-4                                                    1.817µ ± ∞ ¹
ParseActionScale/small-http-4                                                          2.778µ ± ∞ ¹
ParseActionScale/small-ws-4                                                            492.9n ± ∞ ¹
ParseActionScale/medium-http-4                                                         3.320µ ± ∞ ¹
ParseActionScale/medium-ws-4                                                           1.042µ ± ∞ ¹
ParseActionScale/large-http-4                                                          4.723µ ± ∞ ¹
ParseActionScale/large-ws-4                                                            2.402µ ± ∞ ¹
SerializeUpdateScale/simple-4                                                          1.179µ ± ∞ ¹
SerializeUpdateScale/nested-4                                                          2.238µ ± ∞ ¹
SerializeUpdateScale/multiple-fields-4                                                 1.752µ ± ∞ ¹
ConcurrentConnections/1000_connections-4                                               239.0µ ± ∞ ¹
RegisterUnregister-4                                                                   4.410µ ± ∞ ¹
GetByGroup-4                                                                           469.0n ± ∞ ¹
CloseConnection-4                                                                      3.340µ ± ∞ ¹
MemoryUsage-4                                                                          82.62µ ± ∞ ¹
BroadcastToGroup-4                                                                     21.02µ ± ∞ ¹
BufferSizes/buf_10-4                                                                   354.0n ± ∞ ¹
BufferSizes/buf_50-4                                                                   183.5n ± ∞ ¹
BufferSizes/buf_100-4                                                                  167.5n ± ∞ ¹
BufferSizes/buf_500-4                                                                  163.0n ± ∞ ¹
BufferSizes/buf_1000-4                                                                 164.6n ± ∞ ¹
ConcurrentRegistrations-4                                                              4.296µ ± ∞ ¹
GetByGroupExcept-4                                                                     532.7n ± ∞ ¹
geomean                                                                2.307µ          8.778µ        ? ² ³
¹ need >= 6 samples for confidence interval at level 0.95
² benchmark set differs from baseline; geomeans may not be comparable
³ ratios must be >0 to compute geomean

                                                 │ testdata/benchmarks/baseline.txt │   current-bench.txt    │
                                                 │               B/op               │     B/op       vs base │
DispatchWithState_Cached-8                                              80.00 ± ∞ ¹
E2EUserJourney-8                                                      246.0Ki ± ∞ ¹
E2ETodoApp-8                                                          22.64Ki ± ∞ ¹
E2ERangeOperations/add-items-8                                        9.184Ki ± ∞ ¹
E2ERangeOperations/remove-items-8                                     5.366Ki ± ∞ ¹
E2ERangeOperations/reorder-items-8                                    6.617Ki ± ∞ ¹
E2ERangeOperations/update-items-8                                     6.617Ki ± ∞ ¹
E2EMultipleSessions/sessions-1-8                                      2.743Ki ± ∞ ¹
E2EMultipleSessions/sessions-10-8                                     27.38Ki ± ∞ ¹
E2EMultipleSessions/sessions-100-8                                    273.7Ki ± ∞ ¹
SpecificationCompliance-8                                             1.827Ki ± ∞ ¹
ErrorPaths/invalid-template-syntax-8                                  382.9Ki ± ∞ ¹
ErrorPaths/missing-field-8                                            2.899Ki ± ∞ ¹
ErrorPaths/nil-data-8                                                 7.144Ki ± ∞ ¹
ErrorPaths/empty-template-8                                           405.5Ki ± ∞ ¹
TemplateExecute/initial-render-8                                      409.3Ki ± ∞ ¹
TemplateExecute/subsequent-render-8                                   2.962Ki ± ∞ ¹
TemplateExecuteUpdates/no-changes-8                                   2.149Ki ± ∞ ¹
TemplateExecuteUpdates/small-update-8                                 2.149Ki ± ∞ ¹
TemplateExecuteUpdates/large-update-8                                 5.065Ki ± ∞ ¹
TemplateComplexity/simple-fields-8                                    4.571Ki ± ∞ ¹
TemplateComplexity/with-conditionals-8                                3.899Ki ± ∞ ¹
TemplateComplexity/with-ranges-8                                      7.378Ki ± ∞ ¹
TemplateComplexity/deeply-nested-8                                    7.550Ki ± ∞ ¹
TemplateConcurrent/goroutines-1-8                                     2.962Ki ± ∞ ¹
TemplateConcurrent/goroutines-10-8                                    2.962Ki ± ∞ ¹
TemplateConcurrent/goroutines-100-8                                   2.963Ki ± ∞ ¹
Template_Execute-8                                                    3.118Ki ± ∞ ¹
Template_ExecuteUpdates-8                                             2.267Ki ± ∞ ¹
UserJourney-8                                                         920.9Ki ± ∞ ¹
TreeNodeCreation/flat-8                                               1.234Ki ± ∞ ¹
TreeNodeCreation/nested-small-8                                       7.875Ki ± ∞ ¹
TreeNodeCreation/nested-medium-8                                      23.91Ki ± ∞ ¹
TreeNodeCreation/nested-large-8                                       72.00Ki ± ∞ ¹
TreeNodeMarshalJSON/flat-8                                            3.472Ki ± ∞ ¹
TreeNodeMarshalJSON/nested-small-8                                    27.29Ki ± ∞ ¹
TreeNodeMarshalJSON/nested-medium-8                                   89.06Ki ± ∞ ¹
WrapperInjection/full-html-8                                          6.930Ki ± ∞ ¹
WrapperInjection/fragment-8                                           6.266Ki ± ∞ ¹
ExtractWrapperContent-8                                               5.883Ki ± ∞ ¹
ContextOperations/with-statics-8                                      7.266Ki ± ∞ ¹
ContextOperations/without-statics-8                                   7.266Ki ± ∞ ¹
TreeNodeClone/flat-8                                                  1.078Ki ± ∞ ¹
TreeNodeClone/nested-small-8                                          7.266Ki ± ∞ ¹
TreeNodeClone/nested-medium-8                                         22.03Ki ± ∞ ¹
TreeNodeToMap/flat-8                                                  2.109Ki ± ∞ ¹
TreeNodeToMap/nested-small-8                                          14.06Ki ± ∞ ¹
TreeNodeToMap/nested-medium-8                                         42.54Ki ± ∞ ¹
GenerateRandomID-8                                                      24.00 ± ∞ ¹
CalculateStructureFingerprint_Small-8                                   88.00 ± ∞ ¹
CalculateStructureFingerprint_Medium-8                                  904.0 ± ∞ ¹
CalculateStructureFingerprint_Large-8                                 4.016Ki ± ∞ ¹
CalculateStructureFingerprint_DeepNested-8                            1.781Ki ± ∞ ¹
CalculateStructureFingerprint_Range100-8                                104.0 ± ∞ ¹
CalculateStructureFingerprint_Range1000-8                               104.0 ± ∞ ¹
FingerprintAlgorithms/small/MD5-previous-8                              184.0 ± ∞ ¹
FingerprintAlgorithms/small/FNV1a128-current-8                          112.0 ± ∞ ¹
FingerprintAlgorithms/medium/MD5-previous-8                            1000.0 ± ∞ ¹
FingerprintAlgorithms/medium/FNV1a128-current-8                         928.0 ± ∞ ¹
FingerprintAlgorithms/large/MD5-previous-8                            4.109Ki ± ∞ ¹
FingerprintAlgorithms/large/FNV1a128-current-8                        4.039Ki ± ∞ ¹
FingerprintAlgorithms/deep-20/MD5-previous-8                          1.875Ki ± ∞ ¹
FingerprintAlgorithms/deep-20/FNV1a128-current-8                      1.805Ki ± ∞ ¹
ExecuteTemplateWithContext_Struct-8                                    1003.0 ± ∞ ¹
ExecuteTemplateWithContext_Map-8                                      1.151Ki ± ∞ ¹
Precompute/eager_all_methods-8                                        1.570Ki ± ∞ ¹
Precompute/referenced_only-8                                            440.0 ± ∞ ¹
Precompute/all_referenced-8                                           1.570Ki ± ∞ ¹
CompareTreesNoChanges-8                                                 288.0 ± ∞ ¹
CompareTreesSmallChange-8                                               144.0 ± ∞ ¹
CompareTreesLargeChange/10-8                                            288.0 ± ∞ ¹
CompareTreesLargeChange/100-8                                         1.875Ki ± ∞ ¹
CompareTreesLargeChange/1000-8                                        18.94Ki ± ∞ ¹
RangeDiffUpdate-8                                                     13.77Ki ± ∞ ¹
RangeDiffInsert-8                                                     13.77Ki ± ∞ ¹
RangeDiffRemove-8                                                     13.77Ki ± ∞ ¹
RangeDiff_TreeNode_Update-8                                           32.67Ki ± ∞ ¹
RangeDiff_TreeNode_Reorder-8                                          20.62Ki ± ∞ ¹
RangeDiff_TreeNode_LargeList-8                                        439.0Ki ± ∞ ¹
PrepareTreeForClient/with-statics-8                                     0.000 ± ∞ ¹
PrepareTreeForClient/without-statics-8                                1.875Ki ± ∞ ¹
ClientNeedsStatics_SameStructure-8                                      0.000 ± ∞ ¹
ClientNeedsStatics_DifferentStructure-8                                 0.000 ± ∞ ¹
ClientNeedsStatics_DeepNested-8                                         0.000 ± ∞ ¹
ClientNeedsStatics_Range-8                                              0.000 ± ∞ ¹
ClientNeedsStatics_NilOld-8                                             0.000 ± ∞ ¹
WireSize_WithStatics-8                                                4.271Ki ± ∞ ¹
WireSize_WithoutStatics-8                                             4.528Ki ± ∞ ¹
WireSizeComparison/small_5_with_statics-8                              1017.0 ± ∞ ¹
WireSizeComparison/small_5_without_statics-8                          1.017Ki ± ∞ ¹
WireSizeComparison/medium_20_with_statics-8                           4.271Ki ± ∞ ¹
WireSizeComparison/medium_20_without_statics-8                        4.528Ki ± ∞ ¹
WireSizeComparison/large_100_with_statics-8                           19.10Ki ± ∞ ¹
WireSizeComparison/large_100_without_statics-8                        20.93Ki ± ∞ ¹
Parse/simple-8                                                        5.125Ki ± ∞ ¹
Parse/conditional-8                                                   5.867Ki ± ∞ ¹
Parse/range-8                                                         5.703Ki ± ∞ ¹
Parse/nested-8                                                        6.078Ki ± ∞ ¹
Parse/complex-8                                                       8.375Ki ± ∞ ¹
BuildTree/simple-8                                                      672.0 ± ∞ ¹
BuildTree/conditional-true-8                                          1.297Ki ± ∞ ¹
BuildTree/conditional-false-8                                           968.0 ± ∞ ¹
BuildTree/range-small-8                                               3.862Ki ± ∞ ¹
BuildTreeScale/small-10-8                                             11.30Ki ± ∞ ¹
BuildTreeScale/medium-100-8                                           107.3Ki ± ∞ ¹
BuildTreeScale/large-1000-8                                           1.045Mi ± ∞ ¹
NodeRender-8                                                            56.00 ± ∞ ¹
TreeToHTML/simple-8                                                     64.00 ± ∞ ¹
TreeToHTML/nested-8                                                     144.0 ± ∞ ¹
TreeToHTML/with-ranges-8                                                72.00 ± ∞ ¹
TreeToHTMLScale/small-10-8                                              544.0 ± ∞ ¹
TreeToHTMLScale/medium-100-8                                          3.634Ki ± ∞ ¹
TreeToHTMLScale/large-1000-8                                          65.42Ki ± ∞ ¹
IsVoidElement-8                                                         0.000 ± ∞ ¹
NodeRenderComplex-8                                                     248.0 ± ∞ ¹
ParseActionFromHTTP-8                                                 6.799Ki ± ∞ ¹
ParseActionFromWebSocket-8                                              656.0 ± ∞ ¹
PrepareUpdate/without-errors-8                                          0.000 ± ∞ ¹
PrepareUpdate/with-errors-8                                             32.00 ± ∞ ¹
SerializeUpdate-8                                                       648.0 ± ∞ ¹
PrepareAndSerialize/simple-update-8                                     672.0 ± ∞ ¹
PrepareAndSerialize/with-metadata-8                                     848.0 ± ∞ ¹
ParseActionScale/small-http-8                                         6.791Ki ± ∞ ¹
ParseActionScale/small-ws-8                                             648.0 ± ∞ ¹
ParseActionScale/medium-http-8                                        6.955Ki ± ∞ ¹
ParseActionScale/medium-ws-8                                            760.0 ± ∞ ¹
ParseActionScale/large-http-8                                         7.885Ki ± ∞ ¹
ParseActionScale/large-ws-8                                           1.578Ki ± ∞ ¹
SerializeUpdateScale/simple-8                                           648.0 ± ∞ ¹
SerializeUpdateScale/nested-8                                         1.282Ki ± ∞ ¹
SerializeUpdateScale/multiple-fields-8                                  968.0 ± ∞ ¹
ConcurrentConnections/100_connections-8                               3.516Ki ± ∞ ¹
ConcurrentConnections/1000_connections-8                              35.16Ki ± ∞ ¹
RegisterUnregister-8                                                  1.182Ki ± ∞ ¹
GetByGroup-8                                                            896.0 ± ∞ ¹
CloseConnection-8                                                       248.0 ± ∞ ¹
MemoryUsage-8                                                         95.83Ki ± ∞ ¹
BroadcastToGroup-8                                                    4.000Ki ± ∞ ¹
BufferSizes/buf_10-8                                                    113.0 ± ∞ ¹
BufferSizes/buf_50-8                                                    54.00 ± ∞ ¹
BufferSizes/buf_100-8                                                   47.00 ± ∞ ¹
BufferSizes/buf_500-8                                                   36.00 ± ∞ ¹
BufferSizes/buf_1000-8                                                  36.00 ± ∞ ¹
ConcurrentRegistrations-8                                             1.210Ki ± ∞ ¹
GetByGroupExcept-8                                                      896.0 ± ∞ ¹
DispatchWithState_Cached-4                                                              80.00 ± ∞ ¹
E2EUserJourney-4                                                                      272.6Ki ± ∞ ¹
E2ETodoApp-4                                                                          24.65Ki ± ∞ ¹
E2ERangeOperations/add-items-4                                                        11.16Ki ± ∞ ¹
E2ERangeOperations/remove-items-4                                                     7.063Ki ± ∞ ¹
E2ERangeOperations/reorder-items-4                                                    8.418Ki ± ∞ ¹
E2ERangeOperations/update-items-4                                                     8.418Ki ± ∞ ¹
E2EMultipleSessions/sessions-1-4                                                      3.011Ki ± ∞ ¹
E2EMultipleSessions/sessions-10-4                                                     30.06Ki ± ∞ ¹
E2EMultipleSessions/sessions-100-4                                                    300.2Ki ± ∞ ¹
SpecificationCompliance-4                                                             1.967Ki ± ∞ ¹
ErrorPaths/invalid-template-syntax-4                                                  334.8Ki ± ∞ ¹
ErrorPaths/missing-field-4                                                            3.039Ki ± ∞ ¹
ErrorPaths/nil-data-4                                                                 2.227Ki ± ∞ ¹
ErrorPaths/empty-template-4                                                           362.0Ki ± ∞ ¹
RangeFullSwap_Simple_N10-4                                                            62.12Ki ± ∞ ¹
RangeFullSwap_Simple_N100-4                                                           583.4Ki ± ∞ ¹
RangeFullSwap_Simple_N1000-4                                                          6.091Mi ± ∞ ¹
RangeFullSwap_DynamicBranch_N10-4                                                     113.3Ki ± ∞ ¹
RangeFullSwap_DynamicBranch_N100-4                                                    1.068Mi ± ∞ ¹
RangeFullSwap_DynamicBranch_N1000-4                                                   11.90Mi ± ∞ ¹
RecursiveRender-4                                                                     1.027Mi ± ∞ ¹
RecursiveUpdate-4                                                                     8.960Mi ± ∞ ¹
OpaqueHTMLBaseline-4                                                                  204.4Ki ± ∞ ¹
SystemCard/Counter/Dashboard/session-memory-4                                         18.96Ki ± ∞ ¹
SystemCard/Counter/Dashboard/update-4                                                 7.487Ki ± ∞ ¹
SystemCard/Counter/Dashboard/state-clone-4                                              168.0 ± ∞ ¹
SystemCard/Counter/Dashboard/payload-size-4                                           7.487Ki ± ∞ ¹
SystemCard/Todo_App/session-memory-4                                                  166.6Ki ± ∞ ¹
SystemCard/Todo_App/update-4                                                          237.9Ki ± ∞ ¹
SystemCard/Todo_App/state-clone-4                                                     4.135Ki ± ∞ ¹
SystemCard/Todo_App/payload-size-4                                                    237.9Ki ± ∞ ¹
SystemCard/Social_Feed/session-memory-4                                               519.7Ki ± ∞ ¹
SystemCard/Social_Feed/update-4                                                       628.0Ki ± ∞ ¹
SystemCard/Social_Feed/state-clone-4                                                  19.89Ki ± ∞ ¹
SystemCard/Social_Feed/payload-size-4                                                 627.7Ki ± ∞ ¹
SystemCard/Chat/Collab/session-memory-4                                               732.7Ki ± ∞ ¹
SystemCard/Chat/Collab/update-4                                                       611.7Ki ± ∞ ¹
SystemCard/Chat/Collab/state-clone-4                                                  22.03Ki ± ∞ ¹
SystemCard/Chat/Collab/payload-size-4                                                 611.5Ki ± ∞ ¹
TemplateExecute/initial-render-4                                                      365.4Ki ± ∞ ¹
TemplateExecute/subsequent-render-4                                                   3.102Ki ± ∞ ¹
TemplateExecuteUpdates/no-changes-4                                                   2.422Ki ± ∞ ¹
TemplateExecuteUpdates/small-update-4                                                 2.422Ki ± ∞ ¹
TemplateExecuteUpdates/large-update-4                                                 5.337Ki ± ∞ ¹
TemplateComplexity/simple-fields-4                                                    4.711Ki ± ∞ ¹
TemplateComplexity/with-conditionals-4                                                4.039Ki ± ∞ ¹
TemplateComplexity/with-ranges-4                                                      9.009Ki ± ∞ ¹
TemplateComplexity/deeply-nested-4                                                    9.087Ki ± ∞ ¹
TemplateConcurrent/goroutines-1-4                                                     3.102Ki ± ∞ ¹
TemplateConcurrent/goroutines-10-4                                                    3.102Ki ± ∞ ¹
TemplateConcurrent/goroutines-100-4                                                   3.103Ki ± ∞ ¹
Template_Execute-4                                                                    3.258Ki ± ∞ ¹
Template_ExecuteUpdates-4                                                             2.547Ki ± ∞ ¹
TopicFanoutByN/N=1-4                                                                    232.0 ± ∞ ¹
TopicFanoutByN/N=5-4                                                                    400.0 ± ∞ ¹
TopicFanoutByN/N=10-4                                                                   920.0 ± ∞ ¹
TopicFanoutByN/N=50-4                                                                 4.227Ki ± ∞ ¹
TopicFanoutByN/N=100-4                                                                8.539Ki ± ∞ ¹
TopicPatternScanByP/P=1-4                                                               256.0 ± ∞ ¹
TopicPatternScanByP/P=10-4                                                              992.0 ± ∞ ¹
TopicPatternScanByP/P=100-4                                                           8.000Ki ± ∞ ¹
UserJourney-4                                                                         940.4Ki ± ∞ ¹
TreeNodeCreation/flat-4                                                               1.234Ki ± ∞ ¹
TreeNodeCreation/nested-small-4                                                       7.875Ki ± ∞ ¹
TreeNodeCreation/nested-medium-4                                                      23.91Ki ± ∞ ¹
TreeNodeCreation/nested-large-4                                                       72.00Ki ± ∞ ¹
TreeNodeMarshalJSON/flat-4                                                            4.979Ki ± ∞ ¹
TreeNodeMarshalJSON/nested-small-4                                                    36.43Ki ± ∞ ¹
TreeNodeMarshalJSON/nested-medium-4                                                   116.8Ki ± ∞ ¹
WrapperInjection/full-html-4                                                          6.930Ki ± ∞ ¹
WrapperInjection/fragment-4                                                           6.266Ki ± ∞ ¹
WrapperInjection/string-fallback-tokenizer-4                                          4.938Ki ± ∞ ¹
ExtractWrapperContent-4                                                               5.883Ki ± ∞ ¹
ContextOperations/with-statics-4                                                      7.266Ki ± ∞ ¹
ContextOperations/without-statics-4                                                   7.266Ki ± ∞ ¹
TreeNodeClone/flat-4                                                                  1.078Ki ± ∞ ¹
TreeNodeClone/nested-small-4                                                          7.266Ki ± ∞ ¹
TreeNodeClone/nested-medium-4                                                         22.03Ki ± ∞ ¹
TreeNodeToMap/flat-4                                                                  2.109Ki ± ∞ ¹
TreeNodeToMap/nested-small-4                                                          14.06Ki ± ∞ ¹
TreeNodeToMap/nested-medium-4                                                         42.54Ki ± ∞ ¹
GenerateRandomID-4                                                                      24.00 ± ∞ ¹
CalculateStructureFingerprint_Small-4                                                   88.00 ± ∞ ¹
CalculateStructureFingerprint_Medium-4                                                  904.0 ± ∞ ¹
CalculateStructureFingerprint_Large-4                                                 4.016Ki ± ∞ ¹
CalculateStructureFingerprint_DeepNested-4                                            1.781Ki ± ∞ ¹
CalculateStructureFingerprint_Range100-4                                                104.0 ± ∞ ¹
CalculateStructureFingerprint_Range1000-4                                               104.0 ± ∞ ¹
FingerprintAlgorithms/small/MD5-previous-4                                              152.0 ± ∞ ¹
FingerprintAlgorithms/small/FNV1a128-current-4                                          80.00 ± ∞ ¹
FingerprintAlgorithms/medium/MD5-previous-4                                             968.0 ± ∞ ¹
FingerprintAlgorithms/medium/FNV1a128-current-4                                         896.0 ± ∞ ¹
FingerprintAlgorithms/large/MD5-previous-4                                            4.078Ki ± ∞ ¹
FingerprintAlgorithms/large/FNV1a128-current-4                                        4.008Ki ± ∞ ¹
FingerprintAlgorithms/deep-20/MD5-previous-4                                            952.0 ± ∞ ¹
FingerprintAlgorithms/deep-20/FNV1a128-current-4                                        880.0 ± ∞ ¹
ExecuteTemplateWithContext_Struct-4                                                    1002.0 ± ∞ ¹
ExecuteTemplateWithContext_Map-4                                                      1.150Ki ± ∞ ¹
Precompute/eager_all_methods-4                                                        1.570Ki ± ∞ ¹
Precompute/referenced_only-4                                                            440.0 ± ∞ ¹
Precompute/all_referenced-4                                                           1.570Ki ± ∞ ¹
CompareTreesNoChanges-4                                                                 288.0 ± ∞ ¹
CompareTreesSmallChange-4                                                               144.0 ± ∞ ¹
CompareTreesLargeChange/10-4                                                            288.0 ± ∞ ¹
CompareTreesLargeChange/100-4                                                         1.875Ki ± ∞ ¹
CompareTreesLargeChange/1000-4                                                        18.94Ki ± ∞ ¹
RangeDiffUpdate-4                                                                     17.17Ki ± ∞ ¹
RangeDiffInsert-4                                                                     17.17Ki ± ∞ ¹
RangeDiffRemove-4                                                                     17.17Ki ± ∞ ¹
RangeDiff_TreeNode_Update-4                                                           90.48Ki ± ∞ ¹
RangeDiff_TreeNode_Reorder-4                                                          66.11Ki ± ∞ ¹
RangeDiff_TreeNode_LargeList-4                                                        995.4Ki ± ∞ ¹
PrepareTreeForClient/with-statics-4                                                     0.000 ± ∞ ¹
PrepareTreeForClient/without-statics-4                                                1.875Ki ± ∞ ¹
ClientNeedsStatics_SameStructure-4                                                      0.000 ± ∞ ¹
ClientNeedsStatics_DifferentStructure-4                                                 0.000 ± ∞ ¹
ClientNeedsStatics_DeepNested-4                                                         0.000 ± ∞ ¹
ClientNeedsStatics_Range-4                                                              0.000 ± ∞ ¹
ClientNeedsStatics_NilOld-4                                                             0.000 ± ∞ ¹
WireSize_WithStatics-4                                                                5.659Ki ± ∞ ¹
WireSize_WithoutStatics-4                                                             5.949Ki ± ∞ ¹
WireSizeComparison/small_5_with_statics-4                                             1.407Ki ± ∞ ¹
WireSizeComparison/small_5_without_statics-4                                          1.494Ki ± ∞ ¹
WireSizeComparison/medium_20_with_statics-4                                           5.659Ki ± ∞ ¹
WireSizeComparison/medium_20_without_statics-4                                        5.949Ki ± ∞ ¹
WireSizeComparison/large_100_with_statics-4                                           24.03Ki ± ∞ ¹
WireSizeComparison/large_100_without_statics-4                                        25.89Ki ± ∞ ¹
RangeDiff_Stream_Append_Small-4                                                       4.898Ki ± ∞ ¹
RangeDiff_Stream_Append_Medium-4                                                      40.95Ki ± ∞ ¹
RangeDiff_Stream_Append_Large-4                                                       4.219Mi ± ∞ ¹
RangeDiff_Stream_Update_Small-4                                                       5.375Ki ± ∞ ¹
RangeDiff_Stream_Update_Medium-4                                                      44.42Ki ± ∞ ¹
RangeDiff_Stream_Update_Large-4                                                       4.635Mi ± ∞ ¹
RangeDiff_Stream_Reorder_Small-4                                                      4.820Ki ± ∞ ¹
RangeDiff_Stream_Reorder_Medium-4                                                     42.29Ki ± ∞ ¹
RangeDiff_Stream_Reorder_Large-4                                                      4.479Mi ± ∞ ¹
RangeDiff_Stream_Append_WireSize_Small-4                                              5.962Ki ± ∞ ¹
RangeDiff_Stream_Append_WireSize_Medium-4                                             42.06Ki ± ∞ ¹
RangeDiff_Stream_Append_WireSize_Large-4                                              4.223Mi ± ∞ ¹
RangeDiff_Stream_Update_WireSize_Small-4                                              5.603Ki ± ∞ ¹
RangeDiff_Stream_Update_WireSize_Medium-4                                             44.66Ki ± ∞ ¹
RangeDiff_Stream_Update_WireSize_Large-4                                              4.636Mi ± ∞ ¹
RangeDiff_Stream_Reorder_WireSize_Small-4                                             4.954Ki ± ∞ ¹
RangeDiff_Stream_Reorder_WireSize_Medium-4                                            43.35Ki ± ∞ ¹
RangeDiff_Stream_Reorder_WireSize_Large-4                                             4.740Mi ± ∞ ¹
RangeDiff_LegacyPartialDelta_Update_WireSize-4                                          192.0 ± ∞ ¹
Parse/simple-4                                                                        5.148Ki ± ∞ ¹
Parse/conditional-4                                                                   5.891Ki ± ∞ ¹
Parse/range-4                                                                         5.727Ki ± ∞ ¹
Parse/nested-4                                                                        6.102Ki ± ∞ ¹
Parse/complex-4                                                                       8.398Ki ± ∞ ¹
BuildTree/simple-4                                                                      688.0 ± ∞ ¹
BuildTree/conditional-true-4                                                          1.312Ki ± ∞ ¹
BuildTree/conditional-false-4                                                           984.0 ± ∞ ¹
BuildTree/range-small-4                                                               3.781Ki ± ∞ ¹
BuildTreeScale/small-10-4                                                             11.02Ki ± ∞ ¹
BuildTreeScale/medium-100-4                                                           104.1Ki ± ∞ ¹
BuildTreeScale/large-1000-4                                                           1.030Mi ± ∞ ¹
NodeRender-4                                                                            56.00 ± ∞ ¹
TreeToHTML/simple-4                                                                     64.00 ± ∞ ¹
TreeToHTML/nested-4                                                                     144.0 ± ∞ ¹
TreeToHTML/with-ranges-4                                                                72.00 ± ∞ ¹
TreeToHTMLScale/small-10-4                                                              544.0 ± ∞ ¹
TreeToHTMLScale/medium-100-4                                                          3.633Ki ± ∞ ¹
TreeToHTMLScale/large-1000-4                                                          65.41Ki ± ∞ ¹
IsVoidElement-4                                                                         0.000 ± ∞ ¹
NodeRenderComplex-4                                                                     248.0 ± ∞ ¹
ParseActionFromHTTP-4                                                                 6.556Ki ± ∞ ¹
ParseActionFromWebSocket-4                                                              456.0 ± ∞ ¹
PrepareUpdate/without-errors-4                                                          0.000 ± ∞ ¹
PrepareUpdate/with-errors-4                                                             64.00 ± ∞ ¹
SerializeUpdate-4                                                                       896.0 ± ∞ ¹
PrepareAndSerialize/simple-update-4                                                     920.0 ± ∞ ¹
PrepareAndSerialize/with-metadata-4                                                   1.310Ki ± ∞ ¹
ParseActionScale/small-http-4                                                         6.540Ki ± ∞ ¹
ParseActionScale/small-ws-4                                                             440.0 ± ∞ ¹
ParseActionScale/medium-http-4                                                        6.751Ki ± ∞ ¹
ParseActionScale/medium-ws-4                                                            608.0 ± ∞ ¹
ParseActionScale/large-http-4                                                         7.759Ki ± ∞ ¹
ParseActionScale/large-ws-4                                                           1.508Ki ± ∞ ¹
SerializeUpdateScale/simple-4                                                           896.0 ± ∞ ¹
SerializeUpdateScale/nested-4                                                         1.759Ki ± ∞ ¹
SerializeUpdateScale/multiple-fields-4                                                1.438Ki ± ∞ ¹
ConcurrentConnections/1000_connections-4                                              35.16Ki ± ∞ ¹
RegisterUnregister-4                                                                  1.433Ki ± ∞ ¹
GetByGroup-4                                                                            896.0 ± ∞ ¹
CloseConnection-4                                                                       248.0 ± ∞ ¹
MemoryUsage-4                                                                         120.7Ki ± ∞ ¹
BroadcastToGroup-4                                                                    4.000Ki ± ∞ ¹
BufferSizes/buf_10-4                                                                    117.0 ± ∞ ¹
BufferSizes/buf_50-4                                                                    59.00 ± ∞ ¹
BufferSizes/buf_100-4                                                                   51.00 ± ∞ ¹
BufferSizes/buf_500-4                                                                   42.00 ± ∞ ¹
BufferSizes/buf_1000-4                                                                  41.00 ± ∞ ¹
ConcurrentRegistrations-4                                                             1.436Ki ± ∞ ¹
GetByGroupExcept-4                                                                      896.0 ± ∞ ¹
geomean                                                                           ²                  ? ³ ² ⁴
¹ need >= 6 samples for confidence interval at level 0.95
² summaries must be >0 to compute geomean
³ benchmark set differs from baseline; geomeans may not be comparable
⁴ ratios must be >0 to compute geomean

                                                 │ testdata/benchmarks/baseline.txt │   current-bench.txt   │
                                                 │            allocs/op             │  allocs/op    vs base │
DispatchWithState_Cached-8                                              4.000 ± ∞ ¹
E2EUserJourney-8                                                       5.083k ± ∞ ¹
E2ETodoApp-8                                                            496.0 ± ∞ ¹
E2ERangeOperations/add-items-8                                          222.0 ± ∞ ¹
E2ERangeOperations/remove-items-8                                       124.0 ± ∞ ¹
E2ERangeOperations/reorder-items-8                                      157.0 ± ∞ ¹
E2ERangeOperations/update-items-8                                       157.0 ± ∞ ¹
E2EMultipleSessions/sessions-1-8                                        54.00 ± ∞ ¹
E2EMultipleSessions/sessions-10-8                                       540.0 ± ∞ ¹
E2EMultipleSessions/sessions-100-8                                     5.394k ± ∞ ¹
SpecificationCompliance-8                                               41.00 ± ∞ ¹
ErrorPaths/invalid-template-syntax-8                                   3.667k ± ∞ ¹
ErrorPaths/missing-field-8                                              57.00 ± ∞ ¹
ErrorPaths/nil-data-8                                                   57.00 ± ∞ ¹
ErrorPaths/empty-template-8                                            3.814k ± ∞ ¹
TemplateExecute/initial-render-8                                       3.910k ± ∞ ¹
TemplateExecute/subsequent-render-8                                     61.00 ± ∞ ¹
TemplateExecuteUpdates/no-changes-8                                     46.00 ± ∞ ¹
TemplateExecuteUpdates/small-update-8                                   46.00 ± ∞ ¹
TemplateExecuteUpdates/large-update-8                                   123.0 ± ∞ ¹
TemplateComplexity/simple-fields-8                                      115.0 ± ∞ ¹
TemplateComplexity/with-conditionals-8                                  87.00 ± ∞ ¹
TemplateComplexity/with-ranges-8                                        182.0 ± ∞ ¹
TemplateComplexity/deeply-nested-8                                      176.0 ± ∞ ¹
TemplateConcurrent/goroutines-1-8                                       61.00 ± ∞ ¹
TemplateConcurrent/goroutines-10-8                                      61.00 ± ∞ ¹
TemplateConcurrent/goroutines-100-8                                     61.00 ± ∞ ¹
Template_Execute-8                                                      63.00 ± ∞ ¹
Template_ExecuteUpdates-8                                               48.00 ± ∞ ¹
UserJourney-8                                                          12.81k ± ∞ ¹
TreeNodeCreation/flat-8                                                 17.00 ± ∞ ¹
TreeNodeCreation/nested-small-8                                         119.0 ± ∞ ¹
TreeNodeCreation/nested-medium-8                                        362.0 ± ∞ ¹
TreeNodeCreation/nested-large-8                                        1.091k ± ∞ ¹
TreeNodeMarshalJSON/flat-8                                              52.00 ± ∞ ¹
TreeNodeMarshalJSON/nested-small-8                                      358.0 ± ∞ ¹
TreeNodeMarshalJSON/nested-medium-8                                    1.087k ± ∞ ¹
WrapperInjection/full-html-8                                            37.00 ± ∞ ¹
WrapperInjection/fragment-8                                             28.00 ± ∞ ¹
ExtractWrapperContent-8                                                 28.00 ± ∞ ¹
ContextOperations/with-statics-8                                        93.00 ± ∞ ¹
ContextOperations/without-statics-8                                     93.00 ± ∞ ¹
TreeNodeClone/flat-8                                                    13.00 ± ∞ ¹
TreeNodeClone/nested-small-8                                            93.00 ± ∞ ¹
TreeNodeClone/nested-medium-8                                           282.0 ± ∞ ¹
TreeNodeToMap/flat-8                                                    18.00 ± ∞ ¹
TreeNodeToMap/nested-small-8                                            120.0 ± ∞ ¹
TreeNodeToMap/nested-medium-8                                           363.0 ± ∞ ¹
GenerateRandomID-8                                                      1.000 ± ∞ ¹
CalculateStructureFingerprint_Small-8                                   5.000 ± ∞ ¹
CalculateStructureFingerprint_Medium-8                                  65.00 ± ∞ ¹
CalculateStructureFingerprint_Large-8                                   305.0 ± ∞ ¹
CalculateStructureFingerprint_DeepNested-8                              70.00 ± ∞ ¹
CalculateStructureFingerprint_Range100-8                                7.000 ± ∞ ¹
CalculateStructureFingerprint_Range1000-8                               7.000 ± ∞ ¹
FingerprintAlgorithms/small/MD5-previous-8                              6.000 ± ∞ ¹
FingerprintAlgorithms/small/FNV1a128-current-8                          7.000 ± ∞ ¹
FingerprintAlgorithms/medium/MD5-previous-8                             66.00 ± ∞ ¹
FingerprintAlgorithms/medium/FNV1a128-current-8                         67.00 ± ∞ ¹
FingerprintAlgorithms/large/MD5-previous-8                              306.0 ± ∞ ¹
FingerprintAlgorithms/large/FNV1a128-current-8                          307.0 ± ∞ ¹
FingerprintAlgorithms/deep-20/MD5-previous-8                            71.00 ± ∞ ¹
FingerprintAlgorithms/deep-20/FNV1a128-current-8                        72.00 ± ∞ ¹
ExecuteTemplateWithContext_Struct-8                                     29.00 ± ∞ ¹
ExecuteTemplateWithContext_Map-8                                        36.00 ± ∞ ¹
Precompute/eager_all_methods-8                                          15.00 ± ∞ ¹
Precompute/referenced_only-8                                            5.000 ± ∞ ¹
Precompute/all_referenced-8                                             15.00 ± ∞ ¹
CompareTreesNoChanges-8                                                 2.000 ± ∞ ¹
CompareTreesSmallChange-8                                               2.000 ± ∞ ¹
CompareTreesLargeChange/10-8                                            2.000 ± ∞ ¹
CompareTreesLargeChange/100-8                                           2.000 ± ∞ ¹
CompareTreesLargeChange/1000-8                                          902.0 ± ∞ ¹
RangeDiffUpdate-8                                                       16.00 ± ∞ ¹
RangeDiffInsert-8                                                       16.00 ± ∞ ¹
RangeDiffRemove-8                                                       16.00 ± ∞ ¹
RangeDiff_TreeNode_Update-8                                             128.0 ± ∞ ¹
RangeDiff_TreeNode_Reorder-8                                            22.00 ± ∞ ¹
RangeDiff_TreeNode_LargeList-8                                         1.038k ± ∞ ¹
PrepareTreeForClient/with-statics-8                                     0.000 ± ∞ ¹
PrepareTreeForClient/without-statics-8                                  2.000 ± ∞ ¹
ClientNeedsStatics_SameStructure-8                                      0.000 ± ∞ ¹
ClientNeedsStatics_DifferentStructure-8                                 0.000 ± ∞ ¹
ClientNeedsStatics_DeepNested-8                                         0.000 ± ∞ ¹
ClientNeedsStatics_Range-8                                              0.000 ± ∞ ¹
ClientNeedsStatics_NilOld-8                                             0.000 ± ∞ ¹
WireSize_WithStatics-8                                                  53.00 ± ∞ ¹
WireSize_WithoutStatics-8                                               52.00 ± ∞ ¹
WireSizeComparison/small_5_with_statics-8                               18.00 ± ∞ ¹
WireSizeComparison/small_5_without_statics-8                            17.00 ± ∞ ¹
WireSizeComparison/medium_20_with_statics-8                             53.00 ± ∞ ¹
WireSizeComparison/medium_20_without_statics-8                          52.00 ± ∞ ¹
WireSizeComparison/large_100_with_statics-8                             217.0 ± ∞ ¹
WireSizeComparison/large_100_without_statics-8                          216.0 ± ∞ ¹
Parse/simple-8                                                          47.00 ± ∞ ¹
Parse/conditional-8                                                     68.00 ± ∞ ¹
Parse/range-8                                                           63.00 ± ∞ ¹
Parse/nested-8                                                          73.00 ± ∞ ¹
Parse/complex-8                                                         130.0 ± ∞ ¹
BuildTree/simple-8                                                      14.00 ± ∞ ¹
BuildTree/conditional-true-8                                            27.00 ± ∞ ¹
BuildTree/conditional-false-8                                           18.00 ± ∞ ¹
BuildTree/range-small-8                                                 90.00 ± ∞ ¹
BuildTreeScale/small-10-8                                               266.0 ± ∞ ¹
BuildTreeScale/medium-100-8                                            2.516k ± ∞ ¹
BuildTreeScale/large-1000-8                                            25.76k ± ∞ ¹
NodeRender-8                                                            3.000 ± ∞ ¹
TreeToHTML/simple-8                                                     4.000 ± ∞ ¹
TreeToHTML/nested-8                                                     7.000 ± ∞ ¹
TreeToHTML/with-ranges-8                                                5.000 ± ∞ ¹
TreeToHTMLScale/small-10-8                                              16.00 ± ∞ ¹
TreeToHTMLScale/medium-100-8                                            109.0 ± ∞ ¹
TreeToHTMLScale/large-1000-8                                           1.017k ± ∞ ¹
IsVoidElement-8                                                         0.000 ± ∞ ¹
NodeRenderComplex-8                                                     5.000 ± ∞ ¹
ParseActionFromHTTP-8                                                   30.00 ± ∞ ¹
ParseActionFromWebSocket-8                                              13.00 ± ∞ ¹
PrepareUpdate/without-errors-8                                          0.000 ± ∞ ¹
PrepareUpdate/with-errors-8                                             1.000 ± ∞ ¹
SerializeUpdate-8                                                       10.00 ± ∞ ¹
PrepareAndSerialize/simple-update-8                                     11.00 ± ∞ ¹
PrepareAndSerialize/with-metadata-8                                     15.00 ± ∞ ¹
ParseActionScale/small-http-8                                           30.00 ± ∞ ¹
ParseActionScale/small-ws-8                                             13.00 ± ∞ ¹
ParseActionScale/medium-http-8                                          40.00 ± ∞ ¹
ParseActionScale/medium-ws-8                                            23.00 ± ∞ ¹
ParseActionScale/large-http-8                                           63.00 ± ∞ ¹
ParseActionScale/large-ws-8                                             46.00 ± ∞ ¹
SerializeUpdateScale/simple-8                                           10.00 ± ∞ ¹
SerializeUpdateScale/nested-8                                           19.00 ± ∞ ¹
SerializeUpdateScale/multiple-fields-8                                  16.00 ± ∞ ¹
ConcurrentConnections/100_connections-8                                 200.0 ± ∞ ¹
ConcurrentConnections/1000_connections-8                               2.000k ± ∞ ¹
RegisterUnregister-8                                                    13.00 ± ∞ ¹
GetByGroup-8                                                            1.000 ± ∞ ¹
CloseConnection-8                                                       3.000 ± ∞ ¹
MemoryUsage-8                                                           620.0 ± ∞ ¹
BroadcastToGroup-8                                                      101.0 ± ∞ ¹
BufferSizes/buf_10-8                                                    3.000 ± ∞ ¹
BufferSizes/buf_50-8                                                    2.000 ± ∞ ¹
BufferSizes/buf_100-8                                                   2.000 ± ∞ ¹
BufferSizes/buf_500-8                                                   2.000 ± ∞ ¹
BufferSizes/buf_1000-8                                                  2.000 ± ∞ ¹
ConcurrentRegistrations-8                                               11.00 ± ∞ ¹
GetByGroupExcept-8                                                      1.000 ± ∞ ¹
DispatchWithState_Cached-4                                                             4.000 ± ∞ ¹
E2EUserJourney-4                                                                      5.685k ± ∞ ¹
E2ETodoApp-4                                                                           556.0 ± ∞ ¹
E2ERangeOperations/add-items-4                                                         252.0 ± ∞ ¹
E2ERangeOperations/remove-items-4                                                      152.0 ± ∞ ¹
E2ERangeOperations/reorder-items-4                                                     186.0 ± ∞ ¹
E2ERangeOperations/update-items-4                                                      186.0 ± ∞ ¹
E2EMultipleSessions/sessions-1-4                                                       60.00 ± ∞ ¹
E2EMultipleSessions/sessions-10-4                                                      600.0 ± ∞ ¹
E2EMultipleSessions/sessions-100-4                                                    5.989k ± ∞ ¹
SpecificationCompliance-4                                                              44.00 ± ∞ ¹
ErrorPaths/invalid-template-syntax-4                                                  3.989k ± ∞ ¹
ErrorPaths/missing-field-4                                                             60.00 ± ∞ ¹
ErrorPaths/nil-data-4                                                                  47.00 ± ∞ ¹
ErrorPaths/empty-template-4                                                           4.151k ± ∞ ¹
RangeFullSwap_Simple_N10-4                                                            1.155k ± ∞ ¹
RangeFullSwap_Simple_N100-4                                                           10.52k ± ∞ ¹
RangeFullSwap_Simple_N1000-4                                                          105.7k ± ∞ ¹
RangeFullSwap_DynamicBranch_N10-4                                                     1.891k ± ∞ ¹
RangeFullSwap_DynamicBranch_N100-4                                                    17.83k ± ∞ ¹
RangeFullSwap_DynamicBranch_N1000-4                                                   178.7k ± ∞ ¹
RecursiveRender-4                                                                     20.45k ± ∞ ¹
RecursiveUpdate-4                                                                     75.45k ± ∞ ¹
OpaqueHTMLBaseline-4                                                                  5.229k ± ∞ ¹
SystemCard/Counter/Dashboard/session-memory-4                                          244.0 ± ∞ ¹
SystemCard/Counter/Dashboard/update-4                                                  139.0 ± ∞ ¹
SystemCard/Counter/Dashboard/state-clone-4                                             5.000 ± ∞ ¹
SystemCard/Counter/Dashboard/payload-size-4                                            139.0 ± ∞ ¹
SystemCard/Todo_App/session-memory-4                                                  3.015k ± ∞ ¹
SystemCard/Todo_App/update-4                                                          3.918k ± ∞ ¹
SystemCard/Todo_App/state-clone-4                                                      78.00 ± ∞ ¹
SystemCard/Todo_App/payload-size-4                                                    3.918k ± ∞ ¹
SystemCard/Social_Feed/session-memory-4                                               7.791k ± ∞ ¹
SystemCard/Social_Feed/update-4                                                       8.954k ± ∞ ¹
SystemCard/Social_Feed/state-clone-4                                                   203.0 ± ∞ ¹
SystemCard/Social_Feed/payload-size-4                                                 8.951k ± ∞ ¹
SystemCard/Chat/Collab/session-memory-4                                               12.88k ± ∞ ¹
SystemCard/Chat/Collab/update-4                                                       11.41k ± ∞ ¹
SystemCard/Chat/Collab/state-clone-4                                                   423.0 ± ∞ ¹
SystemCard/Chat/Collab/payload-size-4                                                 11.41k ± ∞ ¹
TemplateExecute/initial-render-4                                                      4.256k ± ∞ ¹
TemplateExecute/subsequent-render-4                                                    64.00 ± ∞ ¹
TemplateExecuteUpdates/no-changes-4                                                    54.00 ± ∞ ¹
TemplateExecuteUpdates/small-update-4                                                  54.00 ± ∞ ¹
TemplateExecuteUpdates/large-update-4                                                  131.0 ± ∞ ¹
TemplateComplexity/simple-fields-4                                                     118.0 ± ∞ ¹
TemplateComplexity/with-conditionals-4                                                 90.00 ± ∞ ¹
TemplateComplexity/with-ranges-4                                                       206.0 ± ∞ ¹
TemplateComplexity/deeply-nested-4                                                     196.0 ± ∞ ¹
TemplateConcurrent/goroutines-1-4                                                      64.00 ± ∞ ¹
TemplateConcurrent/goroutines-10-4                                                     64.00 ± ∞ ¹
TemplateConcurrent/goroutines-100-4                                                    64.00 ± ∞ ¹
Template_Execute-4                                                                     66.00 ± ∞ ¹
Template_ExecuteUpdates-4                                                              56.00 ± ∞ ¹
TopicFanoutByN/N=1-4                                                                   6.000 ± ∞ ¹
TopicFanoutByN/N=5-4                                                                   10.00 ± ∞ ¹
TopicFanoutByN/N=10-4                                                                  18.00 ± ∞ ¹
TopicFanoutByN/N=50-4                                                                  62.00 ± ∞ ¹
TopicFanoutByN/N=100-4                                                                 114.0 ± ∞ ¹
TopicPatternScanByP/P=1-4                                                              6.000 ± ∞ ¹
TopicPatternScanByP/P=10-4                                                             24.00 ± ∞ ¹
TopicPatternScanByP/P=100-4                                                            204.0 ± ∞ ¹
UserJourney-4                                                                         13.23k ± ∞ ¹
TreeNodeCreation/flat-4                                                                17.00 ± ∞ ¹
TreeNodeCreation/nested-small-4                                                        119.0 ± ∞ ¹
TreeNodeCreation/nested-medium-4                                                       362.0 ± ∞ ¹
TreeNodeCreation/nested-large-4                                                       1.091k ± ∞ ¹
TreeNodeMarshalJSON/flat-4                                                             68.00 ± ∞ ¹
TreeNodeMarshalJSON/nested-small-4                                                     465.0 ± ∞ ¹
TreeNodeMarshalJSON/nested-medium-4                                                   1.410k ± ∞ ¹
WrapperInjection/full-html-4                                                           37.00 ± ∞ ¹
WrapperInjection/fragment-4                                                            28.00 ± ∞ ¹
WrapperInjection/string-fallback-tokenizer-4                                           14.00 ± ∞ ¹
ExtractWrapperContent-4                                                                28.00 ± ∞ ¹
ContextOperations/with-statics-4                                                       93.00 ± ∞ ¹
ContextOperations/without-statics-4                                                    93.00 ± ∞ ¹
TreeNodeClone/flat-4                                                                   13.00 ± ∞ ¹
TreeNodeClone/nested-small-4                                                           93.00 ± ∞ ¹
TreeNodeClone/nested-medium-4                                                          282.0 ± ∞ ¹
TreeNodeToMap/flat-4                                                                   18.00 ± ∞ ¹
TreeNodeToMap/nested-small-4                                                           120.0 ± ∞ ¹
TreeNodeToMap/nested-medium-4                                                          363.0 ± ∞ ¹
GenerateRandomID-4                                                                     1.000 ± ∞ ¹
CalculateStructureFingerprint_Small-4                                                  5.000 ± ∞ ¹
CalculateStructureFingerprint_Medium-4                                                 65.00 ± ∞ ¹
CalculateStructureFingerprint_Large-4                                                  305.0 ± ∞ ¹
CalculateStructureFingerprint_DeepNested-4                                             70.00 ± ∞ ¹
CalculateStructureFingerprint_Range100-4                                               7.000 ± ∞ ¹
CalculateStructureFingerprint_Range1000-4                                              7.000 ± ∞ ¹
FingerprintAlgorithms/small/MD5-previous-4                                             5.000 ± ∞ ¹
FingerprintAlgorithms/small/FNV1a128-current-4                                         6.000 ± ∞ ¹
FingerprintAlgorithms/medium/MD5-previous-4                                            65.00 ± ∞ ¹
FingerprintAlgorithms/medium/FNV1a128-current-4                                        66.00 ± ∞ ¹
FingerprintAlgorithms/large/MD5-previous-4                                             305.0 ± ∞ ¹
FingerprintAlgorithms/large/FNV1a128-current-4                                         306.0 ± ∞ ¹
FingerprintAlgorithms/deep-20/MD5-previous-4                                           65.00 ± ∞ ¹
FingerprintAlgorithms/deep-20/FNV1a128-current-4                                       66.00 ± ∞ ¹
ExecuteTemplateWithContext_Struct-4                                                    29.00 ± ∞ ¹
ExecuteTemplateWithContext_Map-4                                                       36.00 ± ∞ ¹
Precompute/eager_all_methods-4                                                         15.00 ± ∞ ¹
Precompute/referenced_only-4                                                           5.000 ± ∞ ¹
Precompute/all_referenced-4                                                            15.00 ± ∞ ¹
CompareTreesNoChanges-4                                                                2.000 ± ∞ ¹
CompareTreesSmallChange-4                                                              2.000 ± ∞ ¹
CompareTreesLargeChange/10-4                                                           2.000 ± ∞ ¹
CompareTreesLargeChange/100-4                                                          2.000 ± ∞ ¹
CompareTreesLargeChange/1000-4                                                         902.0 ± ∞ ¹
RangeDiffUpdate-4                                                                      19.00 ± ∞ ¹
RangeDiffInsert-4                                                                      19.00 ± ∞ ¹
RangeDiffRemove-4                                                                      19.00 ± ∞ ¹
RangeDiff_TreeNode_Update-4                                                           2.445k ± ∞ ¹
RangeDiff_TreeNode_Reorder-4                                                          1.623k ± ∞ ¹
RangeDiff_TreeNode_LargeList-4                                                        24.05k ± ∞ ¹
PrepareTreeForClient/with-statics-4                                                    0.000 ± ∞ ¹
PrepareTreeForClient/without-statics-4                                                 2.000 ± ∞ ¹
ClientNeedsStatics_SameStructure-4                                                     0.000 ± ∞ ¹
ClientNeedsStatics_DifferentStructure-4                                                0.000 ± ∞ ¹
ClientNeedsStatics_DeepNested-4                                                        0.000 ± ∞ ¹
ClientNeedsStatics_Range-4                                                             0.000 ± ∞ ¹
ClientNeedsStatics_NilOld-4                                                            0.000 ± ∞ ¹
WireSize_WithStatics-4                                                                 31.00 ± ∞ ¹
WireSize_WithoutStatics-4                                                              32.00 ± ∞ ¹
WireSizeComparison/small_5_with_statics-4                                              14.00 ± ∞ ¹
WireSizeComparison/small_5_without_statics-4                                           15.00 ± ∞ ¹
WireSizeComparison/medium_20_with_statics-4                                            31.00 ± ∞ ¹
WireSizeComparison/medium_20_without_statics-4                                         32.00 ± ∞ ¹
WireSizeComparison/large_100_with_statics-4                                            117.0 ± ∞ ¹
WireSizeComparison/large_100_without_statics-4                                         118.0 ± ∞ ¹
RangeDiff_Stream_Append_Small-4                                                        111.0 ± ∞ ¹
RangeDiff_Stream_Append_Medium-4                                                       831.0 ± ∞ ¹
RangeDiff_Stream_Append_Large-4                                                       80.12k ± ∞ ¹
RangeDiff_Stream_Update_Small-4                                                        106.0 ± ∞ ¹
RangeDiff_Stream_Update_Medium-4                                                       826.0 ± ∞ ¹
RangeDiff_Stream_Update_Large-4                                                       80.15k ± ∞ ¹
RangeDiff_Stream_Reorder_Small-4                                                       103.0 ± ∞ ¹
RangeDiff_Stream_Reorder_Medium-4                                                      823.0 ± ∞ ¹
RangeDiff_Stream_Reorder_Large-4                                                      80.14k ± ∞ ¹
RangeDiff_Stream_Append_WireSize_Small-4                                               127.0 ± ∞ ¹
RangeDiff_Stream_Append_WireSize_Medium-4                                              847.0 ± ∞ ¹
RangeDiff_Stream_Append_WireSize_Large-4                                              80.15k ± ∞ ¹
RangeDiff_Stream_Update_WireSize_Small-4                                               114.0 ± ∞ ¹
RangeDiff_Stream_Update_WireSize_Medium-4                                              834.0 ± ∞ ¹
RangeDiff_Stream_Update_WireSize_Large-4                                              80.16k ± ∞ ¹
RangeDiff_Stream_Reorder_WireSize_Small-4                                              105.0 ± ∞ ¹
RangeDiff_Stream_Reorder_WireSize_Medium-4                                             825.0 ± ∞ ¹
RangeDiff_Stream_Reorder_WireSize_Large-4                                             80.16k ± ∞ ¹
RangeDiff_LegacyPartialDelta_Update_WireSize-4                                         7.000 ± ∞ ¹
Parse/simple-4                                                                         48.00 ± ∞ ¹
Parse/conditional-4                                                                    69.00 ± ∞ ¹
Parse/range-4                                                                          64.00 ± ∞ ¹
Parse/nested-4                                                                         74.00 ± ∞ ¹
Parse/complex-4                                                                        131.0 ± ∞ ¹
BuildTree/simple-4                                                                     15.00 ± ∞ ¹
BuildTree/conditional-true-4                                                           28.00 ± ∞ ¹
BuildTree/conditional-false-4                                                          19.00 ± ∞ ¹
BuildTree/range-small-4                                                                82.00 ± ∞ ¹
BuildTreeScale/small-10-4                                                              237.0 ± ∞ ¹
BuildTreeScale/medium-100-4                                                           2.217k ± ∞ ¹
BuildTreeScale/large-1000-4                                                           22.77k ± ∞ ¹
NodeRender-4                                                                           3.000 ± ∞ ¹
TreeToHTML/simple-4                                                                    4.000 ± ∞ ¹
TreeToHTML/nested-4                                                                    7.000 ± ∞ ¹
TreeToHTML/with-ranges-4                                                               5.000 ± ∞ ¹
TreeToHTMLScale/small-10-4                                                             16.00 ± ∞ ¹
TreeToHTMLScale/medium-100-4                                                           109.0 ± ∞ ¹
TreeToHTMLScale/large-1000-4                                                          1.017k ± ∞ ¹
IsVoidElement-4                                                                        0.000 ± ∞ ¹
NodeRenderComplex-4                                                                    5.000 ± ∞ ¹
ParseActionFromHTTP-4                                                                  26.00 ± ∞ ¹
ParseActionFromWebSocket-4                                                             9.000 ± ∞ ¹
PrepareUpdate/without-errors-4                                                         0.000 ± ∞ ¹
PrepareUpdate/with-errors-4                                                            1.000 ± ∞ ¹
SerializeUpdate-4                                                                      14.00 ± ∞ ¹
PrepareAndSerialize/simple-update-4                                                    15.00 ± ∞ ¹
PrepareAndSerialize/with-metadata-4                                                    22.00 ± ∞ ¹
ParseActionScale/small-http-4                                                          26.00 ± ∞ ¹
ParseActionScale/small-ws-4                                                            9.000 ± ∞ ¹
ParseActionScale/medium-http-4                                                         39.00 ± ∞ ¹
ParseActionScale/medium-ws-4                                                           22.00 ± ∞ ¹
ParseActionScale/large-http-4                                                          67.00 ± ∞ ¹
ParseActionScale/large-ws-4                                                            50.00 ± ∞ ¹
SerializeUpdateScale/simple-4                                                          14.00 ± ∞ ¹
SerializeUpdateScale/nested-4                                                          26.00 ± ∞ ¹
SerializeUpdateScale/multiple-fields-4                                                 16.00 ± ∞ ¹
ConcurrentConnections/1000_connections-4                                              2.000k ± ∞ ¹
RegisterUnregister-4                                                                   15.00 ± ∞ ¹
GetByGroup-4                                                                           1.000 ± ∞ ¹
CloseConnection-4                                                                      3.000 ± ∞ ¹
MemoryUsage-4                                                                          819.0 ± ∞ ¹
BroadcastToGroup-4                                                                     101.0 ± ∞ ¹
BufferSizes/buf_10-4                                                                   3.000 ± ∞ ¹
BufferSizes/buf_50-4                                                                   2.000 ± ∞ ¹
BufferSizes/buf_100-4                                                                  2.000 ± ∞ ¹
BufferSizes/buf_500-4                                                                  2.000 ± ∞ ¹
BufferSizes/buf_1000-4                                                                 2.000 ± ∞ ¹
ConcurrentRegistrations-4                                                              13.00 ± ∞ ¹
GetByGroupExcept-4                                                                     1.000 ± ∞ ¹
geomean                                                                           ²                 ? ³ ² ⁴
¹ need >= 6 samples for confidence interval at level 0.95
² summaries must be >0 to compute geomean
³ benchmark set differs from baseline; geomeans may not be comparable
⁴ ratios must be >0 to compute geomean

                                               │ testdata/benchmarks/baseline.txt │  current-bench.txt   │
                                               │             bytes/op             │   bytes/op     vs base   │
WireSize_WithStatics-8                                                294.0 ± ∞ ¹
WireSize_WithoutStatics-8                                             251.0 ± ∞ ¹
WireSizeComparison/small_5_with_statics-8                             104.0 ± ∞ ¹
WireSizeComparison/small_5_without_statics-8                          61.00 ± ∞ ¹
WireSizeComparison/medium_20_with_statics-8                           294.0 ± ∞ ¹
WireSizeComparison/medium_20_without_statics-8                        251.0 ± ∞ ¹
WireSizeComparison/large_100_with_statics-8                         1.303Ki ± ∞ ¹
WireSizeComparison/large_100_without_statics-8                      1.261Ki ± ∞ ¹
RangeFullSwap_Simple_N10-4                                                          1.061Ki ± ∞ ¹
RangeFullSwap_Simple_N100-4                                                         10.82Ki ± ∞ ¹
RangeFullSwap_Simple_N1000-4                                                        111.9Ki ± ∞ ¹
RangeFullSwap_DynamicBranch_N10-4                                                   1.812Ki ± ∞ ¹
RangeFullSwap_DynamicBranch_N100-4                                                  18.42Ki ± ∞ ¹
RangeFullSwap_DynamicBranch_N1000-4                                                 188.9Ki ± ∞ ¹
WireSize_WithStatics-4                                                                294.0 ± ∞ ¹
WireSize_WithoutStatics-4                                                             251.0 ± ∞ ¹
WireSizeComparison/small_5_with_statics-4                                             104.0 ± ∞ ¹
WireSizeComparison/small_5_without_statics-4                                          61.00 ± ∞ ¹
WireSizeComparison/medium_20_with_statics-4                                           294.0 ± ∞ ¹
WireSizeComparison/medium_20_without_statics-4                                        251.0 ± ∞ ¹
WireSizeComparison/large_100_with_statics-4                                         1.303Ki ± ∞ ¹
WireSizeComparison/large_100_without_statics-4                                      1.261Ki ± ∞ ¹
RangeDiff_Stream_Append_WireSize_Small-4                                              52.00 ± ∞ ¹
RangeDiff_Stream_Append_WireSize_Medium-4                                             54.00 ± ∞ ¹
RangeDiff_Stream_Append_WireSize_Large-4                                              58.00 ± ∞ ¹
RangeDiff_Stream_Update_WireSize_Small-4                                              45.00 ± ∞ ¹
RangeDiff_Stream_Update_WireSize_Medium-4                                             47.00 ± ∞ ¹
RangeDiff_Stream_Update_WireSize_Large-4                                              51.00 ± ∞ ¹
RangeDiff_Stream_Reorder_WireSize_Small-4                                             99.00 ± ∞ ¹
RangeDiff_Stream_Reorder_WireSize_Medium-4                                            999.0 ± ∞ ¹
RangeDiff_Stream_Reorder_WireSize_Large-4                                           116.1Ki ± ∞ ¹
RangeDiff_LegacyPartialDelta_Update_WireSize-4                                        33.00 ± ∞ ¹
geomean                                                               296.4           594.4        ? ² ³
¹ need >= 6 samples for confidence interval at level 0.95
² benchmark set differs from baseline; geomeans may not be comparable
³ ratios must be >0 to compute geomean

                  │ current-bench.txt │
                  │   update_bytes    │
RecursiveUpdate-4         212.0 ± ∞ ¹
¹ need >= 6 samples for confidence interval at level 0.95

                     │ current-bench.txt │
                     │  full_html_bytes  │
OpaqueHTMLBaseline-4        23.56k ± ∞ ¹
¹ need >= 6 samples for confidence interval at level 0.95

                                            │ current-bench.txt │
                                            │   payload-bytes   │
SystemCard/Counter/Dashboard/payload-size-4         61.00 ± ∞ ¹
SystemCard/Todo_App/payload-size-4                3.527Ki ± ∞ ¹
SystemCard/Social_Feed/payload-size-4             13.51Ki ± ∞ ¹
SystemCard/Chat/Collab/payload-size-4             1.201Ki ± ∞ ¹
geomean                                           1.359Ki
¹ need >= 6 samples for confidence interval at level 0.95

Thresholds

  • ⚠️ Warning: Regressions >10% on critical benchmarks
  • ❌ Failure: Regressions >20% on critical benchmarks
  • Critical benchmarks: Benchmark(E2E|Template|CompareTrees|RangeDiff|PrepareTree).*

See benchmarking guide for details.

@adnaan
adnaan merged commit 9d009c3 into main Jul 22, 2026
8 checks passed
@adnaan
adnaan deleted the issue-513 branch July 22, 2026 18:21
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.

Shell test scripts don't run in CI — test_cli_smoke.sh and test_release_changelog.sh

1 participant