Header lisensi
Setiap berkas sumber yang dapat-dikomentari di DispatchAtlas membawa satu header
satu-baris SPDX-License-Identifier: MIT; segala yang lain tercakup oleh blok anotasi
di REUSE.toml dan LICENSE proyek. Halaman ini adalah kebijakan yang diratifikasi;
proyeksi mesin yang dikonsumsi gate adalah tools/license_header.toml, dan
tools/license_header.py menegakkannya (check gagal-menutup di pre-commit dan CI,
inject menambahkan header yang hilang pada posisi yang benar secara idempoten).
Bentuk header inline
| Kelas berkas | Baris header | Posisi |
|---|---|---|
.py .toml .yml .yaml .sh .ps1 .cff .editorconfig .gitattributes .gitignore CODEOWNERS | # SPDX-License-Identifier: MIT | Baris pertama; setelah shebang bila ada |
.ts .tsx .mjs | // SPDX-License-Identifier: MIT | Baris pertama |
.js | // SPDX-License-Identifier: MIT (bentuk blok /* SPDX-License-Identifier: MIT */ juga diterima) | Baris pertama |
.css | /* SPDX-License-Identifier: MIT */ | Baris pertama |
.md | <!-- SPDX-License-Identifier: MIT --> | Baris pertama, atau baris non-kosong pertama setelah pagar frontmatter YAML penutup |
.mdx | {/* SPDX-License-Identifier: MIT */} | Baris non-kosong pertama setelah pagar frontmatter penutup (komentar HTML tidak valid dalam tubuh MDX) |
.xml | <!-- SPDX-License-Identifier: MIT --> | Baris pertama, atau langsung setelah deklarasi <?xml …?> |
Kelas tercakup-menyeluruh
Kelas yang tidak-dapat-dikomentari, data, aset, lockfile, dan penanda tidak membawa
header inline; REUSE.toml menegaskan lisensi dan hak ciptanya secara terpusat:
.json .svg .csv .gz .whl .ttf .woff2 .pdf .png .ico
.log .hash .map .tsbuildinfo .txt .html .lock .typed dan kelas indeks
pagefind, ditambah basename LICENSE, CNAME, .nojekyll, py.typed, dan
.gitkeep.
Pohon keluaran-yang-dihasilkan
Setiap berkas di bawah pohon keluaran-yang-dihasilkan adalah bukti yang dipancarkan-mesin
atau keluaran build dan tercakup-menyeluruh terlepas dari ekstensi: site/out/ dan
dist/ setiap paket, ditambah lapisan lokal ruang kerja eksperimen. Gate tidak pernah
mensyaratkan atau menyuntikkan header inline di sana.
Pengecualian dan cakupan
Teks lisensi di bawah LICENSES/ adalah lisensi itu sendiri dan tidak membawa header.
Pohon dependensi dan cache (.venv/, node_modules/, cache byte-code dan alat) berada
di luar kebijakan: mereka bukan berkas DispatchAtlas. Kelas berkas yang tidak ada dari
registri ini dilaporkan oleh gate sebagai tak-terdaftar dan menggagalkan pemeriksaan —
kelas baru diratifikasi di sini sebelum dikapalkan.
Menjalankan gate
uv run python tools/license_header.py check
uv run python tools/license_header.py injectcheck menelusuri setiap pohon — terlacak, privat, dan dihasilkan — dan keluar non-nol
pada temuan yang hilang atau tak-terdaftar apa pun. inject menulis header kanonik
untuk kelas berkas pada posisi yang benar dan tidak mengubah apa pun pada eksekusi
kedua.