runbook cosmic: cabecera al día y la regla de copiar entre colas, corregida donde estaba de más

Decía «copiar es gratis de verdad, no casi». La regla honesta es: gratis SÓLO si
toda la clausura transitiva resuelve a lo mismo. Se cumple con libdisplay-info,
hwdata y nasm; no con pipewire.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-03 11:23:39 -04:00
co-authored by Claude Opus 5
parent 5216d46216
commit 1457501ac9
+16 -11
View File
@@ -1,7 +1,8 @@
# Runbook — COSMIC, el cuarto escritorio
Estado al 2026-08-03: **campaña abierta.** Tres piezas selladas (`cosmic-session`, `cosmic-icons`,
`cosmic-bg`) y el compositor en construcción. Este documento se escribe mientras se hace, no después.
Estado al 2026-08-03: **el gate está pasado.** `cosmic-comp` —el compositor, la pieza de la que todo
lo demás es cliente— **compila y está sellado**, junto con `cosmic-session`, `cosmic-icons`,
`cosmic-bg` y `cosmic-idle`. Falta arrancarlo. Este documento se escribe mientras se hace, no después.
COSMIC es el escritorio de System76, en Rust sobre **smithay** (compositor) e **iced/libcosmic**
(clientes). Es el cuarto de hammer, tras [mirada](mirada-usb-nvidia.md),
@@ -42,10 +43,14 @@ arranca y no se entiende consigo mismo — que es mucho más caro de diagnostica
Las deps se resuelven **hermano → padre**: desde `incoming-cosmic/` se ven las recetas de
`recipes/`, pero **no** las de `incoming-gnome/` ni `incoming-kde/`. Por eso `libdisplay-info` y
`hwdata` entran copiadas. Y copiar es gratis de verdad, no «casi»: el ArtifactHash no depende de la
ruta de la receta, así que un fichero idéntico con deps que resuelven a lo mismo da **el mismo hash**
⇒ cache hit sobre el artefacto que ya existe. Se verificó antes de copiar (`b3:260f0519`,
`b3:bdc36cf9`), no después.
`hwdata` entran copiadas.
**Copiar es gratis sólo si TODA la clausura transitiva resuelve a lo mismo.** El ArtifactHash no
depende de la ruta de la receta, así que un fichero idéntico *cuyas deps resuelven igual* da el mismo
hash ⇒ cache hit sobre el artefacto que ya existe. Se cumplió con `libdisplay-info`, `hwdata` y
`nasm`, y se verificó con `hammer hash` **antes** de copiar (`b3:260f0519`, `b3:bdc36cf9`,
`b3:33383070`), no después. Dónde deja de cumplirse —y por qué importa— está en la sección de
`cosmic-settings-daemon`, más abajo.
## Qué levanta la sesión, y por lo tanto el orden de ataque
@@ -71,6 +76,11 @@ Más `cosmic-settings-daemon` y `xdg-desktop-portal-cosmic` fuera de esa lista.
| `cosmic-panel` · `cosmic-launcher` · `cosmic-app-library` · `cosmic-workspaces-epoch` · `cosmic-notifications` | receta escrita, sin construir | — |
| `cosmic-settings-daemon` | ni receta | — |
**El orden no es el de la lista de arranque.** `cosmic-bg` va antes que el panel a propósito: habla
Wayland con `smithay-client-toolkit` y **no toca libcosmic ni iced**, mientras que panel, launcher,
osd y workspaces son todos clientes de iced. Con el fondo sellado, «pinta el fondo pero no el panel»
separa la capa de UI del transporte; sin él, las dos preguntas llegan juntas.
### `cosmic-settings-daemon`: por qué queda al final y NO se resuelve copiando
Es el único con cadena propia. Su workspace incluye `audio-server` como dep de path **no opcional**,
@@ -96,11 +106,6 @@ imagen escritorio-gnome**. La decisión correcta no es de esta campaña: es *dó
corpus*, y es una decisión de catálogo, no de COSMIC. Hasta entonces, el escritorio arranca sin
settings-daemon —se pierden brillo, tema automático y perfiles de audio, no el escritorio—.
**El orden no es el de la lista de arranque.** `cosmic-bg` va antes que el panel a propósito: habla
Wayland con `smithay-client-toolkit` y **no toca libcosmic ni iced**, mientras que panel, launcher,
osd y workspaces son todos clientes de iced. Con el fondo sellado, «pinta el fondo pero no el panel»
separa la capa de UI del transporte; sin él, las dos preguntas llegan juntas.
## 🚪 EL GATE PASADO: cosmic-comp compila (2026-08-03)
`b3:b8abc52f`, 51 min 39 s de cargo con `CARGO_BUILD_JOBS=1` y `lto = "fat"`. **A la primera**, salvo