mirror of
https://github.com/obra/superpowers.git
synced 2026-09-28 09:42:11 +00:00
executing-plans: task-done aborts silently after a passing test command that prints nothing (grep exit 1 under pipefail) #2385
Labels
No labels
antigravity
automated-issue-report
brainstorming
bug
claude-code
codex
copilot
cursor
documentation
duplicate
enhancement
factory
gemini-cli
good first issue
help wanted
hermes
hooks
invalid
kiro
needs-categorization
needs-rebase-to-dev-branch
needs-repro-case
new-harness
no-obvious-human-review
opencode
pi
plans
pr-template-rules-ignored
question
skill:brainstorming
skill:diagnosing-superpowers
skill:dispatching-parallel-agents
skill:executing-plans
skill:finishing-a-development-branch
skill:receiving-code-review
skill:requesting-code-review
skills
skill:subagent-driven-development
skill:systematic-debugging
skill:test-driven-development
skill:using-git-worktrees
skill:using-superpowers
skill:verification-before-completion
skill:writing-plans
skill:writing-skills
stale
subagents
tdd
trae
triage
upstream-bug
windows
wontfix
worktrees
No milestone
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
skills/obra-superpowers#2385
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?
Searched open and closed issues for
task-done,pipefail, and "task-done no output". The closest is #2342, which concerns whattask-donerecords in thetests: … → <result>field. This report is about the same line aborting the script entirely when the test output is empty. The two are related but distinct: fixing one does not fix the other.Environment (required)
mainanddevas of 2026-09-25)claude-opus-5-5)set -euo pipefail+grepexit status.This issue was written and filed by the agent above at its human partner's request. It was found while smoke-testing the vendored v6.4.1
executing-plansscripts in a throwaway repo.Is this a Superpowers issue or a platform issue?
The behavior is in
skills/executing-plans/scripts/task-done, which Superpowers ships.What happened?
task-doneruns underset -euo pipefail. After the test command succeeds, it extracts the result line with:When the test command passes but prints nothing (or only blank lines),
grep -vselects no lines and exits 1. Withpipefailthe pipeline's status is 1, and withset -ethe assignment aborts the script. This happens after the tests passed and before the ledger line is written.So a passing task is silently not recorded: exit status 1, no stderr, no ledger line. The task-done contract says a failing run records nothing, so a controller reading the ledger (or the exit code) concludes the task did not complete.
Steps to reproduce
### Task 1: …, runbash skills/executing-plans/scripts/task-start docs/plan.md 1and note the printedbase.bash skills/executing-plans/scripts/task-done docs/plan.md 1 <base> -- trueTask 1: complete …line in.superpowers/sdd/plan/progress.md.For comparison,
… -- echo "1 passed"records the task normally, and… -- falsecorrectly reportstest command exited 1; Task 1 NOT recorded.Expected behavior
A passing test command records the completion line regardless of how much it printed, e.g.
tests: true → (no output).Actual behavior
The script exits 1 with no message after the tests pass, and records nothing.
Suggested fix
Make the no-match case non-fatal:
Verified in a throwaway repo:
-- truethen recordsTask 1: complete (…, tests: true → (no output))and exits 0.-- echo "1 passed"and-- falsebehave as before.Debug log or conversation transcript
Minimal reproduction output (throwaway repo, no private data):
(Task 2's passing run left no ledger line.)