Skip to content

fix(backlog): recover sdd-pipeline triage stuck on premature-completion placeholder - #290

Merged
tstapler merged 2 commits into
mainfrom
worktree-agent-a0b0e5b4756ee3003
Jul 30, 2026
Merged

fix(backlog): recover sdd-pipeline triage stuck on premature-completion placeholder#290
tstapler merged 2 commits into
mainfrom
worktree-agent-a0b0e5b4756ee3003

Conversation

@tstapler

Copy link
Copy Markdown
Owner

Summary

Backlog item 04089969-0f19-499c-be34-2e8bcfc4f13e (PipelineMode sdd) was stranded in idea status forever: its headless triage call ended a single-shot claude -p turn with a "I'll wait for its completion" status message instead of the required JSON result, and no existing detector could catch a triage session that had already ended cleanly with unparseable output.

Context

Root-caused via staplersquad-2026-07-29T22-55-04.915.log.gz:32397ParseHeadlessTriageResult correctly rejected the raw output, TriggerTriage tombstoned the session, but never reached the ideaready transition. reconcileOrphanedTriageItems (PR #274's orphaned-triage detector) only matched sessions that were still open and stale — a cleanly-ended, unparseable session was invisible to it and to every other stuck detector.

Root cause: the "sdd" pipeline mode's triage prompt (session/pipeline_mode_seed.go's sddTriagePromptTemplate) instructs the model to run sdd:3-plan, which dispatches a planning subagent and says "wait for it to complete." A claude -p headless call has no later turn to resume in — once the top-level turn ends with no more pending tool calls, the process exits with whatever text was last written. The model reported the subagent as "running in the background" and ended its turn expecting a follow-up notification a one-shot call can never deliver.

Changes

  • session/headless/features.go: added an explicit "this is a single, non-interactive call with no later turn" directive to headlessTriageSystemPrompt — applies to every pipeline mode's triage call (defense in depth).
  • session/pipeline_mode_seed.go: added the same guard, phrased against the sdd:3-plan subagent-dispatch step specifically, to sddTriagePromptTemplate.
  • session/backlog_lifecycle.go: reconcileOrphanedTriageItems now also flags an idea-status item whose latest triage session has already ended without transitioning the item to ready — no staleness wait needed, since TriggerTriage always attempts the transition immediately after a successful parse. Reuses the existing StuckReasonOrphanedTriage / AutoRespawnTriage backoff-gate retry machinery from PR fix(backlog): wire orphaned_triage into the remediation backoff framework #274 rather than adding a new stuck reason.
  • session/domain/backlog.go: updated StuckReasonOrphanedTriage's doc comment to describe both shapes.
  • docs/tasks/backlog-feature-improvement.md: added the 2026-07-30 write-up (root cause, fix, regression tests, recurring-shape classification).

Known limitation: the "sdd" PipelineMode DB row is seeded once at boot and never overwritten (by design — operator hand-edits must survive restarts). An already-seeded production row keeps the old prompt text until manually refreshed via the pipeline-modes settings UI; new/fresh deployments get the fix immediately. The detection/retry fix is independent of this and works either way.

Test plan

  • go test ./session/... ./server/services/... — all green except the pre-existing, already-filed BUG-051 flake in session/tmux (unrelated — this diff touches no file under session/tmux/, and the flaking test passes reliably in isolation).
  • make build
  • make lint
  • New regression tests:
    • TestParseHeadlessTriageResult_PrematureCompletionPlaceholder — reproduces the exact raw string from the incident log.
    • TestReconcileOrphanedTriageItems_should_flagImmediately_When_TriageSessionEndedWithoutTransition
    • TestReconcileOrphanedTriageItems_should_notFlag_When_NoTriageSessionEverRan
    • TestReconcileOrphanedTriageRemediation_should_retryEndedWithoutTransitionRow_When_Due

🤖 Generated with Claude Code

https://claude.ai/code/session_01W3683CH7Fs9zYR2yP3Dpba

…on placeholder

Item 04089969 sat in idea forever: its "sdd" pipeline mode triage call ended a
single-shot claude -p turn with "I'll wait for its completion" instead of the
final JSON block (no later turn exists to resume it in), and
reconcileOrphanedTriageItems only ever matched still-open-and-stale sessions,
not ones that had already ended cleanly with unparseable output.

- headlessTriageSystemPrompt / sddTriagePromptTemplate: explicit "single,
  non-interactive call with no later turn" directive so a subagent reported
  as backgrounded is waited out within the same call, not deferred to a
  follow-up turn that will never arrive.
- reconcileOrphanedTriageItems: also flags idea-status items whose latest
  triage session has already ended without transitioning the item to ready,
  reusing the existing StuckReasonOrphanedTriage/AutoRespawnTriage backoff-gate
  retry machinery from PR #274 rather than adding a new stuck reason.

Regression tests reproduce the exact placeholder text from the incident log
and verify the detector both flags and retries the new shape.

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

Copy link
Copy Markdown
Contributor

✅ Registry Validation

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

Building backend scanner...
Scanning backend features...
Wrote 117 feature files to /tmp/tmp.Q4ROk4sYlr/backend
Wrote 15 feature files to /tmp/tmp.Q4ROk4sYlr/backend
Wrote 45 feature files to /tmp/tmp.Q4ROk4sYlr/backend
Wrote 7 feature files to /tmp/tmp.Q4ROk4sYlr/backend
Wrote 12 feature files to /tmp/tmp.Q4ROk4sYlr/backend

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

✅ Registry validation passed. Divergence: 0.0%

Test Coverage: 22/180 features have testIds (12.2%)

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

@github-actions

github-actions Bot commented Jul 30, 2026

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:97: missing iteration count
tier1-bench.txt:197: 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 │
                                            │              sec/op              │
CircularBufferWrite_4KB-4                                          81.51n ± 1%
CircularBufferWrite_4KB_Allocs-4                                   82.89n ± 1%
CircularBufferGetRecent_4KB-4                                      487.6n ± 2%
CircularBufferGetAll-4                                             3.723µ ± 2%
GetTimeSinceLastMeaningfulOutput_HotPath-4                         65.75n ± 0%
GetTimeSinceLastMeaningfulOutput_ColdPath-4                        32.78n ± 0%
geomean                                                            172.6n

                                            │ benchmarks/go/tier1-baseline.txt │
                                            │               B/op               │
CircularBufferWrite_4KB-4                                         0.000 ± 0%
CircularBufferWrite_4KB_Allocs-4                                  0.000 ± 0%
CircularBufferGetRecent_4KB-4                                   4.000Ki ± 0%
CircularBufferGetAll-4                                          40.00Ki ± 0%
GetTimeSinceLastMeaningfulOutput_HotPath-4                        0.000 ± 0%
GetTimeSinceLastMeaningfulOutput_ColdPath-4                       0.000 ± 0%
geomean                                                                      ¹
¹ summaries must be >0 to compute geomean

                                            │ benchmarks/go/tier1-baseline.txt │
                                            │            allocs/op             │
CircularBufferWrite_4KB-4                                         0.000 ± 0%
CircularBufferWrite_4KB_Allocs-4                                  0.000 ± 0%
CircularBufferGetRecent_4KB-4                                     1.000 ± 0%
CircularBufferGetAll-4                                            1.000 ± 0%
GetTimeSinceLastMeaningfulOutput_HotPath-4                        0.000 ± 0%
GetTimeSinceLastMeaningfulOutput_ColdPath-4                       0.000 ± 0%
geomean                                                                      ¹
¹ summaries must be >0 to compute geomean

                              │ benchmarks/go/tier1-baseline.txt │
                              │               B/s                │
CircularBufferWrite_4KB-4                           46.80Gi ± 3%
CircularBufferGetRecent_4KB-4                       7.823Gi ± 2%
geomean                                             19.13Gi

cpu: AMD EPYC 9V74 80-Core Processor                
                                            │ tier1-bench.txt │
                                            │     sec/op      │
CircularBufferWrite_4KB-4                         84.59n ± 7%
CircularBufferWrite_4KB_Allocs-4                  83.36n ± 2%
CircularBufferGetRecent_4KB-4                     539.0n ± 8%
CircularBufferGetAll-4                            3.659µ ± 4%
GetTimeSinceLastMeaningfulOutput_HotPath-4        70.48n ± 1%
GetTimeSinceLastMeaningfulOutput_ColdPath-4       34.51n ± 0%
geomean                                           179.8n

                                            │ tier1-bench.txt │
                                            │      B/op       │
CircularBufferWrite_4KB-4                        0.000 ± 0%
CircularBufferWrite_4KB_Allocs-4                 0.000 ± 0%
CircularBufferGetRecent_4KB-4                  4.000Ki ± 0%
CircularBufferGetAll-4                         40.00Ki ± 0%
GetTimeSinceLastMeaningfulOutput_HotPath-4       0.000 ± 0%
GetTimeSinceLastMeaningfulOutput_ColdPath-4      0.000 ± 0%
geomean                                                     ¹
¹ summaries must be >0 to compute geomean

                                            │ tier1-bench.txt │
                                            │    allocs/op    │
CircularBufferWrite_4KB-4                        0.000 ± 0%
CircularBufferWrite_4KB_Allocs-4                 0.000 ± 0%
CircularBufferGetRecent_4KB-4                    1.000 ± 0%
CircularBufferGetAll-4                           1.000 ± 0%
GetTimeSinceLastMeaningfulOutput_HotPath-4       0.000 ± 0%
GetTimeSinceLastMeaningfulOutput_ColdPath-4      0.000 ± 0%
geomean                                                     ¹
¹ summaries must be >0 to compute geomean

                              │ tier1-bench.txt │
                              │       B/s       │
CircularBufferWrite_4KB-4          45.10Gi ± 8%
CircularBufferGetRecent_4KB-4      7.078Gi ± 7%
geomean                            17.87Gi

pkg: github.com/tstapler/stapler-squad/session/detection/ratelimit
cpu: AMD EPYC 7763 64-Core Processor                
                              │ benchmarks/go/tier1-baseline.txt │
                              │              sec/op              │
StripANSI_PlainText-4                                6.867n ± 0%
StripANSI_WithEscapes-4                              744.8n ± 0%
ProcessOutput_InactiveState-4                        6.313n ± 0%
geomean                                              31.84n

                              │ benchmarks/go/tier1-baseline.txt │
                              │               B/op               │
StripANSI_PlainText-4                               0.000 ± 0%
StripANSI_WithEscapes-4                             136.0 ± 0%
ProcessOutput_InactiveState-4                       0.000 ± 0%
geomean                                                        ¹
¹ summaries must be >0 to compute geomean

                              │ benchmarks/go/tier1-baseline.txt │
                              │            allocs/op             │
StripANSI_PlainText-4                               0.000 ± 0%
StripANSI_WithEscapes-4                             5.000 ± 0%
ProcessOutput_InactiveState-4                       0.000 ± 0%
geomean                                                        ¹
¹ summaries must be >0 to compute geomean

cpu: AMD EPYC 9V74 80-Core Processor                
                              │ tier1-bench.txt │
                              │     sec/op      │
StripANSI_PlainText-4               7.047n ± 3%
StripANSI_WithEscapes-4             651.4n ± 0%
ProcessOutput_InactiveState-4       6.613n ± 1%
geomean                             31.20n

                              │ tier1-bench.txt │
                              │      B/op       │
StripANSI_PlainText-4              0.000 ± 0%
StripANSI_WithEscapes-4            136.0 ± 0%
ProcessOutput_InactiveState-4      0.000 ± 0%
geomean                                       ¹
¹ summaries must be >0 to compute geomean

                              │ tier1-bench.txt │
                              │    allocs/op    │
StripANSI_PlainText-4              0.000 ± 0%
StripANSI_WithEscapes-4            5.000 ± 0%
ProcessOutput_InactiveState-4      0.000 ± 0%
geomean                                       ¹
¹ summaries must be >0 to compute geomean

pkg: github.com/tstapler/stapler-squad/session/queue
cpu: AMD EPYC 7763 64-Core Processor                
                              │ benchmarks/go/tier1-baseline.txt │
                              │              sec/op              │
ReviewQueue_ConcurrentReads-4                        92.45n ± 6%
ReviewQueue_Add-4                                    535.9n ± 5%
geomean                                              222.6n

                              │ benchmarks/go/tier1-baseline.txt │
                              │               B/op               │
ReviewQueue_ConcurrentReads-4                       0.000 ± 0%
ReviewQueue_Add-4                                   640.0 ± 0%
geomean                                                        ¹
¹ summaries must be >0 to compute geomean

                              │ benchmarks/go/tier1-baseline.txt │
                              │            allocs/op             │
ReviewQueue_ConcurrentReads-4                       0.000 ± 0%
ReviewQueue_Add-4                                   4.000 ± 0%
geomean                                                        ¹
¹ summaries must be >0 to compute geomean

cpu: AMD EPYC 9V74 80-Core Processor                
                              │ tier1-bench.txt │
                              │     sec/op      │
ReviewQueue_ConcurrentReads-4       78.30n ± 6%
ReviewQueue_Add-4                   514.5n ± 1%
geomean                             200.7n

                              │ tier1-bench.txt │
                              │      B/op       │
ReviewQueue_ConcurrentReads-4      0.000 ± 0%
ReviewQueue_Add-4                  640.0 ± 0%
geomean                                       ¹
¹ summaries must be >0 to compute geomean

                              │ tier1-bench.txt │
                              │    allocs/op    │
ReviewQueue_ConcurrentReads-4      0.000 ± 0%
ReviewQueue_Add-4                  4.000 ± 0%
geomean                                       ¹
¹ summaries must be >0 to compute geomean

pkg: github.com/tstapler/stapler-squad/session/scrollback
cpu: AMD EPYC 7763 64-Core Processor                
                                      │ benchmarks/go/tier1-baseline.txt │
                                      │              sec/op              │
CircularBuffer_ConcurrentReadWrite-4                         3.956µ ± 2%
CircularBuffer_BurstAppend-4                                 101.9µ ± 0%
CircularBuffer_GetLastN_LargeBuffer-4                        20.00µ ± 1%
CircularBuffer_GetRange_Sequential-4                         14.47µ ± 4%
CircularBufferAppend-4                                       102.0n ± 1%
CircularBufferGetLastN-4                                     2.605µ ± 2%
CircularBufferConcurrentAppend-4                             126.9n ± 1%
geomean                                                      3.262µ

                                      │ benchmarks/go/tier1-baseline.txt │
                                      │               B/op               │
CircularBuffer_ConcurrentReadWrite-4                        6.062Ki ± 0%
CircularBuffer_BurstAppend-4                                62.50Ki ± 0%
CircularBuffer_GetLastN_LargeBuffer-4                       56.00Ki ± 0%
CircularBuffer_GetRange_Sequential-4                        28.00Ki ± 0%
CircularBufferAppend-4                                        24.00 ± 0%
CircularBufferGetLastN-4                                    6.000Ki ± 0%
CircularBufferConcurrentAppend-4                              32.00 ± 0%
geomean                                                     3.077Ki

                                      │ benchmarks/go/tier1-baseline.txt │
                                      │            allocs/op             │
CircularBuffer_ConcurrentReadWrite-4                          2.000 ± 0%
CircularBuffer_BurstAppend-4                                 1.000k ± 0%
CircularBuffer_GetLastN_LargeBuffer-4                         1.000 ± 0%
CircularBuffer_GetRange_Sequential-4                          1.000 ± 0%
CircularBufferAppend-4                                        1.000 ± 0%
CircularBufferGetLastN-4                                      1.000 ± 0%
CircularBufferConcurrentAppend-4                              1.000 ± 0%
geomean                                                       2.962

                             │ benchmarks/go/tier1-baseline.txt │
                             │               B/s                │
CircularBuffer_BurstAppend-4                       599.1Mi ± 0%

cpu: AMD EPYC 9V74 80-Core Processor                
                                      │ tier1-bench.txt │
                                      │     sec/op      │
CircularBuffer_ConcurrentReadWrite-4        3.422µ ± 2%
CircularBuffer_BurstAppend-4                106.9µ ± 1%
CircularBuffer_GetLastN_LargeBuffer-4       21.42µ ± 5%
CircularBuffer_GetRange_Sequential-4        14.29µ ± 5%
CircularBufferAppend-4                      107.9n ± 7%
CircularBufferGetLastN-4                    2.601µ ± 2%
CircularBufferConcurrentAppend-4            139.2n ± 1%
geomean                                     3.312µ

                                      │ tier1-bench.txt │
                                      │      B/op       │
CircularBuffer_ConcurrentReadWrite-4       6.062Ki ± 0%
CircularBuffer_BurstAppend-4               62.50Ki ± 0%
CircularBuffer_GetLastN_LargeBuffer-4      56.00Ki ± 0%
CircularBuffer_GetRange_Sequential-4       28.00Ki ± 0%
CircularBufferAppend-4                       24.00 ± 0%
CircularBufferGetLastN-4                   6.000Ki ± 0%
CircularBufferConcurrentAppend-4             32.00 ± 0%
geomean                                    3.077Ki

                                      │ tier1-bench.txt │
                                      │    allocs/op    │
CircularBuffer_ConcurrentReadWrite-4         2.000 ± 0%
CircularBuffer_BurstAppend-4                1.000k ± 0%
CircularBuffer_GetLastN_LargeBuffer-4        1.000 ± 0%
CircularBuffer_GetRange_Sequential-4         1.000 ± 0%
CircularBufferAppend-4                       1.000 ± 0%
CircularBufferGetLastN-4                     1.000 ± 0%
CircularBufferConcurrentAppend-4             1.000 ± 0%
geomean                                      2.962

                             │ tier1-bench.txt │
                             │       B/s       │
CircularBuffer_BurstAppend-4      570.9Mi ± 1%

pkg: github.com/tstapler/stapler-squad/session/tmux
cpu: AMD EPYC 7763 64-Core Processor                
                             │ benchmarks/go/tier1-baseline.txt │
                             │              sec/op              │
StripANSICodes_PlainText-4                          6.881n ± 1%
StripANSICodes_WithEscapes-4                        686.7n ± 0%
IsBanner_PlainText-4                                478.1n ± 0%
geomean                                             131.2n

                             │ benchmarks/go/tier1-baseline.txt │
                             │               B/op               │
StripANSICodes_PlainText-4                         0.000 ± 0%
StripANSICodes_WithEscapes-4                       56.00 ± 0%
IsBanner_PlainText-4                               0.000 ± 0%
geomean                                                       ¹
¹ summaries must be >0 to compute geomean

                             │ benchmarks/go/tier1-baseline.txt │
                             │            allocs/op             │
StripANSICodes_PlainText-4                         0.000 ± 0%
StripANSICodes_WithEscapes-4                       4.000 ± 0%
IsBanner_PlainText-4                               0.000 ± 0%
geomean                                                       ¹
¹ summaries must be >0 to compute geomean

cpu: AMD EPYC 9V74 80-Core Processor                
                             │ tier1-bench.txt │
                             │     sec/op      │
StripANSICodes_PlainText-4        7.274n ± 17%
StripANSICodes_WithEscapes-4      719.8n ±  1%
IsBanner_PlainText-4              542.2n ±  1%
geomean                           141.6n

                             │ tier1-bench.txt │
                             │      B/op       │
StripANSICodes_PlainText-4        0.000 ± 0%
StripANSICodes_WithEscapes-4      56.00 ± 0%
IsBanner_PlainText-4              0.000 ± 0%
geomean                                      ¹
¹ summaries must be >0 to compute geomean

                             │ tier1-bench.txt │
                             │    allocs/op    │
StripANSICodes_PlainText-4        0.000 ± 0%
StripANSICodes_WithEscapes-4      4.000 ± 0%
IsBanner_PlainText-4              0.000 ± 0%
geomean                                      ¹
¹ summaries must be >0 to compute geomean

pkg: github.com/tstapler/stapler-squad/session/tokens
cpu: AMD EPYC 7763 64-Core Processor                
                                   │ benchmarks/go/tier1-baseline.txt │
                                   │              sec/op              │
TokenParser_ProcessUserEntry-4                            5.126m ± 1%
DetectCommandsInText/NoSlash-4                            7.489n ± 0%
DetectCommandsInText/WithCommand-4                        1.737µ ± 1%
geomean                                                   4.055µ

                                   │ benchmarks/go/tier1-baseline.txt │
                                   │               B/op               │
TokenParser_ProcessUserEntry-4                         11.02Mi ± 0%
DetectCommandsInText/NoSlash-4                           0.000 ± 0%
DetectCommandsInText/WithCommand-4                       433.0 ± 0%
geomean                                                             ¹
¹ summaries must be >0 to compute geomean

                                   │ benchmarks/go/tier1-baseline.txt │
                                   │            allocs/op             │
TokenParser_ProcessUserEntry-4                           34.00 ± 0%
DetectCommandsInText/NoSlash-4                           0.000 ± 0%
DetectCommandsInText/WithCommand-4                       6.000 ± 0%
geomean                                                             ¹
¹ summaries must be >0 to compute geomean

cpu: AMD EPYC 9V74 80-Core Processor                
                                   │ tier1-bench.txt │
                                   │     sec/op      │
TokenParser_ProcessUserEntry-4           5.720m ± 4%
DetectCommandsInText/NoSlash-4           6.363n ± 3%
DetectCommandsInText/WithCommand-4       1.551µ ± 2%
geomean                                  3.836µ

                                   │ tier1-bench.txt │
                                   │      B/op       │
TokenParser_ProcessUserEntry-4        11.02Mi ± 0%
DetectCommandsInText/NoSlash-4          0.000 ± 0%
DetectCommandsInText/WithCommand-4      433.0 ± 0%
geomean                                            ¹
¹ summaries must be >0 to compute geomean

                                   │ tier1-bench.txt │
                                   │    allocs/op    │
TokenParser_ProcessUserEntry-4          34.00 ± 0%
DetectCommandsInText/NoSlash-4          0.000 ± 0%
DetectCommandsInText/WithCommand-4      6.000 ± 0%
geomean                                            ¹
¹ summaries must be >0 to compute geomean

pkg: github.com/tstapler/stapler-squad/session/unfinished
cpu: AMD EPYC 7763 64-Core Processor                
                               │ benchmarks/go/tier1-baseline.txt │
                               │              sec/op              │
DiffShortstat/GitVCSReader-4                          3.137m ± 1%
DiffShortstat/GoGitVCSReader-4                        77.02n ± 0%
DiffShortstatCached-4                                 75.73n ± 1%
geomean                                               2.635µ

                               │ benchmarks/go/tier1-baseline.txt │
                               │               B/op               │
DiffShortstat/GitVCSReader-4                       62.58Ki ± 0%
DiffShortstat/GoGitVCSReader-4                       0.000 ± 0%
DiffShortstatCached-4                                0.000 ± 0%
geomean                                                         ¹
¹ summaries must be >0 to compute geomean

                               │ benchmarks/go/tier1-baseline.txt │
                               │            allocs/op             │
DiffShortstat/GitVCSReader-4                         360.0 ± 0%
DiffShortstat/GoGitVCSReader-4                       0.000 ± 0%
DiffShortstatCached-4                                0.000 ± 0%
geomean                                                         ¹
¹ summaries must be >0 to compute geomean

cpu: AMD EPYC 9V74 80-Core Processor                
                               │ tier1-bench.txt │
                               │     sec/op      │
DiffShortstat/GitVCSReader-4         3.839m ± 9%
DiffShortstat/GoGitVCSReader-4       80.82n ± 0%
DiffShortstatCached-4                81.16n ± 2%
geomean                              2.931µ

                               │ tier1-bench.txt │
                               │      B/op       │
DiffShortstat/GitVCSReader-4      62.58Ki ± 0%
DiffShortstat/GoGitVCSReader-4      0.000 ± 0%
DiffShortstatCached-4               0.000 ± 0%
geomean                                        ¹
¹ summaries must be >0 to compute geomean

                               │ tier1-bench.txt │
                               │    allocs/op    │
DiffShortstat/GitVCSReader-4        360.0 ± 0%
DiffShortstat/GoGitVCSReader-4      0.000 ± 0%
DiffShortstatCached-4               0.000 ± 0%
geomean                                        ¹
¹ summaries must be >0 to compute geomean

@github-actions

github-actions Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

E2E RPC Latency

list-sessions-ttfb-mean: 6ms (▼ faster -10.0%; baseline: 7ms)
list-sessions-total-mean: 8ms (▼ faster -15.5%; baseline: 9ms)

@github-actions

github-actions Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Frontend Terminal Throughput

terminal-throughput-mean: 15 KB/s ▲ +11.4% (baseline: 14 KB/s)
terminal-throughput-p50: 16 KB/s ▲ +0.8% (baseline: 16 KB/s)

@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.

…ction and prompt guidance

Adds regression coverage for three gaps a code review found in this PR's
diff: reconcileOrphanedTriageItems' latestTriage selection when an item has
both an older ended and a newer open triage session, the "single,
non-interactive call / no later turn" guidance paragraph in both
headlessTriageSystemPrompt and sddTriagePromptTemplate, and a stale test-name
cross-reference in a doc comment.

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

Copy link
Copy Markdown
Contributor

✅ Registry Validation

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

Building backend scanner...
Scanning backend features...
Wrote 117 feature files to /tmp/tmp.fwyEPmjGku/backend
Wrote 15 feature files to /tmp/tmp.fwyEPmjGku/backend
Wrote 45 feature files to /tmp/tmp.fwyEPmjGku/backend
Wrote 7 feature files to /tmp/tmp.fwyEPmjGku/backend
Wrote 12 feature files to /tmp/tmp.fwyEPmjGku/backend

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

✅ Registry validation passed. Divergence: 0.0%

Test Coverage: 22/180 features have testIds (12.2%)

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

@tstapler
tstapler marked this pull request as ready for review July 30, 2026 12:35
@tstapler
tstapler merged commit 1f8aa26 into main Jul 30, 2026
22 checks passed
@tstapler
tstapler deleted the worktree-agent-a0b0e5b4756ee3003 branch July 30, 2026 12:35
tstapler added a commit that referenced this pull request Jul 30, 2026
…ate, root-cause investigation

Merges the pre-fix audit findings (1 stuck item, both 07-28 MAJORs closed,
item #5 closed) with the shipped fix's own writeup (PR #290), keeping both
in chronological order.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W3683CH7Fs9zYR2yP3Dpba
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