tres arreglos que pidió el agente de adentro, y uno era mío

1) `publicar-webs.sh` corría como root y hacía el `git pull` igual: git dejó 24 entradas de root
dentro del .git de /work/sergio/tawasuyu —refs, logs, config, directorios de objetos— y el dueño se
quedó sin poder ni hacer `fetch` («unable to append to .git/logs/refs/remotes/origin/main»). El clon
quedó congelado 21 commits atrás sin que nada fallara del lado de root. Ahora el pull va COMO EL
DUEÑO, y los cuatro clones quedaron con sus permisos.

2) `cc-por-zig.sh` elegía el rust con `ls -d …/*-rust | tail -1`, que es el último ALFABÉTICO:
certificaba `fe277b32…` mientras la jaula usaba el vigente `6441302d…`. Dos artefactos distintos, uno
certificado y otro en uso. Ahora pregunta por el hash vigente de la receta y sólo cae al más reciente
—con el nombre exacto— si no puede. Lo detectó el agente comparando los dos guiones.

3) `rustdoc` entra en `tools`: el artefacto salía con cargo y rustc y SIN rustdoc, o sea que en una
caja takana `cargo doc` no existe. `docs = false` se queda —la documentación de la std es otra
decisión, cientos de MB—. Radio medido: 0 dependientes de build.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Sergio
2026-09-18 19:34:08 +00:00
co-authored by Claude Opus 5
parent 67f601305b
commit 2f9253886f
3 changed files with 30 additions and 3 deletions
+8 -1
View File
@@ -31,7 +31,14 @@ tirar() { # $1 = clon
# ⚠ Sólo avance rápido: si alguien dejó cambios locales en el clon que sirve la web, esto NO los
# pisa — se queja y sigue. Un `git pull` que rebasa sobre un árbol servido es cómo se rompe un
# sitio en producción sin enterarse.
if git -C "$1" pull -q --ff-only 2>/dev/null; then
# ⚠ COMO EL DUEÑO, NO COMO ROOT (2026-09-18). Este guion corre como root y hacía el `pull` igual:
# git dejó 24 entradas de root dentro del `.git` de /work/sergio/tawasuyu —refs, logs, config,
# directorios de objetos— y el dueño se quedó sin poder ni hacer `fetch`: «unable to append to
# .git/logs/refs/remotes/origin/main». El clon quedó congelado 21 commits atrás sin que nada
# fallara del lado de root. Lo reportó el agente que trabaja ahí.
duenio=$(stat -c %U "$1" 2>/dev/null || echo root)
if [ "$duenio" != "root" ] && [ "$(id -u)" = "0" ]; then tira="su $duenio -s /bin/sh -c"; else tira="sh -c"; fi
if $tira "git -C '$1' pull -q --ff-only" 2>/dev/null; then
ahora=$(git -C "$1" rev-parse --short HEAD)
[ "$antes" = "$ahora" ] && echo " = $1 ya estaba al día ($ahora)" || echo "$1 $antes$ahora"
else