From d70098ade57451ea35fd91edfd0664dba088885b Mon Sep 17 00:00:00 2001 From: sergio Date: Fri, 7 Aug 2026 23:31:08 -0400 Subject: [PATCH] =?UTF-8?q?GTK3:=20decisi=C3=B3n=20del=20usuario=20?= =?UTF-8?q?=E2=80=94=20NO=20entra;=20gnome-session,=20gsd=20y=20gdm=20qued?= =?UTF-8?q?an=20CERRADAS=20por=20escrito?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Decidido el 2026-08-08. Las tres recetas dependen de GTK3 (gnome-settings-daemon además de gtk+-x11-3.0) y quedan cerradas, **no «en deuda»**. La diferencia no es semántica: una deuda invita a reintentarla en cada informe y en cada ciclo de granja; una decisión se respeta. POR QUÉ ES RAZONABLE Y NO UNA RENDICIÓN: · GNOME funciona sin esto — el camino vivo es mutter → gnome-shell arrancado por arje, y ninguno de los dos depende de gnome-session (su cierre es mutter+gjs+gobject-introspection+ gnome-desktop). · Traer GTK3 sería una torre de C muerta —y para waybar además gtkmm, sus bindings de C++— por un gestor de sesión y un login manager que este escritorio no necesita. · La función está cubierta: la sesión la levanta arje y la barra de estado es `yambar`, C puro, sellado anoche en el frente wlr. Se reabre si alguien trae GTK3 por otro motivo con peso propio (una app gráfica que lo exija). EL MARCADOR VIVE EN LA RECETA, NO EN UNA LISTA APARTE. `build-farm.sh` salta las recetas cuya cabecera dice «CERRADA POR DECISIÓN». Podría haber hecho un fichero de exclusiones, pero una lista y una cabecera se desincronizan solas: así, quien lee el porqué y quien decide saltarla miran EL MISMO TEXTO. Y el drenador lo dice en su salida, para que la decisión sea visible en vez de silenciosa. Con esto la granja deja de quemar CPU en tres recetas que nadie va a arreglar. Co-Authored-By: Claude Opus 5 (1M context) --- recipes/incoming-gnome/gdm.toml | 19 +++++++++++++++++++ recipes/incoming-gnome/gnome-session.toml | 19 +++++++++++++++++++ .../incoming-gnome/gnome-settings-daemon.toml | 19 +++++++++++++++++++ scripts/build-farm.sh | 12 +++++++++++- 4 files changed, 68 insertions(+), 1 deletion(-) diff --git a/recipes/incoming-gnome/gdm.toml b/recipes/incoming-gnome/gdm.toml index 12a8aec5..cb5293a5 100644 --- a/recipes/incoming-gnome/gdm.toml +++ b/recipes/incoming-gnome/gdm.toml @@ -18,6 +18,25 @@ # ⇒ No reintentar estas tres esperando que cambie algo. Se destraban el día que entre GTK3 (y para # gnome-settings-daemon, también X11), no antes. Es una decisión de alcance, no un fallo. +# +# ═══════════════════════════════════════════════════════════════════════════════════════════════ +# ⛔ CERRADA POR DECISIÓN, 2026-08-08. NO REINTENTAR. +# ═══════════════════════════════════════════════════════════════════════════════════════════════ +# El usuario decidió NO traer GTK3 al catálogo. Esta receta depende de él (ver el diagnóstico de +# abajo) ⇒ queda cerrada, no «en deuda». La diferencia importa: una deuda invita a reintentarla en +# cada informe; una decisión se respeta. +# +# POR QUÉ ES RAZONABLE, y no una rendición: +# · GNOME funciona sin esto. El camino vivo es mutter → gnome-shell, arrancado por arje; ninguno +# de los dos depende de gnome-session (su cierre es mutter+gjs+gobject-introspection+gnome-desktop). +# · Traer GTK3 sería una torre de C muerta —y para waybar, además, gtkmm, o sea sus bindings de +# C++— por un gestor de sesión y un login manager que este escritorio no necesita. +# · La función que aportaban está cubierta: la sesión la levanta arje, y la barra de estado es +# `yambar` en el frente wlr, que es C puro y ya está sellado. +# +# SE REABRE SI, Y SÓLO SI, alguien trae GTK3 por otro motivo con peso propio (una aplicación +# gráfica de terceros que lo exija). Entonces esto sale gratis; hoy no. + name = "gdm" version = "48.0" license = "GPL-2.0-or-later" diff --git a/recipes/incoming-gnome/gnome-session.toml b/recipes/incoming-gnome/gnome-session.toml index a0e1291c..c1cc3055 100644 --- a/recipes/incoming-gnome/gnome-session.toml +++ b/recipes/incoming-gnome/gnome-session.toml @@ -9,6 +9,25 @@ # ⛔ APARCADA: el diagnóstico completo está más abajo, junto a `[deps]` (GTK3 **y** libsystemd, los # dos incondicionales). Lo confirmado el 2026-08-07 no lo cambia; sólo añade que la granja seguía # reintentándola, que es un problema de COLA, no de receta. +# +# ═══════════════════════════════════════════════════════════════════════════════════════════════ +# ⛔ CERRADA POR DECISIÓN, 2026-08-08. NO REINTENTAR. +# ═══════════════════════════════════════════════════════════════════════════════════════════════ +# El usuario decidió NO traer GTK3 al catálogo. Esta receta depende de él (ver el diagnóstico de +# abajo) ⇒ queda cerrada, no «en deuda». La diferencia importa: una deuda invita a reintentarla en +# cada informe; una decisión se respeta. +# +# POR QUÉ ES RAZONABLE, y no una rendición: +# · GNOME funciona sin esto. El camino vivo es mutter → gnome-shell, arrancado por arje; ninguno +# de los dos depende de gnome-session (su cierre es mutter+gjs+gobject-introspection+gnome-desktop). +# · Traer GTK3 sería una torre de C muerta —y para waybar, además, gtkmm, o sea sus bindings de +# C++— por un gestor de sesión y un login manager que este escritorio no necesita. +# · La función que aportaban está cubierta: la sesión la levanta arje, y la barra de estado es +# `yambar` en el frente wlr, que es C puro y ya está sellado. +# +# SE REABRE SI, Y SÓLO SI, alguien trae GTK3 por otro motivo con peso propio (una aplicación +# gráfica de terceros que lo exija). Entonces esto sale gratis; hoy no. + name = "gnome-session" version = "48.0" license = "GPL-2.0-or-later" diff --git a/recipes/incoming-gnome/gnome-settings-daemon.toml b/recipes/incoming-gnome/gnome-settings-daemon.toml index fb833daf..2a58a347 100644 --- a/recipes/incoming-gnome/gnome-settings-daemon.toml +++ b/recipes/incoming-gnome/gnome-settings-daemon.toml @@ -30,6 +30,25 @@ # ⇒ No reintentar estas tres esperando que cambie algo. Se destraban el día que entre GTK3 (y para # gnome-settings-daemon, también X11), no antes. Es una decisión de alcance, no un fallo. +# +# ═══════════════════════════════════════════════════════════════════════════════════════════════ +# ⛔ CERRADA POR DECISIÓN, 2026-08-08. NO REINTENTAR. +# ═══════════════════════════════════════════════════════════════════════════════════════════════ +# El usuario decidió NO traer GTK3 al catálogo. Esta receta depende de él (ver el diagnóstico de +# abajo) ⇒ queda cerrada, no «en deuda». La diferencia importa: una deuda invita a reintentarla en +# cada informe; una decisión se respeta. +# +# POR QUÉ ES RAZONABLE, y no una rendición: +# · GNOME funciona sin esto. El camino vivo es mutter → gnome-shell, arrancado por arje; ninguno +# de los dos depende de gnome-session (su cierre es mutter+gjs+gobject-introspection+gnome-desktop). +# · Traer GTK3 sería una torre de C muerta —y para waybar, además, gtkmm, o sea sus bindings de +# C++— por un gestor de sesión y un login manager que este escritorio no necesita. +# · La función que aportaban está cubierta: la sesión la levanta arje, y la barra de estado es +# `yambar` en el frente wlr, que es C puro y ya está sellado. +# +# SE REABRE SI, Y SÓLO SI, alguien trae GTK3 por otro motivo con peso propio (una aplicación +# gráfica de terceros que lo exija). Entonces esto sale gratis; hoy no. + name = "gnome-settings-daemon" version = "48.1" license = "GPL-2.0-or-later" diff --git a/scripts/build-farm.sh b/scripts/build-farm.sh index 13e77eeb..c3e9aede 100755 --- a/scripts/build-farm.sh +++ b/scripts/build-farm.sh @@ -48,19 +48,29 @@ queue=$(ls "$QUEUE"/*.toml 2>/dev/null || true) # hash vigente de una receta está ahí, el hub ya la tiene y el worker se la salta. SELLADOS="${SELLADOS:-work/farm-sellados.txt}" if [ -s "$SELLADOS" ]; then - saltadas=0; filtrada="" + saltadas=0; cerradas=0; filtrada="" for f in $queue; do # ⚠ EL NOMBRE DEL ARTEFACTO ES EL CAMPO `name` DE LA RECETA, NO EL DEL FICHERO. Son distintos en # 17 recetas del catálogo — el arquetipo es `recipes/incoming-kde/qtbase.toml`, cuyo `name` es # `qt6-qtbase`, y el artefacto en el store se llama `-qt6-qtbase`. Usar el basename daba # «no sellada» para las 17 y las habría mandado a reconstruir: exactamente el desperdicio que # este filtro existe para evitar. (Lo tenía mal en la primera versión de este bloque.) + # ── RECETAS CERRADAS POR DECISIÓN: el marcador vive EN LA RECETA ───────────────────────────── + # Una receta puede estar sin sellar porque falta trabajo (deuda) o porque se decidió NO hacerla + # (alcance). La diferencia importa: la deuda invita a reintentar en cada ciclo; la decisión hay + # que respetarla, o la granja quema CPU para siempre en algo que nadie va a arreglar. + # El marcador va en la CABECERA DE LA RECETA, no en una lista aparte, justo para que no puedan + # desincronizarse: quien lee el porqué y quien decide saltarla miran el mismo texto. + if grep -q "CERRADA POR DECISIÓN" "$f" 2>/dev/null; then + cerradas=$((cerradas+1)); continue + fi n=$(awk -F'"' '/^name[[:space:]]*=/{print $2; exit}' "$f") [ -n "$n" ] || n=$(basename "$f" .toml) H=$("$HAMMER" --store "$STORE" hash "$f" 2>/dev/null | tail -1 | sed 's/^b3://') if [ -n "$H" ] && grep -qx "$H-$n" "$SELLADOS"; then saltadas=$((saltadas+1)); continue; fi filtrada="$filtrada $f" done + [ "$cerradas" -gt 0 ] && echo " ($cerradas CERRADAS por decisión — ver la cabecera de cada receta)" [ "$saltadas" -gt 0 ] && echo " (saltadas $saltadas ya selladas en el hub — ver la nota del sync unidireccional)" queue="$filtrada" [ -n "$(echo $queue)" ] || { echo "nada que hacer en $QUEUE: todo sellado en el hub"; exit 0; }