workflow-state
workflow-state.json es la fuente única de verdad para la ejecución de una ejecución. Esquema:
templates/workflow-state.template.json. Es actualizado por el hook post-write-state en
cada escritura de artefacto y por scripts/approve_event.py / scripts/reject_event.py.
Los agentes no deben editarlo manualmente.
Claves
| Clave | Significado |
|---|---|
run_id | debe coincidir con el nombre de la carpeta de ejecución (runs/<run-id>) |
requirements_hash | SHA-256 de artifacts/01-requirements.md (se establece cuando se escribe) |
execution_plan | pasos ordenados: step, name, agents, depends_on, status (pending/running/done/failed), attempts |
artifacts | mapa de ruta relativa a la ejecución → {owner, status, sha256, updated_at} |
gate_results | mapa G1..G8 → {status: PASS/FAIL/PASS-N/A, attempts, findings, responsible_agent} |
retry_counters | mapa G1..G8 → número de rondas de reintento ya consumidas |
approval | {status: pending/approved/rejected, approved_at, plan_sha256, rejected_count, feedback[]} |
notes | registro adjunto de solo lectura (decisiones, agentes omitidos + razones) |
Reglas de actualización
- Los hashes son SHA-256 de los bytes del archivo (hexadecimal, minúsculas). Cuando se omite un paso porque
su artefacto está
doney el hash en disco coincide, no se registra nada nuevo. - Transiciones de estado:
pending → running → done|failed. Un reintento dirigido re-ejecuta solo el paso del agente responsable y sus dependientes posteriores; incrementaattemptsde ese paso yretry_counters[gate]. - Agentes omitidos se registran en
notes(p. ej."entertainment-planner skipped: no entertainment required") y su artefacto se escribe igualmente comoNot applicable — <reason>. - Resultados de compuertas se registran por compuerta con hallazgos y
responsible_agent; una compuerta constatus: FAILyattempts: 3detiene la ejecución dependiente — marca los pasos posteriores comofailedy finaliza la ejecución con un informe claro. - Aprobación: solo
scripts/approve_event.pypuede establecerapproval.status = "approved"yapproval.plan_sha256.scripts/reject_event.pyañade aapproval.feedbacke incrementarejected_count. Una revisión de06-event-plan.mdinvalidaplan_sha256para la guardia incluso si el campo está obsoleto. - Las escrituras son atómicas (archivo temporal + renombrar). Mantén
updated_aten UTC ISO-8601 (...Z).
Contrato de reanudación (/plan-event --resume <run-id>)
- Cargar el estado; si
workflow-state.jsonfalta o no es válido → detenerse con un error. - Re-hashear cada ruta en
artifactsdesde el disco; una discrepancia marca ese artefacto comostale. - Ejecutar solo los pasos con
statusenpending/running/failed, más cualquier paso cuyo artefacto estéstale(y sus dependientes posteriores). - No repetir nunca pasos cuyos artefactos estén
donecon hashes coincidentes. - Al completarse cada artefacto, el hook actualiza el estado automáticamente — el coordinador
solo actualiza
execution_plan,gate_results,retry_countersynotes.