dsh-standards 0.0.3 → 1.0.1

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 (139) hide show
  1. package/40-checker/README.md +251 -0
  2. package/40-checker/bin/dsh-levels.mjs +15 -0
  3. package/40-checker/bin/dsh-plugin-verify.mjs +8 -0
  4. package/40-checker/fixtures/bad/index.mjs +12 -0
  5. package/40-checker/fixtures/bad/package.json +15 -0
  6. package/40-checker/fixtures/bad-manifest/index.js +1 -0
  7. package/40-checker/fixtures/bad-manifest/package.json +5 -0
  8. package/40-checker/fixtures/bundle/cordis.patch.yml +3 -0
  9. package/40-checker/fixtures/bundle/package.json +15 -0
  10. package/40-checker/fixtures/bundle/server.mjs +7 -0
  11. package/40-checker/fixtures/bundle-v0/cordis.patch.yml +3 -0
  12. package/40-checker/fixtures/bundle-v0/package.json +21 -0
  13. package/40-checker/fixtures/bundle-v0/server.mjs +7 -0
  14. package/40-checker/fixtures/client-missing/client.js +1 -0
  15. package/40-checker/fixtures/client-missing/index.js +1 -0
  16. package/40-checker/fixtures/client-missing/package.json +6 -0
  17. package/40-checker/fixtures/flow-config/index.js +9 -0
  18. package/40-checker/fixtures/flow-config/package.json +10 -0
  19. package/40-checker/fixtures/fs-write/index.mjs +7 -0
  20. package/40-checker/fixtures/fs-write/package.json +10 -0
  21. package/40-checker/fixtures/good/index.mjs +10 -0
  22. package/40-checker/fixtures/good/package.json +19 -0
  23. package/40-checker/fixtures/hang/index.mjs +5 -0
  24. package/40-checker/fixtures/hang/package.json +10 -0
  25. package/40-checker/fixtures/known-answer/expected.json +18 -0
  26. package/40-checker/fixtures/market-index-real.json +18 -0
  27. package/40-checker/fixtures/market-index.json +18 -0
  28. package/40-checker/fixtures/negative/bad-entry/package.json +1 -0
  29. package/40-checker/fixtures/negative/no-entry/package.json +1 -0
  30. package/40-checker/fixtures/negative/no-patch/package.json +1 -0
  31. package/40-checker/fixtures/negative/root-missing/cordis.patch.yml +2 -0
  32. package/40-checker/fixtures/negative/root-missing/package.json +1 -0
  33. package/40-checker/fixtures/negative/workspace/package.json +1 -0
  34. package/40-checker/package.json +22 -0
  35. package/40-checker/samples/README.md +8 -0
  36. package/40-checker/samples/entry18.json +139 -0
  37. package/40-checker/samples/frame.json +485 -0
  38. package/40-checker/scripts/apply-overlay.mjs +59 -0
  39. package/40-checker/scripts/attestation-check.mjs +151 -0
  40. package/40-checker/scripts/bundle-smoke.mjs +126 -0
  41. package/40-checker/scripts/claim-check.mjs +145 -0
  42. package/40-checker/scripts/clause-map.mjs +94 -0
  43. package/40-checker/scripts/collect-fixtures.mjs +44 -0
  44. package/40-checker/scripts/dashboard.mjs +85 -0
  45. package/40-checker/scripts/dco-check.mjs +147 -0
  46. package/40-checker/scripts/dependabot-check.mjs +40 -0
  47. package/40-checker/scripts/doc-commands-check.mjs +92 -0
  48. package/40-checker/scripts/entry-scan.mjs +190 -0
  49. package/40-checker/scripts/entry-validate.mjs +291 -0
  50. package/40-checker/scripts/entry18-attribution.mjs +66 -0
  51. package/40-checker/scripts/entry18-ci.mjs +685 -0
  52. package/40-checker/scripts/entry18-realweb-summary.mjs +71 -0
  53. package/40-checker/scripts/entry18-web.mjs +307 -0
  54. package/40-checker/scripts/evidence-chain.mjs +100 -0
  55. package/40-checker/scripts/flow-index.mjs +82 -0
  56. package/40-checker/scripts/flow-sample-ci.mjs +529 -0
  57. package/40-checker/scripts/governance-check.mjs +210 -0
  58. package/40-checker/scripts/host-farm.mjs +165 -0
  59. package/40-checker/scripts/journey-config-observe.mjs +109 -0
  60. package/40-checker/scripts/journey-disclosure-shape.mjs +83 -0
  61. package/40-checker/scripts/journey-runtime.mjs +178 -0
  62. package/40-checker/scripts/journey.mjs +76 -0
  63. package/40-checker/scripts/label-drift.mjs +74 -0
  64. package/40-checker/scripts/label-sync.mjs +87 -0
  65. package/40-checker/scripts/label-verify.mjs +90 -0
  66. package/40-checker/scripts/landlock-exec.c +101 -0
  67. package/40-checker/scripts/level-audit.mjs +336 -0
  68. package/40-checker/scripts/m1-sidecar.mjs +126 -0
  69. package/40-checker/scripts/m2-runner.mjs +213 -0
  70. package/40-checker/scripts/round-robin.mjs +88 -0
  71. package/40-checker/scripts/sample-frame.mjs +72 -0
  72. package/40-checker/scripts/sample20-ci.mjs +25 -0
  73. package/40-checker/scripts/sample60-ci.mjs +25 -0
  74. package/40-checker/scripts/stale-check.mjs +59 -0
  75. package/40-checker/scripts/surveillance.mjs +88 -0
  76. package/40-checker/scripts/web-probe.mjs +504 -0
  77. package/40-checker/src/cli.mjs +300 -0
  78. package/40-checker/src/client-shape.mjs +37 -0
  79. package/40-checker/src/declarations.mjs +242 -0
  80. package/40-checker/src/index.mjs +8 -0
  81. package/40-checker/src/install-spec.mjs +67 -0
  82. package/40-checker/src/label.mjs +130 -0
  83. package/40-checker/src/manifest.mjs +381 -0
  84. package/40-checker/src/permissions.mjs +60 -0
  85. package/40-checker/src/report.mjs +204 -0
  86. package/40-checker/src/result.mjs +60 -0
  87. package/40-checker/src/runtime.mjs +299 -0
  88. package/40-checker/src/semver.mjs +194 -0
  89. package/40-checker/src/util.mjs +148 -0
  90. package/40-checker/test/attestation.test.mjs +59 -0
  91. package/40-checker/test/checks.test.mjs +172 -0
  92. package/40-checker/test/claim.test.mjs +28 -0
  93. package/40-checker/test/client-shape.test.mjs +35 -0
  94. package/40-checker/test/dco.test.mjs +51 -0
  95. package/40-checker/test/entry-validate.test.mjs +172 -0
  96. package/40-checker/test/governance.test.mjs +76 -0
  97. package/40-checker/test/label.test.mjs +97 -0
  98. package/40-checker/test/level-audit.test.mjs +99 -0
  99. package/40-checker/test/levels.test.mjs +31 -0
  100. package/40-checker/test/ops.test.mjs +117 -0
  101. package/40-checker/test/permissions.test.mjs +40 -0
  102. package/40-checker/test/semver.test.mjs +32 -0
  103. package/40-checker/test/verify.test.mjs +57 -0
  104. package/CHANGELOG.md +24 -0
  105. package/LICENSE +28 -0
  106. package/LICENSE-APACHE +190 -0
  107. package/LICENSE-CC-BY +23 -0
  108. package/NOTICE +14 -0
  109. package/NOTICE.md +11 -0
  110. package/README.md +146 -3
  111. package/bin/dsh-levels.mjs +4 -0
  112. package/bin/dsh-standards.mjs +19 -0
  113. package/docs/BOOST-FIXTURES-2026-11-02.md +38 -0
  114. package/docs/DEVELOPER-JOURNEY.md +40 -0
  115. package/docs/HOST-J3-BUG-REPORT-DRAFT.md +27 -0
  116. package/docs/HOST-J3-CONFIG-REPRO-2026-11-02.md +36 -0
  117. package/docs/NAMING-FALLBACK.md +11 -0
  118. package/docs/fork-policy.md +12 -0
  119. package/docs/full-test-plan-2026-11-02.md +207 -0
  120. package/docs/incident.md +37 -0
  121. package/docs/onboarding.md +27 -0
  122. package/docs/privacy.md +12 -0
  123. package/docs/release.md +16 -0
  124. package/docs/scope-security.md +62 -0
  125. package/docs/status-taxonomy.md +54 -0
  126. package/docs/sunset.md +44 -0
  127. package/docs/translating.md +12 -0
  128. package/package.json +58 -12
  129. package/spec/README.md +27 -0
  130. package/spec/boost/README.md +8 -0
  131. package/spec/clauses.json +253 -0
  132. package/spec/entry/README.md +9 -0
  133. package/spec/flow/README.md +8 -0
  134. package/spec/levels.json +371 -0
  135. package/spec/levels.schema.json +45 -0
  136. package/spec/reference-suite.json +35 -0
  137. package/spec/schemas/attestation.schema.json +284 -0
  138. package/spec/schemas/evidence.schema.json +331 -0
  139. package/spec/schemas/report.schema.json +64 -0
package/package.json CHANGED
@@ -1,20 +1,66 @@
1
1
  {
2
2
  "name": "dsh-standards",
3
- "version": "0.0.3",
4
- "description": "Name reservation; canonical draft at https://github.com/PerryLink/dsh-standard (private).",
5
- "license": "MIT",
6
- "private": false,
7
- "repository": {
8
- "type": "git",
9
- "url": "https://github.com/PerryLink/dsh-standard.git"
3
+ "version": "1.0.1",
4
+ "description": "DSH plugin standards and conformance checks: ENTRY/FLOW checks plus BOOST guidance. Non-official; no certification or ranking.",
5
+ "type": "module",
6
+ "main": "40-checker/src/index.mjs",
7
+ "exports": {
8
+ ".": "./40-checker/src/index.mjs",
9
+ "./package.json": "./package.json"
10
+ },
11
+ "bin": {
12
+ "dsh-standards": "./bin/dsh-standards.mjs",
13
+ "dsh-levels": "./bin/dsh-levels.mjs"
14
+ },
15
+ "files": [
16
+ "bin",
17
+ "40-checker/bin",
18
+ "40-checker/src",
19
+ "40-checker/scripts",
20
+ "40-checker/samples",
21
+ "40-checker/fixtures",
22
+ "40-checker/test",
23
+ "40-checker/package.json",
24
+ "40-checker/README.md",
25
+ "spec",
26
+ "docs",
27
+ "README.md",
28
+ "CHANGELOG.md",
29
+ "LICENSE",
30
+ "LICENSE-APACHE",
31
+ "LICENSE-CC-BY",
32
+ "NOTICE.md",
33
+ "NOTICE"
34
+ ],
35
+ "scripts": {
36
+ "test": "node --test 40-checker/test/*.test.mjs",
37
+ "test:fixtures": "node bin/dsh-standards.mjs 40-checker/fixtures/good --scope entry --entry-claim static --format text"
38
+ },
39
+ "engines": {
40
+ "node": ">=24.9.0"
10
41
  },
11
- "homepage": "https://github.com/PerryLink/dsh-standard",
12
42
  "keywords": [
13
43
  "dsh",
44
+ "dsh-plugin",
14
45
  "deepseek-harness",
15
- "plugin"
46
+ "cordis",
47
+ "standards",
48
+ "checker",
49
+ "conformance",
50
+ "entry",
51
+ "flow",
52
+ "boost"
16
53
  ],
17
- "files": [
18
- "README.md"
19
- ]
54
+ "license": "Apache-2.0",
55
+ "repository": {
56
+ "type": "git",
57
+ "url": "git+https://github.com/PerryLink/dsh-standards.git"
58
+ },
59
+ "homepage": "https://github.com/PerryLink/dsh-standards#readme",
60
+ "bugs": {
61
+ "url": "https://github.com/PerryLink/dsh-standards/issues"
62
+ },
63
+ "publishConfig": {
64
+ "access": "public"
65
+ }
20
66
  }
package/spec/README.md ADDED
@@ -0,0 +1,27 @@
1
+ # dsh-standards specification tree
2
+
3
+ One project, three adoption levels. Each level has its own maturity; they share
4
+ the glossary, evidence anchor, and checker.
5
+
6
+ | Level | Document | Maturity | Evidence |
7
+ |---|---|---|---|
8
+ | ENTRY | [../31-DSH-ENTRY入门规范.md](../31-DSH-ENTRY入门规范.md) | public-preview | 18/18 recognized; 10/18 base G3, 8 clean after gate; client 15/15 loaded |
9
+ | FLOW | [../32-DSH-FLOW顺畅规范.md](../32-DSH-FLOW顺畅规范.md) | draft | J1/J2/J4/J6 runtime on fixture; 5 real packages; J3/J5/J7/J8 not-run |
10
+ | BOOST | [../33-DSH-BOOST加速实践.md](../33-DSH-BOOST加速实践.md) | draft | LEV-1–8 8/8 measured at synthetic/loader/provider-capture level |
11
+
12
+ Machine-readable:
13
+
14
+ - [levels.json](levels.json) — levels, gates, evidence states, crosswalk.
15
+ - [clauses.json](clauses.json) — stable clause IDs mapped to gates (`clause-map.mjs`).
16
+ - [reference-suite.json](reference-suite.json) — versioned samples, anchors, change rules.
17
+ - [schemas/evidence.schema.json](schemas/evidence.schema.json) — `dsh-levels/1` record.
18
+ - [schemas/attestation.schema.json](schemas/attestation.schema.json) — `dsh-attestation/1` quality record.
19
+ - [schemas/report.schema.json](schemas/report.schema.json) — `dsh-report/1` inspection report (no grade).
20
+ - [../40-checker/scripts/level-audit.mjs](../40-checker/scripts/level-audit.mjs) — one-command audit.
21
+ - [../publish/level-labels.example.json](../publish/level-labels.example.json) — market labels.
22
+
23
+ Rules:
24
+
25
+ - Levels depend on `common` only; do not import each other.
26
+ - A level is not a certification, badge, grade, or score.
27
+ - `dsh-standard` is an alias; `dsh-standards` is canonical.
@@ -0,0 +1,8 @@
1
+ # BOOST
2
+
3
+ Leverage surface: Cordis-native practices with evidence, not a grade.
4
+
5
+ - Practice text: [../../33-DSH-BOOST加速实践.md](../../33-DSH-BOOST加速实践.md)
6
+ - Deep research: [../../91-增效实践内核研究.md](../../91-增效实践内核研究.md)
7
+ - Reference: `examples/boost/lev7-bounded-batch.mjs`; benchmark: `examples/boost/results/lev7.json`
8
+ - Current: LEV-3 loader-level 0/20 vs 20/20 remount; LEV-6 provider-capture 100% vs 0% prompt reuse; LEV-7 8.24× synthetic. None is a production baseline.
@@ -0,0 +1,253 @@
1
+ {
2
+ "schema": "dsh-clauses/1",
3
+ "version": "1.0.0-rc.1",
4
+ "updatedAt": "2026-11-02",
5
+ "note": "Stable clause IDs mapped to the gates in spec/levels.json. The source anchor is a section, not a line number, so edits do not silently break the map.",
6
+ "clauses": [
7
+ {
8
+ "id": "ENTRY-RUNSET",
9
+ "level": "entry",
10
+ "title": "Run set and coverage",
11
+ "source": "31-DSH-ENTRY入门规范.md#21-run-set",
12
+ "gates": [
13
+ "G0",
14
+ "G1",
15
+ "G3"
16
+ ],
17
+ "normative": true
18
+ },
19
+ {
20
+ "id": "ENTRY-BLOCKING",
21
+ "level": "entry",
22
+ "title": "Blocking conditions",
23
+ "source": "31-DSH-ENTRY入门规范.md#22-blocking",
24
+ "gates": [
25
+ "G2"
26
+ ],
27
+ "normative": true
28
+ },
29
+ {
30
+ "id": "ENTRY-KIND",
31
+ "level": "entry",
32
+ "title": "Per-kind execution",
33
+ "source": "31-DSH-ENTRY入门规范.md#23-按-kind-的运行",
34
+ "gates": [
35
+ "G0",
36
+ "G1"
37
+ ],
38
+ "normative": true
39
+ },
40
+ {
41
+ "id": "ENTRY-STATUS",
42
+ "level": "entry",
43
+ "title": "Conclusion states",
44
+ "source": "31-DSH-ENTRY入门规范.md#24-结论状态",
45
+ "gates": [
46
+ "G3",
47
+ "G5"
48
+ ],
49
+ "normative": true
50
+ },
51
+ {
52
+ "id": "ENTRY-CLIENT",
53
+ "level": "entry",
54
+ "title": "Client static shape",
55
+ "source": "31-DSH-ENTRY入门规范.md#23-按-kind-的运行",
56
+ "gates": [
57
+ "G4"
58
+ ],
59
+ "normative": true
60
+ },
61
+ {
62
+ "id": "ENTRY-BOUNDARY",
63
+ "level": "entry",
64
+ "title": "Boundary and non-claims",
65
+ "source": "31-DSH-ENTRY入门规范.md#五边界",
66
+ "gates": [
67
+ "G5"
68
+ ],
69
+ "normative": true
70
+ },
71
+ {
72
+ "id": "FLOW-J1",
73
+ "level": "flow",
74
+ "title": "Install and remove",
75
+ "source": "32-DSH-FLOW顺畅规范.md#三j1j8-判定协议",
76
+ "gates": [
77
+ "J1"
78
+ ],
79
+ "normative": true
80
+ },
81
+ {
82
+ "id": "FLOW-J2",
83
+ "level": "flow",
84
+ "title": "Enable and disable",
85
+ "source": "32-DSH-FLOW顺畅规范.md#三j1j8-判定协议",
86
+ "gates": [
87
+ "J2"
88
+ ],
89
+ "normative": true
90
+ },
91
+ {
92
+ "id": "FLOW-J3",
93
+ "level": "flow",
94
+ "title": "Configuration",
95
+ "source": "32-DSH-FLOW顺畅规范.md#三j1j8-判定协议",
96
+ "gates": [
97
+ "J3"
98
+ ],
99
+ "normative": true
100
+ },
101
+ {
102
+ "id": "FLOW-J4",
103
+ "level": "flow",
104
+ "title": "First success",
105
+ "source": "32-DSH-FLOW顺畅规范.md#三j1j8-判定协议",
106
+ "gates": [
107
+ "J4"
108
+ ],
109
+ "normative": true
110
+ },
111
+ {
112
+ "id": "FLOW-J5",
113
+ "level": "flow",
114
+ "title": "Permissions and disclosure",
115
+ "source": "32-DSH-FLOW顺畅规范.md#43-权限文案",
116
+ "gates": [
117
+ "J5"
118
+ ],
119
+ "normative": true
120
+ },
121
+ {
122
+ "id": "FLOW-J6",
123
+ "level": "flow",
124
+ "title": "Upgrade, rollback, uninstall",
125
+ "source": "32-DSH-FLOW顺畅规范.md#三j1j8-判定协议",
126
+ "gates": [
127
+ "J6"
128
+ ],
129
+ "normative": true
130
+ },
131
+ {
132
+ "id": "FLOW-J7",
133
+ "level": "flow",
134
+ "title": "Observability and diagnostics",
135
+ "source": "32-DSH-FLOW顺畅规范.md#三j1j8-判定协议",
136
+ "gates": [
137
+ "J7"
138
+ ],
139
+ "normative": true
140
+ },
141
+ {
142
+ "id": "FLOW-J8",
143
+ "level": "flow",
144
+ "title": "Client/server shapes",
145
+ "source": "32-DSH-FLOW顺畅规范.md#三j1j8-判定协议",
146
+ "gates": [
147
+ "J8"
148
+ ],
149
+ "normative": true
150
+ },
151
+ {
152
+ "id": "BOOST-LEV1",
153
+ "level": "boost",
154
+ "title": "Reversible effects",
155
+ "source": "33-DSH-BOOST加速实践.md#二八条-lev",
156
+ "gates": [
157
+ "LEV-1"
158
+ ],
159
+ "normative": false
160
+ },
161
+ {
162
+ "id": "BOOST-LEV2",
163
+ "level": "boost",
164
+ "title": "Inject and wait",
165
+ "source": "33-DSH-BOOST加速实践.md#二八条-lev",
166
+ "gates": [
167
+ "LEV-2"
168
+ ],
169
+ "normative": false
170
+ },
171
+ {
172
+ "id": "BOOST-LEV3",
173
+ "level": "boost",
174
+ "title": "Volatile hot config",
175
+ "source": "33-DSH-BOOST加速实践.md#二八条-lev",
176
+ "gates": [
177
+ "LEV-3"
178
+ ],
179
+ "normative": false
180
+ },
181
+ {
182
+ "id": "BOOST-LEV4",
183
+ "level": "boost",
184
+ "title": "Event modes",
185
+ "source": "33-DSH-BOOST加速实践.md#二八条-lev",
186
+ "gates": [
187
+ "LEV-4"
188
+ ],
189
+ "normative": false
190
+ },
191
+ {
192
+ "id": "BOOST-LEV5",
193
+ "level": "boost",
194
+ "title": "Seam, isolate, group",
195
+ "source": "33-DSH-BOOST加速实践.md#二八条-lev",
196
+ "gates": [
197
+ "LEV-5"
198
+ ],
199
+ "normative": false
200
+ },
201
+ {
202
+ "id": "BOOST-LEV6",
203
+ "level": "boost",
204
+ "title": "Prefix and prompt stability",
205
+ "source": "33-DSH-BOOST加速实践.md#二八条-lev",
206
+ "gates": [
207
+ "LEV-6"
208
+ ],
209
+ "normative": false
210
+ },
211
+ {
212
+ "id": "BOOST-LEV7",
213
+ "level": "boost",
214
+ "title": "Bounded parallelism and jobs",
215
+ "source": "33-DSH-BOOST加速实践.md#二八条-lev",
216
+ "gates": [
217
+ "LEV-7"
218
+ ],
219
+ "normative": false
220
+ },
221
+ {
222
+ "id": "BOOST-LEV8",
223
+ "level": "boost",
224
+ "title": "Composition and evidence card",
225
+ "source": "33-DSH-BOOST加速实践.md#二八条-lev",
226
+ "gates": [
227
+ "LEV-8"
228
+ ],
229
+ "normative": false
230
+ },
231
+ {
232
+ "id": "BOOST-G10",
233
+ "level": "boost",
234
+ "title": "G-10 boundary",
235
+ "source": "33-DSH-BOOST加速实践.md#三g-10-的边界",
236
+ "gates": [
237
+ "LEV-8"
238
+ ],
239
+ "normative": false
240
+ },
241
+ {
242
+ "id": "BOOST-EVIDENCE",
243
+ "level": "boost",
244
+ "title": "Evidence card",
245
+ "source": "33-DSH-BOOST加速实践.md#四证据卡",
246
+ "gates": [
247
+ "LEV-8"
248
+ ],
249
+ "normative": false
250
+ }
251
+ ],
252
+ "normativeCount": 14
253
+ }
@@ -0,0 +1,9 @@
1
+ # ENTRY
2
+
3
+ Compatibility surface: can an existing plugin be recognized/installed and at
4
+ least run?
5
+
6
+ - Normative text: [../../31-DSH-ENTRY入门规范.md](../../31-DSH-ENTRY入门规范.md)
7
+ - External portrait: [../../99-DSH-ENTRY兼容性画像-对外版.md](../../99-DSH-ENTRY兼容性画像-对外版.md)
8
+ - Checker: `node 40-checker/bin/dsh-plugin-verify.mjs <dir> --scope entry --entry-claim static|runtime`
9
+ - Current: 18/18 recognized, 0 clean; 18/18 base-only runtime JSON; 10 G3 verified / 8 partial; after gate 8 clean + 2 reject + 8 partial; client 15/15 loaded in the web profile.
@@ -0,0 +1,8 @@
1
+ # FLOW
2
+
3
+ Usability surface: install, configure, first success, permissions, upgrade,
4
+ uninstall, diagnostics, client/server states.
5
+
6
+ - Normative text: [../../32-DSH-FLOW顺畅规范.md](../../32-DSH-FLOW顺畅规范.md)
7
+ - Journeys: J1–J8; only J1 has a runtime harness (`40-checker/scripts/journey-runtime.mjs`).
8
+ - Current: J1 6 PASS + 1 WARN; J2–J8 not-run.