Estampada por 'metodo init' el 2026-08-12 (master 2026-08-08); sin commit no viaja al clonar (D1). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
5.8 KiB
El Método — constitución
Versión 2026-08-08. Documento autocontenido: es lo que se vendoriza, byte a byte, a cada repo (no lleva enlaces a rutas de un árbol concreto, para que funcione clonado en solitario). Cada regla lleva su cicatriz (meta-principio: un raíl se escribe con el incidente que lo enseñó, no a priori). Procedencia, fuerza (nº de repos) y partición linter/juicio: fichero
constitucion-de-facto.mdde la matriz.ℹ️ Los 10 raíles base van hoy en una línea (su texto completo con cicatrices está pendiente de inlinar); lo promovido de la cosecha 2026-08-08 va completo. El árbol
redesconserva su copiaredes/workflows/metodo.mdhasta que se desmantele.
Raíles base (1–10)
- Verifica el RESULTADO, no la intención (testigo independiente que sabe ponerse rojo).
- El dato CRUDO, no el cocinado (backend mide, consumidor pinta).
- Mutation testing: ataca el CABLEADO, no las funciones puras.
- Ejercita el FLUJO REAL (abre el navegador, toca el device).
- No inventes estados ni fallos no medidos ("sin dato", degrada a gris no a rojo).
- Verifica la PREMISA del prompt (enmendar es SUSTITUIR; premisa falsa = PARAR). ← +C34
- Fuente única + copias vendidas + red anti-deriva (
--check). - Fallo benigno EXPLÍCITO, nunca degradación silenciosa.
- Sesiones frescas por stack; la continuidad la lleva el orquestador.
- Lo que "funciona por casualidad" está roto.
Raíles nuevos (promovidos 2026-08-08)
11. El orden de lo irreversible: añadir antes de quitar · C14 (4 fuentes)
Todo lo verificable ocurre antes del paso que no se deshace. Se añade antes de quitar, se crea antes de borrar; cada paso de una release se revierte por separado y ninguno depende de dos cosas nuevas a la vez.
- Un tercer nodo de etcd entra antes de que salga el que se retira — al revés, el quórum se queda en uno.
- "Nunca borres el
IPAddressPoolviejo hasta tener el nuevo sirviendo" (MetalLB). - El cutover de un servicio con nombre: primero responde el nuevo, luego se retira el viejo.
12. Exploración solo-lectura, sin autoengaño · C35 (Solidaria)
Explorar es medir sin tocar, y sin creerte tu propia medida.
curlcon control: mira/api/health/http_code, no "parece que responde".- "Aquí no hay nada" es un RESULTADO, no un fracaso — se anota igual que un hallazgo.
- Los falsos positivos de
grepson el riesgo nº1: una lista larga de "roto" delata TU método (un patrón demasiado amplio), no el sistema. Verifica cada hit contra la fuente antes de declararlo. - Medir, no opinar. Sondear una escritura ES escribir (no es exploración).
Entrega — la parte de "sacar el trabajo" (promovido 2026-08-08)
El método nació de verificación/UI; la cicatriz de entrega (git, secretos, naming, deploy) vivía fuera, repetida en varios repos. Aquí se consolida.
Naming · C17, C32
- Ids con prefijo por ámbito, no se renumeran (romperían citas cruzadas), y antes de añadir uno se corre el grep de colisión — no basta con mirar.
- El nombre nombra DESTINOS, no rutas: ni el host, ni la IP, ni activo/reserva entran en un FQDN. Se escribe como regla, no como observación.
- Renombrar sin CNAME de cortesía: que lo viejo rompa a la vista, no en silencio.
Secretos · C20, C21, C22
- Una frontera de credenciales por dominio; aislamiento por ServiceAccount (ninguno con acceso a secretos ajenos).
- Capacidad > credencial: se actúa con el secreto, no se revela (revelar lo deja en el transcript); el estado raro se dice con la URL, nunca con el secreto.
- Nunca en git: imperativos / GPG / PushSecret, forzado por
.gitignore; se documenta cómo recrearlos, no el valor.
Git · C24, C25, C38
- Git canónico único y MEDIDO: se empuja a un remoto y solo ahí; un fallo se mide (dry-run/reintento) antes de concluir "no hay credenciales"; el remoto muerto se elimina localmente.
- Commits Conventional (
feat/fix/docs/ci+ scope); eldoc:registra el porqué. - Working-tree compartido:
git addcon ruta explícita (nunca-A),git pullantes de deploy y antes de commitear docs, una tarea = una sesión/worktree.
Deploy · C12, C13
- Un solo flujo de build, disparado deliberadamente, no por
git push; el legacy es lápida (código muerto conservado hasta MEDIR qué lo ejecuta, no borrado a ciegas). - Todo cambio por git → deploy declarativo; imagen pineada por DIGEST inmutable commiteado; el historial de commits ES el registro de auditoría.
- El orden de lo irreversible aplica aquí → raíl 11.
Adiciones a raíles base (pendientes de inlinar en su raíl)
- R6 (verifica la premisa) += C34: las premisas del encargo se numeran (
P1,P2…) con veredicto explícito (verdadera / falsa / matizada +fichero:línea); el ratio de premisas falsas es el termómetro de "escribo de memoria"; "el doc lo dice" = premisa a verificar. - Diseño de herramientas (R1/R8) += C39: la ausencia de una capacidad es un guardarraíl. El
poder peligroso se retiene estructuralmente (no se expone porque no se construye): vocabulario
cerrado, sin
exec/SQL/comando libre. - Docs / R7 += C30: el docstring/manual ES la interfaz. Cambia el comportamiento → cambia el docstring en el mismo commit; un doc que miente ES el bug.
La estructura de sesión no vive aquí
Los dos ejes fase × persona y el handoff automático entre fases son procedimiento, no
principio → viven en la capa workflows/, con la capa persona opcional (se activa solo con
interlocutor no-técnico; en infra en solitario, inactiva pero documentada).