FEATURED · 精选文章

OpenSpec validate 报 MODIFIED 需求 “omits scenario(s)“ 怎么修复?

发布时间 / 2026/9/10 9:46:49
来源 / 创域科博编辑部
栏目 / 资讯中心
OpenSpec validate 报 MODIFIED 需求 “omits scenario(s)“ 怎么修复? OpenSpec validate 报 MODIFIED 需求 omits scenario(s) 怎么修复【免费下载链接】OpenSpecSpec-driven development (SDD) for AI coding assistants.项目地址: https://gitcode.com/GitHub_Trending/op/OpenSpec在 OpenSpec 项目里写一个 change跑openspec validate时如果看到下面这条错误MODIFIED requirement omits scenario(s) the current spec still has: scenario说明你的 delta 里某个MODIFIED需求块漏写了主 spec 中仍然存在的场景。这条错误的本质是MODIFIED需求会整体替换主 spec 里同名需求块所以它必须带上变更后仍然存活的全部场景而不只是你这次编辑过的那几个。troubleshooting 文档 和校验器实现 validator.ts 对这条消息的成因与修法有明确说明。这条错误是怎么触发的按 docs/troubleshooting.md 的说法典型触发路径是你基于某份主 spec 起草了 changedelta 里用## MODIFIED Requirements改写了某个需求之后别人或你自己更早的 change往同一个需求里新增了一个场景并 archive 进了主 spec你的 change 再跑openspec validate时校验器把 delta 里的 MODIFIED 块和主 spec 当前的需求块逐场景对比发现主 spec 里有的场景名在你的 MODIFIED 块里不存在就报这个错误并列出缺的场景名。校验器给出的完整错误消息会直接附带修法提示MODIFIED name omits scenario(s) the current spec still has: scenario1, scenario2. Copy them into the MODIFIED block (a MODIFIED requirement replaces the whole block, so archive refuses to drop them).这条检查与 archive 的行为是同一套逻辑archive 会拒绝应用会丢弃场景的 MODIFIED 块见 cli-validate spec所以即使你跳过它直接去 archive一样过不了。validate 只是提前在动手实现之前告诉你这一点。另外 writing-specs 文档 对三种 delta 的语义有定义## ADDED Requirements是新增行为## MODIFIED Requirements是已存在的行为要变更要求包含完整的新版本## REMOVED Requirements是被删掉的行为。把新行为误标成 MODIFIED 或把真实变更标成 ADDED都会带来另一类问题改这个错误时顺便确认 delta 类型没标错。修复步骤1. 确认是哪个 change、哪个文件报错在项目根目录对该 change 单独跑校验错误消息会指明具体的 delta 文件和需求名openspec validate change-name例如openspec validate add-rate-limit--all、--strict、--json等选项及输出格式见 CLI 参考 的openspec validate一节。2. 打开主 spec找到被改的那个需求块主 spec 位于openspec/specs/capability-path/spec.md。capability-path是相对specs/的目录扁平结构的项目就是能力名如user-auth按 domain 组织的项目带域名前缀如identity/user-auth——这个规则来自 writing-specs 文档。找到错误消息里点名的那个### Requirement:需求块通读它下面的全部#### Scenario:场景。3. 把缺失的场景补进 delta 的 MODIFIED 块打开你的 change 里的 delta 文件openspec/changes/change-name/specs/下对应的 spec 文件进入## MODIFIED Requirements中同名需求块把第 2 步里那些缺失的#### Scenario:场景原样复制进去如果场景内容本身也要随本次变更调整就在复制后修改而不是只保留修改过的部分。troubleshooting 文档 的原话是Copy the named scenarios fromopenspec/specs/capability-path/spec.mdback into the delta, preserving any domain directories in the path.注意preserving any domain directories in the pathdelta 文件所在的目录结构要和主 spec 的能力路径一致含 domain 前缀时要保留。4. 重新校验openspec validate change-name不再出现omits scenario(s)错误即修复完成。确认无错误后再继续实现任务或 archive。边界与注意点场景对比是按名字计数的不是集合判断。实现见 requirement-blocks.ts主 spec 里同名场景出现 N 次、MODIFIED 块里只有 M 次N M会报出 N − M 个缺失。如果你重命名了某个场景原名字仍会被算作缺失——想真正删掉一个场景走的是删场景后确认主 spec 不再需要它而不是在 MODIFIED 块里悄悄不提它。RENAMED 的处理顺序。校验按 archive 的实际顺序比较RENAMED 先于 MODIFIED 应用所以一个引用了新名字的 MODIFIED 块对比的是重命名后那个需求块的场景见 cli-validate spec。如果你的 change 同时改名字又改内容报错点名的需求可能是重命名之后的头。错误消息里列出的场景名就是完整清单消息里列了几个就补几个不存在隐藏的其他检查项。修完后如果同一 change 里还有其他需求报同样错误逐个按上面步骤处理即可openspec validate --all可以整体复查。相关文档docs/troubleshooting.md — 该错误的官方条目与修法docs/writing-specs.md — ADDED / MODIFIED / REMOVED 三种 delta 的语义docs/cli.md —openspec validate的完整选项与输出格式docs/editing-changes.md、docs/reviewing-changes.md — 迭代与审查 change 时如何避免写出这种 delta【免费下载链接】OpenSpecSpec-driven development (SDD) for AI coding assistants.项目地址: https://gitcode.com/GitHub_Trending/op/OpenSpec创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻