docs(metodo): máster 2026-08-29 (6) — raíles de la purga, la frontera del texto y el push por ámbito
Re-estampado. Cambios del máster desde el reparto anterior: - Entrega/Git: el límite del `git add` con ruta explícita (no protege si el cambio ajeno está en el mismo fichero) · medir dos veces caza el arrastre. - §7: el veredicto va en la PRIMERA PALABRA del campo · un `id` es ancla débil, discrimina una cifra · la frontera «no ejecutes, delega» falla con el TEXTO, y el criterio que sí para es «¿esto tiene un tipo de sesión propio?». Sólo se toca .metodo/. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
89504a3a31
commit
801394335d
@ -1,2 +1,2 @@
|
|||||||
4cef3371e4ec9258933baf34cc23ee757542631a3e36c899f3bb9808ea8b3f3b metodo.md
|
847436a4133ca8287d75a493a1ca363670c632a6c219f3628db9ade82274731a metodo.md
|
||||||
3b35cfedfe36441d5c2b9b8e543657119a76daaebf6b317bcc4918b2cb7ca9b7 bin/metodo
|
ca4a7a3ab4e9db733fa8cd7a11d678531233e475bcf1ff229498ea4518a4b5d7 bin/metodo
|
||||||
|
|||||||
@ -290,11 +290,36 @@ check_commits() {
|
|||||||
# verde entrena a ignorar los rojos (`D107`, misma razón que lo puso verde por primera vez).
|
# verde entrena a ignorar los rojos (`D107`, misma razón que lo puso verde por primera vez).
|
||||||
# ⛔ Lo que NO se hizo: mover `adopted_commit` hacia delante para callarlo. Eso es editar la
|
# ⛔ Lo que NO se hizo: mover `adopted_commit` hacia delante para callarlo. Eso es editar la
|
||||||
# declaración hasta que la alerta calle (§1), y además perdona todo lo que haya en medio.
|
# declaración hasta que la alerta calle (§1), y además perdona todo lo que haya en medio.
|
||||||
while IFS= read -r s; do
|
# ── EXCEPCIONES DECLARADAS (2026-08-29, Xavier) ────────────────────────────
|
||||||
printf '%s' "$s" | grep -qE '^(feat|fix|docs|ci|refactor|test|chore|build|perf|semaforo|semáforo)(\(.+\))?!?: .' \
|
# El problema que resuelven, medido: el PRIMERO que rompe C25 con historia YA EMPUJADA condena su
|
||||||
|| { bad "commit no-Conventional: \"$s\" (C25)"; bad_c=$((bad_c+1)); }
|
# repo a rojo permanente — reescribir está descartado (los shas se citan en corpus de OTROS
|
||||||
done < <(git -C "$ROOT" log --format=%s $range 2>/dev/null)
|
# frentes y hay commits encima) y mover `adopted_commit` está prohibido (§1: editar la declaración
|
||||||
[ "$bad_c" -eq 0 ] && ok "los ${n} commit(s) desde la adopción siguen Conventional"
|
# hasta que la alerta calle). A partir de ahí `metodo check` deja de significar nada en ese repo,
|
||||||
|
# y ÉSE es el daño, no los commits.
|
||||||
|
# ⚠️ Y no vale ensanchar la gramática como con `semaforo:`: aquello era un TIPO legítimo y
|
||||||
|
# recurrente; un mensaje mal escrito es un ERROR, y para el error no había salida ninguna.
|
||||||
|
# ⇒ Se admite excepción, pero **DECLARADA**, con las cuatro propiedades que la separan de callar:
|
||||||
|
# (1) NOMINAL, por sha exacto y uno por línea: no hay rangos ni patrones, así que no se puede
|
||||||
|
# "declarar de más" sin escribir cada caso a mano.
|
||||||
|
# (2) FECHADA Y MOTIVADA: la línea dice cuándo y por qué no se puede arreglar.
|
||||||
|
# (3) VISIBLE: se CUENTAN y se IMPRIMEN siempre. El gate no dice «pasa» a secas, dice con
|
||||||
|
# cuántas excepciones pasa — el coste se sigue viendo; lo que desaparece es el ruido eterno.
|
||||||
|
# (4) NO PERDONA EL FUTURO: sólo silencia los shas escritos. Ésa es la diferencia con mover el
|
||||||
|
# sello, que además perdona todo lo que haya en medio. Probado con control negativo.
|
||||||
|
# Formato de `.metodo/EXCEPCIONES` (del repo; NO se vendoriza — cada uno lleva las suyas):
|
||||||
|
# C25 <sha> <AAAA-MM-DD> <motivo en una línea>
|
||||||
|
local excf="$ROOT/.metodo/EXCEPCIONES" exc_c=0 sha subj
|
||||||
|
while IFS=$'\t' read -r sha subj; do
|
||||||
|
[ -n "$sha" ] || continue
|
||||||
|
printf '%s' "$subj" | grep -qE '^(feat|fix|docs|ci|refactor|test|chore|build|perf|semaforo|semáforo)(\(.+\))?!?: .' && continue
|
||||||
|
if [ -f "$excf" ] && grep -qE "^C25[[:space:]]+${sha}([[:space:]]|$)" "$excf"; then
|
||||||
|
exc_c=$((exc_c+1)); continue
|
||||||
|
fi
|
||||||
|
bad "commit no-Conventional: \"$subj\" ($sha) (C25) — arréglalo, o decláralo en .metodo/EXCEPCIONES si ya está empujado"
|
||||||
|
bad_c=$((bad_c+1))
|
||||||
|
done < <(git -C "$ROOT" log --format="%h%x09%s" $range 2>/dev/null)
|
||||||
|
[ "$exc_c" -gt 0 ] && warn "C25: ${exc_c} commit(s) con EXCEPCIÓN DECLARADA en .metodo/EXCEPCIONES (historia ya empujada; NO perdona lo que venga después)"
|
||||||
|
[ "$bad_c" -eq 0 ] && ok "los ${n} commit(s) desde la adopción siguen Conventional$([ "$exc_c" -gt 0 ] && printf ' (%s con excepción declarada)' "$exc_c")"
|
||||||
}
|
}
|
||||||
|
|
||||||
# ── Check 6 · el puntero de enrutado existe y RESUELVE (raíl 8) ──────────────
|
# ── Check 6 · el puntero de enrutado existe y RESUELVE (raíl 8) ──────────────
|
||||||
|
|||||||
@ -1085,6 +1085,24 @@ relevo no transmite y lo que un sucesor necesita **en los primeros diez minutos*
|
|||||||
frente lleva, escrito y al día, **cómo se trabaja hoy**: dónde se edita, cómo se aplica, cómo se
|
frente lleva, escrito y al día, **cómo se trabaja hoy**: dónde se edita, cómo se aplica, cómo se
|
||||||
sabe en treinta segundos en qué estado está el banco, y **qué está publicado y qué no**.
|
sabe en treinta segundos en qué estado está el banco, y **qué está publicado y qué no**.
|
||||||
|
|
||||||
|
⛔ **Y LA FRONTERA DE «NO EJECUTES, DELEGA» SE SOSTIENE BIEN PARA MÁQUINAS Y MAL PARA TEXTO.** Ante
|
||||||
|
el hierro la pregunta se hace sola —*¿esto puede romper algo?*—; ante el corpus **no aparece**,
|
||||||
|
porque quien coordina **escribe en él todo el día legítimamente** —avisos, decisiones, bitácora— y
|
||||||
|
una pasada de ordenación **se siente como más de lo mismo**. **No lo es**: reescribe **memoria
|
||||||
|
compartida que leen todas las sesiones**, y por eso su propio procedimiento la declara **única**.
|
||||||
|
*(Cicatriz 2026-08-29: una orquestadora leyó el workflow de ordenación **entero**, tomó las medidas y
|
||||||
|
**empezó a hacerlo ella**. Lo correcto era pedir que se abriera esa sesión y pasarle el encargo. La
|
||||||
|
paró el usuario: «estaba esperando a ver si me sacabas un mensaje para que te abriera una sesión».)*
|
||||||
|
⇒ ⭐ **El criterio que sí para, y no es ninguno de los dos que se usan por instinto**: no es *«¿sé
|
||||||
|
hacerlo?»* ni *«¿es peligroso?»* — es **«¿esto tiene un TIPO DE SESIÓN PROPIO?»**. Si lo tiene, **se
|
||||||
|
delega aunque sea texto, aunque sea barato y aunque sepas hacerlo**.
|
||||||
|
⇒ ⛔ **Y el mecanismo del fallo, que es lo transferible**: **un documento que describe un TIPO DE
|
||||||
|
SESIÓN se lee como un MÉTODO que aplicar uno mismo.** Son las dos cosas a la vez —describen la sesión
|
||||||
|
*y* contienen su método— y **nada en el texto obliga a decidir qué lectura estás haciendo**: un
|
||||||
|
método **invita a ejecutarlo**, un tipo de sesión **invita a delegarlo**, y el mismo fichero produce
|
||||||
|
las dos conductas. ⇒ Por eso un documento así **lo dice en su primera línea**: *«esto lo hace una
|
||||||
|
sesión propia; si lo estás leyendo y no eres ella, tu trabajo es escribir su encargo»*.
|
||||||
|
|
||||||
⛔ **Y LA UNIDAD DE MEDIDA DEL CORPUS ES EL TOKEN, NO LA LÍNEA** *(Xavier, 2026-08-29)*. Contar
|
⛔ **Y LA UNIDAD DE MEDIDA DEL CORPUS ES EL TOKEN, NO LA LÍNEA** *(Xavier, 2026-08-29)*. Contar
|
||||||
líneas **hace invisible el problema real**: una línea de **8.196 caracteres** y una de **70** cuentan
|
líneas **hace invisible el problema real**: una línea de **8.196 caracteres** y una de **70** cuentan
|
||||||
igual, y en los corpus de este árbol **eso no es una anomalía, es la norma** — un `AVISOS.md` con
|
igual, y en los corpus de este árbol **eso no es una anomalía, es la norma** — un `AVISOS.md` con
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user