Paso 5 del ADR 0015, sus dos mitades. SHIMS. `hammer qorpa export <id>` genera lanzadores finos y `.desktop` en el espacio del host, desde lo DECLARADO en `[export]` — nunca todo: exportar todo haría que el `ls` de la imagen compita con el nuestro, que es la falla de Bedrock (arbitra en tiempo de exec, por heurística). Gana en tres cosas contra un FUSE: cero costo en runtime, `cat` al shim y ves qué hace, y se revoca borrándolos. Se GENERAN, no se copian. El `.desktop` se arma con lista BLANCA de claves, así que `Exec`, `TryExec`, `Path` y `DBusActivatable` quedan fuera por definición y no por enumeración — una lista negra dejaría entrar la próxima clave ejecutable que invente el estándar. El Exec original se cita en un comentario del fichero generado, para que se vea qué decía y qué no se copió. El icono se busca en la vista merged (upper primero, imagen después: si no, se perdería lo que instaló el gestor de paquetes) y se copia al host, porque un icono que el host no resuelve se ve como un cuadrito gris. Y `exported.json` registra cada fichero escrito, para que `--remove` borre EXACTAMENTE eso y no por patrón sobre el ~/.local/bin de alguien. Probado de punta a punta con un .desktop ajeno real de la imagen de Arch: el shim corre `pacman -Q` del huésped desde el host, el X-KDE-Wayland-Interfaces quedó fuera, el icono viajó, y --remove dejó 0 ficheros con la instancia intacta. CLASE `ajeno`. build-state.py inyecta los nodos declarados en el nuevo docs/state/qorpa-ajenos.toml ANTES que los `wanted`, y ese orden es la mitad del punto: un nodo que provee una imagen ajena no es una receta por escribir. Con eso el `xwayland` de escritorio-kde deja de ser deuda y pasa a contarse aparte: escritorio-kde 187/188 listo falta 1 (raíces 14, + 1 ajenas) Dos decisiones que sostienen esa cifra: los ajenos se RESTAN del denominador (si entraran, el número que se lee como "cuánto construimos" crecería solo cada vez que alguien enjaula una app), y la declaración vive en el REPO y no se lee de /var/lib/hammer — build-state.json se commitea y lo regenera el cron en dos máquinas; si la clase saliera de las instancias instaladas, cada una diría algo distinto y se pisarían en cada cosecha. Es el error que ya se cometió con sealed_remoto. Qué provee una imagen ajena es diseño; qué tenés instalado, no. Un ajeno tampoco se hashea, y no por comodidad: no tiene procedencia de fuente, así que un hash afirmaría que lo reproducimos. 2 tests nuevos (que del .desktop ajeno no sobreviva nada ejecutable; que el shim no se rompa con rutas raras). 47/47. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01U5cQtQrYNjWJVXVE6aEpQ2
25 lines
1.7 KiB
TOML
25 lines
1.7 KiB
TOML
# Nodos que el corpus NO provee y NO va a proveer: los trae una imagen ajena enjaulada
|
|
# (qorpa, ADR 0015 D5 capa 3). Este fichero existe para que NADIE los pueda contar mal.
|
|
#
|
|
# ── POR QUÉ ESTO ES UN FICHERO DEL REPO Y NO UNA LECTURA DE /var/lib/hammer ──────────────────────
|
|
# `build-state.json` se commitea y lo regenera el cron en dos máquinas. Si la clase `ajeno` saliera
|
|
# de las instancias que cada máquina tiene instaladas, el grafo diría cosas distintas en cada una y
|
|
# se pisarían en cada cosecha — el mismo error que ya se cometió con `sealed_remoto`. Qué provee una
|
|
# imagen ajena es una decisión de DISEÑO, compartida; qué instancias tiene tu disco, no.
|
|
#
|
|
# ── QUÉ HACE UN NODO ACÁ ────────────────────────────────────────────────────────────────────────
|
|
# Deja de ser `wanted` (deuda: receta por escribir) y pasa a `ajeno`: presente, pero SIN procedencia
|
|
# de fuente y SIN reproducibilidad. No cuenta como deuda ni como corpus. El reporte los suma aparte
|
|
# («171 nativas + 6 ajenas») precisamente para que la cifra del corpus no se infle sola.
|
|
#
|
|
# NO entran al catálogo publicable ni al reporte de licencias (SDD 20): no podemos enumerarlas.
|
|
|
|
[xwayland]
|
|
razon = """
|
|
X11 está fuera de alcance para toda la distro (Wayland-only, sin systemd) y Xwayland tampoco salva
|
|
al herramental X11, que sólo ve clientes X. Con instancias, el Xwayland vive DENTRO de la imagen
|
|
—Arch y Fedora ya lo traen— y se cuelga de nuestro kwin por el socket. La receta no se escribe.
|
|
"""
|
|
imagen = "arch"
|
|
perfiles = ["escritorio-kde"]
|