dsh-standards 1.2.0 → 1.2.2

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 (36) hide show
  1. package/40-checker/README.md +8 -3
  2. package/40-checker/bin/dsh-levels.mjs +7 -1
  3. package/40-checker/scripts/flow-collect.mjs +140 -21
  4. package/40-checker/scripts/level-audit.mjs +43 -5
  5. package/40-checker/scripts/run-tests.mjs +21 -0
  6. package/40-checker/src/flow-evidence.mjs +107 -2
  7. package/40-checker/src/index.mjs +1 -1
  8. package/40-checker/src/remediation.mjs +14 -9
  9. package/40-checker/src/sandbox-run.mjs +403 -0
  10. package/CHANGELOG.md +8 -1
  11. package/README.en.md +347 -0
  12. package/README.es.md +347 -0
  13. package/README.hi.md +347 -0
  14. package/README.md +295 -82
  15. package/README.pt.md +347 -0
  16. package/docs/assets/dsh-standards-flow-dark.svg +38 -0
  17. package/docs/assets/dsh-standards-flow-light.svg +38 -0
  18. package/package.json +2 -3
  19. package/spec/flow/README.md +21 -4
  20. package/spec/flow-evidence.schema.json +73 -3
  21. package/40-checker/test/attestation.test.mjs +0 -59
  22. package/40-checker/test/checks.test.mjs +0 -414
  23. package/40-checker/test/claim.test.mjs +0 -28
  24. package/40-checker/test/client-shape.test.mjs +0 -35
  25. package/40-checker/test/dco.test.mjs +0 -51
  26. package/40-checker/test/entry-validate.test.mjs +0 -172
  27. package/40-checker/test/flow-evidence.test.mjs +0 -295
  28. package/40-checker/test/governance.test.mjs +0 -76
  29. package/40-checker/test/label.test.mjs +0 -97
  30. package/40-checker/test/level-audit.test.mjs +0 -99
  31. package/40-checker/test/levels.test.mjs +0 -31
  32. package/40-checker/test/ops.test.mjs +0 -117
  33. package/40-checker/test/permissions.test.mjs +0 -40
  34. package/40-checker/test/remediation.test.mjs +0 -300
  35. package/40-checker/test/semver.test.mjs +0 -32
  36. package/40-checker/test/verify.test.mjs +0 -57
package/README.md CHANGED
@@ -1,27 +1,67 @@
1
- > **Execution home.** `dsh-standards` is the public execution umbrella for the
2
- > three DSH layers: it ships the conformance checker, the level audit, and the
3
- > canonical specification files. The prose guide is
4
- > **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)**; the
5
- > low-level rule text remains in
6
- > **[dsh-plugin-spec](https://github.com/PerryLink/dsh-plugin-spec)**.
7
- > The old npm reservation (`dsh-standards@0.0.3`) is replaced by this 1.x line.
1
+ <div align="center">
2
+
3
+ <picture>
4
+ <source media="(prefers-color-scheme: dark)" srcset="docs/assets/dsh-standards-flow-dark.svg">
5
+ <img src="docs/assets/dsh-standards-flow-light.svg" width="100%" alt="dsh-standards 流程:插件目录 → dsh-standards(DSC-01…13 静态)→ L1–L3 运行时 → 报告(text/json/sarif、exit 0|1|2|3)→ dsh-levels(ENTRY / FLOW / BOOST)">
6
+ </picture>
8
7
 
9
8
  # dsh-standards
10
9
 
11
- > **非官方、非认证、非安全审计。** 这是 DSH 插件规范与实践草稿(canonical: dsh-standards),不代表 DeepSeek 官方背书。
12
- > `"DeepSeek Harness"` 是 DeepSeek 的商标;本项目只使用 `DSH` 缩写。
13
- >
14
- > ⚠️ **修改必须说明**:复制或修改本仓文本时,必须在显著位置给出 Change Notice(来源 commit、改了哪个章节、改了什么、为什么、日期)。见 [`MODIFICATION-POLICY.md`](MODIFICATION-POLICY.md)。
10
+ **把 DSH 插件的兼容性、可用性与提效证据一次查清楚——静态不冒充运行时,`not-run` 不算 PASS。**
15
11
 
16
- 一个项目,三层采用深度:
12
+ 三层采用深度(ENTRY 入门 / FLOW 顺畅 / BOOST 加速)的执行总部:检查器、等级审计与规范正文都在这个仓;散文指南在 [dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide),底层条款正文在 [dsh-plugin-spec](https://github.com/PerryLink/dsh-plugin-spec)。
17
13
 
18
- | 层 | 规范/实践 | 当前状态 |
19
- |---|---|---|
20
- | 1 | **DSH-ENTRY 入门规范** | 18/18 `recognized`;base-only 10/18 有 runtime 证据(8 clean + 2 reject);real web profile 16/18 无告警、2 个 host-gate reject(自评,无独立复核);client 15/15 loaded;18/18 clean 未达成 |
21
- | 2 | **DSH-FLOW 顺畅规范** | draft;fixture 上 J1/J2/J4/J6 **12 PASS**;J3/J7 fixture runtime;J5/J8 static preflight;10 个真实包 **78 PASS / 4 FAIL / 2 blocked / 66 not-run** |
22
- | 3 | **DSH-BOOST 加速实践** | draft;LEV-1–8 **8/8 measured**(loader / context / provider-capture / synthetic timer;非生产基线) |
14
+ [安装](#三步上手) · [配置](#配置) · [FAQ](#faq) · [简体中文](README.md) · [English](README.en.md) · [Español](README.es.md) · [Português](README.pt.md) · [हिन्दी](README.hi.md)
15
+
16
+ [![License](https://img.shields.io/badge/license-Apache--2.0%20%2B%20CC--BY--4.0-3366CC?style=flat-square&labelColor=2B3245)](LICENSE)
17
+ [![npm](https://img.shields.io/npm/v/dsh-standards?style=flat-square&labelColor=2B3245&color=CB3837)](https://www.npmjs.com/package/dsh-standards)
18
+ [![Node](https://img.shields.io/badge/node-%3E%3D24.9.0-339933?style=flat-square&labelColor=2B3245)](#三步上手)
19
+
20
+ [![Stars](https://img.shields.io/github/stars/PerryLink/dsh-standards?style=flat-square&labelColor=2B3245)](https://github.com/PerryLink/dsh-standards/stargazers)
21
+ [![npm downloads](https://img.shields.io/npm/dm/dsh-standards?style=flat-square&labelColor=2B3245&color=CB3837)](https://www.npmjs.com/package/dsh-standards)
22
+ [![Gitee](https://img.shields.io/badge/Gitee-mirror-C71D23?style=flat-square&labelColor=2B3245&logo=gitee)](https://gitee.com/perrylink/dsh-standards)
23
+
24
+ ```sh
25
+ npm i -g dsh-standards # 全局:dsh-standards + dsh-levels
26
+ npx dsh-standards <plugin-dir> --scope entry --entry-claim static # 或不装,直接用 npx
27
+ ```
28
+
29
+ </div>
30
+
31
+ <sub>社区项目,与 DeepSeek 官方无关:非官方、非认证、非安全审计,不代表官方背书。`DeepSeek Harness` 是 DeepSeek 的商标,本项目只使用 `DSH` 缩写。唯一仓库:<https://github.com/PerryLink/dsh-standards>(Gitee 为镜像)。</sub>
32
+
33
+ ## 它是什么
34
+
35
+ 这个仓不写插件。它给插件定尺子,然后替你去量。
36
+
37
+ DSH 插件的采用深度分三层,每层一个问题、一套证据状态,**不合并成一个分数**:
38
+
39
+ | 层 | 规范/实践 | 回答什么问题 | 当前状态 |
40
+ |---|---|---|---|
41
+ | 1 | **DSH-ENTRY 入门规范** | 现有插件能否不改代码就被识别、安装、启动? | 18/18 `recognized`;base-only 10/18 有 runtime 证据(8 clean + 2 reject);real web profile 16/18 无告警、2 个 host-gate reject(自评,无独立复核);client 15/15 loaded;18/18 clean 未达成 |
42
+ | 2 | **DSH-FLOW 顺畅规范** | 用户能否安装、配置、使用、恢复、升级、卸载而不出意外? | draft;fixture 上 J1/J2/J4/J6 **12 PASS**;J3/J7 fixture runtime;J5/J8 static preflight;10 个真实包 **78 PASS / 4 FAIL / 2 blocked / 66 not-run** |
43
+ | 3 | **DSH-BOOST 加速实践** | 插件是否用 Cordis 原语(effect、inject、volatile、事件、seam、job、有界并行)让开发和使用可测量地更省? | draft;LEV-1–8 **8/8 measured**(loader / context / provider-capture / synthetic timer;非生产基线) |
44
+
45
+ 仓里就三样东西:`40-checker/`(DS-C 一致性检查器与全部证据脚本)、`bin/`(两个公开入口 `dsh-standards` 与 `dsh-levels`),以及 `spec/` 与 `31`–`35` 号规范正文。工具只读目标包,不改被检对象;结论只认证据,`not-run`、`NA`、`static` 都不会被写成 PASS。
46
+
47
+ npm 上的旧占位 `dsh-standards@0.0.3` 只是名字预留,这条 1.x 线取代了它(当前 `1.1.2`);两个 bin 分别叫 `dsh-standards` 与 `dsh-levels`。
48
+
49
+ 固定锚点(写在 `spec/levels.json` 与报告里):`repo=deepseek-ai/deepseek-harness`、`commit=ce7073d51254`、`dsh=0.2.2-alpha.2`、`cordis=4.0.6-alpha.1`。换运行时版本要显式传参,报告会记下你量的是哪一版。
50
+
51
+ ### 当前硬数据
52
+
53
+ - 18 包 entry static:**18/18 recognized,0 clean**;
54
+ - 18 包 DS-C static:**0 PASS / 9 WARN / 9 FAIL**;
55
+ - 18 包 base-only runtime:**18/18 有原始 JSON;10/18 G3 verified,8 partial,0 error**;host gate 后 **8 clean + 2 reject + 8 partial**;
56
+ - client runtime:**15/15 `client-module-loaded`**(真实 Chromium);web-app **4/4 loaded**;
57
+ - 不可用:**0 plugin code FAIL;2 host-gate reject(telemetry/verification)**;
58
+ - 检查器自测:**128/128 tests**(本地 `node --test 40-checker/test/*.test.mjs`;含治理、DCO、评价记录、声明、验真、链、漂移测试);
59
+ - J1:**6 PASS + 1 WARN**;LEV-3:volatile **0/20** vs control **20/20** remount;LEV-6:稳定 prefix **100%** vs 易变 **0%**;LEV-7:**8.24×**(合成,非生产基线)。
23
60
 
24
- ## 先看什么
61
+ 这些数字是自评与仓内证据链的输出,不是第三方复核结论——报告里的 `notClaimed` 字段会把「官方标准、认证、安全审计、排名、生产基线」逐条列出来。
62
+
63
+ <details>
64
+ <summary>文档地图:新会话从这里进(51 篇规范 / 研究 / 画像 / 沟通包)</summary>
25
65
 
26
66
  - [START-HERE](START-HERE.md) — 新会话先读的一页入口
27
67
  - [51-新会话操作手册](51-新会话操作手册.md) — 仓库地图、命令、权限、常见坑
@@ -38,67 +78,100 @@
38
78
  - [39-五工具定位与贡献](39-五工具定位与贡献.md) — guide/doctor/cert/portal/catalog 的角色
39
79
  - [40-五工具全面转向方案](40-五工具全面转向方案.md) — 以三层为主轴的迁移计划
40
80
  - [42-标准体系缺口](42-标准体系缺口-认证检验认可.md) — 认证/检验/认可/监督还差什么
41
- - [43-缺口总账与 AI 可执行方案](43-缺口总账与AI可执行方案.md) — **全部缺口、AI/Human/模板/删除裁决、90 天 P0–P3**
42
- - [44-角色治理与贡献机制](44-角色治理与贡献机制.md) — **角色阶梯、DCO+DCT(CLA 式)、COI、申诉、AI 职员**
43
- - [45-三用途落地](45-三用途落地-官方市场开发者.md) — **官方前沿探索 / 市场参考 / 开发者指南**
81
+ - [43-缺口总账与 AI 可执行方案](43-缺口总账与AI可执行方案.md) — 全部缺口、AI/Human/模板/删除裁决、90 天 P0–P3
82
+ - [44-角色治理与贡献机制](44-角色治理与贡献机制.md) — 角色阶梯、DCO+DCT(CLA 式)、COI、申诉、AI 职员
83
+ - [45-三用途落地](45-三用途落地-官方市场开发者.md) — 官方前沿探索 / 市场参考 / 开发者指南
44
84
  - [P0-P2 执行状态](P0-P2-STATUS.md) — 逐项 DONE / PARTIAL / REPLACED
45
85
  - [46-剩余事项与执行建议](46-剩余事项与执行建议.md) — 还差什么、先做什么、什么不做
46
86
  - [47-配套插件发布记录](47-配套插件发布记录-2026-11-02.md) — guide/doctor/kit/upgrade/cert-mcp 的 npm + Release
47
- - [48-配套包命名研究](48-配套包命名研究-2026-11-02.md) — dsh-* 占用情况与命名备选
87
+ - [48-配套包命名研究](48-配套包命名研究-2026-11-02.md) — `dsh-*` 占用情况与命名备选
48
88
  - [49-配套包改名迁移记录](49-配套包改名迁移记录-2026-11-02.md) — clinic / scaffold / primer / codemod 的新旧仓映射、指针与 deprecate
49
- - [50-新会话交接提示词](50-新会话交接提示词.md) — 无上下文新会话的启动提示词(不依赖旧会话)
89
+ - [50-新会话交接提示词](50-新会话交接提示词.md) — 无上下文新会话的启动提示词
50
90
  - [scheme/](scheme/SCHEME-v1.md) — A–E / A–D 评价方案与 rubric
51
91
  - [evidence/](evidence/README.md) — 追加式证据链与复跑说明
52
92
  - [97-采纳可行性评估](97-采纳可行性评估.md) — 官方路径、缺口、90 天
53
93
  - [98-内测群与官方沟通包](98-内测群与官方沟通包.md) — 对外话术
54
94
 
55
- ## 快速命令
95
+ </details>
56
96
 
57
- ```bash
58
- # Published umbrella (package `dsh-standards`)
59
- npx dsh-standards <plugin-dir> --scope entry --entry-claim static
60
- npx -p dsh-standards dsh-levels <dir> --format json
97
+ ## 三步上手
61
98
 
62
- # From a source checkout
63
- cd 40-checker
64
- node --test test/*.test.mjs
99
+ **1. 安装**(二选一,Node 需 `>=24.9.0`):
65
100
 
66
- # 只做结构识别(不声明运行)
67
- node 40-checker/bin/dsh-plugin-verify.mjs <plugin-dir> --scope entry --entry-claim static
101
+ ```sh
102
+ # npm 全局安装:之后 dsh-standards 与 dsh-levels 都在 PATH 上
103
+ npm i -g dsh-standards
104
+ # 或者完全不装,直接用 npx 跑
105
+ npx dsh-standards --version
106
+ npx -p dsh-standards dsh-levels --help
107
+ ```
68
108
 
69
- # 声明运行(bundle 需要 host)
70
- node 40-checker/bin/dsh-plugin-verify.mjs <bundle-dir> --scope entry \
71
- --host /path/to/@deepseek-ai/dsh-app-boot/lib/index.js
109
+ 没有构建步骤:`bin/` 与 `40-checker/` 就是发布产物。npx 第二个命令要写成 `-p dsh-standards`,因为 npm 上的 `dsh-levels` 与 `dsh-plugin-verify` 这两个裸名属于其他项目。
72
110
 
73
- # 三层自检(ENTRY 自动;FLOW/BOOST 证据文件)
74
- node bin/dsh-levels.mjs <dir> --format json
111
+ **2. 跑一次检查**(目标是一个含 `package.json` 的包目录):
75
112
 
76
- # J1 安装/卸载旅程
77
- node scripts/journey-runtime.mjs --package <dir> --json
113
+ ```sh
114
+ # 入门兼容性:静态识别,不声明运行时证据
115
+ dsh-standards ./my-plugin --scope entry --entry-claim static
78
116
 
79
- # 治理/贡献/评价记录检查
80
- node scripts/governance-check.mjs
81
- node scripts/attestation-check.mjs
82
- node scripts/claim-check.mjs
83
- node scripts/dco-check.mjs --range HEAD~1..HEAD
84
- node ../publish/verify.mjs --id DSH-ATT-2026-001
117
+ # DS-C 全量(默认 ds-c):JSON / SARIF 2.1.0 报告
118
+ dsh-standards ./my-plugin --format json --out report.json
119
+ dsh-standards ./my-plugin --format sarif --out report.sarif
85
120
 
86
- # LEV-7 有界并行基准
87
- cd ../examples/boost
88
- node lev7-bench.mjs 64 20
121
+ # 三层自检:ENTRY 自动跑;FLOW / BOOST 没证据文件就如实记 not-run / not-measured
122
+ dsh-levels ./my-plugin --format json --out audit.json
89
123
  ```
90
124
 
91
- ## 当前硬数据
125
+ **3. 看结论**——先看 exit code,再看 `status`:
92
126
 
93
- - 18 包 entry static:**18/18 recognized,0 clean**;
94
- - 18 包 DS-C static:**0 PASS / 9 WARN / 9 FAIL**;
95
- - 18 包 base-only runtime:**18/18 有原始 JSON;10/18 G3 verified,8 partial,0 error**;host gate 后 **8 clean + 2 reject + 8 partial**;
96
- - client runtime:**15/15 `client-module-loaded`**(真实 Chromium);web-app **4/4 loaded**;
97
- - 不可用:**0 plugin code FAIL;2 host-gate reject(telemetry/verification)**;
98
- - 检查器:**98/98 tests**(含治理/DCO/评价记录/声明/验真/链/漂移测试);
99
- - J1:**6 PASS + 1 WARN**;LEV-3:volatile **0/20** vs control **20/20** remount;LEV-6:稳定 prefix **100%** vs 易变 **0%**;LEV-7:**8.24×**(合成,非生产基线)。
127
+ ```text
128
+ 0 completed, no FAIL (PASS or WARN; WARN does not claim a clean PASS)
129
+ 1 completed, at least one FAIL
130
+ 2 incomplete: a mandatory check did not run, or the checker itself failed
131
+ 3 usage error
132
+ ```
133
+
134
+ 本仓 fixture 上的真实输出(缩略):
135
+
136
+ ```text
137
+ scope=entry profile=package status=pass exit=0
138
+ level: DSH-ENTRY recognized
139
+ DSC-01 PASS C-1 L0
140
+ DSC-14 NA C-14 L1 entry static claim: no runtime evidence
141
+ coverage: mandatory=5 pass=5 warn=0 fail=0 na=0 notRun=0
142
+ ```
143
+
144
+ `dsh-levels` 在同一个 fixture 上给出三层状态:`entry.state=recognized`、`flow.state=not-run`、`boost.state=not-measured`,并附三条 `nextActions` 告诉你下一步该补什么证据。
145
+
146
+ ## 核心能力
147
+
148
+ - **静态面(L0)**:不执行目标代码,只读 manifest、入口、patch 与源码,判 `DSC-01`–`DSC-03`、`DSC-10`–`DSC-13`。
149
+ - **运行时面(L1–L3)**:在**隔离子进程**里把包装载到 Cordis 运行时,看它是否 ACTIVE、声明的 `provide` 是否真注册、effect 是否成拓扑、卸载是否归零、restart 是否幂等;超时硬杀,被杀记 `not-run`,绝不记 PASS。
150
+ - **报告面**:`text` / `json` / `sarif`(SARIF 2.1.0,可进 GitHub code scanning);报告带 `anchor`(harness commit、dsh、cordis 版本),换一次版本就是另一把尺子。
151
+ - **三层审计**:`dsh-levels` 把 ENTRY 的检查器结论映射成证据状态,并对 FLOW 的 J1–J8、BOOST 的 LEV-1–8 只读证据文件——没有证据就报 `not-run` / `not-measured`。
152
+ - **只读**:不修改被检包、不往目标目录写文件;报告只走 stdout 或 `--out` 指定的路径。
153
+
154
+ ### 检查项
155
+
156
+ | ID | 条款 | 层 | 说明 |
157
+ |---|---|---|---|
158
+ | `DSC-01` | C-1 | L0 | `manifest`、`name`、`version`、`license`、入口、`dsh.bundle.patch`、导出形态 |
159
+ | `DSC-02` | C-2 | L0 | `engines.dsh` 或 `@deepseek-ai/dsh*` peer,被 runtime 满足 |
160
+ | `DSC-03` | C-3 | L0 | 安装 spec、市场索引条目、供应链固定性 |
161
+ | `DSC-04` | C-4 | L1 | 装载到 ACTIVE |
162
+ | `DSC-05` | C-5 | L1 | 声明的 `provide` 真实注册 |
163
+ | `DSC-06` | C-6 | L1+L2 | effect 拓扑、私有注册面 |
164
+ | `DSC-07` | C-7 | L2 | 卸载后 effect / store / registry 归零 |
165
+ | `DSC-08` | C-8 | L3 | restart 幂等 + 冷重启 |
166
+ | `DSC-09` | C-9 | L1 | 声明 vs 实测交叉 |
167
+ | `DSC-10` | C-10 | L0 | import 期副作用(advisory,不 FAIL) |
168
+ | `DSC-11` | C-11 | L0 | `dsh.capabilities` + 高信号触发 |
169
+ | `DSC-12` | C-12 | L0 | 凭据 backing file、`listRecords`、全局 seam;并读取 `dsh.commitments` 与 `dsh.disclosure` 的形状 |
170
+ | `DSC-13` | C-13 | L0 | `dsh.labels`、`upstream`、禁用语标签 |
100
171
 
101
- ## 给插件开发者:什么时候用哪个工具
172
+ `--scope mvp` 只落到 8 个 ID(`DSC-03/10/11/12/13` 不在 MVP),结论写 `subset: "MVP-13"`、`level: null`——**不是** DS-C 通过。
173
+
174
+ ### 什么时候用哪个工具
102
175
 
103
176
  | 阶段 | 命令 | 工具 | 产出 |
104
177
  |---|---|---|---|
@@ -106,47 +179,187 @@ node lev7-bench.mjs 64 20
106
179
  | 静态预检 | `dsh-dev check` / `dsh-ready` | dsh-plugin-ready | static report(host `not-run`) |
107
180
  | 宿主契约 | `dsh-clinic --only R,K,X` | dsh-plugin-doctor/clinic | 宿主契约 |
108
181
  | 隔离安装 | `dsh-test-drive` | dsh-test-drive | C3 证据 |
109
- | 市场提交 | `entry-validate --host-evidence` | 本仓 40-checker | C1–C8 + C3 |
110
- | 工具管理 | `dsh-tools list/doctor/install` | dsh-plugin-tools | 版本/安装指引 |
182
+ | 市场提交 | `entry-validate --host-evidence` | 本仓 `40-checker` | C1–C8 + C3 |
183
+ | 工具管理 | `dsh-tools list/doctor/install` | dsh-plugin-tools | 版本 / 安装指引 |
111
184
 
112
- 完整图见 [docs/DEVELOPER-JOURNEY.md](docs/DEVELOPER-JOURNEY.md);工具家族见 [dsh-plugin-devtools](https://github.com/PerryLink/dsh-plugin-devtools)。旧名项目见 [RENAMES.md](RENAMES.md)。
185
+ 完整旅程见 [docs/DEVELOPER-JOURNEY.md](docs/DEVELOPER-JOURNEY.md),工具家族见 [dsh-plugin-devtools](https://github.com/PerryLink/dsh-plugin-devtools),旧名项目见 [RENAMES.md](RENAMES.md)。
113
186
 
114
- ## 治理与贡献
187
+ ## 配置
115
188
 
116
- - 角色与权限:`governance/roles.json`;一页说明:`GOVERNANCE.md`
117
- - 贡献:DCO 1.1 + DCT v1(`dsh-ct/1`,许可而非版权转让);见 `CONTRIBUTING.md`
118
- - 标志:`governance/mark-policy.md`(自动授予、可撤销、必须带免责声明)
119
- - 申诉:`governance/appeals.md`;AI 只受理/计时/复核,人类终裁
120
- - 三用途采用包:`adoption/{official,market,developer}/`(按 `45` 落地)
189
+ 没有配置文件——全部可调项就是命令行参数。两个命令各一套:`dsh-standards <package-dir>` 转发给 DS-C 检查器(`--help` 打印完整用法),`dsh-levels <package-dir>` 转发给三层审计。
190
+
191
+ 最常用的 8 个:
192
+
193
+ | 参数 | 默认值 | 含义 |
194
+ |---|---|---|
195
+ | `<package-dir>` | `.` | 目标包目录,必须含 `package.json`;tarball 不在支持范围 |
196
+ | `--scope` | `ds-c` | `mvp` = 8 个 MVP ID;`ds-c` = 全量声明;`entry` = 兼容性门 |
197
+ | `--format` | `text` | `text` / `json` / `sarif`(SARIF 2.1.0) |
198
+ | `--entry-claim` | `runtime` | `runtime` 需 DSC-14 运行时证据;`static` 只声明结构识别 |
199
+ | `--host` | — | app-boot 的 `lib/index.js`;bundle 的 G0–G3 冒烟必需 |
200
+ | `--profile` | `package` | `package` / `listing` / `both`;给了 `--market-index` 时默认 `listing` |
201
+ | `--no-exec` | `false` | 跳过 L1–L3,记 `not-run`(绝不记 PASS) |
202
+ | `--out` | — | 报告写入文件;不给就打 stdout |
203
+
204
+ <details>
205
+ <summary>完整参数表(dsh-standards 的全部开关)</summary>
206
+
207
+ | 参数 | 默认值 | 含义 |
208
+ |---|---|---|
209
+ | `--format` | `text` | 报告格式:`text` / `json` / `sarif` |
210
+ | `--scope` | `ds-c` | 检查范围:`mvp` / `ds-c` / `entry` |
211
+ | `--profile` | `package` | 评估 profile:`package` / `listing` / `both` |
212
+ | `--runtime` | — | 指向构建好的 `@deepseek-ai/cordis` `lib/index.js`,开启 L1–L3 |
213
+ | `--runtime-version` | `0.2.2-alpha.2` | 写进 anchor 的 dsh 运行时版本,供 C-2 判定 |
214
+ | `--cordis-version` | `4.0.6-alpha.1` | 写进 anchor 的 cordis 版本 |
215
+ | `--commit` | `ce7073d51254` | 写进 anchor 的 harness commit |
216
+ | `--install-spec` | — | 给 C-3 用的推荐安装 spec |
217
+ | `--market-index` | — | 格式 1 的市场索引 JSON,开启 listing 模式 |
218
+ | `--plugin-name` | — | 市场索引里的插件名 |
219
+ | `--timeout` | `10000` | L1–L3 超时毫秒(100–120000) |
220
+ | `--no-exec` | `false` | 完全跳过 L1–L3,记 `not-run` / `NA` |
221
+ | `--static-only` | `false` | M1 模式:只留 C-1/C-2/C-3/C-11/C-12/C-13,C-4–C-9 直接出界 |
222
+ | `--treat-as-plugin` | `false` | 对 bundle 的 server 入口跑 L1–L3 |
223
+ | `--entry-runtime` | `require` | entry 门要完整 G0–G3,还是接受 `server-entry` 代理 |
224
+ | `--entry-claim` | `runtime` | entry 门要运行时证据(DSC-14),还是只做静态识别 |
225
+ | `--host` | — | app-boot `lib/index.js`,开启 bundle 的 G0–G3 冒烟 |
226
+ | `--base` | — | bundle 冒烟用的 base `cordis.patch.yml` |
227
+ | `--web` | — | bundle 冒烟用的 web-app `cordis.patch.yml` |
228
+ | `--bare` | — | host farm 的 bare-module 基线目录 |
229
+ | `--out` | — | 报告写入文件,否则 stdout |
230
+ | `--help` / `--version` | — | 打印用法 / 打印 `dsh-standards <版本> (checker 0.1.0)` |
231
+
232
+ `dsh-levels` 的参数:
233
+
234
+ | 参数 | 默认值 | 含义 |
235
+ |---|---|---|
236
+ | `<package-dir>` | 必填 | 目标包目录,必须有 `package.json` |
237
+ | `--host` | — | 给 ENTRY 用:真实 G0–G3 启动 |
238
+ | `--base` | — | bundle 冒烟的 base patch |
239
+ | `--bare` | — | bundle 冒烟的 bare-module farm |
240
+ | `--no-runtime` | `false` | 即使给了 `--host` 也只做静态 ENTRY |
241
+ | `--flow-evidence` | — | J1–J8 证据 JSON:每项 `status` 取 `pass` / `fail` / `not-run` |
242
+ | `--boost-evidence` | — | LEV 证据 JSON;只有 `status` 没有证据卡的条目降级为 `not-measured` |
243
+ | `--timeout` | `150000` | 检查器超时毫秒 |
244
+ | `--format` | `text` | `text` / `json` |
245
+ | `--out` | — | 结果写入文件 |
246
+
247
+ </details>
248
+
249
+ ## FAQ
250
+
251
+ <details>
252
+ <summary>这是认证或排名吗?</summary>
253
+
254
+ 不是。本仓自我定位就是**非官方、非认证、非安全审计**,不代表 DeepSeek 官方背书;不收费、不卖等级、不卖排名。`A–D` 是 `scheme/` 里的质量评价等级,与 `ENTRY` / `FLOW` / `BOOST` 三层正交——报告与文档都不把两者混成一个分数。证据再硬,也只是自评加仓内证据链,`notClaimed` 字段固定列出「官方标准 / 认证 / 安全审计 / 排名 / 生产基线」。
255
+
256
+ </details>
257
+
258
+ <details>
259
+ <summary>`18/18 recognized` 和 `18/18 clean` 差在哪?</summary>
260
+
261
+ `recognized` 是静态识别通过(`--entry-claim static`,只声明结构,不声明运行)。`clean` 需要运行时证据:base-only 10/18 有 runtime 证据(8 clean + 2 reject),real web profile 16/18 无告警、2 个是 host-gate reject,而且这些是自评、没有独立复核——所以 **18/18 clean 仍未达成**,文档里也不会写成达成。同理,`client-module-loaded` 不等于 UI 可用,更不等于认证。
262
+
263
+ </details>
264
+
265
+ <details>
266
+ <summary>不装 DSH 运行时会怎样?会静默通过吗?</summary>
267
+
268
+ 不会。L1–L3 需要 `--runtime`(bundle 还需要 `--host`);缺了就记 `ERR` / `not-run`,原因直接写在报告里(`no --runtime supplied; L1-L3 not run`),在 package 范围下结论变 `incomplete`、exit `2`。`--scope entry --entry-claim static` 仍然能给出 `DSH-ENTRY recognized`,但那是静态声明;要运行时结论就传 `--runtime` 或 `--host`。
269
+
270
+ </details>
121
271
 
122
- ## 边界
272
+ <details>
273
+ <summary>它会动我的包吗?会不会把我的代码跑坏?</summary>
123
274
 
124
- - 不收费、不卖等级、不卖排名;
125
- - 不做认证/安全审计;
126
- - 不把 static 写成 runtime;
127
- - 不把 10/18 base-only 写成 18/18 web/生产;不把 `client-module-loaded` 写成 UI/认证;
128
- - 不声称官方推荐/采纳;
129
- - 不声称认证/认可/安全审计;A–D 是质量等级,不是 ENTRY/FLOW/BOOST。
275
+ 检查器只读目标目录,不修改被检对象。要跑运行时检查时,它把装载过程放进**子进程**,超时(默认 10s,可用 `--timeout` 调)就硬杀,被杀记 `not-run` 而不是 PASS;子进程也读不到检查器自己的环境。完全不想执行目标代码就加 `--no-exec`,只要静态结论就加 `--static-only`。
130
276
 
131
- ## 许可
277
+ </details>
132
278
 
133
- - 文本/规范/文档/翻译:**CC BY 4.0**(`LICENSE-CC-BY`);**修改必须按 `MODIFICATION-POLICY.md` 给出 Change Notice**;
134
- - 代码/脚本/schema:**Apache-2.0**(`LICENSE-APACHE`,含专利授权与防御终止);
135
- - 标志/badge:单独规则,见 `governance/mark-policy.md`,不随上述许可授权;
136
- - 贡献:DCO 1.1 + DCT v1,不要求版权转让。
279
+ <details>
280
+ <summary>和 guide / doctor / cert / portal / catalog 是什么关系?</summary>
137
281
 
138
- ## 目录
282
+ 本仓是「规范正文 + 检查器 + 等级审计」;散文式指南在 `dsh-plugin-guide`,宿主契约实测在 `dsh-plugin-doctor`(clinic),市场与门户工具各自独立。五者的角色划分与贡献方式在 [39-五工具定位与贡献](39-五工具定位与贡献.md),工具选型表见上面的「什么时候用哪个工具」。
283
+
284
+ </details>
285
+
286
+ ## 已知限制
287
+
288
+ - **不做认证,也不做安全审计。** 报告是质量信号,不是合规证明;`A–D` 是质量等级,不是 `ENTRY` / `FLOW` / `BOOST`。
289
+ - **不收费、不卖等级、不卖排名。**
290
+ - **不把 static 写成 runtime。**
291
+ - **不把 10/18 base-only 写成 18/18 web/生产;不把 `client-module-loaded` 写成 UI/认证。**
292
+ - **不声称官方推荐或采纳;不声称认证 / 认可 / 安全审计。**
293
+ - **MVP 覆盖缺口**:`--scope mvp` 只落 8 个 ID,`DSC-03/10/11/12/13` 不在其中;它的结论是 `subset: "MVP-13"`、`level: null`,不得当 DS-C 徽章用。
294
+ - **只吃包目录**:目标必须是含 `package.json` 的目录;tarball 支持不在 MVP 里。
295
+ - **运行时结论有前置条件**:没有 `--runtime` 或 `--host` 时 L1–L3 只能记 `not-run`;`--entry-claim static` 永远给不出运行时结论。
296
+ - **结论带版本锚点**:`commit` / `dsh` / `cordis` 变了就是另一把尺子,旧报告不能直接当新版本的证据。
297
+ - **BOOST 数据不是生产基线**:LEV 的 8/8 measured 来自 loader / context / provider-capture / synthetic timer 的合成环境,LEV-7 的 8.24× 同理。
298
+ - **文本改动必须说明**:复制或修改本仓文本时,必须在显著位置给出 Change Notice(来源 commit、改了哪个章节、改了什么、为什么、日期),见 [`MODIFICATION-POLICY.md`](MODIFICATION-POLICY.md);标志与 badge 不随许可证授权,规则见 `governance/mark-policy.md`。
299
+
300
+ ## 开发
301
+
302
+ ```sh
303
+ git clone https://github.com/PerryLink/dsh-standards.git
304
+ cd dsh-standards
305
+
306
+ node --test 40-checker/test/*.test.mjs # 128/128
307
+ node bin/dsh-standards.mjs 40-checker/fixtures/good \
308
+ --scope entry --entry-claim static --format text # 本仓 fixture 冒烟
309
+ node bin/dsh-levels.mjs 40-checker/fixtures/good --format json
310
+
311
+ # 从源码直连检查器:结构识别 / 声明运行(bundle 需要 host)
312
+ node 40-checker/bin/dsh-plugin-verify.mjs <plugin-dir> --scope entry --entry-claim static
313
+ node 40-checker/bin/dsh-plugin-verify.mjs <bundle-dir> --scope entry \
314
+ --host /path/to/@deepseek-ai/dsh-app-boot/lib/index.js
315
+
316
+ node 40-checker/scripts/journey-runtime.mjs --package <dir> --json # J1 安装/卸载旅程
317
+ node 40-checker/scripts/governance-check.mjs # 治理条款
318
+ node 40-checker/scripts/attestation-check.mjs # 评价记录
319
+ node 40-checker/scripts/claim-check.mjs # 声明一致性
320
+ node 40-checker/scripts/dco-check.mjs --range HEAD~1..HEAD # DCO
321
+ node publish/verify.mjs --id DSH-ATT-2026-001 # 验真示例记录
322
+
323
+ cd examples/boost && node lev7-bench.mjs 64 20 # LEV-7 有界并行基准
324
+ ```
325
+
326
+ 配图由 [`scripts/gen-readme-assets.py`](scripts/gen-readme-assets.py) 程序化生成(Python + Pillow,深色 / 浅色双版 SVG),可重复执行:`python scripts/gen-readme-assets.py`。
327
+
328
+ ### 目录
139
329
 
140
330
  ```text
141
331
  00-99*.md 规范/研究/画像/沟通包
332
+ bin/ 两个公开入口:dsh-standards、dsh-levels
142
333
  40-checker/ 检查器、J1 旅程、bundle smoke、样本框、结果
143
334
  governance/ 角色/贡献条款/标志/申诉/COI/决策日志 + 机器检查
144
335
  adoption/ official / market / developer 三套采用包
145
336
  spec/ levels.json + clauses.json + schemas(evidence / report / attestation)
337
+ scheme/ A–E / A–D 评价方案与 rubric
338
+ evidence/ 追加式证据链与复跑说明
146
339
  examples/boost/ LEV-7 参考实现与基准
147
340
  publish/ labels 示例 + 评价记录 JSON
341
+ docs/ DEVELOPER-JOURNEY 等长期文档与 README 配图
148
342
  ```
149
343
 
150
- ## 先行项目
344
+ ### 治理与贡献
345
+
346
+ - 角色与权限:`governance/roles.json`;一页说明:[GOVERNANCE.md](GOVERNANCE.md)
347
+ - 贡献:DCO 1.1 + DCT v1(`dsh-ct/1`,许可而非版权转让),见 [CONTRIBUTING.md](CONTRIBUTING.md)
348
+ - 标志:`governance/mark-policy.md`(自动授予、可撤销、必须带免责声明)
349
+ - 申诉:`governance/appeals.md`;AI 只受理 / 计时 / 复核,人类终裁
350
+ - 三用途采用包:`adoption/{official,market,developer}/`(按 `45` 落地)
351
+
352
+ ## 家族与致谢
353
+
354
+ 本项目是 [PerryLink](https://github.com/PerryLink) 维护的 DSH 生态项目之一:这一支负责「尺子」——规范正文、检查器与等级审计;指南、脚手架、检验与门户工具各有独立仓库。如果它帮你省下了几次手工核对,**给个 star**——它不解锁任何功能,但会让下一个要核对插件的人更容易找到这里。
355
+
356
+ 同生态的先行项目 `dsh-plugin-standard`(lanbaolu)与本项目无隶属关系,引用或对比时都会标注来源。
357
+
358
+ ## License
359
+
360
+ - **文本 / 规范 / 文档 / 翻译**:CC BY 4.0([`LICENSE-CC-BY`](LICENSE-CC-BY));修改必须按 [`MODIFICATION-POLICY.md`](MODIFICATION-POLICY.md) 给出 Change Notice;
361
+ - **代码 / 脚本 / schema**:Apache-2.0([`LICENSE-APACHE`](LICENSE-APACHE),含专利授权与防御终止);
362
+ - **标志 / badge**:单独规则,见 `governance/mark-policy.md`,不随上述许可授权;
363
+ - **贡献**:DCO 1.1 + DCT v1,不要求版权转让。
151
364
 
152
- `dsh-plugin-standard`(lanbaolu)是同生态的先行项目;本项目与其无隶属关系,引用/对比时将标注来源。许可见 `LICENSE`(文本 CC BY 4.0 / 代码 Apache-2.0);修改必须说明。
365
+ <p align="center"><sub>CC BY 4.0(文本)· Apache-2.0(代码)· 社区项目,与 DeepSeek 无关。</sub></p>