Aller au contenu
DispatchAtlas
Rechercher

En-têtes de licence

Chaque fichier source commentable de DispatchAtlas porte un en-tête d'une ligne SPDX-License-Identifier: MIT ; tout le reste est couvert par les blocs d'annotation dans REUSE.toml et le LICENSE du projet. Cette page est la politique ratifiée ; la projection machine que le gate consomme est tools/license_header.toml, et tools/license_header.py l'applique (check échoue en position fermée en pre-commit et CI, inject ajoute un en-tête manquant à la position correcte de manière idempotente).

Formes d'en-tête inline

Classe de fichierLigne d'en-têtePosition
.py .toml .yml .yaml .sh .ps1 .cff .editorconfig .gitattributes .gitignore CODEOWNERS# SPDX-License-Identifier: MITPremière ligne ; après le shebang lorsqu'il y en a un
.ts .tsx .mjs// SPDX-License-Identifier: MITPremière ligne
.js// SPDX-License-Identifier: MIT (la forme de bloc /* SPDX-License-Identifier: MIT */ est aussi acceptée)Première ligne
.css/* SPDX-License-Identifier: MIT */Première ligne
.md<!-- SPDX-License-Identifier: MIT -->Première ligne, ou première ligne non vide après la clôture de frontmatter YAML
.mdx{/* SPDX-License-Identifier: MIT */}Première ligne non vide après la clôture de frontmatter (les commentaires HTML sont invalides dans les corps MDX)
.xml<!-- SPDX-License-Identifier: MIT -->Première ligne, ou directement après la déclaration <?xml …?>

Classes couvertes globalement

Les classes non commentables, de données, d'actifs, de lockfile, et de marqueur ne portent pas d'en-tête inline ; REUSE.toml affirme leur licence et copyright de manière centralisée : .json .svg .csv .gz .whl .ttf .woff2 .pdf .png .ico .log .hash .map .tsbuildinfo .txt .html .lock .typed et les classes de l'index pagefind, plus les basenames LICENSE, CNAME, .nojekyll, py.typed, et .gitkeep.

Arbres de sortie générée

Chaque fichier sous un arbre de sortie générée est une preuve émise par machine ou une sortie de compilation et est couvert globalement quelle que soit l'extension : site/out/ et le dist/ de chaque paquet, plus les couches locales de l'espace de travail des expériences. Le gate n'exige ni n'injecte jamais d'en-têtes inline là.

Exemptions et portée

Les textes de licence sous LICENSES/ sont les licences elles-mêmes et ne portent pas d'en-tête. Les arbres de dépendances et de cache (.venv/, node_modules/, caches de byte-code et d'outils) sont hors de la politique : ce ne sont pas des fichiers DispatchAtlas. Une classe de fichier absente de ce registre est rapportée par le gate comme non enregistrée et échoue à la vérification — les nouvelles classes sont ratifiées ici avant d'être livrées.

Exécuter le gate

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

check parcourt chaque arbre — suivi, privé, et généré — et sort non-zéro sur tout constat manquant ou non enregistré. inject écrit l'en-tête canonique pour la classe du fichier à la position correcte et ne change rien lors d'une seconde exécution.