Dollar limit leaves codeaf do pending until the deadline
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 72/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- go
- Área
- cli, documentation, testing-qa
Línea de trabajo
Start with settlementWatch.wait and settlementWatch.saySomethingIfQuiet in cmd/codeaf/do.go, then trace TaskReasonOf in internal/session/task_status.go to understand how pending work and budget stops are resolved. Run the described e2e and unit scenarios with stub cost accounting, and inspect internal/manual/chat/running-from-the-terminal.md and models-and-cost.md. Done means exhausted dollar limits produce prompt budget stops while higher limits start the task, with matching documentation and change-entry metadata.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
What happened
PRE-EXISTING defect seen on commit 17ae56d34 (staging-20260921-17ae56d3496f) on 2026-09-21 and also on v0.3.0 (9258f7052). Lane A2, item A2-05, set both daily_budget_usd and CODEAF_MAX_COST to 0.001. codeaf do then sat at:
1 task pending, none running
Staging exited 3 after 300 seconds with JSON fields "spend": 0.003388978, "spend_work": 0, "stop": "deadline", and "answer": "The time limit was reached before anything finished...". v0.3.0 behaved the same after 240 seconds. Neither named the dollar limit.
Replication
Deterministic (no model).
No no-model reproduction is established; lane A2 reproduced the blocked launch with live accounting.
Field (real models).
Set OPENROUTER_API_KEY, then prepare a fresh home and repository:
root="$(mktemp -d)"; export CODEAF_HOME="$root/home"; repo="$root/repo"
mkdir -p "$CODEAF_HOME" "$repo" && printf '{"daily_budget_usd":0.001}\n' > "$CODEAF_HOME/config.json"
git -C "$repo" init -q
git -C "$repo" -c user.name=Test -c [email protected] commit --allow-empty -m base
CODEAF_MAX_COST=0.001 codeaf do "write numbers 1 to 3000 into numbers.txt one per line, using a bash loop that sleeps 1 second after each number" --dir "$repo" --yes-spend --json --model deepseek/deepseek-v4-flash --timeout 5m
Today stderr says 1 task pending, none running; after five minutes JSON says "stop":"deadline" and the process exits 3.
Budget five minutes and about $0.01. Repeat with a comfortably higher daily and run limit as the control; the task should start instead of remaining pending. v0.3.0 has the same low-limit defect.
Where
The terminal receipt and quiet-wait paths are settlementWatch.wait and settlementWatch.saySomethingIfQuiet in cmd/codeaf/do.go; the task stop reason is exposed by TaskReasonOf in internal/session/task_status.go. The evidence does not establish why the pending state wins over the budget stop.
The fix
If the daily or run dollar limit prevents all pending work from starting, settle immediately as a dollar-limit stop. JSON must use "stop":"budget" and the answer must say a dollar limit you set stopped it; do not wait for --timeout and call it a deadline.
Acceptance
- e2e: Through
codeaf do --jsonwith a stub cost ledger already beyondCODEAF_MAX_COST=0.001, assert prompt exit 3,"stop":"budget", answer texta dollar limit you set stopped it, and nodeadlinevalue. - e2e: Through the same door with a higher limit, assert the stub task leaves
pending, entersrunning, and the result is not stopped for budget. - Unit: A settlement with pending work, no running work, and an exhausted daily or run dollar allowance maps to budget immediately and cannot later map to deadline.
- The manual pages
internal/manual/chat/running-from-the-terminal.mdandinternal/manual/chat/models-and-cost.mdquote the budget-stop wording and JSON field, and the change entry'sinvalidatesnames the old belief that an unstartable dollar-limited task should wait for the time wall.
Filed from the 2026-09-21 staging verification of 17ae56d34; the lane reports, frames and e2e logs are in the owner's handoff folder for this promotion.
- Lenguaje dominante
- Go
- Estrellas
- 115
- Forks
- 14
- Merge medio
- 9 h 38 min
- PR fusionados (30 d)
- 749
Preparar el entorno
Aún no hemos revisado los archivos de configuración de este proyecto. Empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de Agent-Field/CodeAF
-
area:chat feature
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
Agent-Field/CodeAF#1510 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Agent-Field/CodeAF#1489 ·
Los mantenedores suelen responder en 1 día
-
area:chat bug good first issue sev:papercut
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Agent-Field/CodeAF#1470 ·
Los mantenedores suelen responder en 1 día
-
area:chat bug good first issue sev:papercut
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
Agent-Field/CodeAF#1469 ·
Los mantenedores suelen responder en 1 día
-
area:chat bug sev:papercut
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
Agent-Field/CodeAF#1468 ·
Los mantenedores suelen responder en 1 día
Todos los issues de Agent-Field/CodeAF
Issues similares
-
enhancement low priority
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
eugenioenko/ttt#674 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
Los mantenedores suelen responder en 1 día
-
Remove obsolete ipAllocationPolicy field from containernodepool-subnetworkref test dependencyAbierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 92/100
GoogleCloudPlatform/k8s-config-connector#13462 ·
Los mantenedores suelen responder en 1 día
-
bug good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
vavallee/bindery#2793 · 1 comentario ·
Los mantenedores suelen responder en 1 día