chore(metodo): el indice tambien es compartido, y el gate arreglado

git add con ruta explicita no desmonta lo que otra sesion dejo staged: tu
commit se lleva ficheros que ni nombraste ni tocaste. El gesto que falta no es
«no uses -A» sino: si te llevaste algo ajeno, DILO EN EL MENSAJE.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
sirxavor 2026-08-30 17:34:04 +02:00
parent 5922c7f5db
commit 2b6b69ee29
3 changed files with 27 additions and 6 deletions

View File

@ -1,5 +1,5 @@
343e8a8b741931d28a9aa09a1f4cc3b7e92f20e825fe49d511bde3e3641ca22c metodo.md
7a8d29ab793674397b50489a01825e469b52593a12bc24c4368bcfc469d20559 bin/metodo
a09aef8bef5baca613fcfa937099b3436540a08aff03c621460c3b0d34b89e89 metodo.md
2a4147dc9c3944685182864524a97ba9e56eda150d59d51e3737a86750468c84 bin/metodo
f89b71bdf31028b05075636c1763c964e379bc37a00e0357d1c23a4dd19c09aa workflows/README.md
cc241bbecf9647c747b8525b3a6b527455cd50ca0312caa44bc3544342c8ac41 workflows/comunicacion-entre-sesiones.md
2b9037f6dd57b5598c70a676cb728556654f05d1c5b024e7b716864659f7b884 workflows/sesion-ejecucion.md

View File

@ -93,13 +93,18 @@ check_semaforo_en_vuelo() {
local f="$ROOT/workflows/sesiones-activas.md"
[ -f "$f" ] || return 0 # sólo aplica donde vive el semáforo (el árbol)
hdr "filas vivas con bloque EN VUELO"
# ⛔ El sujeto es LA CELDA DE ESTADO, no la línea. La v1 hacía `grep` de 🟢 sobre la línea entera
# y marcó como viva una fila CERRADA que usaba 🟢 como PROSA dentro de una predicción — el gate
# perdió su sujeto. Y una fila CERRADA/CANCELADA queda fuera pase lo que pase con su texto.
# ⛔ Y NO se usa `grep -c`: imprime 0 **y además sale con código 1**, así que un `|| echo 0`
# añadía un segundo cero y `[ -gt ]` reventaba — el gate no podía salir VERDE.
local vivas sin
vivas=$(grep -c "^| 2026.*🟢" "$f" 2>/dev/null || echo 0)
sin=$(grep "^| 2026.*🟢" "$f" 2>/dev/null | grep -vc "EN VUELO" || echo 0)
vivas=$(grep -c "| 🟢" "$f" || true)
sin=$(grep "| 🟢" "$f" | grep -vc "EN VUELO" || true)
if [ "$sin" -gt 0 ]; then
bad "$sin de $vivas fila(s) 🟢 sin bloque EN VUELO — una fila viva sin estado en vuelo no releva a nadie"
bad "$sin de $vivas fila(s) viva(s) sin bloque EN VUELO — una fila viva sin estado en vuelo no releva a nadie"
else
ok "$vivas fila(s) 🟢, todas con EN VUELO"
ok "$vivas fila(s) viva(s), todas con EN VUELO"
fi
}
check_apendices_no_viajan() {

View File

@ -1695,6 +1695,22 @@ pega tal cual.
decisión, **publicarlo no la toma**: se empuja **diciéndolo** y la decisión sigue pendiente de su
dueño. Y **antes de usarlo se comprueba que la orquestadora no está viva** — *el único testigo
válido es «escribí y no contestó»*, jamás «no la veo en el listado».
⛔⛔ **Y HAY UN SEGUNDO AGUJERO, PEOR: EL ÍNDICE TAMBIÉN ES COMPARTIDO.** `git add <ruta>` **no
desmonta lo que otra sesión ya dejó *staged***, así que tu commit se lleva **ficheros que ni
nombraste ni tocaste** — con ruta explícita, sin `-A`, y haciendo todo bien.
*(Cicatriz 2026-08-30, y el sitio es lo que la hace útil: la superadmin commitea **dos** ficheros
nombrados uno a uno; entran **tres**. El tercero era el trabajo *staged* de otra sesión, que
**sobrevivió íntegro** pero quedó publicado **bajo un mensaje que hablaba de otra cosa** — y con
él se perdió **la explicación que esa sesión estaba escribiendo en su propio mensaje**, que era lo
valioso. ⭐ **Y el asunto de ese commit era, literalmente, «en este árbol git no distingue
sesiones», con un cuerpo que decía que un commit ajeno bajo un mensaje ajeno borra la única
atribución que existe.** Lo cometió **mientras lo escribía**. Su propia puerta imprimió
`ficheros=3` habiendo nombrado 2 — y no paró: cara (c) y cara (d) a la vez.)*
**El gesto que falta NO es «no uses `git add -A`»** —no se usó— **sino: si te llevaste algo
ajeno, DILO EN EL MENSAJE.** Es lo único que devuelve la atribución cuando `git` no distingue
sesiones, y **cuesta una línea**.
⇒ Y el sub-raíl operativo: **`git status --porcelain` ANTES de tu primer `git add`**. Si hay algo
*staged* que no es tuyo, **no es tuyo el índice**: o esperas, o lo declaras.
- La **representación en disco es parte del artefacto**: cuando un hash o un runtime consume el
checkout, se fija con el repo — **eol** por `.gitattributes` y **bit de ejecución** — o el testigo
mide el checkout, no el contenido (una DERIVA falsa en un clone sin tocar entrena a ignorar el