workflow-fix: daily sweep counts warn firings, not command-text echoes
Highlight text on any card (body, plan, or an event) to anchor a comment, or leave a whole-task comment here. Mention @claude to summon a reply.
No comments yet.
Overview / Motivation
Auto-filed by the workflow-fix-on-bug protocol from a prose follow-up raised on task #1473 (emitting agent: /issue 1473 orchestrator session, investigation of the "fix sudo choom" daily-held item).
Goal
The /daily problem sweep counts error/warn evidence by actual tool_result firings, never raw string occurrences (command text echoes recipe warn strings).
Workflow gap
- Bug observed: /daily 2026-07-16 reported "13 failed vs 8 ok" choom failures in one session's transcript; re-parsing that transcript (6d38a307) shows 12 of the 13 "failures" were the literal
[warn] choom failedstring embedded in tool_use COMMAND text (the Step-10d/9c gate recipes carry the warn message verbatim in their preambles), and only 1 was a real tool_result firing — and that one was the documented-benign pgrep-empty shape, not a sudo denial. The miscount produced false needs-human task #1473; investigation found sudoers alreadyNOPASSWD: ALL, 0/50 serial+concurrent stress failures, and zero sudo denials in auth.log. - Why it is a workflow gap: the daily sweep's transcript mining has no count-firings-not-echoes discipline; any workflow recipe that embeds its own error/warn string in command text (the choom preambles, gate FATAL echoes, warn-and-continue messages) inflates occurrence counts and can spawn false fix tasks.
- Confidence (emitter): high
- verified-at-filing:
grep -c "tool_result" .claude/skills/daily/SKILL.md→ 0 hits in-target (absence claim: no firings-vs-echo discipline exists there); repo-wide relocation grepgrep -rln "count tool_result firings\|command-text echo\|string-occurrence" .claude/ CLAUDE.md scripts/→ 0 files; landed-fix history checkgit log --oneline --since='7 days ago' -- .claude/skills/daily/SKILL.md→ 6 commits, all verified-at-filing/SHA machinery, none landing this discipline (2026-07-17)
Proposed change (candidate diff sketch — refine in planning)
+ In the "Problem sweep" transcript-mining instructions (near the "Go
+ through today's transcripts in detail" paragraph), add an
+ evidence-counting discipline bullet: when counting occurrences of an
+ error/warn string in a transcript, count only matches inside
+ tool_result CONTENT (actual firings); matches inside tool_use
+ `command` text are recipe echoes (the workflow's own gate preambles
+ embed their warn strings verbatim) and MUST be excluded. Any
+ quantified claim ("N failed vs M ok") in a filed body must be
+ firings-only, with the counting method stated.
Scope / surfaces
- Primary target:
.claude/skills/daily/SKILL.md - Grep the workflow surface for the pattern before editing
(
grep -rln 'transcripts in detail' .claude/) and update every hit; list them in the plan.
Constraints / invariants
- Workflow-surface only — never experiment code,
configs/, ortasks/. scripts/workflow_lint.py --check-askspasses; ruff on touched files passes; ifworkflow.yamlorCLAUDE.mdchange, they stay consistent with the rule file.- This session runs under
EPM_WORKFLOW_FIX_SESSION=1and carries aworkflow_fix_target:Provenance line — it MUST NOT auto-route any of its own subagents' workflow-fix candidates (recursion guard, workflow-fix-on-bug.md § Recursion guard).
Provenance
- workflow_fix_target: .claude/skills/daily/SKILL.md
- fingerprint: 74a753edfa0f
Surfaced prose (verbatim, from the /issue 1473 investigation report): "the false '13 failed vs 8 ok' figure came from counting [warn] choom failed string occurrences in the transcript, 12 of which were the gate recipe's own warn text embedded in command strings — the daily sweep should count tool_result firings, not raw string matches."