bash-completion: cerrar el hueco del tabulador

bash es RAÍZ del perfil base —el shell de la distro— y cinco recetas repartidas en cuatro colas
(appstream, colord, gnome-shell, modemmanager, swayimg) instalan completados en el directorio
que este paquete define. Sin él NO los instalan y siguen adelante: nada falla, nadie se entera,
y el usuario se queda sin tabulador en las herramientas del sistema. Hueco de RUNTIME puro, de
los que ninguna métrica de deuda puede ver — por eso hizo falta la frontera para encontrarlo.

Va al CORPUS y como raíz de , no a una cola: lo alcanzan las cuatro imágenes de escritorio
y la CLI, y una receta resuelve sibling-first y después el catálogo padre, nunca una cola
hermana. Y entra como RAÍZ porque nadie lo alcanza por deps de build: los consumidores sólo
preguntan por su .pc.

Verificado como consumidor, las dos mitades:
  pkgconf --variable=completionsdir bash-completion → /usr/share/bash-completion/completions
  el marco carga 131 completados y complete  devuelve regla · 522 ficheros instalados
  REPRODUCE bit a bit · tarball en el mirror

Triaje: los huecos vuelven a CERO. base pasa de 26 a 27 raíces, clausura 58/58 sellada.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014QPJteswQvP1L7zSBrQQe2
This commit is contained in:
Sergio
2026-09-09 02:48:20 +00:00
co-authored by Claude Opus 5
parent 854b839ae8
commit 1da6851775
9 changed files with 221 additions and 65 deletions
+35 -12
View File
@@ -1,14 +1,14 @@
{
"schema": "hammer-build-state/1",
"totals": {
"recipes": 892,
"nodes": 894,
"sealed": 892,
"recipes": 893,
"nodes": 895,
"sealed": 893,
"ajeno": 2
},
"by_class": {
"ajeno": 2,
"c": 230,
"c": 231,
"go": 362,
"gui": 41,
"kernel": 6,
@@ -17,7 +17,7 @@
"debt_by_class": {},
"by_queue": {
"corpus": {
"sealed": 864,
"sealed": 865,
"ajeno": 2
},
"incoming-cosmic": {
@@ -26,14 +26,14 @@
},
"by_profile": {
"base": {
"raices": 26,
"clausura": 57,
"sealed": 57
"raices": 27,
"clausura": 58,
"sealed": 58
},
"cli": {
"raices": 46,
"clausura": 80,
"sealed": 80
"raices": 47,
"clausura": 81,
"sealed": 81
},
"escritorio-cosmic": {
"raices": 42,
@@ -874,6 +874,29 @@
"escritorio-cosmic",
"escritorio-sway"
],
"dependientes_total": 1
},
"bash-completion": {
"iname": "bash-completion",
"version": "2.18.0",
"link": "dynamic",
"compiler": "zig-cc",
"deps": [
"bash",
"pkgconf"
],
"cls": "c",
"queue": "corpus",
"foreign": false,
"hash": "b3:86e9716873c35d1e8a4bc1b6317d3f37d5bc7b3d7c12132ae3a3ee7a24bcebaf",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"base",
"cli",
"escritorio-sway"
],
"dependientes_total": 0
},
"bat": {
@@ -13204,7 +13227,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 393
"dependientes_total": 394
},
"plow": {
"iname": "plow",
+35 -12
View File
@@ -1,14 +1,14 @@
{
"schema": "hammer-build-state/1",
"totals": {
"recipes": 918,
"nodes": 920,
"sealed": 918,
"recipes": 919,
"nodes": 921,
"sealed": 919,
"ajeno": 2
},
"by_class": {
"ajeno": 2,
"c": 270,
"c": 271,
"go": 362,
"gui": 47,
"kernel": 6,
@@ -17,7 +17,7 @@
"debt_by_class": {},
"by_queue": {
"corpus": {
"sealed": 855,
"sealed": 856,
"ajeno": 2
},
"incoming-gnome": {
@@ -26,14 +26,14 @@
},
"by_profile": {
"base": {
"raices": 26,
"clausura": 56,
"sealed": 56
"raices": 27,
"clausura": 57,
"sealed": 57
},
"cli": {
"raices": 46,
"clausura": 79,
"sealed": 79
"raices": 47,
"clausura": 80,
"sealed": 80
},
"escritorio-gnome": {
"raices": 23,
@@ -966,6 +966,29 @@
"escritorio-cosmic",
"escritorio-sway"
],
"dependientes_total": 1
},
"bash-completion": {
"iname": "bash-completion",
"version": "2.18.0",
"link": "dynamic",
"compiler": "zig-cc",
"deps": [
"bash",
"pkgconf"
],
"cls": "c",
"queue": "corpus",
"foreign": false,
"hash": "b3:86e9716873c35d1e8a4bc1b6317d3f37d5bc7b3d7c12132ae3a3ee7a24bcebaf",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"base",
"cli",
"escritorio-sway"
],
"dependientes_total": 0
},
"bat": {
@@ -14033,7 +14056,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 393
"dependientes_total": 394
},
"plow": {
"iname": "plow",
+35 -12
View File
@@ -1,14 +1,14 @@
{
"schema": "hammer-build-state/1",
"totals": {
"recipes": 1043,
"nodes": 1044,
"sealed": 1043,
"recipes": 1044,
"nodes": 1045,
"sealed": 1044,
"ajeno": 1
},
"by_class": {
"ajeno": 1,
"c": 397,
"c": 398,
"go": 362,
"gui": 45,
"kernel": 6,
@@ -17,7 +17,7 @@
"debt_by_class": {},
"by_queue": {
"corpus": {
"sealed": 850,
"sealed": 851,
"ajeno": 1
},
"incoming-kde": {
@@ -26,14 +26,14 @@
},
"by_profile": {
"base": {
"raices": 26,
"clausura": 52,
"sealed": 52
"raices": 27,
"clausura": 53,
"sealed": 53
},
"cli": {
"raices": 46,
"clausura": 75,
"sealed": 75
"raices": 47,
"clausura": 76,
"sealed": 76
},
"escritorio-kde": {
"raices": 47,
@@ -992,6 +992,29 @@
"escritorio-cosmic",
"escritorio-sway"
],
"dependientes_total": 1
},
"bash-completion": {
"iname": "bash-completion",
"version": "2.18.0",
"link": "dynamic",
"compiler": "zig-cc",
"deps": [
"bash",
"pkgconf"
],
"cls": "c",
"queue": "corpus",
"foreign": false,
"hash": "b3:86e9716873c35d1e8a4bc1b6317d3f37d5bc7b3d7c12132ae3a3ee7a24bcebaf",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"base",
"cli",
"escritorio-sway"
],
"dependientes_total": 0
},
"bat": {
@@ -18038,7 +18061,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 393
"dependientes_total": 394
},
"plasma-activities": {
"iname": "plasma-activities",
+38 -15
View File
@@ -1,14 +1,14 @@
{
"schema": "hammer-build-state/1",
"totals": {
"recipes": 877,
"nodes": 879,
"sealed": 877,
"recipes": 878,
"nodes": 880,
"sealed": 878,
"ajeno": 2
},
"by_class": {
"ajeno": 2,
"c": 235,
"c": 236,
"go": 362,
"gui": 41,
"kernel": 6,
@@ -17,7 +17,7 @@
"debt_by_class": {},
"by_queue": {
"corpus": {
"sealed": 865,
"sealed": 866,
"ajeno": 2
},
"incoming-wlr": {
@@ -26,14 +26,14 @@
},
"by_profile": {
"base": {
"raices": 26,
"clausura": 57,
"sealed": 57
"raices": 27,
"clausura": 58,
"sealed": 58
},
"cli": {
"raices": 46,
"clausura": 80,
"sealed": 80
"raices": 47,
"clausura": 81,
"sealed": 81
},
"escritorio-mirada": {
"raices": 17,
@@ -41,9 +41,9 @@
"sealed": 41
},
"escritorio-sway": {
"raices": 74,
"clausura": 203,
"sealed": 203
"raices": 75,
"clausura": 204,
"sealed": 204
}
},
"sin_perfil": 648,
@@ -874,6 +874,29 @@
"escritorio-cosmic",
"escritorio-sway"
],
"dependientes_total": 1
},
"bash-completion": {
"iname": "bash-completion",
"version": "2.18.0",
"link": "dynamic",
"compiler": "zig-cc",
"deps": [
"bash",
"pkgconf"
],
"cls": "c",
"queue": "corpus",
"foreign": false,
"hash": "b3:86e9716873c35d1e8a4bc1b6317d3f37d5bc7b3d7c12132ae3a3ee7a24bcebaf",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"base",
"cli",
"escritorio-sway"
],
"dependientes_total": 0
},
"bat": {
@@ -12830,7 +12853,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 393
"dependientes_total": 394
},
"plow": {
"iname": "plow",
+35 -12
View File
@@ -1,14 +1,14 @@
{
"schema": "hammer-build-state/1",
"totals": {
"recipes": 866,
"nodes": 868,
"sealed": 866,
"recipes": 867,
"nodes": 869,
"sealed": 867,
"ajeno": 2
},
"by_class": {
"ajeno": 2,
"c": 224,
"c": 225,
"go": 362,
"gui": 41,
"kernel": 6,
@@ -17,20 +17,20 @@
"debt_by_class": {},
"by_queue": {
"corpus": {
"sealed": 866,
"sealed": 867,
"ajeno": 2
}
},
"by_profile": {
"base": {
"raices": 26,
"clausura": 57,
"sealed": 57
"raices": 27,
"clausura": 58,
"sealed": 58
},
"cli": {
"raices": 46,
"clausura": 80,
"sealed": 80
"raices": 47,
"clausura": 81,
"sealed": 81
},
"escritorio-mirada": {
"raices": 17,
@@ -866,6 +866,29 @@
"escritorio-cosmic",
"escritorio-sway"
],
"dependientes_total": 1
},
"bash-completion": {
"iname": "bash-completion",
"version": "2.18.0",
"link": "dynamic",
"compiler": "zig-cc",
"deps": [
"bash",
"pkgconf"
],
"cls": "c",
"queue": "corpus",
"foreign": false,
"hash": "b3:86e9716873c35d1e8a4bc1b6317d3f37d5bc7b3d7c12132ae3a3ee7a24bcebaf",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"base",
"cli",
"escritorio-sway"
],
"dependientes_total": 0
},
"bat": {
@@ -12713,7 +12736,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 393
"dependientes_total": 394
},
"plow": {
"iname": "plow",
+2 -1
View File
@@ -168,8 +168,9 @@ perfiles = ["escritorio-kde"]
piden = ["dolphin"]
[candidato."bash-completion"]
veredicto = "hueco"
veredicto = "provisto"
sugerencia = "hueco?"
provee = "bash-completion"
porque = "lo piden 5 recetas de la imagen — difícil que sea accesorio"
perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
piden = ["appstream", "colord", "gnome-shell", "modemmanager", "swayimg"]
+1
View File
@@ -67,3 +67,4 @@ libxkbfile 529bace3f42db52bac31f369f2e336f674c9621c3f61032e9ed3dbd2e35a33ba 2026
libXfont2 297f66a9b864360a53e1495199c3f53c04c78db2616df8da6e37c5dbef87eb32 2026-09-08 reproduce
xkbcomp ae4a27e7b8b6672ba0ffd2ddba8127f4b5f84b50358b0c3337d0bf0281873225 2026-09-08 reproduce
xwayland d43f7ba02a1f9f4b2cf01e1d03610020779991fb13adbd804f5dd3007244bf3d 2026-09-08 reproduce
bash-completion 86e9716873c35d1e8a4bc1b6317d3f37d5bc7b3d7c12132ae3a3ee7a24bcebaf 2026-09-09 reproduce
1 # repro-verificado.tsv — qué artefactos se comprobaron que REPRODUCEN bit a bit, y cuándo.
67 libXfont2
68 xkbcomp
69 xwayland
70 bash-completion
+5 -1
View File
@@ -24,7 +24,11 @@ descripcion = "userland foundational C: la distro arranca y se usa (shell, VCS,
# Lift verbatim de BASE_SYSTEM_PKGS (scripts/product-userland-from-repo.sh). De-Alpinizado y firmado,
# tandas base-system-1..3.
paquetes = [
"bash", "git", "sudo", "doas", "util-linux", "shadow", "kbd", "procps-ng",
# `bash-completion` (2026-09-09): el tabulador de las herramientas del sistema. Entra como raíz
# porque NADIE lo alcanza por deps de build — los paquetes que instalan completados sólo preguntan
# por su `.pc` y, si no está, se saltan la instalación en silencio. Es un hueco de RUNTIME puro,
# de los que ninguna métrica de deuda puede ver. Salió del triaje de la frontera con 5 consumidores.
"bash", "bash-completion", "git", "sudo", "doas", "util-linux", "shadow", "kbd", "procps-ng",
"iproute2", "iputils", "dhcpcd", "e2fsprogs", "dosfstools", "parted", "rsync",
"sed", "tzdata", "vim", "dbus", "ca-certificates", "gnupg", "lsof", "strace",
"pciutils", "usbutils", "mandoc",
+35
View File
@@ -0,0 +1,35 @@
# bash-completion 2.18.0 — el marco de completado programable de bash: el tabulador que completa
# subcomandos, opciones y argumentos de las herramientas del sistema.
#
# POR QUÉ AL CORPUS Y NO A UNA COLA. `bash` es RAÍZ del perfil `base`, o sea el shell de la distro
# entera, y las recetas que instalan completados viven repartidas en cuatro colas (appstream y colord
# en gnome, gnome-shell, modemmanager, swayimg en wlr). Lo que comparten varias imágenes vive en el
# corpus o no lo alcanzan — una receta resuelve sibling-first y después el catálogo PADRE, nunca una
# cola hermana.
#
# POR QUÉ ERA UN HUECO INVISIBLE. Ningún build lo necesita: los paquetes preguntan por
# `pkg-config --variable=completionsdir bash-completion` y, si no está, **no instalan sus completados
# y siguen adelante**. Nada falla, nadie se entera, y el usuario se queda sin tabulador. Salió en el
# triaje de la frontera (2026-09-09) con 5 consumidores; ver docs/state/frontera-triaje.toml.
name = "bash-completion"
version = "2.18.0"
license = "GPL-2.0-or-later"
[source]
tarball = "https://github.com/scop/bash-completion/releases/download/2.18.0/bash-completion-2.18.0.tar.xz"
sha256 = "88bcf85124f77f74f2f2f8bcd16ac4382d807a827ede742a64940c7116aea33f"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "dynamic"
[build.phases]
# Sin compilación real: instala scripts de shell y el `.pc` que los consumidores consultan para
# saber DÓNDE dejar sus completados. `--disable-static` no aplica; no hay librería.
configure = "./configure --prefix=/usr --sysconfdir=/etc"
compile = "true"
install = "make install DESTDIR=/out"
[deps]
build = ["pkgconf", "bash"]