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.
28 lines
1.9 KiB
Bash
28 lines
1.9 KiB
Bash
# 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/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
|
|
# que apunta a una máquina concreta convertiría un fallo de red en un fallo de hammer para cualquiera
|
|
# que clone el repo.
|
|
#
|
|
# LISTA, no una URL (ADR 0014): las dos variables aceptan varios orígenes separados por comas y se
|
|
# prueban todos antes de caer a upstream. Con uno solo, el mecanismo que existe para no depender de
|
|
# 79 servidores ajenos dependía de UNO nuestro. Para añadir el espejo público:
|
|
#
|
|
# export HAMMER_MIRROR="sftp://…/hammer/fuentes,https://<bucket>.r2.dev/fuentes"
|
|
#
|
|
# El orden se ROTA por el hash de cada objeto, así que todos los orígenes se ejercitan en una tanda
|
|
# del corpus — un espejo que sólo se usa cuando el otro falla es un espejo que nadie prueba.
|
|
#
|
|
# La ruta lleva `/~/` a propósito. curl interpreta lo que sigue al host en una URL `sftp://` como
|
|
# ruta ABSOLUTA del servidor, así que `…:23/hammer/fuentes` busca en la raíz y devuelve
|
|
# «(78) Could not open remote file for reading» aunque el fichero exista. `/~/` lo ancla al home.
|
|
export HAMMER_MIRROR="${HAMMER_MIRROR:-sftp://u647150@u647150.your-storagebox.de:23/~/hammer/fuentes}"
|
|
# Fuentes git: bundles shallow por commit. Variable APARTE de HAMMER_MIRROR porque son dos espacios
|
|
# de nombres distintos —`{sha256}.tar` vs `{commit}.bundle`— y se pueblan y se pierden por separado.
|
|
export HAMMER_MIRROR_GIT="${HAMMER_MIRROR_GIT:-sftp://u647150@u647150.your-storagebox.de:23/~/hammer/fuentes-git}"
|
|
export HAMMER_MIRROR_KEY="${HAMMER_MIRROR_KEY:-$HOME/.ssh/github5}"
|