tawasuyu

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

TOML 1182Shell 87Rust 63Markdown 541592 Sutichaykuna

shared-mime-info 2.5.1: la base MIME sellada — KDE pasa de 4 wanted a 3

Primero de los cuatro huecos de RUNTIME del triaje de la frontera. Ninguna receta
lo pedía para construir (por eso escritorio-kde cerraba 163/163 sin él), pero sin
la base el escritorio no sabe qué es un fichero: ni asociaciones, ni iconos, ni
abrir-con. Qt6 y GLib lo leen los dos de /usr/share/mime.

Vive en recipes/ y no en incoming-kde: es freedesktop puro, y en la raíz lo ven
los cinco grafos (GNOME y COSMIC lo quieren igual — gdk-pixbuf hoy lo ESQUIVA con
-Dgio_sniffing=false).

Tres cosas que no eran obvias:

1. Fuente por GIT, no tarball. Freedesktop no publica downloads de release para
   este proyecto: la API sólo ofrece los -/archive/ autogenerados de GitLab, que
   no son estables byte a byte (mismo criterio ya escrito en wlr-randr). El pin
   es el tag 2.5.1 PELADO — acá el tag es objeto tag, la trampa de las 4 del
   mirror (ADR 0013).

2. i18n.merge_file de data/meson.build es INCONDICIONAL: no lo apaga
   -Dbuild-translations=false, porque es el paso que PRODUCE freedesktop.org.xml,
   el payload entero. Eso exige un msgfmt que entienda --xml. El de gettext-tiny
   sirve y no degrada nada: desde 2.x el template ya es XML válido (las
   traducciones se marcan con reglas ITS externas, cero ocurrencias de "<_"), así
   que sin catálogos la salida de un msgfmt real ES el template. Verificado a mano:
   copia byte a byte de los 384036 del template.

3. meson install deja SÓLO el XML fuente. Los consumidores no leen ese XML: leen
   los índices que genera update-mime-database (mime.cache, globs2, magic,
   aliases, subclasses). Sin ese paso el artefacto pasa toda verificación de
   presencia y el escritorio sigue sin saber qué es un .png — la regla 3 del repo
   en su forma exacta. La fase install lo corre contra /out y verifica por
   CONTENIDO: mime.cache y globs2 no vacíos, image/png en types. Salieron 1038
   tipos y 1448 globs.

Nace con strip_debug = true y REPRODUCE bit a bit (verificar-repro.sh: 1/1, cero
divergencias), caché binaria incluida. Estático, 0 NEEDED.

corpus 788/788 sealed · escritorio-kde 165/165 · grafo CIERRA · gate --check OK
Quedan 3 wanted en KDE: xwayland, polkit-qt-1, qqc2-breeze-style.

a6beb3b28d83ec8ec1b82ec41e1c172c9c29a944 · ruwaq Sergio · (1 killa ñawpaq) · tayta 48ce85624 · kay commitpi sach'ata qhaway

Semántico sayk'uy

Mana ima sutichaypas t'ikrakurqanchu: qillqalla, yachachiylla utaq willaylla t'ikrakurqan.

6 qillqakuna · +320 −96

diff --git a/docs/state/build-state-cosmic.json b/docs/state/build-state-cosmic.json
index c556bc24..bd18c0bd 100644
--- a/docs/state/build-state-cosmic.json
+++ b/docs/state/build-state-cosmic.json
@@ -1,12 +1,12 @@
 {
  "schema": "hammer-build-state/1",
  "totals": {
-  "recipes": 833,
-  "nodes": 833,
-  "sealed": 833
+  "recipes": 834,
+  "nodes": 834,
+  "sealed": 834
  },
  "by_class": {
-  "c": 181,
+  "c": 182,
   "go": 362,
   "gui": 34,
   "kernel": 6,
@@ -15,7 +15,7 @@
  "debt_by_class": {},
  "by_queue": {
   "corpus": {
-   "sealed": 786
+   "sealed": 787
   },
   "incoming-cosmic": {
    "sealed": 47
@@ -846,7 +846,7 @@
     "escritorio-mirada",
     "escritorio-sway"
    ],
-   "dependientes_total": 42
+   "dependientes_total": 43
   },
   "biome": {
    "iname": "biome",
@@ -4766,7 +4766,7 @@
     "escritorio-gnome",
     "escritorio-kde"
    ],
-   "dependientes_total": 98
+   "dependientes_total": 99
   },
   "gh": {
    "iname": "gh",
@@ -5204,9 +5204,10 @@
    "perfiles": [
     "escritorio-cosmic",
     "escritorio-gnome",
+    "escritorio-kde",
     "escritorio-sway"
    ],
-   "dependientes_total": 24
+   "dependientes_total": 25
   },
   "glib-shared": {
    "iname": "glib-shared",
@@ -8497,7 +8498,7 @@
     "escritorio-mirada",
     "escritorio-sway"
    ],
-   "dependientes_total": 97
+   "dependientes_total": 98
   },
   "libffi-shared": {
    "iname": "libffi-shared",
@@ -9004,9 +9005,10 @@
    "unblocks": 0,
    "perfiles": [
     "escritorio-cosmic",
-    "escritorio-gnome"
+    "escritorio-gnome",
+    "escritorio-kde"
    ],
-   "dependientes_total": 10
+   "dependientes_total": 11
   },
   "libxml2-shared": {
    "iname": "libxml2-shared",
@@ -9800,7 +9802,7 @@
     "escritorio-mirada",
     "escritorio-sway"
    ],
-   "dependientes_total": 115
+   "dependientes_total": 116
   },
   "micro": {
    "iname": "micro",
@@ -11104,7 +11106,7 @@
     "escritorio-kde",
     "escritorio-sway"
    ],
-   "dependientes_total": 73
+   "dependientes_total": 74
   },
   "pcre2-shared": {
    "iname": "pcre2-shared",
@@ -11348,7 +11350,7 @@
     "escritorio-mirada",
     "escritorio-sway"
    ],
-   "dependientes_total": 372
+   "dependientes_total": 373
   },
   "plow": {
    "iname": "plow",
@@ -11717,7 +11719,7 @@
     "escritorio-mirada",
     "escritorio-sway"
    ],
-   "dependientes_total": 281
+   "dependientes_total": 282
   },
   "qrcp": {
    "iname": "qrcp",
@@ -12272,7 +12274,7 @@
     "escritorio-mirada",
     "escritorio-sway"
    ],
-   "dependientes_total": 247
+   "dependientes_total": 248
   },
   "sassc": {
    "iname": "sassc",
@@ -12512,6 +12514,35 @@
    ],
    "dependientes_total": 0
   },
+  "shared-mime-info": {
+   "iname": "shared-mime-info",
+   "version": "2.5.1",
+   "link": "static",
+   "compiler": "zig-cc",
+   "deps": [
+    "binutils",
+    "meson",
+    "samurai",
+    "python3",
+    "pkgconf",
+    "gettext-tiny",
+    "glib",
+    "libxml2",
+    "pcre2",
+    "libffi",
+    "zlib"
+   ],
+   "cls": "c",
+   "queue": "corpus",
+   "hash": "b3:c6513399906bc433b6a9523749ed74b15e78ad3fb88cae9fa4085d6d4cddb109",
+   "state": "sealed",
+   "blocked_by": [],
+   "unblocks": 0,
+   "perfiles": [
+    "escritorio-kde"
+   ],
+   "dependientes_total": 0
+  },
   "shellharden": {
    "iname": "shellharden",
    "version": "4.3.1",
@@ -15108,7 +15139,7 @@
     "escritorio-mirada",
     "escritorio-sway"
    ],
-   "dependientes_total": 96
+   "dependientes_total": 97
   },
   "zlib-ng": {
    "iname": "zlib-ng",
diff --git a/docs/state/build-state-gnome.json b/docs/state/build-state-gnome.json
index 0f6f1dd1..7b69640b 100644
--- a/docs/state/build-state-gnome.json
+++ b/docs/state/build-state-gnome.json
@@ -1,12 +1,12 @@
 {
  "schema": "hammer-build-state/1",
  "totals": {
-  "recipes": 858,
-  "nodes": 858,
-  "sealed": 858
+  "recipes": 859,
+  "nodes": 859,
+  "sealed": 859
  },
  "by_class": {
-  "c": 220,
+  "c": 221,
   "go": 362,
   "gui": 40,
   "kernel": 6,
@@ -15,7 +15,7 @@
  "debt_by_class": {},
  "by_queue": {
   "corpus": {
-   "sealed": 779
+   "sealed": 780
   },
   "incoming-gnome": {
    "sealed": 79
@@ -933,7 +933,7 @@
     "escritorio-mirada",
     "escritorio-sway"
    ],
-   "dependientes_total": 42
+   "dependientes_total": 43
   },
   "biome": {
    "iname": "biome",
@@ -4601,7 +4601,7 @@
     "escritorio-gnome",
     "escritorio-kde"
    ],
-   "dependientes_total": 98
+   "dependientes_total": 99
   },
   "gh": {
    "iname": "gh",
@@ -8793,7 +8793,7 @@
     "escritorio-mirada",
     "escritorio-sway"
    ],
-   "dependientes_total": 97
+   "dependientes_total": 98
   },
   "libffi-shared": {
    "iname": "libffi-shared",
@@ -9664,9 +9664,10 @@
    "unblocks": 0,
    "perfiles": [
     "escritorio-cosmic",
-    "escritorio-gnome"
+    "escritorio-gnome",
+    "escritorio-kde"
    ],
-   "dependientes_total": 10
+   "dependientes_total": 11
   },
   "libxml2-shared": {
    "iname": "libxml2-shared",
@@ -10458,7 +10459,7 @@
     "escritorio-mirada",
     "escritorio-sway"
    ],
-   "dependientes_total": 115
+   "dependientes_total": 116
   },
   "micro": {
    "iname": "micro",
@@ -11905,7 +11906,7 @@
     "escritorio-kde",
     "escritorio-sway"
    ],
-   "dependientes_total": 73
+   "dependientes_total": 74
   },
   "peco": {
    "iname": "peco",
@@ -12130,7 +12131,7 @@
     "escritorio-mirada",
     "escritorio-sway"
    ],
-   "dependientes_total": 372
+   "dependientes_total": 373
   },
   "plow": {
    "iname": "plow",
@@ -12569,7 +12570,7 @@
     "escritorio-mirada",
     "escritorio-sway"
    ],
-   "dependientes_total": 281
+   "dependientes_total": 282
   },
   "qrcp": {
    "iname": "qrcp",
@@ -13124,7 +13125,7 @@
     "escritorio-mirada",
     "escritorio-sway"
    ],
-   "dependientes_total": 247
+   "dependientes_total": 248
   },
   "sassc": {
    "iname": "sassc",
@@ -13364,6 +13365,35 @@
    ],
    "dependientes_total": 0
   },
+  "shared-mime-info": {
+   "iname": "shared-mime-info",
+   "version": "2.5.1",
+   "link": "static",
+   "compiler": "zig-cc",
+   "deps": [
+    "binutils",
+    "meson",
+    "samurai",
+    "python3",
+    "pkgconf",
+    "gettext-tiny",
+    "glib",
+    "libxml2",
+    "pcre2",
+    "libffi",
+    "zlib"
+   ],
+   "cls": "c",
+   "queue": "corpus",
+   "hash": "b3:c6513399906bc433b6a9523749ed74b15e78ad3fb88cae9fa4085d6d4cddb109",
+   "state": "sealed",
+   "blocked_by": [],
+   "unblocks": 0,
+   "perfiles": [
+    "escritorio-kde"
+   ],
+   "dependientes_total": 0
+  },
   "shellharden": {
    "iname": "shellharden",
    "version": "4.3.1",
@@ -16109,7 +16139,7 @@
     "escritorio-mirada",
     "escritorio-sway"
    ],
-   "dependientes_total": 96
+   "dependientes_total": 97
   },
   "zlib-ng": {
    "iname": "zlib-ng",
diff --git a/docs/state/build-state-kde.json b/docs/state/build-state-kde.json
index 4948b088..7939e6d7 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": 974,
+  "recipes": 975,
   "nodes": 978,
-  "sealed": 974,
-  "wanted": 4
+  "sealed": 975,
+  "wanted": 3
  },
  "by_class": {
-  "c": 341,
+  "c": 342,
   "go": 362,
   "gui": 36,
   "kernel": 6,
   "rust": 229,
-  "wanted": 4
+  "wanted": 3
  },
  "debt_by_class": {},
  "by_queue": {
   "corpus": {
-   "sealed": 769
+   "sealed": 770
   },
   "incoming-kde": {
    "sealed": 205,
-   "wanted": 4
+   "wanted": 3
   }
  },
  "by_profile": {
@@ -37,8 +37,8 @@
   },
   "escritorio-kde": {
    "raices": 11,
-   "clausura": 163,
-   "sealed": 163
+   "clausura": 165,
+   "sealed": 165
   },
   "escritorio-mirada": {
    "raices": 14,
@@ -46,7 +46,7 @@
    "sealed": 29
   }
  },
- "sin_perfil": 726,
+ "sin_perfil": 725,
  "orphan_deps": [],
  "topo_ok": true,
  "nodes": {
@@ -961,7 +961,7 @@
     "escritorio-mirada",
     "escritorio-sway"
    ],
-   "dependientes_total": 42
+   "dependientes_total": 43
   },
   "biome": {
    "iname": "biome",
@@ -4781,7 +4781,7 @@
     "escritorio-gnome",
     "escritorio-kde"
    ],
-   "dependientes_total": 98
+   "dependientes_total": 99
   },
   "gh": {
    "iname": "gh",
@@ -5219,9 +5219,10 @@
    "perfiles": [
     "escritorio-cosmic",
     "escritorio-gnome",
+    "escritorio-kde",
     "escritorio-sway"
    ],
-   "dependientes_total": 24
+   "dependientes_total": 25
   },
   "glib-shared": {
    "iname": "glib-shared",
@@ -12209,7 +12210,7 @@
     "escritorio-mirada",
     "escritorio-sway"
    ],
-   "dependientes_total": 97
+   "dependientes_total": 98
   },
   "libffi-shared": {
    "iname": "libffi-shared",
@@ -13927,7 +13928,7 @@
     "escritorio-mirada",
     "escritorio-sway"
    ],
-   "dependientes_total": 115
+   "dependientes_total": 116
   },
   "micro": {
    "iname": "micro",
@@ -15466,7 +15467,7 @@
     "escritorio-kde",
     "escritorio-sway"
    ],
-   "dependientes_total": 73
+   "dependientes_total": 74
   },
   "pcre2-shared": {
    "iname": "pcre2-shared",
@@ -15770,7 +15771,7 @@
     "escritorio-mirada",
     "escritorio-sway"
    ],
-   "dependientes_total": 372
+   "dependientes_total": 373
   },
   "plasma-activities": {
    "iname": "plasma-activities",
@@ -17076,7 +17077,7 @@
     "escritorio-mirada",
     "escritorio-sway"
    ],
-   "dependientes_total": 281
+   "dependientes_total": 282
   },
   "qcoro": {
    "iname": "qcoro",
@@ -18192,7 +18193,7 @@
     "escritorio-mirada",
     "escritorio-sway"
    ],
-   "dependientes_total": 247
+   "dependientes_total": 248
   },
   "sassc": {
    "iname": "sassc",
@@ -18434,17 +18435,31 @@
   },
   "shared-mime-info": {
    "iname": "shared-mime-info",
-   "version": null,
-   "link": null,
-   "compiler": null,
-   "deps": [],
-   "cls": "wanted",
-   "queue": "incoming-kde",
-   "hash": null,
-   "state": "wanted",
+   "version": "2.5.1",
+   "link": "static",
+   "compiler": "zig-cc",
+   "deps": [
+    "binutils",
+    "meson",
+    "samurai",
+    "python3",
+    "pkgconf",
+    "gettext-tiny",
+    "glib",
+    "libxml2",
+    "pcre2",
+    "libffi",
+    "zlib"
+   ],
+   "cls": "c",
+   "queue": "corpus",
+   "hash": "b3:c6513399906bc433b6a9523749ed74b15e78ad3fb88cae9fa4085d6d4cddb109",
+   "state": "sealed",
    "blocked_by": [],
    "unblocks": 0,
-   "perfiles": [],
+   "perfiles": [
+    "escritorio-kde"
+   ],
    "dependientes_total": 0
   },
   "shellharden": {
@@ -21626,7 +21641,7 @@
     "escritorio-mirada",
     "escritorio-sway"
    ],
-   "dependientes_total": 96
+   "dependientes_total": 97
   },
   "zlib-ng": {
    "iname": "zlib-ng",
diff --git a/docs/state/build-state-wlr.json b/docs/state/build-state-wlr.json
index 9c7eae79..7bc14f18 100644
--- a/docs/state/build-state-wlr.json
+++ b/docs/state/build-state-wlr.json
@@ -1,12 +1,12 @@
 {
  "schema": "hammer-build-state/1",
  "totals": {
-  "recipes": 801,
-  "nodes": 801,
-  "sealed": 801
+  "recipes": 802,
+  "nodes": 802,
+  "sealed": 802
  },
  "by_class": {
-  "c": 172,
+  "c": 173,
   "go": 362,
   "gui": 32,
   "kernel": 6,
@@ -15,7 +15,7 @@
  "debt_by_class": {},
  "by_queue": {
   "corpus": {
-   "sealed": 786
+   "sealed": 787
   },
   "incoming-wlr": {
    "sealed": 15
@@ -827,7 +827,7 @@
     "escritorio-mirada",
     "escritorio-sway"
    ],
-   "dependientes_total": 42
+   "dependientes_total": 43
   },
   "biome": {
    "iname": "biome",
@@ -4277,7 +4277,7 @@
     "escritorio-gnome",
     "escritorio-kde"
    ],
-   "dependientes_total": 98
+   "dependientes_total": 99
   },
   "gh": {
    "iname": "gh",
@@ -4715,9 +4715,10 @@
    "perfiles": [
     "escritorio-cosmic",
     "escritorio-gnome",
+    "escritorio-kde",
     "escritorio-sway"
    ],
-   "dependientes_total": 24
+   "dependientes_total": 25
   },
   "glow": {
    "iname": "glow",
@@ -7928,7 +7929,7 @@
     "escritorio-mirada",
     "escritorio-sway"
    ],
-   "dependientes_total": 97
+   "dependientes_total": 98
   },
   "libffi-shared": {
    "iname": "libffi-shared",
@@ -8390,9 +8391,10 @@
    "unblocks": 0,
    "perfiles": [
     "escritorio-cosmic",
-    "escritorio-gnome"
+    "escritorio-gnome",
+    "escritorio-kde"
    ],
-   "dependientes_total": 10
+   "dependientes_total": 11
   },
   "libxml2-shared": {
    "iname": "libxml2-shared",
@@ -9166,7 +9168,7 @@
     "escritorio-mirada",
     "escritorio-sway"
    ],
-   "dependientes_total": 115
+   "dependientes_total": 116
   },
   "micro": {
    "iname": "micro",
@@ -10431,7 +10433,7 @@
     "escritorio-kde",
     "escritorio-sway"
    ],
-   "dependientes_total": 73
+   "dependientes_total": 74
   },
   "peco": {
    "iname": "peco",
@@ -10623,7 +10625,7 @@
     "escritorio-mirada",
     "escritorio-sway"
    ],
-   "dependientes_total": 372
+   "dependientes_total": 373
   },
   "plow": {
    "iname": "plow",
@@ -10922,7 +10924,7 @@
     "escritorio-mirada",
     "escritorio-sway"
    ],
-   "dependientes_total": 281
+   "dependientes_total": 282
   },
   "qrcp": {
    "iname": "qrcp",
@@ -11477,7 +11479,7 @@
     "escritorio-mirada",
     "escritorio-sway"
    ],
-   "dependientes_total": 247
+   "dependientes_total": 248
   },
   "sassc": {
    "iname": "sassc",
@@ -11717,6 +11719,35 @@
    ],
    "dependientes_total": 0
   },
+  "shared-mime-info": {
+   "iname": "shared-mime-info",
+   "version": "2.5.1",
+   "link": "static",
+   "compiler": "zig-cc",
+   "deps": [
+    "binutils",
+    "meson",
+    "samurai",
+    "python3",
+    "pkgconf",
+    "gettext-tiny",
+    "glib",
+    "libxml2",
+    "pcre2",
+    "libffi",
+    "zlib"
+   ],
+   "cls": "c",
+   "queue": "corpus",
+   "hash": "b3:c6513399906bc433b6a9523749ed74b15e78ad3fb88cae9fa4085d6d4cddb109",
+   "state": "sealed",
+   "blocked_by": [],
+   "unblocks": 0,
+   "perfiles": [
+    "escritorio-kde"
+   ],
+   "dependientes_total": 0
+  },
   "shellharden": {
    "iname": "shellharden",
    "version": "4.3.1",
@@ -14525,7 +14556,7 @@
     "escritorio-mirada",
     "escritorio-sway"
    ],
-   "dependientes_total": 96
+   "dependientes_total": 97
   },
   "zlib-ng": {
    "iname": "zlib-ng",
diff --git a/docs/state/build-state.json b/docs/state/build-state.json
index 6c0ad98d..4bea9b06 100644
--- a/docs/state/build-state.json
+++ b/docs/state/build-state.json
@@ -1,12 +1,12 @@
 {
  "schema": "hammer-build-state/1",
  "totals": {
-  "recipes": 787,
-  "nodes": 787,
-  "sealed": 787
+  "recipes": 788,
+  "nodes": 788,
+  "sealed": 788
  },
  "by_class": {
-  "c": 158,
+  "c": 159,
   "go": 362,
   "gui": 32,
   "kernel": 6,
@@ -15,7 +15,7 @@
  "debt_by_class": {},
  "by_queue": {
   "corpus": {
-   "sealed": 787
+   "sealed": 788
   }
  },
  "by_profile": {
@@ -819,7 +819,7 @@
     "escritorio-mirada",
     "escritorio-sway"
    ],
-   "dependientes_total": 42
+   "dependientes_total": 43
   },
   "biome": {
    "iname": "biome",
@@ -4211,7 +4211,7 @@
     "escritorio-gnome",
     "escritorio-kde"
    ],
-   "dependientes_total": 98
+   "dependientes_total": 99
   },
   "gh": {
    "iname": "gh",
@@ -4649,9 +4649,10 @@
    "perfiles": [
     "escritorio-cosmic",
     "escritorio-gnome",
+    "escritorio-kde",
     "escritorio-sway"
    ],
-   "dependientes_total": 24
+   "dependientes_total": 25
   },
   "glow": {
    "iname": "glow",
@@ -7790,7 +7791,7 @@
     "escritorio-mirada",
     "escritorio-sway"
    ],
-   "dependientes_total": 97
+   "dependientes_total": 98
   },
   "libffi-shared": {
    "iname": "libffi-shared",
@@ -8252,9 +8253,10 @@
    "unblocks": 0,
    "perfiles": [
     "escritorio-cosmic",
-    "escritorio-gnome"
+    "escritorio-gnome",
+    "escritorio-kde"
    ],
-   "dependientes_total": 10
+   "dependientes_total": 11
   },
   "libxml2-shared": {
    "iname": "libxml2-shared",
@@ -9028,7 +9030,7 @@
     "escritorio-mirada",
     "escritorio-sway"
    ],
-   "dependientes_total": 115
+   "dependientes_total": 116
   },
   "micro": {
    "iname": "micro",
@@ -10293,7 +10295,7 @@
     "escritorio-kde",
     "escritorio-sway"
    ],
-   "dependientes_total": 73
+   "dependientes_total": 74
   },
   "peco": {
    "iname": "peco",
@@ -10485,7 +10487,7 @@
     "escritorio-mirada",
     "escritorio-sway"
    ],
-   "dependientes_total": 372
+   "dependientes_total": 373
   },
   "plow": {
    "iname": "plow",
@@ -10784,7 +10786,7 @@
     "escritorio-mirada",
     "escritorio-sway"
    ],
-   "dependientes_total": 281
+   "dependientes_total": 282
   },
   "qrcp": {
    "iname": "qrcp",
@@ -11339,7 +11341,7 @@
     "escritorio-mirada",
     "escritorio-sway"
    ],
-   "dependientes_total": 247
+   "dependientes_total": 248
   },
   "sassc": {
    "iname": "sassc",
@@ -11579,6 +11581,35 @@
    ],
    "dependientes_total": 0
   },
+  "shared-mime-info": {
+   "iname": "shared-mime-info",
+   "version": "2.5.1",
+   "link": "static",
+   "compiler": "zig-cc",
+   "deps": [
+    "binutils",
+    "meson",
+    "samurai",
+    "python3",
+    "pkgconf",
+    "gettext-tiny",
+    "glib",
+    "libxml2",
+    "pcre2",
+    "libffi",
+    "zlib"
+   ],
+   "cls": "c",
+   "queue": "corpus",
+   "hash": "b3:c6513399906bc433b6a9523749ed74b15e78ad3fb88cae9fa4085d6d4cddb109",
+   "state": "sealed",
+   "blocked_by": [],
+   "unblocks": 0,
+   "perfiles": [
+    "escritorio-kde"
+   ],
+   "dependientes_total": 0
+  },
   "shellharden": {
    "iname": "shellharden",
    "version": "4.3.1",
@@ -14059,7 +14090,7 @@
     "escritorio-mirada",
     "escritorio-sway"
    ],
-   "dependientes_total": 96
+   "dependientes_total": 97
   },
   "zlib-ng": {
    "iname": "zlib-ng",
diff --git a/recipes/shared-mime-info.toml b/recipes/shared-mime-info.toml
new file mode 100644
index 00000000..a46e7f48
--- /dev/null
+++ b/recipes/shared-mime-info.toml
@@ -0,0 +1,86 @@
+# shared-mime-info 2.5.1 — la BASE DE DATOS MIME de freedesktop: qué tipo de fichero es cada cosa,
+# con qué icono se dibuja y con qué app se abre. Es el hueco de RUNTIME nº1 del triaje de la frontera
+# (docs/state/frontera-triaje.toml): ninguna receta la pide para CONSTRUIR —por eso el escritorio
+# sellaba 163/163 sin ella— pero sin la base el KDE arranca sin tipos de fichero, sin asociaciones y
+# con iconos genéricos. Qt6 (QMimeDatabase) y GLib (g_content_type_*) la leen los dos de
+# /usr/share/mime; GLib EXIGE el `mime.cache` binario, así que la receta no se conforma con instalar
+# el XML: lo compila (ver la fase install).
+#
+# ── POR QUÉ VIVE EN LA RAÍZ Y NO EN incoming-kde ────────────────────────────────────────────────
+# `targets.toml` la declara bajo `escritorio-kde` porque ahí se detectó el hueco, pero no tiene nada
+# de KDE: es freedesktop puro y GNOME/COSMIC la quieren igual (ver el comentario de gdk-pixbuf, que
+# hoy la ESQUIVA con -Dgio_sniffing=false). En `recipes/` la ven los cinco grafos; en incoming-kde
+# sólo la vería `--kde`.
+name    = "shared-mime-info"
+version = "2.5.1"
+license = "GPL-2.0-or-later"
+
+[source]
+# GIT, no tarball, A PROPÓSITO: freedesktop no publica downloads de release para este proyecto —la
+# API de releases sólo ofrece los `-/archive/` autogenerados de GitLab, y esos NO son estables byte
+# a byte, así que un sha256 pinneado sobre ellos se rompe solo (mismo criterio que wlr-randr).
+# El commit es el tag 2.5.1 PELADO (`git rev-parse 2.5.1^{commit}`): en este repo el tag es un
+# objeto tag, y el pin tiene que ser el commit (misma trampa que las 4 del mirror, ADR 0013).
+repo   = "https://gitlab.freedesktop.org/xdg/shared-mime-info.git"
+commit = "fd8ab89c20093f1bfba8fa9e302ba584fffd0fd7"
+
+[build]
+compiler = "zig-cc"
+target   = "x86_64-linux-musl"
+link     = "static"
+# El valor de este paquete son DATOS (384 KB de XML + la caché binaria); el único ejecutable es
+# update-mime-database. Nace con el split de debug puesto para que reproduzca desde el día uno:
+# es la deriva conocida del corpus (rutas /src dentro de .debug_*, ver why-differs).
+strip_debug = true
+
+[build.phases]
+# ── las cuatro perillas, y por qué ──────────────────────────────────────────────────────────────
+#  -Dbuild-tools=true      update-mime-database: es lo que compila el XML a mime.cache. LO QUEREMOS.
+#  -Dbuild-tests=false     el suite pide `xmllint`, que nuestra libxml2 no instala (--without-python,
+#                          binario aparte); y los binarios de test ni se instalan.
+#  -Dbuild-spec=false      la especificación en HTML pide `xmlto` + docbook-xsl: no están en el lab
+#                          y son documentación, no distro.
+#  -Dbuild-translations=false  el corpus no tiene un gettext real (sólo gettext-tiny), así que no hay
+#                          .mo que fusionar. Ver abajo: esto NO se lleva la base de datos puesta.
+#  -Dupdate-mimedb=false   es el DEFAULT y lo dejo explícito: esa opción corre update-mime-database
+#                          dentro de `meson install`, y el propio upstream avisa que no se enciende
+#                          con DESTDIR (apuntaría al /usr real). Lo corremos a mano contra /out.
+#
+# ⚠ `i18n.merge_file` de data/meson.build es INCONDICIONAL: no lo apaga `-Dbuild-translations=false`,
+# porque es el paso que PRODUCE freedesktop.org.xml —el payload entero— y no un extra de i18n. Eso
+# obliga a tener un `msgfmt` que entienda `--xml`. El del corpus es el de gettext-tiny, y hace
+# exactamente lo correcto acá: copia el `--template` al `-o`. Verificado a mano sobre el template
+# real (384036 bytes, copia byte a byte). Y es correcto, no una degradación disimulada: desde 2.x el
+# template ya es XML válido —las traducciones se marcan con reglas ITS externas, no con elementos
+# `<_comment>`— así que sin catálogos la salida de un msgfmt real ES el template. Comprobado: cero
+# ocurrencias de `<_`. La base sale en inglés, que es lo mismo que hace el resto del corpus (nls off).
+configure = "PKG_CONFIG_PATH=/usr/lib/pkgconfig PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release --wrap-mode=nodownload --prefer-static -Ddefault_library=static -Dbuild-tools=true -Dbuild-tests=false -Dbuild-spec=false -Dbuild-translations=false -Dupdate-mimedb=false"
+compile   = "PYTHONPATH=/usr/lib/python3.12/site-packages ninja -C output"
+install   = '''
+set -e
+PYTHONPATH=/usr/lib/python3.12/site-packages DESTDIR=/out meson install -C output --no-rebuild
+
+# ── el paso que convierte un nombre en un artefacto ─────────────────────────────────────────────
+# `meson install` deja el XML fuente en /usr/share/mime/packages/ y NADA MÁS. Los consumidores no
+# leen ese XML: leen los índices que genera update-mime-database (mime.cache, globs2, magic,
+# aliases, subclasses, treemagic…). Sin este paso el artefacto pasa todas las verificaciones de
+# presencia —directorio con contenido, ficheros no vacíos— y el escritorio sigue sin saber qué es un
+# .png. Es justo la forma de vacío que la regla 3 del repo describe: llega hasta el final diciendo
+# que todo fue bien.
+test -x /out/usr/bin/update-mime-database
+/out/usr/bin/update-mime-database /out/usr/share/mime
+
+# Verificación por CONTENIDO, no por presencia: mime.cache vacío o de 0 tipos es indistinguible de
+# un éxito si sólo se mira que el fichero exista.
+test -s /out/usr/share/mime/mime.cache
+test -s /out/usr/share/mime/globs2
+grep -q "^image/png$" /out/usr/share/mime/types
+echo "  mime: $(wc -l < /out/usr/share/mime/types) tipos, $(wc -l < /out/usr/share/mime/globs2) globs"
+'''
+
+# `binutils` por `strip_debug = true` (el paso de strip del lab usa su `strip --strip-debug`).
+# `gettext-tiny` por el msgfmt --xml de arriba: no es opcional, sin él no hay freedesktop.org.xml.
+# pcre2/libffi/zlib son el `.pc Requires` de glib y gio, no un capricho: el link es estático y sin
+# ellos update-mime-database no cierra (patrón `.pc Requires`→`[deps]`).
+[deps]
+build = ["binutils", "meson", "samurai", "python3", "pkgconf", "gettext-tiny", "glib", "libxml2", "pcre2", "libffi", "zlib"]