M19-6: Stall detection, round counter, force-merge badge polish #179
Labels
No labels
area:agents
area:dashboard
area:database
area:design
area:design-review
area:flows
area:infra
area:meta
area:security
area:sessions
area:webhook
area:workdir
security
type:bug
type:chore
type:meta
type:user-story
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
charles/claude-hooks#179
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
As an operator, I want the pipeline to surface risk at a glance — stuck stages, review-loop rounds approaching MAX_ROUNDS, force-merge triggers — so that I catch issues before the escape-hatch fires.
Acceptance criteria
Stall detection (server-side, in #M19-1 derivation)
stalledwhen it has beenrunningorpendinglonger than its threshold without SSE activityconfig/agents.json::pipeline:ci_threshold_ms(default 900_000 = 15 min)review_threshold_ms(default 600_000 = 10 min — PR #160 stalled at ~3 min; 10 min is the comfort margin)implement_threshold_ms(default 1_800_000 = 30 min)default_stall_ms(600_000)UI signals
stalled_sinceand a "Bounce" quick-action↺ Nwhen round counter > 0. Pill red↺ N ⚠when round counter >=MAX_ROUNDS - 1(configurable via existingmax_review_rounds)TaskRecord.force_mergeis trueQuick actions
DELETE /requested_reviewers+POST /requested_reviewerson the PR. Auth-gated by #M18-8 (operator-only)Tests
pipeline-stall.test.ts— task that hasn't emitted in >threshold marked stalled; under threshold notpipeline-stall.test.tsx— stalled pill renders amber, tooltip surfaces Bounce action, click fires the right mutationspipeline-round-counter.test.tsx— round counter rendering at 0, 1, N-1 (amber), N (terminator fired)Docs
Out of scope
Dependencies
References
specs/m19-pipeline-monitor.md§Story M19-6Mockup reference: this story blocks on the Penpot frames produced by #181 (M19-0) — specifically the Stall tooltip and Filter bar frames (round counter, force-merge badge, "Only stalled / at-risk" toggle). Do not start CSS/layout work until the designer hands off and the
design-reviewerverdict is APPROVED.