licencias: el detector borraba la evidencia que decia registrar
Consulta solo las recetas que HOY no tienen licencia, asi que su cosecha MENGUA a cada pasada: lo sembrado ayer ya no sale en --faltan. Y reescribia el fichero entero con la cosecha del dia. Hoy una pasada con CERO detecciones dejo docs/licencias-detectadas.tsv en 0 filas y se llevo las 610 que documentaban de donde salia cada licencia ya sembrada. Salio con exit 0 diciendo «escrito» y «sembrar con». Un vacio que llega hasta el final afirmando que todo fue bien — la regla 3 de CLAUDE.md, esta vez sobre el registro de procedencia en vez de sobre un artefacto. Ahora FUSIONA con lo registrado (la fila nueva gana) y se niega a sobrescribir si el resultado pierde filas: un registro de evidencia que encoge es un fallo, no un resultado. Con CON=0 lo dice y no invita a sembrar nada. Y las cuatro de HashiCorp quedan declaradas: BUSL-1.1. No es adivinado ni sale de la API —que devuelve NOASSERTION en las cuatro, y por eso llevaban meses sin licencia—: es el texto del LICENSE del TAG QUE LA RECETA PINEA, no el de la rama por defecto. consul v1.22.7, vault v1.21.4, nomad v1.11.3 y packer v1.15.4 abren con «Business Source License 1.1». ⚠ BUSL-1.1 NO es una licencia libre: prohibe el uso en produccion que compita con el producto de pago, y solo pasa a MPL-2.0 cuatro años despues de cada version. Cuatro paquetes del catalogo publicable no son redistribuibles como si fueran libres. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Xd5DComN9Nu47TBpYMBHBn
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "consul"
|
||||
version = "1.22.7"
|
||||
license = "BUSL-1.1"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/hashicorp/consul"
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "nomad"
|
||||
version = "1.11.3"
|
||||
license = "BUSL-1.1"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/hashicorp/nomad"
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "packer"
|
||||
version = "1.15.4"
|
||||
license = "BUSL-1.1"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/hashicorp/packer"
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "vault"
|
||||
version = "1.21.4"
|
||||
license = "BUSL-1.1"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/hashicorp/vault"
|
||||
|
||||
@@ -84,9 +84,36 @@ SIN=$(wc -l < "$TMP/sin.tsv" 2>/dev/null || echo 0)
|
||||
echo "#"
|
||||
echo "# Formato: <receta><TAB><SPDX><TAB><owner/repo consultado>"
|
||||
echo "# Consultadas $TOT · con SPDX definido $CON · sin SPDX utilizable $SIN"
|
||||
sort "$TMP/con.tsv" 2>/dev/null
|
||||
} > "$SALIDA"
|
||||
# ── SE FUSIONA CON LO YA REGISTRADO, NO SE REEMPLAZA ─────────────────────────────────────────
|
||||
# Este script consulta sólo las recetas que HOY no tienen licencia, así que su cosecha MENGUA a
|
||||
# cada pasada: lo que sembró ayer ya no aparece en `--faltan`. Reescribir el fichero con la
|
||||
# cosecha del día borraba la procedencia de todo lo anterior — el 2026-08-20 una pasada con CERO
|
||||
# detecciones dejó el TSV en 0 filas y se llevó por delante las 610 que documentaban de dónde
|
||||
# salía cada licencia ya sembrada. Y salió con éxito, diciendo «escrito» y «sembrar con»: un
|
||||
# vacío que llega hasta el final afirmando que todo fue bien (regla 3 de CLAUDE.md).
|
||||
# El fichero es el REGISTRO DE EVIDENCIA de lo detectado, no el parte de la última pasada.
|
||||
{ grep -v '^#' "$SALIDA" 2>/dev/null; cat "$TMP/con.tsv" 2>/dev/null; } \
|
||||
| awk -F'\t' 'NF && !vista[$1]++' | sort
|
||||
} > "$TMP/salida.nueva"
|
||||
|
||||
# El fichero sólo se reemplaza si el resultado NO PIERDE filas. Un registro de evidencia que encoge
|
||||
# es un fallo, no un resultado: se para y se dice, en vez de sobrescribir y avisar de nada.
|
||||
ANTES=$(grep -vc '^#' "$SALIDA" 2>/dev/null || echo 0)
|
||||
DESPUES=$(grep -vc '^#' "$TMP/salida.nueva" 2>/dev/null || echo 0)
|
||||
if [ "$DESPUES" -lt "$ANTES" ]; then
|
||||
echo "!! ABORTO: la fusión daría $DESPUES filas y $SALIDA tiene $ANTES. No lo sobrescribo."
|
||||
echo "!! La versión nueva queda en: $TMP/salida.nueva (se borra al salir; copiála si la querés)"
|
||||
cp "$TMP/salida.nueva" "$SALIDA.rechazado" 2>/dev/null && echo "!! copia en $SALIDA.rechazado"
|
||||
exit 1
|
||||
fi
|
||||
mv "$TMP/salida.nueva" "$SALIDA"
|
||||
|
||||
echo "==> con SPDX definido: $CON · descartadas por indefinido: $SIN"
|
||||
echo "==> escrito: $SALIDA"
|
||||
echo "==> sembrar con: TABLA=$SALIDA ./scripts/licencias.sh --sembrar"
|
||||
if [ "$CON" -eq 0 ]; then
|
||||
echo "==> NADA NUEVO que sembrar: las $SIN consultadas dan SPDX indefinido (NOASSERTION/other)."
|
||||
echo "==> Ése es el residuo duro: hay que LEER el LICENSE del tag pineado."
|
||||
echo "==> $SALIDA queda intacto con sus $DESPUES filas de evidencia previa."
|
||||
else
|
||||
echo "==> escrito: $SALIDA ($DESPUES filas, $CON nuevas)"
|
||||
echo "==> sembrar con: TABLA=$SALIDA ./scripts/licencias.sh --sembrar"
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user