El único caso de deuda de soberanía del barrido: mtdev copiaba el config.sub/guess del autoconf de ALPINE (/usr/share/autoconf/build-aux/) porque el suyo (1.1.6) no conoce *-musl. harkaq lo cazó como lectura no declarada del rootfs. CERRADO con recipes/mtdev-config-sub-musl.patch: 11 líneas, +`-musl*` a la whitelist de OS del config.sub DEL PROPIO TARBALL. Ahora es input soberano (hasheado con la receta), sin leer Alpine. Se quitó el `cp /usr/share/autoconf/...` del configure. Verificado: mtdev construye (b3:47708e40) sin tocar /usr/share/autoconf. Método (con un tropiezo honesto): casi afirmo que el `cp` era espurio porque el config.sub en work/sources/mtdev daba exit 0 con musl — pero ese source estaba MUTADO por un build previo (el cp lo había reemplazado por el de Alpine). El tarball ORIGINAL fresco NO conoce musl (exit 1). Casi valido sobre un source contaminado; me salvó chequear el exit code, no el output. DESCUBIERTO AL CERRARLO: mtdev tenía DOS deudas de Alpine, no una. También usa `compiler = "gcc"` (gcc de Alpine, no zig). Bajo la jaula la política deniega /usr/bin/gcc (sonda esperada) y el configure da "C compiler cannot create executables". Es parte de matar-gcc (kernel, cmake, mtdev), frente aparte. LÍMITE DEL MODELO (nuevo, documentado en needs-review): harkaq clasifica gcc como "sonda esperada" SIEMPRE, así que marca la fase Hermetico — pero para una receta compiler=gcc, gcc es ESENCIAL y el build no compila sin él. harkaq no distingue "gcc sondeado (ignorable)" de "gcc = el compilador". Caso límite real del clasificador; no invalida el cierre de config.sub (producción no usa la jaula). make declarado en mtdev (deuda declarable restante). config.sub fuera de needs-review; queda anotado el gcc-compilador. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Deuda que harkaq NO puede declarar sola — revisión humana
De 83 recetas barridas, la deuda genuina se reduce a 3 casos, ninguno "falta una receta grande". Todo lo demás era declarable (make/binutils/pkgconf…) o sondas de compilador de Alpine (gcc, cpp, ldd, c89, c99, getent — se deniegan y clasifican, D3). Los 3 que quedan, cada uno una historia:
ncurses — fs.make_dir /usr/lib (NO es de-Alpinización)
El make install de ncurses escribe en /usr/lib, no en /out/usr/lib. Es una escritura de
estructura durante install, no la lectura de una lib de Alpine. Causa probable: la fase install no
respeta DESTDIR para ese subárbol. Acción: revisar el install de la receta (¿pasa DESTDIR a
todo?), no declarar nada. Conceder /usr/lib como rw sería tapar el síntoma y cegar la evidencia.
mtdev — config.sub de Alpine ✅ CERRADO (2026-07-16), + gcc-compilador descubierto
config.sub: cerrado. El config.sub de mtdev 1.1.6 no conoce *-musl, así que la receta copiaba
el de Alpine (/usr/share/autoconf/build-aux/). Ahora se parchea el config.sub del propio tarball
(recipes/mtdev-config-sub-musl.patch, +-musl* a la whitelist de OS, 11 líneas): input soberano,
hasheado con la receta, sin tocar Alpine. Verificado: mtdev construye y no lee /usr/share/autoconf.
Descubierto al cerrarlo — mtdev tenía DOS deudas de Alpine: también usa compiler = "gcc" (el gcc
de Alpine, no zig). Bajo la jaula, la política deniega /usr/bin/gcc (sonda esperada) y el configure
da C compiler cannot create executables. Es parte de la campaña matar gcc (kernel, cmake, mtdev),
un frente aparte. Y revela un límite del modelo de clasificación: harkaq marca gcc como "sonda
esperada" siempre, así que dice Hermetico, pero para una receta compiler=gcc el gcc es esencial y
el build no compila sin él. harkaq no distingue "gcc sondeado (ignorable)" de "gcc = compilador".
perl — /etc/hosts, /etc/resolv.conf (config de sistema para tests)
Los tests de perl durante el build resuelven red y leen la config del sistema. No es un binario ni
lib de Alpine: es config. El build completa igual (esos tests fallan o se saltan bajo la jaula).
Acción, una de: (a) añadir /etc/hosts+/etc/resolv.conf al runtime base si se quiere que esos
tests corran; (b) aceptar la denegación (benigna). No es de-Alpinización.