라이선스 헤더
DispatchAtlas 의 모든 주석 가능 소스 파일은 단일-행 SPDX-License-Identifier: MIT
헤더를 담습니다; 나머지 모두는 REUSE.toml 의 주석 블록과 프로젝트 LICENSE 로
커버됩니다. 이 페이지는 비준된 정책입니다; 게이트가 소비하는 기계 투영은
tools/license_header.toml 이며, tools/license_header.py 가 그것을 강제합니다(check
는 pre-commit 과 CI 에서 닫는 쪽으로 실패하고, inject 는 누락 헤더를 올바른 위치에
멱등하게 추가함).
인라인 헤더 형식
| 파일 클래스 | 헤더 행 | 위치 |
|---|---|---|
.py .toml .yml .yaml .sh .ps1 .cff .editorconfig .gitattributes .gitignore CODEOWNERS | # SPDX-License-Identifier: MIT | 첫 행; shebang 이 있을 때 그 뒤 |
.ts .tsx .mjs | // SPDX-License-Identifier: MIT | 첫 행 |
.js | // SPDX-License-Identifier: MIT(블록 형식 /* SPDX-License-Identifier: MIT */ 도 허용) | 첫 행 |
.css | /* SPDX-License-Identifier: MIT */ | 첫 행 |
.md | <!-- SPDX-License-Identifier: MIT --> | 첫 행, 또는 닫는 YAML frontmatter 펜스 뒤의 첫 비공백 행 |
.mdx | {/* SPDX-License-Identifier: MIT */} | 닫는 frontmatter 펜스 뒤의 첫 비공백 행(HTML 주석은 MDX 본문에서 무효) |
.xml | <!-- SPDX-License-Identifier: MIT --> | 첫 행, 또는 <?xml …?> 선언 바로 뒤 |
일괄-커버되는 클래스
주석 불가, 데이터, 자산, lockfile, 마커 클래스는 인라인 헤더를 담지 않습니다; REUSE.toml
이 그것들의 라이선스와 저작권을 중앙에서 주장합니다:
.json .svg .csv .gz .whl .ttf .woff2 .pdf .png .ico
.log .hash .map .tsbuildinfo .txt .html .lock .typed 그리고 pagefind
인덱스 클래스, 더하여 베이스네임 LICENSE, CNAME, .nojekyll, py.typed,
.gitkeep.
생성-출력 트리
생성-출력 트리 아래의 모든 파일은 기계-발행 증거나 빌드 출력이며 확장자와 무관하게
일괄-커버됩니다: site/out/ 와 각 패키지의 dist/, 더하여 실험 작업공간의 로컬 계층.
게이트는 거기서 인라인 헤더를 요구하지도 주입하지도 않습니다.
면제와 범위
LICENSES/ 아래의 라이선스 텍스트는 라이선스 자체이며 헤더를 담지 않습니다. 의존성과
캐시 트리(.venv/, node_modules/, 바이트코드 및 도구 캐시)는 정책 밖입니다: 그것들은
DispatchAtlas 파일이 아닙니다. 이 등록부에 없는 파일 클래스는 게이트가 미등록으로 보고하고
검사를 실패시킵니다 — 새 클래스는 출하 전에 여기서 비준됩니다.
게이트 실행
uv run python tools/license_header.py check
uv run python tools/license_header.py injectcheck 는 모든 트리 — 추적, 비공개, 생성 — 를 순회하고 누락 또는 미등록 발견 시 비-영으로
종료합니다. inject 는 파일 클래스의 정전적 헤더를 올바른 위치에 쓰고 두 번째 실행에서는
아무것도 변경하지 않습니다.