el kernel genérico enciende `nf_tables` — y rust entra a la cola de la granja
Dos cosas a moler, las dos en el worker (que tiene 6 cores, 16 G y 94 G libres), encoladas por
ENLACE a la receta canónica y no por copia: `takana hash` da el MISMO b3 por el enlace que por el
fichero real, así que la cola no puede divergir de lo canónico — que es justo el defecto que el
propio `farm-worker-loop.sh` documenta de las colas viejas («su copia aparcada era la versión
ANTERIOR y seguía leyéndose como deuda abierta»).
· `linux-generic` (b3:63fdd57c…, antes 23f1cc43…): `NETFILTER_ADVANCED`, `NF_TABLES`,
`NF_TABLES_INET`, `NFT_CT`, `NFT_LIMIT`, `NFT_COUNTER`, `NFT_LOG`, `NFT_REJECT{,_INET}` y
`NETFILTER_SYNPROXY`/`NFT_SYNPROXY`. Es lo que pide el cortafuegos de tawasuyu (SDD-ENTRADA): la
tabla `inet`, el estado de conexión y el `limit rate` POR ELEMENTO de set, que es el ban por IP
dentro del kernel y el reemplazo de fail2ban. SYNPROXY va ahora porque encenderlo después cuesta
otro kernel y otro reinicio de producción.
· `rust` (b3:aa5d81e8…): el escalón 2 del SDD 31, que estaba en `never`. El worker ya tiene `llvm21`
sellado con el MISMO hash que el hub (95956a16…), así que arranca desde ahí y no lo reconstruye.
Los dos hashes coinciden hub↔worker, comprobado antes de sembrar: el worker va a sellar exactamente
lo que sellaría acá.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Delta semántico
Ninguna definición cambió: el cambio es de texto, documentación o datos.
3 archivos · +22 −0
diff --git a/recipes/incoming/linux-generic.toml b/recipes/incoming/linux-generic.toml
new file mode 120000
index 00000000..83e950eb
--- /dev/null
+++ b/recipes/incoming/linux-generic.toml
@@ -0,0 +1 @@
+../linux-generic.toml
\ No newline at end of file
diff --git a/recipes/incoming/rust.toml b/recipes/incoming/rust.toml
new file mode 120000
index 00000000..f3d3510b
--- /dev/null
+++ b/recipes/incoming/rust.toml
@@ -0,0 +1 @@
+../rust.toml
\ No newline at end of file
diff --git a/recipes/linux-generic.toml b/recipes/linux-generic.toml
index b57bb075..a42594a7 100644
--- a/recipes/linux-generic.toml
+++ b/recipes/linux-generic.toml
@@ -19,6 +19,23 @@
# NVK (Vulkan). La mesa del otro agente es IRIS-ONLY ⇒ hay que construir una mesa con nouveau/NVK
# para que mirada renderice en NVIDIA. Eso es del frente del otro agente. El kernel sólo aporta
# el /dev/dri/cardN con KMS.
+# ⚠️ NETFILTER: `nf_tables` VA EXPLÍCITO, y se descubrió porque FALTABA (2026-09-15). En la caja de
+# producción, con `nftables` instalado y sellado:
+#
+# $ nft list ruleset
+# netlink: Error: cache initialization failed: Invalid argument
+#
+# El `.config` sellado lo decía: `CONFIG_NETFILTER=y`, `CONFIG_NF_CONNTRACK=y` y
+# **`# CONFIG_NF_TABLES is not set`** — porque `make defconfig` deja `NETFILTER_ADVANCED` apagado y
+# NF_TABLES cuelga de ella. O sea: una caja de producción **sin cortafuegos de ninguna clase**, con
+# el userland completo y el kernel diciendo que no. Es la lección de esta misma familia de recetas:
+# *la receta dice lo que se CAMBIÓ; sólo el `.config` sellado dice lo que QUEDÓ.*
+#
+# Lo que se enciende es exactamente lo que pide el cortafuegos de tawasuyu (`shared/cortafuegos`,
+# SDD-ENTRADA): tabla `inet` (`NF_TABLES_INET`), estado de conexión (`NFT_CT`), y el `limit rate`
+# por elemento de set (`NFT_LIMIT`) que es lo que implementa el ban por IP **dentro del kernel**, sin
+# daemon — el reemplazo de fail2ban. `NFT_SYNPROXY` va porque ese SDD lo tiene planeado detrás de un
+# flag y encenderlo después costaría otro kernel y otro reinicio de producción.
# Compilador: CC=gcc/HOSTCC=gcc — gueto-GCC (zig cc choca con el kbuild x86), igual que linux.toml/metal.
name = "linux-generic"
@@ -52,6 +69,9 @@ scripts/config -d MODULE_SIG -d MODULE_SIG_ALL -d DEBUG_INFO_BTF -d DEBUG_INFO -
-e OVERLAY_FS_REDIRECT_DIR -e OVERLAY_FS_INDEX -e OVERLAY_FS_XINO_AUTO -e OVERLAY_FS_METACOPY \
-e SECURITY -e SECURITY_LANDLOCK -e AUDIT -e IO_URING -e BPF_SYSCALL \
-e MEMCG -e PSI -d PSI_DEFAULT_DISABLED \
+ -e NETFILTER_ADVANCED -e NF_TABLES -e NF_TABLES_INET -e NF_CONNTRACK -e NF_CONNTRACK_MARK \
+ -e NFT_CT -e NFT_LIMIT -e NFT_COUNTER -e NFT_LOG -e NFT_REJECT -e NFT_REJECT_INET \
+ -e NETFILTER_SYNPROXY -e NFT_SYNPROXY \
-e VIRTIO -e VIRTIO_PCI -e VIRTIO_BLK -e VIRTIO_NET -e DRM_VIRTIO_GPU \
-e PCI -e PCIEPORTBUS -e ACPI -e FW_LOADER \
-e EXT4_FS -e SQUASHFS -e SQUASHFS_XZ -e SQUASHFS_ZSTD -e SQUASHFS_LZ4 \