tawasuyu

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

TOML 1182Shell 87Rust 63Markdown 541592 Definitions

caddy: receta TERMINADA — era un import de nix con un tag flotante

Su propia cabecera decía «PUNTO DE PARTIDA, no final», y el `commit` era el TAG `v2.11.4`. Eso
contradice el ADR 0006: un tag se puede mover, y entonces la misma receta construye otra cosa sin que
el hash lo note. Anclado con `takana pin` al SHA inmutable `e2eee6a7…`; el hash se movió a propósito
(`b3:d38acaa0…` → `b3:c915987d…`), que es exactamente lo que un anclaje debe hacer.

**Por qué importaba terminarla**: el `caddy` de gioser NO TIENE DUEÑO — es un binario puesto a mano
en `/usr/bin`, sin paquete y sin receta (lo midió `scripts/mudanza/censar.py` preguntándole a
pacman). Se pierde con la máquina. Con la receta anclada, el servidor nuevo lo declara en su perfil y
lo reconstruye: la diferencia entre mudar un servidor y poder mudarlo otra vez.

Verificado que sirve, no sólo que compila: 77 MB estáticos, **0 intérpretes requeridos** (Go estático
no arrastra sonames, así que no repite la fuga del `NEEDED` colgante), y un `file-server` de prueba
contesta **200**.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RomoxEGZUhaT4pob1QSX5x

d6734cc0a28a633e70d494d7077b56a4b0cb58b7 · by Sergio · (1 month ago) · parent c3d0c339b · browse the tree at this commit

Semantic delta

No definition changed: this change is text, documentation or data.

1 files · +18 −6

diff --git a/recipes/caddy.toml b/recipes/caddy.toml
index fa9e0a14..6e325dc9 100644
--- a/recipes/caddy.toml
+++ b/recipes/caddy.toml
@@ -1,14 +1,26 @@
-# Importada de nixpkgs por `takana import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
-# - el build usa el lab de takana (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
-#   compiler/link/phases y adaptá hasta que compile.
-# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
+# caddy 2.11.4 — servidor web y proxy inverso. Un binario Go estático, sin dependencias en runtime.
+#
+# ── ESTADO: TERMINADA (2026-09-11). Antes era un import de nix en crudo ────────────────────────
+# La cabecera decía «PUNTO DE PARTIDA, no final» y el `commit` era el TAG FLOTANTE `v2.11.4`, que
+# contradice el ADR 0006: un tag se puede mover, y entonces la misma receta construye otra cosa sin
+# que el hash lo note. Anclado con `takana pin` al SHA inmutable `e2eee6a7…` — el hash se movió a
+# propósito (`b3:d38acaa0…` → nuevo), que es exactamente lo que un anclaje debe hacer.
+#
+# ── POR QUÉ IMPORTA QUE ESTÉ TERMINADA ─────────────────────────────────────────────────────────
+# El `caddy` de gioser **no tiene dueño**: es un binario puesto a mano en `/usr/bin`, sin paquete y
+# sin receta (medido por `scripts/mudanza/censar.py`, que le preguntó a pacman). Se pierde con la
+# máquina. Con esta receta el servidor nuevo lo declara en su perfil y lo reconstruye — que es la
+# diferencia entre mudar un servidor y poder mudarlo otra vez (SDD 29).
+#
+# `link = "static"` y CGO apagado: Go estático no arrastra sonames, así que no repite la fuga del
+# `NEEDED` colgante — el binario corre en la imagen sin el sysroot del lab debajo.
 name    = "caddy"
 version = "2.11.4"
 license = "Apache-2.0"
 
 [source]
 repo   = "https://github.com/caddyserver/caddy"
-commit = "v2.11.4"
+commit = "e2eee6a7fce366321294c9c2a79f3146891dcbdf"
 
 [build]
 compiler = "zig-cc"
@@ -16,6 +28,6 @@ target   = "x86_64-linux-musl"
 link     = "static"
 flags    = []
 
-# buildInputs de nix (no usados con CGO off): go
+# `go` es herramienta de BUILD, no dependencia de runtime: el binario sale autocontenido.
 [deps]
 build = ["go"]