Saltar al contenido
DispatchAtlas
Buscar

Encabezados de licencia

Cada archivo de fuente comentable en DispatchAtlas lleva un encabezado de una línea SPDX-License-Identifier: MIT; todo lo demás está cubierto por los bloques de anotación en REUSE.toml y el LICENSE del proyecto. Esta página es la política ratificada; la proyección de máquina que el gate consume es tools/license_header.toml, y tools/license_header.py la hace cumplir (check falla en cerrado en pre-commit y CI, inject añade un encabezado faltante en la posición correcta de forma idempotente).

Formas de encabezado inline

Clase de archivoLínea de encabezadoPosición
.py .toml .yml .yaml .sh .ps1 .cff .editorconfig .gitattributes .gitignore CODEOWNERS# SPDX-License-Identifier: MITPrimera línea; después del shebang cuando hay uno
.ts .tsx .mjs// SPDX-License-Identifier: MITPrimera línea
.js// SPDX-License-Identifier: MIT (la forma de bloque /* SPDX-License-Identifier: MIT */ también se acepta)Primera línea
.css/* SPDX-License-Identifier: MIT */Primera línea
.md<!-- SPDX-License-Identifier: MIT -->Primera línea, o primera línea no en blanco tras la cerca de frontmatter YAML de cierre
.mdx{/* SPDX-License-Identifier: MIT */}Primera línea no en blanco tras la cerca de frontmatter de cierre (los comentarios HTML son inválidos en cuerpos MDX)
.xml<!-- SPDX-License-Identifier: MIT -->Primera línea, o directamente tras la declaración <?xml …?>

Clases cubiertas por cobertura general

Las clases no comentables, de datos, activos, lockfile, y marcador no llevan encabezado inline; REUSE.toml afirma su licencia y copyright de forma centralizada: .json .svg .csv .gz .whl .ttf .woff2 .pdf .png .ico .log .hash .map .tsbuildinfo .txt .html .lock .typed y las clases del índice pagefind, más los nombres base LICENSE, CNAME, .nojekyll, py.typed, y .gitkeep.

Árboles de salida generada

Cada archivo bajo un árbol de salida generada es evidencia emitida por máquina o salida de compilación y está cubierto por cobertura general independientemente de la extensión: site/out/ y el dist/ de cada paquete, más las capas locales del espacio de trabajo de experimentos. El gate nunca requiere ni inyecta encabezados inline allí.

Exenciones y alcance

Los textos de licencia bajo LICENSES/ son las licencias mismas y no llevan encabezado. Los árboles de dependencias y caché (.venv/, node_modules/, caché de byte-code y de herramientas) están fuera de la política: no son archivos de DispatchAtlas. Una clase de archivo ausente de este registro es reportada por el gate como no registrada y falla la comprobación — las clases nuevas se ratifican aquí antes de que se envíen.

Ejecutar el gate

uv run python tools/license_header.py check
uv run python tools/license_header.py inject

check recorre cada árbol — rastreado, privado, y generado — y sale no-cero ante cualquier hallazgo faltante o no registrado. inject escribe el encabezado canónico para la clase del archivo en la posición correcta y no cambia nada en una segunda ejecución.