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
Semántico sayk'uy
Mana ima sutichaypas t'ikrakurqanchu: qillqalla, yachachiylla utaq willaylla t'ikrakurqan.
30 qillqakuna · +846 −1042
- docs/state/build-state-cosmic.json +55 −25
- docs/state/build-state-gnome.json +35 −24
- docs/state/build-state-kde.json +91 −20
- docs/state/build-state-wlr.json +108 −16
- docs/state/build-state.json +147 −11
- docs/state/duplicados.json +20 −222
- docs/state/keystones.json +28 −28
- docs/state/repro-verificado.tsv +3 −0
- recipes/fuse3.toml +67 −0
- recipes/hwdata.toml +34 −0
- recipes/icu4c.toml +37 −0
- recipes/incoming-cosmic/fuse3.toml +0 −57
- recipes/incoming-cosmic/hwdata.toml +0 −24
- recipes/incoming-cosmic/libdisplay-info.toml +0 −25
- recipes/incoming-cosmic/libelogind.toml +0 −70
- recipes/incoming-cosmic/lua.toml +0 −96
- recipes/incoming-gnome/fuse3.toml +0 −57
- recipes/incoming-gnome/hwdata.toml +0 −24
- recipes/incoming-gnome/icu4c.toml +0 −27
- recipes/incoming-gnome/libdisplay-info.toml +0 −25
- recipes/incoming-gnome/libelogind.toml +0 −70
- recipes/incoming-gnome/lua.toml +0 −96
- recipes/incoming-kde/hwdata.toml +0 −24
- recipes/incoming-kde/icu4c.toml +0 −27
- recipes/incoming-kde/libdisplay-info.toml +0 −25
- recipes/incoming-wlr/hwdata.toml +0 −24
- recipes/incoming-wlr/libdisplay-info.toml +0 −25
- recipes/libdisplay-info.toml +35 −0
- recipes/libelogind.toml +80 −0
- recipes/lua.toml +106 −0
diff --git a/docs/state/build-state-cosmic.json b/docs/state/build-state-cosmic.json
index 00e406e4..3df1f6f2 100644
--- a/docs/state/build-state-cosmic.json
+++ b/docs/state/build-state-cosmic.json
@@ -1,14 +1,14 @@
{
"schema": "hammer-build-state/1",
"totals": {
- "recipes": 891,
- "nodes": 893,
- "sealed": 891,
+ "recipes": 892,
+ "nodes": 894,
+ "sealed": 892,
"ajeno": 2
},
"by_class": {
"ajeno": 2,
- "c": 229,
+ "c": 230,
"go": 362,
"gui": 41,
"kernel": 6,
@@ -17,11 +17,11 @@
"debt_by_class": {},
"by_queue": {
"corpus": {
- "sealed": 858,
+ "sealed": 864,
"ajeno": 2
},
"incoming-cosmic": {
- "sealed": 33
+ "sealed": 28
}
},
"by_profile": {
@@ -5246,16 +5246,17 @@
"samurai"
],
"cls": "c",
- "queue": "incoming-cosmic",
+ "queue": "corpus",
"foreign": false,
"hash": "b3:09462465c16e9984a1d9cff16f2fb4d45078ccfb832afd75c2a02e657b38d677",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
- "escritorio-cosmic"
+ "escritorio-cosmic",
+ "escritorio-gnome"
],
- "dependientes_total": 1
+ "dependientes_total": 2
},
"fx": {
"iname": "fx",
@@ -7907,16 +7908,19 @@
"pkgconf"
],
"cls": "c",
- "queue": "incoming-cosmic",
+ "queue": "corpus",
"foreign": false,
"hash": "b3:6fd71a1f1df0cd4d9752f087611468cfc0be6c998381dda2b8816231ab83456e",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
- "escritorio-cosmic"
+ "escritorio-cosmic",
+ "escritorio-gnome",
+ "escritorio-kde",
+ "escritorio-sway"
],
- "dependientes_total": 1
+ "dependientes_total": 8
},
"hyperfine": {
"iname": "hyperfine",
@@ -7937,6 +7941,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",
@@ -9552,16 +9578,19 @@
"samurai"
],
"cls": "c",
- "queue": "incoming-cosmic",
+ "queue": "corpus",
"foreign": false,
"hash": "b3:5db3cfd58823ffac3df3a31feafaf87efbad349228747b5ae00ce48b3cfe42c8",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
- "escritorio-cosmic"
+ "escritorio-cosmic",
+ "escritorio-gnome",
+ "escritorio-kde",
+ "escritorio-sway"
],
- "dependientes_total": 1
+ "dependientes_total": 6
},
"libdrm": {
"iname": "libdrm",
@@ -9597,16 +9626,17 @@
"compiler": "zig-cc",
"deps": [],
"cls": "rust",
- "queue": "incoming-cosmic",
+ "queue": "corpus",
"foreign": false,
"hash": "b3:285dda6baea988e43dca6e52348be73c302177313c9fcecf9bc7d83eb8682368",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
- "escritorio-cosmic"
+ "escritorio-cosmic",
+ "escritorio-gnome"
],
- "dependientes_total": 1
+ "dependientes_total": 6
},
"libepoxy": {
"iname": "libepoxy",
@@ -10724,7 +10754,7 @@
"pkgconf"
],
"cls": "c",
- "queue": "incoming-cosmic",
+ "queue": "corpus",
"foreign": false,
"hash": "b3:9f3e9ea083e46629af1f7eaf2cd92b8129cc8909d3f552d30aa6ad8708b72016",
"state": "sealed",
@@ -10733,7 +10763,7 @@
"perfiles": [
"escritorio-cosmic"
],
- "dependientes_total": 1
+ "dependientes_total": 2
},
"lua5.2": {
"iname": "lua5.2",
@@ -10898,7 +10928,7 @@
"escritorio-mirada",
"escritorio-sway"
],
- "dependientes_total": 119
+ "dependientes_total": 118
},
"mako": {
"iname": "mako",
@@ -11316,7 +11346,7 @@
"escritorio-mirada",
"escritorio-sway"
],
- "dependientes_total": 125
+ "dependientes_total": 121
},
"micro": {
"iname": "micro",
@@ -13174,7 +13204,7 @@
"escritorio-mirada",
"escritorio-sway"
],
- "dependientes_total": 396
+ "dependientes_total": 387
},
"plow": {
"iname": "plow",
@@ -13643,7 +13673,7 @@
"escritorio-mirada",
"escritorio-sway"
],
- "dependientes_total": 312
+ "dependientes_total": 307
},
"qrcp": {
"iname": "qrcp",
@@ -14258,7 +14288,7 @@
"escritorio-mirada",
"escritorio-sway"
],
- "dependientes_total": 267
+ "dependientes_total": 263
},
"sassc": {
"iname": "sassc",
diff --git a/docs/state/build-state-gnome.json b/docs/state/build-state-gnome.json
index de2825bb..9b1efa08 100644
--- a/docs/state/build-state-gnome.json
+++ b/docs/state/build-state-gnome.json
@@ -17,11 +17,11 @@
"debt_by_class": {},
"by_queue": {
"corpus": {
- "sealed": 849,
+ "sealed": 855,
"ajeno": 2
},
"incoming-gnome": {
- "sealed": 69
+ "sealed": 63
}
},
"by_profile": {
@@ -46,7 +46,7 @@
"sealed": 41
}
},
- "sin_perfil": 662,
+ "sin_perfil": 661,
"orphan_deps": [],
"topo_ok": true,
"nodes": {
@@ -4956,16 +4956,17 @@
"samurai"
],
"cls": "c",
- "queue": "incoming-gnome",
+ "queue": "corpus",
"foreign": false,
"hash": "b3:09462465c16e9984a1d9cff16f2fb4d45078ccfb832afd75c2a02e657b38d677",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
+ "escritorio-cosmic",
"escritorio-gnome"
],
- "dependientes_total": 1
+ "dependientes_total": 2
},
"fx": {
"iname": "fx",
@@ -8096,16 +8097,19 @@
"pkgconf"
],
"cls": "c",
- "queue": "incoming-gnome",
+ "queue": "corpus",
"foreign": false,
"hash": "b3:6fd71a1f1df0cd4d9752f087611468cfc0be6c998381dda2b8816231ab83456e",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
- "escritorio-gnome"
+ "escritorio-cosmic",
+ "escritorio-gnome",
+ "escritorio-kde",
+ "escritorio-sway"
],
- "dependientes_total": 5
+ "dependientes_total": 8
},
"hyperfine": {
"iname": "hyperfine",
@@ -8171,16 +8175,17 @@
"python3"
],
"cls": "c",
- "queue": "incoming-gnome",
+ "queue": "corpus",
"foreign": false,
"hash": "b3:92ef211974cea96f559df9784e108c07b155f80932d12d1ef4d7e3cc1363b074",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
- "escritorio-gnome"
+ "escritorio-gnome",
+ "escritorio-kde"
],
- "dependientes_total": 7
+ "dependientes_total": 28
},
"igrep": {
"iname": "igrep",
@@ -9824,16 +9829,19 @@
"samurai"
],
"cls": "c",
- "queue": "incoming-gnome",
+ "queue": "corpus",
"foreign": false,
"hash": "b3:5db3cfd58823ffac3df3a31feafaf87efbad349228747b5ae00ce48b3cfe42c8",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
- "escritorio-gnome"
+ "escritorio-cosmic",
+ "escritorio-gnome",
+ "escritorio-kde",
+ "escritorio-sway"
],
- "dependientes_total": 2
+ "dependientes_total": 6
},
"libdrm": {
"iname": "libdrm",
@@ -9900,16 +9908,17 @@
"compiler": "zig-cc",
"deps": [],
"cls": "rust",
- "queue": "incoming-gnome",
+ "queue": "corpus",
"foreign": false,
"hash": "b3:285dda6baea988e43dca6e52348be73c302177313c9fcecf9bc7d83eb8682368",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
+ "escritorio-cosmic",
"escritorio-gnome"
],
- "dependientes_total": 5
+ "dependientes_total": 6
},
"libepoxy": {
"iname": "libepoxy",
@@ -11405,14 +11414,16 @@
"pkgconf"
],
"cls": "c",
- "queue": "incoming-gnome",
+ "queue": "corpus",
"foreign": false,
"hash": "b3:9f3e9ea083e46629af1f7eaf2cd92b8129cc8909d3f552d30aa6ad8708b72016",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
- "perfiles": [],
- "dependientes_total": 1
+ "perfiles": [
+ "escritorio-cosmic"
+ ],
+ "dependientes_total": 2
},
"lua5.2": {
"iname": "lua5.2",
@@ -11577,7 +11588,7 @@
"escritorio-mirada",
"escritorio-sway"
],
- "dependientes_total": 119
+ "dependientes_total": 118
},
"mako": {
"iname": "mako",
@@ -11995,7 +12006,7 @@
"escritorio-mirada",
"escritorio-sway"
],
- "dependientes_total": 125
+ "dependientes_total": 121
},
"micro": {
"iname": "micro",
@@ -14022,7 +14033,7 @@
"escritorio-mirada",
"escritorio-sway"
],
- "dependientes_total": 396
+ "dependientes_total": 387
},
"plow": {
"iname": "plow",
@@ -14566,7 +14577,7 @@
"escritorio-mirada",
"escritorio-sway"
],
- "dependientes_total": 312
+ "dependientes_total": 307
},
"qrcp": {
"iname": "qrcp",
@@ -15181,7 +15192,7 @@
"escritorio-mirada",
"escritorio-sway"
],
- "dependientes_total": 267
+ "dependientes_total": 263
},
"sassc": {
"iname": "sassc",
diff --git a/docs/state/build-state-kde.json b/docs/state/build-state-kde.json
index 499244d5..6166cb97 100644
--- a/docs/state/build-state-kde.json
+++ b/docs/state/build-state-kde.json
@@ -1,27 +1,27 @@
{
"schema": "hammer-build-state/1",
"totals": {
- "recipes": 1034,
- "nodes": 1036,
- "sealed": 1034,
+ "recipes": 1037,
+ "nodes": 1039,
+ "sealed": 1037,
"ajeno": 2
},
"by_class": {
"ajeno": 2,
- "c": 390,
+ "c": 392,
"go": 362,
"gui": 44,
"kernel": 6,
- "rust": 232
+ "rust": 233
},
"debt_by_class": {},
"by_queue": {
"corpus": {
- "sealed": 844,
+ "sealed": 850,
"ajeno": 1
},
"incoming-kde": {
- "sealed": 190,
+ "sealed": 187,
"ajeno": 1
}
},
@@ -5289,6 +5289,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",
@@ -8026,16 +8050,19 @@
"pkgconf"
],
"cls": "c",
- "queue": "incoming-kde",
+ "queue": "corpus",
"foreign": false,
"hash": "b3:6fd71a1f1df0cd4d9752f087611468cfc0be6c998381dda2b8816231ab83456e",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
- "escritorio-kde"
+ "escritorio-cosmic",
+ "escritorio-gnome",
+ "escritorio-kde",
+ "escritorio-sway"
],
- "dependientes_total": 2
+ "dependientes_total": 8
},
"hyperfine": {
"iname": "hyperfine",
@@ -8066,16 +8093,17 @@
"python3"
],
"cls": "c",
- "queue": "incoming-kde",
+ "queue": "corpus",
"foreign": false,
"hash": "b3:92ef211974cea96f559df9784e108c07b155f80932d12d1ef4d7e3cc1363b074",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
+ "escritorio-gnome",
"escritorio-kde"
],
- "dependientes_total": 21
+ "dependientes_total": 28
},
"igrep": {
"iname": "igrep",
@@ -13453,16 +13481,19 @@
"samurai"
],
"cls": "c",
- "queue": "incoming-kde",
+ "queue": "corpus",
"foreign": false,
"hash": "b3:5db3cfd58823ffac3df3a31feafaf87efbad349228747b5ae00ce48b3cfe42c8",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
- "escritorio-kde"
+ "escritorio-cosmic",
+ "escritorio-gnome",
+ "escritorio-kde",
+ "escritorio-sway"
],
- "dependientes_total": 1
+ "dependientes_total": 6
},
"libdrm": {
"iname": "libdrm",
@@ -13491,6 +13522,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",
@@ -15031,6 +15081,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",
@@ -15194,7 +15265,7 @@
"escritorio-mirada",
"escritorio-sway"
],
- "dependientes_total": 119
+ "dependientes_total": 118
},
"mako": {
"iname": "mako",
@@ -15612,7 +15683,7 @@
"escritorio-mirada",
"escritorio-sway"
],
- "dependientes_total": 125
+ "dependientes_total": 121
},
"micro": {
"iname": "micro",
@@ -17853,7 +17924,7 @@
"escritorio-mirada",
"escritorio-sway"
],
- "dependientes_total": 396
+ "dependientes_total": 387
},
"plasma-activities": {
"iname": "plasma-activities",
@@ -19331,7 +19402,7 @@
"escritorio-mirada",
"escritorio-sway"
],
- "dependientes_total": 312
+ "dependientes_total": 307
},
"qcoro": {
"iname": "qcoro",
@@ -20557,7 +20628,7 @@
"escritorio-mirada",
"escritorio-sway"
],
- "dependientes_total": 267
+ "dependientes_total": 263
},
"sassc": {
"iname": "sassc",
diff --git a/docs/state/build-state-wlr.json b/docs/state/build-state-wlr.json
index 93171c25..ffe5cb99 100644
--- a/docs/state/build-state-wlr.json
+++ b/docs/state/build-state-wlr.json
@@ -1,27 +1,27 @@
{
"schema": "hammer-build-state/1",
"totals": {
- "recipes": 873,
- "nodes": 875,
- "sealed": 873,
+ "recipes": 877,
+ "nodes": 879,
+ "sealed": 877,
"ajeno": 2
},
"by_class": {
"ajeno": 2,
- "c": 232,
+ "c": 235,
"go": 362,
"gui": 41,
"kernel": 6,
- "rust": 232
+ "rust": 233
},
"debt_by_class": {},
"by_queue": {
"corpus": {
- "sealed": 859,
+ "sealed": 865,
"ajeno": 2
},
"incoming-wlr": {
- "sealed": 14
+ "sealed": 12
}
},
"by_profile": {
@@ -4809,6 +4809,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
+ },
"fuzzel": {
"iname": "fuzzel",
"version": "1.12.0",
@@ -7533,16 +7557,19 @@
"pkgconf"
],
"cls": "c",
- "queue": "incoming-wlr",
+ "queue": "corpus",
"foreign": false,
"hash": "b3:6fd71a1f1df0cd4d9752f087611468cfc0be6c998381dda2b8816231ab83456e",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
+ "escritorio-cosmic",
+ "escritorio-gnome",
+ "escritorio-kde",
"escritorio-sway"
],
- "dependientes_total": 3
+ "dependientes_total": 8
},
"hyperfine": {
"iname": "hyperfine",
@@ -7563,6 +7590,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",
@@ -9178,16 +9227,19 @@
"samurai"
],
"cls": "c",
- "queue": "incoming-wlr",
+ "queue": "corpus",
"foreign": false,
"hash": "b3:5db3cfd58823ffac3df3a31feafaf87efbad349228747b5ae00ce48b3cfe42c8",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
+ "escritorio-cosmic",
+ "escritorio-gnome",
+ "escritorio-kde",
"escritorio-sway"
],
- "dependientes_total": 2
+ "dependientes_total": 6
},
"libdrm": {
"iname": "libdrm",
@@ -9216,6 +9268,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",
@@ -10296,6 +10367,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",
@@ -10459,7 +10551,7 @@
"escritorio-mirada",
"escritorio-sway"
],
- "dependientes_total": 119
+ "dependientes_total": 118
},
"mako": {
"iname": "mako",
@@ -10877,7 +10969,7 @@
"escritorio-mirada",
"escritorio-sway"
],
- "dependientes_total": 125
+ "dependientes_total": 121
},
"micro": {
"iname": "micro",
@@ -12738,7 +12830,7 @@
"escritorio-mirada",
"escritorio-sway"
],
- "dependientes_total": 396
+ "dependientes_total": 387
},
"plow": {
"iname": "plow",
@@ -13163,7 +13255,7 @@
"escritorio-mirada",
"escritorio-sway"
],
- "dependientes_total": 312
+ "dependientes_total": 307
},
"qrcp": {
"iname": "qrcp",
@@ -13778,7 +13870,7 @@
"escritorio-mirada",
"escritorio-sway"
],
- "dependientes_total": 267
+ "dependientes_total": 263
},
"sassc": {
"iname": "sassc",
diff --git a/docs/state/build-state.json b/docs/state/build-state.json
index 35e0ac16..320970b9 100644
--- a/docs/state/build-state.json
+++ b/docs/state/build-state.json
@@ -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",
diff --git a/docs/state/duplicados.json b/docs/state/duplicados.json
index d49cb940..1fa44f5a 100644
--- a/docs/state/duplicados.json
+++ b/docs/state/duplicados.json
@@ -30,13 +30,11 @@
"sha": "ab5a03176ee106d3",
"nudos": [
"corpus/bzip2",
- "corpus/bzip2-shared",
- "incoming-kde/bzip2-shared"
+ "corpus/bzip2-shared"
],
"radio": {
- "corpus/bzip2-shared": 3,
- "corpus/bzip2": 10,
- "incoming-kde/bzip2-shared": 3
+ "corpus/bzip2-shared": 6,
+ "corpus/bzip2": 10
}
},
{
@@ -162,18 +160,14 @@
"nudos": [
"corpus/glib",
"corpus/glib-shared",
- "incoming-cosmic/glib-shared",
"incoming-gnome/glib",
- "incoming-gnome/glib-introspected",
- "incoming-kde/glib-shared"
+ "incoming-gnome/glib-introspected"
],
"radio": {
- "corpus/glib-shared": 14,
+ "corpus/glib-shared": 26,
"corpus/glib": 30,
- "incoming-cosmic/glib-shared": 1,
"incoming-gnome/glib-introspected": 29,
- "incoming-gnome/glib": 42,
- "incoming-kde/glib-shared": 11
+ "incoming-gnome/glib": 42
}
},
{
@@ -210,7 +204,7 @@
],
"radio": {
"corpus/libffi-shared": 10,
- "corpus/libffi": 109
+ "corpus/libffi": 107
}
},
{
@@ -387,15 +381,11 @@
"sha": "47fe8c99461250d4",
"nudos": [
"corpus/pcre2",
- "corpus/pcre2-shared",
- "incoming-cosmic/pcre2-shared",
- "incoming-kde/pcre2-shared"
+ "corpus/pcre2-shared"
],
"radio": {
- "corpus/pcre2-shared": 15,
- "corpus/pcre2": 78,
- "incoming-cosmic/pcre2-shared": 2,
- "incoming-kde/pcre2-shared": 12
+ "corpus/pcre2-shared": 27,
+ "corpus/pcre2": 78
}
},
{
@@ -418,7 +408,7 @@
"corpus/readline-shared"
],
"radio": {
- "corpus/readline-shared": 3,
+ "corpus/readline-shared": 2,
"corpus/readline": 4
}
},
@@ -426,13 +416,11 @@
"sha": "67d3fe6d268e6ead",
"nudos": [
"corpus/sqlite",
- "corpus/sqlite-shared",
- "incoming-gnome/sqlite-shared"
+ "corpus/sqlite-shared"
],
"radio": {
- "corpus/sqlite-shared": 1,
- "corpus/sqlite": 4,
- "incoming-gnome/sqlite-shared": 6
+ "corpus/sqlite-shared": 7,
+ "corpus/sqlite": 4
}
},
{
@@ -452,13 +440,11 @@
"sha": "fff1ffcf2b0da84d",
"nudos": [
"corpus/xz",
- "corpus/xz-shared",
- "incoming-kde/xz-shared"
+ "corpus/xz-shared"
],
"radio": {
- "corpus/xz-shared": 1,
- "corpus/xz": 14,
- "incoming-kde/xz-shared": 4
+ "corpus/xz-shared": 5,
+ "corpus/xz": 14
}
},
{
@@ -468,7 +454,7 @@
"corpus/zlib-shared"
],
"radio": {
- "corpus/zlib-shared": 90,
+ "corpus/zlib-shared": 86,
"corpus/zlib": 107
}
},
@@ -578,194 +564,6 @@
}
],
"sombras": [
- {
- "nombre": "bzip2-shared",
- "colas": [
- "corpus",
- "incoming-kde"
- ],
- "redundante": true,
- "radio": {
- "corpus/bzip2-shared": 3,
- "incoming-kde/bzip2-shared": 3
- }
- },
- {
- "nombre": "fuse3",
- "colas": [
- "incoming-cosmic",
- "incoming-gnome"
- ],
- "redundante": true,
- "radio": {
- "incoming-cosmic/fuse3": 1,
- "incoming-gnome/fuse3": 1
- }
- },
- {
- "nombre": "glib-shared",
- "colas": [
- "corpus",
- "incoming-cosmic",
- "incoming-kde"
- ],
- "redundante": true,
- "radio": {
- "corpus/glib-shared": 14,
- "incoming-cosmic/glib-shared": 1,
- "incoming-kde/glib-shared": 11
- }
- },
- {
- "nombre": "hwdata",
- "colas": [
- "incoming-cosmic",
- "incoming-gnome",
- "incoming-kde",
- "incoming-wlr"
- ],
- "redundante": true,
- "radio": {
- "incoming-cosmic/hwdata": 1,
- "incoming-gnome/hwdata": 5,
- "incoming-kde/hwdata": 2,
- "incoming-wlr/hwdata": 3
- }
- },
- {
- "nombre": "icu4c",
- "colas": [
- "incoming-gnome",
- "incoming-kde"
- ],
- "redundante": true,
- "radio": {
- "incoming-gnome/icu4c": 7,
- "incoming-kde/icu4c": 21
- }
- },
- {
- "nombre": "lcms2",
- "colas": [
- "corpus",
- "incoming-gnome",
- "incoming-kde"
- ],
- "redundante": true,
- "radio": {
- "corpus/lcms2": 3,
- "incoming-gnome/lcms2": 3,
- "incoming-kde/lcms2": 6
- }
- },
- {
- "nombre": "libdisplay-info",
- "colas": [
- "incoming-cosmic",
- "incoming-gnome",
- "incoming-kde",
- "incoming-wlr"
- ],
- "redundante": true,
- "radio": {
- "incoming-cosmic/libdisplay-info": 1,
- "incoming-gnome/libdisplay-info": 2,
- "incoming-kde/libdisplay-info": 1,
- "incoming-wlr/libdisplay-info": 2
- }
- },
- {
- "nombre": "libelogind",
- "colas": [
- "incoming-cosmic",
- "incoming-gnome"
- ],
- "redundante": true,
- "radio": {
- "incoming-cosmic/libelogind": 1,
- "incoming-gnome/libelogind": 5
- }
- },
- {
- "nombre": "lua",
- "colas": [
- "incoming-cosmic",
- "incoming-gnome"
- ],
- "redundante": true,
- "radio": {
- "incoming-cosmic/lua": 1,
- "incoming-gnome/lua": 1
- }
- },
- {
- "nombre": "mpc",
- "colas": [
- "corpus",
- "incoming-kde"
- ],
- "redundante": true,
- "radio": {
- "corpus/mpc": 1,
- "incoming-kde/mpc": 1
- }
- },
- {
- "nombre": "pcre2-shared",
- "colas": [
- "corpus",
- "incoming-cosmic",
- "incoming-kde"
- ],
- "redundante": true,
- "radio": {
- "corpus/pcre2-shared": 15,
- "incoming-cosmic/pcre2-shared": 2,
- "incoming-kde/pcre2-shared": 12
- }
- },
- {
- "nombre": "sqlite-shared",
- "colas": [
- "corpus",
- "incoming-gnome"
- ],
- "redundante": true,
- "radio": {
- "corpus/sqlite-shared": 1,
- "incoming-gnome/sqlite-shared": 6
- }
- },
- {
- "nombre": "xkeyboard-config",
- "colas": [
- "corpus",
- "incoming-cosmic",
- "incoming-gnome",
- "incoming-kde",
- "incoming-wlr"
- ],
- "redundante": true,
- "radio": {
- "corpus/xkeyboard-config": 0,
- "incoming-cosmic/xkeyboard-config": 0,
- "incoming-gnome/xkeyboard-config": 4,
- "incoming-kde/xkeyboard-config": 1,
- "incoming-wlr/xkeyboard-config": 0
- }
- },
- {
- "nombre": "xz-shared",
- "colas": [
- "corpus",
- "incoming-kde"
- ],
- "redundante": true,
- "radio": {
- "corpus/xz-shared": 1,
- "incoming-kde/xz-shared": 4
- }
- },
{
"nombre": "cairo-shared",
"colas": [
@@ -827,7 +625,7 @@
"radio": {
"corpus/gmp": 3,
"incoming-cosmic/gmp": 2,
- "incoming-kde/gmp": 4
+ "incoming-kde/gmp": 3
}
},
{
@@ -1033,7 +831,7 @@
"radio": {
"corpus/mpfr": 2,
"incoming-cosmic/mpfr": 1,
- "incoming-kde/mpfr": 3
+ "incoming-kde/mpfr": 2
}
},
{
diff --git a/docs/state/keystones.json b/docs/state/keystones.json
index 024013d2..09d59156 100644
--- a/docs/state/keystones.json
+++ b/docs/state/keystones.json
@@ -3,35 +3,35 @@
"nudos": [
{
"nudo": "corpus/make",
- "gateo_total": 527,
+ "gateo_total": 512,
"gateo_en_deuda": 0,
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "corpus/binutils",
- "gateo_total": 448,
+ "gateo_total": 434,
"gateo_en_deuda": 0,
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "corpus/pkgconf",
- "gateo_total": 447,
+ "gateo_total": 426,
"gateo_en_deuda": 0,
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "corpus/zlib",
- "gateo_total": 381,
+ "gateo_total": 368,
"gateo_en_deuda": 0,
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "corpus/perl",
- "gateo_total": 377,
+ "gateo_total": 364,
"gateo_en_deuda": 0,
"exclusivo": 0,
"en_deuda": false
@@ -44,71 +44,71 @@
"en_deuda": false
},
{
- "nudo": "corpus/ncurses-shared",
- "gateo_total": 356,
+ "nudo": "corpus/xz-shared",
+ "gateo_total": 343,
"gateo_en_deuda": 0,
"exclusivo": 0,
"en_deuda": false
},
{
- "nudo": "corpus/readline-shared",
- "gateo_total": 355,
+ "nudo": "corpus/bzip2-shared",
+ "gateo_total": 342,
"gateo_en_deuda": 0,
"exclusivo": 0,
"en_deuda": false
},
{
- "nudo": "corpus/bzip2-shared",
- "gateo_total": 353,
+ "nudo": "corpus/ncurses-shared",
+ "gateo_total": 342,
"gateo_en_deuda": 0,
"exclusivo": 0,
"en_deuda": false
},
{
- "nudo": "corpus/openssl-threads",
- "gateo_total": 353,
+ "nudo": "corpus/readline-shared",
+ "gateo_total": 341,
"gateo_en_deuda": 0,
"exclusivo": 0,
"en_deuda": false
},
{
- "nudo": "corpus/sqlite-shared",
- "gateo_total": 353,
+ "nudo": "corpus/openssl-threads",
+ "gateo_total": 340,
"gateo_en_deuda": 0,
"exclusivo": 0,
"en_deuda": false
},
{
- "nudo": "corpus/xz-shared",
- "gateo_total": 353,
+ "nudo": "corpus/sqlite-shared",
+ "gateo_total": 340,
"gateo_en_deuda": 0,
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "corpus/python3",
- "gateo_total": 352,
+ "gateo_total": 339,
"gateo_en_deuda": 0,
- "exclusivo": 2,
+ "exclusivo": 1,
"en_deuda": false
},
{
"nudo": "corpus/samurai",
- "gateo_total": 334,
+ "gateo_total": 324,
"gateo_en_deuda": 0,
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "corpus/meson",
- "gateo_total": 311,
+ "gateo_total": 301,
"gateo_en_deuda": 0,
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "corpus/libffi",
- "gateo_total": 242,
+ "gateo_total": 240,
"gateo_en_deuda": 0,
"exclusivo": 0,
"en_deuda": false
@@ -415,15 +415,15 @@
"en_deuda": false
},
{
- "nudo": "corpus/zlib-shared",
+ "nudo": "incoming-kde/qtdeclarative",
"gateo_total": 100,
"gateo_en_deuda": 0,
"exclusivo": 0,
"en_deuda": false
},
{
- "nudo": "incoming-kde/qtdeclarative",
- "gateo_total": 100,
+ "nudo": "corpus/zlib-shared",
+ "gateo_total": 96,
"gateo_en_deuda": 0,
"exclusivo": 0,
"en_deuda": false
@@ -541,14 +541,14 @@
"en_deuda": false
},
{
- "nudo": "corpus/m4",
- "gateo_total": 44,
+ "nudo": "corpus/libpng",
+ "gateo_total": 43,
"gateo_en_deuda": 0,
"exclusivo": 0,
"en_deuda": false
},
{
- "nudo": "corpus/libpng",
+ "nudo": "corpus/m4",
"gateo_total": 43,
"gateo_en_deuda": 0,
"exclusivo": 0,
diff --git a/docs/state/repro-verificado.tsv b/docs/state/repro-verificado.tsv
index 78d48e32..53b787fc 100644
--- a/docs/state/repro-verificado.tsv
+++ b/docs/state/repro-verificado.tsv
@@ -57,3 +57,6 @@ vim b4c0d477428af4bf75e9b55d6ff2b2508b7f7e55f4ace9207a6f25c4d3080bd8 2026-09-05
kbd be9969f808c8499972e213f474a52d5f7477bf7faff78b6e0ec580aede507231 2026-09-05 reproduce
npth e5682fca87a9f591d533855b0056a07b5724304fb53402c940524d885908d980 2026-09-05 reproduce
musl-fts b9681a5205197d51bb777efde1a271e9b189bf35d74091834c5f1aa43d82f16e 2026-09-05 reproduce
+json-glib e346cb599d070d407a853725cec97e6cd1b0a0a647b6767612093120050a5fa7 2026-09-08 reproduce
+zathura 685efcac30d6821ac9ac0a0f492815b2a469c3360bb3a3c1a6637b3258193dd5 2026-09-08 reproduce
+zathura-pdf-poppler 04c8b7bac22a303d7e4edaebcf91833277e52a2fdcf0a741d165176c9b49afd8 2026-09-08 reproduce
diff --git a/recipes/incoming-cosmic/fuse3.toml b/recipes/fuse3.toml
similarity index 80%
rename from recipes/incoming-cosmic/fuse3.toml
rename to recipes/fuse3.toml
index c7e0cc30..d15df467 100644
--- a/recipes/incoming-cosmic/fuse3.toml
+++ b/recipes/fuse3.toml
@@ -1,3 +1,13 @@
+# ══ PROMOVIDA AL CORPUS DESDE LAS COLAS (2026-09-08) ═══════════════════════════════════════════
+# Existía IDÉNTICA byte a byte en 2 colas de escritorio (cosmic,gnome), con el MISMO
+# ArtifactHash en todas — verificado con `hammer hash` antes de mover, no deducido del nombre.
+# Sube al corpus por la razón que ya escribió `xkeyboard-config`: una receta resuelve sibling-first
+# y después el catálogo PADRE, nunca una cola hermana, así que **lo que comparten varias imágenes
+# tiene que vivir acá o no lo alcanzan**. Aquí lo comparten 2.
+#
+# A diferencia de aquella, las copias de las colas SÍ se barren en el mismo movimiento: sin copia en
+# el corpus no había dónde caer, y dejarlas sería mantener 2 ficheros que son el mismo hash.
+# Cero rebuilds: el hash no se mueve, sólo cambia de dónde lo resuelve cada consumidor.
# fuse3 (libfuse 3.18.2) — el primer eslabón de LA CADENA DEL PORTAL, y no está acá por su función
# sino porque `xdg-desktop-portal` lo pide con `dependency('fuse3', version: '>= 3.10.0')` sin
# `required:`. El frontend lo usa para el *document portal*: un sistema de ficheros FUSE que expone
diff --git a/recipes/hwdata.toml b/recipes/hwdata.toml
new file mode 100644
index 00000000..64f446d9
--- /dev/null
+++ b/recipes/hwdata.toml
@@ -0,0 +1,34 @@
+# ══ PROMOVIDA AL CORPUS DESDE LAS COLAS (2026-09-08) ═══════════════════════════════════════════
+# Existía IDÉNTICA byte a byte en 4 colas de escritorio (cosmic,gnome,kde,wlr), con el MISMO
+# ArtifactHash en todas — verificado con `hammer hash` antes de mover, no deducido del nombre.
+# Sube al corpus por la razón que ya escribió `xkeyboard-config`: una receta resuelve sibling-first
+# y después el catálogo PADRE, nunca una cola hermana, así que **lo que comparten varias imágenes
+# tiene que vivir acá o no lo alcanzan**. Aquí lo comparten 4.
+#
+# A diferencia de aquella, las copias de las colas SÍ se barren en el mismo movimiento: sin copia en
+# el corpus no había dónde caer, y dejarlas sería mantener 4 ficheros que son el mismo hash.
+# Cero rebuilds: el hash no se mueve, sólo cambia de dónde lo resuelve cada consumidor.
+# hwdata 0.393 — bases de datos de IDs de hardware (pnp.ids, pci.ids, usb.ids) + hwdata.pc. Sin código:
+# sólo datos. Campaña KDE (ADR 0011): lo exige libdisplay-info en tiempo de build (dependency('hwdata')
+# native → pkgdatadir/pnp.ids) y kwin como RUNTIME (find_package(hwdata) TYPE RUNTIME, tabla PNP de EDID).
+# `configure` es un script shell propio (no autoconf); no compila nada.
+name = "hwdata"
+version = "0.393"
+
+[source]
+tarball = "https://github.com/vcrhonek/hwdata/archive/refs/tags/v0.393.tar.gz"
+sha256 = "322add86944680e99d04468d49de180a7ce0c77fb406f7abde8ab14f2d161051"
+
+[build]
+compiler = "gcc"
+target = "x86_64-linux-musl"
+link = "dynamic"
+flags = []
+
+[build.phases]
+configure = './configure --prefix=/usr --libdir=/usr/lib --datadir=/usr/share'
+compile = 'true'
+install = 'make install DESTDIR=/out'
+
+[deps]
+build = ["pkgconf"]
diff --git a/recipes/icu4c.toml b/recipes/icu4c.toml
new file mode 100644
index 00000000..7d189164
--- /dev/null
+++ b/recipes/icu4c.toml
@@ -0,0 +1,37 @@
+# ══ PROMOVIDA AL CORPUS DESDE LAS COLAS (2026-09-08) ═══════════════════════════════════════════
+# Existía IDÉNTICA byte a byte en 2 colas de escritorio (gnome,kde), con el MISMO
+# ArtifactHash en todas — verificado con `hammer hash` antes de mover, no deducido del nombre.
+# Sube al corpus por la razón que ya escribió `xkeyboard-config`: una receta resuelve sibling-first
+# y después el catálogo PADRE, nunca una cola hermana, así que **lo que comparten varias imágenes
+# tiene que vivir acá o no lo alcanzan**. Aquí lo comparten 2.
+#
+# A diferencia de aquella, las copias de las colas SÍ se barren en el mismo movimiento: sin copia en
+# el corpus no había dónde caer, y dejarlas sería mantener 2 ficheros que son el mismo hash.
+# Cero rebuilds: el hash no se mueve, sólo cambia de dónde lo resuelve cada consumidor.
+# icu4c 77.1 — International Components for Unicode (libicuuc/libicui18n/libicudata.so). Dep transitiva
+# del stack Qt/KDE (ki18n opcional, libqalculate opcional, apps con colación Unicode). C++ autotools;
+# el tarball descomprime a `icu/source/` → todas las fases entran con `cd source`. musl, shared.
+name = "icu4c"
+version = "77.1"
+license = "MIT"
+
+[source]
+tarball = "https://github.com/unicode-org/icu/releases/download/release-77-1/icu4c-77_1-src.tgz"
+sha256 = "588e431f77327c39031ffbb8843c0e3bc122c211374485fa87dc5f3faff24061"
+
+[build]
+compiler = "zig-cc"
+target = "x86_64-linux-musl"
+link = "dynamic"
+flags = []
+
+[build.phases]
+configure = '''
+cd source && ./configure --prefix=/usr --enable-shared --disable-static \
+ --disable-samples --disable-tests
+'''
+compile = "cd source && make -j\"$(nproc)\""
+install = "cd source && make install DESTDIR=/out"
+
+[deps]
+build = ["pkgconf", "python3"]
diff --git a/recipes/incoming-cosmic/hwdata.toml b/recipes/incoming-cosmic/hwdata.toml
deleted file mode 100644
index e8cc8ced..00000000
--- a/recipes/incoming-cosmic/hwdata.toml
+++ /dev/null
@@ -1,24 +0,0 @@
-# hwdata 0.393 — bases de datos de IDs de hardware (pnp.ids, pci.ids, usb.ids) + hwdata.pc. Sin código:
-# sólo datos. Campaña KDE (ADR 0011): lo exige libdisplay-info en tiempo de build (dependency('hwdata')
-# native → pkgdatadir/pnp.ids) y kwin como RUNTIME (find_package(hwdata) TYPE RUNTIME, tabla PNP de EDID).
-# `configure` es un script shell propio (no autoconf); no compila nada.
-name = "hwdata"
-version = "0.393"
-
-[source]
-tarball = "https://github.com/vcrhonek/hwdata/archive/refs/tags/v0.393.tar.gz"
-sha256 = "322add86944680e99d04468d49de180a7ce0c77fb406f7abde8ab14f2d161051"
-
-[build]
-compiler = "gcc"
-target = "x86_64-linux-musl"
-link = "dynamic"
-flags = []
-
-[build.phases]
-configure = './configure --prefix=/usr --libdir=/usr/lib --datadir=/usr/share'
-compile = 'true'
-install = 'make install DESTDIR=/out'
-
-[deps]
-build = ["pkgconf"]
diff --git a/recipes/incoming-cosmic/libdisplay-info.toml b/recipes/incoming-cosmic/libdisplay-info.toml
deleted file mode 100644
index 30b2fbc1..00000000
--- a/recipes/incoming-cosmic/libdisplay-info.toml
+++ /dev/null
@@ -1,25 +0,0 @@
-# libdisplay-info 0.2.0 — parseo de EDID/DisplayID (libdisplay-info.so). Campaña KDE (ADR 0011): sustrato
-# de kwin (pkg_check_modules(libdisplay-info>=0.2.0) REQUIRED, lectura de EDID de los monitores). Meson.
-# En build necesita pnp.ids: usa dependency('hwdata') native → si no está, cae a /usr/share/hwdata/pnp.ids
-# y meson `files()` EXIGE que exista ⇒ hwdata es dep de build. Sin di-edid-decode (tool) para evitar más deps.
-name = "libdisplay-info"
-version = "0.2.0"
-license = "MIT"
-
-[source]
-tarball = "https://gitlab.freedesktop.org/emersion/libdisplay-info/-/archive/0.2.0/libdisplay-info-0.2.0.tar.gz"
-sha256 = "f7331fcaf5527251b84c8fb84238d06cd2f458422ce950c80e86c72927aa8c2b"
-
-[build]
-compiler = "zig-cc"
-target = "x86_64-linux-musl"
-link = "dynamic"
-zig_version = "0.13.0"
-
-[build.phases]
-configure = "PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/share/pkgconfig meson setup output --prefix=/usr --buildtype=release"
-compile = "ninja -C output"
-install = "DESTDIR=/out ninja -C output install"
-
-[deps]
-build = ["meson", "samurai", "python3", "pkgconf", "hwdata"]
diff --git a/recipes/incoming-cosmic/libelogind.toml b/recipes/incoming-cosmic/libelogind.toml
deleted file mode 100644
index d10c1c7e..00000000
--- a/recipes/incoming-cosmic/libelogind.toml
+++ /dev/null
@@ -1,70 +0,0 @@
-# libelogind — la C-ABI `sd-login` que le faltaba a la distro, implementada en arje-compat.
-#
-# QUÉ RESUELVE: mutter (y polkit, gcr, at-spi2-core) exigen un proveedor de logind por pkg-config —
-# `libsystemd` o `libelogind`— para llamar la API C sd-login. Esa API NO es un cliente D-Bus: lee
-# `/run/systemd/{sessions,users,seats}`. Los otros tres tienen perilla para esquivarla y se
-# construyeron por su camino degradado; **mutter no tiene**, porque `-Dudev=false` exige
-# `-Dlogind=false` (mutter/meson.build:257) y sin udev+logind no hay backend nativo KMS: no hay
-# compositor de verdad, sólo anidado.
-#
-# POR QUÉ NO ES elogind NI UN STUB: `arje-logind-compat` ya escribe ese estado en /run/systemd (ver
-# `arje_compat::login_state`). Lo único que faltaba era una librería que lo LEYERA y lo ofreciera en
-# C. `arje-sdlogin-compat` hace exactamente eso — no inventa datos ni levanta un daemon paralelo.
-# Empaquetar elogind sería traer un logind entero a competirle al que arje ya tiene.
-#
-# Corrige de paso lo que afirma el comentario de recipes/arje-logind-compat.toml («no hace falta la
-# C-ABI sd-login… los escritorios consultan login1 en RUNTIME por D-Bus»): es cierto para los
-# clientes D-Bus y FALSO para mutter, que la enlaza.
-#
-# HUB-ONLY, como toda receta de fuente tawasuyu: la gitea escucha en :2345 y el worker efímero es
-# secretless ⇒ recibe Connection refused en :22. Se muele en el hub.
-name = "libelogind"
-version = "0.0.1"
-license = "MIT"
-
-[source]
-# El `commit` es el identificador inmutable; la URL es sólo locator y NO entra al ArtifactHash.
-# Rama `selfhost/arje-zero-attest-lockfile`, igual que arje-logind-compat, porque es la única que
-# versiona el `Cargo.lock` de la raíz: sin él, el vendoreo `--locked` del fetch no es reproducible
-# (el monorepo lo gitignora en main).
-repo = "gitea@git.tawasuyu.net:tawasuyu/tawasuyu.git"
-commit = "749edfe41766e098d3eb18561c6a396610c5cd8e"
-# El monorepo COMMITEA su propio `vendor/` (`[patch.crates-io] smithay = { path = "vendor/smithay" }`,
-# la copia parcheada que mirada necesita para el tearing) y el `cargo vendor` de hammer escribe ahí
-# por defecto, pisándolo: el build muere con `failed to read /src/vendor/smithay/.cargo-checksum.json`
-# al resolver la dep git de taffy. Se vendorea a un subdir aparte, igual que arje-logind-compat.
-# Apareció recién ahora porque el `vendor/` entró a esta rama con el merge de main, no antes.
-# Ver [[hammer-cargo-vendor-clobbers-project-vendor]].
-cargo_vendor_dir = ".hammer-cargo-vendor"
-
-[build]
-compiler = "zig-cc"
-target = "x86_64-linux-musl"
-# dynamic, no static: el producto ES una librería compartida (cdylib). Con `link = "static"` el lab
-# exporta -static y no hay .so que valga.
-link = "dynamic"
-flags = ["-p", "arje-sdlogin-compat"]
-
-[build.phases]
-# Sólo se sobrescribe `install`: el `compile` por defecto del lab (cargo build --release, offline y
-# vendoreado) es el correcto. El default de Cargo copia EJECUTABLES a /usr/bin, y acá no hay ninguno:
-# hay una .so, una cabecera y un .pc.
-#
-# El SONAME (libelogind.so.0) lo fija el build.rs del crate, no esta receta, para que un `cargo build`
-# a mano también produzca algo enlazable. Por eso el fichero se instala directamente con ese nombre y
-# el `libelogind.so` es el symlink de desarrollo que busca el linker.
-#
-# La cabecera va a /usr/include/elogind/systemd/ y el .pc trae `-I${includedir}/elogind`: así el
-# `#include <systemd/sd-login.h>` de mutter resuelve sin que mutter sepa que somos nosotros. Es el
-# mismo arreglo de elogind upstream.
-install = '''
-set -e
-mkdir -p /out/usr/lib/pkgconfig /out/usr/include/elogind/systemd
-cp target/release/libelogind.so /out/usr/lib/libelogind.so.0
-ln -s libelogind.so.0 /out/usr/lib/libelogind.so
-cp 03_ukupacha/arje/arje-sdlogin-compat/include/systemd/sd-login.h /out/usr/include/elogind/systemd/
-# sd-daemon.h va aparte porque en systemd también son dos cabeceras y quien la usa la pide por su
-# nombre: gdm hace `#include <systemd/sd-daemon.h>` en common/gdm-log.c para `sd_booted()`.
-cp 03_ukupacha/arje/arje-sdlogin-compat/include/systemd/sd-daemon.h /out/usr/include/elogind/systemd/
-cp 03_ukupacha/arje/arje-sdlogin-compat/pkgconfig/libelogind.pc /out/usr/lib/pkgconfig/
-'''
diff --git a/recipes/incoming-gnome/fuse3.toml b/recipes/incoming-gnome/fuse3.toml
deleted file mode 100644
index c7e0cc30..00000000
--- a/recipes/incoming-gnome/fuse3.toml
+++ /dev/null
@@ -1,57 +0,0 @@
-# fuse3 (libfuse 3.18.2) — el primer eslabón de LA CADENA DEL PORTAL, y no está acá por su función
-# sino porque `xdg-desktop-portal` lo pide con `dependency('fuse3', version: '>= 3.10.0')` sin
-# `required:`. El frontend lo usa para el *document portal*: un sistema de ficheros FUSE que expone
-# a cada aplicación sólo los ficheros que el usuario le concedió por el selector.
-#
-# No es negociable por opción de meson —el `dependency()` es incondicional— así que o está o el
-# frontend no configura.
-#
-# ── LO BARATO ────────────────────────────────────────────────────────────────────────────────────
-# libfuse no tiene deps duras: sus únicos `dependency()` son `liburing` y `numa`, ambos
-# `required: false`, más `threads`. Es meson y C plano.
-#
-# ── LO QUE SE APAGA, Y POR QUÉ ───────────────────────────────────────────────────────────────────
-# `useroot=false` — el build normal hace `chown root` y pone el setuid en `fusermount3`. En el
-# sandbox no somos root y no hay a quién chownear; el bit se pone al armar la
-# imagen, no al construir el artefacto.
-# `examples=false`,
-# `tests=false` — no se instalan y sólo suman superficie de compilación.
-# `disable-mtab=true` — esta base no tiene `/etc/mtab` (ni el `mount` de util-linux que lo escribe).
-# `initscriptdir=''` — no hay sysvinit: el PID1 es arje-zero.
-# `enable-io-uring=false` — `liburing` no está en el corpus; con `required:false` meson lo saltearía
-# igual, pero dejarlo explícito hace que el artefacto no dependa de si la
-# librería aparece en el rootfs del constructor. Es la diferencia entre sellar
-# lo que quisimos y sellar lo que había.
-name = "fuse3"
-version = "3.18.2"
-
-[source]
-tarball = "https://github.com/libfuse/libfuse/archive/fuse-3.18.2/libfuse-fuse-3.18.2.tar.gz"
-sha256 = "55a97cfd8661a9b42ff0123b44af52cac49feaec36987f4d968c046f93b42e1d"
-
-[build]
-compiler = "zig-cc"
-target = "x86_64-linux-musl"
-link = "dynamic"
-zig_version = "0.13.0"
-
-[build.phases]
-# ⚠ **NO poner `-Ddisable-libc-symbol-version=true`, aunque suene a lo correcto para musl.** Lo
-# probé primero razonando que musl no implementa versionado de símbolos, y falla en el enlace con
-# ld.lld: error: version script assignment of 'FUSE_3.0' to symbol 'fuse_loop_mt' failed:
-# symbol not defined
-# La razón está en el propio meson de upstream: la opción sólo pone `versioned_symbols = 0`, que hace
-# que `lib/compat.c` NO emita los alias versionados… pero `lib/meson.build:54` pasa
-# `-Wl,--version-script` **incondicionalmente**. O sea que la opción deja el script pidiendo símbolos
-# que ya nadie define: es una combinación incoherente de upstream, no una limitación de musl.
-#
-# Y de paso quedó medido que la auto-detección de upstream **no conoce musl**: sólo apaga el
-# versionado para `__UCLIBC__` y `__APPLE__` (meson.build:214), así que en musl el valor por defecto
-# es 1 — que es con lo que Alpine construye libfuse y funciona: musl tolera `.symver`, simplemente
-# ignora las versiones en tiempo de ejecución. Se deja el DEFECTO.
-configure = "PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/share/pkgconfig meson setup output --prefix=/usr --buildtype=release -Dexamples=false -Dtests=false -Duseroot=false -Ddisable-mtab=true -Dinitscriptdir= -Denable-io-uring=false"
-compile = "ninja -C output"
-install = "DESTDIR=/out ninja -C output install"
-
-[deps]
-build = ["meson", "samurai", "python3", "pkgconf"]
diff --git a/recipes/incoming-gnome/hwdata.toml b/recipes/incoming-gnome/hwdata.toml
deleted file mode 100644
index e8cc8ced..00000000
--- a/recipes/incoming-gnome/hwdata.toml
+++ /dev/null
@@ -1,24 +0,0 @@
-# hwdata 0.393 — bases de datos de IDs de hardware (pnp.ids, pci.ids, usb.ids) + hwdata.pc. Sin código:
-# sólo datos. Campaña KDE (ADR 0011): lo exige libdisplay-info en tiempo de build (dependency('hwdata')
-# native → pkgdatadir/pnp.ids) y kwin como RUNTIME (find_package(hwdata) TYPE RUNTIME, tabla PNP de EDID).
-# `configure` es un script shell propio (no autoconf); no compila nada.
-name = "hwdata"
-version = "0.393"
-
-[source]
-tarball = "https://github.com/vcrhonek/hwdata/archive/refs/tags/v0.393.tar.gz"
-sha256 = "322add86944680e99d04468d49de180a7ce0c77fb406f7abde8ab14f2d161051"
-
-[build]
-compiler = "gcc"
-target = "x86_64-linux-musl"
-link = "dynamic"
-flags = []
-
-[build.phases]
-configure = './configure --prefix=/usr --libdir=/usr/lib --datadir=/usr/share'
-compile = 'true'
-install = 'make install DESTDIR=/out'
-
-[deps]
-build = ["pkgconf"]
diff --git a/recipes/incoming-gnome/icu4c.toml b/recipes/incoming-gnome/icu4c.toml
deleted file mode 100644
index e1b53aa7..00000000
--- a/recipes/incoming-gnome/icu4c.toml
+++ /dev/null
@@ -1,27 +0,0 @@
-# icu4c 77.1 — International Components for Unicode (libicuuc/libicui18n/libicudata.so). Dep transitiva
-# del stack Qt/KDE (ki18n opcional, libqalculate opcional, apps con colación Unicode). C++ autotools;
-# el tarball descomprime a `icu/source/` → todas las fases entran con `cd source`. musl, shared.
-name = "icu4c"
-version = "77.1"
-license = "MIT"
-
-[source]
-tarball = "https://github.com/unicode-org/icu/releases/download/release-77-1/icu4c-77_1-src.tgz"
-sha256 = "588e431f77327c39031ffbb8843c0e3bc122c211374485fa87dc5f3faff24061"
-
-[build]
-compiler = "zig-cc"
-target = "x86_64-linux-musl"
-link = "dynamic"
-flags = []
-
-[build.phases]
-configure = '''
-cd source && ./configure --prefix=/usr --enable-shared --disable-static \
- --disable-samples --disable-tests
-'''
-compile = "cd source && make -j\"$(nproc)\""
-install = "cd source && make install DESTDIR=/out"
-
-[deps]
-build = ["pkgconf", "python3"]
diff --git a/recipes/incoming-gnome/libdisplay-info.toml b/recipes/incoming-gnome/libdisplay-info.toml
deleted file mode 100644
index 30b2fbc1..00000000
--- a/recipes/incoming-gnome/libdisplay-info.toml
+++ /dev/null
@@ -1,25 +0,0 @@
-# libdisplay-info 0.2.0 — parseo de EDID/DisplayID (libdisplay-info.so). Campaña KDE (ADR 0011): sustrato
-# de kwin (pkg_check_modules(libdisplay-info>=0.2.0) REQUIRED, lectura de EDID de los monitores). Meson.
-# En build necesita pnp.ids: usa dependency('hwdata') native → si no está, cae a /usr/share/hwdata/pnp.ids
-# y meson `files()` EXIGE que exista ⇒ hwdata es dep de build. Sin di-edid-decode (tool) para evitar más deps.
-name = "libdisplay-info"
-version = "0.2.0"
-license = "MIT"
-
-[source]
-tarball = "https://gitlab.freedesktop.org/emersion/libdisplay-info/-/archive/0.2.0/libdisplay-info-0.2.0.tar.gz"
-sha256 = "f7331fcaf5527251b84c8fb84238d06cd2f458422ce950c80e86c72927aa8c2b"
-
-[build]
-compiler = "zig-cc"
-target = "x86_64-linux-musl"
-link = "dynamic"
-zig_version = "0.13.0"
-
-[build.phases]
-configure = "PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/share/pkgconfig meson setup output --prefix=/usr --buildtype=release"
-compile = "ninja -C output"
-install = "DESTDIR=/out ninja -C output install"
-
-[deps]
-build = ["meson", "samurai", "python3", "pkgconf", "hwdata"]
diff --git a/recipes/incoming-gnome/lua.toml b/recipes/incoming-gnome/lua.toml
deleted file mode 100644
index 3ff4e6bd..00000000
--- a/recipes/incoming-gnome/lua.toml
+++ /dev/null
@@ -1,96 +0,0 @@
-# lua 5.4.8 — el intérprete y **la librería compartida**, que es lo que hace falta acá.
-#
-# POR QUÉ ENTRA: `wireplumber` —el gestor de sesión de PipeWire, sin el cual PipeWire acepta clientes
-# pero no enumera ni enruta dispositivos— tiene su política escrita EN LUA y embebe un intérprete
-# (`lib/wplua`). Su `subprojects/lua.wrap` DESCARGA Lua 5.5 de lua.org, cosa imposible en el sandbox
-# hermético (`--wrap-mode=nodownload`), así que va con `-Dsystem-lua=true` y el sistema tiene que
-# tener Lua. Su meson acepta 5.5, 5.4 o 5.3 (meson.build:91-95); se elige **5.4**, la serie estable
-# larga que usan las distros, en vez de la 5.5 del wrap.
-#
-# ══ LO QUE ESTA RECETA TIENE QUE INVENTAR, porque upstream no lo da ═════════════════════════════
-# El Makefile de Lua sólo produce `liblua.a` y los binarios. **No hay regla de `.so` ni fichero
-# pkg-config**: los agrega cada distro. Acá se agregan las dos cosas, y a mano, porque no hay dónde
-# copiarlas de:
-#
-# 1. `-fPIC` en `MYCFLAGS`. Sin esto la `.a` no es reubicable y `libwplua` —que es un objeto
-# compartido— no linkea: es la regla del corpus sobre `.a` no-PIC dentro de un `.so`
-# («relocation R_X86_64_32 … recompile with -fPIC»), la misma que obligó a las variantes
-# `-shared` de zlib, sqlite, libxml2, libuuid y dbus.
-# 2. La `.so` se enlaza a mano desde la `.a` con `--whole-archive`, porque una librería estática sólo
-# aporta los objetos que alguien referencia y acá hay que llevárselos TODOS. SONAME
-# `liblua-5.4.so.0`, que es el que graba quien enlace.
-# 3. El `.pc` se escribe acá. El nombre importa: wireplumber prueba `lua-5.4`, `lua5.4` y `lua54` en
-# ese orden, así que el fichero se llama `lua5.4.pc` y ADEMÁS se deja `lua-5.4.pc` y `lua.pc` como
-# enlaces — es más barato satisfacer las tres convenciones que adivinar cuál buscará el próximo
-# consumidor.
-#
-# `-DLUA_USE_LINUX` es lo que activa `dlopen` y el resto de POSIX; sin él Lua se compila en modo ANSI
-# genérico y `require` de módulos C no funciona. **SIN readline a propósito**: sólo lo usa el REPL
-# interactivo, y el ncurses del catálogo es static-only y arrastra `-static` al link (el mismo
-# problema que hizo saltar `pw-top` en la receta de pipewire).
-#
-# `SYSLIBS` pierde el `-Wl,-E` de upstream: exportar todos los símbolos del EJECUTABLE sirve para que
-# módulos C cargados por `require` vean la API de Lua, y acá el que exporta es la `.so`.
-name = "lua"
-version = "5.4.8"
-license = "MIT"
-
-[source]
-tarball = "https://www.lua.org/ftp/lua-5.4.8.tar.gz"
-sha256 = "4f18ddae154e793e46eeab727c59ef1c0c0c2b744e7b94219710d76f530629ae"
-
-[build]
-compiler = "zig-cc"
-target = "x86_64-linux-musl"
-link = "dynamic"
-
-[build.phases]
-configure = "true"
-compile = '''
-set -e
-# CC se pasa explícito: el Makefile de Lua lo fija a `gcc -std=gnu99` en la línea 9 y ganaría sobre el
-# del entorno.
-make -C src all CC="hammer-zig-cc -std=gnu99" \
- SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-ldl" MYCFLAGS="-fPIC"
-# La .so que upstream no construye. --whole-archive porque de una estática el linker sólo se lleva lo
-# referenciado, y acá hay que llevárselo todo.
-hammer-zig-cc -shared -o src/liblua-5.4.so.0.0.0 \
- -Wl,-soname,liblua-5.4.so.0 \
- -Wl,--whole-archive src/liblua.a -Wl,--no-whole-archive -lm
-'''
-install = '''
-set -e
-mkdir -p /out/usr/bin /out/usr/lib/pkgconfig /out/usr/include /out/usr/share/man/man1
-install -m755 src/lua /out/usr/bin/lua5.4
-install -m755 src/luac /out/usr/bin/luac5.4
-ln -s lua5.4 /out/usr/bin/lua
-ln -s luac5.4 /out/usr/bin/luac
-install -m644 src/lua.h src/luaconf.h src/lualib.h src/lauxlib.h src/lua.hpp /out/usr/include/
-install -m644 src/liblua.a /out/usr/lib/liblua-5.4.a
-install -m755 src/liblua-5.4.so.0.0.0 /out/usr/lib/
-ln -s liblua-5.4.so.0.0.0 /out/usr/lib/liblua-5.4.so.0
-ln -s liblua-5.4.so.0 /out/usr/lib/liblua-5.4.so
-ln -s liblua-5.4.so /out/usr/lib/liblua.so
-cat > /out/usr/lib/pkgconfig/lua5.4.pc <<'PC'
-prefix=/usr
-exec_prefix=${prefix}
-libdir=${exec_prefix}/lib
-includedir=${prefix}/include
-INTERPRETER=${exec_prefix}/bin/lua5.4
-COMPILER=${exec_prefix}/bin/luac5.4
-
-Name: Lua
-Description: Lua language engine
-Version: 5.4.8
-Requires:
-Libs: -L${libdir} -llua-5.4 -lm
-Cflags: -I${includedir}
-PC
-# Las tres convenciones de nombre que se usan por ahí; wireplumber prueba lua-5.4, lua5.4 y lua54.
-ln -s lua5.4.pc /out/usr/lib/pkgconfig/lua-5.4.pc
-ln -s lua5.4.pc /out/usr/lib/pkgconfig/lua54.pc
-ln -s lua5.4.pc /out/usr/lib/pkgconfig/lua.pc
-'''
-
-[deps]
-build = ["make", "pkgconf"]
diff --git a/recipes/incoming-kde/hwdata.toml b/recipes/incoming-kde/hwdata.toml
deleted file mode 100644
index e8cc8ced..00000000
--- a/recipes/incoming-kde/hwdata.toml
+++ /dev/null
@@ -1,24 +0,0 @@
-# hwdata 0.393 — bases de datos de IDs de hardware (pnp.ids, pci.ids, usb.ids) + hwdata.pc. Sin código:
-# sólo datos. Campaña KDE (ADR 0011): lo exige libdisplay-info en tiempo de build (dependency('hwdata')
-# native → pkgdatadir/pnp.ids) y kwin como RUNTIME (find_package(hwdata) TYPE RUNTIME, tabla PNP de EDID).
-# `configure` es un script shell propio (no autoconf); no compila nada.
-name = "hwdata"
-version = "0.393"
-
-[source]
-tarball = "https://github.com/vcrhonek/hwdata/archive/refs/tags/v0.393.tar.gz"
-sha256 = "322add86944680e99d04468d49de180a7ce0c77fb406f7abde8ab14f2d161051"
-
-[build]
-compiler = "gcc"
-target = "x86_64-linux-musl"
-link = "dynamic"
-flags = []
-
-[build.phases]
-configure = './configure --prefix=/usr --libdir=/usr/lib --datadir=/usr/share'
-compile = 'true'
-install = 'make install DESTDIR=/out'
-
-[deps]
-build = ["pkgconf"]
diff --git a/recipes/incoming-kde/icu4c.toml b/recipes/incoming-kde/icu4c.toml
deleted file mode 100644
index e1b53aa7..00000000
--- a/recipes/incoming-kde/icu4c.toml
+++ /dev/null
@@ -1,27 +0,0 @@
-# icu4c 77.1 — International Components for Unicode (libicuuc/libicui18n/libicudata.so). Dep transitiva
-# del stack Qt/KDE (ki18n opcional, libqalculate opcional, apps con colación Unicode). C++ autotools;
-# el tarball descomprime a `icu/source/` → todas las fases entran con `cd source`. musl, shared.
-name = "icu4c"
-version = "77.1"
-license = "MIT"
-
-[source]
-tarball = "https://github.com/unicode-org/icu/releases/download/release-77-1/icu4c-77_1-src.tgz"
-sha256 = "588e431f77327c39031ffbb8843c0e3bc122c211374485fa87dc5f3faff24061"
-
-[build]
-compiler = "zig-cc"
-target = "x86_64-linux-musl"
-link = "dynamic"
-flags = []
-
-[build.phases]
-configure = '''
-cd source && ./configure --prefix=/usr --enable-shared --disable-static \
- --disable-samples --disable-tests
-'''
-compile = "cd source && make -j\"$(nproc)\""
-install = "cd source && make install DESTDIR=/out"
-
-[deps]
-build = ["pkgconf", "python3"]
diff --git a/recipes/incoming-wlr/hwdata.toml b/recipes/incoming-wlr/hwdata.toml
deleted file mode 100644
index e8cc8ced..00000000
--- a/recipes/incoming-wlr/hwdata.toml
+++ /dev/null
@@ -1,24 +0,0 @@
-# hwdata 0.393 — bases de datos de IDs de hardware (pnp.ids, pci.ids, usb.ids) + hwdata.pc. Sin código:
-# sólo datos. Campaña KDE (ADR 0011): lo exige libdisplay-info en tiempo de build (dependency('hwdata')
-# native → pkgdatadir/pnp.ids) y kwin como RUNTIME (find_package(hwdata) TYPE RUNTIME, tabla PNP de EDID).
-# `configure` es un script shell propio (no autoconf); no compila nada.
-name = "hwdata"
-version = "0.393"
-
-[source]
-tarball = "https://github.com/vcrhonek/hwdata/archive/refs/tags/v0.393.tar.gz"
-sha256 = "322add86944680e99d04468d49de180a7ce0c77fb406f7abde8ab14f2d161051"
-
-[build]
-compiler = "gcc"
-target = "x86_64-linux-musl"
-link = "dynamic"
-flags = []
-
-[build.phases]
-configure = './configure --prefix=/usr --libdir=/usr/lib --datadir=/usr/share'
-compile = 'true'
-install = 'make install DESTDIR=/out'
-
-[deps]
-build = ["pkgconf"]
diff --git a/recipes/incoming-wlr/libdisplay-info.toml b/recipes/incoming-wlr/libdisplay-info.toml
deleted file mode 100644
index 30b2fbc1..00000000
--- a/recipes/incoming-wlr/libdisplay-info.toml
+++ /dev/null
@@ -1,25 +0,0 @@
-# libdisplay-info 0.2.0 — parseo de EDID/DisplayID (libdisplay-info.so). Campaña KDE (ADR 0011): sustrato
-# de kwin (pkg_check_modules(libdisplay-info>=0.2.0) REQUIRED, lectura de EDID de los monitores). Meson.
-# En build necesita pnp.ids: usa dependency('hwdata') native → si no está, cae a /usr/share/hwdata/pnp.ids
-# y meson `files()` EXIGE que exista ⇒ hwdata es dep de build. Sin di-edid-decode (tool) para evitar más deps.
-name = "libdisplay-info"
-version = "0.2.0"
-license = "MIT"
-
-[source]
-tarball = "https://gitlab.freedesktop.org/emersion/libdisplay-info/-/archive/0.2.0/libdisplay-info-0.2.0.tar.gz"
-sha256 = "f7331fcaf5527251b84c8fb84238d06cd2f458422ce950c80e86c72927aa8c2b"
-
-[build]
-compiler = "zig-cc"
-target = "x86_64-linux-musl"
-link = "dynamic"
-zig_version = "0.13.0"
-
-[build.phases]
-configure = "PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/share/pkgconfig meson setup output --prefix=/usr --buildtype=release"
-compile = "ninja -C output"
-install = "DESTDIR=/out ninja -C output install"
-
-[deps]
-build = ["meson", "samurai", "python3", "pkgconf", "hwdata"]
diff --git a/recipes/incoming-kde/libdisplay-info.toml b/recipes/libdisplay-info.toml
similarity index 53%
rename from recipes/incoming-kde/libdisplay-info.toml
rename to recipes/libdisplay-info.toml
index 30b2fbc1..8d8a85a8 100644
--- a/recipes/incoming-kde/libdisplay-info.toml
+++ b/recipes/libdisplay-info.toml
@@ -1,3 +1,13 @@
+# ══ PROMOVIDA AL CORPUS DESDE LAS COLAS (2026-09-08) ═══════════════════════════════════════════
+# Existía IDÉNTICA byte a byte en 4 colas de escritorio (cosmic,gnome,kde,wlr), con el MISMO
+# ArtifactHash en todas — verificado con `hammer hash` antes de mover, no deducido del nombre.
+# Sube al corpus por la razón que ya escribió `xkeyboard-config`: una receta resuelve sibling-first
+# y después el catálogo PADRE, nunca una cola hermana, así que **lo que comparten varias imágenes
+# tiene que vivir acá o no lo alcanzan**. Aquí lo comparten 4.
+#
+# A diferencia de aquella, las copias de las colas SÍ se barren en el mismo movimiento: sin copia en
+# el corpus no había dónde caer, y dejarlas sería mantener 4 ficheros que son el mismo hash.
+# Cero rebuilds: el hash no se mueve, sólo cambia de dónde lo resuelve cada consumidor.
# libdisplay-info 0.2.0 — parseo de EDID/DisplayID (libdisplay-info.so). Campaña KDE (ADR 0011): sustrato
# de kwin (pkg_check_modules(libdisplay-info>=0.2.0) REQUIRED, lectura de EDID de los monitores). Meson.
# En build necesita pnp.ids: usa dependency('hwdata') native → si no está, cae a /usr/share/hwdata/pnp.ids
diff --git a/recipes/incoming-gnome/libelogind.toml b/recipes/libelogind.toml
similarity index 82%
rename from recipes/incoming-gnome/libelogind.toml
rename to recipes/libelogind.toml
index d10c1c7e..c1563291 100644
--- a/recipes/incoming-gnome/libelogind.toml
+++ b/recipes/libelogind.toml
@@ -1,3 +1,13 @@
+# ══ PROMOVIDA AL CORPUS DESDE LAS COLAS (2026-09-08) ═══════════════════════════════════════════
+# Existía IDÉNTICA byte a byte en 2 colas de escritorio (cosmic,gnome), con el MISMO
+# ArtifactHash en todas — verificado con `hammer hash` antes de mover, no deducido del nombre.
+# Sube al corpus por la razón que ya escribió `xkeyboard-config`: una receta resuelve sibling-first
+# y después el catálogo PADRE, nunca una cola hermana, así que **lo que comparten varias imágenes
+# tiene que vivir acá o no lo alcanzan**. Aquí lo comparten 2.
+#
+# A diferencia de aquella, las copias de las colas SÍ se barren en el mismo movimiento: sin copia en
+# el corpus no había dónde caer, y dejarlas sería mantener 2 ficheros que son el mismo hash.
+# Cero rebuilds: el hash no se mueve, sólo cambia de dónde lo resuelve cada consumidor.
# libelogind — la C-ABI `sd-login` que le faltaba a la distro, implementada en arje-compat.
#
# QUÉ RESUELVE: mutter (y polkit, gcr, at-spi2-core) exigen un proveedor de logind por pkg-config —
diff --git a/recipes/incoming-cosmic/lua.toml b/recipes/lua.toml
similarity index 83%
rename from recipes/incoming-cosmic/lua.toml
rename to recipes/lua.toml
index 3ff4e6bd..1901653d 100644
--- a/recipes/incoming-cosmic/lua.toml
+++ b/recipes/lua.toml
@@ -1,3 +1,13 @@
+# ══ PROMOVIDA AL CORPUS DESDE LAS COLAS (2026-09-08) ═══════════════════════════════════════════
+# Existía IDÉNTICA byte a byte en 2 colas de escritorio (cosmic,gnome), con el MISMO
+# ArtifactHash en todas — verificado con `hammer hash` antes de mover, no deducido del nombre.
+# Sube al corpus por la razón que ya escribió `xkeyboard-config`: una receta resuelve sibling-first
+# y después el catálogo PADRE, nunca una cola hermana, así que **lo que comparten varias imágenes
+# tiene que vivir acá o no lo alcanzan**. Aquí lo comparten 2.
+#
+# A diferencia de aquella, las copias de las colas SÍ se barren en el mismo movimiento: sin copia en
+# el corpus no había dónde caer, y dejarlas sería mantener 2 ficheros que son el mismo hash.
+# Cero rebuilds: el hash no se mueve, sólo cambia de dónde lo resuelve cada consumidor.
# lua 5.4.8 — el intérprete y **la librería compartida**, que es lo que hace falta acá.
#
# POR QUÉ ENTRA: `wireplumber` —el gestor de sesión de PipeWire, sin el cual PipeWire acepta clientes