gioser

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 1181Shell 82Rust 62Markdown 521515 Definiciones

docs: la suite ArtCraft entra entera — 12/12 selladas y 12/12 pintando, y los tres huecos de la IMAGEN que destaparon

107091e5f98acd0946e537971d3ae139ae9be97c · por Sergio · (hace 9 d) · padre fbf23a882 · ver el árbol en este commit

Delta semántico

Ninguna definición cambió: el cambio es de texto, documentación o datos.

7 archivos · +125 −0

diff --git a/docs/plan-apps-usuario-final.md b/docs/plan-apps-usuario-final.md
index d57fdf53..d285538c 100644
--- a/docs/plan-apps-usuario-final.md
+++ b/docs/plan-apps-usuario-final.md
@@ -457,3 +457,86 @@ rehicieron como demonios Rust en vez de empaquetar transmission y vlc, y los dos
 ⚠ Y la advertencia que el SDD 26 §2 ya pagó: portar un upstream vivo compra **su cinta de correr**
 (*«el costo de Zen no es el motor: es el rebase cada cuatro semanas»*). Un port de GenOffice es una
 relación, no una receta.
+
+---
+
+# ADENDA 2026-10-13 — la suite ArtCraft entra ENTERA, y lo que eso desmiente
+
+Doce aplicaciones de escritorio en **Rust puro sobre egui + wgpu** (`github.com/storytold`,
+MIT OR Apache-2.0), construidas y **medidas corriendo** en una noche. Las recetas están en
+`recipes/{word,grid,deck,photo,vector,design,light,cad,effect,sound,film,pdf}craft.toml`.
+
+## El resultado, que es el que cambia el plan
+
+| | selladas | abren ventana y **pintan** |
+|---|---:|---|
+| ArtCraft (12) | **12/12** | **12/12** |
+
+Medido con `scripts/test-craft-ventana.sh <app>` —rootfs de `escritorio-sway` + `llvm18` +
+`mesa-llvmpipe`, sway headless, captura con grim— y la evidencia es **contar colores**, no leer el
+log: de 1.250 (`vectorcraft`) a 30.356 (`lightcraft`), con el azul del compositor desapareciendo de
+la foto en las doce. Cada una sella entre 11 y 26 min; 455-730 crates por app.
+
+## Lo que esto desmiente de la tabla de arriba
+
+La fila `libreoffice` —**59 recetas, GTK3 + Qt6 + X11, «no es un ticket, es un año»**— medía bien el
+coste de ESA app, pero se leía como el coste de tener ofimática. **No lo era.** La misma función
+—textos, hoja con gráficos, presentaciones— entró como **tres recetas `cargo_vendor` sin un solo
+muro de toolkit**, y de yapa trajo el hueco que la terna ofimática ni cubre (`vectorcraft` ≈ Draw) y
+cinco categorías del censo de §1 que estaban en «no están»: gimp/krita (`photocraft`), darktable
+(`lightcraft`), inkscape (`vectorcraft`), kdenlive/shotcut (`filmcraft`), scribus (`designcraft`).
+
+⚠ **Lo que NO desmiente:** fidelidad. Son 0.x —el README de `wordcraft` pone a prueba la beta
+«against real-world .docx files, keeping charts and SmartArt»— y portar un upstream vivo compra su
+cinta de correr. LibreOffice sigue siendo el patrón de fidelidad y **no se autora**: si hace falta
+de verdad, sale por qorpa, como se decidió para `genoffice`.
+
+## La línea divisoria de esta generación de apps, medida
+
+> **egui + wgpu entra hoy; GPUI / Vulkan-only no.**
+
+`egui-wgpu` pide `Backends::from_env().unwrap_or(PRIMARY | GL)`, o sea que **GL está en el default**:
+sin Vulkan, wgpu cae al camino EGL/GLES y pinta. Lo dice el log de las doce
+(`backend: Gl … llvmpipe … 4.5 (Core Profile)`) y lo confirma el control **sin** `WGPU_BACKEND`.
+`lightcraft` lo hace explícito: `renderer wgpu (order ["vulkan", "gl", "glow"])`.
+**Zed** es el contraejemplo: GPUI exige **Vulkan 1.3** en Linux ⇒ en esta distro no arranca, y el
+desbloqueo es el mismo que ya pedía el ScreenCast de COSMIC: **lavapipe** (`-Dvulkan-drivers=swrast`).
+
+## Tres huecos de la IMAGEN que estas apps destaparon (ninguno es de ellas)
+
+1. **No hay diálogo de ficheros.** `photocraft` lo dice entero:
+   `file dialog backends: Findings { libdbus: None, file_chooser_portal: Some(false), zenity: false }`
+   ⇒ Abrir y Guardar no tienen con qué. `xdg-desktop-portal` existe en las colas de kde, gnome y
+   cosmic —los tres perfiles lo declaran— y **no hay ninguno en `incoming-wlr` ni en el corpus**.
+   Es la receta que destraba a las doce de un solo tiro.
+2. **Siete de las doce se quedan sin portapapeles**: su `arboard` no trae `wayland-data-control`,
+   intenta X11 y expira (`cadcraft`, `deckcraft`, `designcraft`, `effectcraft`, `filmcraft`,
+   `lightcraft`, `soundcraft`; `gridcraft`, `photocraft`, `vectorcraft` y `wordcraft` sí lo traen).
+   Parche de una línea por app, y mejor aguas arriba que acá.
+3. **Sin tarjeta de sonido degradan bien**: `soundcraft` cae a «silent clock» y `filmcraft` dice
+   `no audio output device found`. No es un hueco de la distro, es el LXC; se anota para que la
+   próxima medición no lo lea como fallo.
+
+Los tres son **función instalada y apagada en silencio**, que es la forma de fallo que esta casa
+persigue: la app abre, dibuja, y no puede abrir un fichero.
+
+## Cuatro premisas que la propia campaña desmintió (y cómo se vieron)
+
+1. **El `Cargo.lock` lista lo POSIBLE, no lo que se construye.** `photocraft` y `filmcraft` traen
+   `pipewire-sys`/`gtk-sys` en el lock y **ninguno se compila en Linux**: entran por `xcap`
+   (`cfg(windows)`) y `muda` (`cfg(macos)`). Un triaje por lock habría bloqueado la app más grande
+   de la familia sin motivo.
+2. **Los features de `eframe` del manifiesto de la app tampoco son los del build**: son ADITIVOS y
+   los enciende otro miembro del workspace. `vectorcraft` «no pedía wgpu» y corre sobre wgpu.
+3. **El panic de `zbus-lockstep-macros`** (la cicatriz de `boveda`/`mirada-greeter`) **no se dispara
+   en estas versiones**: `vectorcraft` compiló `atspi-common` 0.13 sin el `LOCKSTEP_XML_PATH` y con
+   el `xml/schemas/` presente.
+4. **`provee.py` contesta sobre el store que le den**, y su default `./store` en la jaula está
+   VACÍO: dijo «alsa: NADIE LO PUBLICA» de un `alsa-lib` sellado en las dos máquinas. Un falso
+   «nadie» se ve igual que un hueco real del catálogo.
+
+Y una trampa vieja que volvió a morder, con el mismo disfraz de siempre: **`pdfcraft` falló porque
+el `cargo vendor` de takana le pisó su propio `vendor/`** (cuatro crates `hayro` enganchados por
+`[patch.crates-io]` POR RUTA). El error hablaba de un `.cargo-checksum.json` que faltaba. Se arregla
+con `cargo_vendor_dir`, igual que `boveda` y `mise`; `vectorcraft` committea un `vendor/` también y
+lo lleva ahora de forma preventiva.
diff --git a/recipes/cadcraft.toml b/recipes/cadcraft.toml
index f65bb58b..874d2d5e 100644
--- a/recipes/cadcraft.toml
+++ b/recipes/cadcraft.toml
@@ -52,6 +52,13 @@
 #    se los enciende otro miembro del workspace (`<app>-ui-egui`). Leer sólo el manifiesto de la app
 #    para decidir qué camino gráfico toma una de éstas da la respuesta equivocada; lo que manda es
 #    lo que aparece en el log del build y en el del binario corriendo.
+# ⚠ **Medido al correrla (2026-10-13): esta app se queda SIN PORTAPAPELES en esta distro.**
+#     egui_winit::clipboard: Failed to initialize arboard clipboard: … X11 server connection timed out
+# Su `arboard` no enciende `wayland-data-control` —`gridcraft`, `photocraft`, `vectorcraft` y
+# `wordcraft` sí— así que intenta X11, que acá no existe, y expira. Copiar y pegar queda apagado y
+# nada falla: la misma figura que el diálogo de ficheros sin portal. Son siete de las doce; el
+# arreglo es un feature, y mejor aguas arriba que parcheado acá (ver la adenda del 2026-10-13 en
+# `docs/plan-apps-usuario-final.md`).
 name    = "cadcraft"
 version = "0.6.2"
 license = "MIT OR Apache-2.0"
diff --git a/recipes/deckcraft.toml b/recipes/deckcraft.toml
index 210ccccf..aa44fb40 100644
--- a/recipes/deckcraft.toml
+++ b/recipes/deckcraft.toml
@@ -52,6 +52,13 @@
 #    se los enciende otro miembro del workspace (`<app>-ui-egui`). Leer sólo el manifiesto de la app
 #    para decidir qué camino gráfico toma una de éstas da la respuesta equivocada; lo que manda es
 #    lo que aparece en el log del build y en el del binario corriendo.
+# ⚠ **Medido al correrla (2026-10-13): esta app se queda SIN PORTAPAPELES en esta distro.**
+#     egui_winit::clipboard: Failed to initialize arboard clipboard: … X11 server connection timed out
+# Su `arboard` no enciende `wayland-data-control` —`gridcraft`, `photocraft`, `vectorcraft` y
+# `wordcraft` sí— así que intenta X11, que acá no existe, y expira. Copiar y pegar queda apagado y
+# nada falla: la misma figura que el diálogo de ficheros sin portal. Son siete de las doce; el
+# arreglo es un feature, y mejor aguas arriba que parcheado acá (ver la adenda del 2026-10-13 en
+# `docs/plan-apps-usuario-final.md`).
 name    = "deckcraft"
 version = "0.6.1"
 license = "MIT OR Apache-2.0"
diff --git a/recipes/designcraft.toml b/recipes/designcraft.toml
index 728e0657..78bac259 100644
--- a/recipes/designcraft.toml
+++ b/recipes/designcraft.toml
@@ -56,6 +56,13 @@
 # el binario sellado NO lleva el winit de crates.io sino un fork. No rompe nada —`cargo vendor` baja
 # un patch por git igual que cualquier dep, y el `--locked` lo fija— pero si un día esta app se
 # comporta distinto de sus once hermanas en Wayland, el fork es el primer lugar donde mirar.
+# ⚠ **Medido al correrla (2026-10-13): esta app se queda SIN PORTAPAPELES en esta distro.**
+#     egui_winit::clipboard: Failed to initialize arboard clipboard: … X11 server connection timed out
+# Su `arboard` no enciende `wayland-data-control` —`gridcraft`, `photocraft`, `vectorcraft` y
+# `wordcraft` sí— así que intenta X11, que acá no existe, y expira. Copiar y pegar queda apagado y
+# nada falla: la misma figura que el diálogo de ficheros sin portal. Son siete de las doce; el
+# arreglo es un feature, y mejor aguas arriba que parcheado acá (ver la adenda del 2026-10-13 en
+# `docs/plan-apps-usuario-final.md`).
 name    = "designcraft"
 version = "0.7.1"
 license = "MIT OR Apache-2.0"
diff --git a/recipes/effectcraft.toml b/recipes/effectcraft.toml
index 59d1838e..8359978c 100644
--- a/recipes/effectcraft.toml
+++ b/recipes/effectcraft.toml
@@ -52,6 +52,13 @@
 #    se los enciende otro miembro del workspace (`<app>-ui-egui`). Leer sólo el manifiesto de la app
 #    para decidir qué camino gráfico toma una de éstas da la respuesta equivocada; lo que manda es
 #    lo que aparece en el log del build y en el del binario corriendo.
+# ⚠ **Medido al correrla (2026-10-13): esta app se queda SIN PORTAPAPELES en esta distro.**
+#     egui_winit::clipboard: Failed to initialize arboard clipboard: … X11 server connection timed out
+# Su `arboard` no enciende `wayland-data-control` —`gridcraft`, `photocraft`, `vectorcraft` y
+# `wordcraft` sí— así que intenta X11, que acá no existe, y expira. Copiar y pegar queda apagado y
+# nada falla: la misma figura que el diálogo de ficheros sin portal. Son siete de las doce; el
+# arreglo es un feature, y mejor aguas arriba que parcheado acá (ver la adenda del 2026-10-13 en
+# `docs/plan-apps-usuario-final.md`).
 name    = "effectcraft"
 version = "0.9.2"
 license = "MIT OR Apache-2.0"
diff --git a/recipes/filmcraft.toml b/recipes/filmcraft.toml
index 9b66e4b2..2c091518 100644
--- a/recipes/filmcraft.toml
+++ b/recipes/filmcraft.toml
@@ -56,6 +56,13 @@
 #    se los enciende otro miembro del workspace (`<app>-ui-egui`). Leer sólo el manifiesto de la app
 #    para decidir qué camino gráfico toma una de éstas da la respuesta equivocada; lo que manda es
 #    lo que aparece en el log del build y en el del binario corriendo.
+# ⚠ **Medido al correrla (2026-10-13): esta app se queda SIN PORTAPAPELES en esta distro.**
+#     egui_winit::clipboard: Failed to initialize arboard clipboard: … X11 server connection timed out
+# Su `arboard` no enciende `wayland-data-control` —`gridcraft`, `photocraft`, `vectorcraft` y
+# `wordcraft` sí— así que intenta X11, que acá no existe, y expira. Copiar y pegar queda apagado y
+# nada falla: la misma figura que el diálogo de ficheros sin portal. Son siete de las doce; el
+# arreglo es un feature, y mejor aguas arriba que parcheado acá (ver la adenda del 2026-10-13 en
+# `docs/plan-apps-usuario-final.md`).
 name    = "filmcraft"
 version = "0.7.2"
 license = "MIT OR Apache-2.0"
diff --git a/recipes/soundcraft.toml b/recipes/soundcraft.toml
index b12f9626..78a52bc2 100644
--- a/recipes/soundcraft.toml
+++ b/recipes/soundcraft.toml
@@ -57,6 +57,13 @@
 #    se los enciende otro miembro del workspace (`<app>-ui-egui`). Leer sólo el manifiesto de la app
 #    para decidir qué camino gráfico toma una de éstas da la respuesta equivocada; lo que manda es
 #    lo que aparece en el log del build y en el del binario corriendo.
+# ⚠ **Medido al correrla (2026-10-13): esta app se queda SIN PORTAPAPELES en esta distro.**
+#     egui_winit::clipboard: Failed to initialize arboard clipboard: … X11 server connection timed out
+# Su `arboard` no enciende `wayland-data-control` —`gridcraft`, `photocraft`, `vectorcraft` y
+# `wordcraft` sí— así que intenta X11, que acá no existe, y expira. Copiar y pegar queda apagado y
+# nada falla: la misma figura que el diálogo de ficheros sin portal. Son siete de las doce; el
+# arreglo es un feature, y mejor aguas arriba que parcheado acá (ver la adenda del 2026-10-13 en
+# `docs/plan-apps-usuario-final.md`).
 name    = "soundcraft"
 version = "0.6.1"
 license = "MIT OR Apache-2.0"