From b1301bbc911b9dbf750654d841b56ca0de9ee615 Mon Sep 17 00:00:00 2001 From: sirxavor Date: Mon, 31 Aug 2026 18:12:13 +0200 Subject: [PATCH] chore(metodo): cuatro filos del working tree compartido MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit El indice te hace arrastrar lo ajeno; --amend te hace reescribirlo; y git status NO ve los commits sin empujar — son dos comprobaciones y ninguna implica a la otra. Co-Authored-By: Claude Opus 5 (1M context) --- .metodo/CHECKSUMS | 2 +- .metodo/metodo.md | 49 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 1 deletion(-) diff --git a/.metodo/CHECKSUMS b/.metodo/CHECKSUMS index 57a08aa..0fd4ba0 100644 --- a/.metodo/CHECKSUMS +++ b/.metodo/CHECKSUMS @@ -1,4 +1,4 @@ -a887b492ea9c1b760172bd25ea4d1a79cb9f4f096b5115b45712916ce774623d metodo.md +fd01f9f41dfbe394fcf94dbda8f9fcaf35bae1368755b7e9c47a9c9c1d35f1ec metodo.md c8b7746c26471b6b041abbea1583d2bf6e5b13020df63ca1b9503fa0b4757ec3 bin/metodo f89b71bdf31028b05075636c1763c964e379bc37a00e0357d1c23a4dd19c09aa workflows/README.md cc241bbecf9647c747b8525b3a6b527455cd50ca0312caa44bc3544342c8ac41 workflows/comunicacion-entre-sesiones.md diff --git a/.metodo/metodo.md b/.metodo/metodo.md index 33ea572..5c658a6 100644 --- a/.metodo/metodo.md +++ b/.metodo/metodo.md @@ -908,6 +908,34 @@ correcto** — lo que está mal es **a quién, o desde cuándo, se refiere**. + +⛔ **UN ARTEFACTO QUE DEBE REFLEJAR EL TRABAJO Y NO ESTÁ EN EL RITUAL DE CIERRE DEJA DE CRECER AL +RITMO DEL TRABAJO — EN SILENCIO.** No se rompe, no avisa: simplemente **se queda en la fecha del +último día en que alguien se acordó**. +*(Medido 2026-08-31: en un frente que entrega a un tercero, el entregable tenía medidas de las +familias construidas **hasta el 27-ago y ninguna posterior**. **No eran diez olvidos**: una familia se +daba por cerrada cuando el rol la aplicaba y el auditor la veía verde, y **el entregable no estaba en +ese ciclo** ⇒ cada familia nueva abría un hueco nuevo. Y en el mismo día, otro frente: la mitad de una +tarea **construida** y **su backlog sin saberlo**.)* +⇒ **El gesto que lo cierra es nominal y decidible**: algo **no está cerrado hasta que declara qué ha +producido aguas abajo**, y **lo declarado se cuenta e imprime**. Una unidad cerrada que **no declara +nada, enrojece**. +⚠️ **Y lo que ese gate NO puede hacer, dicho por delante**: **comprobar que lo declarado diga la +verdad**. Eso lo hace una persona leyendo — *medido: los dos automatismos que se probaron **mienten en +direcciones opuestas**, uno sobre-reporta y otro sub-reporta*. ⇒ Se ata **que exista la declaración**, +no que sea cierta, **y se dice**. + +⛔⛔ **Y LA ASIMETRÍA QUE LO EXPLICA: EL CORPUS ES BUENO REGISTRANDO PROBLEMAS Y MALO REGISTRANDO QUE +SE RESOLVIERON.** Escribir un problema **está motivado** —duele, molesta, bloquea—; escribir que se +arregló **no lo está**, porque el dolor ya paró. ⇒ **Lo que se queda rancio no es lo que empeoró: es +lo que MEJORÓ.** +*(Medido el mismo día, en tres frentes y en el propio gobierno del árbol: un aviso decía que un banco +vivía en un scratchpad **del que ya había salido**; un pendiente declaraba certificados RSA que +**llevaban dos días siendo ECDSA**; y cuatro premisas del corpus raíz quedaron falsas **el día que el +árbol pasó a ser un repo git** — las cuatro por una mejora, ninguna por un fallo.)* +⛔ **Y en un entregable eso es peor de lo que suena: un pendiente rancio es una DEBILIDAD DECLARADA QUE +NO EXISTE**, e invita a quien lo lea a hurgar en algo ya resuelto. ⇒ **Al cerrar algo, la pregunta no +es sólo «¿lo apunto?», es «¿qué documento afirma hoy un problema que acabo de quitar?»** ⛔ **UN INCREMENTO SIN DECLARAR ES INDISTINGUIBLE DE UNA DERIVA.** Un repo puede necesitar documentos que el Método no prevé —nacen de **lo que ese frente entrega**, y eso no se deduce del Método—; pero si no están declarados en ningún sitio, **quien mire ese corpus mañana no puede saber si es «tiene un @@ -1857,6 +1885,27 @@ pega tal cual. 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. + ⛔ **Y UN CUARTO, QUE ES DE OTRA COMPROBACIÓN: `git status` NO VE LOS COMMITS SIN EMPUJAR.** Son + **dos gestos distintos y ninguno implica al otro** — `git status --porcelain` dice **qué me llevo + DENTRO del commit**; `git log origin/main..HEAD` dice **qué PUBLICO con él**. Correr el primero y + dar por hecho el segundo es publicar trabajo ajeno **con el índice limpio**. + *(Cicatriz 2026-08-31: una sesión corre la puerta del índice —limpia— y empuja **un solo fichero + suyo**… publicando de paso **tres commits de otra sesión** que esperaban entre el remoto y `HEAD`. + Su diagnóstico, que es el raíl: **lo dio por hecho porque veinte minutos antes estaba a cero** — y + **un árbol compartido cambia por debajo entre dos pushes tuyos**, porque el otro **está trabajando**, + que es lo normal y no la excepción.)* + ⛔⛔ **Y HAY UN TERCER FILO, EL PEOR DE LOS TRES: `git commit --amend` EN UN WORKING TREE COMPARTIDO + REESCRIBE EL COMMIT DE OTRA SESIÓN.** El índice compartido te hace **arrastrar** lo ajeno; el + `--amend` te hace **borrar y rehacer** lo ajeno — y encima lo firma con tu contenido dentro y su + mensaje fuera. + *(Cicatriz 2026-08-31: se commitea, otra sesión commitea y empuja **en el mismo working tree**, y un + `--amend --no-edit` posterior **no amplía el commit propio: reescribe el suyo**, añadiéndole un + fichero ajeno a su cambio. El `push` sale rechazado por no-fast-forward, que es **la única razón por + la que se vio**. Sin ese rechazo, la reescritura se habría publicado.)* + ⇒ **Regla: en un working tree compartido, `--amend` sólo sobre un commit que sabes que es tuyo Y que + no ha salido** — y saberlo exige **mirar `git log -1` antes**, no suponer que HEAD es lo último que + escribiste tú. ⛔ **Y el rechazo del `push` NO se resuelve forzando**: se resuelve con + `git reset --soft @{u}` y recommiteando **lo tuyo solo**, que deja el commit ajeno intacto. - 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