跳到内容
DispatchAtlas
搜索

许可证头部

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 索引 类别,外加基名 LICENSECNAME.nojekyllpy.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 inject

check 遍历每棵树——受跟踪、私有与生成——并在任何缺失或未注册发现时以非零退出。inject 在正确位置为文件类别写入规范头部,并在第二次运行时不更改任何内容。