Phase 3: dev<->test loop #7

Merged
ellen merged 5 commits from phase3-dev-test-loop into main 2026-07-21 11:09:57 +00:00
Member

Phase 3 of agent-orchestration (runbook §4). Wires the dev<->test loop on top of the Phase 2 preflight/state lib.

  • dev.yaml (new) — dev side, serves two dispatch routes: implement (first build, APPROVER-gated) and dev (a bounce). Branch agent/issue-N, implement per approved plan + the latest test findings, no-progress guard (parks to needs/human when a run yields no new commit), push, (re)open the PR, hand off by labelling the PR agent/test. Replaces implement.yaml.
  • test.yaml (new) — test side, runs as CLAUDE_PLAN_PAT (comment+label, no push). Checks out PR head, builds+tests in DinD, Sonnet review vs plan. PASS → needs/review+state/passed. FAIL → findings comment, bump loop/N on the issue, re-apply agent/dev to bounce.
  • dispatch.yaml — adds dev-bounce + test routes; implement now targets dev.yaml.
  • plan.yaml — reconciled to the /-label taxonomy (agent/plan→needs/approval, failures→needs/human) and wired through lib/preflight + lib/state.

Every route now starts with lib/preflight and records attempts via lib/state. Loop cap enforced by preflight at loop/3 (escalate-or-park is Phase 5).

Notes for review:

  • plan/approved is intentionally KEPT on the issue through the loop as the standing autonomous-dev gate (the dev-bounce guard admits a bot PAT only when it's present). Only the human APPROVER can first apply it.
  • The test route runs preflight against the PR number; loop/state labels live on the issue, so caps/night are trivially open on the PR side (intentional — the loop cap is enforced on the dev side).
  • Known gap for Phase 4: a night/usage-deferred FIRST build can't be auto-resumed by the tick scheduler, since the implement guard is APPROVER-only. Queue design should account for this.

🤖 Generated with Claude Code

Phase 3 of agent-orchestration (runbook §4). Wires the dev<->test loop on top of the Phase 2 preflight/state lib. - **`dev.yaml`** (new) — dev side, serves two dispatch routes: `implement` (first build, APPROVER-gated) and `dev` (a bounce). Branch `agent/issue-N`, implement per approved plan + the latest test findings, no-progress guard (parks to `needs/human` when a run yields no new commit), push, (re)open the PR, hand off by labelling the PR `agent/test`. Replaces `implement.yaml`. - **`test.yaml`** (new) — test side, runs as `CLAUDE_PLAN_PAT` (comment+label, no push). Checks out PR head, builds+tests in DinD, Sonnet review vs plan. PASS → `needs/review`+`state/passed`. FAIL → findings comment, bump `loop/N` on the issue, re-apply `agent/dev` to bounce. - **`dispatch.yaml`** — adds `dev-bounce` + `test` routes; `implement` now targets `dev.yaml`. - **`plan.yaml`** — reconciled to the `/`-label taxonomy (`agent/plan`→`needs/approval`, failures→`needs/human`) and wired through `lib/preflight` + `lib/state`. Every route now starts with `lib/preflight` and records attempts via `lib/state`. Loop cap enforced by preflight at `loop/3` (escalate-or-park is Phase 5). **Notes for review:** - `plan/approved` is intentionally KEPT on the issue through the loop as the standing autonomous-dev gate (the `dev-bounce` guard admits a bot PAT only when it's present). Only the human APPROVER can first apply it. - The `test` route runs preflight against the PR number; loop/state labels live on the issue, so caps/night are trivially open on the PR side (intentional — the loop cap is enforced on the dev side). - Known gap for Phase 4: a night/usage-deferred FIRST build can't be auto-resumed by the tick scheduler, since the `implement` guard is APPROVER-only. Queue design should account for this. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
ellen merged commit 0723ebc6ba into main 2026-07-21 11:09:57 +00:00
ellen deleted branch phase3-dev-test-loop 2026-07-21 11:09:57 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
valssi-public/agent-workflows!7
No description provided.