Cabeçalhos de licença
Cada arquivo de fonte comentável no DispatchAtlas carrega um cabeçalho de uma linha
SPDX-License-Identifier: MIT; todo o resto é coberto pelos blocos de anotação em
REUSE.toml e o LICENSE do projeto. Esta página é a política ratificada; a projeção
de máquina que o gate consome é tools/license_header.toml, e
tools/license_header.py a faz cumprir (check falha fechando em pre-commit e CI,
inject adiciona um cabeçalho faltante na posição correta de forma idempotente).
Formas de cabeçalho inline
| Classe de arquivo | Linha de cabeçalho | Posição |
|---|---|---|
.py .toml .yml .yaml .sh .ps1 .cff .editorconfig .gitattributes .gitignore CODEOWNERS | # SPDX-License-Identifier: MIT | Primeira linha; após o shebang quando há um |
.ts .tsx .mjs | // SPDX-License-Identifier: MIT | Primeira linha |
.js | // SPDX-License-Identifier: MIT (a forma de bloco /* SPDX-License-Identifier: MIT */ também é aceita) | Primeira linha |
.css | /* SPDX-License-Identifier: MIT */ | Primeira linha |
.md | <!-- SPDX-License-Identifier: MIT --> | Primeira linha, ou primeira linha não vazia após a cerca de frontmatter YAML de fechamento |
.mdx | {/* SPDX-License-Identifier: MIT */} | Primeira linha não vazia após a cerca de frontmatter de fechamento (comentários HTML são inválidos em corpos MDX) |
.xml | <!-- SPDX-License-Identifier: MIT --> | Primeira linha, ou diretamente após a declaração <?xml …?> |
Classes cobertas por cobertura geral
As classes não comentáveis, de dados, ativos, lockfile, e marcador não carregam
cabeçalho inline; REUSE.toml afirma sua licença e copyright de forma centralizada:
.json .svg .csv .gz .whl .ttf .woff2 .pdf .png .ico
.log .hash .map .tsbuildinfo .txt .html .lock .typed e as classes do
índice pagefind, mais os nomes base LICENSE, CNAME, .nojekyll, py.typed, e
.gitkeep.
Árvores de saída gerada
Cada arquivo sob uma árvore de saída gerada é evidência emitida por máquina ou saída de
compilação e é coberto por cobertura geral independentemente da extensão: site/out/
e o dist/ de cada pacote, mais as camadas locais do espaço de trabalho de
experimentos. O gate nunca requer nem injeta cabeçalhos inline ali.
Isenções e escopo
Os textos de licença sob LICENSES/ são as próprias licenças e não carregam cabeçalho.
As árvores de dependências e cache (.venv/, node_modules/, cache de byte-code e de
ferramentas) estão fora da política: não são arquivos do DispatchAtlas. Uma classe de
arquivo ausente deste registro é reportada pelo gate como não registrada e falha a
verificação — as classes novas são ratificadas aqui antes de serem enviadas.
Executar o gate
uv run python tools/license_header.py check
uv run python tools/license_header.py injectcheck percorre cada árvore — rastreada, privada, e gerada — e sai não-zero em
qualquer achado faltante ou não registrado. inject escreve o cabeçalho canônico para
a classe do arquivo na posição correta e não muda nada em uma segunda execução.