plan-botar-busybox: triaje de los 47 — 26 son nombres, no implementaciones
El censo dice «SÓLO lo provee busybox: 47 ← el trabajo que queda» (eran 79 al
escribir el plan). Ese número se lee como 47 implementaciones por escribir, y
medido uno por uno NO lo es.
Medí qué publica cada dueño declarado en su artefacto, y casi todos ya viajan
en los perfiles ofreciendo la misma capacidad con OTRO nombre:
iproute2 → ip ss bridge tc (no ifconfig/netstat/route/brctl/…)
shadow → useradd groupadd … (no adduser/addgroup/…)
kbd → loadkeys dumpkeys … (no loadkmap/dumpkmap/loadfont)
dhcpcd → dhcpcd (no udhcpc/udhcpc6)
iputils → ping arping tracepath (no ping6/traceroute6)
util-linux → agetty hexdump (no getty/hd)
⇒ El reparto queda así:
A · RETIRAR 26 — net-tools y los wrappers estilo Debian. Cero código: el
número baja de 47 a 21 declarándolos retirados en el TSV. Hoy figuran con
`destino` y eso los hace parecer trabajo pendiente.
B · ALIAS 2 — getty→agetty y hd→hexdump, los dos VERIFICADOS presentes en el
artefacto de util-linux. ⚠ `nc`→socat NO es alias: la sintaxis difiere y
un enlace rompería a quien lo invoque.
C · HUECOS REALES 19, y sólo tres grandes:
· sh/ash/hush — el bloqueante conocido (brush medido, insuficiente para
el sandbox; queda medirlo como /bin/sh del PRODUCTO)
· halt/poweroff/reboot — ⚠ carga estructural: medido en la caja VIVA, los
tres resuelven hoy a busybox, y el artefacto de arje-zero publica sólo
`arje-zero`. Sin esto la máquina no se apaga por comando.
· nslookup — no hay NINGÚN cliente DNS de consulta en el store (drill,
dig, host, kdig: ninguno). Hueco de capacidad, no de nombre.
El resto son utilidades chicas, y varias duplican algo ya presente
(ntpd ↔ ntp-daemon de ntpd-rs, rdate ↔ chrony) o son de un init que no
usamos (killall5, cttyhack).
No retiro nada en este commit: el triaje MIDE y REPARTE. Retirar 26 nombres es
una decisión de producto —«esta distro no provee ifconfig»— y merece quedar
escrita como tal, no caer de un barrido.
⚠ Y un dato que el censo no ve: la caja de producción corre el busybox de ANTES
del recorte (1.230.976 bytes, 14-sep, imagen anterior al 21-sep), así que medir
«qué usa el producto» contra ella da un resultado más gordo que el real.
Delta semántico
Ninguna definición cambió: el cambio es de texto, documentación o datos.
1 archivos · +58 −0
- docs/plan-botar-busybox.md +58 −0
diff --git a/docs/plan-botar-busybox.md b/docs/plan-botar-busybox.md
index 580c4f05..6130cb62 100644
--- a/docs/plan-botar-busybox.md
+++ b/docs/plan-botar-busybox.md
@@ -155,6 +155,64 @@ frente C** y se pueden hacer hoy.
8. **ADR — `awk`**, y **ADR — el frente C** (sustituir busybox en `STAGE1_COMPONENTS` y
`ATTEST_PATHS`). No antes de que 1–7 estén cerrados.
+## TRIAJE DE LOS 47 QUE QUEDAN — medido 2026-10-22, y cambia el tamaño del problema
+
+El censo dice «SÓLO lo provee busybox: **47** ← el trabajo que queda» (eran 79 cuando se escribió
+este plan; el paso 2 y el recorte bajaron el resto). Pero ese 47 se lee como «47 implementaciones
+por escribir», y **medido uno por uno no lo es**: la mayoría son NOMBRES HEREDADOS cuya capacidad
+ya viaja con otro nombre. Lo que publica cada dueño declarado, medido en su artefacto:
+
+| dueño | publica de verdad | lo que busybox cubre con otro nombre |
+|---|---|---|
+| `iproute2` | `ip ss bridge tc nstat ifstat routel` | `arp brctl ifconfig ifdown ifenslave ifup nameif netstat route slattach tunctl vconfig` |
+| `shadow` | `useradd userdel groupadd groupdel chpasswd chage…` | `adduser deluser addgroup delgroup` |
+| `kbd` | `loadkeys dumpkeys setfont openvt chvt…` | `loadkmap dumpkmap loadfont` |
+| `dhcpcd` | `dhcpcd` | `udhcpc udhcpc6 dumpleases` |
+| `iputils` | `ping arping tracepath clockdiff` | `ping6 traceroute traceroute6` |
+| `util-linux` | `agetty hexdump` (+200) | `getty hd` |
+
+### A — RETIRAR del TSV: 26 applets, cero trabajo de implementación
+
+Son los nombres de **net-tools** y los wrappers estilo Debian. `ip`/`ss`/`bridge` reemplazan a los
+doce de iproute2 — no es opinión, es que net-tools está obsoleto hace una década y la distro ya
+eligió iproute2. Igual `useradd` sobre `adduser`, `loadkeys` sobre `loadkmap`, `ping -6` sobre
+`ping6`, `dhcpcd` sobre `udhcpc`.
+
+⇒ **No se escriben: se declaran retirados** y el número baja de 47 a 21 sin tocar una línea de
+código. Lo que sí hace falta es decirlo en el TSV, porque hoy figuran con `destino` y eso los hace
+parecer trabajo pendiente.
+
+### B — ALIAS: 2, y uno es dudoso
+
+- `getty` → **`agetty`** de util-linux, que SÍ está en el artefacto (`/sbin/agetty`, medido). Es
+ renombrar en las cards, no empaquetar.
+- `hd` → **`hexdump`** de util-linux (`/usr/bin/hexdump`, medido).
+- ⚠ `nc` → `socat` **NO es alias**: la sintaxis difiere por completo. O se escribe un envoltorio o
+ se retira; un enlace rompería a quien lo invoque.
+
+### C — HUECOS REALES: 19, y sólo tres son grandes
+
+| applet(s) | qué falta | tamaño |
+|---|---|---|
+| `sh` `ash` `hush` | **EL BLOQUEANTE.** `brush` está sellado y medido como insuficiente para el sandbox (ver el veredicto del paso 3). Queda medirlo como `/bin/sh` del PRODUCTO, que es consumidor mucho más blando | grande |
+| `halt` `poweroff` `reboot` | ⚠ **carga estructural, medido en la caja viva: los tres resuelven HOY a busybox.** `arje-zero` figura como dueño y su artefacto publica sólo `arje-zero`. Sin esto la máquina no se apaga por comando | grande |
+| `nslookup` | **no hay NINGÚN cliente DNS de consulta**: `drill`, `dig`, `host`, `kdig` — ninguno existe en el store. Es hueco de capacidad, no de nombre | mediano |
+| `setpriv` | nuestro `util-linux` NO lo construye (medido: ausente del artefacto, y upstream lo trae) ⇒ probablemente una bandera del configure. ⚠ Pero `util-linux` tiene radio 79: tocarlo cascadea | chico, cascada caro |
+| `vlock` `mkpasswd` `cryptpw` `add-shell` `remove-shell` | utilidades sueltas de cuenta/consola que nadie más trae | chicos |
+| `killall5` `cttyhack` `setuidgid` `run-parts` `ntpd` `rdate` `dumpleases` | triaje individual: varios son de un init que no usamos (`killall5`, `cttyhack`) o duplican algo ya presente (`ntpd` ↔ `ntp-daemon` de ntpd-rs, `rdate` ↔ chrony) | chicos |
+
+### Lo que este triaje NO decide
+
+No toca el TSV ni retira nada: **mide y reparte**. Retirar 26 nombres es una decisión de producto
+—«esta distro no provee `ifconfig`»— y merece quedar escrita como tal, no caer de un barrido.
+Y el orden no cambia: sin `sh` no se bota busybox en ningún frente, así que C-fila-1 sigue siendo
+el paso siguiente y todo lo demás es independiente de él.
+
+⚠ **Un dato que el censo no ve y vale para planificar:** la caja de producción corre el busybox
+**de ANTES del recorte** (1.230.976 bytes, 14-sep) porque su imagen es anterior al 21-sep. O sea
+que los applets ya retirados siguen vivos ahí hasta que se rehaga la imagen — medir «qué usa el
+producto» contra esa caja da un resultado más gordo que el real.
+
## La métrica, y el guardián que falta
`docs/state/busybox-applets.tsv` convierte esto en un número que baja: **401 → 272 → … → 0**.