Repository navigation
Add an Away Mode to backlog-burndown and Retire unattended-handoff - #3735
Conversation
The unattended loop's picker answered NONE for every kind of skip, so a run that skipped lanes owned by attended handoffs reported that it needed the maintainer when nothing did. It also worked one issue per round. backlog-burndown's away mode runs the same parallel, file-claimed rounds with a lean orchestrator, parks a group behind a decision issue instead of asking, and merges only as far as the scope named at invocation. Its end report names each held-back issue under the reason that actually holds it. decision-triage finds every open question beforehand, researches a recommended answer for each, files it as a decision issue, and asks the maintainer the whole queue at once. It owns the needs-the-maintainer test, which backlog-burndown carries as a generated include. Co-Authored-By: Claude Opus 5.5 <[email protected]>
An away run reranked issues already fixed on develop, could not see an answered decision holding a promotion, could not resume a parked group whose worktree still held its branch, and let the orchestrator commit a dead worker's tree. It also dropped the dispatch retry, the one-run rule, and the write-access comment filter the retired loop carried. Parking now records the park in the group's claim comment rather than the blocked label, whose defined uses this did not fit, and names the decision on every pull request it blocks. decision-triage carries "Communicating with the User" as an include rather than paraphrasing it. Co-Authored-By: Claude Opus 5.5 <[email protected]>
A resumed group now records its claim release only once its pull request merges, so the promotion hold lifts on the answer's work rather than on the dispatch. decision-triage comments each decision on the pull requests it blocks, so a skipped question still holds the promotion. The away run no longer leans on an attended session following a rule it never loads. Co-Authored-By: Claude Opus 5.5 <[email protected]>
|
A recorded local strict-review pass covers head |
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars.
|
A claim is also released when a worker dies with a clean tree or a group is abandoned, neither of which lands the answer's work. Holding the promotion until the group's pull request merges to develop keeps such a release from letting the promotion merge with the answer unapplied. Co-Authored-By: Claude Opus 5.5 <[email protected]>
An answer can drop a parked group's change rather than land it, which left the hold waiting on a merge that never comes. The resumed worker records that outcome in the claim comment, and the end report names a held promotion with the decisions holding it. Co-Authored-By: Claude Opus 5.5 <[email protected]>
Releasing the claim alone left the issue open and unheld, so the next planner ranked it again and filed the answered question afresh. Co-Authored-By: Claude Opus 5.5 <[email protected]>
|
A recorded local strict-review pass covers head |
There was a problem hiding this comment.
🟡 Changes recommended
Active moderate and critical findings remain in the backlog-burndown skill, including incomplete direct-push deduplication, untrusted issue-body handling, and promotion proceeding before the group pull request merges.
3 open issues
What changed in this PR
This pull request replaces the retired unattended-handoff workflow with an away mode in backlog-burndown, adds attended decision-triage, and refreshes the authored and generated skill distributions.
Changes:
- Adds parallel away-mode backlog processing with decision parking, claims, reporting, and scoped promotion behavior.
- Adds
decision-triagefor classifying, researching, and presenting maintainer decisions. - Retires
unattended-handoffand updates documentation, plugin registration, generated skills, and source digests.
Unresolved findings remain concerning answered legacy lanes, direct-push detection, clean branches with unmerged commits, untrusted issue text, promotion gating, partial issue splitting, split-issue narrowing, and skipped decision queues. The findings include seven P1 comments, one P2 comment, and one critical-severity comment, with the supplied vote counts preserved at 1, 2, 1, 4, 3, 1, 1, and 1 respectively.
This pull request requires changes.
| File | Description |
|---|---|
repo-config/README.md |
Updates parked-handoff terminology. |
AGENTS.md |
Routes unattended work to away mode and decision triage. |
.github/skills/unattended-handoff/SKILL.md |
Removes the retired generated skill. |
.github/skills/session-handoff/SKILL.md |
Updates handoff ownership references. |
.github/skills/pr-review-conduct/SKILL.md |
Updates promotion evidence handling. |
.github/skills/merge-and-release/SKILL.md |
Replaces the retired standing grant with away-mode authorization. |
.github/skills/local-strict-review/SKILL.md |
Removes the retired skill exception. |
.github/skills/decision-triage/SKILL.md |
Adds the generated decision-triage skill. |
.github/skills/backlog-burndown/SKILL.md |
Adds generated away-mode backlog processing and promotion behavior. |
.claude-plugin/fleet-skills/skills/unattended-handoff/SKILL.md |
Removes the retired packaged skill. |
.claude-plugin/fleet-skills/skills/session-handoff/SKILL.md |
Updates packaged handoff references. |
.claude-plugin/fleet-skills/skills/pr-review-conduct/SKILL.md |
Updates packaged promotion evidence handling. |
.claude-plugin/fleet-skills/skills/merge-and-release/SKILL.md |
Updates packaged away-mode authorization. |
.claude-plugin/fleet-skills/skills/local-strict-review/SKILL.md |
Updates the packaged reviewer handback rule. |
.claude-plugin/fleet-skills/skills/decision-triage/SKILL.md |
Adds the packaged decision-triage skill. |
.claude-plugin/fleet-skills/skills/backlog-burndown/SKILL.md |
Adds packaged away-mode backlog behavior. |
.claude-plugin/fleet-skills/.source-digests/unattended-handoff |
Removes the retired skill digest. |
.claude-plugin/fleet-skills/.source-digests/session-handoff |
Refreshes the session-handoff digest. |
.claude-plugin/fleet-skills/.source-digests/pr-review-conduct |
Refreshes the review-conduct digest. |
.claude-plugin/fleet-skills/.source-digests/merge-and-release |
Refreshes the merge-and-release digest. |
.claude-plugin/fleet-skills/.source-digests/local-strict-review |
Refreshes the strict-review digest. |
.claude-plugin/fleet-skills/.source-digests/decision-triage |
Adds the decision-triage digest. |
.claude-plugin/fleet-skills/.source-digests/backlog-burndown |
Refreshes the backlog-burndown digest. |
.claude-plugin/fleet-skills/.claude-plugin/plugin.json |
Registers decision triage and removes unattended handoff. |
.agents/skills/unattended-handoff/SKILL.md |
Removes the canonical retired skill. |
.agents/skills/session-handoff/SKILL.md |
Updates canonical handoff references. |
.agents/skills/pr-review-conduct/SKILL.md |
Updates canonical promotion evidence handling. |
.agents/skills/merge-and-release/SKILL.md |
Updates canonical away-mode authorization. |
.agents/skills/local-strict-review/SKILL.md |
Removes the canonical retired-workflow exception. |
.agents/skills/decision-triage/SKILL.md |
Adds the canonical decision-triage skill. |
.agents/skills/backlog-burndown/SKILL.md |
Adds canonical away-mode orchestration and reporting. |
Review effort: Lite
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #3735 +/- ##
===========================================
+ Coverage 81.60% 82.31% +0.70%
===========================================
Files 26 28 +2
Lines 9070 9437 +367
===========================================
+ Hits 7402 7768 +366
- Misses 1668 1669 +1
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
An away run under main or release could carry an outsider's issue text through to a merge, so issue and comment text is task data, and an issue an outsider opened waits until a write-access account accepts it. The already-fixed hold also reads direct-push commit messages, since an operational repository lands fixes on develop without a pull request. Co-Authored-By: Claude Opus 5.5 <[email protected]>
The task-data rule covered the maintainer's own issues, which the trust model treats as trusted, so it now covers text from accounts without write access. Acceptance is a write-access comment stating what done looks like, and the work follows that comment rather than a body its author can still edit. An away run on an operational repository stops at develop, since whether it promotes per round is the maintainer's call. Co-Authored-By: Claude Opus 5.5 <[email protected]>
The planner holds such an issue back without filing a decision, so the end report has to name it or it disappears from view. Co-Authored-By: Claude Opus 5.5 <[email protected]>
|
A recorded local strict-review pass covers head |
…nd Add a backlog-burndown Away Mode (#3736) Promotes the changes merged into `develop` since promotion #3715 to `main`. - [#3704](#3704): squash-merges a gate-met feature pull request through `pr_review.py merge`, and the host-safety kit now owns its `autoMode` entries. - [#3735](#3735) adds an away mode to `backlog-burndown`: - Parallel file-claimed rounds with no maintainer present, run by a lean orchestrator. - A group meeting a question parks behind a `decision` issue instead of asking. - Merges go only as far as the `develop`, `main` or `release` scope named at invocation. - The end report names each held-back issue's real reason. It also adds the attended `decision-triage` skill, which researches and asks every open question at once, and retires `unattended-handoff`. - [#3737](#3737) reads a pull request that reads back closed after `pr_review.py merge`'s merge call as a refusal that merged nothing, rather than as an unconfirmed merge. It answers this promotion's first review round. After the release, the host-safety installer re-run that #3704 needs is still the maintainer's, per its handoff #3734. That handoff's step 3 names an `unattended-handoff` worker. That skill is retired here, so the verification runs from a `backlog-burndown` worker instead. Fixes #3375 🤖 Generated with [Claude Code](https://claude.com/claude-code)


Why
An unattended run often ended saying it needed the maintainer when nothing did. The picker had a single reply,
NONE, for every kind of skip, and the run's final message routed that to the attended session as if a decision were waiting. Its exclusions stacked on each other: attended tracks, issues any handoff names, burndown claims, and an all-or-nothing "outcome determined" test. It also ran one worker per round.backlog-burndown, which works parallel file-claimed groups, proved more effective at running unattended.What
backlog-burndowngains an away mode.decisionissue instead of asking. The park is recorded in its claim comment, and the decision is named on every pull request it blocks.develop,mainorreleasescope named at invocation.decision-triageskill (attended).decisionissue.backlog-burndowncarries as a generated include. It carriesGOVERNANCE.md"Communicating with the User" as an include rather than paraphrasing it.unattended-handoffis retired. References inAGENTS.md,session-handoff,merge-and-release,pr-review-conduct,local-strict-reviewandrepo-config/README.mdare swept. Openauto-*lanes an earlier loop left are picked up by the away mode.Closes on promotion: #3375
Local review
All
local-strict-reviewpasses ran at thefrontiertier, over the whole branch diff each time.Open introduced findings
None.
Related open issues the retirement may overtake
None is closed here, since closing on judgment is the maintainer's call. Each targets the retired skill:
decisionissues.🤖 Generated with Claude Code