chore(metodo): reparto — C40 preguntaba al DISCO, no a git

El check leia cicatrices.md del disco y salia VERDE en los 27 repos sobre un
fichero que ninguno versionaba. Ahora pregunta git ls-files --error-unmatch.
Ejercitado en los dos sentidos.

Solo .metodo/ — byte a byte desde la matriz.

Sesion: superadmin

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
sirxavor 2026-09-03 09:28:52 +02:00
parent 8c5e0865f3
commit c733b93dab
3 changed files with 26 additions and 2 deletions

View File

@ -1,5 +1,5 @@
ef4606f5ad9421ecd093633696a19035d3dd034c437912a497464425492d3ac6 metodo.md e8382b9a69d6a18d197ef84fb4a3c6c523e81b140714a2a579e09401685e6930 metodo.md
11bf48ad900c3a8748f229f4938a600ddd2a34897f36ee2284b10b5d44e3a0bf bin/metodo a962d34e29ff9a45c508d06646d21fa02cc560c3bce98efe9a5d98d89919f661 bin/metodo
f89b71bdf31028b05075636c1763c964e379bc37a00e0357d1c23a4dd19c09aa workflows/README.md f89b71bdf31028b05075636c1763c964e379bc37a00e0357d1c23a4dd19c09aa workflows/README.md
cc241bbecf9647c747b8525b3a6b527455cd50ca0312caa44bc3544342c8ac41 workflows/comunicacion-entre-sesiones.md cc241bbecf9647c747b8525b3a6b527455cd50ca0312caa44bc3544342c8ac41 workflows/comunicacion-entre-sesiones.md
2b9037f6dd57b5598c70a676cb728556654f05d1c5b024e7b716864659f7b884 workflows/sesion-ejecucion.md 2b9037f6dd57b5598c70a676cb728556654f05d1c5b024e7b716864659f7b884 workflows/sesion-ejecucion.md

View File

@ -175,6 +175,19 @@ check_cicatrices() {
elif [ -f "$ROOT/.metodo/metodo.md" ] && [ -f "$ROOT/.metodo/cicatrices.md" ]; then md="$ROOT/.metodo/metodo.md"; cic="$ROOT/.metodo/cicatrices.md" elif [ -f "$ROOT/.metodo/metodo.md" ] && [ -f "$ROOT/.metodo/cicatrices.md" ]; then md="$ROOT/.metodo/metodo.md"; cic="$ROOT/.metodo/cicatrices.md"
else skip "no hay metodo.md + cicatrices.md que carear"; return 0; fi else skip "no hay metodo.md + cicatrices.md que carear"; return 0; fi
local refs defs falta sobra dup local refs defs falta sobra dup
# ⛔ EL SUJETO: «está en disco» y «está en git» son DOS COSAS DISTINTAS, y este check leía del
# disco. Medido el 2026-09-03: `cicatrices.md` llevaba un día en los 27 repos SIN VERSIONAR y
# C40 salía VERDE en los 27 — el fichero estaba delante, se leía, y el check no PODÍA enrojecer.
# Lo precisó proyectos-3c: el testigo que discrimina no es leer el fichero, es preguntar a git.
local _r
_r=$(git -C "$ROOT" rev-parse --show-toplevel 2>/dev/null)
if [ -n "$_r" ]; then
local _f
for _f in "$md" "$cic"; do
git -C "$ROOT" ls-files --error-unmatch "$_f" >/dev/null 2>&1 || \
bad "$(basename "$_f") EXISTE EN DISCO pero NO ESTÁ EN GIT (C40) — este check lo estaba leyendo igual: un clon limpio no lo tendría"
done
fi
refs=$(grep -o 'C-[0-9]\{3\}' "$md" | sort -u) refs=$(grep -o 'C-[0-9]\{3\}' "$md" | sort -u)
defs=$(grep -o '^### C-[0-9]\{3\}' "$cic" | sed 's/^### //' | sort -u) defs=$(grep -o '^### C-[0-9]\{3\}' "$cic" | sed 's/^### //' | sort -u)
falta=$(comm -23 <(echo "$refs") <(echo "$defs") | tr '\n' ' ') falta=$(comm -23 <(echo "$refs") <(echo "$defs") | tr '\n' ' ')

View File

@ -1829,6 +1829,17 @@ pega tal cual.
el gate. el gate.
⇒ ⭐ Y la forma general: **el pathspec te protege del índice ajeno pagando con lo tuyo nuevo.** Es ⇒ ⭐ Y la forma general: **el pathspec te protege del índice ajeno pagando con lo tuyo nuevo.** Es
una elección, no una salvaguarda gratuita — y **hay que saber qué se está pagando**. una elección, no una salvaguarda gratuita — y **hay que saber qué se está pagando**.
⇒ ⭐⭐ **Y LO GRAVE NO ES LA RAREZA DE `git`, QUE ESTÁ DOCUMENTADA Y ES ABURRIDA: ES QUE EL GATE
ESTABA VERDE SOBRE UN FICHERO QUE NO ESTABA EN GIT.** *(Lo precisó `proyectos-3c`.)* El check leía
el fichero **del disco** — y **«está en disco» y «está en git» son DOS SUJETOS DISTINTOS**. Con el
fichero presente y sin versionar, **el check NO PODÍA enrojecer**: medía lo que tenía delante, no lo
que se publica.
**El testigo que discrimina no es leer el fichero: es `git ls-files --error-unmatch`**, que es lo
único que pregunta por el sujeto correcto. *(Atado en `C40` el mismo día, con control negativo.)*
⇒ ⭐ Y su familia, que ya tiene tres caras medidas: un gate que lee **un fichero que la IMAGEN no
incluye** · uno que lee **un fichero que el REPO no incluye** · y un banco cuya cabecera dice que
corre dentro del pod **y no entra en la imagen**. **Tres veces la misma pregunta —¿el artefacto está
donde el que lo mide cree que está?— y tres respuestas distintas.**
⇒ ⛔ **Y lo que NINGÚN gesto de git arregla: que otra sesión te sobrescriba el WORKING TREE.** No ⇒ ⛔ **Y lo que NINGÚN gesto de git arregla: que otra sesión te sobrescriba el WORKING TREE.** No
hay dos copias. Mover la coordinación a git **compra historial, no aislamiento** — y la única hay dos copias. Mover la coordinación a git **compra historial, no aislamiento** — y la única
salida real es **que dos sesiones no escriban el mismo fichero**, no una puerta mejor. salida real es **que dos sesiones no escriban el mismo fichero**, no una puerta mejor.