Skip to content

fix(backlog): review-gate PipelineEngine coverage + pipeline-mode empty-state hint - #178

Merged
tstapler merged 1 commit into
mainfrom
worktree-agent-a56c0e2ee06add25a
Jul 19, 2026
Merged

fix(backlog): review-gate PipelineEngine coverage + pipeline-mode empty-state hint#178
tstapler merged 1 commit into
mainfrom
worktree-agent-a56c0e2ee06add25a

Conversation

@tstapler

Copy link
Copy Markdown
Owner

Summary

Two small, related wiring fixes closing the last gaps flagged in
docs/tasks/backlog-feature-improvement.md's 2026-07-19 audit (bucket [3],
Recommended Next Actions #2/#3) for the already-shipped PipelineMode/PipelineEngine
feature.

  • Automatic review gate now routes through PipelineEngine. TriagePromptFor,
    InitialPromptFor, and ReviewPromptFor (headless re-review) were already wired
    through s.pipelineEngine, but the automatic work→review transition — the path
    most items actually go through — built its prompt via BuildReviewPrompt directly
    (session/review_gate.go), a documented, acknowledged gap (old comment at
    review_gate.go:259-268). Adds PipelineEngine.InteractiveReviewPromptFor, a
    tool-call-style (submit_review_verdict) counterpart to the existing JSON-output
    ReviewPromptFor used by headless callers, and threads pipelineEngine through
    ReviewGateRunner/NewReviewGateRunner the same way triage/build already do, with
    the same nil-safe fallback to BuildReviewPrompt. A resolved custom mode's
    ReviewPromptTemplate now actually drives the real review gate; mode authors must
    include submit_review_verdict call instructions in that template themselves.

  • Pipeline-mode picker: empty-state hint. Investigation found the picker
    (BacklogItemForm.tsx) and the Settings nav link to /settings/pipeline-modes
    were already wired to the real ListPipelineModes RPC (commit 54a34cc4) — but
    when zero enabled modes exist, the fetch-succeeded-with-empty-list state rendered
    identically to a broken/never-fetched picker: a single "Default" button with
    nothing to compare it against. That's the exact "single greyed button, clicking it
    does nothing" symptom the live audit described. Adds a hint + link to Settings
    when zero modes exist, so the empty state actually points at the fix instead of
    looking broken.

Changes

Backend

  • session/pipeline_engine.go — new InteractiveReviewPromptFor method on the
    PipelineEngine interface + CachingPipelineEngine implementation. Shares
    ReviewPromptTemplate with ReviewPromptFor (one logical "review prompt" field,
    not two).
  • session/review_gate.goReviewGateRunner gains a pipelineEngine field +
    constructor param, a nil-safe reviewPromptFor helper mirroring
    BacklogService.reviewPromptFor's pattern, and Run now calls it instead of
    BuildReviewPrompt directly.
  • session/backlog_lifecycle.go:359newListenerBase now passes its
    pipelineEngine into NewReviewGateRunner.

Frontend

  • web-app/src/components/backlog/BacklogItemForm.tsx — adds a
    hasNoAvailableModes derived state and renders a "No custom pipeline modes exist
    yet. Create one in Settings →" hint (linking to /settings/pipeline-modes) when
    the fetch succeeds but returns zero enabled modes.
  • web-app/src/components/backlog/BacklogItemForm.css.ts — two new styles for the
    hint.

Tests

  • session/pipeline_engine_test.go — default/unresolved-fallback and
    resolved-custom-mode-render coverage for InteractiveReviewPromptFor.
  • session/review_gate_test.go — new regression test
    (TestReviewGateRunner_RoutesPromptThroughPipelineEngine_When_ItemHasCustomPipelineMode)
    proving the real review session prompt is the custom mode's rendered template, not
    the hardcoded BuildReviewPrompt content.
  • web-app/src/components/backlog/BacklogItemForm.test.tsx — two new tests for the
    empty-modes hint (shown when zero modes / hidden when modes exist).

Registry

  • docs/registry/features/frontend/backlog-pipeline-mode-selector.json — marked
    tested: true with the actual Jest test IDs (was previously tested: false with
    no testIds despite existing coverage).

Test plan

  • go test ./session/... ./server/services/... — all pass except
    TestStreamTerminal_SendsRawOutput (confirmed pre-existing/flaky: passes 3/3 in
    isolation, unrelated file).
  • make build — Go binary + Next.js web UI both build cleanly, including the new
    /settings/pipeline-modes route.
  • make lint — clean except pre-existing session/unfinished/gogitstore/*_test.go
    findings (untouched by this change, directory is a known WIP prototype).
  • cd web-app && npx jest --no-coverage — all pass except 2 pre-existing unrelated
    failures (SessionDetail.embedded.test.tsx, BacklogEmptyState.test.tsx) in
    files this PR does not touch.
  • BacklogItemForm — picker selection, empty-state hint, error/loading states
  • ReviewGateRunner — custom-mode prompt routing, nil-pipelineEngine fallback

🤖 Generated with Claude Code

https://claude.ai/code/session_01BxNAMeGteuzNyN46Q4zAn1

… and surface an empty-pipeline-modes hint

Closes the two remaining wiring gaps from docs/tasks/backlog-feature-improvement.md's
2026-07-19 audit (bucket [3], Recommended Next Actions #2/#3):

- ReviewGateRunner.Run built its prompt via BuildReviewPrompt directly, bypassing
  PipelineEngine entirely — so a custom PipelineMode's ReviewPromptTemplate had zero
  effect on the automatic work->review transition most items actually go through
  (TriagePromptFor/InitialPromptFor/ReviewPromptFor were already wired; this was the
  one documented, acknowledged gap). Adds PipelineEngine.InteractiveReviewPromptFor,
  a tool-call-style ("submit_review_verdict") counterpart to the existing JSON-output
  ReviewPromptFor used by headless callers, and threads pipelineEngine through
  ReviewGateRunner/NewReviewGateRunner the same way triage/build already route through
  s.pipelineEngine, with the same nil-safe fallback to BuildReviewPrompt.

- BacklogItemForm's pipeline-mode picker and the Settings nav link to
  /settings/pipeline-modes (commit 54a34cc) were already wired to the real
  ListPipelineModes RPC, but the fetch-succeeded-with-zero-modes state rendered
  identically to a broken/unfetched picker — a single "Default" button with nothing
  to compare it against, exactly the "clicking it does nothing" symptom the audit
  described from a live deployment with no modes yet authored. Adds a hint + link to
  Settings when zero enabled modes exist, so the empty state points at the fix.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BxNAMeGteuzNyN46Q4zAn1
@github-actions

Copy link
Copy Markdown
Contributor

✅ Registry Validation

Registry Validation
===================

Building backend scanner...
Scanning backend features...
Wrote 116 feature files to /tmp/tmp.128fcP7fCU/backend
Wrote 14 feature files to /tmp/tmp.128fcP7fCU/backend
Wrote 40 feature files to /tmp/tmp.128fcP7fCU/backend
Wrote 6 feature files to /tmp/tmp.128fcP7fCU/backend
Wrote 10 feature files to /tmp/tmp.128fcP7fCU/backend

=== Backend Registry Diff ===
Committed: 174  Generated: 174  Divergence: 0.0%
⚠️  111 feature(s) missing // +api: marker (markerFound: false)

✅ Registry validation passed. Divergence: 0.0%

Test Coverage: 13/174 features have testIds (7.5%)

Divergence > 2% blocks merges. Coverage reporting is advisory only.

@github-actions

Copy link
Copy Markdown
Contributor

UX Analysis

Check Status Details
✅ Axe Core (WCAG 2.1 AA) success Critical/serious violations block merge
⚠️ Lighthouse Performance Score: unknown Warning if < 70 (non-blocking)
🤖 Claude UX Analysis Advisory See docs/qa/ for findings

Axe Core excludes terminal rendering areas (intentional design).
Lighthouse runs in desktop preset for this developer tool.

@github-actions

Copy link
Copy Markdown
Contributor

Go Benchmarks (Tier 1)

benchmarks/go/tier1-baseline.txt:98: missing iteration count
benchmarks/go/tier1-baseline.txt:198: missing iteration count
tier1-bench.txt:98: missing iteration count
tier1-bench.txt:198: missing iteration count
goos: linux
goarch: amd64
pkg: github.com/tstapler/stapler-squad/session
cpu: AMD EPYC 7763 64-Core Processor                
                                            │ benchmarks/go/tier1-baseline.txt │          tier1-bench.txt          │
                                            │              sec/op              │   sec/op     vs base              │
CircularBufferWrite_4KB-4                                          83.36n ± 1%   81.99n ± 1%  -1.64% (p=0.000 n=8)
CircularBufferWrite_4KB_Allocs-4                                   84.51n ± 1%   82.77n ± 2%  -2.05% (p=0.000 n=8)
CircularBufferGetRecent_4KB-4                                      505.3n ± 4%   490.5n ± 2%  -2.93% (p=0.041 n=7)
CircularBufferGetAll-4                                             3.956µ ± 5%   4.005µ ± 4%       ~ (p=0.554 n=8)
GetTimeSinceLastMeaningfulOutput_HotPath-4                         65.84n ± 0%   65.78n ± 0%       ~ (p=0.110 n=8)
GetTimeSinceLastMeaningfulOutput_ColdPath-4                        33.13n ± 0%   33.11n ± 1%       ~ (p=1.000 n=7)
geomean                                                            177.0n        175.3n       -0.93%

                                            │ benchmarks/go/tier1-baseline.txt │           tier1-bench.txt            │
                                            │               B/op               │     B/op      vs base                │
CircularBufferWrite_4KB-4                                         0.000 ± 0%       0.000 ± 0%       ~ (p=1.000 n=8) ¹
CircularBufferWrite_4KB_Allocs-4                                  0.000 ± 0%       0.000 ± 0%       ~ (p=1.000 n=8) ¹
CircularBufferGetRecent_4KB-4                                   4.000Ki ± 0%     4.000Ki ± 0%       ~ (p=1.000 n=7) ¹
CircularBufferGetAll-4                                          40.00Ki ± 0%     40.00Ki ± 0%       ~ (p=1.000 n=8) ¹
GetTimeSinceLastMeaningfulOutput_HotPath-4                        0.000 ± 0%       0.000 ± 0%       ~ (p=1.000 n=8) ¹
GetTimeSinceLastMeaningfulOutput_ColdPath-4                       0.000 ± 0%       0.000 ± 0%       ~ (p=1.000 n=7) ¹
geomean                                                                      ²                 +0.00%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

                                            │ benchmarks/go/tier1-baseline.txt │          tier1-bench.txt           │
                                            │            allocs/op             │ allocs/op   vs base                │
CircularBufferWrite_4KB-4                                         0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=8) ¹
CircularBufferWrite_4KB_Allocs-4                                  0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=8) ¹
CircularBufferGetRecent_4KB-4                                     1.000 ± 0%     1.000 ± 0%       ~ (p=1.000 n=7) ¹
CircularBufferGetAll-4                                            1.000 ± 0%     1.000 ± 0%       ~ (p=1.000 n=8) ¹
GetTimeSinceLastMeaningfulOutput_HotPath-4                        0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=8) ¹
GetTimeSinceLastMeaningfulOutput_ColdPath-4                       0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=7) ¹
geomean                                                                      ²               +0.00%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

                              │ benchmarks/go/tier1-baseline.txt │          tier1-bench.txt           │
                              │               B/s                │     B/s       vs base              │
CircularBufferWrite_4KB-4                           45.76Gi ± 1%   46.53Gi ± 1%  +1.67% (p=0.001 n=8)
CircularBufferGetRecent_4KB-4                       7.549Gi ± 4%   7.777Gi ± 2%  +3.02% (p=0.038 n=7)
geomean                                             18.59Gi        19.02Gi       +2.34%

pkg: github.com/tstapler/stapler-squad/session/detection/ratelimit
                              │ benchmarks/go/tier1-baseline.txt │          tier1-bench.txt          │
                              │              sec/op              │   sec/op     vs base              │
StripANSI_PlainText-4                                6.876n ± 0%   6.868n ± 0%       ~ (p=0.316 n=8)
StripANSI_WithEscapes-4                              749.2n ± 0%   748.6n ± 0%       ~ (p=0.701 n=8)
ProcessOutput_InactiveState-4                        6.346n ± 0%   6.338n ± 0%       ~ (p=0.089 n=8)
geomean                                              31.97n        31.94n       -0.11%

                              │ benchmarks/go/tier1-baseline.txt │          tier1-bench.txt           │
                              │               B/op               │    B/op     vs base                │
StripANSI_PlainText-4                               0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=8) ¹
StripANSI_WithEscapes-4                             136.0 ± 0%     136.0 ± 0%       ~ (p=1.000 n=8) ¹
ProcessOutput_InactiveState-4                       0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=8) ¹
geomean                                                        ²               +0.00%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

                              │ benchmarks/go/tier1-baseline.txt │          tier1-bench.txt           │
                              │            allocs/op             │ allocs/op   vs base                │
StripANSI_PlainText-4                               0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=8) ¹
StripANSI_WithEscapes-4                             5.000 ± 0%     5.000 ± 0%       ~ (p=1.000 n=8) ¹
ProcessOutput_InactiveState-4                       0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=8) ¹
geomean                                                        ²               +0.00%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

pkg: github.com/tstapler/stapler-squad/session/queue
                              │ benchmarks/go/tier1-baseline.txt │          tier1-bench.txt          │
                              │              sec/op              │   sec/op     vs base              │
ReviewQueue_ConcurrentReads-4                        89.92n ± 3%   88.29n ± 5%  -1.82% (p=0.007 n=8)
ReviewQueue_Add-4                                    510.2n ± 3%   500.3n ± 1%  -1.93% (p=0.000 n=8)
geomean                                              214.2n        210.2n       -1.87%

                              │ benchmarks/go/tier1-baseline.txt │          tier1-bench.txt           │
                              │               B/op               │    B/op     vs base                │
ReviewQueue_ConcurrentReads-4                       0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=8) ¹
ReviewQueue_Add-4                                   640.0 ± 0%     640.0 ± 0%       ~ (p=1.000 n=8) ¹
geomean                                                        ²               +0.00%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

                              │ benchmarks/go/tier1-baseline.txt │          tier1-bench.txt           │
                              │            allocs/op             │ allocs/op   vs base                │
ReviewQueue_ConcurrentReads-4                       0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=8) ¹
ReviewQueue_Add-4                                   4.000 ± 0%     4.000 ± 0%       ~ (p=1.000 n=8) ¹
geomean                                                        ²               +0.00%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

pkg: github.com/tstapler/stapler-squad/session/scrollback
                                      │ benchmarks/go/tier1-baseline.txt │          tier1-bench.txt          │
                                      │              sec/op              │   sec/op     vs base              │
CircularBuffer_ConcurrentReadWrite-4                         3.943µ ± 2%   3.898µ ± 2%       ~ (p=0.065 n=8)
CircularBuffer_BurstAppend-4                                 102.2µ ± 1%   102.1µ ± 1%       ~ (p=0.878 n=8)
CircularBuffer_GetLastN_LargeBuffer-4                        20.14µ ± 1%   19.74µ ± 1%  -1.98% (p=0.019 n=8)
CircularBuffer_GetRange_Sequential-4                         11.18µ ± 1%   11.20µ ± 5%       ~ (p=0.442 n=8)
CircularBufferAppend-4                                       98.30n ± 0%   98.58n ± 1%       ~ (p=0.442 n=8)
CircularBufferGetLastN-4                                     2.287µ ± 1%   2.292µ ± 2%       ~ (p=0.857 n=8)
CircularBufferConcurrentAppend-4                             126.7n ± 1%   129.7n ± 1%  +2.41% (p=0.000 n=8)
geomean                                                      3.072µ        3.072µ       -0.02%

                                      │ benchmarks/go/tier1-baseline.txt │           tier1-bench.txt            │
                                      │               B/op               │     B/op      vs base                │
CircularBuffer_ConcurrentReadWrite-4                        6.062Ki ± 0%   6.062Ki ± 0%       ~ (p=1.000 n=8) ¹
CircularBuffer_BurstAppend-4                                62.50Ki ± 0%   62.50Ki ± 0%       ~ (p=1.000 n=8) ¹
CircularBuffer_GetLastN_LargeBuffer-4                       56.00Ki ± 0%   56.00Ki ± 0%       ~ (p=1.000 n=8) ¹
CircularBuffer_GetRange_Sequential-4                        28.00Ki ± 0%   28.00Ki ± 0%       ~ (p=1.000 n=8) ¹
CircularBufferAppend-4                                        24.00 ± 0%     24.00 ± 0%       ~ (p=1.000 n=8) ¹
CircularBufferGetLastN-4                                    6.000Ki ± 0%   6.000Ki ± 0%       ~ (p=1.000 n=8) ¹
CircularBufferConcurrentAppend-4                              32.00 ± 0%     32.00 ± 0%       ~ (p=1.000 n=8) ¹
geomean                                                     3.077Ki        3.077Ki       +0.00%
¹ all samples are equal

                                      │ benchmarks/go/tier1-baseline.txt │           tier1-bench.txt           │
                                      │            allocs/op             │  allocs/op   vs base                │
CircularBuffer_ConcurrentReadWrite-4                          2.000 ± 0%    2.000 ± 0%       ~ (p=1.000 n=8) ¹
CircularBuffer_BurstAppend-4                                 1.000k ± 0%   1.000k ± 0%       ~ (p=1.000 n=8) ¹
CircularBuffer_GetLastN_LargeBuffer-4                         1.000 ± 0%    1.000 ± 0%       ~ (p=1.000 n=8) ¹
CircularBuffer_GetRange_Sequential-4                          1.000 ± 0%    1.000 ± 0%       ~ (p=1.000 n=8) ¹
CircularBufferAppend-4                                        1.000 ± 0%    1.000 ± 0%       ~ (p=1.000 n=8) ¹
CircularBufferGetLastN-4                                      1.000 ± 0%    1.000 ± 0%       ~ (p=1.000 n=8) ¹
CircularBufferConcurrentAppend-4                              1.000 ± 0%    1.000 ± 0%       ~ (p=1.000 n=8) ¹
geomean                                                       2.962         2.962       +0.00%
¹ all samples are equal

                             │ benchmarks/go/tier1-baseline.txt │        tier1-bench.txt        │
                             │               B/s                │     B/s       vs base         │
CircularBuffer_BurstAppend-4                       597.3Mi ± 1%   597.6Mi ± 2%  ~ (p=0.878 n=8)

pkg: github.com/tstapler/stapler-squad/session/tmux
                             │ benchmarks/go/tier1-baseline.txt │          tier1-bench.txt          │
                             │              sec/op              │   sec/op     vs base              │
StripANSICodes_PlainText-4                          6.877n ± 4%   7.181n ± 4%  +4.43% (p=0.040 n=8)
StripANSICodes_WithEscapes-4                        691.4n ± 0%   690.8n ± 0%       ~ (p=0.627 n=8)
IsBanner_PlainText-4                                480.0n ± 1%   476.2n ± 0%  -0.79% (p=0.011 n=8)
geomean                                             131.7n        133.2n       +1.16%

                             │ benchmarks/go/tier1-baseline.txt │          tier1-bench.txt           │
                             │               B/op               │    B/op     vs base                │
StripANSICodes_PlainText-4                         0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=8) ¹
StripANSICodes_WithEscapes-4                       56.00 ± 0%     56.00 ± 0%       ~ (p=1.000 n=8) ¹
IsBanner_PlainText-4                               0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=8) ¹
geomean                                                       ²               +0.00%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

                             │ benchmarks/go/tier1-baseline.txt │          tier1-bench.txt           │
                             │            allocs/op             │ allocs/op   vs base                │
StripANSICodes_PlainText-4                         0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=8) ¹
StripANSICodes_WithEscapes-4                       4.000 ± 0%     4.000 ± 0%       ~ (p=1.000 n=8) ¹
IsBanner_PlainText-4                               0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=8) ¹
geomean                                                       ²               +0.00%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

pkg: github.com/tstapler/stapler-squad/session/tokens
                                   │ benchmarks/go/tier1-baseline.txt │          tier1-bench.txt          │
                                   │              sec/op              │   sec/op     vs base              │
TokenParser_ProcessUserEntry-4                            5.472m ± 2%   5.195m ± 0%  -5.07% (p=0.000 n=8)
DetectCommandsInText/NoSlash-4                            7.502n ± 0%   7.489n ± 0%  -0.18% (p=0.046 n=8)
DetectCommandsInText/WithCommand-4                        1.671µ ± 1%   1.652µ ± 1%  -1.17% (p=0.006 n=8)
geomean                                                   4.094µ        4.005µ       -2.16%

                                   │ benchmarks/go/tier1-baseline.txt │           tier1-bench.txt            │
                                   │               B/op               │     B/op      vs base                │
TokenParser_ProcessUserEntry-4                         11.02Mi ± 0%     11.02Mi ± 0%       ~ (p=0.059 n=8)
DetectCommandsInText/NoSlash-4                           0.000 ± 0%       0.000 ± 0%       ~ (p=1.000 n=8) ¹
DetectCommandsInText/WithCommand-4                       433.0 ± 0%       433.0 ± 0%       ~ (p=1.000 n=8) ¹
geomean                                                             ²                 -0.00%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

                                   │ benchmarks/go/tier1-baseline.txt │          tier1-bench.txt           │
                                   │            allocs/op             │ allocs/op   vs base                │
TokenParser_ProcessUserEntry-4                           34.00 ± 0%     34.00 ± 0%       ~ (p=1.000 n=8) ¹
DetectCommandsInText/NoSlash-4                           0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=8) ¹
DetectCommandsInText/WithCommand-4                       6.000 ± 0%     6.000 ± 0%       ~ (p=1.000 n=8) ¹
geomean                                                             ²               +0.00%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

pkg: github.com/tstapler/stapler-squad/session/unfinished
                               │ benchmarks/go/tier1-baseline.txt │          tier1-bench.txt          │
                               │              sec/op              │   sec/op     vs base              │
DiffShortstat/GitVCSReader-4                          3.199m ± 1%   3.178m ± 0%  -0.65% (p=0.007 n=8)
DiffShortstat/GoGitVCSReader-4                        77.14n ± 0%   76.84n ± 0%  -0.40% (p=0.001 n=8)
DiffShortstatCached-4                                 75.66n ± 0%   75.79n ± 1%       ~ (p=0.291 n=8)
geomean                                               2.653µ        2.645µ       -0.29%

                               │ benchmarks/go/tier1-baseline.txt │           tier1-bench.txt            │
                               │               B/op               │     B/op      vs base                │
DiffShortstat/GitVCSReader-4                       56.56Ki ± 0%     56.57Ki ± 0%       ~ (p=0.939 n=8)
DiffShortstat/GoGitVCSReader-4                       0.000 ± 0%       0.000 ± 0%       ~ (p=1.000 n=8) ¹
DiffShortstatCached-4                                0.000 ± 0%       0.000 ± 0%       ~ (p=1.000 n=8) ¹
geomean                                                         ²                 +0.00%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

                               │ benchmarks/go/tier1-baseline.txt │          tier1-bench.txt           │
                               │            allocs/op             │ allocs/op   vs base                │
DiffShortstat/GitVCSReader-4                         360.0 ± 0%     360.0 ± 0%       ~ (p=1.000 n=8) ¹
DiffShortstat/GoGitVCSReader-4                       0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=8) ¹
DiffShortstatCached-4                                0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=8) ¹
geomean                                                         ²               +0.00%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

@github-actions

Copy link
Copy Markdown
Contributor

E2E RPC Latency

list-sessions-ttfb-mean: 6ms (▼ faster -1.6%; baseline: 6ms)
list-sessions-total-mean: 9ms (▼ faster -16.2%; baseline: 11ms)

@github-actions

Copy link
Copy Markdown
Contributor

Frontend Terminal Throughput

terminal-throughput-mean: 15 KB/s ▼ -0.1% (baseline: 16 KB/s)
terminal-throughput-p50: 16 KB/s ▼ -0.8% (baseline: 16 KB/s)

@github-actions

Copy link
Copy Markdown
Contributor

🎬 E2E Feature Demos

2 shard(s) recorded feature flows for this PR.

recordings shard 1
recordings shard 2

Demo preview opens directly in browser (single-file HTML). Raw WebM recordings in ZIP. Expires after 30 days.

@github-actions

Copy link
Copy Markdown
Contributor

📊 Feature E2E Coverage

Feature coverage report unavailable

Run make e2e-report locally to view the full Allure report.

@tstapler
tstapler merged commit ad01a13 into main Jul 19, 2026
23 checks passed
@tstapler
tstapler deleted the worktree-agent-a56c0e2ee06add25a branch July 19, 2026 22:14
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