chore(metodo): gate del reparto — la matriz avisa si lo editado no ha viajado
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
7be163a03c
commit
8a24fb5fdb
@ -1,5 +1,5 @@
|
|||||||
fe3263dd8d8dde7173757d0308246942dd0bdf40a743f6ad832ee946375bc722 metodo.md
|
fe3263dd8d8dde7173757d0308246942dd0bdf40a743f6ad832ee946375bc722 metodo.md
|
||||||
50b430881762d9af218fe9de0deb48b0d7c87a9e2a8bbe6620b2ee16e959cd3d bin/metodo
|
420e223b19e57a84181bfd5585ab4b63e3c7ec6df637930b51efb6d12f43d127 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
|
||||||
|
|||||||
@ -94,6 +94,28 @@ info() { printf ' \033[36minfo\033[0m %s\n' "$*"; } # censo, NO veredicto: no
|
|||||||
# contando celdas a mano. ⚠️ Y el contador tiene su propia trampa, pagada al escribirlo:
|
# contando celdas a mano. ⚠️ Y el contador tiene su propia trampa, pagada al escribirlo:
|
||||||
# `awk -F'|'` NO distingue `\|` de `|`, así que decía «sigue rota» sobre una fila ya arreglada.
|
# `awk -F'|'` NO distingue `\|` de `|`, así que decía «sigue rota» sobre una fila ya arreglada.
|
||||||
# Se cuentan pipes NO precedidos por barra invertida, carácter a carácter. Sin atajos.
|
# Se cuentan pipes NO precedidos por barra invertida, carácter a carácter. Sin atajos.
|
||||||
|
# ⛔ Gate del REPARTO (2026-08-31). Decidible sin adivinar ⇒ se ata. Nace de una ventana real:
|
||||||
|
# tres raíles entraron a la matriz y NO se repartieron, así que la copia sellada de los 27 repos
|
||||||
|
# iba por detrás — y un puntero a `.metodo/metodo.md` apuntaba a un sitio donde el raíl no estaba.
|
||||||
|
# ⭐ Y eso es el propio raíl de §6 en su forma más pura: escrito, correcto, e invisible desde donde
|
||||||
|
# se usa. Un puntero roto NO avisa: no encuentras lo que buscabas y concluyes que no existe.
|
||||||
|
# `update` sella aquí lo que reparte; `check` compara. Sólo aplica a la MATRIZ.
|
||||||
|
_huella_reparto() { { tr -d '\r' < "$SELF_ROOT/metodo.md"; tr -d '\r' < "$SELF_ROOT/bin/metodo"; } | md5sum | cut -d' ' -f1; }
|
||||||
|
check_reparto_al_dia() {
|
||||||
|
_is_matriz || return 0
|
||||||
|
hdr "la matriz está repartida (lo editado ha viajado)"
|
||||||
|
local sello ahora
|
||||||
|
sello=$(cat "$SELF_ROOT/.metodo/ULTIMO-REPARTO" 2>/dev/null)
|
||||||
|
ahora=$(_huella_reparto)
|
||||||
|
if [ -z "$sello" ]; then
|
||||||
|
info "sin sello de reparto todavía — se escribe en el próximo 'metodo update'"
|
||||||
|
elif [ "$sello" = "$ahora" ]; then
|
||||||
|
ok "lo que hay en la matriz es lo que se repartió"
|
||||||
|
else
|
||||||
|
bad "la MATRIZ ha cambiado desde el último reparto — corre 'metodo update' en los clientes, o su copia sellada (y cualquier puntero a ella) va por detrás"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
check_semaforo_forma() {
|
check_semaforo_forma() {
|
||||||
local f="$ROOT/workflows/sesiones-activas.md"
|
local f="$ROOT/workflows/sesiones-activas.md"
|
||||||
[ -f "$f" ] || return 0
|
[ -f "$f" ] || return 0
|
||||||
@ -887,6 +909,7 @@ EOF
|
|||||||
_stamp_gitattributes "$tgt"
|
_stamp_gitattributes "$tgt"
|
||||||
_ga_verifica "$tgt"
|
_ga_verifica "$tgt"
|
||||||
_stamp_pointer "$tgt"
|
_stamp_pointer "$tgt"
|
||||||
|
_is_matriz && _huella_reparto > "$SELF_ROOT/.metodo/ULTIMO-REPARTO"
|
||||||
echo "metodo init: $tgt inicializado — .metodo/ (máster $mver) + doc/ de CUATRO capas (backlog · decisiones · AVISOS · bitácora)."
|
echo "metodo init: $tgt inicializado — .metodo/ (máster $mver) + doc/ de CUATRO capas (backlog · decisiones · AVISOS · bitácora)."
|
||||||
echo " siguiente: siembra doc/backlog.md con el trabajo abierto de hoy y corre 'metodo check .'"
|
echo " siguiente: siembra doc/backlog.md con el trabajo abierto de hoy y corre 'metodo check .'"
|
||||||
}
|
}
|
||||||
@ -929,6 +952,7 @@ cmd_update() {
|
|||||||
_stamp_gitattributes "$tgt"
|
_stamp_gitattributes "$tgt"
|
||||||
_ga_verifica "$tgt"
|
_ga_verifica "$tgt"
|
||||||
_stamp_pointer "$tgt"
|
_stamp_pointer "$tgt"
|
||||||
|
_is_matriz && _huella_reparto > "$SELF_ROOT/.metodo/ULTIMO-REPARTO"
|
||||||
# Un destino SIN git recibe la copia igual, pero esa copia no tiene historial ni
|
# Un destino SIN git recibe la copia igual, pero esa copia no tiene historial ni
|
||||||
# marcha atrás. ⚠️ NO se afirma que «no tenga dueño»: eso es una INFERENCIA y el update no puede
|
# marcha atrás. ⚠️ NO se afirma que «no tenga dueño»: eso es una INFERENCIA y el update no puede
|
||||||
# medirla — una carpeta a medias suele ser una PAUSA de su dueño, no un defecto. Se ve, y ya.
|
# medirla — una carpeta a medias suele ser una PAUSA de su dueño, no un defecto. Se ve, y ya.
|
||||||
@ -951,6 +975,7 @@ cmd_check() {
|
|||||||
printf 'metodo check — %s\n' "$ROOT"
|
printf 'metodo check — %s\n' "$ROOT"
|
||||||
check_drift
|
check_drift
|
||||||
check_apendices_no_viajan
|
check_apendices_no_viajan
|
||||||
|
check_reparto_al_dia
|
||||||
check_semaforo_forma
|
check_semaforo_forma
|
||||||
check_semaforo_en_vuelo
|
check_semaforo_en_vuelo
|
||||||
check_ids
|
check_ids
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user