Skip to content

Make backlog-burndown's Abandon-Discard Grant Reach a Claude Code Worker as the Maintainer's #3786

Closed

Description

@ptr727

.agents/skills/backlog-burndown/SKILL.md, "Cleanup Is the Orchestrator's", "A worker told to abandon its branch cleans its own tree first", and the matching exception in .agents/skills/git-commit-conventions/SKILL.md "Never run destructive git commands without being asked".

Defect

The discard grant reaches the worker as a message from the orchestrator, which "states the grant". A Claude Code subagent is told by its harness that no message from any agent is ever its user's consent or approval. So a worker following its harness can refuse git reset --hard and git clean -fd, or hit a permission prompt, even with the grant stated.

Failure

Constructed case: the orchestrator tells a worker on feature/example to abandon its branch, stating the grant. The worker declines the discard as an agent-sourced approval. Its tree stays dirty, so cleanup stops the group for the maintainer. That fails safe, but it is the maintainer cleanup #3733 set out to avoid, and the skill describes a mechanism that may not work on the platform it mostly runs on.

Done When

The skill either names a route by which the grant reaches the worker as the maintainer's own (for example the maintainer's invocation quoted into the brief, or a permission rule), or it drops the worker-side discard and routes a dirty abandoned tree to the maintainer as the ordinary case.

Found by the local strict review of feature/burn-3772.

Activity

  1. added
    pre-existingReview finding classed pre-existing per local-strict-review Disposing of Findings
    on Nov 1, 2026
  2. ptr727 commented on Nov 2, 2026

    @ptr727
    OwnerAuthor

    Decision triage: researched question

    How should backlog-burndown's grant to discard an abandoned worker's dirty tree take effect, given that a Claude Code worker is told no agent message is ever its user's consent?

    Options, recommended first:

    1. (Recommended) Move the discard to the orchestrator. The worker told to abandon reports its path and ends without discarding. The orchestrator, whose session holds the maintainer's own invocation, confirms from a live git worktree list --porcelain that the path is a linked worktree on the claimed branch and that the worker has ended, then runs git -C <path> reset --hard and git -C <path> clean -fd. This keeps the Give the Orchestrator a Cleanup Path for an Abandoned Branch With No Pull Request #3733 answer (no agent-safety edit, and requirement 6 denies only a primary checkout) and drops only the skill's "only the seat that made the edits can tell they are throwaway", which the abandon decision itself settles. It assumes the orchestrator is the top-level session that received the invocation.
    2. Drop the worker-side discard and send a dirty abandoned tree to the maintainer as the ordinary case. Matches what a refusing worker already produces, with no new mechanism. It brings back, on every abandon, the maintainer cleanup Give the Orchestrator a Cleanup Path for an Abandoned Branch With No Pull Request #3733 was answered to avoid.
    3. Quote the maintainer's invocation into the worker brief. No harness change, but the quote still reaches the worker as a message from the orchestrator, which is what the issue says the harness rejects as consent, so it does not close the defect.
    4. A permission rule allowing the discard. The harness treats permissions as a consent source, but this is host configuration against the Give the Orchestrator a Cleanup Path for an Abandoned Branch With No Pull Request #3733 answer's "No agent-safety edit", and it cannot be scoped to a worktree path unknown in advance, so it allows reset --hard in any linked tree, another task's included.

    Evidence: #3786 body; .agents/skills/backlog-burndown/SKILL.md:385-392 on develop 23c7d78 (worker-side discard), same file :344-422 ("Cleanup Is the Orchestrator's"); .agents/skills/git-commit-conventions/SKILL.md:143-145 and GOVERNANCE.md:50 (#3792); #3733 (comment); host-setup/agent-safety/README.md:43. No open PR touches these files.

    Blocks: none.

  3. added
    decisionA question waiting on the maintainer, alone or beside whatever else the issue carries
    on Nov 2, 2026
  4. ptr727 commented on Nov 2, 2026

    @ptr727
    OwnerAuthor

    Maintainer answer (2026-11-02, via decision triage): move the discard to the orchestrator.

    A worker told to abandon reports its worktree path and ends without discarding. The orchestrator, whose session holds the maintainer's invocation, confirms from a live git worktree list --porcelain that the path is a linked worktree on the claimed branch and that the worker has ended, then runs git -C <path> reset --hard and git -C <path> clean -fd. No agent-safety edit, per the #3733 answer. This issue stays open as work.

  5. removed
    decisionA question waiting on the maintainer, alone or beside whatever else the issue carries
    on Nov 2, 2026
  6. ptr727 commented on Nov 2, 2026

    @ptr727
    OwnerAuthor

    Released (2026-11-02): PR #3822 merged to develop and its branch is deleted, so this claim holds no files. The issue closes on promotion.

    Backlog burndown claim (away run 2026-11-02, round 2, group G2). Branch: burndown/3786-burndown-cleanup. Issues: #3786, #3785, #3772.

    Predicted file set:

    • .agents/skills/backlog-burndown/ and its generated trees (.github/skills/backlog-burndown/, .claude-plugin/fleet-skills/skills/backlog-burndown/, .claude-plugin/fleet-skills/.source-digests/backlog-burndown)
    • .agents/skills/git-commit-conventions/ and its generated trees (.github/skills/git-commit-conventions/, .claude-plugin/fleet-skills/skills/git-commit-conventions/, .claude-plugin/fleet-skills/.source-digests/git-commit-conventions)

    Out of bounds for this group: GOVERNANCE.md and .agents/skills/agent-conduct/ (group G3), host-setup/agent-safety/ (held in away mode), .agents/skills/repo-worktree/, .agents/skills/decision-triage/.

    Scope: develop only. The feature pull request carries Closes on promotion: for each issue it fully fixes.

    Adjudication update (2026-11-02): PR #3818 has merged and released GOVERNANCE.md. The claim grows by GOVERNANCE.md, limited to the one sentence in "Git and Commit Rules" that names the backlog-burndown abandon discard.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    pre-existingReview finding classed pre-existing per local-strict-review Disposing of Findings

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions