kld-sdd 2.6.13 → 2.6.15
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/README.md +16 -12
- package/kld-sdd-guide.html +4 -5
- package/lib/init.js +14 -11
- package/package.json +2 -2
- package/skywalk-sdd/index.cjs +936 -109
- package/skywalk-sdd/metrics-v3.cjs +103 -15
- package/skywalk-sdd/ontology/archive-package.cjs +6 -0
- package/skywalk-sdd/ontology/identity-index.cjs +9 -2
- package/skywalk-sdd/ontology/ontology-paths.cjs +73 -0
- package/skywalk-sdd/ontology/runtime.cjs +32 -22
- package/skywalk-sdd/ontology/structural-identity.cjs +11 -2
- package/skywalk-sdd/ontology/traceability-validator.cjs +16 -8
- package/skywalk-sdd/ontology/working-artifacts.cjs +2 -1
- package/skywalk-sdd/reporting/change-report-markdown.cjs +294 -0
- package/skywalk-sdd/reporting/change-report-model.cjs +452 -0
- package/skywalk-sdd/reporting/change-report-renderer.cjs +349 -0
- package/skywalk-sdd/reporting/change-report-view-model.cjs +340 -0
- package/skywalk-sdd/runtime-metadata.cjs +21 -0
- package/templates/skills/kld-sdd/opsx-apply/reference.md +4 -2
- package/templates/skills/kld-sdd/opsx-archive/SKILL.md +1 -1
- package/templates/skills/kld-sdd/opsx-archive/checklist.md +1 -1
- package/templates/skills/kld-sdd/opsx-check/SKILL.md +2 -2
- package/templates/skills/kld-sdd/opsx-check/checklist.md +1 -1
- package/templates/skills/kld-sdd/opsx-kb-ingest/SKILL.md +14 -0
- package/templates/skills/kld-sdd/opsx-ontology-query/SKILL.md +31 -0
- package/templates/skills/kld-sdd/opsx-propose/SKILL.md +6 -6
- package/templates/skills/kld-sdd/opsx-propose/reference.md +6 -7
- package/templates/skills/kld-sdd/opsx-spec/SKILL.md +1 -1
- package/templates/skills/kld-sdd/tdd-core/reference.md +3 -1
- package/templates/skills/kld-sdd/tdd-rules/rules/test-skeleton-telemetry.md +1 -1
package/README.md
CHANGED
|
@@ -69,7 +69,7 @@ node skywalk-sdd/log.cjs semantic-status --project=. --change=<name>
|
|
|
69
69
|
node skywalk-sdd/log.cjs semantic-observe --project=. --change=<name>
|
|
70
70
|
```
|
|
71
71
|
|
|
72
|
-
`propose/spec/design/task` 在文档写入完成时就必须同步工作态 JSON,不等待 Check 或 Archive。各阶段的 `stage_end` 会自动执行一次 reconcile 作为无 Hook 环境的兜底;Skill 中的显式 `semantic-reconcile` 与该兜底幂等。每份 Markdown 的结构化结果写入 `openspec/changes/<name>/artifacts/<原相对路径>.ontology.json
|
|
72
|
+
`propose/spec/design/task` 在文档写入完成时就必须同步工作态 JSON,不等待 Check 或 Archive。各阶段的 `stage_end` 会自动执行一次 reconcile 作为无 Hook 环境的兜底;Skill 中的显式 `semantic-reconcile` 与该兜底幂等。每份 Markdown 的结构化结果写入 `openspec/changes/<name>/artifacts/<原相对路径>.ontology.json`,聚合索引与全量工作态写入 `openspec/changes/<name>/ontology/`(含 `artifact-index.json`、`working-ontology.json` 等);这些文件随 change 目录一起提交和归档。`skywalk-sdd/state/ontology/` 仅保留 revision 指针与跨进程锁,默认不提交。
|
|
73
73
|
|
|
74
74
|
工作态 JSON 使用 `kld-sdd-working-artifact-facts/v1`,明确标记 `canonical=false` 和 `review_status=draft|pending`。它用于当前 Change 的渐进式展开、定向查询和跨文档校验,不能直接入知识库。Check 重新解析原文、校验并在全部通过时生成 pending revision;Archive 再次对账后才确认、转换为 `canonical-facts.json` 并打包。
|
|
75
75
|
|
|
@@ -83,7 +83,7 @@ node skywalk-sdd/log.cjs semantic-observe --project=. --change=<name>
|
|
|
83
83
|
| `full` | 强制 STMT→AC→Design→Task 全链和 Task DAG |
|
|
84
84
|
| `strict` | 在 full 基础上要求完整语义来源 |
|
|
85
85
|
|
|
86
|
-
同一 Change 的作者阶段同步、observe、reconcile、check 和 archive 共用跨进程事务锁。`working-ontology.json`、diagnostics、file index、artifact index 及所有分文件 JSON 在 change 目录内原子提交,随后切换 `skywalk-sdd/state/ontology/<change>/current.json` 指针;读取时会拒绝任一文件缺失或 revision 撕裂。
|
|
86
|
+
同一 Change 的作者阶段同步、observe、reconcile、check 和 archive 共用跨进程事务锁。`ontology/working-ontology.json`、diagnostics、file index、artifact index 及所有分文件 JSON 在 change 目录内原子提交,随后切换 `skywalk-sdd/state/ontology/<change>/current.json` 指针;读取时会拒绝任一文件缺失或 revision 撕裂。
|
|
87
87
|
|
|
88
88
|
Archive 使用两阶段事务:先复制到 staging,从 staging 重新解析正文并生成本体快照、canonical facts、转换报告和 v2 manifest,所有步骤成功后才切换为正式 archive。归档完成后同时生成相邻的 `<日期>-<name>.zip`,其中 `archive-manifest.json` 的文件清单和 SHA-256 必须精确覆盖包内文件,可直接交给知识库消费。语义校验、快照、协议转换、打包或 Spec 同步失败时,活动 Change 会保留或恢复,不留下伪 confirmed 半成品。
|
|
89
89
|
|
|
@@ -104,24 +104,26 @@ npx kld-sdd
|
|
|
104
104
|
|
|
105
105
|
初始化完成后,打开你的 AI 编辑器,激活 `opsx-*` skills 开始工作。
|
|
106
106
|
|
|
107
|
-
### 提效评估报告(SkyWalk
|
|
107
|
+
### 提效评估报告(SkyWalk;单次变更为 v4)
|
|
108
108
|
|
|
109
|
-
归档与独立 `report
|
|
109
|
+
归档与独立 `report --change=` 会基于同一 Report Model 生成 Markdown / HTML / JSON 三份同源产物(`schema_version=sdd-efficiency-report/v4`,指标契约 `4.0`)。**仅 change 级**破坏性删除公开 `legacy_metrics`、无折叠兼容附录;变更类型仅 `config|transaction|report|composite`。单次变更 HTML 使用桌面方案 A,只展示当前 change 的四个页签:概览、指标与阶段、问题与证据、产物与追溯,不混入跨变更趋势。
|
|
110
|
+
|
|
111
|
+
`--period=biweekly|monthly` 等**项目/周期报告**仍使用既有长模板(可含历史兼容附录)。若要对 project 级同步去 legacy,须另开 change,勿在本发行中半迁移。
|
|
110
112
|
|
|
111
113
|
报告中的业务名称优先于缩写:E1=每个验收场景平均用时,Q3=规约检查得分,P4=编码前检查覆盖,P-R=标准阶段重复次数,P-H=执行记录完整度。标准测量阶段固定为 propose、spec、design、task、check、apply、archive;test、explore 是辅助阶段,可展示但不进入效率分母。
|
|
112
114
|
|
|
113
115
|
```bash
|
|
114
|
-
# 单变更报告(默认 html;可指定 markdown/json
|
|
116
|
+
# 单变更报告(默认 html;可指定 markdown/json)→ v4
|
|
115
117
|
node skywalk-sdd/log.cjs report --project=. --change=<name> --format=json --output=reports/demo.json
|
|
116
118
|
|
|
117
|
-
# 双周 /
|
|
119
|
+
# 双周 / 月度周期对比(需完整窗口)→ 仍为项目级模板
|
|
118
120
|
node skywalk-sdd/log.cjs report --project=. --period=biweekly --date-from=YYYY-MM-DD --date-to=YYYY-MM-DD
|
|
119
121
|
node skywalk-sdd/log.cjs report --project=. --period=monthly --date-from=YYYY-MM-DD --date-to=YYYY-MM-DD
|
|
120
122
|
```
|
|
121
123
|
|
|
122
124
|
`propose` 须确认 `change-type`;所有阶段必须显式携带 change,历史 general 事件只能通过 `scope_link` 归属。`check_result` 应携带 reviewer 独立性与 warning 处置元数据;归档 `archive_result` 只列真实写入成功的 `report_path` / `report_html_path` / `report_json_path`。
|
|
123
125
|
|
|
124
|
-
任务采用两个不可混淆的口径:“文档完成度”来自 tasks checkbox,“事件可追溯度”来自严格 task/test
|
|
126
|
+
任务采用两个不可混淆的口径:“文档完成度”来自 tasks checkbox,“事件可追溯度”来自严格 task/test 证据。问题同时显示“类别数”和“规则命中次数”;指标同时显示“可计算性”和“可信度”。change 级主视图不再渲染旧 E4/P1/P2/Q5;上述旧指标若仍出现,只可能在**项目级**兼容附录中。
|
|
125
127
|
|
|
126
128
|
---
|
|
127
129
|
|
|
@@ -286,11 +288,13 @@ your-project/
|
|
|
286
288
|
│ └── changes/
|
|
287
289
|
│ └── <name>/
|
|
288
290
|
│ ├── proposal.md
|
|
289
|
-
│ ├──
|
|
290
|
-
│ ├──
|
|
291
|
-
│ ├──
|
|
292
|
-
│ ├──
|
|
293
|
-
│ ├──
|
|
291
|
+
│ ├── ontology/
|
|
292
|
+
│ │ ├── working-ontology.json
|
|
293
|
+
│ │ ├── artifact-index.json
|
|
294
|
+
│ │ ├── diagnostics.json
|
|
295
|
+
│ │ ├── file-index.json
|
|
296
|
+
│ │ ├── ontology-identities.json
|
|
297
|
+
│ │ └── continuity-resolution.json
|
|
294
298
|
│ └── artifacts/
|
|
295
299
|
│ ├── proposal.ontology.json
|
|
296
300
|
│ └── specs/<capability>/
|
package/kld-sdd-guide.html
CHANGED
|
@@ -680,7 +680,7 @@ npx kld-sdd --version">复制</button>
|
|
|
680
680
|
<div class="top"><span class="idx">01</span><h3>opsx-propose <span class="arg"><变更名称></span></h3><span class="role">Why · 业务意图</span></div>
|
|
681
681
|
<p>创建业务意图文档,明确“为什么做”。除痛点、目标、影响模块与约束外,还会让你确认 <b>Full / Simple 模式、测试策略和 change-type</b>(config / document / report / composite / other),并写入稳定的 <code>change-id</code>。</p>
|
|
682
682
|
<p>若提供 REQ / FEAT 外部编号,会通过 <code>opsx-ontology-query</code> 做 Continuity 查询,识别新增、延续或迭代能力;不会把本地 archive 当成跨迭代权威。</p>
|
|
683
|
-
<div class="out">proposal.md + artifacts/proposal.ontology.json + working-ontology.json</div>
|
|
683
|
+
<div class="out">proposal.md + artifacts/proposal.ontology.json + ontology/working-ontology.json</div>
|
|
684
684
|
</div>
|
|
685
685
|
|
|
686
686
|
<div class="skill reveal" id="sk-spec" style="border-left-color:#38bdf8">
|
|
@@ -824,7 +824,7 @@ npx kld-sdd --version">复制</button>
|
|
|
824
824
|
<article class="feature-card reveal">
|
|
825
825
|
<div class="eyebrow">Materialize</div>
|
|
826
826
|
<h3>写完即生成工作态事实</h3>
|
|
827
|
-
<p>propose/spec/design/task 每次写入后立即 reconcile,产出 <code>artifacts/**/*.ontology.json</code>、<code>artifact-index.json</code> 与 <code>working-ontology.json</code>,状态为 draft/pending,尚不能直接入库。</p>
|
|
827
|
+
<p>propose/spec/design/task 每次写入后立即 reconcile,产出 <code>artifacts/**/*.ontology.json</code>、<code>ontology/artifact-index.json</code> 与 <code>ontology/working-ontology.json</code>,状态为 draft/pending,尚不能直接入库。</p>
|
|
828
828
|
</article>
|
|
829
829
|
<article class="feature-card reveal">
|
|
830
830
|
<div class="eyebrow">Traceability</div>
|
|
@@ -913,9 +913,8 @@ node skywalk-sdd/log.cjs semantic-observe --project=. --change=add-user-auth">
|
|
|
913
913
|
│ │ ├── <span class="file">proposal.md</span> <span class="cmt"># mode / change-id / change-type / test-strategy</span>
|
|
914
914
|
│ │ ├── <span class="dir">specs/<capability>/</span> <span class="cmt"># Full:spec / design / tasks</span>
|
|
915
915
|
│ │ ├── <span class="file">spec · design · tasks.md</span> <span class="cmt"># Simple:根目录三文档</span>
|
|
916
|
-
│ │ ├── <span class="
|
|
917
|
-
│ │ ├── <span class="dir">
|
|
918
|
-
│ │ ├── <span class="dir">ontology-identities/ · artifacts/**/*.ontology.json</span>
|
|
916
|
+
│ │ ├── <span class="dir">ontology/</span> <span class="cmt"># working-ontology · artifact-index · diagnostics · file-index · identities · continuity-resolution</span>
|
|
917
|
+
│ │ ├── <span class="dir">artifacts/**/*.ontology.json</span>
|
|
919
918
|
│ │ └── <span class="file">logs/execution-log.md</span>
|
|
920
919
|
│ └── <span class="dir">archive/</span>
|
|
921
920
|
│ ├── <span class="dir"><date>-<name>/</span>
|
package/lib/init.js
CHANGED
|
@@ -831,24 +831,22 @@ function deployTelemetryDataDir(targetCwd = process.cwd()) {
|
|
|
831
831
|
console.log(` ⚠️ V3 指标模块源文件缺失: ${metricsV3Src}(report/metrics 可能无法加载 metrics-v3)`);
|
|
832
832
|
}
|
|
833
833
|
|
|
834
|
-
const
|
|
834
|
+
const packageVersion = require(path.join(pkgPath, 'package.json')).version;
|
|
835
835
|
const runtimeMetadataDst = path.join(dataDir, 'runtime-metadata.cjs');
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
version: packageVersion,
|
|
843
|
-
}, null, 2)}\n`, 'utf8');
|
|
844
|
-
console.log(` ✓ 部署 kld-sdd 运行时身份(${packageVersion})`);
|
|
845
|
-
}
|
|
836
|
+
fs.writeFileSync(
|
|
837
|
+
runtimeMetadataDst,
|
|
838
|
+
`'use strict';\nmodule.exports = { resolveRuntimeMetadata() { return { version: '${packageVersion}', producer: 'kld-sdd@${packageVersion}' }; } };\n`,
|
|
839
|
+
'utf8',
|
|
840
|
+
);
|
|
841
|
+
console.log(` ✓ 部署 kld-sdd 运行时身份(${packageVersion})`);
|
|
846
842
|
|
|
847
843
|
const reportingSrc = path.join(pkgPath, 'skywalk-sdd', 'reporting');
|
|
848
844
|
const reportingDst = path.join(dataDir, 'reporting');
|
|
849
845
|
if (fs.existsSync(reportingSrc)) {
|
|
850
846
|
copyDir(reportingSrc, reportingDst);
|
|
851
847
|
console.log(' ✓ 部署 skywalk-sdd/reporting/(V3 单次变更报告)');
|
|
848
|
+
} else {
|
|
849
|
+
throw new Error(`E_INIT_MISSING_CRITICAL: reporting/ 目录缺失: ${reportingSrc}(归档报告生成将失败)`);
|
|
852
850
|
}
|
|
853
851
|
|
|
854
852
|
const contextClientSrc = path.join(pkgPath, 'skywalk-sdd', 'context-client.cjs');
|
|
@@ -874,6 +872,8 @@ function deployTelemetryDataDir(targetCwd = process.cwd()) {
|
|
|
874
872
|
if (fs.existsSync(worktreeFinishSrc)) {
|
|
875
873
|
fs.copyFileSync(worktreeFinishSrc, worktreeFinishDst);
|
|
876
874
|
console.log(' ✓ 部署 skywalk-sdd/apply-worktree-finish.cjs(Apply 收尾脚本)');
|
|
875
|
+
} else {
|
|
876
|
+
console.log(' ⚠️ apply-worktree-finish.cjs 源文件缺失,Apply 阶段收尾需要手动执行');
|
|
877
877
|
}
|
|
878
878
|
|
|
879
879
|
const openspecShimSrc = path.join(pkgPath, 'skywalk-sdd', 'openspec-shim.cjs');
|
|
@@ -881,12 +881,15 @@ function deployTelemetryDataDir(targetCwd = process.cwd()) {
|
|
|
881
881
|
if (fs.existsSync(openspecShimSrc)) {
|
|
882
882
|
fs.copyFileSync(openspecShimSrc, openspecShimDst);
|
|
883
883
|
console.log(' ✓ 部署 skywalk-sdd/openspec-shim.cjs(openspec 包裹包路径 shim)');
|
|
884
|
+
} else {
|
|
885
|
+
console.log(' ⚠️ openspec-shim.cjs 源文件缺失,openspec 命令需要手动 cd 到 spec 包执行');
|
|
884
886
|
}
|
|
885
887
|
|
|
886
888
|
console.log(' ✓ 调用方式: node skywalk-sdd/log.cjs start|end|metrics|semantic-identity|semantic-reconcile|semantic-check');
|
|
887
889
|
console.log(' ✓ openspec: node skywalk-sdd/openspec-shim.cjs list(自动 cd 到 *-sdd-specs)');
|
|
888
890
|
console.log(' ✓ Spec Context: node skywalk-sdd/context-client.cjs --query="<自然语言需求>" --target-stage=spec');
|
|
889
891
|
console.log(' ✓ Apply worktree: record-base 在 §1.5;收尾 apply-worktree-finish.cjs --change=<name>');
|
|
892
|
+
console.log(' ℹ️ project-identity.json 将在首次配置 KB(opsx-ontology-query)时自动创建');
|
|
890
893
|
console.log('✅ Telemetry 已就绪(数据存储在 skywalk-sdd/,无需配置 MCP)');
|
|
891
894
|
return true;
|
|
892
895
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kld-sdd",
|
|
3
|
-
"version": "2.6.
|
|
3
|
+
"version": "2.6.15",
|
|
4
4
|
"description": "KLD SDD OpenSpec 项目初始化工具 - 一键部署 SDD skills",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"kld-sdd-init": "bin/kld-sdd-init.js"
|
|
9
9
|
},
|
|
10
10
|
"scripts": {
|
|
11
|
-
"test": "node test/external-key.cjs && node test/change-key.cjs && node test/modules-and-sdd-config.cjs && node test/active-changes.cjs && node test/hook-layouts.cjs && node test/spec-package-init.cjs && node test/workspace-layout.cjs && node test/ontology-release-blockers.cjs && node test/ontology-semantic-core.cjs && node test/ontology-identity-versioning.cjs && node test/ontology-identity-continuity.cjs && node test/ontology-state-transaction.cjs && node test/ontology-process-concurrency.cjs && node test/ontology-observer-convergence.cjs && node test/ontology-working-runtime.cjs && node test/ontology-stage-materialization.cjs && node test/ontology-template-contract.cjs && node test/ontology-cli-archive.cjs && node test/archive-package-producer.cjs && node --test test/change-report-correctness.cjs test/report-metrics-correctness.cjs test/change-report-model-ui.cjs && node test/validate-skills-bundle.cjs && node test/tool-profiles.cjs && node test/settings-merge.cjs && node test/command-bridge.cjs && node test/codebuddy-hooks.cjs && node test/skill-content-contract.cjs && node test/init-agent-profiles.cjs && node test/init-report-runtime.cjs"
|
|
11
|
+
"test": "node test/external-key.cjs && node test/change-key.cjs && node test/modules-and-sdd-config.cjs && node test/active-changes.cjs && node test/hook-layouts.cjs && node test/spec-package-init.cjs && node test/workspace-layout.cjs && node test/ontology-release-blockers.cjs && node test/ontology-semantic-core.cjs && node test/ontology-identity-versioning.cjs && node test/ontology-identity-continuity.cjs && node test/ontology-state-transaction.cjs && node test/ontology-process-concurrency.cjs && node test/ontology-observer-convergence.cjs && node test/ontology-working-runtime.cjs && node test/ontology-stage-materialization.cjs && node test/ontology-template-contract.cjs && node test/ontology-cli-archive.cjs && node test/archive-package-producer.cjs && node --test test/evidence-integrity-oracle.cjs test/evidence-integrity-wiring.cjs test/change-report-correctness.cjs test/report-metrics-correctness.cjs test/change-report-model-ui.cjs && node test/validate-skills-bundle.cjs && node test/tool-profiles.cjs && node test/settings-merge.cjs && node test/command-bridge.cjs && node test/codebuddy-hooks.cjs && node test/skill-content-contract.cjs && node test/init-agent-profiles.cjs && node test/init-report-runtime.cjs"
|
|
12
12
|
},
|
|
13
13
|
"keywords": [
|
|
14
14
|
"kld",
|