Files
ArtPlayer/refactor/commit-audit.md

47 lines
3.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 每任务提交审计
`ENG-AUDIT-01`负责ENG-09的Git审计子项。运行`yarn check:commits`,或增加`--report`
将本次HEAD及完成记录写入`refactor/.cache/ci/commit-audit.json`。检查已接入`ci:check`,
GitHub日志artifact收集该报告。CI三个checkout使用完整历史:审计以及既有历史源码
兼容测试均依赖旧Git对象,浅克隆不能提供它们。
## 实际核对内容
脚本从可达Git历史读取每次tasks.json变化及其父提交,而不是从提交标题推断完成。
一项从非done转为done,必须在同一个提交包含:准确任务ID、tasks.json、生成plan.md、
存在于该提交树中的本地证据,以及至少一份该任务证据文件的实际变更。
普通完成提交只能完成一个任务。历史中的checkpoint不会被当作完成提交。合并时,
父分支已经done的任务沿用该分支的原始完成提交,不要求merge标题冒充任务完成。
当前工作区新增done但尚未提交会失败,已完成历史任务被从台账删除也会失败。
脚本核实起点与bootstrap提交可达;浅仓库明确报错,不悄悄跳过历史验证。
唯一合并完成例外固定为完整SHA `570600d2f6ffd580a890e0b87dfa9843bf8dd8d0`:
DOC-05携带先前已完成的DOC-01~04;要求该提交的新增done集合精确匹配这五项。
见 [原始说明](changes/2026-09-10-DOC-05-task-commits.md)。不能把例外按ID无限复用。
早期历史标题存在`test(BASE-04): ...`和`... ENG-04 ...`等格式。审计接受准确的任务
编号token,拒绝把TEST-010冒充TEST-01;这保留真实的独立提交,不是额外合并例外。
新增提交仍遵循AI工作流的`type(scope): [TASK-ID] description`格式。
## 本地实施顺序
1. 任务保持doing时运行适用测试、`ci:check`与审计;已提交的其他done任务必须可追溯。
2. 验收完成后将本任务标done,生成plan并暂存具体成果,立即独立提交。
3. 提交后再次运行`yarn check:commits --report`确认本任务的真实完成记录,并检查Git状态。
第2步尚未提交时审计会报告未提交完成,这是预期保护。没有“临时豁免”参数,也不能
在CI中通过环境变量绕过。审计不代替源码、测试结果或发布审查:证据文件共存不证明
其中断言有效,因此报告明确限制。它也不凭历史标题判断某个实现是否有足够测试。
## 验证和维护
`refactor/scripts/commit-audit.test.mjs`建立临时真实Git仓库,覆盖独立完成、固定
bootstrap例外、多个任务混在一提交、错误ID、缺plan/证据、复用未变化旧证据、路径
逃逸、未提交done、删除历史任务、浅仓库以及实际feature分支合并。临时仓库使用
专用作者,不修改用户Git配置;清理只针对已验证位于测试cache内的目录。
更改任务状态或提交政策时同时维护这些反例;禁止仅更新计数或忽略失败使审计变绿。
`ENG-IMPACT-01`继续处理影响范围,`ENG-COVERAGE-01`继续契约覆盖索引;本子项完成
不代表ENG-09整体、远端GitHub执行或npm发布门槛完成。