Skip to content

1.5.0 无法验证中文标题的 spec/change(1.4.1 正常,疑似回归) #31

Description

@evil9369

环境

  • @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.4.1:✅ 验证通过
  • 1.5.0:❌ 失败

1.5.0 报错链(两层,均为语言不匹配)

  1. 缺少必要章节。期望标题:"## Purpose" 和 "## Requirements"
    —— 解析器只按英文标题匹配,不再识别中文 ## 目的/## 需求
    (change 同理:## 为什么/## 变更内容## Why/## What Changes
    delta 的 ## 新增需求## ADDED Requirements。)
  2. 把标题改成英文后,需求正文又报 需求必须包含 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),
或提供语言/别名配置项以保持向后兼容。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions