Evolucionar el pipeline agentic existente (FASE 28.0 simulation-only) hacia un Planner Runtime real, pero SIN ejecución real todavía. Preparar la carretera para FASE 28.2–28.8.

28.1 → prepara la carretera (DAG, permisos, governance, estados)
28.2 → governance hooks/contracts
28.3 → readonly executor (empieza a circular)
28.4 → tool contracts
28.5 → sandbox write simulation
28.6 → rollback engine
28.7 → approval execution gates
28.8 → write execution controlada

WorkflowAction extendido con campos DAG:

CampoTipoDescripcion
dependencieslist[str]action_ids de los que depende
permission_scopestrScope de permiso (readonly, forbidden, etc.)
rollback_hintstrPista de como revertir (reservado)
expected_outputstrQue deberia producir la accion

AgenticPlan extendido con governance:

CampoTipoDescripcion
dag_edgeslist[tuple[str,str]]Aristas del DAG
permission_scopestrScope global del plan
requires_approvalboolSi requiere aprobacion (siempre False en 28.1)
max_nodesintMaximo 8 nodos
max_depthintProfundidad maxima 3
governance_resultdictResultado de validacion

Planner.plan() mejorado:

  • Rechaza intents BLOCKED (modify_config, create_file, restart_service, install_package, run_command)
  • Rechaza intents no reconocidos (return None)
  • Construye DAG con build_dag()
  • Enforces max_nodes=8, max_depth=3
  • Clasifica permission_scope global

4 nuevos estados reservados:

EstadoPropositoActivo en 28.1
GOVERNEDPlan validado por governance
READY_FOR_EXECUTIONPlan listo para ejecutarse✅ (transicion)
EXECUTING_RESERVEDEjecucion en progreso (FASE 28.3+)🔒 Definido, sin transiciones
ROLLBACK_RESERVEDRollback en progreso (FASE 28.6+)🔒 Definido, sin transiciones

8 nuevos KNOWN_INTENTS para patrones de planes conocidos:

IntentDescripcion
check_gateway_healthVerificar estado del gateway
check_runtime_statusVerificar estado general del runtime
inspect_streamsInspeccionar estado de streams
check_gpu_statusVerificar estado de GPU
analyze_timeoutsAnalizar timeouts y latencia
check_modelsVerificar modelos cargados
inspect_slo_stateInspeccionar estado SLO
check_servicesVerificar servicios del sistema

FORBIDDEN_INTENT_PATTERNS extendido con: docker stop/rm/kill, systemctl stop/disable, curl | bash/sh, ignore previous, override, planner, self-modify, self-heal.

Define PermissionScope enum con 5 niveles:

ScopePermitido en 28.1Fase activa
readonlySiempre
workspace_write_reservedFASE 28.5+
runtime_write_reservedFASE 28.6+
privileged_reservedFASE 28.7+
forbidden🚫Nunca

Interfaz de governance con:

  • validate_plan_against_policy(plan)GovernanceResult
  • classify_permissions(plan)PermissionScope
  • detect_forbidden_actions(plan)list[str]

Reglas 28.1:

  • permission_scope != READONLYallowed=False
  • Patrones prohibidos → allowed=False
  • Intents no reconocidos → allowed=False
  • requires_approval=False
MetricaTipoLabels
ailab_planner_plans_totalCounterplan_type
ailab_planner_dag_nodes_totalHistogramplan_type (buckets 1-8)
ailab_planner_blocked_totalCounterblocked_reason
ailab_planner_permission_scope_totalCounterscope
ailab_planner_validation_failures_totalCounterreason
FlagDefaultProposito
AI_LAB_ENABLE_PLANNERfalseHabilita el planner
AI_LAB_PLANNER_DRY_RUNtrueDry-run obligatorio

13 tests, 42 assertions. Ejecutar:

Terminal window
python3 tests/test_planner_28_1.py
TestInputExpected
readonly plan valido”revisa el gateway”Plan, DAG 4 nodos, READONLY
dependencias DAG”revisa runtime”DAG con edges, sin ciclos
prompt ambiguo”haz algo”None (rechazado)
write malicioso”escribe en /etc/config”None (bloqueado)
sudo attemptsudo + restartFORBIDDEN scope
docker mutationdocker rmDetectado en patterns
planner recursionplanner recursionDetectado en patterns
permission scope readonlycheck intentREADONLY
permission scope forbiddenrestart intentFORBIDDEN
max nodes enforced11 intentsTruncado a 8
max depth enforcedN/ADepth ≤ 3
governance resultplan validoGovernanceResult completo
workflow state governedEVALUATED→GOVERNEDTransicion valida
workflow state reservedNuevos estadosDefinidos, sin transiciones
  • WorkflowAction con dependencies, permission_scope, expected_output, rollback_hint
  • AgenticPlan con dag_edges, permission_scope, governance_result
  • DAG deterministico: mismos intents → mismo plan
  • Maximo 8 nodos, profundidad maxima 3
  • READONLY unico scope permitido en 28.1
  • Cualquier write/edit/rm/sudo → FORBIDDEN → bloqueado
  • 4 estados reservados (GOVERNED, READY_FOR_EXECUTION, EXECUTING_RESERVED, ROLLBACK_RESERVED)
  • 8 nuevos KNOWN_INTENTS
  • GovernanceResult completo
  • 5 metricas Prometheus
  • Feature flags: enable=false, dry_run=true
  • 42 tests assertions pasan
  • 0 side effects, 0 ejecucion real, 0 mutations, 0 crashes