Commit Graph
323 Commits
Author SHA1 Message Date
Sergio 60fcb34569 estado: cosecha granja 2026-08-27T20:32:36Z — avance del árbol KDE 2026-08-27 20:32:36 +00:00
Sergio 2e56cf08c7 estado: cosecha granja 2026-08-27T20:02:54Z — avance del árbol KDE 2026-08-27 20:02:54 +00:00
Sergio 640422d000 estado: cosecha granja 2026-08-27T19:31:54Z — avance del árbol KDE 2026-08-27 19:31:54 +00:00
Sergio b07fd7a2ce estado: 571 selladas / 210 en deuda tras los arreglos de la noche 2026-08-27 19:26:14 +00:00
Sergio 6dc7b531fd estado: cosecha granja 2026-08-27T19:01:55Z — avance del árbol KDE 2026-08-27 19:01:55 +00:00
Sergio b80253c820 estado: cosecha granja 2026-08-27T18:31:52Z — avance del árbol KDE 2026-08-27 18:31:52 +00:00
Sergio 98ba0ce6fe estado: cosecha granja 2026-08-27T18:01:55Z — avance del árbol KDE 2026-08-27 18:01:55 +00:00
Sergio 65c1579571 estado: cosecha granja 2026-08-27T17:31:51Z — avance del árbol KDE 2026-08-27 17:31:51 +00:00
Sergio f2a704df9c estado: cosecha granja 2026-08-27T17:02:04Z — avance del árbol KDE 2026-08-27 17:02:04 +00:00
Sergio 799438b81a estado: cosecha granja 2026-08-27T16:32:05Z — avance del árbol KDE 2026-08-27 16:32:05 +00:00
Sergio 9472a3e260 estado: cosecha granja 2026-08-27T16:02:08Z — avance del árbol KDE 2026-08-27 16:02:08 +00:00
Sergio 177e6a9549 estado: cosecha granja 2026-08-27T15:32:05Z — avance del árbol KDE 2026-08-27 15:32:05 +00:00
Sergio 2cd5453b64 estado: cosecha granja 2026-08-27T15:02:15Z — avance del árbol KDE 2026-08-27 15:02:15 +00:00
Sergio f08e13383e estado: cosecha granja 2026-08-27T14:31:55Z — avance del árbol KDE 2026-08-27 14:31:55 +00:00
Sergio 3a4da09851 estado: cosecha granja 2026-08-27T14:02:08Z — avance del árbol KDE 2026-08-27 14:02:08 +00:00
Sergio a8b7ec9ba9 estado: cosecha granja 2026-08-27T13:32:10Z — avance del árbol KDE 2026-08-27 13:32:11 +00:00
Sergio 9e4db8e6ca estado: cosecha granja 2026-08-27T13:01:47Z — avance del árbol KDE 2026-08-27 13:01:47 +00:00
Sergio 9a4689e568 estado: cosecha granja 2026-08-27T12:31:52Z — avance del árbol KDE 2026-08-27 12:31:52 +00:00
Sergio ead6dc2218 estado: cosecha granja 2026-08-27T12:01:57Z — avance del árbol KDE 2026-08-27 12:01:57 +00:00
Sergio e10615e60d estado: cosecha granja 2026-08-27T11:31:56Z — avance del árbol KDE 2026-08-27 11:31:56 +00:00
Sergio 2b7e51be3f estado: cosecha granja 2026-08-27T11:01:54Z — avance del árbol KDE 2026-08-27 11:01:54 +00:00
Sergio abfcd45cc3 estado: cosecha granja 2026-08-27T10:31:58Z — avance del árbol KDE 2026-08-27 10:31:58 +00:00
Sergio 729ad0d687 estado: cosecha granja 2026-08-27T10:01:56Z — avance del árbol KDE 2026-08-27 10:01:56 +00:00
Sergio ac506b4d1b estado: cosecha granja 2026-08-27T09:31:57Z — avance del árbol KDE 2026-08-27 09:31:57 +00:00
Sergio 1d32b034de estado: cosecha granja 2026-08-27T09:02:01Z — avance del árbol KDE 2026-08-27 09:02:01 +00:00
Sergio acd156de4d estado: cosecha granja 2026-08-27T08:31:58Z — avance del árbol KDE 2026-08-27 08:31:58 +00:00
Sergio 8eedd414e2 estado: cosecha granja 2026-08-27T08:02:12Z — avance del árbol KDE 2026-08-27 08:02:12 +00:00
Sergio ae2cbc1c03 estado: cosecha granja 2026-08-27T07:31:55Z — avance del árbol KDE 2026-08-27 07:31:55 +00:00
Sergio 4f35256305 estado: cosecha granja 2026-08-27T07:02:02Z — avance del árbol KDE 2026-08-27 07:02:02 +00:00
Sergio e26e32b16e estado: cosecha granja 2026-08-27T06:32:04Z — avance del árbol KDE 2026-08-27 06:32:04 +00:00
Sergio 624cfbce3e estado: cosecha granja 2026-08-27T06:02:01Z — avance del árbol KDE 2026-08-27 06:02:01 +00:00
Sergio e3fda11875 estado: cosecha granja 2026-08-27T05:32:00Z — avance del árbol KDE 2026-08-27 05:32:00 +00:00
Sergio e578873243 estado: cosecha granja 2026-08-27T05:02:04Z — avance del árbol KDE 2026-08-27 05:02:04 +00:00
Sergio 3fa0fc3817 estado: cosecha granja 2026-08-27T04:32:44Z — avance del árbol KDE 2026-08-27 04:32:45 +00:00
Sergio 6d72101795 estado: cosecha granja 2026-08-27T04:02:10Z — avance del árbol KDE 2026-08-27 04:02:10 +00:00
Sergio 32fb404f88 estado: cosecha granja 2026-08-27T03:32:17Z — avance del árbol KDE 2026-08-27 03:32:17 +00:00
Sergio 252dec45ab estado: cosecha granja 2026-08-27T03:01:58Z — avance del árbol KDE 2026-08-27 03:01:58 +00:00
Sergio 993fc239e8 estado: cosecha granja 2026-08-27T02:31:52Z — avance del árbol KDE 2026-08-27 02:31:52 +00:00
Sergio c4ef89b474 estado: cosecha granja 2026-08-27T01:31:55Z — avance del árbol KDE 2026-08-27 01:31:55 +00:00
Sergio d8e36085b2 estado: cosecha granja 2026-08-27T01:02:12Z — avance del árbol KDE 2026-08-27 01:02:12 +00:00
Sergio 320e88f675 estado: cosecha granja 2026-08-27T00:31:56Z — avance del árbol KDE 2026-08-27 00:31:56 +00:00
Sergio 30f164b181 estado: cosecha granja 2026-08-27T00:02:01Z — avance del árbol KDE 2026-08-27 00:02:01 +00:00
Sergio dd58715e54 estado: cosecha granja 2026-08-26T23:32:18Z — avance del árbol KDE 2026-08-26 23:32:18 +00:00
Sergio d5c0a91309 estado: cosecha granja 2026-08-26T22:31:29Z — avance del árbol KDE 2026-08-26 22:31:29 +00:00
Sergio 560448aaf1 estado: cosecha granja 2026-08-26T22:02:59Z — avance del árbol KDE 2026-08-26 22:02:59 +00:00
Sergio 54e66a172a estado: cosecha granja 2026-08-26T21:32:06Z — avance del árbol KDE 2026-08-26 21:32:06 +00:00
Sergio 75b8cdb945 estado: cosecha granja 2026-08-26T20:01:42Z — avance del árbol KDE 2026-08-26 20:01:43 +00:00
Sergio 3d38d5e573 estado: cosecha granja 2026-08-26T19:31:29Z — avance del árbol KDE 2026-08-26 19:31:29 +00:00
Sergio f5decc26b1 estado: cosecha granja 2026-08-26T19:01:29Z — avance del árbol KDE 2026-08-26 19:01:29 +00:00
SergioandClaude Opus 5 45b95f78b9 ADR 0013: mirror de fuentes — la URL es transporte, el sha256 es la identidad
`rsync` (404 de samba.org) y `musl` (musl.libc.org no responde) no se pueden construir hoy, y no por
culpa nuestra. Es el estado estacionario: una distro que construye TODO desde fuente tiene tantos
puntos de fallo como fuentes, y son servidores de terceros que nadie nos prometió mantener.

LA MEDIDA, peor de lo que parecía. Sobre 1167 fuentes (561 tarball + 606 git, 79 hosts):
github.com sostiene 742 — el 64% del corpus depende de UN host. Doce hosts sostienen el 89%. Y 43
hosts sostienen exactamente UNA receta cada uno: ahí es donde muerde el bit-rot lento.

El vigía, en su primera corrida: 8 URLs muertas de 1167. Tres de ellas —busybox, freetype,
freetype-shared— están SELLADAS Y EN USO: son el shell y las fuentes del escritorio que se capturó
hoy. Se salvan sólo porque el tarball sigue en la caché local de esta máquina.

LA URL NUNCA FUE LA IDENTIDAD, y el código ya lo sabía: `hash_inputs` usa `tarball:{sha256}` /
`git:{commit}` y el `..` descarta la URL; la caché se nombra `{sha256}.tar` con un comentario que
dice literalmente que cambiar de mirror no la invalida. Añadir mirrors NO re-hashea NADA. Faltaba el
mecanismo, no el diseño.

Orden: caché local → mirror propio → upstream. El mirror va ANTES, no como rescate: el sha256 se
verifica igual, así que no hay diferencia de contenido posible, y un mirror que sólo se usa cuando
upstream falla es un mirror que nadie prueba — se descubre roto el día que hace falta.

LO QUE HAY QUE HACER BIEN. Un mirror que sirve calladamente lo que upstream perdió convierte un
fallo ruidoso en silencio. Por eso construir y vigilar van SEPARADOS: `hammer build` nunca avisa
(sería ruido en 561 recetas), y `fuentes-vigia.sh` pide cabeceras, escribe
docs/state/fuentes-vigia.json y lo corre el latido. Sin ese contrapeso las URLs se mueren una a una
y el corpus queda irreconstruible con todo en verde — el mismo modo de fallo que dejó el grafo de
wlr 17 días anunciando un 121/121 falso.

 PROHIBIDO cambiar el sha256 para "arreglar" una URL muerta. Es la tentación natural ante un 404 y
no arregla una descarga: cambia lo que la distro construye. Otro sha256 es otro contenido, y la
receta seguiría diciendo `rsync 3.4.4` mientras construye otra cosa.

VERIFICADO DE PUNTA A PUNTA. El primer intento —construir busybox con el mirror puesto— dijo BUILD
OK y NO PROBÓ NADA: cache-hit del artefacto, cero bytes descargados. La prueba válida usa una receta
efímera con un sha256 que sí está en el mirror y una URL que ni resuelve por DNS. Sin HAMMER_MIRROR:
`curl (6) Could not resolve host`. Con él: sella, con el contenido real.

Mirror poblado: 126 objetos en el Storage Box que ya se paga. `cargo test -p hammer-build`: 5/5.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016v9ozVm44p6DB7EMXeZK4o
2026-08-26 18:57:40 +00:00