diff --git a/docs/INDEX.md b/docs/INDEX.md index c9ab542..ce5557d 100644 --- a/docs/INDEX.md +++ b/docs/INDEX.md @@ -128,7 +128,7 @@ Auto-generated on 2026-05-09 from front-matter and headings. | [Branch, PR & Commit Strategy](./runbooks/branch-and-commit.md) | `runbooks/branch-and-commit.md` | active | 2026-05-03 | | [Deploy-controle: triggers, labels, path-filter](./runbooks/deploy-control.md) | `runbooks/deploy-control.md` | active | 2026-05-07 | | [Vercel Deployment](./runbooks/deploy-vercel.md) | `runbooks/deploy-vercel.md` | active | 2026-05-03 | -| [Job-model-selectie per ClaudeJob-kind](./runbooks/job-model-selection.md) | `runbooks/job-model-selection.md` | active | 2026-05-09 | +| [Job-model-selectie per ClaudeJob-kind](./runbooks/job-model-selection.md) | `runbooks/job-model-selection.md` | active | 2026-05-09 (idea-kinds + PLAN_CHAT permission_mode → acceptEdits) | | [MCP Integration — Scrum4Me Tools](./runbooks/mcp-integration.md) | `runbooks/mcp-integration.md` | active | 2026-05-08 | | [v1.0 Smoke Test Checklist](./runbooks/v1-smoke-test.md) | `runbooks/v1-smoke-test.md` | active | 2026-05-04 | | [Worker idempotency & job-status protocol](./runbooks/worker-idempotency.md) | `runbooks/worker-idempotency.md` | active | 2026-05-09 | diff --git a/docs/runbooks/job-model-selection.md b/docs/runbooks/job-model-selection.md index 689e36d..b320718 100644 --- a/docs/runbooks/job-model-selection.md +++ b/docs/runbooks/job-model-selection.md @@ -3,7 +3,7 @@ title: "Job-model-selectie per ClaudeJob-kind" status: active audience: [ai-agent, contributor] language: nl -last_updated: 2026-05-09 +last_updated: 2026-05-09 (idea-kinds + PLAN_CHAT permission_mode → acceptEdits) when_to_read: "Vóór het wijzigen van model/thinking/permission-mode-keuze of bij debugging van 'verkeerd model gebruikt'-incidents." --- @@ -39,9 +39,9 @@ altijd kind-default — geen product- of task-override. | Kind | Model | Thinking-budget | Permission-mode | max_turns | allowed_tools | |---|---|---|---|---|---| -| `IDEA_GRILL` | `claude-sonnet-4-6` | 12 000 | `plan` | 15 | Read, Grep, Glob, WebSearch, AskUserQuestion | -| `IDEA_MAKE_PLAN` | `claude-opus-4-7` | 24 000 | `plan` | 20 | Read, Grep, Glob, WebSearch, AskUserQuestion, Write | -| `PLAN_CHAT` | `claude-sonnet-4-6` | 6 000 | `plan` | 5 | Read, Grep, AskUserQuestion | +| `IDEA_GRILL` | `claude-sonnet-4-6` | 12 000 | `acceptEdits` | 15 | Read, Grep, Glob, WebSearch, AskUserQuestion | +| `IDEA_MAKE_PLAN` | `claude-opus-4-7` | 24 000 | `acceptEdits` | 20 | Read, Grep, Glob, WebSearch, AskUserQuestion, Write | +| `PLAN_CHAT` | `claude-sonnet-4-6` | 6 000 | `acceptEdits` | 5 | Read, Grep, AskUserQuestion | | `TASK_IMPLEMENTATION` | `claude-sonnet-4-6` | 6 000 | `bypassPermissions` | 50 | (alle) | | `SPRINT_IMPLEMENTATION` | `claude-sonnet-4-6` | 6 000 | `bypassPermissions` | (geen) | (alle) | diff --git a/docs/runbooks/worker-idempotency.md b/docs/runbooks/worker-idempotency.md index e4ae759..c9b32b1 100644 --- a/docs/runbooks/worker-idempotency.md +++ b/docs/runbooks/worker-idempotency.md @@ -161,9 +161,9 @@ Claude. De resolver in `lib/job-config.ts` exporteert | Kind | Model | thinking_budget | --effort | permission_mode | |---|---|---|---|---| -| `IDEA_GRILL` | sonnet-4-6 | 12000 | high | plan | -| `IDEA_MAKE_PLAN` | opus-4-7 | 24000 | xhigh | plan | -| `PLAN_CHAT` | sonnet-4-6 | 6000 | medium | plan | +| `IDEA_GRILL` | sonnet-4-6 | 12000 | high | acceptEdits | +| `IDEA_MAKE_PLAN` | opus-4-7 | 24000 | xhigh | acceptEdits | +| `PLAN_CHAT` | sonnet-4-6 | 6000 | medium | acceptEdits | | `TASK_IMPLEMENTATION` | sonnet-4-6 | 6000 | medium | bypassPermissions | | `SPRINT_IMPLEMENTATION` | sonnet-4-6 | 6000 | medium | bypassPermissions | diff --git a/lib/job-config.ts b/lib/job-config.ts index 3347c1d..191a048 100644 --- a/lib/job-config.ts +++ b/lib/job-config.ts @@ -70,10 +70,15 @@ const TASK_TOOLS = [ ] const KIND_DEFAULTS: Record = { + // Idea-kinds en PLAN_CHAT draaien in `acceptEdits` (niet `plan`): + // `plan`-mode wacht op human-approval na elke planning-fase, wat in een + // autonome runner-context betekent dat Claude geen `update_job_status` + // aanroept en de job na lease-expiry FAILED'd. De `allowed_tools`-lijst + // doet de echte sandboxing (geen Bash, geen Edit, alleen Read/Grep/etc). IDEA_GRILL: { model: 'claude-sonnet-4-6', thinking_budget: 12000, - permission_mode: 'plan', + permission_mode: 'acceptEdits', max_turns: 15, allowed_tools: [ 'Read', 'Grep', 'Glob', 'WebSearch', 'AskUserQuestion', @@ -87,7 +92,7 @@ const KIND_DEFAULTS: Record = { IDEA_MAKE_PLAN: { model: 'claude-opus-4-7', thinking_budget: 24000, - permission_mode: 'plan', + permission_mode: 'acceptEdits', max_turns: 20, allowed_tools: [ 'Read', 'Grep', 'Glob', 'WebSearch', 'AskUserQuestion', 'Write', @@ -99,9 +104,12 @@ const KIND_DEFAULTS: Record = { PLAN_CHAT: { model: 'claude-sonnet-4-6', thinking_budget: 6000, - permission_mode: 'plan', + permission_mode: 'acceptEdits', max_turns: 5, - allowed_tools: ['Read', 'Grep', 'AskUserQuestion'], + allowed_tools: [ + 'Read', 'Grep', 'AskUserQuestion', + 'mcp__scrum4me__update_job_status', + ], }, TASK_IMPLEMENTATION: { model: 'claude-sonnet-4-6',