Pular para o conteúdo
DispatchAtlas
Buscar

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 arquivoLinha de cabeçalhoPosição
.py .toml .yml .yaml .sh .ps1 .cff .editorconfig .gitattributes .gitignore CODEOWNERS# SPDX-License-Identifier: MITPrimeira linha; após o shebang quando há um
.ts .tsx .mjs// SPDX-License-Identifier: MITPrimeira 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 inject

check 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.