Observed
create-dev-loop.md Phase 5 (at a61398d) covers two cases: the default 5-wakeup / ~22 min poll, and Autonomous multi-cycle batch mode, which compresses the wait because "there is no human reviewer between back-to-back cycles". A third case sits between them and is not addressed: a single autonomous cycle, owner-driven, with no reviewer assigned or requested on the PR. The batch paragraph's rationale applies to it verbatim, yet the text as written directs the full ~22 min wait before a foregone Phase 6 with nothing to address.
A generated instance encountered this in practice and resolved it locally: Preponderous-Software/acsf-dev-loop#47, landed in Preponderous-Software/acsf-dev-loop#62. The rule written there is generic — nothing in it depends on the ACSF project — so it is proposed here as a template candidate rather than left as a silent divergence between the instance and the template.
Suggested addition (Phase 5, after the batch-mode paragraph)
Single-session autonomous run with no external reviewer (one owner-driven cycle, not a batch): the same latency argument applies when all three hold — (a) no human reviewer is assigned or requested on the PR (gh pr view <number> --json reviewRequests,reviews shows neither), (b) the Phase 4 self-review has been posted, and (c) {{EXTERNAL_SIGNAL_LABEL}} is green on the PR head. The full 5-wakeup wait would then end in a foregone Phase 6 with nothing to address, so cap it at one short poll (or skip it) and state the compression explicitly in the merge report — a shortened wait that is not stated reads later as a forgotten one. Retain the full wait when a reviewer is assigned or requested, or when the owner has said they may inspect the PR asynchronously while the run is in progress. A headless dispatch that has no ScheduleWakeup tool cannot poll at all — record that as the reason rather than presenting it as a chosen compression. Do-not-auto-merge / charter-gated PRs are unaffected either way: they hand off for human approval regardless of how long the poll ran.
The matching Edge cases batch entry would gain one sentence pointing at it.
Why the headless clause is part of the rule
The originating issue suggested retaining the full wait when the run is "unattended/headless". A headless dispatch (gardener tend and equivalents) has no ScheduleWakeup tool, so that instruction cannot be executed — the honest record is "could not poll", not "chose not to". Without the clause, an agent following the rule literally would attempt a wait the harness cannot perform.
This issue body was drafted during a Gardener session (https://github.com/Stephenson-Software/gardener).
drafted by Claude on behalf of Daniel Stephenson
Observed
create-dev-loop.mdPhase 5 (ata61398d) covers two cases: the default 5-wakeup / ~22 min poll, and Autonomous multi-cycle batch mode, which compresses the wait because "there is no human reviewer between back-to-back cycles". A third case sits between them and is not addressed: a single autonomous cycle, owner-driven, with no reviewer assigned or requested on the PR. The batch paragraph's rationale applies to it verbatim, yet the text as written directs the full ~22 min wait before a foregone Phase 6 with nothing to address.A generated instance encountered this in practice and resolved it locally: Preponderous-Software/acsf-dev-loop#47, landed in Preponderous-Software/acsf-dev-loop#62. The rule written there is generic — nothing in it depends on the ACSF project — so it is proposed here as a template candidate rather than left as a silent divergence between the instance and the template.
Suggested addition (Phase 5, after the batch-mode paragraph)
The matching Edge cases batch entry would gain one sentence pointing at it.
Why the headless clause is part of the rule
The originating issue suggested retaining the full wait when the run is "unattended/headless". A headless dispatch (
gardener tendand equivalents) has noScheduleWakeuptool, so that instruction cannot be executed — the honest record is "could not poll", not "chose not to". Without the clause, an agent following the rule literally would attempt a wait the harness cannot perform.This issue body was drafted during a Gardener session (https://github.com/Stephenson-Software/gardener).
drafted by Claude on behalf of Daniel Stephenson