diff --git a/CLAUDE.md b/CLAUDE.md index aa80160..9cbfacc 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -38,11 +38,20 @@ of equivalent: - `status: "done"` als verificaties slaagden, plus `branch` en `summary`. - `status: "failed"` met `error` als iets onomkeerbaar misging. - 8. Roep `bash /opt/agent/bin/job-cleanup.sh ` aan om de + 8. Roep `mcp__scrum4me__check_queue_empty` aan (geen args). Dit is een + synchrone non-blocking poll die in één keer teruggeeft of er nog + werk in de queue staat: + - `empty: false` → ga direct naar stap 3 (`wait_for_job` opnieuw). + - `empty: true` → batch is klaar; geef recap en exit. Geen extra + `wait_for_job`-call die 600 s blokt. + 9. Roep `bash /opt/agent/bin/job-cleanup.sh ` aan om de working tree op te ruimen en logs naar `/var/log/agent` te kopiëren. -3. Roep **direct opnieuw** `wait_for_job` aan. Stop niet, vraag niets. +3. Op basis van stap 8: bij `empty: false` opnieuw `wait_for_job`; bij + `empty: true` direct naar stap 4. Stop niet midden in de loop, vraag + niets. 4. Pas wanneer `wait_for_job` na de volledige block-time terugkomt zonder - claim, sluit de turn af met een korte recap (aantal jobs, success/fail). + claim, óf `check_queue_empty` empty=true retourneerde, sluit de turn + af met een korte recap (aantal jobs, success/fail). ## Foutscenario's diff --git a/bin/run-agent.sh b/bin/run-agent.sh index 5c2439c..26a60f1 100644 --- a/bin/run-agent.sh +++ b/bin/run-agent.sh @@ -45,7 +45,7 @@ SEED_PROMPT='Pak de volgende job uit de Scrum4Me-queue en draai de queue leeg vo # Tools-allowlist: alle MCP-tools die scrum4me-mcp aanbiedt + standaard # file/bash-tools. Geen WebFetch, geen WebSearch — de agent heeft die # niet nodig en uitsluiting verkleint het surface. -ALLOWED_TOOLS='Read,Edit,Write,Bash,Grep,Glob,mcp__scrum4me__health,mcp__scrum4me__list_products,mcp__scrum4me__get_claude_context,mcp__scrum4me__wait_for_job,mcp__scrum4me__update_job_status,mcp__scrum4me__update_task_status,mcp__scrum4me__update_task_plan,mcp__scrum4me__log_implementation,mcp__scrum4me__log_test_result,mcp__scrum4me__log_commit,mcp__scrum4me__create_pbi,mcp__scrum4me__create_story,mcp__scrum4me__create_task,mcp__scrum4me__create_todo,mcp__scrum4me__ask_user_question,mcp__scrum4me__get_question_answer,mcp__scrum4me__list_open_questions,mcp__scrum4me__cancel_question' +ALLOWED_TOOLS='Read,Edit,Write,Bash,Grep,Glob,mcp__scrum4me__health,mcp__scrum4me__list_products,mcp__scrum4me__get_claude_context,mcp__scrum4me__wait_for_job,mcp__scrum4me__check_queue_empty,mcp__scrum4me__update_job_status,mcp__scrum4me__update_task_status,mcp__scrum4me__update_task_plan,mcp__scrum4me__log_implementation,mcp__scrum4me__log_test_result,mcp__scrum4me__log_commit,mcp__scrum4me__create_pbi,mcp__scrum4me__create_story,mcp__scrum4me__create_task,mcp__scrum4me__create_todo,mcp__scrum4me__ask_user_question,mcp__scrum4me__get_question_answer,mcp__scrum4me__list_open_questions,mcp__scrum4me__cancel_question' CONSEC_FAILURES=0 BACKOFF=${AGENT_BACKOFF_START}