Agent batch-flow: lokaal committen, push + PR aan het eind (#66)

* docs(ST-1115): agent-batch flow — branch-only-at-start, commit lokaal per taak

- CLAUDE.md Track A: voeg stap 1 (branch aanmaken) toe, splits stap 6
  (commit, geen push) af, voeg stap 7-8 (herhaal / push+PR bij lege queue)
- Hardstop Push-regel: verduidelijkt dat commits lokaal accumuleren per
  taak; push pas bij lege queue of expliciete gebruikersbevestiging
- docs/runbooks/branch-and-commit.md: nieuwe subsectie "Agent-batch flow"
  met tabel (run-start / na taak / queue leeg) en single-task edge case

* docs(ST-1115): AGENTS.md branch-and-PR quick-reference tabel

* docs(ST-1115): end-to-end verificatie checklist 1 batch = 1 Vercel-deploy

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Janpeter Visser 2026-05-03 15:51:24 +02:00 committed by GitHub
parent 0ce6076a5c
commit c357c662e7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 62 additions and 7 deletions

View file

@ -61,6 +61,7 @@ Auto-generated on 2026-05-03 from front-matter and headings.
| [Prisma Client singleton](./patterns/prisma-client.md) | active | 2026-05-03 |
| [Proxy (route protection)](./patterns/proxy.md) | active | 2026-05-03 |
| [QR-pairing via unauth-SSE + pre-auth cookie](./patterns/qr-login.md) | active | 2026-05-03 |
| [Realtime NOTIFY payload — veldnaam-contract](./patterns/realtime-notify-payload.md) | active | 2026-05-03 |
| [Route Handler (REST API)](./patterns/route-handler.md) | active | 2026-05-03 |
| [Server Action](./patterns/server-action.md) | active | 2026-05-03 |
| [Float sort_order (drag-and-drop volgorde)](./patterns/sort-order.md) | active | 2026-05-03 |

View file

@ -4,7 +4,7 @@ status: active
audience: [ai-agent, contributor]
language: nl
last_updated: 2026-05-03
when_to_read: "Before creating a branch, commit, or PR."
when_to_read: "Before creating a branch, commit, or PR. Also before any agent-batch run."
---
# Branch, PR & Commit Strategy
@ -45,6 +45,47 @@ Elke `git push` naar een feature-branch triggert een Vercel preview-deployment.
Zodra het Vercel-account naar Pro (of andere omgeving zonder per-build-kosten) gaat: vervang deze regel door "branch + PR per story" zoals oorspronkelijk in dit document stond. Werk deze sectie bij én documenteer de wijziging in `docs/decisions/agent-instructions-history.md`.
### Agent-batch flow (verplicht voor worker-runs)
Wanneer de NAS-agent (`/opt/agent/`) een batch jobs uitvoert:
| Moment | Actie | Verbod |
|---|---|---|
| Start run | `git checkout -b feat/<batch-slug>` lokaal | `gh pr create` |
| Na elke taak | `git add -A && git commit -m "<type>(ST-XXX): <title>"` | `git push` |
| Queue leeg | `git push -u origin <branch>` + `gh pr create` | — |
- Alle commits accumuleren op dezelfde branch — lopende state blijft op disk tot de run klaar is.
- Één PR per batch → één Vercel preview-deployment.
- Single-task batch (1 job in queue): dezelfde flow — 1 commit → push + PR.
#### End-to-end verificatie: 1 batch = 1 Vercel-deploy
Gebruik deze checklist om te verifiëren dat de batch-flow correct werkt na een agent-run:
**Voorbereiding**
1. Seed ≥ 2 taken onder één story (bv. README-edits).
2. Trigger de batch via **"Voer alle uit"** op het Solo Board.
3. Wacht tot de agent alle jobs als `done` markeert.
**GitHub-checks**
- [ ] Er is precies **één PR** aangemaakt voor de batch-branch.
- [ ] De PR bevat **één commit per taak** (geen squash, geen force-push).
- [ ] Er zijn **geen losse pushes** op de branch vóór de definitieve push (check via `git log --all --graph` of GitHub's "commits" tab).
**Vercel-checks**
- [ ] In het Vercel-dashboard → **Deployments**: er is **exact één preview-deployment** voor de branch in het run-window.
- [ ] Geen extra "cancelled" of "building" deployments voor dezelfde branch uit hetzelfde tijdsvenster (zou wijzen op tussentijdse pushes).
**Alternatieve verificatie via Vercel MCP** (indien beschikbaar):
```
mcp__<vercel-plugin-id>__list_deployments
→ filter op branchName = feat/<batch-slug>
→ verwacht: 1 entry met state = READY of BUILDING
```
**Race-condition scenario**: als een nieuwe taak in de queue terechtkomt terwijl de agent de queue-check uitvoert, kan er een tweede push volgen. Dit is acceptabel — de tweede push triggert een tweede deployment voor de resterende commits. Documenteer dit afwijkend gedrag in de PR-description als het zich voordoet.
---
## Plan Mode