法务合规
当代码与规格文档不一致时…
在已有权威规格文档(白皮书、协议规范、设计文档、README 承诺)和对应实现代码时,逐条核查需求是否被实现、被违背或缺失,并发现文档未提及的代码行为。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
当代码与规格文档不一致时,如何系统化核查特定
解决思路
- 运行 `/spec-to-code-compliance:spec-compliance <path>` 斜杠命令,传入路径参数;若需直接指定规格文件或扩大检查范围,用自然语言说明(如 "run spec-compliance on ./contracts against SPEC.md, checking 20 requirements"),这些值会作为 `{path, spec, limit}` 传给脚本;不要在斜杠命令后直接键入对象字面量,它会被当作字符串变成路径。
- 该工作流会自动:查找文档、拆分为可独立检查的需求、为每条需求分配独立 agent 去代码中搜寻、让未产出该发现的独立 agent 尝试反驳每个分歧后再报告,并写出 `spec-compliance/REPORT.md` 及 `spec-compliance/requirements/` 下每条需求一个文件。
- 对单条需求,直接派发 `spec-to-code-compliance:spec-compliance-checker` agent 处理。
- 不要试图在单一上下文内联完成检查:判断一条需求需要阅读其执行点、被调用者和调用者,三十条需求意味着同时持有三十条调用链;内联做会导致前几条真查、其余只给出看似合理的结论,且两者在记录上无法区分。
- 依赖脚本提供的两个属性(无法在此处获得):一是由非发现作者执行的独立反驳(一个重读代码、一个重读文档,任一推翻即丢弃);二是绑定返回 schema 的子 agent 必须列出所读行号和所运行的搜索,使 `absent` 判定附带尝试过的模式和结果。
- 按六种判定解读每条需求:`implemented`、`partial`、`contradicted`、`stronger-than-spec`、`absent`、`undecidable`;重点关注中间四种。
- 对 `partial` 判定要格外重视——它通常是最严重的问题:需求在任何人会测试的路径上成立,却在无人测试的路径上失败。
- 对 `absent` 判定必须阅读其 `searched` 记录:执行点常藏在搜索未覆盖之处,如修饰符、基类、先做检查的调用者。
- 将 `undecidable` 和任何 `documentProblem` 视为关于文档本身的发现:过于模糊而无法检查的需求,客户无法据此追责。
- 将 `stronger-than-spec` 视为未记录的约束:它今天能工作,但没有任何东西告知下一个改这段代码的人有依赖存在。
- 阅读报告中的反向发现——代码有而文档未提及的行为,这是逐需求检查在构造上无法发现的。
- 在将报告视为完整之前,先阅读 `notChecked`、`unverified` 和 `unreadableDocuments`:低于 fan-out 截断的需求从未被检查,反驳 agent 均未推翻的分歧属于未验证而非已确认。
- 严重性判断依据后果而非与文本的距离,参考 [DIVERGENCE_RUBRIC.md](resources/DIVERGENCE_RUBRIC.md):例如导致资金池流失的舍入步骤优先于用不同方式满足的 MUST,无行为后果的文档漂移只是文档工单。
- 判定不等于发现:强制需求上的 `absent` 是发现,描述路线图条目的句子上的 `absent` 不是;区分二者正是本技能的核心,工作流只提供证据。
- 当目标不是合约时,阅读 [DOMAIN_NOTES.md](resources/DOMAIN_NOTES.md),它映射了合约、C/C++、服务、反编译固件等领域的规格与执行点位置,并覆盖规格为 RFC 或标准而非项目文档的情况;在针对大型标准做范围界定时也读它。
- 扩展本插件或判断记录是否可信时,阅读 [ANALYSIS_FORMAT.md](resources/ANALYSIS_FORMAT.md)(逐需求分析的磁盘格式)。
- 参考 [WORKED_EXAMPLE.md](resources/WORKED_EXAMPLE.md):三条需求各自追到一种易错判定——满足需求但形式不像的算术、搜索记录本身即发现的缺失、除无人测试路径外处处存在的执行点。
适用边界 · 注意事项
- 不适用于没有任何预期行为文档的代码:没有可对照之物,从代码推断的需求只能与自身对照;应先用 `audit-context-building` 建立系统模型。
- 不适用于一般性找 bug:它只找一类——代码与文档不一致之处;两者都未提及的 bug 不在范围内,文档认可的 bug 则是对文档的发现。
- 不适用于撰写或改进文档,尽管它会产出需要修复的清单。