diff --git a/.metodo/CHECKSUMS b/.metodo/CHECKSUMS index 06db685..d53ad5d 100644 --- a/.metodo/CHECKSUMS +++ b/.metodo/CHECKSUMS @@ -1,4 +1,4 @@ -90bd7d9feb0ebf513cf60e292436dc90653e42e31a41b4ff115eaf93cd0c480a metodo.md +411e75dd254ed1555a6091cf9c99ee15c889b320707fcf9caabd11d7cffc9082 metodo.md fb7e88324524184b9f685c49c0bbcc6c9a55beb07bb5c0b1b31cd29c51c4117f bin/metodo f89b71bdf31028b05075636c1763c964e379bc37a00e0357d1c23a4dd19c09aa workflows/README.md cc241bbecf9647c747b8525b3a6b527455cd50ca0312caa44bc3544342c8ac41 workflows/comunicacion-entre-sesiones.md diff --git a/.metodo/metodo.md b/.metodo/metodo.md index 05e771b..10bb444 100644 --- a/.metodo/metodo.md +++ b/.metodo/metodo.md @@ -2093,8 +2093,15 @@ pega tal cual. - **Git canónico único y MEDIDO**: se empuja a un remoto y solo ahí; un fallo se **mide** (dry-run/reintento) antes de concluir "no hay credenciales"; el remoto muerto se elimina localmente. - **Commits Conventional** (`feat/fix/docs/ci` + scope); el `doc:` registra el **porqué**. -- **Working-tree compartido**: `git add` con ruta explícita (**nunca `-A`**), `git pull` antes de - deploy y antes de commitear docs, una tarea = una sesión/worktree. +- **Working-tree compartido**: `git add` con ruta explícita (**nunca `-A`**) y, mejor, + **`git commit -- `**, que ignora el índice para todo lo demás; una tarea = una sesión. + ⛔ **Y `git pull` NO es parte de esto**: entre sesiones **de esta máquina** es un **no-op** — + comparten árbol e índice, ver el cuarto filo de `§9`— y creerlo una protección **es el modelo + equivocado**. Donde **sí** hace falta es contra el **remoto**, cuando ha podido empujar **otra + máquina o una persona**. *(Los dos casos, el 2026-09-02: un satélite midió que su `pull` no traía + nada porque ya lo tenía; y `MOT` rechazó un `push` porque **un compañero había empujado tres + commits** desde otro sitio.)* ⇒ **Distingue de quién te estás sincronizando**: de otra sesión, no + hay nada que traer; de otra máquina, sí. - ⛔ **QUIÉN EMPUJA: el `push` es un acto de ÁMBITO, no un acto sobre tus commits** *(Xavier, 2026-08-29)*. **Un `push` publica todo lo que hay entre el remoto y tu HEAD, lo haya puesto quien lo haya puesto** — así que el permiso no se decide por quién escribió el commit, sino por **de @@ -2214,8 +2221,13 @@ pega tal cual. ⇒ **El gesto que falta NO es «no uses `git add -A`»** —no se usó— **sino: si te llevaste algo ajeno, DILO EN EL MENSAJE.** Es lo único que devuelve la atribución cuando `git` no distingue 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 el sub-raíl operativo, **con su límite dicho, que es la mitad que faltaba**: `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. ⛔ **Pero sólo ve lo que YA ESTABA cuando empezaste** — una + escritura ajena que entra **después** de tu `add` **no la caza**, y hoy se usaba como si bastara. + ⇒ **La que cubre esa ventana es `git diff --cached --name-only` INMEDIATAMENTE antes de commitear**, + leída por ojos y **no encadenada con `&&`** a lo que viene detrás. **Las dos no son redundantes: + cubren ventanas distintas.** ⛔ **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