Skip to content

ci(review): let the reviewer read the files it reviews - #510

Merged
adnaan merged 3 commits into
mainfrom
ci/capture-review-execution-log
Jul 20, 2026
Merged

ci(review): let the reviewer read the files it reviews#510
adnaan merged 3 commits into
mainfrom
ci/capture-review-execution-log

Conversation

@adnaan

@adnaan adnaan commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

Core's review bot has been failing while the same workflow recovered on its own in the other two repos. This grants it file access.

The evidence

Across the three repos running this workflow, the split is clean:

Repo Recent runs Read in allowlist
client fail → pass, pass yes
docs fail → pass no allowlist set, so permissive defaults
core fail → fail → fail no

Core is the only repo whose allowlist omits Read, and the only one still failing. Its list granted seven gh subcommands and no file access at all — the review could fetch the diff but never open the file around it. Since CLAUDE.md asks the bot to verify paths, function names and call-site counts cited in doc changes, and none of that is answerable from a diff, it reaches for Read, gets denied, and a denial ends the run as a failure. The omission cost whole reviews rather than degrading them.

What this rules out

Three plausible causes, all eliminated:

  • Not auth. Runs initialize ("model": "claude-sonnet-5") and bill real budget. The empty ANTHROPIC_API_KEY in the env dump is a red herring — this workflow authenticates via claude_code_oauth_token, so that variable is expected to be blank. I initially misread it as the cause.
  • Not quota. An exhausted quota fails at init or returns 429; it does not run four turns and charge $0.16.
  • Not an action upgrade. All three repos pin the floating @v1 tag, but that tag last moved at 2026-07-19T02:57:33Z, hours before the last green run. Same version both succeeded and failed.

Scope

Read, Grep and Glob are read-only over the checked-out tree, which the job already has via contents: read and can already see in full through gh pr diff. This grants no reach it didn't have.

What this branch previously carried

An execution-log capture step, to make the denial self-identifying. Removed, because it could not work: the action prints Log saved to $RUNNER_TEMP/claude-execution-output.json but leaves nothing there — a search of RUNNER_TEMP on a green run found no such file, only runner scratch scripts. A step that always warns "no files found" is worse than no step, since it reads as captured on the next failure.

The companion PRs in client and docs are being closed for the same reason.

Verification

This PR is its own test: if core's claude-review posts a review here, the diagnosis holds.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Ui2cwpeGkrUfRt8rh2FgGG

adnaan and others added 2 commits July 20, 2026 00:57
When the review job fails, the job log reports only the aggregate result —
is_error: true alongside a permission_denials_count — and never names the
tool that was denied. That is the one fact needed to fix it, and it lives
in the execution output file, which is written to the runner temp dir and
discarded with the runner.

Diagnosing the current failures ruled out three plausible causes and
confirmed none: auth is fine (the run initializes and bills), quota is
fine (it spent real budget across 4 turns), and the action version is
unchanged (the v1 tag has not moved since before the last green run). The
denial itself is all that is left, and it is the part not recorded.

Upload it unconditionally. Re-triggering a run is cheap but reproducing
one is not: which tool the model reaches for varies per PR, so a failure
not captured when it happens may not recur on demand.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ui2cwpeGkrUfRt8rh2FgGG
The upload added in the parent commit produced no artifact on the very
first failing run it was meant to capture. The job log showed the step
running with an empty path:

  with:
    name: claude-review-execution-log
    if-no-files-found: warn

A step that fails never sets its outputs, so
steps.claude-review.outputs.execution_file is empty in exactly the case
this upload exists for — it would only ever have captured the runs that
did not need capturing.

Fall back to the action's documented temp path, which is where it writes
the file regardless of outcome.

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

github-actions Bot commented Jul 20, 2026

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                                                             445.7n ± ∞ ¹
E2EUserJourney-4                                                                       531.0µ ± ∞ ¹
E2ETodoApp-4                                                                           49.14µ ± ∞ ¹
E2ERangeOperations/add-items-4                                                         20.65µ ± ∞ ¹
E2ERangeOperations/remove-items-4                                                      12.94µ ± ∞ ¹
E2ERangeOperations/reorder-items-4                                                     15.34µ ± ∞ ¹
E2ERangeOperations/update-items-4                                                      15.36µ ± ∞ ¹
E2EMultipleSessions/sessions-1-4                                                       5.469µ ± ∞ ¹
E2EMultipleSessions/sessions-10-4                                                      54.82µ ± ∞ ¹
E2EMultipleSessions/sessions-100-4                                                     564.0µ ± ∞ ¹
SpecificationCompliance-4                                                              3.879µ ± ∞ ¹
ErrorPaths/invalid-template-syntax-4                                                   1.488m ± ∞ ¹
ErrorPaths/missing-field-4                                                             5.395µ ± ∞ ¹
ErrorPaths/nil-data-4                                                                  4.075µ ± ∞ ¹
ErrorPaths/empty-template-4                                                            1.531m ± ∞ ¹
RangeFullSwap_Simple_N10-4                                                             127.0µ ± ∞ ¹
RangeFullSwap_Simple_N100-4                                                            1.142m ± ∞ ¹
RangeFullSwap_Simple_N1000-4                                                           10.55m ± ∞ ¹
RangeFullSwap_DynamicBranch_N10-4                                                      227.6µ ± ∞ ¹
RangeFullSwap_DynamicBranch_N100-4                                                     2.143m ± ∞ ¹
RangeFullSwap_DynamicBranch_N1000-4                                                    20.46m ± ∞ ¹
RecursiveRender-4                                                                      2.121m ± ∞ ¹
RecursiveUpdate-4                                                                      12.51m ± ∞ ¹
OpaqueHTMLBaseline-4                                                                   918.4µ ± ∞ ¹
SystemCard/Counter/Dashboard/session-memory-4                                          34.51µ ± ∞ ¹
SystemCard/Counter/Dashboard/update-4                                                  17.44µ ± ∞ ¹
SystemCard/Counter/Dashboard/state-clone-4                                             713.3n ± ∞ ¹
SystemCard/Counter/Dashboard/payload-size-4                                            17.53µ ± ∞ ¹
SystemCard/Todo_App/session-memory-4                                                   408.4µ ± ∞ ¹
SystemCard/Todo_App/update-4                                                           496.8µ ± ∞ ¹
SystemCard/Todo_App/state-clone-4                                                      13.10µ ± ∞ ¹
SystemCard/Todo_App/payload-size-4                                                     496.6µ ± ∞ ¹
SystemCard/Social_Feed/session-memory-4                                                1.200m ± ∞ ¹
SystemCard/Social_Feed/update-4                                                        1.246m ± ∞ ¹
SystemCard/Social_Feed/state-clone-4                                                   50.77µ ± ∞ ¹
SystemCard/Social_Feed/payload-size-4                                                  1.253m ± ∞ ¹
SystemCard/Chat/Collab/session-memory-4                                                1.773m ± ∞ ¹
SystemCard/Chat/Collab/update-4                                                        1.292m ± ∞ ¹
SystemCard/Chat/Collab/state-clone-4                                                   60.60µ ± ∞ ¹
SystemCard/Chat/Collab/payload-size-4                                                  1.291m ± ∞ ¹
TemplateExecute/initial-render-4                                                       1.598m ± ∞ ¹
TemplateExecute/subsequent-render-4                                                    5.957µ ± ∞ ¹
TemplateExecuteUpdates/no-changes-4                                                    4.716µ ± ∞ ¹
TemplateExecuteUpdates/small-update-4                                                  4.705µ ± ∞ ¹
TemplateExecuteUpdates/large-update-4                                                  12.57µ ± ∞ ¹
TemplateComplexity/simple-fields-4                                                     11.60µ ± ∞ ¹
TemplateComplexity/with-conditionals-4                                                 7.946µ ± ∞ ¹
TemplateComplexity/with-ranges-4                                                       18.71µ ± ∞ ¹
TemplateComplexity/deeply-nested-4                                                     18.31µ ± ∞ ¹
TemplateConcurrent/goroutines-1-4                                                      6.340µ ± ∞ ¹
TemplateConcurrent/goroutines-10-4                                                     6.343µ ± ∞ ¹
TemplateConcurrent/goroutines-100-4                                                    6.474µ ± ∞ ¹
Template_Execute-4                                                                     6.148µ ± ∞ ¹
Template_ExecuteUpdates-4                                                              4.906µ ± ∞ ¹
TopicFanoutByN/N=1-4                                                                   462.6n ± ∞ ¹
TopicFanoutByN/N=5-4                                                                   1.376µ ± ∞ ¹
TopicFanoutByN/N=10-4                                                                  3.168µ ± ∞ ¹
TopicFanoutByN/N=50-4                                                                  19.31µ ± ∞ ¹
TopicFanoutByN/N=100-4                                                                 41.21µ ± ∞ ¹
TopicPatternScanByP/P=1-4                                                              382.4n ± ∞ ¹
TopicPatternScanByP/P=10-4                                                             1.575µ ± ∞ ¹
TopicPatternScanByP/P=100-4                                                            13.30µ ± ∞ ¹
UserJourney-4                                                                          1.643m ± ∞ ¹
TreeNodeCreation/flat-4                                                                657.6n ± ∞ ¹
TreeNodeCreation/nested-small-4                                                        4.580µ ± ∞ ¹
TreeNodeCreation/nested-medium-4                                                       13.94µ ± ∞ ¹
TreeNodeCreation/nested-large-4                                                        41.94µ ± ∞ ¹
TreeNodeMarshalJSON/flat-4                                                             5.591µ ± ∞ ¹
TreeNodeMarshalJSON/nested-small-4                                                     40.43µ ± ∞ ¹
TreeNodeMarshalJSON/nested-medium-4                                                    125.8µ ± ∞ ¹
WrapperInjection/full-html-4                                                           5.658µ ± ∞ ¹
WrapperInjection/fragment-4                                                            3.642µ ± ∞ ¹
WrapperInjection/string-fallback-tokenizer-4                                           3.429µ ± ∞ ¹
ExtractWrapperContent-4                                                                3.556µ ± ∞ ¹
ContextOperations/with-statics-4                                                       3.769µ ± ∞ ¹
ContextOperations/without-statics-4                                                    3.770µ ± ∞ ¹
TreeNodeClone/flat-4                                                                   539.6n ± ∞ ¹
TreeNodeClone/nested-small-4                                                           3.759µ ± ∞ ¹
TreeNodeClone/nested-medium-4                                                          11.52µ ± ∞ ¹
TreeNodeToMap/flat-4                                                                   1.021µ ± ∞ ¹
TreeNodeToMap/nested-small-4                                                           7.039µ ± ∞ ¹
TreeNodeToMap/nested-medium-4                                                          21.45µ ± ∞ ¹
GenerateRandomID-4                                                                     108.0n ± ∞ ¹
CalculateStructureFingerprint_Small-4                                                  246.8n ± ∞ ¹
CalculateStructureFingerprint_Medium-4                                                 4.488µ ± ∞ ¹
CalculateStructureFingerprint_Large-4                                                  32.37µ ± ∞ ¹
CalculateStructureFingerprint_DeepNested-4                                             5.041µ ± ∞ ¹
CalculateStructureFingerprint_Range100-4                                               316.2n ± ∞ ¹
CalculateStructureFingerprint_Range1000-4                                              323.5n ± ∞ ¹
FingerprintAlgorithms/small/MD5-previous-4                                             406.9n ± ∞ ¹
FingerprintAlgorithms/small/FNV1a128-current-4                                         303.5n ± ∞ ¹
FingerprintAlgorithms/medium/MD5-previous-4                                            6.215µ ± ∞ ¹
FingerprintAlgorithms/medium/FNV1a128-current-4                                        4.672µ ± ∞ ¹
FingerprintAlgorithms/large/MD5-previous-4                                             46.28µ ± ∞ ¹
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.607µ ± ∞ ¹
ExecuteTemplateWithContext_Map-4                                                       3.847µ ± ∞ ¹
Precompute/eager_all_methods-4                                                         4.801µ ± ∞ ¹
Precompute/referenced_only-4                                                           457.4n ± ∞ ¹
Precompute/all_referenced-4                                                            4.907µ ± ∞ ¹
CompareTreesNoChanges-4                                                                218.3n ± ∞ ¹
CompareTreesSmallChange-4                                                              110.2n ± ∞ ¹
CompareTreesLargeChange/10-4                                                           321.9n ± ∞ ¹
CompareTreesLargeChange/100-4                                                          2.260µ ± ∞ ¹
CompareTreesLargeChange/1000-4                                                         40.73µ ± ∞ ¹
RangeDiffUpdate-4                                                                      4.752µ ± ∞ ¹
RangeDiffInsert-4                                                                      4.776µ ± ∞ ¹
RangeDiffRemove-4                                                                      4.716µ ± ∞ ¹
RangeDiff_TreeNode_Update-4                                                            163.4µ ± ∞ ¹
RangeDiff_TreeNode_Reorder-4                                                           115.5µ ± ∞ ¹
RangeDiff_TreeNode_LargeList-4                                                         1.862m ± ∞ ¹
PrepareTreeForClient/with-statics-4                                                    2.375n ± ∞ ¹
PrepareTreeForClient/without-statics-4                                                 1.592µ ± ∞ ¹
ClientNeedsStatics_SameStructure-4                                                     9.365n ± ∞ ¹
ClientNeedsStatics_DifferentStructure-4                                                8.736n ± ∞ ¹
ClientNeedsStatics_DeepNested-4                                                        9.362n ± ∞ ¹
ClientNeedsStatics_Range-4                                                             9.054n ± ∞ ¹
ClientNeedsStatics_NilOld-4                                                            1.871n ± ∞ ¹
WireSize_WithStatics-4                                                                 9.123µ ± ∞ ¹
WireSize_WithoutStatics-4                                                              8.917µ ± ∞ ¹
WireSizeComparison/small_5_with_statics-4                                              2.624µ ± ∞ ¹
WireSizeComparison/small_5_without_statics-4                                           2.234µ ± ∞ ¹
WireSizeComparison/medium_20_with_statics-4                                            9.097µ ± ∞ ¹
WireSizeComparison/medium_20_without_statics-4                                         8.912µ ± ∞ ¹
WireSizeComparison/large_100_with_statics-4                                            40.38µ ± ∞ ¹
WireSizeComparison/large_100_without_statics-4                                         41.72µ ± ∞ ¹
RangeDiff_Stream_Append_Small-4                                                        8.257µ ± ∞ ¹
RangeDiff_Stream_Append_Medium-4                                                       72.13µ ± ∞ ¹
RangeDiff_Stream_Append_Large-4                                                        9.202m ± ∞ ¹
RangeDiff_Stream_Update_Small-4                                                        8.038µ ± ∞ ¹
RangeDiff_Stream_Update_Medium-4                                                       72.35µ ± ∞ ¹
RangeDiff_Stream_Update_Large-4                                                        9.853m ± ∞ ¹
RangeDiff_Stream_Reorder_Small-4                                                       7.399µ ± ∞ ¹
RangeDiff_Stream_Reorder_Medium-4                                                      66.13µ ± ∞ ¹
RangeDiff_Stream_Reorder_Large-4                                                       7.595m ± ∞ ¹
RangeDiff_Stream_Append_WireSize_Small-4                                               10.74µ ± ∞ ¹
RangeDiff_Stream_Append_WireSize_Medium-4                                              75.61µ ± ∞ ¹
RangeDiff_Stream_Append_WireSize_Large-4                                               9.236m ± ∞ ¹
RangeDiff_Stream_Update_WireSize_Small-4                                               9.163µ ± ∞ ¹
RangeDiff_Stream_Update_WireSize_Medium-4                                              74.60µ ± ∞ ¹
RangeDiff_Stream_Update_WireSize_Large-4                                               10.07m ± ∞ ¹
RangeDiff_Stream_Reorder_WireSize_Small-4                                              8.127µ ± ∞ ¹
RangeDiff_Stream_Reorder_WireSize_Medium-4                                             70.02µ ± ∞ ¹
RangeDiff_Stream_Reorder_WireSize_Large-4                                              8.197m ± ∞ ¹
RangeDiff_LegacyPartialDelta_Update_WireSize-4                                         611.9n ± ∞ ¹
Parse/simple-4                                                                         4.591µ ± ∞ ¹
Parse/conditional-4                                                                    7.305µ ± ∞ ¹
Parse/range-4                                                                          6.525µ ± ∞ ¹
Parse/nested-4                                                                         8.028µ ± ∞ ¹
Parse/complex-4                                                                        14.23µ ± ∞ ¹
BuildTree/simple-4                                                                     668.7n ± ∞ ¹
BuildTree/conditional-true-4                                                           1.278µ ± ∞ ¹
BuildTree/conditional-false-4                                                          844.1n ± ∞ ¹
BuildTree/range-small-4                                                                4.084µ ± ∞ ¹
BuildTreeScale/small-10-4                                                              11.06µ ± ∞ ¹
BuildTreeScale/medium-100-4                                                            100.3µ ± ∞ ¹
BuildTreeScale/large-1000-4                                                            889.1µ ± ∞ ¹
NodeRender-4                                                                           104.2n ± ∞ ¹
TreeToHTML/simple-4                                                                    205.1n ± ∞ ¹
TreeToHTML/nested-4                                                                    335.3n ± ∞ ¹
TreeToHTML/with-ranges-4                                                               316.9n ± ∞ ¹
TreeToHTMLScale/small-10-4                                                             1.276µ ± ∞ ¹
TreeToHTMLScale/medium-100-4                                                           10.69µ ± ∞ ¹
TreeToHTMLScale/large-1000-4                                                           109.4µ ± ∞ ¹
IsVoidElement-4                                                                        94.63n ± ∞ ¹
NodeRenderComplex-4                                                                    295.8n ± ∞ ¹
ParseActionFromHTTP-4                                                                  2.814µ ± ∞ ¹
ParseActionFromWebSocket-4                                                             512.5n ± ∞ ¹
PrepareUpdate/without-errors-4                                                        0.3124n ± ∞ ¹
PrepareUpdate/with-errors-4                                                            31.55n ± ∞ ¹
SerializeUpdate-4                                                                      1.196µ ± ∞ ¹
PrepareAndSerialize/simple-update-4                                                    1.241µ ± ∞ ¹
PrepareAndSerialize/with-metadata-4                                                    1.851µ ± ∞ ¹
ParseActionScale/small-http-4                                                          2.837µ ± ∞ ¹
ParseActionScale/small-ws-4                                                            501.1n ± ∞ ¹
ParseActionScale/medium-http-4                                                         3.570µ ± ∞ ¹
ParseActionScale/medium-ws-4                                                           1.058µ ± ∞ ¹
ParseActionScale/large-http-4                                                          4.821µ ± ∞ ¹
ParseActionScale/large-ws-4                                                            2.424µ ± ∞ ¹
SerializeUpdateScale/simple-4                                                          1.194µ ± ∞ ¹
SerializeUpdateScale/nested-4                                                          2.292µ ± ∞ ¹
SerializeUpdateScale/multiple-fields-4                                                 1.777µ ± ∞ ¹
ConcurrentConnections/1000_connections-4                                               233.3µ ± ∞ ¹
RegisterUnregister-4                                                                   4.591µ ± ∞ ¹
GetByGroup-4                                                                           449.7n ± ∞ ¹
CloseConnection-4                                                                      3.407µ ± ∞ ¹
MemoryUsage-4                                                                          90.06µ ± ∞ ¹
BroadcastToGroup-4                                                                     21.38µ ± ∞ ¹
BufferSizes/buf_10-4                                                                   373.6n ± ∞ ¹
BufferSizes/buf_50-4                                                                   192.6n ± ∞ ¹
BufferSizes/buf_100-4                                                                  173.9n ± ∞ ¹
BufferSizes/buf_500-4                                                                  172.8n ± ∞ ¹
BufferSizes/buf_1000-4                                                                 178.1n ± ∞ ¹
ConcurrentRegistrations-4                                                              4.564µ ± ∞ ¹
GetByGroupExcept-4                                                                     536.4n ± ∞ ¹
geomean                                                                2.307µ          8.921µ        ? ² ³
¹ 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.0Ki ± ∞ ¹
ErrorPaths/missing-field-4                                                            3.039Ki ± ∞ ¹
ErrorPaths/nil-data-4                                                                 2.227Ki ± ∞ ¹
ErrorPaths/empty-template-4                                                           361.4Ki ± ∞ ¹
RangeFullSwap_Simple_N10-4                                                            62.12Ki ± ∞ ¹
RangeFullSwap_Simple_N100-4                                                           582.9Ki ± ∞ ¹
RangeFullSwap_Simple_N1000-4                                                          6.092Mi ± ∞ ¹
RangeFullSwap_DynamicBranch_N10-4                                                     113.3Ki ± ∞ ¹
RangeFullSwap_DynamicBranch_N100-4                                                    1.068Mi ± ∞ ¹
RangeFullSwap_DynamicBranch_N1000-4                                                   11.94Mi ± ∞ ¹
RecursiveRender-4                                                                     1.027Mi ± ∞ ¹
RecursiveUpdate-4                                                                     8.951Mi ± ∞ ¹
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.134Ki ± ∞ ¹
SystemCard/Todo_App/payload-size-4                                                    237.9Ki ± ∞ ¹
SystemCard/Social_Feed/session-memory-4                                               519.6Ki ± ∞ ¹
SystemCard/Social_Feed/update-4                                                       627.7Ki ± ∞ ¹
SystemCard/Social_Feed/state-clone-4                                                  19.89Ki ± ∞ ¹
SystemCard/Social_Feed/payload-size-4                                                 627.8Ki ± ∞ ¹
SystemCard/Chat/Collab/session-memory-4                                               732.8Ki ± ∞ ¹
SystemCard/Chat/Collab/update-4                                                       611.4Ki ± ∞ ¹
SystemCard/Chat/Collab/state-clone-4                                                  22.02Ki ± ∞ ¹
SystemCard/Chat/Collab/payload-size-4                                                 611.8Ki ± ∞ ¹
TemplateExecute/initial-render-4                                                      365.2Ki ± ∞ ¹
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.8Ki ± ∞ ¹
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.17Ki ± ∞ ¹
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.493Ki ± ∞ ¹
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.222Mi ± ∞ ¹
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.730Mi ± ∞ ¹
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                                                                  40.00 ± ∞ ¹
ConcurrentRegistrations-4                                                             1.437Ki ± ∞ ¹
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.986k ± ∞ ¹
ErrorPaths/missing-field-4                                                             60.00 ± ∞ ¹
ErrorPaths/nil-data-4                                                                  47.00 ± ∞ ¹
ErrorPaths/empty-template-4                                                           4.148k ± ∞ ¹
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.919k ± ∞ ¹
SystemCard/Social_Feed/session-memory-4                                               7.791k ± ∞ ¹
SystemCard/Social_Feed/update-4                                                       8.952k ± ∞ ¹
SystemCard/Social_Feed/state-clone-4                                                   203.0 ± ∞ ¹
SystemCard/Social_Feed/payload-size-4                                                 8.952k ± ∞ ¹
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.253k ± ∞ ¹
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.539Ki ± ∞ ¹
SystemCard/Social_Feed/payload-size-4             13.43Ki ± ∞ ¹
SystemCard/Chat/Collab/payload-size-4             1.286Ki ± ∞ ¹
geomean                                           1.381Ki
¹ 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.

Core's allowlist granted seven gh subcommands and no file access. The
review could fetch the diff but never open the file around it — and
CLAUDE.md asks it to verify paths, function names and call-site counts
cited in doc changes, none of which a diff answers. Reaching for an
unlisted tool is a denial, and a denial ends the run as a failure, so the
omission cost whole reviews rather than degrading them.

What points at this rather than at credentials or quota: across the three
repos that run this workflow, client and docs recovered on their own while
core kept failing, and core is the only one whose allowlist omits Read.
client lists it; docs sets no allowlist at all and gets permissive
defaults.

Read, Grep and Glob are read-only over the checked-out tree, which the job
already has via contents: read — and which it can already see in full
through gh pr diff. This grants no reach it did not have.

Replaces the execution-log capture this branch previously carried. That
approach could not work: the action prints "Log saved to
$RUNNER_TEMP/claude-execution-output.json" but leaves nothing there, and a
search of RUNNER_TEMP on a green run turned up no such file. Shipping a
step that always warns "no files found" is worse than shipping nothing,
because it reads as captured on the next failure.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ui2cwpeGkrUfRt8rh2FgGG
@adnaan adnaan changed the title ci(review): keep the review run log so failures are diagnosable ci(review): let the reviewer read the files it reviews Jul 20, 2026
@adnaan
adnaan merged commit 27266e2 into main Jul 20, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant