环境
- @studyzy/openspec-cn:1.5.0 出问题,回退 1.4.1 正常
- OS:Windows 11;全局安装(bun)
复现
用中文标题写的 spec(这是本 fork 1.4.x 的既定格式),例如 openspec/specs/demo/spec.md:
# demo 规范
## 目的
定义……
## 需求
### 需求:用户必须能配置连接
系统必须允许有权限的用户创建连接。
#### 场景:创建连接
- **当** 用户提交表单
- **那么** 系统创建连接
执行 openspec-cn validate demo --type spec:
1.5.0 报错链(两层,均为语言不匹配)
缺少必要章节。期望标题:"## Purpose" 和 "## Requirements"
—— 解析器只按英文标题匹配,不再识别中文 ## 目的/## 需求。
(change 同理:## 为什么/## 变更内容 需 ## Why/## What Changes;
delta 的 ## 新增需求 需 ## ADDED Requirements。)
- 把标题改成英文后,需求正文又报
需求必须包含 SHALL 或 MUST 关键字
—— 只认字面英文 SHALL/MUST,不接受中文「必须/应/禁止」。
定位(1.5.0 dist/core/parsers/markdown-parser.js)
- findSection 用英文字面量匹配:'Purpose' / 'Requirements' / 'Why' / 'What Changes'
- requirement 正则
^###\s*Requirement:;delta 章节 ADDED/MODIFIED/REMOVED/RENAMED Requirements 均为英文
- 需求文本的 SHALL/MUST 校验为英文关键字
影响
对「中文原生」fork,1.5.0 令所有既有中文 spec/change 无法通过 validate
(openspec-cn list --specs 显示所有 spec「需求数 0」),并阻断 archive 流程。
期望
CN fork 恢复识别中文结构标题(目的/需求/场景/为什么/变更内容/新增需求…)
与中文规范性关键字(必须/应/禁止 对应 SHALL/MUST),
或提供语言/别名配置项以保持向后兼容。
环境
复现
用中文标题写的 spec(这是本 fork 1.4.x 的既定格式),例如 openspec/specs/demo/spec.md:
执行
openspec-cn validate demo --type spec:1.5.0 报错链(两层,均为语言不匹配)
缺少必要章节。期望标题:"## Purpose" 和 "## Requirements"—— 解析器只按英文标题匹配,不再识别中文
## 目的/## 需求。(change 同理:
## 为什么/## 变更内容需## Why/## What Changes;delta 的
## 新增需求需## ADDED Requirements。)需求必须包含 SHALL 或 MUST 关键字—— 只认字面英文 SHALL/MUST,不接受中文「必须/应/禁止」。
定位(1.5.0 dist/core/parsers/markdown-parser.js)
^###\s*Requirement:;delta 章节 ADDED/MODIFIED/REMOVED/RENAMED Requirements 均为英文影响
对「中文原生」fork,1.5.0 令所有既有中文 spec/change 无法通过 validate
(
openspec-cn list --specs显示所有 spec「需求数 0」),并阻断 archive 流程。期望
CN fork 恢复识别中文结构标题(目的/需求/场景/为什么/变更内容/新增需求…)
与中文规范性关键字(必须/应/禁止 对应 SHALL/MUST),
或提供语言/别名配置项以保持向后兼容。