Skip to content

Add task reopen for operators to undo task done - #26

Merged
Deep-Sixed merged 2 commits into
mainfrom
claude/adoring-feynman-txcyiz
Sep 30, 2026
Merged

Deep-Sixed merged 2 commits into
mainfrom
claude/adoring-feynman-txcyiz

Conversation

@Deep-Sixed

Copy link
Copy Markdown
Owner

Follow-up to #24. done was terminal with no way back, so a task closed by mistake, or one that regresses, needed a new task and lost its history.

Command

quorumgit task reopen <task> --reason <r>

  • Who: operators only, via the same registry.require_operator check that repo policy and agent role use. Undoing a terminal state is an authority decision, and a worker can't reopen a task even if it completed it. The store's existing bootstrap rule applies as elsewhere: with no operator registered yet, the check is skipped.
  • What: moves a done task back to open, so anyone can claim it again, and records a task.reopened audit event with the reason.
  • Refused: a task that isn't done (open, claimed, handoff), or an empty --reason. Omitting --reason is a usage error (exit 2).

No schema change is needed.

Docs

README: the Task concept, the task done paragraph, the command table, and the operator-actions list.

Tests

4 new tests in tests/test_task_done.py:

  • an operator reopens a task: status, audit reason, and another agent can claim it;
  • a worker is refused, including the agent that completed the task;
  • only done tasks reopen, and a blank reason is refused;
  • CLI: a worker is refused (exit 1), a missing --reason exits 2, and an operator succeeds.

Locally: pytest tests 184 passed; ruff check clean; pyright 0 errors.

🤖 Generated with Claude Code

https://claude.ai/code/session_01SHGwY6PLGwr7kQY63qQGq6


Generated by Claude Code

`done` was terminal with no way back, so a task closed by mistake (or
reopened by a regression) needed a new task and lost its history.

`quorumgit task reopen <task> --reason <r>` returns a done task to
`open`. Undoing a terminal state is an authority decision, so it uses the
same require_operator check as policy and role changes; the reason is
required and recorded in a `task.reopened` audit event. Only done tasks
can be reopened.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SHGwY6PLGwr7kQY63qQGq6
No conflicts. Full suite passes on the merged tree.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q8BpCkArA34hB1aSyVcnZp
@Deep-Sixed
Deep-Sixed marked this pull request as ready for review September 30, 2026 01:26
@Deep-Sixed
Deep-Sixed merged commit a68f87e into main Sep 30, 2026
7 checks passed
Deep-Sixed pushed a commit that referenced this pull request Sep 30, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q8BpCkArA34hB1aSyVcnZp
Deep-Sixed pushed a commit that referenced this pull request Sep 30, 2026
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.

2 participants