Lizenz-Header
Jede kommentierbare Quelldatei in DispatchAtlas trägt einen Einzeilen-Header
SPDX-License-Identifier: MIT; alles andere ist durch die Annotationsblöcke in
REUSE.toml und das Projekt-LICENSE abgedeckt. Diese Seite ist die ratifizierte
Richtlinie; die Maschinenprojektion, die das Gate konsumiert, ist
tools/license_header.toml, und tools/license_header.py erzwingt sie (check
schlägt in Pre-Commit und CI schließend fehl, inject fügt einen fehlenden Header an
der korrekten Position idempotent hinzu).
Inline-Header-Formen
| Dateiklasse | Header-Zeile | Position |
|---|---|---|
.py .toml .yml .yaml .sh .ps1 .cff .editorconfig .gitattributes .gitignore CODEOWNERS | # SPDX-License-Identifier: MIT | Erste Zeile; nach dem Shebang, wenn einer vorhanden ist |
.ts .tsx .mjs | // SPDX-License-Identifier: MIT | Erste Zeile |
.js | // SPDX-License-Identifier: MIT (die Blockform /* SPDX-License-Identifier: MIT */ wird ebenfalls akzeptiert) | Erste Zeile |
.css | /* SPDX-License-Identifier: MIT */ | Erste Zeile |
.md | <!-- SPDX-License-Identifier: MIT --> | Erste Zeile, oder erste nicht-leere Zeile nach dem schließenden YAML-Frontmatter-Zaun |
.mdx | {/* SPDX-License-Identifier: MIT */} | Erste nicht-leere Zeile nach dem schließenden Frontmatter-Zaun (HTML-Kommentare sind in MDX-Körpern ungültig) |
.xml | <!-- SPDX-License-Identifier: MIT --> | Erste Zeile, oder direkt nach der <?xml …?>-Deklaration |
Pauschal-abgedeckte Klassen
Nicht-kommentierbare, Daten-, Asset-, Lockfile-, und Marker-Klassen tragen keinen
Inline-Header; REUSE.toml versichert ihre Lizenz und ihr Copyright zentral:
.json .svg .csv .gz .whl .ttf .woff2 .pdf .png .ico
.log .hash .map .tsbuildinfo .txt .html .lock .typed und die
Pagefind-Index-Klassen, plus die Basenamen LICENSE, CNAME, .nojekyll,
py.typed, und .gitkeep.
Generierte-Ausgabe-Bäume
Jede Datei unter einem generierten-Ausgabe-Baum ist maschinell emittierter Beleg oder
Build-Ausgabe und wird unabhängig von der Erweiterung pauschal abgedeckt:
site/out/ und das dist/ jedes Pakets, plus die lokalen Schichten des
Experimente-Arbeitsbereichs. Das Gate fordert oder injiziert dort niemals
Inline-Header.
Ausnahmen und Geltungsbereich
Lizenztexte unter LICENSES/ sind die Lizenzen selbst und tragen keinen Header.
Abhängigkeits- und Cache-Bäume (.venv/, node_modules/, Byte-Code- und
Tool-Caches) sind außerhalb der Richtlinie: sie sind keine DispatchAtlas-Dateien. Eine
Dateiklasse, die in diesem Register fehlt, wird vom Gate als nicht registriert gemeldet
und besteht die Prüfung nicht — neue Klassen werden hier ratifiziert, bevor sie
ausgeliefert werden.
Das Gate ausführen
uv run python tools/license_header.py check
uv run python tools/license_header.py injectcheck durchläuft jeden Baum — verfolgt, privat, und generiert — und beendet
non-zero bei jedem fehlenden oder nicht registrierten Befund. inject schreibt den
kanonischen Header für die Klasse der Datei an der korrekten Position und ändert bei
einem zweiten Lauf nichts.