diff --git a/.metodo/CHECKSUMS b/.metodo/CHECKSUMS index 586add6..06ebd24 100644 --- a/.metodo/CHECKSUMS +++ b/.metodo/CHECKSUMS @@ -1,4 +1,4 @@ -802b38924f2e8159e1fcb59937661312463dc3fcbb58fbe58f04b4a64a5a038f metodo.md +f226449c1039cca20dd14575fd26f6e5336e2d97e112e28a41a237ad1d1d84e2 metodo.md 36796ff4e2adf641dac48b4436a86ba75f99a919886b73e0b5266642a4b55634 bin/metodo f89b71bdf31028b05075636c1763c964e379bc37a00e0357d1c23a4dd19c09aa workflows/README.md cc241bbecf9647c747b8525b3a6b527455cd50ca0312caa44bc3544342c8ac41 workflows/comunicacion-entre-sesiones.md diff --git a/.metodo/metodo.md b/.metodo/metodo.md index c149966..fa162be 100644 --- a/.metodo/metodo.md +++ b/.metodo/metodo.md @@ -732,18 +732,61 @@ de fallo que **produce medidas coherentes y falsas**, y por eso no se nota. ⇒ Antes de creerte una medida: **¿de qué aparato habla?** · **¿pudo cambiarla el hecho de tomarla?** · **¿distingue «está mal» de «no lo veo»?** -⛔ **UN TESTIGO DE PRESENCIA NO ES UN TESTIGO DE FORMA.** Comprobar que algo *está* no comprueba que -esté *bien puesto*, y el de presencia sale verde en los dos casos. -*(Cicatriz 2026-09-02, dos veces el mismo día: **(a)** un bloque de 14 líneas insertado con `sed a\` -entró **colapsado en UNA sola línea**; el testigo era `grep -c ` → **1**, verde, y la forma -estaba destruida. El testigo bueno era `git diff --numstat` (15) junto a `grep -c '^+>'` (14). -**(b)** filtrar un diff con `grep "^[+-][^+-]"` para quitar cabeceras **oculta toda línea de lista -Markdown**, porque una viñeta empieza por `-` y da `+-`/`--`. Salió **diff vacío** sobre un fichero -que sí había cambiado, y estuvo a punto de cerrarse como «ya estaba commiteado». En un corpus que es -casi todo viñetas, ese filtro **borra la mayoría de lo que buscas** — y no da error, da vacío.)* -⇒ Y su forma general: **un filtro que no casa no se queja, devuelve nada** — indistinguible de «no -hay nada». Cuando un instrumento devuelva vacío, **pruébalo contra un caso que SÍ debería encontrar** -antes de concluir. +⛔⛔ **UNA COMPROBACIÓN PUEDE INFORMAR DE ALGO DISTINTO DE LO QUE DICE COMPROBAR — y desde fuera se ve +idéntica a una que funciona.** No es que no pueda enrojecer: **puede**, sólo que **por otra razón que +la anunciada**. Y el verde que devuelve es cierto: contesta **otra pregunta**. Tres caras, las tres +medidas el 2026-09-02: + +**① PRESENCIA en lugar de FORMA.** Comprobar que algo *está* no comprueba que esté *bien puesto*, y +el testigo de presencia **sale verde en los dos casos**. *(**(a)** un bloque de 14 líneas insertado +con `sed a\` entró **colapsado en UNA sola línea**; el testigo era `grep -c ` → **1**, +verde, con la forma destruida. El bueno era `git diff --numstat` (15) junto a `grep -c '^+>'` (14). +**(b)** filtrar un diff con `grep "^[+-][^+-]"` **oculta toda línea de lista Markdown** —una viñeta +empieza por `-` y da `+-`/`--`—: salió **diff vacío** sobre un fichero que sí había cambiado. En un +corpus que es casi todo viñetas, ese filtro **borra la mayoría de lo que buscas**.)* +⇒ **Un filtro que no casa no se queja: devuelve nada** — indistinguible de «no hay nada». Cuando un +instrumento devuelva vacío, **pruébalo contra un caso que SÍ debería encontrar** antes de concluir. + +**② MENCIÓN en lugar de VALIDACIÓN.** Un esquema **no declara lo que deja de comprobar**: acepta el +documento, devuelve verde, y el hueco no aparece en ninguna parte. ⇒ **Leer un esquema no te dice qué +valida: te dice qué MENCIONA.** *(Cuatro mutantes sobre el netplan real de un host. El +`autoinstall_schema` del controlador de red de subiquity pone `ethernets: {properties: {match: +MATCH}}` con `MATCH` llevando `additionalProperties: false`, y de ahí se afirmó que un `match` con +una clave de más sería rechazado. **Falso**: ese `match` cuelga **directamente de `ethernets`**, +profundidad donde netplan **no lo pone jamás**; el de verdad vive en `ethernets..match`, y ahí +el esquema **no mira**, porque `ethernets` no lleva `additionalProperties: false`.)* +``` +version: 3 -> RECHAZADO ("3 is greater than the maximum of 2") +typo `macadress` en prov0.match -> PASA <- la afirmacion, refutada +bond con mode: 802.3ed -> PASA <- el verde falso, EJERCITADO +`match` colgando de `ethernets` a pelo -> RECHAZADO ("Additional properties") +``` +⇒ De ese esquema, sobre la red, **lo único afirmable es `version` obligatoria y = 2**. +⇒ ⭐⭐ **Y el remate: el esquema comete EXACTAMENTE la trampa de la que iba a protegernos** — un +`match` a la profundidad equivocada, que es el aviso `A13` de ese mismo frente. Allí el motor lo +**borra** sin decir nada; aquí el esquema **valida la nada** sin decir nada. **La herramienta que te +iba a proteger de una trampa puede estar cometiéndola.** + +**③ OTRO MECANISMO en lugar del que NOMBRA — y ésta es la que no caza ningún gate genérico.** La +guarda enrojece de verdad, pero **por un camino distinto del que dice medir**, así que **quitar +aquello que anuncia comprobar NO la pone roja**. *(`proyectos-3c`, sobre el arranque por red: +predijo **1 rojo** en su mutante y salió **0**. Su comprobación decía medir *«el servidor que ignora +el `Range`»* y en realidad pasaba por **el magic `CD001` ausente en unos bytes de relleno**. La +arregló con un fichero que **parece correcto a la profundidad equivocada** — literalmente `A13` en +otro traje.)* +⇒ **Sólo la separa MUTAR LA GUARDA CONCRETA QUE NOMBRA.** Un mutante genérico no la distingue de una +comprobación sana: hay que romper **el mecanismo que la cabecera dice medir**, y ver si enrojece. + +⇒ ⭐ **Y la mitad de proceso, que extiende *«releer una inferencia no la comprueba»* con el remedio**: +en las tres se afirmó **leyendo** —el marcador, el esquema, la cabecera de la guarda—. La inferencia +era **correcta sobre el fragmento mirado y falsa sobre el conjunto**. **Releerlo no habría corregido +nada: sólo lo corrigió el mutante.** ⇒ **La mitad roja no es el adorno de la comprobación: es la +comprobación.** Contra un validador, el mutante es un documento que **debería** rechazar; si pasa, +acabas de medir el hueco. +⚠️ **Con una condición, o el ejercicio se vuelve decorativo: el mutante tiene que PARECERSE A LO QUE +DE VERDAD SE ESCRIBE.** Un typo en una MAC vale porque **es el error que alguien va a cometer**; +mutar algo que nadie teclea nunca **mide un hueco que no le importa a nadie** — y te deja igual de +tranquilo, que es lo peligroso. **Un mutante irreal es un verde disfrazado de rigor.** ⛔ **«TODAVÍA NO SE LE HA APLICADO X» NO ES «LE FALTA X».** Confundirlos convierte **el estado normal de cualquier sistema antes de su paso de configuración** en un incidente — y gasta la credibilidad @@ -775,38 +818,6 @@ una descripción se LEE; en un procedimiento se EJECUTA.** Lo cazó una pregunta ⇒ **Antes de dar por cerrada una corrección de dato: `grep` del dato en TODO el corpus, y control final que salga vacío.** Y al mirar los resultados, **los procedimientos primero**. -⛔ **UN VALIDADOR PUEDE PASAR POR ENCIMA DE TODO LO QUE IMPORTA SIN DECIR QUE NO LO MIRA.** Un -esquema no declara lo que **deja de comprobar**: acepta el documento, devuelve verde, y el hueco no -aparece en ninguna parte. ⇒ **Leer un esquema no te dice qué valida: te dice qué menciona.** -*(Cicatriz 2026-09-02, con cuatro mutantes sobre el netplan real de un host. El `autoinstall_schema` -del controlador de red de subiquity pone `ethernets: {properties: {match: MATCH}}`, con `MATCH` -llevando `additionalProperties: false` — y de ahí se afirmó que **un `match` con una clave de más -sería rechazado**. **Falso.** Ese `match` cuelga **directamente de `ethernets`**, profundidad donde -netplan **no lo pone jamás**; el de verdad vive en `ethernets..match`, y ahí el esquema **no -mira**, porque `ethernets` **no** lleva `additionalProperties: false` y la interfaz entra como -propiedad libre con **todo su contenido sin validar**. Medido:* -``` -version: 3 -> RECHAZADO ("3 is greater than the maximum of 2") -typo `macadress` en prov0.match -> PASA <- la afirmacion, refutada -bond con mode: 802.3ed -> PASA <- el verde falso, EJERCITADO -`match` colgando de `ethernets` a pelo -> RECHAZADO ("Additional properties") -``` -*⇒ De ese esquema, sobre la red, **lo único afirmable es `version` obligatoria y = 2**.)* -⇒ ⭐⭐ **Y el remate, que es el que hay que recordar: el esquema comete EXACTAMENTE la trampa de la -que iba a protegernos** — un `match` a la profundidad equivocada, que es el aviso `A13` de ese mismo -frente. Allí el motor lo **borra** sin decir nada; aquí el esquema **valida la nada** sin decir nada. -**La herramienta que te iba a proteger de una trampa puede estar cometiéndola.** -⇒ Y la mitad de proceso, que extiende *«releer una inferencia no la comprueba»* **con el remedio**: -se afirmó **leyendo** el esquema. La inferencia era **correcta sobre el fragmento mirado y falsa -sobre el conjunto**, porque no se miró **a qué profundidad colgaba**. **Releerlo no habría corregido -nada: sólo lo corrigió el mutante.** ⇒ **La mitad roja no es el adorno de la comprobación: es la -comprobación.** Contra un validador, el mutante es un documento que **debería** rechazar — si pasa, -acabas de medir el hueco. -⚠️ **Con una condición, o el ejercicio se vuelve decorativo: el mutante tiene que PARECERSE A LO QUE -DE VERDAD SE ESCRIBE.** Un typo en una MAC vale porque **es el error que alguien va a cometer**; -mutar algo que nadie teclea nunca **mide un hueco que no le importa a nadie** — y te deja igual de -tranquilo, que es lo peligroso. **Un mutante irreal es un verde disfrazado de rigor.** - ⛔ **UN ARNÉS CON UNA RUTA ABSOLUTA A UN SCRATCHPAD ES CÓDIGO QUE NO CORRE — y no da síntoma, porque nadie lo ejecuta hasta que hace falta**, que es el peor momento posible para descubrirlo. *(Cicatriz 2026-09-02: el banco de subiquity del motor de `hermes-infra` estaba commiteado con rutas