Agent Squad · Arquitectura de orquestación
Deprecar el motor v1 → todo en v2
El rework bifásico cayó en el motor v1 mientras producción corre en v2. La meta es un solo motor. Pero la auditoría de paridad muestra que v2 todavía no reemplaza a v1: es un programa de varias releases, no un borrado.
No es seguro deprecar v1 hoy. v2 es sólido como núcleo (cola + event-log), pero le faltan capacidades P0 de producto: gates que encadenen, evaluators con veredicto, human_task, budget, actores/roles y cierre de lifecycle. Migrar todo hoy rompería flujos en silencio.
FASE0
Congelar alcance + observabilidadv1 en maintenance-only · métricas por motor · golden scenarios v1/v2
pendiente
FASE1
Arreglar el defecto C — port del gate bifásico a v27 tasks · propagar contrato del gate → crear flow transaccional → portar 2 fases → entry-offer fail-closed → E2E
▶ en curso
FASE2
Paridad P0 antes de ampliar rolloutgates · human_task · evaluators · budget · actor/roster · retry/timeout · lifecycle · claims/lineage
siguiente
FASE3
Worker v2 estable en prodencender WORKER_ORQUESTACION · alertas · runbook · varios días de canary
espera
FASE4
Migración gradual por anillosinternos → Roberto → 10-20% → 50% → 100% · corridas en vuelo nunca migran de motor
espera
FASE5–6
Cortar productores v1, drenar y retirarparar plan.compiled → drenar corridas v1 → quitar de Inngest → borrar código (conservar tablas/historia)
espera
Núcleo del motor v2 fuerte
Compilación y versionado del grafo, determinista
Topología, DAG y paralelismo de sucesores
Idempotencia de despachos y cierres (event-log)
Recuperación de leases muertos, watchdog
Gates P0
Detección del gate (no lo despacha como op)
Config completa descartada: protocol, timeout, fallback, rol, event_pattern
Gate 1-fase: aprueba pero NO encadena sucesores
Timeout/fallback del gate (auto_approve/fail/reroute)
Rol mínimo (required_role) — devuelve null
Gate bifásico — causa directa del defecto C
Evaluators P0
Ejecución de evaluator.run (corre y da verdict)
Semántica: ignora verdict, blocking y override humano
Veredicto final del run (solo estructural)
Human task & Budget P0
human_task: sin consumer v2 para task.completed
Budget gate previo al plan (v2 arranca con 0)
Alerta budget 80% — solo v1
Actores & Retries P0
Actor ligado al roster — v2 no lo persiste
Retry policy: v2 aplica 3 uniformes, ignora la declarada
Timeout duro del step y cancelación
Lifecycle final P0
Finalización de intent: queda running para siempre
trace.completed y notificación final
gate.created / por-vencer
Claims / lineage: parcial, faltan gates y auditar templates