chore(metodo): cuatro filos del working tree compartido

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) <noreply@anthropic.com>
This commit is contained in:
sirxavor 2026-08-31 18:12:13 +02:00
parent 1e6eeb2fd9
commit b1301bbc91
2 changed files with 50 additions and 1 deletions

View File

@ -1,4 +1,4 @@
a887b492ea9c1b760172bd25ea4d1a79cb9f4f096b5115b45712916ce774623d metodo.md fd01f9f41dfbe394fcf94dbda8f9fcaf35bae1368755b7e9c47a9c9c1d35f1ec metodo.md
c8b7746c26471b6b041abbea1583d2bf6e5b13020df63ca1b9503fa0b4757ec3 bin/metodo c8b7746c26471b6b041abbea1583d2bf6e5b13020df63ca1b9503fa0b4757ec3 bin/metodo
f89b71bdf31028b05075636c1763c964e379bc37a00e0357d1c23a4dd19c09aa workflows/README.md f89b71bdf31028b05075636c1763c964e379bc37a00e0357d1c23a4dd19c09aa workflows/README.md
cc241bbecf9647c747b8525b3a6b527455cd50ca0312caa44bc3544342c8ac41 workflows/comunicacion-entre-sesiones.md cc241bbecf9647c747b8525b3a6b527455cd50ca0312caa44bc3544342c8ac41 workflows/comunicacion-entre-sesiones.md

View File

@ -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 **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 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 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**. sesiones, y **cuesta una línea**.
⇒ Y el sub-raíl operativo: **`git status --porcelain` ANTES de tu primer `git add`**. Si hay algo ⇒ 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. *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 - 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 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 mide el checkout, no el contenido (una DERIVA falsa en un clone sin tocar entrena a ignorar el