apps: GNOME tenía imagen sin terminal ni editor — arreglado con CERO recetas; y el montón A queda agotado
DOS COSAS, y la segunda no estaba en el plan.
1. EL MONTÓN A SE AGOTÓ DE COSAS SIN MURO. Re-triadas con scripts/provee.py las tres
candidatas que la tabla daba como baratas o dudosas; las tres son muro, y ninguna por
el motivo que decía la tabla:
- imv → no hay proveedor de OpenGL de escritorio (ya documentado; la sustituyó swayimg)
- mupdf → la nota decía «el X11 es del visor mupdf-x11; mupdf-gl no». Falso: platform/gl/
va sobre GLUT + OpenGL de escritorio, el mismo muro que imv. mupdf NO TIENE
visor Wayland: sus dos UIs son X11 o GL. El motor no tiene muros pero no hace
falta, el PDF ya lo da poppler.
- inkscape→ era GTK3 encubierto, como la tabla sospechaba: INKSCAPE_1_4_4 pide
gtkmm-3.0>=3.24 y gtk+-3.0>=3.24. master SÍ migró a GTK4 (gtk4>=4.14) pero
está sin publicar, y además el catálogo no tiene NI UN binding C++:
provee.py da ✗ en sigc++-2.0, glibmm-2.4, cairomm-1.0, pangomm-1.4 y gtkmm.
⇒ todo lo que queda está detrás de UNA de cuatro decisiones (GTK3 / Qt6-en-el-corpus /
GL de escritorio / X11), no de trabajo de recetas.
2. LO QUE SÍ ESTABA ROTO, Y NO ERA FALTA DE RECETAS. Cruzando la membresía de los cuatro
perfiles contra emuladores de terminal, editores y gestores de ficheros:
escritorio-cosmic term=cosmic-term editor=cosmic-edit archivos=cosmic-files
escritorio-sway term=foot editor=vim archivos=—
escritorio-gnome term=— editor=— archivos=—
escritorio-kde term=— editor=— archivos=—
Es la lección de foot otra vez y a mayor escala: sway llegó a 121/121 SIN emulador de
terminal porque nadie lo declaraba, y la métrica de clausura no lo ve porque mide lo
DECLARADO. Un escritorio sin terminal no es uno incompleto: es uno del que no se puede
salir cuando algo falla.
GNOME arreglado con CERO recetas nuevas: foot y helix viven en el CORPUS, ya estaban
selladas y no las declaraba NINGÚN perfil. foot es Wayland puro sobre xdg-shell (no
pide protocolos de wlroots) así que corre bajo mutter igual que bajo sway; su único
NEEDED es libc.so. helix es TUI y corre dentro de la terminal.
⚠ KDE NO SE TOCA, y es un hallazgo aparte que hay que acordar con ese frente: tiene 22
apps con .desktop selladas en su cola y sin declarar (konsole, dolphin, kate, okular,
spectacle, ark, gwenview, systemsettings, kcalc…) y además le faltan plasma-desktop,
plasma-nm, plasma-pa, powerdevil y kscreen — o sea red, audio, energía y pantalla. Su
perfil son 13 raíces de ARRANQUE EN METAL, no la imagen de escritorio completa (ésa se
hidrató aparte, por hash). No cuesta un build; cuesta acordarlo.
Nota de método: build-state.py invoca `hammer hash` ~1000 veces y el otro agente
recompiló el binario a mitad del barrido ⇒ kjobwidgets salió `unhashable` y KDE reportó
997/998. No era la receta: era la carrera. Re-corrido da 998/998.
Los cinco grafos: 819/819, 998/998, 882/882, 855/855, 832/832, cero nodos `wanted`.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XB2iEmxeLZgzqNfhWChrLo
Delta semántico
Ninguna definición cambió: el cambio es de texto, documentación o datos.
7 archivos · +120 −17
diff --git a/docs/plan-apps-usuario-final.md b/docs/plan-apps-usuario-final.md
index 64cd4404..d58582a0 100644
--- a/docs/plan-apps-usuario-final.md
+++ b/docs/plan-apps-usuario-final.md
@@ -38,8 +38,8 @@ Dos columnas, y **la que importa es la segunda**:
| ~~swayimg~~ | — | — | ✅ **SELLADA 2026-09-03** (b3:9bcd39c1, **5.5**), en las CUATRO imágenes. Visor sin GL: rasteriza a `wl_shm`. Trae backend DRM de yapa. |
| ~~luajit~~ | — | — | ✅ **SELLADA 2026-09-03** (b3:115d4c1c). Escrita para destrabar swayimg 5.x; mpv también la prefiere. |
| ~~zathura~~ | — | — | ✅ **SELLADA 2026-09-03** (b3:9c5eac92) + `zathura-pdf-poppler`. **Es GTK4, no GTK3**: upstream vació girara. En gnome/cosmic/sway; **NO en KDE**, por colisión de poppler. |
-| **mupdf** | 9 | X11 | el X11 es del visor `mupdf-x11`; el motor y `mupdf-gl` no. Requiere mirar. |
-| **inkscape** | 14 | — | sin muros, pero `gtkmm3` en la lista hay que verificarlo (¿GTK3 encubierto?). |
+| ~~mupdf~~ | 9 | X11 **y GL de escritorio** | ❌ **BLOQUEADA 2026-09-03.** La nota era falsa: `mupdf-gl` **sí** es un muro — su `platform/gl/` va sobre GLUT + OpenGL de escritorio, el mismo muro que imv. mupdf **no tiene visor Wayland**: sus dos UIs son `mupdf-x11` y `mupdf-gl`. El motor (`libmupdf`+`mutool`) no tiene muros, pero no hace falta: el PDF ya lo da poppler. |
+| ~~inkscape~~ | 14 | **GTK3** (en la release) | ❌ **BLOQUEADA 2026-09-03.** Era GTK3 encubierto, como se sospechaba: `INKSCAPE_1_4_4` pide `gtkmm-3.0>=3.24` **y** `gtk+-3.0>=3.24`. `master` **sí** migró a GTK4 (`gtk4>=4.14`, `gtkmm-4.0>=4.13.3`) pero está sin publicar; y de todos modos el catálogo **no tiene NI UN binding C++**: faltan sigc++, glibmm, cairomm, pangomm y gtkmm enteros. |
| *mpv* | *16* | *X11* | *YA SELLADA — es el control del método, no una candidata.* |
| **gimp** | 18 | **GTK3**, X11 | GIMP 2.10 es GTK2/3. Fuera de alcance mientras GTK3 esté aparcado. |
| **obs-studio** | 20 | **Qt6**, X11 | ver abajo. |
@@ -176,6 +176,47 @@ scripts/provee.py exiv2 librsvg # ✓ existen, alcanzables SÓLO
Es el hermano de build de `vigia-sonames.py`, que cubre la mitad de runtime. **El triaje de la
próxima app empieza por acá**, no por contar `makedepends` contra `recipes/*.toml`.
+## El montón A quedó AGOTADO de cosas sin muro (2026-09-03)
+
+Con `zathura` cerrada, se re-triaron con `scripts/provee.py` las tres candidatas que la tabla daba
+como baratas o dudosas. **Las tres son muro**, y ninguna lo era por el motivo que decía la tabla:
+
+- **imv** → no hay proveedor de OpenGL de escritorio (sección de arriba). Sustituida por `swayimg`.
+- **mupdf** → sus DOS visores son X11 o GLUT+OpenGL de escritorio. No tiene UI Wayland.
+- **inkscape** → la release es GTK3; el `master` con GTK4 está sin publicar y además pide toda la
+ torre de bindings C++ que este catálogo no tiene (`provee.py` da ✗ en sigc++-2.0, glibmm-2.4,
+ cairomm-1.0, pangomm-1.4, gtkmm-3.0 **y** gtkmm-4.0).
+
+**Todo lo que queda del montón A está detrás de UNA de cuatro decisiones**, no de trabajo de
+recetas: GTK3 (inkscape-release, gimp, firefox), Qt6-en-el-corpus (obs), OpenGL de escritorio
+(imv, mupdf-gl) o X11 (chromium, mupdf-x11). Ver «los dos veredictos» abajo y el orden propuesto.
+
+## ⚠ Lo que SÍ estaba roto y no era falta de recetas: imágenes sin terminal
+
+Al terminar zathura se cruzó la membresía de los cuatro perfiles contra una lista de emuladores de
+terminal, editores y gestores de ficheros. El resultado no tiene nada que ver con el montón A y es
+más grave que cualquier app que falte:
+
+| perfil | terminal | editor | archivos |
+|---|---|---|---|
+| `escritorio-cosmic` | cosmic-term | cosmic-edit | cosmic-files |
+| `escritorio-sway` | foot | vim | — |
+| `escritorio-gnome` | **—** | **—** | — |
+| `escritorio-kde` | **—** | **—** | — |
+
+Es la lección de `foot` otra vez y a mayor escala: sway llegó a 121/121 **sin emulador de terminal**
+porque nadie lo declaraba, y la métrica de clausura no lo puede ver porque mide lo DECLARADO.
+
+**GNOME arreglado el 2026-09-03 con CERO recetas nuevas**: `foot` y `helix` viven en el corpus, ya
+estaban selladas y **no las declaraba ningún perfil**. foot es Wayland puro sobre `xdg-shell` (no
+pide protocolos de wlroots) así que corre bajo mutter; su único NEEDED es `libc.so`.
+
+**KDE es un hallazgo aparte y NO se tocó**: tiene **22 apps con `.desktop` selladas en su cola y sin
+declarar** —konsole, dolphin, kate, okular, spectacle, ark, gwenview, systemsettings, kcalc…— y
+además le faltan `plasma-desktop`, `plasma-nm`, `plasma-pa`, `powerdevil` y `kscreen`, o sea red,
+audio, energía y pantalla. Su perfil son **13 raíces de ARRANQUE EN METAL**, no la imagen de
+escritorio completa (ésa se hidrató aparte, por hash). Reordenarlo es decisión del frente KDE.
+
## Los dos veredictos que corrigen al ADR
### Firefox NO es montón A
@@ -228,8 +269,16 @@ cierre (wayland, ffmpeg, libdrm) quedó completo cuando entró mpv.
corpus (`json-glib`, `lcms2`, `glib-shared`, `pcre2-shared`, `bzip2-shared`).
**No va en `escritorio-kde`**: su backend necesita una poppler con `ENABLE_GLIB=ON` y esa imagen
ya trae la de Qt6 vía okular; las dos instalan `/usr/lib/libpoppler.so.146`.
-6. **Decisión de navegador** — no es trabajo de recetas, es la elección de arriba. No debería
- entrar a una cola de build hasta que esté tomada.
+6. ✅ **terminal y editor en GNOME** — hecho (2026-09-03), cero recetas: `foot` + `helix` del
+ corpus, que ya estaban selladas y sin declarar. Ver la sección de arriba.
+7. **DECISIÓN pendiente, y ahora bloquea a TODO lo que queda** — no es trabajo de recetas:
+ **(a)** autorar el stack GTK3 (destraba inkscape-release, GIMP y Firefox de una vez),
+ **(b)** dárselo a [qorpa](adr/0015-imagenes-ajenas.md) como montón B, o
+ **(c)** autorar la torre de bindings C++ (sigc++/glibmm/cairomm/pangomm/gtkmm-4) y seguir el
+ `master` sin publicar de Inkscape.
+ Hasta que se tome, el montón A no tiene ningún ticket barato: está agotado.
+8. **Aparte y sin decisión: las 22 apps de KDE selladas y sin declarar** (sección de arriba). No
+ cuesta un build — cuesta acordarlo con el frente KDE.
OBS, Firefox, Chromium, GIMP y LibreOffice **salen del montón A** hasta que se decida GTK3 o qorpa.
Que se llame montón A y no se pueda construir es peor que no tenerlo en la lista: es deuda fantasma,
diff --git a/docs/state/build-state-cosmic.json b/docs/state/build-state-cosmic.json
index e3dd542e..8a247bd7 100644
--- a/docs/state/build-state-cosmic.json
+++ b/docs/state/build-state-cosmic.json
@@ -46,7 +46,7 @@
"sealed": 33
}
},
- "sin_perfil": 645,
+ "sin_perfil": 644,
"orphan_deps": [],
"topo_ok": true,
"nodes": {
@@ -4206,6 +4206,7 @@
"blocked_by": [],
"unblocks": 0,
"perfiles": [
+ "escritorio-gnome",
"escritorio-sway"
],
"dependientes_total": 3
@@ -4530,6 +4531,7 @@
"blocked_by": [],
"unblocks": 0,
"perfiles": [
+ "escritorio-gnome",
"escritorio-sway"
],
"dependientes_total": 0
@@ -6747,7 +6749,9 @@
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
- "perfiles": [],
+ "perfiles": [
+ "escritorio-gnome"
+ ],
"dependientes_total": 0
},
"helm": {
@@ -14231,6 +14235,7 @@
"blocked_by": [],
"unblocks": 0,
"perfiles": [
+ "escritorio-gnome",
"escritorio-sway"
],
"dependientes_total": 4
@@ -14711,6 +14716,7 @@
"blocked_by": [],
"unblocks": 0,
"perfiles": [
+ "escritorio-gnome",
"escritorio-sway"
],
"dependientes_total": 4
diff --git a/docs/state/build-state-gnome.json b/docs/state/build-state-gnome.json
index 604e0686..04a06f95 100644
--- a/docs/state/build-state-gnome.json
+++ b/docs/state/build-state-gnome.json
@@ -36,9 +36,9 @@
"sealed": 74
},
"escritorio-gnome": {
- "raices": 15,
- "clausura": 150,
- "sealed": 150
+ "raices": 17,
+ "clausura": 155,
+ "sealed": 155
},
"escritorio-mirada": {
"raices": 14,
@@ -46,7 +46,7 @@
"sealed": 33
}
},
- "sin_perfil": 661,
+ "sin_perfil": 660,
"orphan_deps": [],
"topo_ok": true,
"nodes": {
@@ -3957,6 +3957,7 @@
"blocked_by": [],
"unblocks": 0,
"perfiles": [
+ "escritorio-gnome",
"escritorio-sway"
],
"dependientes_total": 3
@@ -4281,6 +4282,7 @@
"blocked_by": [],
"unblocks": 0,
"perfiles": [
+ "escritorio-gnome",
"escritorio-sway"
],
"dependientes_total": 0
@@ -6943,7 +6945,9 @@
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
- "perfiles": [],
+ "perfiles": [
+ "escritorio-gnome"
+ ],
"dependientes_total": 0
},
"helm": {
@@ -15150,6 +15154,7 @@
"blocked_by": [],
"unblocks": 0,
"perfiles": [
+ "escritorio-gnome",
"escritorio-sway"
],
"dependientes_total": 4
@@ -15684,6 +15689,7 @@
"blocked_by": [],
"unblocks": 0,
"perfiles": [
+ "escritorio-gnome",
"escritorio-sway"
],
"dependientes_total": 4
diff --git a/docs/state/build-state-kde.json b/docs/state/build-state-kde.json
index 006ba4d6..d13286c7 100644
--- a/docs/state/build-state-kde.json
+++ b/docs/state/build-state-kde.json
@@ -47,7 +47,7 @@
"sealed": 29
}
},
- "sin_perfil": 705,
+ "sin_perfil": 704,
"orphan_deps": [],
"topo_ok": true,
"nodes": {
@@ -4098,6 +4098,7 @@
"blocked_by": [],
"unblocks": 0,
"perfiles": [
+ "escritorio-gnome",
"escritorio-sway"
],
"dependientes_total": 3
@@ -4485,6 +4486,7 @@
"blocked_by": [],
"unblocks": 0,
"perfiles": [
+ "escritorio-gnome",
"escritorio-sway"
],
"dependientes_total": 0
@@ -6838,7 +6840,9 @@
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
- "perfiles": [],
+ "perfiles": [
+ "escritorio-gnome"
+ ],
"dependientes_total": 0
},
"helm": {
@@ -20602,6 +20606,7 @@
"blocked_by": [],
"unblocks": 0,
"perfiles": [
+ "escritorio-gnome",
"escritorio-sway"
],
"dependientes_total": 4
@@ -21082,6 +21087,7 @@
"blocked_by": [],
"unblocks": 0,
"perfiles": [
+ "escritorio-gnome",
"escritorio-sway"
],
"dependientes_total": 4
diff --git a/docs/state/build-state-wlr.json b/docs/state/build-state-wlr.json
index 90736838..9f8b1aaa 100644
--- a/docs/state/build-state-wlr.json
+++ b/docs/state/build-state-wlr.json
@@ -46,7 +46,7 @@
"sealed": 171
}
},
- "sin_perfil": 645,
+ "sin_perfil": 644,
"orphan_deps": [],
"topo_ok": true,
"nodes": {
@@ -3740,6 +3740,7 @@
"blocked_by": [],
"unblocks": 0,
"perfiles": [
+ "escritorio-gnome",
"escritorio-sway"
],
"dependientes_total": 3
@@ -4064,6 +4065,7 @@
"blocked_by": [],
"unblocks": 0,
"perfiles": [
+ "escritorio-gnome",
"escritorio-sway"
],
"dependientes_total": 0
@@ -6310,7 +6312,9 @@
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
- "perfiles": [],
+ "perfiles": [
+ "escritorio-gnome"
+ ],
"dependientes_total": 0
},
"helm": {
@@ -13848,6 +13852,7 @@
"blocked_by": [],
"unblocks": 0,
"perfiles": [
+ "escritorio-gnome",
"escritorio-sway"
],
"dependientes_total": 4
@@ -14328,6 +14333,7 @@
"blocked_by": [],
"unblocks": 0,
"perfiles": [
+ "escritorio-gnome",
"escritorio-sway"
],
"dependientes_total": 4
diff --git a/docs/state/build-state.json b/docs/state/build-state.json
index 77dfee0e..06c0addd 100644
--- a/docs/state/build-state.json
+++ b/docs/state/build-state.json
@@ -38,7 +38,7 @@
"sealed": 33
}
},
- "sin_perfil": 645,
+ "sin_perfil": 644,
"orphan_deps": [],
"topo_ok": true,
"nodes": {
@@ -3732,6 +3732,7 @@
"blocked_by": [],
"unblocks": 0,
"perfiles": [
+ "escritorio-gnome",
"escritorio-sway"
],
"dependientes_total": 3
@@ -4056,6 +4057,7 @@
"blocked_by": [],
"unblocks": 0,
"perfiles": [
+ "escritorio-gnome",
"escritorio-sway"
],
"dependientes_total": 0
@@ -6233,7 +6235,9 @@
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
- "perfiles": [],
+ "perfiles": [
+ "escritorio-gnome"
+ ],
"dependientes_total": 0
},
"helm": {
@@ -13531,6 +13535,7 @@
"blocked_by": [],
"unblocks": 0,
"perfiles": [
+ "escritorio-gnome",
"escritorio-sway"
],
"dependientes_total": 4
@@ -14011,6 +14016,7 @@
"blocked_by": [],
"unblocks": 0,
"perfiles": [
+ "escritorio-gnome",
"escritorio-sway"
],
"dependientes_total": 4
diff --git a/docs/state/targets.toml b/docs/state/targets.toml
index 4a5340db..7f887824 100644
--- a/docs/state/targets.toml
+++ b/docs/state/targets.toml
@@ -199,6 +199,30 @@ paquetes = [
# visor: el plugin de PDF no hacía dlopen («Error relocating /usr/lib/libbz2.so.1»). La receta
# existía sólo en `incoming-kde`; promovida al corpus con el mismo hash (b3:1e404254 desde las dos
# partes ⇒ un solo artefacto, cero rebuilds).
+ # ── ⚠ TERMINAL Y EDITOR: ESTA IMAGEN NO TENÍA NI UNO NI OTRO ─────────────────────────────────
+ # Medido el 2026-09-03 cruzando la membresía de los cuatro perfiles contra una lista de emuladores
+ # de terminal, editores y gestores de ficheros:
+ #
+ # escritorio-cosmic term=cosmic-term editor=cosmic-edit archivos=cosmic-files
+ # escritorio-sway term=foot editor=vim archivos=—
+ # escritorio-gnome term=— editor=— archivos=—
+ # escritorio-kde term=— editor=— archivos=—
+ #
+ # Es la lección de `foot` otra vez y a mayor escala: sway llegó a 121/121 SIN emulador de terminal
+ # porque nadie lo declaraba. Un escritorio sin terminal no es uno incompleto: es uno del que no se
+ # puede salir cuando algo falla.
+ #
+ # `foot` y `helix` viven en el CORPUS —no en una cola—, así que desde acá se alcanzan y no hacen
+ # falta recetas nuevas: las dos ya estaban selladas y sin declarar por NADIE. foot es Wayland puro
+ # sobre `xdg-shell` (no pide protocolos de wlroots), así que corre bajo mutter igual que bajo sway;
+ # su único NEEDED es `libc.so`. helix es TUI y corre dentro de la terminal.
+ #
+ # KDE queda fuera de este arreglo A PROPÓSITO, y es un hallazgo aparte: tiene `konsole`, `kate` y
+ # `dolphin` SELLADAS en su cola y sin declarar, más otras 19 apps y hasta `plasma-desktop`,
+ # `plasma-nm`, `plasma-pa` y `powerdevil`. Su perfil son 13 raíces de ARRANQUE EN METAL, no la
+ # imagen de escritorio completa (ésa se hidrató aparte, por hash). Reordenar eso es decisión del
+ # frente KDE, no de éste.
+ "foot", "helix",
# ── FUENTES ──────────────────────────────────────────────────────────────────────────────────
# ⚠ Añadida el 2026-09-03 porque este perfil no traía NI UN FICHERO DE FUENTE. Medido recorriendo
# los artefactos del cierre y contando `.ttf/.otf/.ttc/.pfb`: **gnome=0**, sway=22 (dejavu),