harkaq: revisadas las 5 irreducibles — 2 recuperadas, 3 casos genuinos diagnosticados

Ninguna de las 5 necesitaba una receta nueva. Eran falsos irreducibles por
política incompleta + un caso real de de-Alpinización.

FALTABAN 2 SONDAS EN LA POLÍTICA: /usr/bin/cpp (frontend del preprocesador de
gcc, mismo grupo que gcc/c89/c99) y /usr/bin/getent (utilidad NSS de musl).
hammer NO las construye ⇒ se deniegan y clasifican (D3), como gcc. Sin ellas en
`# expect`, arrastraban la receta entera a irreducible. Añadidas a base.policy y
a harkaq-farm-setup.sh (para los próximos workers). Re-clasifiqué SIN re-medir
(la clasificación lee la política; los veredictos crudos no cambian).

nm/ranlib NO se añadieron como sondas: los provee binutils ⇒ son DECLARABLES.
Ponerlos como esperadas dejaría a una receta usar el ranlib de Alpine en vez de
decir "declará binutils" — lo contrario de lo que se busca.

RECUPERADAS (declaradas y fuera de needs-review):
  dhcpcd → make, pkgconf     strace → make

QUEDAN 3, cada una una historia distinta (README en needs-review):
  ncurses  fs.make_dir /usr/lib — ESCRITURA en install, no lectura de Alpine
           (DESTDIR de la receta), NO de-Alpinización.
  mtdev    config.guess/sub del autoconf de Alpine — LA ÚNICA deuda de soberanía
           genuina del barrido (parchar mtdev o escribir recipes/autoconf.toml).
  perl     /etc/hosts,/etc/resolv.conf — config de sistema para tests de red; el
           build completa igual. Runtime base o denegación benigna, no Alpine.

Resultado del barrido completo: de 83 recetas, la deuda de soberanía REAL es UN
caso (mtdev/autoconf). Todo lo demás era declarable o sondas.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-16 06:44:20 -04:00
co-authored by Claude Opus 4.8
parent 7206626e25
commit 895e8202fa
4 changed files with 27 additions and 0 deletions
+23
View File
@@ -0,0 +1,23 @@
# 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 — `/usr/share/autoconf/build-aux/config.guess` + `config.sub` (de-Alpinización real)
mtdev, al `./configure`, toma el `config.guess`/`config.sub` del **autoconf de Alpine** en vez de los
de su propio tarball. hammer no tiene receta de `autoconf`. **Acción, una de:** (a) parchar mtdev para
que use su config.guess embebido; (b) escribir `recipes/autoconf.toml` y declararlo. Es la única deuda
de soberanía genuina de todo el barrido.
## 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.
@@ -0,0 +1 @@
{"estado":"Impuro","canario_visto":true,"domain":"18a3bc08d","contador_kernel":5,"denials":[{"blockers":"fs.read_file","path":"/usr/share/autoconf/build-aux/config.sub","dev":"overlay","ino":"2203057"},{"blockers":"fs.read_file","path":"/usr/share/autoconf/build-aux/config.guess","dev":"overlay","ino":"2203056"},{"blockers":"fs.execute,fs.read_file","path":"/usr/bin/make","dev":"overlay","ino":"2208840"},{"blockers":"fs.execute,fs.read_file","path":"/usr/bin/make","dev":"overlay","ino":"2208840"}]}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long