sombras: CERO — promover las 6 compartidas al corpus y barrer sus 16 copias

Las 6 que quedaban (fuse3, hwdata, icu4c, libdisplay-info, libelogind, lua) no tenían copia en
el corpus, así que borrar una habría roto su cola: la resolución es sibling-first y después el
catálogo PADRE, nunca una cola hermana. Se promueve una y se barren las 16.

Las 16 eran byte a byte IDÉNTICAS entre sí, con el mismo ArtifactHash — medido con 'hammer hash',
no deducido del nombre. Cada una la comparten entre 2 y 4 imágenes, que es exactamente el
criterio que dejó escrito xkeyboard-config al promoverse: lo que comparten varias imágenes tiene
que vivir en el corpus o no lo alcanzan.

A diferencia de aquella, acá las copias SÍ se barren en el mismo movimiento: sin copia en el
corpus no había dónde caer, y dejarlas sería mantener hasta 4 ficheros que son el mismo hash.

Verificado con la huella de las 1167 recetas antes y después:
  ficheros de receta   1167 → 1157   (16 borradas, 6 promovidas)
  hashes supervivientes  ninguno se movió ⇒ CERO rebuilds
  los cinco grafos       deuda 0, huérfanas [], sellados == recetas
  static-audit           MIENTEN 0 de 690
  duplicados             SOMBRAS REDUNDANTES: 0   ← de 14

⚠ Y una lectura que casi publico mal: mi primera comparación de hashes dijo 'CAMBIÓ ✗' en las
seis. Era el grep de la comparación, que no casaba y dejaba el valor 'antes' vacío — los hashes
nuevos eran idénticos a los medidos minutos antes. Un instrumento roto que grita es tan malo
como uno mudo.

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-08 19:47:55 +00:00
co-authored by Claude Opus 5
parent a4a462b751
commit ca2c164512
26 changed files with 605 additions and 801 deletions
+147 -11
View File
@@ -1,23 +1,23 @@
{
"schema": "hammer-build-state/1",
"totals": {
"recipes": 860,
"nodes": 862,
"sealed": 860,
"recipes": 866,
"nodes": 868,
"sealed": 866,
"ajeno": 2
},
"by_class": {
"ajeno": 2,
"c": 219,
"c": 224,
"go": 362,
"gui": 41,
"kernel": 6,
"rust": 232
"rust": 233
},
"debt_by_class": {},
"by_queue": {
"corpus": {
"sealed": 860,
"sealed": 866,
"ajeno": 2
}
},
@@ -4763,6 +4763,30 @@
"perfiles": [],
"dependientes_total": 0
},
"fuse3": {
"iname": "fuse3",
"version": "3.18.2",
"link": "dynamic",
"compiler": "zig-cc",
"deps": [
"meson",
"pkgconf",
"python3",
"samurai"
],
"cls": "c",
"queue": "corpus",
"foreign": false,
"hash": "b3:09462465c16e9984a1d9cff16f2fb4d45078ccfb832afd75c2a02e657b38d677",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-cosmic",
"escritorio-gnome"
],
"dependientes_total": 2
},
"fx": {
"iname": "fx",
"version": "39.2.0",
@@ -7407,6 +7431,29 @@
"perfiles": [],
"dependientes_total": 0
},
"hwdata": {
"iname": "hwdata",
"version": "0.393",
"link": "dynamic",
"compiler": "gcc",
"deps": [
"pkgconf"
],
"cls": "c",
"queue": "corpus",
"foreign": false,
"hash": "b3:6fd71a1f1df0cd4d9752f087611468cfc0be6c998381dda2b8816231ab83456e",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-cosmic",
"escritorio-gnome",
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 8
},
"hyperfine": {
"iname": "hyperfine",
"version": "1.20.0",
@@ -7426,6 +7473,28 @@
],
"dependientes_total": 0
},
"icu4c": {
"iname": "icu4c",
"version": "77.1",
"link": "dynamic",
"compiler": "zig-cc",
"deps": [
"pkgconf",
"python3"
],
"cls": "c",
"queue": "corpus",
"foreign": false,
"hash": "b3:92ef211974cea96f559df9784e108c07b155f80932d12d1ef4d7e3cc1363b074",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-gnome",
"escritorio-kde"
],
"dependientes_total": 28
},
"igrep": {
"iname": "igrep",
"version": "1.3.0",
@@ -9028,6 +9097,33 @@
],
"dependientes_total": 3
},
"libdisplay-info": {
"iname": "libdisplay-info",
"version": "0.2.0",
"link": "dynamic",
"compiler": "zig-cc",
"deps": [
"hwdata",
"meson",
"pkgconf",
"python3",
"samurai"
],
"cls": "c",
"queue": "corpus",
"foreign": false,
"hash": "b3:5db3cfd58823ffac3df3a31feafaf87efbad349228747b5ae00ce48b3cfe42c8",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-cosmic",
"escritorio-gnome",
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 6
},
"libdrm": {
"iname": "libdrm",
"version": "2.4.134",
@@ -9055,6 +9151,25 @@
],
"dependientes_total": 148
},
"libelogind": {
"iname": "libelogind",
"version": "0.0.1",
"link": "dynamic",
"compiler": "zig-cc",
"deps": [],
"cls": "rust",
"queue": "corpus",
"foreign": false,
"hash": "b3:285dda6baea988e43dca6e52348be73c302177313c9fcecf9bc7d83eb8682368",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-cosmic",
"escritorio-gnome"
],
"dependientes_total": 6
},
"libepoxy": {
"iname": "libepoxy",
"version": "1.5.10",
@@ -10135,6 +10250,27 @@
],
"dependientes_total": 0
},
"lua": {
"iname": "lua",
"version": "5.4.8",
"link": "dynamic",
"compiler": "zig-cc",
"deps": [
"make",
"pkgconf"
],
"cls": "c",
"queue": "corpus",
"foreign": false,
"hash": "b3:9f3e9ea083e46629af1f7eaf2cd92b8129cc8909d3f552d30aa6ad8708b72016",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-cosmic"
],
"dependientes_total": 2
},
"lua5.2": {
"iname": "lua5.2",
"version": "5.2.4",
@@ -10298,7 +10434,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 119
"dependientes_total": 118
},
"mako": {
"iname": "mako",
@@ -10716,7 +10852,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 125
"dependientes_total": 121
},
"micro": {
"iname": "micro",
@@ -12577,7 +12713,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 396
"dependientes_total": 387
},
"plow": {
"iname": "plow",
@@ -13002,7 +13138,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 312
"dependientes_total": 307
},
"qrcp": {
"iname": "qrcp",
@@ -13617,7 +13753,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 267
"dependientes_total": 263
},
"sassc": {
"iname": "sassc",