diff --git a/docs/20-catalogo-publicable-y-completa.md b/docs/20-catalogo-publicable-y-completa.md index fc0448fb..e1ed8b10 100644 --- a/docs/20-catalogo-publicable-y-completa.md +++ b/docs/20-catalogo-publicable-y-completa.md @@ -140,8 +140,39 @@ y toda la familia `kube*` son herramientas Go sin relación con KDE. > `MANIFEST.tsv` (1,0 MB para el perfil `cli`). Los 44 textos SPDX viven en `licenses/`. > > **Y VETA**: sale ≠0 si un paquete del rootfs no declara licencia. Al estrenarlo reveló que `base` -> y `cli` llevaban 10 y 12 paquetes con binarios y licencia desconocida; hoy van 2 cada uno (`lsof` -> y `tzdata`, que necesitan la vía `LicenseRef-` y siguen vetando a propósito). +> y `cli` llevaban 10 y 12 paquetes con binarios y licencia desconocida; después bajaron a 2 cada +> uno (`lsof` y `tzdata`, que necesitaban la vía `LicenseRef-`). + +### Cerrado el 2026-09-09: 1166/1166, y el guardián contaba mal +**Las 26 que faltaban están hechas**, ninguna adivinada: cada una sale del fichero de licencia de +su fuente PINEADA —el tarball del `sha256` de la receta, o el commit exacto en la forja— y la cita +queda como comentario en la propia receta. `lsof` y `tzdata` ya no vetan: llevan +`LicenseRef-lsof` y `LicenseRef-tz-public-domain` con su texto real en `licenses/`. + +> ⚠ **Y el guardián tenía un fallo que valía más que las 26.** `licencias-rootfs.sh` resolvía la +> receta por **nombre de fichero** (`ls recipes/$pkg.toml`), y el paquete se llama por su campo +> `name`, que en **34 recetas no coincide** (`nu.toml`→`nushell`, `dust.toml`→`du-dust`, +> `incoming-kde/qtbase.toml`→`qt6-qtbase`…). Medido: **14 paquetes que SÍ declaraban licencia +> salían como «desconocida»** y el guardián vetaba una imagen publicable. El falso veto se nota; el +> hermano silencioso no —un `.toml` que pertenece a otro paquete daba la licencia EQUIVOCADA +> sin decir nada—, y aunque hoy eso no ocurre (0 casos; de los 34 duplicados, ninguno declara +> licencias distintas), el índice por `name` lo hace imposible en vez de improbable. +> +> El arreglo va por **los dos lados**, y el primer intento rompió el otro: el grafo de estado nombra +> sus nodos por el FICHERO (`dust`) y el artefacto del store por `name` (`du-dust`). Ahora busca por +> `name` y cae al fichero. Medido en los dos sentidos: corpus 1128/1128 y perfil `base`+`cli` 81/81. +> Y probado con **rotura a propósito** además del control: paquete inexistente → exit 1; control → +> exit 0 con los textos escritos. + +**Dos paquetes del catálogo NO se pueden redistribuir**, y ahora el veto los ve en vez de dejarlos +pasar con el campo vacío: `duplicacy` no es software libre (su `LICENSE.md` cobra licencias por +equipo para uso comercial) y `waybackurls` **no declara licencia ninguna** en el commit pineado, lo +que por defecto reserva todos los derechos. Ninguno está hoy en un perfil de imagen. + +Hueco anotado: `XFree86-1.0` —una de las dos ramas del `OR` de `hwdata`— se queda sin texto porque +SPDX no publica ese identificador (sólo `XFree86-1.1`, que es otra licencia) y el tarball lo nombra +sin incluirlo. El guardián avisa y no veta, que es lo correcto: la otra rama es la GPL y su texto sí +se entrega. ### Espejo de fuentes — la obligación que más se malentiende La GPL no pide «que el código exista en internet»: pide que **quien recibe el binario pueda obtener