From ff249777130d84a946954810178d729339cc9bfd Mon Sep 17 00:00:00 2001 From: sirxavor Date: Wed, 2 Sep 2026 13:04:54 +0200 Subject: [PATCH] =?UTF-8?q?chore(metodo):=20reparto=20=E2=80=94=20C26=20ya?= =?UTF-8?q?=20lee=20EXCEPCIONES=20(valvula=20que=20le=20faltaba)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit C26 nacio sin la consulta a .metodo/EXCEPCIONES que C25 tiene desde el 29-ago: el primero que empujara un commit sin trailer dejaba su repo en rojo permanente. Lo encontro poniente en carne propia. Y la correccion obvia (copiar las dos lineas de C25) no habria valido: el sha de C26 es LARGO y el de C25 CORTO, asi que la consulta copiada no casa nunca y deja el gate rojo en silencio. Se compara por prefijo. Solo .metodo/ — byte a byte desde la matriz. Sesion: superadmin Co-Authored-By: Claude Opus 5 --- .metodo/CHECKSUMS | 2 +- .metodo/bin/metodo | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/.metodo/CHECKSUMS b/.metodo/CHECKSUMS index c3f1b06..7fefb05 100644 --- a/.metodo/CHECKSUMS +++ b/.metodo/CHECKSUMS @@ -1,5 +1,5 @@ 4cc8cf392fa0d4811058bf2013137f082c53e195ff5200d21d4992a7493e66c8 metodo.md -de8ecd52846a0b0e6bf8a83b983116e3b9796a57fe7e6b4931b2b79978f8b48c bin/metodo +fb7e88324524184b9f685c49c0bbcc6c9a55beb07bb5c0b1b31cd29c51c4117f 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 37f47f2..1b13f8a 100644 --- a/.metodo/bin/metodo +++ b/.metodo/bin/metodo @@ -127,7 +127,7 @@ check_sesion_trailer() { desde=$(grep -E '^sesion_desde:' "$md/VERSION" 2>/dev/null | sed 's/sesion_desde:[[:space:]]*//') [ -n "$desde" ] || { info "sin punto de adopción todavía — se sella en el próximo 'metodo update'"; return 0; } git -C "$ROOT" cat-file -e "$desde^{commit}" 2>/dev/null || { skip "el punto de adopción $desde no existe en este repo"; return 0; } - n=0; mal=0 + n=0; mal=0; local exc=0 excf="$ROOT/.metodo/EXCEPCIONES" # ⛔ Un punto de adopción por SHA NO acota en una historia DIVERGENTE: `X..HEAD` incluye # todo lo no alcanzable desde X — incluido trabajo ANTERIOR a X hecho en otra rama, que # entra al hacer merge. Medido: un repo con 14 commits ajenos por delante quedó con esos @@ -142,10 +142,15 @@ check_sesion_trailer() { [ -n "$_fecha" ] && [ "$(git -C "$ROOT" log -1 --format=%ct "$sha")" -lt "$_fecha" ] && continue n=$((n+1)) git -C "$ROOT" log -1 --format='%B' "$sha" | grep -qE '^Sesion:[[:space:]]*\S' || { + # ⛔ El sha de C26 viene de `rev-list` y es LARGO; el de C25 de `--format=%h` y es CORTO. + # Copiar la consulta de C25 tal cual NO casa NUNCA y el gate se queda rojo en silencio. + # ⇒ se compara por PREFIJO (>=7) para admitir las dos formas. Medido con control negativo. + if [ -f "$excf" ] && awk -v s="$sha" '$1=="C26" && length($2)>=7 && index(s,$2)==1 {f=1} END{exit !f}' "$excf"; then exc=$((exc+1)); continue; fi bad "commit sin 'Sesion:' — $(git -C "$ROOT" log -1 --format='%h %s' "$sha" | cut -c1-60) (C26) — si lo hiciste A MANO, vale 'Sesion: xavier'; si aún no está empujado, un 'git commit --amend' sobre TU commit lo cierra sin excepciones"; mal=$((mal+1)); } done </dev/null) EOF + [ "$exc" -gt 0 ] && warn "C26: ${exc} commit(s) con EXCEPCIÓN DECLARADA en .metodo/EXCEPCIONES (historia ya empujada; NO perdona lo que venga después)" [ "$mal" -eq 0 ] && ok "$n commit(s) desde la adopción, todos dicen quién los hizo" }