Skip to content

Give backlog-burndown a Disposition for a Standalone Clone and Keep the Agent-Safety Hold Past a Park - #3832

Merged
ptr727 merged 9 commits into
developfrom
burndown/3771-standalone-clone
Nov 2, 2026
Merged

ptr727 merged 9 commits into
developfrom
burndown/3771-standalone-clone

Conversation

@ptr727

@ptr727 ptr727 commented Nov 2, 2026 •

Copy link
Copy Markdown
Owner

Summary

Gives backlog-burndown a disposition for a worker's standalone clone on every path that retires or removes one, and states that releasing a parked group never lifts the away-mode agent-safety hold.

  • Finding the clone (Give backlog-burndown a Path to a Dead or Abandoned Worker's Standalone Clone #3771). A worker choosing the repo-worktree standalone-clone fallback records the clone's directory name on its group's claim comments before cloning, keeping the claim opening. The brief names the temporary root, which is never posted. This is what lets the orchestrator find a dead worker's clone.
  • Disposing of it (Give backlog-burndown a Path to a Dead or Abandoned Worker's Standalone Clone #3771, Give backlog-burndown's Resume Path a Disposition for a Stopped Group's Standalone Clone #3794). "Cleanup Is the Orchestrator's" gains one clone paragraph. A clone holds its branch alone, so the base-clone commands do not reach it. It must be clean. Retired alone, its tip must equal the live remote tip. Removed with its branch, its tip must be on origin/develop. The directory is deleted per repo-worktree, and its recorded name is removed from the claim comments. Any failed check leaves the clone standing and stops the group. The abandoned-worker discard does not run in a clone.
  • Paths that cite it. The dead-worker path ("Bounding the Wait on a Worker"), the abandoned path, the attended resume ("Raising a Blocked Question"), and the away-mode retire step ("The Lean Orchestrator" step 2, since git worktree remove errors on a clone path). The stop prompt says whether a clone holds commits the remote lacks, and pushing or removing them is the maintainer's.
  • Agent-safety hold (State That Releasing a Parked Group Never Lifts backlog-burndown's Away-Mode Agent-Safety Hold #3825). "Ranking" now says an answered decision never lifts the away-mode hold on an edit under host-setup/agent-safety/, so such a group resumes only in an attended run and the report names it as held. "Parking Instead of Asking" defers to "Ranking" there.

Generated copies regenerated with scripts/build_dist.py.

Closes on promotion: #3771, #3794, #3825

Findings from the local passes

Each finding the pass on the first push left open has an outcome. Each one the hosted round raised is answered in its thread.

  • Resume bullet, introduced: a removed or never-pushed clone could never pass the retire-alone check. Fixed in 1573113 and cb8addf: the resume waits until the remote holds the clone's branch.

  • Dispatch bullet, introduced: "That root is never posted" was false. Fixed in 1573113 by deleting the claim.

  • Clone paragraph, introduced: "strikes its recorded name". Fixed in 1573113 ("removes").

  • Clone paragraph, introduced: the release also reached a clone retired alone, and a later run could not find a clone under a root it never named. Fixed in 873a9b7: a clone retired alone keeps its claim, and the paragraph says a later run that named another root sends the group to the maintainer.

  • Clone paragraph, introduced: the retire-alone ls-remote read the caller's origin. Fixed in dee2602 (git -C <clone> ls-remote).

  • Clone paragraph retire-alone check, stop bullet, and park step 4, introduced: the check needs tip equality while the prompt and park comment asked whether the remote lacked any of the branch. Fixed in 1cafaa2: all three now say whether the clone's tip equals the remote tip.

Pre-existing findings, filed

Deferred, filed

🤖 Generated with Claude Code

ptr727 and others added 3 commits November 2, 2026 11:59
…he Agent-Safety Hold Past a Park

A worker that falls back to a standalone clone records its path on the
claim comment at once, so a dead worker's clone stays findable. Cleanup
gains a clone paragraph: the clone must be clean, and its tip must equal
the remote tip to be retired alone, or be on origin/develop to be removed
with its branch. The dead-worker, abandoned, resume, and away-mode retire
paths cite it, since git worktree remove errors on a clone path.

Releasing a parked group never lifts the away-mode agent-safety hold, so
that work resumes only in an attended run, and the report names it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The worker records the clone's directory name before cloning, never the
temporary root, whose path can name the local account. The clone paragraph
says why the abandoned discard does not run there, orders the directory
delete before the remote delete and release, and treats a reaped clone as
retired. A failed clone retire stops a dead worker's group, and the stop
prompt asks whether a clone holds commits the remote lacks.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…Maintainer

A missing clone now fails the clean check and goes to the maintainer,
since a later session cannot tell a reaped clone from one under a root it
never saw. Deleting a clone strikes its recorded name from the claim
comments. The stop prompt says pushing or removing a clone's unpushed
commits is the maintainer's, and the resume retires the clone once that is
done. The guard reason for skipping the abandoned discard is deleted.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Copilot AI lite review requested due to automatic review settings November 2, 2026 20:15
@ptr727

ptr727 commented Nov 2, 2026

Copy link
Copy Markdown
Owner Author

A recorded local strict-review pass covers head ec8ecbd52a4455c44c153bcfd3272b19f9031d6f, the content this pull request carries at that commit against develop, and it recorded 3 findings.

@coderabbitai

coderabbitai Bot commented Nov 2, 2026 •

Copy link
Copy Markdown

Important

  • Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

Run configuration
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Active critical findings remain around remote-branch verification and deletion ordering, away-mode release consistency, and preserving unpushed branches, with additional wording issues about claim cleanup and temporary-root disclosure.

5 open issues
What changed in this PR

This pull request updates backlog-burndown to track and safely dispose of standalone worker clones across failure, abandonment, resumption, and away-mode paths. It also preserves the away-mode hold for agent-safety changes and regenerates distributed skill copies.

Changes:

  • Records standalone clone names in claim comments and defines cleanup and branch-validation rules.
  • Updates dead-worker, abandoned-group, resume, and away-mode procedures.
  • Keeps agent-safety work held until an attended run.
  • Regenerates the GitHub and Claude skill copies and source digest.

This pull request requires changes.

File Description
.github/​skills/​backlog-burndown/​SKILL.md Generated GitHub Copilot skill distribution.
.claude-plugin/​fleet-skills/​skills/​backlog-burndown/​SKILL.md Generated Claude fleet skill distribution.
.claude-plugin/​fleet-skills/​.source-digests/​backlog-burndown Updated source digest for the regenerated skill.
.agents/​skills/​backlog-burndown/​SKILL.md Canonical procedures for standalone-clone tracking, cleanup, resumption, and agent-safety holds.

Review effort: Lite

…efore a Clone Resume

The abandoned clone's remote checks and delete now run before its
directory goes, so a failed check still leaves the clone standing. The
recorded name is removed rather than struck. A resumed clone waits for the
maintainer to push what the remote lacks, since a removal alone leaves no
remote branch to attach. The claim comment now says only that it carries
the name rather than the path.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@codecov

codecov Bot commented Nov 2, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 82.97%. Comparing base (b38e084) to head (1cafaa2).
⚠️ Report is 80 commits behind head on develop.

Additional details and impacted files
@@             Coverage Diff             @@
##           develop    #3832      +/-   ##
===========================================
+ Coverage    81.60%   82.97%   +1.36%     
===========================================
  Files           26       29       +3     
  Lines         9070     9741     +671     
===========================================
+ Hits          7402     8083     +681     
+ Misses        1668     1658      -10     
Flag Coverage Δ
python-3.13 82.97% <ø> (+1.36%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

ptr727 and others added 2 commits November 2, 2026 12:24
…k for a Branch Push

The is-ancestor check and the pushed-branch remote delete now apply only to
a clone removed with its branch and no merged pull request, so a retired
clone's branch is never deleted. The stop prompt asks whether the remote
lacks any of the clone's branch, and the resume waits for that push.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ush on the Park

Away-mode step 2 runs the retire-alone checks on a clone and leaves one
failing them parked, as it does a dirty tree. The park's state comment says
whether the remote lacks a clone's branch. The resume waits until the
remote holds the branch, and the release sentence is scoped to a clone with
no merged pull request.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ptr727

ptr727 commented Nov 2, 2026

Copy link
Copy Markdown
Owner Author

A recorded local strict-review pass covers head 59d1a532f3ffa4b596c4f0730c3c42ad4689b247, the content this pull request carries at that commit against develop, and it recorded 2 findings.

ptr727 and others added 2 commits November 2, 2026 12:32
The release on deleting a clone is limited to one removed with its branch
and no merged pull request, so a clone retired alone keeps its claim for the
fresh worker. A later run that named another temporary root cannot find the
clone, and its group goes to the maintainer.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The retire-alone remote-tip read now runs with git -C <clone>, so it uses
the origin the clone was made from rather than the caller's directory.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ptr727

ptr727 commented Nov 2, 2026

Copy link
Copy Markdown
Owner Author

A recorded local strict-review pass covers head dee26024b22d67934052a8489b68dbbeb0bdb325, the content this pull request carries at that commit against develop, and it recorded 1 finding.

…ecks

The stop prompt, the resume, and the away park comment now say whether a
clone's tip equals the remote tip, the test the retire-alone check applies,
rather than whether the remote lacks any of its branch.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ptr727

ptr727 commented Nov 2, 2026

Copy link
Copy Markdown
Owner Author

A recorded local strict-review pass covers head 1cafaa2562f2399d1d94b65cc59cda99e1761e81, the content this pull request carries at that commit against develop, and it recorded 1 finding.

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