kld-sdd 2.5.1 → 2.6.0

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.
Files changed (35) hide show
  1. package/README.md +118 -8
  2. package/kld-sdd-guide.html +1 -1
  3. package/lib/init.js +24 -5
  4. package/lib/tool-profiles.js +1 -1
  5. package/package.json +4 -2
  6. package/skywalk-sdd/context-client.cjs +160 -0
  7. package/skywalk-sdd/index.cjs +445 -36
  8. package/skywalk-sdd/ontology/archive-package.cjs +489 -0
  9. package/skywalk-sdd/ontology/artifact-observer.cjs +91 -0
  10. package/skywalk-sdd/ontology/artifact-parser.cjs +621 -0
  11. package/skywalk-sdd/ontology/change-lock.cjs +126 -0
  12. package/skywalk-sdd/ontology/cli.cjs +146 -0
  13. package/skywalk-sdd/ontology/effective-graph.cjs +158 -0
  14. package/skywalk-sdd/ontology/id.cjs +126 -0
  15. package/skywalk-sdd/ontology/identity-index.cjs +287 -0
  16. package/skywalk-sdd/ontology/normalizer.cjs +107 -0
  17. package/skywalk-sdd/ontology/runtime.cjs +466 -0
  18. package/skywalk-sdd/ontology/schema.cjs +139 -0
  19. package/skywalk-sdd/ontology/structural-identity.cjs +77 -0
  20. package/skywalk-sdd/ontology/traceability-validator.cjs +610 -0
  21. package/skywalk-sdd/ontology/working-artifacts.cjs +243 -0
  22. package/templates/openspec/design.md +18 -0
  23. package/templates/openspec/proposal.md +19 -6
  24. package/templates/openspec/spec.md +62 -8
  25. package/templates/openspec/tasks.md +28 -6
  26. package/templates/skills/kld-sdd/opsx-archive/SKILL.md +19 -1
  27. package/templates/skills/kld-sdd/opsx-archive/checklist.md +5 -1
  28. package/templates/skills/kld-sdd/opsx-check/SKILL.md +18 -0
  29. package/templates/skills/kld-sdd/opsx-check/checklist.md +2 -0
  30. package/templates/skills/kld-sdd/opsx-design/SKILL.md +11 -0
  31. package/templates/skills/kld-sdd/opsx-propose/SKILL.md +12 -0
  32. package/templates/skills/kld-sdd/opsx-propose/checklist.md +2 -0
  33. package/templates/skills/kld-sdd/opsx-spec/SKILL.md +34 -0
  34. package/templates/skills/kld-sdd/opsx-spec/checklist.md +5 -0
  35. package/templates/skills/kld-sdd/opsx-task/SKILL.md +11 -0
@@ -107,6 +107,22 @@ openspec list
107
107
 
108
108
  > 上下文类型(需求文档 / 代码文件 / API 文档)与用途见 `./reference.md`「§3 上下文类型与用途」。
109
109
 
110
+ **【默认尝试】工程 Spec 知识库上下文**:
111
+
112
+ 从用户输入、proposal.md 中当前 Capability 的名称、业务目标、边界和约束组成一段自然语言查询。不要要求用户提供 `entity_id`。执行:
113
+
114
+ ```bash
115
+ node skywalk-sdd/context-client.cjs --query="<当前 Capability 的自然语言需求>" --target-stage=spec
116
+ ```
117
+
118
+ - 配置项:`ENGINEERING_KB_API`、`ENGINEERING_KB_SPACE_ID`、可选 `ENGINEERING_KB_TOKEN`。
119
+ - 若返回 `available=false` 或 `degraded=true`,记录降级原因并继续 Spec 流程,不得阻塞。
120
+ - 优先消费 `reuseBundles[].statements` 中的历史 STMT、AC、Constraint;`designElements` 只能作为理解上下文,不能写成 Spec 的 How。
121
+ - `answeredQuestions` 表示历史事实已经覆盖的内容,不要对用户重复提问。
122
+ - 只向用户询问 `clarificationQuestions` 中仍与当前 Capability 有关的问题。
123
+ - `reuseMode=REFERENCE` 只能参考复用,不得复制历史 UUID;只有 `reuseMode=INHERIT` 才允许按本体语义生成契约复用历史身份。
124
+ - 所有知识库内容均为 advisory;若与用户输入、proposal.md 或用户确认冲突,以当前用户确认和 proposal.md 为准。
125
+
110
126
  **【可选】业务知识库检索**:
111
127
  术语含义不清且可能影响 spec 准确性时,可调用 **opsx-knowledge** skill。
112
128
  知识库结果仅供参考,spec 契约以用户确认和 proposal 为准;失败时不阻塞。
@@ -131,6 +147,9 @@ openspec list
131
147
 
132
148
  第 3 层:当前 Capability 上下文
133
149
  → 已有的 spec.md(若为增量修改)
150
+
151
+ 第 4 层:工程知识库 Spec Context Package
152
+ → reuseBundles / answeredQuestions / clarificationQuestions
134
153
  ```
135
154
 
136
155
  ### 6. 创建 spec.md
@@ -176,6 +195,21 @@ openspec list
176
195
 
177
196
  ---
178
197
 
198
+ ## 本体语义生成契约
199
+
200
+ - 写入 `capability-id: CAP-<CAPABILITY>`,且必须引用 proposal 中真实存在的 CAP ID。
201
+ - 新需求、场景和约束分别使用 `STMT-*`、`AC-*`、`CON-*`;分配规则是同前缀同 Capability 当前最大序号 + 1。
202
+ - 修改已有实体必须复用原 ID;删除实体只写 removal 语义,不得把编号分配给新实体。
203
+ - `added` 必须调用 `semantic-identity --delta-state=added` 生成新的实体 UUID 和版本 UUID;禁止通过复制另一需求的 UUID 创建新实体。
204
+ - `modified/removed` 必须从 Archive 读取历史 `entity-id` 和直接前序 `version-id`,调用 `semantic-identity --delta-state=<modified|removed> --entity-id=<UUID> --predecessor-version=<UUID>`;实体 UUID 复用,版本 UUID 新建。
205
+ - AC 必须嵌套在所属 STMT 下;CON 必须通过 `**constrains**` 显式引用 STMT。
206
+ - 对 `reuseMode=REFERENCE` 的历史候选必须创建新的实体身份;禁止因为内容相似而复用历史 `entity-id`。
207
+ - 对 `reuseMode=INHERIT` 的历史事实,必须使用返回的实体与版本来源完成 unchanged/modified 身份参数校验。
208
+ - unchanged 内容只写人工锚点、历史实体 UUID、历史版本 UUID 和来源引用,不复制历史原文;调用 `semantic-identity --delta-state=unchanged --entity-id=<UUID> --version-id=<UUID>` 校验复用参数,引用断链时保持 unresolved 并交由 check 阻断。
209
+ - 生成结束后必须运行 `node skywalk-sdd/log.cjs semantic-reconcile --project=. --change=<name>`,根据诊断修复缺号、重号和悬空引用。
210
+ - reconcile 必须在 change 目录生成 `openspec/changes/<name>/artifacts/spec.ontology.json` 或 `openspec/changes/<name>/artifacts/specs/<capability>/spec.ontology.json`;该 JSON 是 draft 工作事实,不得等待 check/archive 才生成。
211
+ - 阶段 `stage_end` 会在无 Hook 环境下幂等执行同步兜底,并返回 `semantic_state.artifact_json_paths`。
212
+
179
213
  ## Guardrails
180
214
 
181
215
  > 完整 ⛔ 强制项勾选清单见 `./checklist.md`「Guardrails ⛔ 强制项」。核心红线:
@@ -17,6 +17,7 @@ description: opsx-spec 的阶段强制检查点与自检清单。仅在执行 sp
17
17
  - [ ] 即使用户提供代码作为上下文,只用于分析现有实现,不执行任何代码操作
18
18
  - [ ] 代码实现将在 `/opsx-apply` 阶段进行
19
19
  - [ ] ⛔ 完成本阶段后绝对禁止自动继续执行 design/task 等后续阶段
20
+ - [ ] 工程知识库未配置、超时或降级时继续 Spec 主流程,不阻塞本地创作
20
21
 
21
22
  ---
22
23
 
@@ -30,6 +31,9 @@ description: opsx-spec 的阶段强制检查点与自检清单。仅在执行 sp
30
31
  - [ ] 技术契约章节完整(数据模型、接口契约)
31
32
  - [ ] 文档末尾包含质量红线检查清单
32
33
  - [ ] 100% 覆盖 proposal.md 中该 Capability 的描述
34
+ - [ ] 已消费工程知识库 `answeredQuestions`,没有重复询问历史事实已经回答的问题
35
+ - [ ] 仅将 `reuseMode=INHERIT` 的事实作为身份继承;`REFERENCE` 候选使用新实体身份
36
+ - [ ] 已处理与当前 Capability 有关的 `clarificationQuestions`
33
37
 
34
38
  **如有任意一项未满足,重新生成对应章节,直至全部通过。** 自检完成后必须输出结构化自检报告(模板见 `./reference.md`「§7 质量自检报告模板」),未通过项自动修复后重新输出。
35
39
 
@@ -42,5 +46,6 @@ description: opsx-spec 的阶段强制检查点与自检清单。仅在执行 sp
42
46
  - [ ] **需求项格式必须正确**:`####` 需求项、`#####` 场景
43
47
  - [ ] 每个需求项必须有清晰的验收标准
44
48
  - [ ] 技术契约必须可执行、无歧义
49
+ - [ ] 工程知识库结果只作为 advisory 上下文,不覆盖用户输入或 proposal.md
45
50
  - [ ] ⛔ **阶段边界**:禁止执行任何代码创建/修改操作
46
51
  - [ ] ⛔ **单阶段原则**:完成 spec.md 后必须立即停止;仅提示用户下一步可运行 `/opsx-design`,绝对禁止自动执行 design/task 等后续阶段。每个阶段必须由用户主动触发。
@@ -193,6 +193,17 @@ Simple 模式或单文件能力域下,**不要拆成多个同文件任务**。
193
193
 
194
194
  ---
195
195
 
196
+ ## 本体语义生成契约
197
+
198
+ - 写入与当前 spec/design 一致的 `capability-id`。
199
+ - 每个任务必须使用 `TASK-<CAPABILITY>-NNN`;新增前按当前最大序号 + 1 分配,已有任务不得改 ID。
200
+ - 每个 TASK 必须同时写 `entity-id`、`version-id` 和 `delta-state`;新增任务调用 `semantic-identity --delta-state=added`,不得复用其他任务 UUID。
201
+ - 每个 TASK 必须写 `**implements**: DES-*` 或 `**covers**: STMT-*`,不得生成无上游来源任务。
202
+ - 任务依赖必须写 `**dependsOn**: TASK-*`;无依赖显式写“无”,所有依赖必须构成 DAG。
203
+ - 生成结束后必须运行 `node skywalk-sdd/log.cjs semantic-reconcile --project=. --change=<name>`。
204
+ - reconcile 必须立即生成 `openspec/changes/<name>/artifacts/.../tasks.ontology.json`,包含 TASK、implements/covers/dependsOn 及原文 source;不得推迟到 check/archive。
205
+ - 阶段 `stage_end` 会在无 Hook 环境下幂等执行同步兜底。
206
+
196
207
  ## Guardrails
197
208
 
198
209
  > 完整 ⛔ 强制项勾选清单见 `./checklist.md`「Guardrails ⛔ 强制项」。核心红线: