Context
Working on gardener-respond (fixing sync PRs based on review feedback). Ran into a question about breeze:human that isn't fully specified in DESIGN.md.
The scenario
sync opens PR → no label (= new)
reviewer reviews → breeze:wip
├── request changes
│ └── respond fixes → still breeze:wip
│ └── reviewer reviews again → request changes (round 2)
│ └── respond fixes again → still breeze:wip
│ └── ... (rounds 3, 4, 5)
│ └── 5th round still request changes
│ └── ? who labels breeze:human?
├── approve → still breeze:wip → respond merges → done (auto via merge)
└── close → done (auto via close)
Question
After N unsuccessful rounds of request-changes, who labels breeze:human?
Our proposal: responder elevates.
- Reviewer doesn't know this is round 5 — it only sees the current PR state
- Responder tracks attempts via
<!-- gardener:respond-attempts=N --> marker in PR body
- Responder decides "I give up, needs human"
- Responder labels
breeze:human + comments "tried N times, needs human"
The rule
The signal for breeze:human comes from reviewer behavior (repeated request-changes), but the label is applied by the agent that tracks attempts (responder in gardener's case, could be the action executor in breeze-runner).
Why this matters
If we leave it unspecified, different agents will implement different thresholds or expect the other side to do it, leading to PRs that never escalate.
Proposal for DESIGN.md
Add to the "Four States" section:
### Who sets breeze:human
`breeze:human` is set by the agent attempting work, not by reviewers. An agent
that tracks attempts (via a counter in the PR body or local state) should
escalate to human after N failed attempts (suggested: 5). The reviewer's job
is to review; the agent's job is to know when to stop trying.
For gardener specifically
- Threshold: 5 attempts
- Counter location:
<!-- gardener:respond-attempts=N --> in PR body
- Elevation action: label
breeze:human + comment explaining
🤖 Generated with Claude Code
Context
Working on gardener-respond (fixing sync PRs based on review feedback). Ran into a question about
breeze:humanthat isn't fully specified in DESIGN.md.The scenario
Question
After N unsuccessful rounds of request-changes, who labels
breeze:human?Our proposal: responder elevates.
<!-- gardener:respond-attempts=N -->marker in PR bodybreeze:human+ comments "tried N times, needs human"The rule
Why this matters
If we leave it unspecified, different agents will implement different thresholds or expect the other side to do it, leading to PRs that never escalate.
Proposal for DESIGN.md
Add to the "Four States" section:
For gardener specifically
<!-- gardener:respond-attempts=N -->in PR bodybreeze:human+ comment explaining🤖 Generated with Claude Code