takana etapa 3b: las 49 invocaciones pasan a ./target/release/takana
Los llamadores EJECUTABLES: scripts/ (incluida toda la granja), los runbooks y CLAUDE.md. Seguro porque la 3a ya garantiza que el worker emite los dos binarios, y porque en farm-lab-sync.sh el cargo build remoto precede a la invocación remota en el mismo script. Verificado: sintaxis de los 49 (bash -n / py_compile — ojo que why-differs-barrido.sh es Python con extensión .sh) y `takana hash` devuelve hash real sobre el store. NO se toca en esta etapa, a propósito: - La variable de entorno HAMMER=. Es interfaz de los scripts entre sí y hay llamadores que la fijan; renombrarla va con la etapa 4. - docs/evidencia/ y los HANDOFF: son REGISTRO de lo que se corrió ese día. Reescribir un comando dentro de una evidencia la falsifica. - docs/state/: es generado, se regenera solo. - Los ADR y los docs de diseño: texto, y `hammer` sigue funcionando. Van con la etapa 5, que es la de churn de texto.
Semántico sayk'uy
Mana ima sutichaypas t'ikrakurqanchu: qillqalla, yachachiylla utaq willaylla t'ikrakurqan.
49 qillqakuna · +64 −64
- CLAUDE.md +2 −2
- docs/runbooks/armador-de-kernel.md +1 −1
- docs/runbooks/cosmic-desktop.md +2 −2
- docs/runbooks/stage1-vm-boot.md +2 −2
- scripts/atuq-nested.sh +1 −1
- scripts/build-farm.sh +1 −1
- scripts/build-state.py +2 −2
- scripts/consenso.sh +1 −1
- scripts/cosmic/cosmic-nested.sh +1 −1
- scripts/cosmic/hydrate-cosmic.sh +1 −1
- scripts/cosmic/metal-desktop-image.sh +1 −1
- scripts/cosmic/qemu-desktop-image.sh +1 −1
- scripts/farm/build-timed.sh +1 −1
- scripts/farm/campana-deuda.sh +1 −1
- scripts/farm/cosecha-cron.sh +1 −1
- scripts/farm/farm-lab-sync.sh +2 −2
- scripts/farm/farm-worker-loop.sh +1 −1
- scripts/farm/harkaq-campana-vol.sh +2 −2
- scripts/farm/harkaq-campana.sh +4 −4
- scripts/farm/harvest-go.sh +2 −2
- scripts/farm/saldar-deuda-static.sh +2 −2
- scripts/farm/vps-setup.sh +1 −1
- scripts/fuentes/mirror-env.sh +1 −1
- scripts/gnome/hydrate-gnome.sh +1 −1
- scripts/gnome/qemu-desktop-image.sh +2 −2
- scripts/harkaq/harkaq-trace-build.sh +2 −2
- scripts/hydrate-profile.py +1 −1
- scripts/kde/complete-closure.sh +1 −1
- scripts/kde/hydrate-fhs.sh +1 −1
- scripts/kde/hydrate-from-store.sh +1 −1
- scripts/lib/libs-compartidas-desde-store.sh +1 −1
- scripts/lib/pid1-desde-store.sh +2 −2
- scripts/mirada-usb.sh +1 −1
- scripts/product-userland-from-repo.sh +1 −1
- scripts/provee.py +1 −1
- scripts/qorpa/evidence-probe.sh +1 −1
- scripts/qorpa/pressure-vessel-probe.sh +1 −1
- scripts/reconstruir-corpus.sh +1 −1
- scripts/static-audit.sh +1 −1
- scripts/store-gc.sh +2 −2
- scripts/test-atuq-inicio.py +1 −1
- scripts/test-atuq-nativo.py +1 −1
- scripts/test-atuq-rootfs.py +1 −1
- scripts/test-atuq-ruteo.py +1 −1
- scripts/test-guardianes-wasm.sh +1 −1
- scripts/verificar-repro.sh +1 −1
- scripts/vigia-imagen.py +1 −1
- scripts/vigia-sonames.py +1 −1
- scripts/why-differs-barrido.sh +1 −1
diff --git a/CLAUDE.md b/CLAUDE.md
index 90deb40e..81887b0f 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -7,13 +7,13 @@ trabajo de otro sin enterarse. El resto del diseño está en `docs/`.
## 1. Todo `hammer build` va envuelto en `flock`
```sh
-flock work/.farm-build.lock ./target/release/hammer --store ./store build <receta>
+flock work/.farm-build.lock ./target/release/takana --store ./store build <receta>
```
Para una tanda, tomar el lock una sola vez y no por receta:
```sh
-flock work/.farm-build.lock bash -c 'for r in ...; do ./target/release/hammer --store ./store build "$r"; done'
+flock work/.farm-build.lock bash -c 'for r in ...; do ./target/release/takana --store ./store build "$r"; done'
```
**Por qué.** `hammer build` comparte `work/sources/<dep>-<sha>` entre todas las recetas. Dos builds
diff --git a/docs/runbooks/armador-de-kernel.md b/docs/runbooks/armador-de-kernel.md
index 2891a34d..68006d3b 100644
--- a/docs/runbooks/armador-de-kernel.md
+++ b/docs/runbooks/armador-de-kernel.md
@@ -99,7 +99,7 @@ no resuelven. `plan` no escribe en `recipes/` por su cuenta: ese directorio es e
⚠ **Y al construirla, `hammer build` va SIEMPRE bajo el lock compartido:**
```sh
-flock work/.farm-build.lock ./target/release/hammer --store ./store build recipes/linux-derivada.toml
+flock work/.farm-build.lock ./target/release/takana --store ./store build recipes/linux-derivada.toml
```
`hammer build` comparte `work/sources/<dep>-<sha>` entre todas las recetas. Dos builds simultáneos
diff --git a/docs/runbooks/cosmic-desktop.md b/docs/runbooks/cosmic-desktop.md
index b792f254..baaaa44f 100644
--- a/docs/runbooks/cosmic-desktop.md
+++ b/docs/runbooks/cosmic-desktop.md
@@ -352,8 +352,8 @@ cerró hoy en GNOME.
```sh
cd ~/hammer
-./target/release/hammer --store store hash recipes/incoming-cosmic/<pieza>.toml # dry-run, ~2ms
-./target/release/hammer build recipes/incoming-cosmic/<pieza>.toml --store store
+./target/release/takana --store store hash recipes/incoming-cosmic/<pieza>.toml # dry-run, ~2ms
+./target/release/takana build recipes/incoming-cosmic/<pieza>.toml --store store
```
## 🏔 EL ESCRITORIO ENTERO, DIBUJADO (2026-08-04)
diff --git a/docs/runbooks/stage1-vm-boot.md b/docs/runbooks/stage1-vm-boot.md
index f9a1aa19..51e5930e 100644
--- a/docs/runbooks/stage1-vm-boot.md
+++ b/docs/runbooks/stage1-vm-boot.md
@@ -26,7 +26,7 @@
- **Herramientas host**: `qemu-system-x86_64`, un kernel x86_64 (`/boot/vmlinuz-*`), `cpio`, `gzip`.
- **Espacio/tiempo**: construir `arje-zero` vendorea las deps del **monorepo tawasuyu entero** — es
pesado y lento la primera vez (se cachea después).
-- **El binario `hammer`**: `cargo build --release -p hammer-cli` ⇒ `./target/release/hammer`.
+- **El binario `hammer`**: `cargo build --release -p hammer-cli` ⇒ `./target/release/takana`.
> El store debe vivir en la raíz del repo (`./store`) para que `BuildConfig` resuelva
> `.dev-fs/alpine` como hermano (`store/..` = repo root). El toolchain de Stage 1 **no** es el de
@@ -35,7 +35,7 @@
## 2. Stage 0 — ingerir la semilla (zig)
```sh
-export HAMMER=./target/release/hammer
+export HAMMER=./target/release/takana
export STORE=./store
"$HAMMER" --store "$STORE" bootstrap stage0 \
diff --git a/scripts/atuq-nested.sh b/scripts/atuq-nested.sh
index d6371c98..2e0d9f5a 100755
--- a/scripts/atuq-nested.sh
+++ b/scripts/atuq-nested.sh
@@ -16,7 +16,7 @@
# va en la lista de raíces por eso, no por completismo.
set -eu
ROOT="$(cd "$(dirname "$0")/.." && pwd)"; cd "$ROOT"
-H="$ROOT/target/release/hammer"
+H="$ROOT/target/release/takana"
# ── EL ROOTFS VA EN EL MISMO MOUNT QUE EL STORE, Y NO ES UN CAPRICHO ───────────────────────────
# `hydrate` proyecta con HARDLINKS, y `linkat()` rechaza cruzar un punto de montaje aunque los dos
diff --git a/scripts/build-farm.sh b/scripts/build-farm.sh
index 47851bfc..05dfac88 100755
--- a/scripts/build-farm.sh
+++ b/scripts/build-farm.sh
@@ -23,7 +23,7 @@ STORE="${STORE:-./store}"
REPO="${REPO:-$ROOT/dist/repo}"
KEY="${KEY:-$ROOT/dist/keys/release.ed25519}"
DISTRO="${DISTRO:-dev}"
-HAMMER="${HAMMER:-$ROOT/target/release/hammer}"
+HAMMER="${HAMMER:-$ROOT/target/release/takana}"
PROMOTE="${PROMOTE:-1}"
JOBS="${JOBS:-$(( $(nproc) - 2 ))}"; [ "$JOBS" -ge 1 ] || JOBS=1
diff --git a/scripts/build-state.py b/scripts/build-state.py
index 63bf7601..e53c68b5 100755
--- a/scripts/build-state.py
+++ b/scripts/build-state.py
@@ -34,7 +34,7 @@
#
# Uso: scripts/build-state.py # regenera docs/state/build-state.json + resumen
# scripts/build-state.py --check # exit 1 si hay unhashable o deps huérfanas (gate CI)
-# Env: HAMMER (def target/release/hammer), STORE (def ./store).
+# Env: HAMMER (def target/release/takana), STORE (def ./store).
import json, os, subprocess, sys, glob, tomllib
from pathlib import Path
@@ -44,7 +44,7 @@ import yupana # la YUPANA: el motor de dependencias INVERSAS que cruza TODAS la
ROOT = Path(__file__).resolve().parent.parent
os.chdir(ROOT)
-HAMMER = os.environ.get("HAMMER", str(ROOT / "target/release/hammer"))
+HAMMER = os.environ.get("HAMMER", str(ROOT / "target/release/takana"))
STORE = os.environ.get("STORE", str(ROOT / "store"))
CHECK = "--check" in sys.argv
# `--kde`: además del corpus canónico, cubre la cola `recipes/incoming-kde/` (206 recetas del
diff --git a/scripts/consenso.sh b/scripts/consenso.sh
index 556e83b6..513c5dc6 100755
--- a/scripts/consenso.sh
+++ b/scripts/consenso.sh
@@ -57,7 +57,7 @@ while [ "$i" -le "$N" ]; do
--exclude '*.png' --exclude '/content*' ./ "root@$ip:/opt/hammer/" >/dev/null 2>&1
hN=$($SSH "root@$ip" "export PATH=\$HOME/.cargo/bin:\$PATH; cd /opt/hammer && \
cargo build --release -q -p hammer-cli 2>/dev/null; \
- timeout ${POR:-900} ./target/release/hammer build $RECETA --store \$PWD/store 2>/dev/null \
+ timeout ${POR:-900} ./target/release/takana build $RECETA --store \$PWD/store 2>/dev/null \
| grep -oE '^b3:[a-f0-9]{64}' | head -1" 2>/dev/null | tr -d '\r')
echo " → ${hN:-FALLÓ}"
[ -n "$hN" ] && echo "$hN $name" >> "$OUT/$n.hashes"
diff --git a/scripts/cosmic/cosmic-nested.sh b/scripts/cosmic/cosmic-nested.sh
index f711b1d9..a4d7ce03 100755
--- a/scripts/cosmic/cosmic-nested.sh
+++ b/scripts/cosmic/cosmic-nested.sh
@@ -53,7 +53,7 @@ mkdir -p "$OUT"
# GL por software. Se resuelve por HASH VIGENTE (`hammer hash`), no por el más reciente del store:
# con dos artefactos del mismo paquete conviviendo, la fecha miente.
if [ -z "${MESA+x}" ]; then
- MH=$(./target/release/hammer --store ./store hash recipes/mesa-llvmpipe.toml 2>/dev/null | tr -d "\n" | sed "s/b3://")
+ MH=$(./target/release/takana --store ./store hash recipes/mesa-llvmpipe.toml 2>/dev/null | tr -d "\n" | sed "s/b3://")
MESA=$(ls -d store/"$MH"-mesa-llvmpipe 2>/dev/null || true)
[ -n "${MESA:-}" ] || echo " ⚠ sin mesa-llvmpipe sellado: el compositor NO va a poder iniciar EGL" >&2
fi
diff --git a/scripts/cosmic/hydrate-cosmic.sh b/scripts/cosmic/hydrate-cosmic.sh
index e329bba4..6b6d1905 100755
--- a/scripts/cosmic/hydrate-cosmic.sh
+++ b/scripts/cosmic/hydrate-cosmic.sh
@@ -21,7 +21,7 @@
set -uo pipefail
ROOT="$(cd "$(dirname "$0")/../.." && pwd)"; cd "$ROOT"
RFS="${RFS:-work/cosmic-rootfs}"; STORE="${STORE:-./store}"; LINK="${LINK:-static}"
-HAMMER="${HAMMER:-./target/release/hammer}"; KEEP="${KEEP:-0}"
+HAMMER="${HAMMER:-./target/release/takana}"; KEEP="${KEEP:-0}"
if [ $# -gt 0 ]; then
TARGETS=("$@")
diff --git a/scripts/cosmic/metal-desktop-image.sh b/scripts/cosmic/metal-desktop-image.sh
index d47da48e..fea89890 100755
--- a/scripts/cosmic/metal-desktop-image.sh
+++ b/scripts/cosmic/metal-desktop-image.sh
@@ -80,7 +80,7 @@ ln -sf /usr/lib/musl/lib/libc.so "$MERGED/usr/lib/libc.musl-x86_64.so.1"
# no habría tenido con quién hablar aunque el GL fuese perfecto. Se descubrió corriendo `cosmic-start`
# sobre la imagen de metal por primera vez (antes sólo se validaba que llegara al prompt).
echo "==> inyectando arje-logind-compat (el login1 del fractal) + su política"
-if ALC="${ALC:-store/$(./target/release/hammer --store store hash recipes/arje-logind-compat.toml 2>/dev/null | tail -1 | sed 's/^b3://')-arje-logind-compat}"; [ -d "$ALC" ]; then
+if ALC="${ALC:-store/$(./target/release/takana --store store hash recipes/arje-logind-compat.toml 2>/dev/null | tail -1 | sed 's/^b3://')-arje-logind-compat}"; [ -d "$ALC" ]; then
install -Dm755 "$ALC"/usr/bin/arje-logind-compat "$MERGED"/usr/bin/arje-logind-compat
install -d "$MERGED/usr/share/dbus-1/system.d"
cp -a --remove-destination "$ALC"/usr/share/dbus-1/system.d/. "$MERGED"/usr/share/dbus-1/system.d/ 2>/dev/null || true
diff --git a/scripts/cosmic/qemu-desktop-image.sh b/scripts/cosmic/qemu-desktop-image.sh
index e26d422c..8e703283 100755
--- a/scripts/cosmic/qemu-desktop-image.sh
+++ b/scripts/cosmic/qemu-desktop-image.sh
@@ -73,7 +73,7 @@ echo "==> inyectando arje-logind-compat (el login1 del fractal) + su política"
# cosmic-comp pregunta por su sesión igual que mutter y kwin. El daemon no entra por el cierre porque
# nadie lo declara como dep de build. Se elige por `hammer hash` —la receta de HOY—, no por el más
# reciente del store. Su política D-Bus viaja DENTRO del artefacto desde 2026-07-30.
-if ALC="${ALC:-store/$(./target/release/hammer --store store hash recipes/arje-logind-compat.toml 2>/dev/null | tail -1 | sed 's/^b3://')-arje-logind-compat}"; [ -d "$ALC" ]; then
+if ALC="${ALC:-store/$(./target/release/takana --store store hash recipes/arje-logind-compat.toml 2>/dev/null | tail -1 | sed 's/^b3://')-arje-logind-compat}"; [ -d "$ALC" ]; then
install -Dm755 "$ALC"/usr/bin/arje-logind-compat "$MERGED"/usr/bin/arje-logind-compat
install -d "$MERGED/usr/share/dbus-1/system.d"
cp -a --remove-destination "$ALC"/usr/share/dbus-1/system.d/. "$MERGED"/usr/share/dbus-1/system.d/ 2>/dev/null || true
diff --git a/scripts/farm/build-timed.sh b/scripts/farm/build-timed.sh
index 6c5c57c7..6e25d6ac 100755
--- a/scripts/farm/build-timed.sh
+++ b/scripts/farm/build-timed.sh
@@ -19,7 +19,7 @@
#
# Sale con el MISMO código que `hammer build` (transparente para el llamador).
set -u
-HAMMER="${HAMMER:-./target/release/hammer}"
+HAMMER="${HAMMER:-./target/release/takana}"
STORE="${STORE:-./store}"
UMBRAL="${UMBRAL_TIEMPO:-3}"
f="${1:?uso: build-timed.sh <receta.toml>}"
diff --git a/scripts/farm/campana-deuda.sh b/scripts/farm/campana-deuda.sh
index 1430e7ea..e94f2446 100755
--- a/scripts/farm/campana-deuda.sh
+++ b/scripts/farm/campana-deuda.sh
@@ -30,7 +30,7 @@ HAMMER_DIR="${HAMMER_DIR:-/opt/hammer}"
# qué contener a este script, así que un `$0` relativo se pierde seguro.
YO="$(cd "$(dirname "$0")" && pwd)/$(basename "$0")"
cd "$HAMMER_DIR"
-HAMMER="${HAMMER:-$HAMMER_DIR/target/release/hammer}"
+HAMMER="${HAMMER:-$HAMMER_DIR/target/release/takana}"
STORE="${STORE:-$HAMMER_DIR/store}"
LOG="${LOG:-/var/log/campana-deuda.log}"
diff --git a/scripts/farm/cosecha-cron.sh b/scripts/farm/cosecha-cron.sh
index ed68a4bf..aa171d12 100755
--- a/scripts/farm/cosecha-cron.sh
+++ b/scripts/farm/cosecha-cron.sh
@@ -78,7 +78,7 @@ if [ -s "$FLEET_FIJA" ]; then
{ grep -vE '^[[:space:]]*(#|$)' "$FLEET_FIJA" || true; cat "$FLEET" 2>/dev/null || true; } \
| awk 'NF && !visto[$1]++' > "$FLEET.seed" && mv "$FLEET.seed" "$FLEET"
fi
-HAMMER="${HAMMER:-$ROOT/target/release/hammer}"
+HAMMER="${HAMMER:-$ROOT/target/release/takana}"
# Workers efímeros reciclan IPs ⇒ no fijar known_hosts (hub-and-spoke, worker sin secretos).
SSH="ssh -i $SSH_KEY -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o BatchMode=yes -o LogLevel=ERROR -o ConnectTimeout=15"
diff --git a/scripts/farm/farm-lab-sync.sh b/scripts/farm/farm-lab-sync.sh
index 9a15684f..429f950e 100755
--- a/scripts/farm/farm-lab-sync.sh
+++ b/scripts/farm/farm-lab-sync.sh
@@ -60,8 +60,8 @@ $SSH "root@$IP" "cd $REMOTE && . \$HOME/.cargo/env 2>/dev/null
cargo build --release --bin takana --bin hammer 2>&1 | tail -2"
log "4/4 EVIDENCIA: ¿el worker sella en la misma dirección que el hub?"
-h_hub=$("$ROOT/target/release/hammer" --store "$ROOT/store" hash "$TESTIGO" | tail -1)
-h_w=$($SSH "root@$IP" "cd $REMOTE && ./target/release/hammer --store ./store hash $TESTIGO 2>&1 | tail -1")
+h_hub=$("$ROOT/target/release/takana" --store "$ROOT/store" hash "$TESTIGO" | tail -1)
+h_w=$($SSH "root@$IP" "cd $REMOTE && ./target/release/takana --store ./store hash $TESTIGO 2>&1 | tail -1")
echo " hub : $h_hub"
echo " worker : $h_w"
if [ "$h_hub" = "$h_w" ]; then
diff --git a/scripts/farm/farm-worker-loop.sh b/scripts/farm/farm-worker-loop.sh
index bff9cb2e..79a88dd5 100755
--- a/scripts/farm/farm-worker-loop.sh
+++ b/scripts/farm/farm-worker-loop.sh
@@ -191,7 +191,7 @@ fi
# esto cuesta un `find`.
rebuild_si_hace_falta() {
command -v cargo >/dev/null 2>&1 || return 0
- bin=target/release/hammer
+ bin=target/release/takana
[ -x "$bin" ] || { echo "$(date -u +%FT%TZ) no hay binario: compilando"; cargo build --release --bin takana --bin hammer -j"$JOBS" 2>&1 | tail -2; return 0; }
# ¿Algún fuente más nuevo que el binario? (Cargo.lock incluido: un bump de dep también cuenta.)
if [ -n "$(find crates Cargo.toml Cargo.lock -newer "$bin" -type f -print -quit 2>/dev/null)" ]; then
diff --git a/scripts/farm/harkaq-campana-vol.sh b/scripts/farm/harkaq-campana-vol.sh
index 19163625..4c48666f 100755
--- a/scripts/farm/harkaq-campana-vol.sh
+++ b/scripts/farm/harkaq-campana-vol.sh
@@ -28,7 +28,7 @@ export HARKAQ_TIMEOUT="${HARKAQ_TIMEOUT:-300}"
# SinEvidencia (o cero) en silencio — el falso `Hermetico` de D9 mudado al orquestador.
abi=$(python3 -c 'import ctypes;print(ctypes.CDLL("libc.so.6").syscall(444,None,0,1))' 2>/dev/null)
[ "${abi:-0}" -ge 7 ] || { echo "ABORTO: Landlock ABI ${abi:-?} < 7"; exit 4; }
-strings ./target/release/hammer 2>/dev/null | grep -q harkaq || { echo "ABORTO: el binario no tiene la jaula"; exit 4; }
+strings ./target/release/takana 2>/dev/null | grep -q harkaq || { echo "ABORTO: el binario no tiene la jaula"; exit 4; }
echo "$(date -u +%FT%TZ) campaña-vol: ABI $abi, jaula ✓, auto-shutdown tras $IDLE_CICLOS ciclos idle"
autodestruir() {
@@ -59,7 +59,7 @@ while :; do
tmp="recipes/.hk-$n.toml"
sed "s/^name *= *\"$n\"/name = \"$n-hkm\"/" "recipes/$n.toml" > "$tmp"
- timeout "$POR_RECETA" ./target/release/hammer build "$tmp" --store "$PWD/store" \
+ timeout "$POR_RECETA" ./target/release/takana build "$tmp" --store "$PWD/store" \
> "$OUT/$n.log" 2>&1
rm -f "$tmp"
# El sufijo -hkm sella un artefacto que después pega en caché y bloquea la re-medición
diff --git a/scripts/farm/harkaq-campana.sh b/scripts/farm/harkaq-campana.sh
index 7982260a..3364b6c4 100755
--- a/scripts/farm/harkaq-campana.sh
+++ b/scripts/farm/harkaq-campana.sh
@@ -38,15 +38,15 @@ if [ "${abi:-0}" -lt 7 ]; then
exit 4
fi
-# Gate 2: ¿el binario TIENE harkaq dentro? La golden hornea un `target/release/hammer` viejo y el
+# Gate 2: ¿el binario TIENE harkaq dentro? La golden hornea un `target/release/takana` viejo y el
# rsync excluye /target ⇒ si el `cargo build` del provisioning no corrió, el worker construye
# alegremente SIN LA JAULA y produce cero veredictos. Pasó: la primera corrida molió 2 recetas con
# un binario del 29/06 (0 ocurrencias de "harkaq") y las marcó "sin veredicto" como si fuera culpa
# de las recetas. Ocho horas así son la noche entera perdida — y el log diría "salteada", nunca
# "estoy ciego". Es el falso `Hermetico` de D9 mudado al orquestador: la ausencia como respuesta
# tranquilizadora.
-if ! strings ./target/release/hammer 2>/dev/null | grep -q harkaq; then
- echo "ABORTO: ./target/release/hammer NO tiene harkaq compilado (¿corrió el cargo build?)."
+if ! strings ./target/release/takana 2>/dev/null | grep -q harkaq; then
+ echo "ABORTO: ./target/release/takana NO tiene harkaq compilado (¿corrió el cargo build?)."
echo " Sin esto la campaña muele sin jaula y produce 0 veredictos, en silencio."
exit 4
fi
@@ -64,7 +64,7 @@ while :; do
# rompe la resolución de deps.build, que son relativas al dir de la receta.
tmp="recipes/.hk-$n.toml"
sed "s/^name *= *\"$n\"/name = \"$n-hkm\"/" "recipes/$n.toml" > "$tmp"
- timeout "$POR_RECETA" ./target/release/hammer build "$tmp" --store "$PWD/store" \
+ timeout "$POR_RECETA" ./target/release/takana build "$tmp" --store "$PWD/store" \
> "$OUT/$n.log" 2>&1
rm -f "$tmp"
grep '^\[harkaq\] {' "$OUT/$n.log" | sed 's/^\[harkaq\] //' > "$OUT/$n.verdicts"
diff --git a/scripts/farm/harvest-go.sh b/scripts/farm/harvest-go.sh
index d8f8dd54..c8f6ad4f 100755
--- a/scripts/farm/harvest-go.sh
+++ b/scripts/farm/harvest-go.sh
@@ -17,7 +17,7 @@
#
# Uso (cron): */DohubVPS cd /home/sergio/hammer && scripts/farm/harvest-go.sh root@1.2.3.4 >>work/harvest-go.log 2>&1
# Env: SSH_KEY (def ~/.ssh/github5), REMOTE (def /opt/hammer), STORE (def ./store), REPO (def dist/repo),
-# KEY (def dist/keys/release.ed25519), DISTRO (def dev), HAMMER (def target/release/hammer),
+# KEY (def dist/keys/release.ed25519), DISTRO (def dev), HAMMER (def target/release/takana),
# SEAL_TIMEOUT (def 60s: techo del cache-hit; más = sería build local ⇒ skip).
set -u
@@ -29,7 +29,7 @@ STORE="${STORE:-$ROOT/store}"
REPO="${REPO:-$ROOT/dist/repo}"
KEY="${KEY:-$ROOT/dist/keys/release.ed25519}"
DISTRO="${DISTRO:-dev}"
-HAMMER="${HAMMER:-$ROOT/target/release/hammer}"
+HAMMER="${HAMMER:-$ROOT/target/release/takana}"
SEAL_TIMEOUT="${SEAL_TIMEOUT:-60}"
QUEUE="recipes/incoming-go"
REVIEW="tandas/needs-review-weekend"
diff --git a/scripts/farm/saldar-deuda-static.sh b/scripts/farm/saldar-deuda-static.sh
index bf37581c..aec9ac29 100755
--- a/scripts/farm/saldar-deuda-static.sh
+++ b/scripts/farm/saldar-deuda-static.sh
@@ -23,11 +23,11 @@
# Uso: scripts/farm/saldar-deuda-static.sh # construye toda la deuda
# DRY=1 scripts/farm/saldar-deuda-static.sh # sólo LISTA la deuda, no construye
# SKIP_GUI=1 scripts/farm/saldar-deuda-static.sh # salta el stack GUI (default si no hay DISPLAY-cap)
-# Env: HAMMER (def target/release/hammer), STORE (def ./store), JOBS no aplica (serie, por deps).
+# Env: HAMMER (def target/release/takana), STORE (def ./store), JOBS no aplica (serie, por deps).
set -u
ROOT="$(cd "$(dirname "$0")/../.." && pwd)"; cd "$ROOT"
-HAMMER="${HAMMER:-$ROOT/target/release/hammer}"
+HAMMER="${HAMMER:-$ROOT/target/release/takana}"
STORE="${STORE:-$ROOT/store}"
DRY="${DRY:-0}"
# El stack GUI no construye en el laptop (zig-skew rompe cairo). Default: saltarlo salvo que se pida.
diff --git a/scripts/farm/vps-setup.sh b/scripts/farm/vps-setup.sh
index ea919c47..f2dbd6a4 100755
--- a/scripts/farm/vps-setup.sh
+++ b/scripts/farm/vps-setup.sh
@@ -137,7 +137,7 @@ if ! command -v cargo >/dev/null 2>&1; then
fi
. "$HOME/.cargo/env"
-echo "==> 5. build hammer (target/release/hammer)"
+echo "==> 5. build hammer (target/release/takana)"
cargo build --release --bin takana --bin hammer
echo "==> 6. rootfs Alpine edge + zig (bootstrap reproducible; varios min la 1ra vez)"
diff --git a/scripts/fuentes/mirror-env.sh b/scripts/fuentes/mirror-env.sh
index 1a912c0b..99aef38c 100644
--- a/scripts/fuentes/mirror-env.sh
+++ b/scripts/fuentes/mirror-env.sh
@@ -1,7 +1,7 @@
# mirror-env.sh — activa el mirror de fuentes (ADR 0013). Se hace `source`, no se ejecuta:
#
# . scripts/fuentes/mirror-env.sh
-# flock work/.farm-build.lock ./target/release/hammer --store ./store build <receta>
+# flock work/.farm-build.lock ./target/release/takana --store ./store build <receta>
#
# Sin esto `hammer build` va derecho a upstream, que es el comportamiento de siempre: el mirror es
# ADITIVO y su ausencia nunca rompe un build. Por eso no está horneado en el binario — un default
diff --git a/scripts/gnome/hydrate-gnome.sh b/scripts/gnome/hydrate-gnome.sh
index 1577b695..c2178a78 100755
--- a/scripts/gnome/hydrate-gnome.sh
+++ b/scripts/gnome/hydrate-gnome.sh
@@ -18,7 +18,7 @@
set -uo pipefail
ROOT="$(cd "$(dirname "$0")/../.." && pwd)"; cd "$ROOT"
RFS="${RFS:-work/gnome-rootfs}"; STORE="${STORE:-./store}"; LINK="${LINK:-static}"
-HAMMER="${HAMMER:-./target/release/hammer}"; KEEP="${KEEP:-0}"
+HAMMER="${HAMMER:-./target/release/takana}"; KEEP="${KEEP:-0}"
# Por defecto se hidratan DOS raíces, no una. accountsservice no es dep de build de gnome-shell —no
# aparece en su meson.build ni en su cierre— sino dep de RUNTIME: la capa JS del shell hace
# `imports.gi.AccountsService` y gjs resuelve el typelib al arrancar. Todo lo que el shell carga por
diff --git a/scripts/gnome/qemu-desktop-image.sh b/scripts/gnome/qemu-desktop-image.sh
index a29ccb40..f3712228 100755
--- a/scripts/gnome/qemu-desktop-image.sh
+++ b/scripts/gnome/qemu-desktop-image.sh
@@ -102,7 +102,7 @@ echo "==> inyectando arje-logind-compat (el login1 del fractal)"
if [ -n "${ALC_BIN:-}" ] && [ -x "$ALC_BIN" ]; then
install -Dm755 "$ALC_BIN" "$MERGED"/usr/bin/arje-logind-compat
echo " ⚠ binario LOCAL (no sellado): $ALC_BIN"
-elif ALC="${ALC:-store/$(./target/release/hammer --store store hash recipes/arje-logind-compat.toml 2>/dev/null | tail -1 | sed 's/^b3://')-arje-logind-compat}"; [ -d "$ALC" ]; then
+elif ALC="${ALC:-store/$(./target/release/takana --store store hash recipes/arje-logind-compat.toml 2>/dev/null | tail -1 | sed 's/^b3://')-arje-logind-compat}"; [ -d "$ALC" ]; then
install -Dm755 "$ALC"/usr/bin/arje-logind-compat "$MERGED"/usr/bin/arje-logind-compat
# …y su POLÍTICA D-Bus, que desde 2026-07-30 viaja en el artefacto. Se copia, no se escribe: el
# dueño del fichero es el paquete. Ojo — inyectar «sólo el binario» era el bug que destapó la
@@ -128,7 +128,7 @@ echo "==> inyectando arje-polkit-compat (el PolicyKit1 del fractal) + su políti
# libs-only a propósito (el demonio lo pone arje), así que nadie servía ese nombre y gnome-shell
# esperaba 25 s por cada uno.
# ⚠ El shim autoriza TODO (postura de sistema confiado ya tomada por arje) — ver su receta.
-if APC="${APC:-store/$(./target/release/hammer --store store hash recipes/arje-polkit-compat.toml 2>/dev/null | tail -1 | sed 's/^b3://')-arje-polkit-compat}"; [ -d "$APC" ]; then
+if APC="${APC:-store/$(./target/release/takana --store store hash recipes/arje-polkit-compat.toml 2>/dev/null | tail -1 | sed 's/^b3://')-arje-polkit-compat}"; [ -d "$APC" ]; then
install -Dm755 "$APC"/usr/bin/arje-polkit-compat "$MERGED"/usr/bin/arje-polkit-compat
install -d "$MERGED/usr/share/dbus-1/system.d"
cp -a --remove-destination "$APC"/usr/share/dbus-1/system.d/. "$MERGED"/usr/share/dbus-1/system.d/ 2>/dev/null || true
diff --git a/scripts/harkaq/harkaq-trace-build.sh b/scripts/harkaq/harkaq-trace-build.sh
index 0d9cd832..03089f03 100644
--- a/scripts/harkaq/harkaq-trace-build.sh
+++ b/scripts/harkaq/harkaq-trace-build.sh
@@ -16,14 +16,14 @@
# de Opus, se coordina allá. Este script existe para medir HOY la señal declaradas-vs-usadas.
#
# uso: harkaq-trace-build.sh <receta.toml> [store] [outdir]
-# env: HAMMER (def ./target/release/hammer), TRACE (def /tmp/harkaq-trace), NORM (def
+# env: HAMMER (def ./target/release/takana), TRACE (def /tmp/harkaq-trace), NORM (def
# scripts/harkaq/harkaq-trace-norm.py)
# deja en outdir: traza-fase-N.txt (crudas), canonica.txt, sello.txt, resumen.txt
set -euo pipefail
RECETA="${1:?uso: harkaq-trace-build.sh <receta.toml> [store] [outdir]}"
STORE="${2:-./store}"
OUT="${3:-/tmp/harkaq-trace-pilot}"
-HAMMER="${HAMMER:-./target/release/hammer}"
+HAMMER="${HAMMER:-./target/release/takana}"
TRACE="${TRACE:-/tmp/harkaq-trace}"
NORM="${NORM:-scripts/harkaq/harkaq-trace-norm.py}"
mkdir -p "$OUT"; rm -f "$OUT"/traza-fase-*.txt "$OUT"/canonica.txt "$OUT"/resumen.txt
diff --git a/scripts/hydrate-profile.py b/scripts/hydrate-profile.py
index c344af16..20d4f87a 100755
--- a/scripts/hydrate-profile.py
+++ b/scripts/hydrate-profile.py
@@ -34,7 +34,7 @@ import yupana
import targets as targets_mod
ROOT = yupana.ROOT
-HAMMER = str(ROOT / "target/release/hammer")
+HAMMER = str(ROOT / "target/release/takana")
def opcion(nombre, defecto=None):
diff --git a/scripts/kde/complete-closure.sh b/scripts/kde/complete-closure.sh
index 572f386e..706b4fae 100644
--- a/scripts/kde/complete-closure.sh
+++ b/scripts/kde/complete-closure.sh
@@ -9,7 +9,7 @@
set -uo pipefail
ROOT="$(cd "$(dirname "$0")/../.." && pwd)"; cd "$ROOT"
STORE="${STORE:-./store}"; RFS="${RFS:-work/kde-store-rootfs}"; LINK="${LINK:-static}"
-HAMMER="${HAMMER:-./target/release/hammer}"
+HAMMER="${HAMMER:-./target/release/takana}"
CUTOFF="${CUTOFF:-$(date -d 'today 00:00' +%s 2>/dev/null || echo 9999999999)}"
# sonames provistos por la base (no soberanos aún / runtime del sistema): no hidratar.
BASE_SONAMES="libc.so libc.musl-x86_64.so.1 ld-musl-x86_64.so.1 libc.so.6 ld-linux-x86-64.so.2 libm.so.6 libdl.so.2 libpthread.so.0 librt.so.1 libresolv.so.2"
diff --git a/scripts/kde/hydrate-fhs.sh b/scripts/kde/hydrate-fhs.sh
index 6823cf16..eff790ef 100644
--- a/scripts/kde/hydrate-fhs.sh
+++ b/scripts/kde/hydrate-fhs.sh
@@ -16,7 +16,7 @@ REPO="${REPO:-work/repo-kde}"; TRUST="${TRUST:-dist/keys}"; STORE="${STORE:-./st
RFS="${RFS:-work/kde-rootfs}"
# TARGETS = uno o varios paquetes tope (unión de cierres). TARGET (singular) sigue soportado.
TARGETS="${TARGETS:-${TARGET:-qt6-qtdeclarative}}"
-HAMMER="${HAMMER:-./target/release/hammer}"
+HAMMER="${HAMMER:-./target/release/takana}"
DB="$RFS/var/lib/hammer/installed.json"
# cierre transitivo de TODOS los targets, leído del índice (deps + aliases ya resuelven). Excluimos
diff --git a/scripts/kde/hydrate-from-store.sh b/scripts/kde/hydrate-from-store.sh
index 8e4a8fba..422fef5d 100644
--- a/scripts/kde/hydrate-from-store.sh
+++ b/scripts/kde/hydrate-from-store.sh
@@ -15,7 +15,7 @@
set -uo pipefail
ROOT="$(cd "$(dirname "$0")/../.." && pwd)"; cd "$ROOT"
REPO="${REPO:-work/repo-kde}"; STORE="${STORE:-./store}"; LINK="${LINK:-static}"
-RFS="${RFS:-work/kde-store-rootfs}"; HAMMER="${HAMMER:-./target/release/hammer}"
+RFS="${RFS:-work/kde-store-rootfs}"; HAMMER="${HAMMER:-./target/release/takana}"
TARGETS="${TARGETS:-${TARGET:-qt6-qtdeclarative}}"
# CUTOFF: por defecto medianoche de hoy (excluye rebuilds de la sesión). Pasá 9999999999 para no filtrar.
CUTOFF="${CUTOFF:-$(date -d 'today 00:00' +%s 2>/dev/null || echo 9999999999)}"
diff --git a/scripts/lib/libs-compartidas-desde-store.sh b/scripts/lib/libs-compartidas-desde-store.sh
index d57e42f4..1c552285 100644
--- a/scripts/lib/libs-compartidas-desde-store.sh
+++ b/scripts/lib/libs-compartidas-desde-store.sh
@@ -30,7 +30,7 @@ inyectar_libs_compartidas() {
recetas="${LIBS_COMPARTIDAS:-libffi-shared expat-shared bzip2-shared}"
echo "==> libs compartidas del store (el cierre sólo trae los .a)"
for n in $recetas; do
- hash=$(./target/release/hammer --store store hash "recipes/$n.toml" 2>/dev/null | tail -1 | sed 's/^b3://')
+ hash=$(./target/release/takana --store store hash "recipes/$n.toml" 2>/dev/null | tail -1 | sed 's/^b3://')
dir="store/$hash-$n"
if [ -n "$hash" ] && [ -d "$dir" ]; then
cp -a --remove-destination "$dir"/usr/lib/*.so* "$merged"/usr/lib/ 2>/dev/null || true
diff --git a/scripts/lib/pid1-desde-store.sh b/scripts/lib/pid1-desde-store.sh
index a838a97a..d42a1136 100644
--- a/scripts/lib/pid1-desde-store.sh
+++ b/scripts/lib/pid1-desde-store.sh
@@ -30,7 +30,7 @@
inyectar_pid1() {
local merged="$1" base="${2:-}" az
echo "==> PID1: arje-zero desde el store${base:+ (no desde $base)}"
- az="${AZ:-store/$(./target/release/hammer --store store hash recipes/arje-zero.toml 2>/dev/null | tail -1 | sed 's/^b3://')-arje-zero}"
+ az="${AZ:-store/$(./target/release/takana --store store hash recipes/arje-zero.toml 2>/dev/null | tail -1 | sed 's/^b3://')-arje-zero}"
if [ -d "$az" ] && [ -x "$az/usr/bin/arje-zero" ]; then
install -Dm755 "$az"/usr/bin/arje-zero "$merged"/usr/bin/arje-zero
local viejo=""
@@ -38,7 +38,7 @@ inyectar_pid1() {
echo " ✓ $(basename "$az" | cut -c1-12)${viejo:+ (el de $base era de $viejo)}"
else
echo " ✗ falta arje-zero sellado en store/ — la imagen usaría el PID1 CONGELADO${base:+ de $base}" >&2
- echo " construílo: ./target/release/hammer build recipes/arje-zero.toml --store store" >&2
+ echo " construílo: ./target/release/takana build recipes/arje-zero.toml --store store" >&2
return 1
fi
}
diff --git a/scripts/mirada-usb.sh b/scripts/mirada-usb.sh
index 52227a95..1451e347 100644
--- a/scripts/mirada-usb.sh
+++ b/scripts/mirada-usb.sh
@@ -23,7 +23,7 @@ ROOT="$(cd "$(dirname "$0")/.." && pwd)"; cd "$ROOT"
STORE="${STORE:-./store}"
DEVFS="${DEVFS:-.dev-fs/alpine}"
RFS="${RFS:-work/mirada-rootfs}"
-HAMMER="${HAMMER:-target/release/hammer}"
+HAMMER="${HAMMER:-target/release/takana}"
PACKAGE="${PACKAGE:-1}"
[ -d "$DEVFS" ] || { echo "no existe $DEVFS (corré scripts/bootstrap-devfs.sh)" >&2; exit 1; }
diff --git a/scripts/product-userland-from-repo.sh b/scripts/product-userland-from-repo.sh
index 685a4210..dd858d9c 100755
--- a/scripts/product-userland-from-repo.sh
+++ b/scripts/product-userland-from-repo.sh
@@ -37,7 +37,7 @@ for pkg in $PKGS_LIST; do
printf " - %-16s (no está en el repo, salteado)\n" "$pkg"; skip=$((skip+1)); continue
fi
if NO_PROXY=localhost NIX_STORE="${NIX_STORE:-$HOME/.nixstore}" \
- "$ROOT/target/release/hammer" --store "$STORE" install "$pkg" \
+ "$ROOT/target/release/takana" --store "$STORE" install "$pkg" \
--repo "$REPO" --prefix "$RFS" --trust "$TRUST" --require-signed --db "$DB" \
>/dev/null 2>"$RFS/.install-$pkg.log"; then
printf " ✓ %-16s\n" "$pkg"; ok=$((ok+1)); got="$got $pkg"
diff --git a/scripts/provee.py b/scripts/provee.py
index dc915b8c..9b95afa0 100755
--- a/scripts/provee.py
+++ b/scripts/provee.py
@@ -42,7 +42,7 @@ import yupana
ROOT = yupana.ROOT
STORE = os.environ.get("HAMMER_STORE", str(ROOT / "store"))
-HAMMER = str(ROOT / "target/release/hammer")
+HAMMER = str(ROOT / "target/release/takana")
CACHE = ROOT / "work/provee-cache.json"
diff --git a/scripts/qorpa/evidence-probe.sh b/scripts/qorpa/evidence-probe.sh
index 14b41662..e05a04cc 100755
--- a/scripts/qorpa/evidence-probe.sh
+++ b/scripts/qorpa/evidence-probe.sh
@@ -18,7 +18,7 @@
set -eu
QORPA_ROOT="${HAMMER_QORPA_ROOT:-/var/lib/hammer/qorpa}"
-HAMMER="${HAMMER_BIN:-./target/release/hammer}"
+HAMMER="${HAMMER_BIN:-./target/release/takana}"
ID="${1:-arch-probe}"
export HAMMER_QORPA_ROOT="$QORPA_ROOT"
diff --git a/scripts/qorpa/pressure-vessel-probe.sh b/scripts/qorpa/pressure-vessel-probe.sh
index 01051bfa..cffa6243 100755
--- a/scripts/qorpa/pressure-vessel-probe.sh
+++ b/scripts/qorpa/pressure-vessel-probe.sh
@@ -21,7 +21,7 @@
set -eu
QORPA_ROOT="${HAMMER_QORPA_ROOT:-/var/lib/hammer/qorpa}"
-HAMMER="${HAMMER_BIN:-./target/release/hammer}"
+HAMMER="${HAMMER_BIN:-./target/release/takana}"
ID="${1:-sniper-probe}"
UBUNTU_URL="https://cdimage.ubuntu.com/ubuntu-base/releases/24.04/release/ubuntu-base-24.04.3-base-amd64.tar.gz"
diff --git a/scripts/reconstruir-corpus.sh b/scripts/reconstruir-corpus.sh
index 2b132ce2..d62109c2 100755
--- a/scripts/reconstruir-corpus.sh
+++ b/scripts/reconstruir-corpus.sh
@@ -31,7 +31,7 @@
set -uo pipefail
ROOT="$(cd "$(dirname "$0")/.." && pwd)"; cd "$ROOT"
-HAMMER="${HAMMER:-$ROOT/target/release/hammer}"
+HAMMER="${HAMMER:-$ROOT/target/release/takana}"
STORE="${STORE:-./store}"
LOCK="$ROOT/work/.farm-build.lock"
LOG="${LOG:-$ROOT/work/reconstruccion.log}"
diff --git a/scripts/static-audit.sh b/scripts/static-audit.sh
index ebea5b63..5808182a 100755
--- a/scripts/static-audit.sh
+++ b/scripts/static-audit.sh
@@ -37,7 +37,7 @@ set -eu
HUB="$(cd "$(dirname "$0")/.." && pwd)"
cd "$HUB"
STORE="${STORE:-$PWD/store}"
-HAMMER="${HAMMER:-$HUB/target/release/hammer}"
+HAMMER="${HAMMER:-$HUB/target/release/takana}"
if [ $# -gt 0 ]; then
recetas=""
diff --git a/scripts/store-gc.sh b/scripts/store-gc.sh
index f7dfd4cf..eadc39e4 100755
--- a/scripts/store-gc.sh
+++ b/scripts/store-gc.sh
@@ -35,10 +35,10 @@
#
# Uso: scripts/store-gc.sh [--aplicar] [--huerfanos]
# (sin --aplicar es un DRY-RUN: mide y no borra)
-# Env: STORE (def ./store) HAMMER (def ./target/release/hammer) JOBS (def 8)
+# Env: STORE (def ./store) HAMMER (def ./target/release/takana) JOBS (def 8)
set -uo pipefail
ROOT="$(cd "$(dirname "$0")/.." && pwd)"; cd "$ROOT"
-STORE="${STORE:-./store}"; HAMMER="${HAMMER:-./target/release/hammer}"; JOBS="${JOBS:-8}"
+STORE="${STORE:-./store}"; HAMMER="${HAMMER:-./target/release/takana}"; JOBS="${JOBS:-8}"
APLICAR=0; HUERFANOS=0
for a in "$@"; do
case "$a" in
diff --git a/scripts/test-atuq-inicio.py b/scripts/test-atuq-inicio.py
index 013f49d1..360e8f55 100644
--- a/scripts/test-atuq-inicio.py
+++ b/scripts/test-atuq-inicio.py
@@ -35,7 +35,7 @@ import zipfile
ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
RFS = os.environ.get("RFS", "/mnt/cosecha/escritorios/atuq-rootfs")
ALPINE = os.path.join(ROOT, ".dev-fs/alpine")
-HAMMER = os.path.join(ROOT, "target/release/hammer")
+HAMMER = os.path.join(ROOT, "target/release/takana")
STORE = os.environ.get("HAMMER_STORE", os.path.join(ROOT, "store"))
EXT_ID = "sonda-inicio@atuq.tawasuyu"
diff --git a/scripts/test-atuq-nativo.py b/scripts/test-atuq-nativo.py
index 8d56e66d..6d9f41ff 100644
--- a/scripts/test-atuq-nativo.py
+++ b/scripts/test-atuq-nativo.py
@@ -47,7 +47,7 @@ import zipfile
ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
RFS = os.environ.get("RFS", "/mnt/cosecha/escritorios/atuq-rootfs")
ALPINE = os.path.join(ROOT, ".dev-fs/alpine")
-HAMMER = os.path.join(ROOT, "target/release/hammer")
+HAMMER = os.path.join(ROOT, "target/release/takana")
STORE = os.environ.get("HAMMER_STORE", os.path.join(ROOT, "store"))
EXT_ID = "nativa@atuq.tawasuyu"
diff --git a/scripts/test-atuq-rootfs.py b/scripts/test-atuq-rootfs.py
index 3884deca..4fd42300 100755
--- a/scripts/test-atuq-rootfs.py
+++ b/scripts/test-atuq-rootfs.py
@@ -48,7 +48,7 @@ import sys
ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
RFS = os.environ.get("RFS", "/mnt/cosecha/escritorios/atuq-rootfs")
STORE = os.environ.get("HAMMER_STORE", os.path.join(ROOT, "store"))
-HAMMER = os.path.join(ROOT, "target/release/hammer")
+HAMMER = os.path.join(ROOT, "target/release/takana")
# Lo que el corpus NO provee y las imágenes copian del devfs. Documentado, no olvidado.
DEL_LAB = {"libc.so", "libc.musl-x86_64.so.1", "ld-musl-x86_64.so.1"}
diff --git a/scripts/test-atuq-ruteo.py b/scripts/test-atuq-ruteo.py
index ca6f7e54..e16cfbc4 100755
--- a/scripts/test-atuq-ruteo.py
+++ b/scripts/test-atuq-ruteo.py
@@ -56,7 +56,7 @@ import time
ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
RFS = os.environ.get("RFS", "/mnt/cosecha/escritorios/atuq-rootfs")
ALPINE = os.path.join(ROOT, ".dev-fs/alpine")
-HAMMER = os.path.join(ROOT, "target/release/hammer")
+HAMMER = os.path.join(ROOT, "target/release/takana")
STORE = os.path.join(ROOT, "store")
# ── LOS PUERTOS LOS ELIGE EL SISTEMA, Y NO ES UN DETALLE ──────────────────────────────────────
# Estaban fijos en 8099/9099 y el 2026-09-07 esta prueba dio «NO concluyente» durante media hora por
diff --git a/scripts/test-guardianes-wasm.sh b/scripts/test-guardianes-wasm.sh
index 565ca2d4..77879fa2 100755
--- a/scripts/test-guardianes-wasm.sh
+++ b/scripts/test-guardianes-wasm.sh
@@ -29,7 +29,7 @@ trap fin EXIT
# hace pasar por el actual y la prueba mide otra cosa. Y es, además, la demostración de para qué
# sirve el control: sin él eso se habría leído como "4 en verde, guardianes ok".
art() {
- h=$(./target/release/hammer --store "$STORE" hash "recipes/$1.toml" 2>/dev/null | tail -1)
+ h=$(./target/release/takana --store "$STORE" hash "recipes/$1.toml" 2>/dev/null | tail -1)
h=${h#b3:}
[ -n "$h" ] && [ -d "$STORE/$h-$1" ] && printf '%s' "$STORE/$h-$1"
}
diff --git a/scripts/verificar-repro.sh b/scripts/verificar-repro.sh
index 3bea545a..098dfeee 100755
--- a/scripts/verificar-repro.sh
+++ b/scripts/verificar-repro.sh
@@ -48,7 +48,7 @@
# Env: STORE (def ./store) N (def 30, tamaño de la muestra)
set -uo pipefail
ROOT="$(cd "$(dirname "$0")/.." && pwd)"; cd "$ROOT"
-STORE="${STORE:-./store}"; HAMMER="${HAMMER:-./target/release/hammer}"; N="${N:-30}"
+STORE="${STORE:-./store}"; HAMMER="${HAMMER:-./target/release/takana}"; N="${N:-30}"
# ── EL LOCK LO TOMA EL SCRIPT, Y ANTES DE TOCAR NADA ───────────────────────────────────────────
# Este script llama a `hammer build`, y la regla 1 del repo es que todo build va envuelto en el
diff --git a/scripts/vigia-imagen.py b/scripts/vigia-imagen.py
index 6550d997..fee65af2 100644
--- a/scripts/vigia-imagen.py
+++ b/scripts/vigia-imagen.py
@@ -57,7 +57,7 @@ import targets as targets_mod
ROOT = yupana.ROOT
STORE = os.environ.get("HAMMER_STORE", str(ROOT / "store"))
-HAMMER = str(ROOT / "target/release/hammer")
+HAMMER = str(ROOT / "target/release/takana")
# Invariantes que un perfil NO cumple A PROPÓSITO. Un ✗ permanente por una decisión ya tomada es
# deuda fantasma —la misma figura que la terna GNOME que hubo que sacar de targets.toml para que el
diff --git a/scripts/vigia-sonames.py b/scripts/vigia-sonames.py
index 5a9cb0fc..35db14ba 100755
--- a/scripts/vigia-sonames.py
+++ b/scripts/vigia-sonames.py
@@ -43,7 +43,7 @@ import targets as targets_mod
ROOT = yupana.ROOT
STORE = os.environ.get("HAMMER_STORE", str(ROOT / "store"))
-HAMMER = str(ROOT / "target/release/hammer")
+HAMMER = str(ROOT / "target/release/takana")
_cache = {}
def artefacto(cola, nombre):
diff --git a/scripts/why-differs-barrido.sh b/scripts/why-differs-barrido.sh
index 9671c88e..a4112922 100755
--- a/scripts/why-differs-barrido.sh
+++ b/scripts/why-differs-barrido.sh
@@ -38,7 +38,7 @@ import sys
RAIZ = pathlib.Path(__file__).resolve().parent.parent
STORE = RAIZ / "store"
-HAMMER = RAIZ / "target/release/hammer"
+HAMMER = RAIZ / "target/release/takana"
LIMITE = int(os.environ.get("LIMITE", "0"))
SALIDA_JSON = os.environ.get("JSON")
# Un artefacto puede pesar GB (qt6, kernels): hashearlo entero para el barrido no aporta.