/crucible
Lee primero, pregunta al final. El humano solo responde lo que el código no puede.
Paso 1: Leer (sin preguntas aún)
Escribe lo que el código ya decide como hechos con ruta:línea. Cada pregunta posterior debe ser algo que estos hechos no pudieron responder.
Paso 2: La escalera (antes de proponer algo nuevo)
Para cada parte del cambio solicitado, detente en el primer "sí":
- ¿Podemos saltarlo o eliminarlo? ¿El requisito ya se cumple o no es necesario? → dilo.
- ¿Ya está en el repositorio? Un helper, componente o patrón existente → reutilízalo (cita
ruta:línea). - ¿Está en la stdlib o en una dependencia existente? → úsalo.
- Solo entonces: el código nuevo mínimo, sin opciones especulativas ni abstracciones.
Paso 3: Los cinco ejes
Para cada eje, márcalo como resuelto (cita el código o la solicitud) o abierto:
- Alcance: qué está incluido y qué está explícitamente excluido.
- Invariantes de datos y estado: qué debe ser siempre verdadero. ¿Migraciones?
- Modos de falla: qué ocurre con entrada incorrecta, tiempo de espera, fallo parcial, reintento.
- Límites de seguridad y confianza: quién puede llamar a esto, con qué datos y dónde reside la validación.
- Prueba de verificación: qué comprobación demostrará que está hecho (alimenta a
/proof).
Paso 4: Pregunta solo lo que está abierto
- ¿Un eje está abierto y la respuesta cambia el diseño? → pregunta. Máximo 3 preguntas por lote. Cada una da tu respuesta recomendada y su compensación, para que el humano pueda decir solo "sí".
- ¿Está abierto pero es de bajo riesgo? → decide y regístralo como
asumido. - ¿Todo está resuelto? → no preguntes nada. Ve al paso 5.
- ¿Hay una bifurcación arquitectónica genuina que merezca la opinión de otros modelos? →
/councilcon este registro como artefacto.
Paso 5: Registro
Escribe .ramos/decisions/<topic>.md:
# <tema> (<fecha>)
## Hechos (del código) - … (ruta:línea)
## Resultado de la escalera - reutilizar X / stdlib Y / nuevo Z (por qué)
## Ejes | eje | resuelto/asumido/respondido | decisión | fuente |
## Fuera del alcance - …
## Prueba - comando(s) exacto(s) que ejecutará /proof
Hecho cuando
Cada eje está resuelto, asumido o respondido, el registro existe y el comando de prueba está nombrado. Preguntas sin respuesta que cambien el diseño → detente e informa bloqueado al humano. No empieces a codificar.