用途:对指定变更集执行 Sliced Bread 架构的操作性检查清单,仅审查、不修改代码。完整原理参见 https://cheeselord.dev/sliced-bread-architecture/reference/sliced-bread/。
审查范围:优先采用用户明确指定的路径、diff、分支或 PR;否则用当前分支相对默认分支的 diff;再否则用未提交更改(git diff HEAD)。只审查变更文件,以及被变更 import 指向的文件。
五项检查:
- 导入方向:只允许 entrypoints/ -> app/ -> domains/* -> domains/common/;app/bootstrap -> adapters/(仅组合根);adapters/ -> domains/。禁止 app/use_cases/ -> adapters/、domains/ -> adapters/|app/|entrypoints/、adapters/* -> app/|entrypoints/、common/ -> 兄弟 domains、任何东西 -> entrypoints/。方向反转是 blocker,用例导入具体适配器是 medium。
- Crust 完整性:外部消费者只能使用切片公开缝(Go 导出标识符、Python 包 init 表面、TypeScript index 模块等),不得访问内部;多消费者时 high,单消费者时 low。
- 模型纯度:域文件只能导入标准库、common/ 和兄弟切片公开 API;导入 HTTP 客户端、ORM 或队列为违规,应改为域内定义端口、适配器实现。
- 增长合理性:新目录与抽象需有实证压力,两个具体用例是常规证据阈值而非硬性要求;单一实现抽象、无事件的事件总线、单插件注册表在缺乏具体压力时为 medium。应抑制的误报包括:单消费者本身不证明过早抽象;保持单文件的新概念不标记;为打破跨切片循环引入的分发器即使只有一个事件和一个订阅者也算已证明压力;数字阈值仅作提示信号。
- 事件用法:事件用于反向依赖;切片间循环须通过 common/ 中类型化事件解决,否则 high;把事件当通用消息、而直接导入才是自然依赖时为 medium。
严重程度:blocker 为方向反转或域文件导入时执行基础设施;high 为跨切片内部导入、循环切片依赖、多消费者绕过 crust;medium 为模型纯度漂移、过早抽象、事件当消息、组合根外导入适配器;low 为单消费者绕过 crust、命名漂移。按 doctrine:severity-cases 矩阵首匹配顺序定级。
输出:按严重程度从高到低分组,每条为“严重程度 — 检查项 — file:line — 引用证据 — 一行修复建议”。空报告是有效结果,不得编造发现。不修改任何内容。