From 2b6b69ee29ae471a061493b932c13e31e4a76684 Mon Sep 17 00:00:00 2001 From: sirxavor Date: Sun, 30 Aug 2026 17:34:04 +0200 Subject: [PATCH] chore(metodo): el indice tambien es compartido, y el gate arreglado MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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) --- .metodo/CHECKSUMS | 4 ++-- .metodo/bin/metodo | 13 +++++++++---- .metodo/metodo.md | 16 ++++++++++++++++ 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/.metodo/CHECKSUMS b/.metodo/CHECKSUMS index e6244de..355ab25 100644 --- a/.metodo/CHECKSUMS +++ b/.metodo/CHECKSUMS @@ -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 diff --git a/.metodo/bin/metodo b/.metodo/bin/metodo index 61a9121..a2847f7 100644 --- a/.metodo/bin/metodo +++ b/.metodo/bin/metodo @@ -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() { diff --git a/.metodo/metodo.md b/.metodo/metodo.md index 156005d..e873463 100644 --- a/.metodo/metodo.md +++ b/.metodo/metodo.md @@ -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 ` **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