docs: SDD 20 — corregido dónde va el texto de licencia (imágenes, no pack) y estado real 1063/1141

El catálogo decía que el texto de la licencia se inyecta en `hammer pack`. El razonamiento
del coste era correcto pero el sitio estaba mal: pack emite un .swm (receta sobre fuente
pública, sin binarios) e install reproduce construyendo, así que el canal de paquetes no
distribuye binarios. El punto de entrega es la IMAGEN, y ahí está hecho, con veto.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-07 14:53:54 -04:00
co-authored by Claude Opus 5
parent be4e91086c
commit 78ad2e8201
+19 -5
View File
@@ -104,7 +104,12 @@ Ese mismo día se hizo lo estructural:
curada.
- 228 sembradas: todo el toolchain, la base C, las gráficas, GNOME/GTK, Qt, KDE Frameworks y Plasma.
**Falta**: las 913 restantes, casi todas CLIs Go/Rust importados en masa. Buena noticia: **ésas sí se
**Estado al cierre del día: 1063 de 1141 (93%).** Cuatro escalones de evidencia, de peor a mejor:
nombre (prohibido) → URL de fuente (familias) → API de licencias de GitHub → `Cargo.toml` del autor
al tag exacto. Faltan 78. **Falta también** desambiguar ~55 SPDX obsoletos (`GPL-3.0` no dice si es
`-only` u `-or-later`), que es trabajo humano: hay que leer cabeceras de fuentes.
*(texto original: «Falta: las 913 restantes, casi todas CLIs Go/Rust importados en masa.»)* Buena noticia: **ésas sí se
automatizan con evidencia real y sin red** — `Cargo.toml` trae el campo `license` y los módulos Go
traen su `LICENSE` en el árbol. El cierre definitivo es capturarlo en la **fase de fetch**, que ya
descarga y extrae cada tarball.
@@ -114,10 +119,19 @@ vacía — convierte un hueco visible en una afirmación falsa. Concretamente se
«`k*` = KDE ⇒ LGPL»: en este catálogo `kail`, `kind`, `ko`, `kopia`, `krew`, `kustomize`, `kyverno`
y toda la familia `kube*` son herramientas Go sin relación con KDE.
### El texto de la licencia dentro del paquete
La GPL obliga a acompañar el binario del texto. **Dónde se inyecta decide el precio**: en la fase
`install` de la receta re-hashearía las 1141 (las fases SÍ entran al hash); en **`hammer pack`** es
gratis, porque pack es aguas abajo del `ArtifactHash`. Va en pack.
### El texto de la licencia dentro del paquete — ✅ HECHO (y no donde yo dije)
> **CORRECCIÓN.** Esto decía «va en `hammer pack`». El razonamiento del coste era correcto —las
> fases SÍ entran al hash, así que hacerlo en la receta re-hashearía las 1141— pero **el sitio
> estaba mal**: `pack` produce un `.swm`, una receta de transformación sobre fuente pública que por
> diseño «NUNCA transporta binarios cocidos», e `install` REPRODUCE construyendo. **El canal de
> paquetes de hammer no distribuye binarios.** Donde sí se entrega un binario es en la **imagen
> instalable**, y ahí se hace ahora: `scripts/licencias-rootfs.sh` escribe
> `/usr/share/licenses/<pkg>/` con el texto canónico de cada licencia de la expresión, más un
> `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).
### 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