svharness 0.13.2 → 0.13.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svharness",
3
- "version": "0.13.2",
3
+ "version": "0.13.3",
4
4
  "description": "CLI scaffolder for SDD-Driven Agent-Agnostic Coding Framework (harness)",
5
5
  "bin": {
6
6
  "svharness": "./bin/cli.js",
@@ -11,11 +11,13 @@ Agent 在进入 S30_convert_docs 阶段后必须逐一检查以下两个目录
11
11
 
12
12
  ## 转换前置检查
13
13
 
14
- 对上述两个目录执行以下检查:
14
+ 对上述两个目录执行以下检查(**必须同时读取 `raw/` 与 `md/`,不得只扫 raw**):
15
15
 
16
- 1. **列出原始文件**:扫描目录,识别所有非 `.md`、非 `.gitkeep` 的文件(如 `.pdf`、`.docx`、`.pptx`、`.xlsx`、`.html`、`.txt`、`.csv` 等)。
17
- 2. **检查对应 md 是否存在**:对每个原始文件,检查对应 `md/` 目录中是否存在同基名的 `.md` 文件(如 `requirements/raw/需求文档.pdf` → `requirements/md/需求文档.md`)。
18
- 3. **判断是否需要转换**:仅当 `md/` 中缺少对应文件时,才需要执行转换;已存在的跳过。
16
+ 1. **列出原始文件**:扫描 `raw/`,识别所有非 `.md`、非 `.gitkeep` 的文件(如 `.pdf`、`.docx`、`.pptx`、`.xlsx`、`.html`、`.txt`、`.csv` 等)。
17
+ 2. **列出已有产物**:扫描对应 `md/`,列出已有 `.md`(忽略 `.gitkeep`)。
18
+ 3. **同基名配对**:对每个原始文件,检查 `md/` 中是否存在同基名的 `.md`(如 `requirements/raw/需求文档.pdf` → `requirements/md/需求文档.md`)。`svharness build` 自动 convert 或用户手工放入的产物均算已完成。
19
+ 4. **判断是否需要转换**:仅当 `md/` 中缺少同基名文件时才转换;**`raw/` 中仍保留 pdf/docx 不代表未转换**(源文件不得删除)。
20
+ 5. **常见误判**:勿将 `raw/` 内已是 `.md` 的文件计入待转换;勿忽略 `md/` 已有文件;若产物在 `raw/**/converted_md/`,应移至对应 `md/` 后再判定。
19
21
 
20
22
  ## 转换方式(按优先级)
21
23
 
@@ -43,12 +43,12 @@ description: >
43
43
  5. 类型确认:若输入包含规则文件或无法识别类型的资源,提示将由 S65 根据 `__HARNESS_ROOT__agent-env/_incoming/manifest.yaml` 做分流确认(skill→`agent-env/skills/`,rule→`agent-env/rules/`)。
44
44
  **关键约束**:用户选择"不新增"仅表示不再添加新文件,**不等于**跳过本阶段;仍须完成第 1 步盘点并基于 `raw/` 现有文件做确认后方可退出。
45
45
  **退出条件**:已完成第 1 步盘点;`requirements/raw/` 存在真实文档;其余项完成"已提供/无新增"确认。严禁自动生成占位文档。
46
- - **S30_convert_docs** — 将 `raw/` 中的非 Markdown 原始文档统一转换为 Markdown
47
- 1. 检查 `__HARNESS_ROOT__requirements/raw/` 中是否有非 `.md`、非 `.gitkeep` 的文件。
48
- 2. 检查 `__HARNESS_ROOT__references/raw/` 中是否有非 `.md`、非 `.gitkeep` 的文件。
49
- 3. 若有,以表单提示用户运行 `svharness convert --input <path> --output __HARNESS_ROOT__ --type requirements`(或 references)将文档转为 md;也可由 Agent 直接调用 CLI(若运行环境支持)。
50
- 4. 校验两个 `md/` 目录是否已包含 `raw/` 中每份源文档对应的 `.md` 文件。
51
- 5. 全部完成后标记 DONE 并推进到 S40_extract_requirements。
46
+ - **S30_convert_docs** — 将 `raw/` 中的非 Markdown 原始文档统一转换为 Markdown(**必须遵守 `harness-build-rule-convert-check`,同时盘点 raw 与 md 并按同基名配对**):
47
+ 1. **四目录盘点(不可跳过)**:分别列出 `__HARNESS_ROOT__requirements/raw/`、`requirements/md/`、`references/raw/`、`references/md/` 的文件清单。不得仅因 `raw/` 中仍存在 `.pdf`/`.docx` 等就判定“待转换”——转换后原始文件**故意保留**在 `raw/`。
48
+ 2. **配对判定**:对每个 `raw/` 中的非 `.md`、非 `.gitkeep` 源文件,检查对应 `md/` 是否已有**同基名** `.md`(如 `foo.pdf` → `md/foo.md`;`清单.csv` → `md/清单.md`)。仅当 `md/` 缺失时才计入待处理。
49
+ 3. **状态卡片写法**:`已完成` 只写已配对的 requirements/references 项;`待处理` **只列** md 仍缺失的源文件。禁止把“raw 里有多少个非 md 文件”直接等同于待转换数量。
50
+ 4. 对待处理项:优先调用 `svharness convert`(或表单提示用户运行 CLI);若 `md/` 已有同基名 `.md` 则**跳过转换**。
51
+ 5. 全部配对完成后标记 DONE 并推进到 S40_extract_requirements。
52
52
  - **S40_extract_requirements** — 委派给 `harness-build-skill-spec-builder`(需求条目化提取到 `__HARNESS_ROOT__requirements/yaml/`)。
53
53
  - **S50_generate_specs** — 委派给 `harness-build-skill-spec-builder`(生成受 schema 校验的 YAML)。
54
54
  - **S60_process_references**(references 处理)— 仅处理 references:执行 `svharness convert`,产出结构化索引(规制约束 / skills 候选 / signals / manuals),并通过表单确认落地策略;委派给 `harness-build-skill-references-intake`。