Cuándo detenerse
Saltar es un préstamo. El trabajo de clase de seguridad nunca se salta en silencio. Auto funciona por niveles, y el Nivel-C hace HALT. Esta página es el home público de esas reglas.
En esta página
Saltar es un préstamo, y los préstamos se escriben. Una razón de clase de seguridad nunca
se salta en silencio y nunca es decisión del planificador. /flow auto funciona por
niveles: el trabajo verde puede fusionarse sin preguntar, y el trabajo de clase de
seguridad hace HALT.
Esta página es el home del operador para esas reglas. Los archivos del mantenedor siguen siendo canónicos en el repo; solo se enlazan en el pie.
Reglas de halt de clase de seguridad {#security-class-halts}
Estas clases nunca son «tales como» con un resto silencioso. Todas hacen halt.
- autenticación / auth
- autorización
- exposición de superficie admin
- tenencia
- pagos
- pérdida de datos / migración de datos
- eliminar o debilitar validación
Ante cualquiera de ellas:
- El operador acepta la exposición por escrito en
DEBT.md. Tú no la decides por él. - En
/flow autoesto es un HALT de Nivel-C. Para y pregunta. No procedas. - Cerrar una ejecución con deuda de seguridad abierta requiere reconocimiento explícito del operador. «Temporal» no es un reconocimiento.
Saltar un gate con deuda {#skip-a-gate-with-debt}
Saltar es legítimo. Saltar en silencio no.
Registra primero la exposición, luego salta:
/flow debt add "skip 01-research" "<la exposición, en concreto>" "<cerrar antes de: condición nombrada>"
/flow skip 01-research --reason "…"
Guardas, en este orden (referencian la lista de clases de arriba; no la reemplazan por una más corta):
- El stage 05 (contrato) nunca puede saltarse. Adapta el contrato al tipo de proyecto. Ver Por qué el contrato nunca se puede saltar.
- Una razón de clase de seguridad hace halt. El operador acepta la exposición por escrito en
DEBT.md. Nunca es decisión del planificador. - Una línea de deuda abierta no relacionada no desbloqueará el stage.
/flow skipsolo avanza cuando una línea de deuda abierta nombra ese stage exacto y la razón no es de clase de seguridad.- Después de un skip legítimo,
planning_completepuede tolerar ese stage para que las cards no queden bloqueadas para siempre. La línea de deuda sigue abierta.
DEBT.md
- El primer skip crea
DEBT.md. - Forma de la línea: cosa saltada, exposición concreta, condición nombrada de cierre, fecha, cards.
- [ ] DEBT: <qué se saltó> -- <exposición> -- close before: <condición nombrada> -- opened <fecha> (cards: C-NNN...)
- Cerrar una ejecución con deuda de seguridad abierta requiere reconocimiento explícito del operador. «Temporal» no es un reconocimiento.
- Una card bloqueada por una deuda queda
todocon evidencia PARCIAL que nombra la deuda. Nunca medio terminada, nunca redondeada a terminada.
Ejecutar una construcción auto {#run-an-auto-build}
/flow auto hace preflight; si pasa, escribe el estado auto compartido. /flow auto stop vuelve a manual. No hay bypass oculto.
El preflight es fail-closed:
- cada card tiene un riesgo clasificado (sin
unknown) - las cards de clase de seguridad necesitan un reconocimiento de autor distinto en
DEBT.md - el stage 05 lleva un recibo
semantic_gatevigente
Luego, por card, el ciclo en lenguaje de operador es: clasifica el nivel, construye en un worktree aislado con un subagente acotado, revisa, recibos, check, fusiona, despliega, verifica en vivo, pega evidencia del mundo, luego terminado. Usa los verbos de /flow workspace para que el journal no tenga huecos. Un git worktree add crudo no registra nada.
Niveles
| Nivel | Qué | Acción |
|---|---|---|
| Nivel-A | Verde, sin clase de seguridad | Auto-fusión sin preguntar. |
| Nivel-B | Reparable | Una reparación por un subagente fresco (dos strikes). El primer rojo de una card ordinaria no llama a un motor facturable de otro proveedor. |
| Nivel-C | Toque de clase de seguridad o un skip de deuda | HALT. El operador acepta por escrito en DEBT.md. Nunca lo decide el planificador. |
Los límites duros (iteraciones / tokens / reloj) son obligatorios. Excede cualquiera → HALT + informe. Un ciclo sin límite es un antipatrón.
Cada gate decide sobre una señal mecánica (código de salida real, ## Verify real, comprobación en vivo). Nunca la autoevaluación de un agente.
Conflicto de fusión en paralelo → halt y replanifica. La comprobación de solapamiento fue manipulada.
Cuando la ejecución se detiene sola {#halts-when-the-run-stops}
Una ejecución hace HALT e informa. Nunca continúa en silencio. Se detiene ante cualquiera de:
- Un límite duro excedido (iteraciones / tokens / reloj).
- Una señal roja de ground truth que no puede repararse en dos strikes.
- Un toque de clase de seguridad de Nivel-C.
- Un conflicto de fusión durante construcciones en paralelo (la comprobación de solapamiento de archivos permitidos fue manipulada: para y replanifica).
BLOCKED/NEEDS_CONTEXTde un subagente que más contexto no puede resolver.
Al hacer halt: di qué paró, qué está hecho, la deuda abierta o el bloqueador, y 2–4 opciones concretas. No parchees alrededor de una regresión. Deja que decida el operador.
Homes del mantenedor (no la página pública): skills/flow/references/debt-and-halts.md, skills/flow/references/auto-run.md, skills/flow/references/attestations.md.