dsh-standards 1.0.0 → 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 (469) hide show
  1. package/40-checker/README.md +2 -2
  2. package/40-checker/src/cli.mjs +1 -1
  3. package/40-checker/src/manifest.mjs +17 -0
  4. package/40-checker/src/semver.mjs +77 -11
  5. package/CHANGELOG.md +24 -0
  6. package/NOTICE +14 -0
  7. package/README.md +6 -6
  8. package/bin/dsh-standards.mjs +1 -0
  9. package/package.json +14 -5
  10. package/40-checker/.github/workflows/plugin-verify.yml +0 -70
  11. package/40-checker/results/boost/REPORT.md +0 -304
  12. package/40-checker/results/boost/lev12458.json +0 -1747
  13. package/40-checker/results/client/README.md +0 -16
  14. package/40-checker/results/entry/18/DDDMUC__dsh-free-search.json +0 -381
  15. package/40-checker/results/entry/18/DDDMUC__dsh-free-search.runtime.json +0 -34
  16. package/40-checker/results/entry/18/Ebony-Vinyl__dsh-our-free-model.json +0 -361
  17. package/40-checker/results/entry/18/Ebony-Vinyl__dsh-our-free-model.runtime.json +0 -34
  18. package/40-checker/results/entry/18/README.md +0 -24
  19. package/40-checker/results/entry/18/RUNTIME.md +0 -18
  20. package/40-checker/results/entry/18/SeaOf0__dsh-redteam-model.json +0 -391
  21. package/40-checker/results/entry/18/YuJunZhiXue__dsh-purge.json +0 -432
  22. package/40-checker/results/entry/18/ci-diet.json +0 -365
  23. package/40-checker/results/entry/18/ci-diet.runtime-attempt.json +0 -38
  24. package/40-checker/results/entry/18/daily-log.json +0 -357
  25. package/40-checker/results/entry/18/daily-log.runtime.json +0 -519
  26. package/40-checker/results/entry/18/fullbase/ATTRIBUTION.md +0 -29
  27. package/40-checker/results/entry/18/fullbase/DDDMUC__dsh-free-search.json +0 -99
  28. package/40-checker/results/entry/18/fullbase/Ebony-Vinyl__dsh-our-free-model.json +0 -95
  29. package/40-checker/results/entry/18/fullbase/REPORT.md +0 -261
  30. package/40-checker/results/entry/18/fullbase/SeaOf0__dsh-redteam-model.json +0 -144
  31. package/40-checker/results/entry/18/fullbase/YuJunZhiXue__dsh-purge.json +0 -106
  32. package/40-checker/results/entry/18/fullbase/ci-diet.json +0 -99
  33. package/40-checker/results/entry/18/fullbase/daily-log.json +0 -94
  34. package/40-checker/results/entry/18/fullbase/howmp__dsh-pentest.json +0 -104
  35. package/40-checker/results/entry/18/fullbase/kingcharleslzy-ai__dsh-purge.json +0 -143
  36. package/40-checker/results/entry/18/fullbase/liguobao__ds-harness-remote.json +0 -134
  37. package/40-checker/results/entry/18/fullbase/mmparko__dsh-purge.json +0 -138
  38. package/40-checker/results/entry/18/fullbase/project-memory.json +0 -108
  39. package/40-checker/results/entry/18/fullbase/qiushi.json +0 -94
  40. package/40-checker/results/entry/18/fullbase/shaobeichen__dsh-pocket.json +0 -94
  41. package/40-checker/results/entry/18/fullbase/status-rotator.json +0 -94
  42. package/40-checker/results/entry/18/fullbase/summary.json +0 -297
  43. package/40-checker/results/entry/18/fullbase/telemetry.json +0 -94
  44. package/40-checker/results/entry/18/fullbase/ui-auth.json +0 -94
  45. package/40-checker/results/entry/18/fullbase/verification.json +0 -94
  46. package/40-checker/results/entry/18/fullbase/ysr666__dsh-vision-router.json +0 -106
  47. package/40-checker/results/entry/18/howmp__dsh-pentest.json +0 -361
  48. package/40-checker/results/entry/18/kingcharleslzy-ai__dsh-purge.json +0 -411
  49. package/40-checker/results/entry/18/liguobao__ds-harness-remote.json +0 -379
  50. package/40-checker/results/entry/18/mmparko__dsh-purge.json +0 -441
  51. package/40-checker/results/entry/18/project-memory.json +0 -361
  52. package/40-checker/results/entry/18/project-memory.runtime.json +0 -519
  53. package/40-checker/results/entry/18/qiushi.json +0 -353
  54. package/40-checker/results/entry/18/qiushi.runtime.json +0 -519
  55. package/40-checker/results/entry/18/realweb/REPORT.md +0 -73
  56. package/40-checker/results/entry/18/realweb/SeaOf0__dsh-redteam-model.json +0 -104
  57. package/40-checker/results/entry/18/realweb/YuJunZhiXue__dsh-purge.json +0 -64
  58. package/40-checker/results/entry/18/realweb/howmp__dsh-pentest.json +0 -65
  59. package/40-checker/results/entry/18/realweb/kingcharleslzy-ai__dsh-purge.json +0 -75
  60. package/40-checker/results/entry/18/realweb/mmparko__dsh-purge.json +0 -70
  61. package/40-checker/results/entry/18/realweb/shaobeichen__dsh-pocket.json +0 -56
  62. package/40-checker/results/entry/18/realweb/summary.json +0 -196
  63. package/40-checker/results/entry/18/realweb/ui-auth.json +0 -56
  64. package/40-checker/results/entry/18/realweb/ysr666__dsh-vision-router.json +0 -61
  65. package/40-checker/results/entry/18/richbase/REPORT.md +0 -70
  66. package/40-checker/results/entry/18/richbase/SeaOf0__dsh-redteam-model.json +0 -61
  67. package/40-checker/results/entry/18/richbase/SeaOf0__dsh-redteam-model.log +0 -38
  68. package/40-checker/results/entry/18/shaobeichen__dsh-pocket.json +0 -363
  69. package/40-checker/results/entry/18/status-rotator.json +0 -362
  70. package/40-checker/results/entry/18/status-rotator.runtime.json +0 -519
  71. package/40-checker/results/entry/18/summary.json +0 -266
  72. package/40-checker/results/entry/18/targetonly/DDDMUC__dsh-free-search.json +0 -34
  73. package/40-checker/results/entry/18/targetonly/Ebony-Vinyl__dsh-our-free-model.json +0 -34
  74. package/40-checker/results/entry/18/targetonly/SeaOf0__dsh-redteam-model.json +0 -84
  75. package/40-checker/results/entry/18/targetonly/YuJunZhiXue__dsh-purge.json +0 -52
  76. package/40-checker/results/entry/18/targetonly/ci-diet.json +0 -34
  77. package/40-checker/results/entry/18/targetonly/daily-log.json +0 -34
  78. package/40-checker/results/entry/18/targetonly/howmp__dsh-pentest.json +0 -46
  79. package/40-checker/results/entry/18/targetonly/kingcharleslzy-ai__dsh-purge.json +0 -61
  80. package/40-checker/results/entry/18/targetonly/liguobao__ds-harness-remote.json +0 -39
  81. package/40-checker/results/entry/18/targetonly/mmparko__dsh-purge.json +0 -57
  82. package/40-checker/results/entry/18/targetonly/project-memory.json +0 -34
  83. package/40-checker/results/entry/18/targetonly/qiushi.json +0 -34
  84. package/40-checker/results/entry/18/targetonly/shaobeichen__dsh-pocket.json +0 -34
  85. package/40-checker/results/entry/18/targetonly/status-rotator.json +0 -34
  86. package/40-checker/results/entry/18/targetonly/summary.json +0 -133
  87. package/40-checker/results/entry/18/targetonly/telemetry.json +0 -34
  88. package/40-checker/results/entry/18/targetonly/ui-auth.json +0 -34
  89. package/40-checker/results/entry/18/targetonly/verification.json +0 -34
  90. package/40-checker/results/entry/18/targetonly/ysr666__dsh-vision-router.json +0 -43
  91. package/40-checker/results/entry/18/telemetry.json +0 -349
  92. package/40-checker/results/entry/18/ui-auth.json +0 -369
  93. package/40-checker/results/entry/18/verification.json +0 -358
  94. package/40-checker/results/entry/18/ysr666__dsh-vision-router.json +0 -409
  95. package/40-checker/results/fixtures/bad.json +0 -347
  96. package/40-checker/results/fixtures/bundle.json +0 -378
  97. package/40-checker/results/fixtures/good-listing.json +0 -382
  98. package/40-checker/results/fixtures/good-static.json +0 -322
  99. package/40-checker/results/fixtures/good.json +0 -375
  100. package/40-checker/results/fixtures/good.sarif +0 -274
  101. package/40-checker/results/flow/README.md +0 -19
  102. package/40-checker/results/flow/j3-j7-fixture.json +0 -51
  103. package/40-checker/results/flow/j5-j8-client-missing.json +0 -45
  104. package/40-checker/results/flow/j5-j8-good.json +0 -45
  105. package/40-checker/results/flow/journey-fixture-bundle.json +0 -90
  106. package/40-checker/results/flow/journey-fixture-j1-j2-j4-j6.json +0 -107
  107. package/40-checker/results/flow/real/DDDMUC__dsh-free-search.json +0 -297
  108. package/40-checker/results/flow/real/REPORT.md +0 -335
  109. package/40-checker/results/flow/real/YuJunZhiXue__dsh-purge.json +0 -317
  110. package/40-checker/results/flow/real/ci-diet.json +0 -351
  111. package/40-checker/results/flow/real/daily-log.json +0 -286
  112. package/40-checker/results/flow/real/index.json +0 -325
  113. package/40-checker/results/flow/real/project-memory.json +0 -290
  114. package/40-checker/results/flow/real/qiushi.json +0 -277
  115. package/40-checker/results/flow/real/status-rotator.json +0 -275
  116. package/40-checker/results/flow/real/telemetry.json +0 -178
  117. package/40-checker/results/flow/real/ui-auth.json +0 -288
  118. package/40-checker/results/flow/real/verification.json +0 -265
  119. package/40-checker/results/governance/co-maintainer-packet.md +0 -85
  120. package/40-checker/results/l1/ci-diet.json +0 -406
  121. package/40-checker/results/l1/npm-dsh-telemetry-redactor-0.1.0.json +0 -390
  122. package/40-checker/results/l1/npm-dsh-verification-receipt-0.1.0.json +0 -406
  123. package/40-checker/results/l1/npm-qiushi-dsh-evidence-audit-0.1.0.json +0 -394
  124. package/40-checker/results/l1/npm-zzerx-dsh-plugin-daily-log-0.4.3.json +0 -405
  125. package/40-checker/results/l1/project-memory.json +0 -402
  126. package/40-checker/results/l1/source-DDDMUC__dsh-free-search.json +0 -422
  127. package/40-checker/results/l1/source-Ebony-Vinyl__dsh-our-free-model.json +0 -421
  128. package/40-checker/results/l1/source-SeaOf0__dsh-redteam-model.json +0 -432
  129. package/40-checker/results/l1/source-YuJunZhiXue__dsh-purge.json +0 -473
  130. package/40-checker/results/l1/source-howmp__dsh-pentest.json +0 -402
  131. package/40-checker/results/l1/source-kingcharleslzy-ai__dsh-purge.json +0 -452
  132. package/40-checker/results/l1/source-liguobao__ds-harness-remote.json +0 -420
  133. package/40-checker/results/l1/source-mmparko__dsh-purge.json +0 -482
  134. package/40-checker/results/l1/source-shaobeichen__dsh-pocket.json +0 -404
  135. package/40-checker/results/l1/source-ysr666__dsh-vision-router.json +0 -384
  136. package/40-checker/results/l1/status-rotator.json +0 -403
  137. package/40-checker/results/l1/ui-auth.json +0 -429
  138. package/40-checker/results/l1/ysr666__dsh-vision-router.published.json +0 -384
  139. package/40-checker/results/lev3/REPORT.md +0 -342
  140. package/40-checker/results/lev3/lev3.json +0 -4835
  141. package/40-checker/results/lev6/REPORT.md +0 -460
  142. package/40-checker/results/lev6/capture-sample.json +0 -241
  143. package/40-checker/results/lev6/capture.jsonl +0 -4
  144. package/40-checker/results/lev6/lev6.json +0 -245
  145. package/40-checker/results/lev6/replication-r1.json +0 -245
  146. package/40-checker/results/levels/README.md +0 -16
  147. package/40-checker/results/levels/dsh-plugin-doctor.json +0 -141
  148. package/40-checker/results/levels/dsh-plugin-guide.json +0 -136
  149. package/40-checker/results/m1/dsh-ci-diet-0.5.2.json +0 -352
  150. package/40-checker/results/m1/dsh-status-rotator-0.38.0.json +0 -349
  151. package/40-checker/results/m1/dsh-telemetry-redactor-0.1.0.json +0 -336
  152. package/40-checker/results/m1/dsh-ui-auth-0.7.1.json +0 -356
  153. package/40-checker/results/m1/dsh-verification-receipt-0.1.0.json +0 -344
  154. package/40-checker/results/m1/index-level.json +0 -13
  155. package/40-checker/results/m1/levels.json +0 -72100
  156. package/40-checker/results/m1/qiushi-dsh-evidence-audit-0.1.0.json +0 -339
  157. package/40-checker/results/m1/yolk_vat-y-dsh-project-memory-0.6.7.json +0 -348
  158. package/40-checker/results/m1/zzerx-dsh-plugin-daily-log-0.4.3.json +0 -344
  159. package/40-checker/results/m2/dsh-ci-diet.json +0 -421
  160. package/40-checker/results/m2/dsh-ci-diet.unshare-landlock.json +0 -424
  161. package/40-checker/results/m2/dsh-ci-diet.unshare.json +0 -423
  162. package/40-checker/results/m2/fixture-bundle.image.json +0 -404
  163. package/40-checker/results/m2/fixture-bundle.json +0 -392
  164. package/40-checker/results/m2/fixture-bundle.landlock.json +0 -396
  165. package/40-checker/results/m2/fixture-bundle.unshare.json +0 -395
  166. package/40-checker/results/m2/fs-write.json +0 -338
  167. package/40-checker/results/m2/hang.json +0 -31
  168. package/40-checker/results/m2/hang.unshare-landlock.json +0 -34
  169. package/40-checker/results/m2/hang.unshare.json +0 -33
  170. package/40-checker/results/m2/project-memory.json +0 -417
  171. package/40-checker/results/m2/status-rotator.json +0 -418
  172. package/40-checker/results/m2/ui-auth.json +0 -444
  173. package/40-checker/results/negative/bad-entry.json +0 -345
  174. package/40-checker/results/negative/no-entry.json +0 -345
  175. package/40-checker/results/negative/no-patch.json +0 -344
  176. package/40-checker/results/negative/root-missing.json +0 -344
  177. package/40-checker/results/negative/root-missing.runtime.json +0 -30
  178. package/40-checker/results/negative/summary.json +0 -51
  179. package/40-checker/results/negative/workspace.json +0 -344
  180. package/40-checker/results/patched/Ebony-Vinyl__dsh-our-free-model.json +0 -334
  181. package/40-checker/results/patched/Ebony-Vinyl__dsh-our-free-model.overlay.json +0 -335
  182. package/40-checker/results/patched/SeaOf0__dsh-redteam-model.json +0 -315
  183. package/40-checker/results/patched/SeaOf0__dsh-redteam-model.overlay.json +0 -316
  184. package/40-checker/results/patched/mmparko__dsh-purge.json +0 -357
  185. package/40-checker/results/patched/mmparko__dsh-purge.overlay.json +0 -358
  186. package/40-checker/results/patched/shaobeichen__dsh-pocket.json +0 -315
  187. package/40-checker/results/patched/shaobeichen__dsh-pocket.overlay.json +0 -316
  188. package/40-checker/results/real/DDDMUC__dsh-free-search.json +0 -344
  189. package/40-checker/results/real/Ebony-Vinyl__dsh-our-free-model.json +0 -343
  190. package/40-checker/results/real/SeaOf0__dsh-redteam-model.json +0 -354
  191. package/40-checker/results/real/YuJunZhiXue__dsh-purge.json +0 -395
  192. package/40-checker/results/real/howmp__dsh-pentest.json +0 -324
  193. package/40-checker/results/real/kingcharleslzy-ai__dsh-purge.json +0 -374
  194. package/40-checker/results/real/liguobao__ds-harness-remote.json +0 -342
  195. package/40-checker/results/real/mmparko__dsh-purge.json +0 -404
  196. package/40-checker/results/real/shaobeichen__dsh-pocket.json +0 -326
  197. package/40-checker/results/real/ysr666__dsh-vision-router.json +0 -372
  198. package/40-checker/results/real/ysr666__dsh-vision-router.listing.json +0 -378
  199. package/40-checker/results/round-robin/compare.json +0 -52
  200. package/40-checker/results/round-robin/runner-a.json +0 -9
  201. package/40-checker/results/round-robin/runner-b.json +0 -9
  202. package/40-checker/results/sample20/123dbl__dsh-side-session.json +0 -344
  203. package/40-checker/results/sample20/173787247__dsh-wsl-dns.json +0 -360
  204. package/40-checker/results/sample20/863683348__dsh-insight.json +0 -375
  205. package/40-checker/results/sample20/Ansellwan__DSH-Custom-Wallpaper.json +0 -344
  206. package/40-checker/results/sample20/Jamailar__beav-deepseek-harness.json +0 -341
  207. package/40-checker/results/sample20/ManoloRemiddi__DSH-Metafolder-Plugin.json +0 -344
  208. package/40-checker/results/sample20/NEAZ71eve__dsh-tool-github.json +0 -384
  209. package/40-checker/results/sample20/README.md +0 -3
  210. package/40-checker/results/sample20/RINGOLINK__dsh-desktop-shell.json +0 -352
  211. package/40-checker/results/sample20/Zxznb666__dsh-qoder-cn-subagent.json +0 -349
  212. package/40-checker/results/sample20/agent-mobile__dsh-mobile-gateway.json +0 -353
  213. package/40-checker/results/sample20/fangqiing__dsh-knowledge-lite.json +0 -359
  214. package/40-checker/results/sample20/fzy0517__deepseek-harness-session-cleaner.json +0 -344
  215. package/40-checker/results/sample20/gjy1992__dsh-diagram.json +0 -350
  216. package/40-checker/results/sample20/mrme000m__dsh-prime-orchestrator.json +0 -414
  217. package/40-checker/results/sample20/redstonedust__dsh-solidworks-copilot.json +0 -362
  218. package/40-checker/results/sample20/summary.json +0 -234
  219. package/40-checker/results/sample20/w2112515__dsh-remote-host.json +0 -344
  220. package/40-checker/results/sample20/wkfedor__deepseek-harness-voice-input.json +0 -350
  221. package/40-checker/results/sample20/xfgil__dsh-hot-reloader.json +0 -344
  222. package/40-checker/results/sample20/yizhiyizhi0128__dsh-peak-scheduler.json +0 -360
  223. package/40-checker/results/sample20-ci/123dbl__dsh-side-session.json +0 -344
  224. package/40-checker/results/sample20-ci/173787247__dsh-wsl-dns.json +0 -360
  225. package/40-checker/results/sample20-ci/863683348__dsh-insight.json +0 -375
  226. package/40-checker/results/sample20-ci/Ansellwan__DSH-Custom-Wallpaper.json +0 -344
  227. package/40-checker/results/sample20-ci/Jamailar__beav-deepseek-harness.json +0 -367
  228. package/40-checker/results/sample20-ci/ManoloRemiddi__DSH-Metafolder-Plugin.json +0 -344
  229. package/40-checker/results/sample20-ci/NEAZ71eve__dsh-tool-github.json +0 -392
  230. package/40-checker/results/sample20-ci/README.md +0 -5
  231. package/40-checker/results/sample20-ci/RINGOLINK__dsh-desktop-shell.json +0 -361
  232. package/40-checker/results/sample20-ci/Zxznb666__dsh-qoder-cn-subagent.json +0 -349
  233. package/40-checker/results/sample20-ci/agent-mobile__dsh-mobile-gateway.json +0 -384
  234. package/40-checker/results/sample20-ci/fangqiing__dsh-knowledge-lite.json +0 -360
  235. package/40-checker/results/sample20-ci/fzy0517__deepseek-harness-session-cleaner.json +0 -354
  236. package/40-checker/results/sample20-ci/gjy1992__dsh-diagram.json +0 -381
  237. package/40-checker/results/sample20-ci/mrme000m__dsh-prime-orchestrator.json +0 -452
  238. package/40-checker/results/sample20-ci/redstonedust__dsh-solidworks-copilot.json +0 -371
  239. package/40-checker/results/sample20-ci/summary.json +0 -195
  240. package/40-checker/results/sample20-ci/w2112515__dsh-remote-host.json +0 -399
  241. package/40-checker/results/sample20-ci/wkfedor__deepseek-harness-voice-input.json +0 -358
  242. package/40-checker/results/sample20-ci/xfgil__dsh-hot-reloader.json +0 -344
  243. package/40-checker/results/sample20-ci/yizhiyizhi0128__dsh-peak-scheduler.json +0 -370
  244. package/40-checker/results/sample20-ci/zed1902209846-dotcom__DPwhale-plugin.json +0 -231
  245. package/40-checker/results/sample60/123dbl__dsh-side-session.json +0 -344
  246. package/40-checker/results/sample60/173787247__dsh-wsl-dns.json +0 -360
  247. package/40-checker/results/sample60/863683348__dsh-insight.json +0 -375
  248. package/40-checker/results/sample60/Anionex__dsh-turn-rewind.json +0 -349
  249. package/40-checker/results/sample60/Ansellwan__DSH-Custom-Wallpaper.json +0 -344
  250. package/40-checker/results/sample60/Ebony-Vinyl__EAC-Pack.json +0 -352
  251. package/40-checker/results/sample60/EricWang1358__dsh-web-studyhub.json +0 -376
  252. package/40-checker/results/sample60/GanyuanRan__Aegis.json +0 -349
  253. package/40-checker/results/sample60/HiSeax__dsh-codely.json +0 -358
  254. package/40-checker/results/sample60/Jamailar__beav-deepseek-harness.json +0 -341
  255. package/40-checker/results/sample60/ManoloRemiddi__DSH-Metafolder-Plugin.json +0 -344
  256. package/40-checker/results/sample60/MichengAI__dsh-archive-manager.json +0 -357
  257. package/40-checker/results/sample60/MichengAI__dsh-im-connect.json +0 -347
  258. package/40-checker/results/sample60/MindLab-Research__dsh-generative-ui.json +0 -350
  259. package/40-checker/results/sample60/NEAZ71eve__dsh-tool-github.json +0 -384
  260. package/40-checker/results/sample60/README.md +0 -7
  261. package/40-checker/results/sample60/RINGOLINK__dsh-desktop-shell.json +0 -352
  262. package/40-checker/results/sample60/SeanTolstoyevski__dsh-code-review.json +0 -352
  263. package/40-checker/results/sample60/Tasihi89__dsh-talk-map.json +0 -344
  264. package/40-checker/results/sample60/Tyan66666__billion-context-dsh.json +0 -469
  265. package/40-checker/results/sample60/V1ki__dsh-plugin-subscriptions.json +0 -350
  266. package/40-checker/results/sample60/Yu-tao-Li__dsh-computer-use-win.json +0 -341
  267. package/40-checker/results/sample60/ZSeven-W__dsh-ios.json +0 -344
  268. package/40-checker/results/sample60/Zxznb666__dsh-qoder-cn-subagent.json +0 -349
  269. package/40-checker/results/sample60/agent-mobile__dsh-mobile-gateway.json +0 -353
  270. package/40-checker/results/sample60/c3cvld7aag__fujiang-dsh.json +0 -361
  271. package/40-checker/results/sample60/cxzrdxy__dsh-file-explorer.json +0 -389
  272. package/40-checker/results/sample60/dhicoc__dsh-reverse-skill.json +0 -341
  273. package/40-checker/results/sample60/fangqiing__dsh-knowledge-lite.json +0 -359
  274. package/40-checker/results/sample60/fwerkor__local-shell-mcp.json +0 -369
  275. package/40-checker/results/sample60/fzy0517__deepseek-harness-session-cleaner.json +0 -344
  276. package/40-checker/results/sample60/gjy1992__dsh-diagram.json +0 -350
  277. package/40-checker/results/sample60/howmp__dsh-pentest.json +0 -341
  278. package/40-checker/results/sample60/linhay__harmony-next.skills.json +0 -344
  279. package/40-checker/results/sample60/liustack__modsearch.json +0 -371
  280. package/40-checker/results/sample60/mmparko__dsh-purge.json +0 -372
  281. package/40-checker/results/sample60/mrme000m__dsh-prime-orchestrator.json +0 -414
  282. package/40-checker/results/sample60/omdsh-dev__dsh_workflow.json +0 -439
  283. package/40-checker/results/sample60/redstonedust__dsh-solidworks-copilot.json +0 -362
  284. package/40-checker/results/sample60/seriousz158__dsh-memory.json +0 -350
  285. package/40-checker/results/sample60/shanliuling__dsh-image-gen.json +0 -353
  286. package/40-checker/results/sample60/shanliuling__skills-link.json +0 -344
  287. package/40-checker/results/sample60/shengsheng90__DSH-taskboard.json +0 -341
  288. package/40-checker/results/sample60/sjh9714__dsh-win32.json +0 -374
  289. package/40-checker/results/sample60/skymecode__deepseek-harness-for-vscode.json +0 -351
  290. package/40-checker/results/sample60/sopaco__terrain.json +0 -352
  291. package/40-checker/results/sample60/summary.json +0 -658
  292. package/40-checker/results/sample60/tinqiao-oss__engramory.json +0 -352
  293. package/40-checker/results/sample60/tong-io__tongflow.json +0 -359
  294. package/40-checker/results/sample60/vibeinging__dsh-desktop.json +0 -382
  295. package/40-checker/results/sample60/w2112515__dsh-remote-host.json +0 -344
  296. package/40-checker/results/sample60/wkfedor__deepseek-harness-voice-input.json +0 -350
  297. package/40-checker/results/sample60/wz20__dsh-dafeiyu-dot.json +0 -349
  298. package/40-checker/results/sample60/xfgil__dsh-hot-reloader.json +0 -344
  299. package/40-checker/results/sample60/yi-yezhiqiu__dsh-prompt-market.json +0 -360
  300. package/40-checker/results/sample60/yizhiyizhi0128__dsh-peak-scheduler.json +0 -360
  301. package/40-checker/results/sample60/yjh051108__dsh-routing-suite.json +0 -366
  302. package/40-checker/results/sample60-ci/123dbl__dsh-side-session.json +0 -344
  303. package/40-checker/results/sample60-ci/173787247__dsh-wsl-dns.json +0 -360
  304. package/40-checker/results/sample60-ci/863683348__dsh-insight.json +0 -375
  305. package/40-checker/results/sample60-ci/Anionex__dsh-turn-rewind.json +0 -379
  306. package/40-checker/results/sample60-ci/Ansellwan__DSH-Custom-Wallpaper.json +0 -344
  307. package/40-checker/results/sample60-ci/Ebony-Vinyl__EAC-Pack.json +0 -362
  308. package/40-checker/results/sample60-ci/EricWang1358__dsh-web-studyhub.json +0 -378
  309. package/40-checker/results/sample60-ci/GanyuanRan__Aegis.json +0 -349
  310. package/40-checker/results/sample60-ci/HiSeax__dsh-codely.json +0 -368
  311. package/40-checker/results/sample60-ci/Jamailar__beav-deepseek-harness.json +0 -367
  312. package/40-checker/results/sample60-ci/LiarMTTT__TavernWeave.json +0 -231
  313. package/40-checker/results/sample60-ci/ManoloRemiddi__DSH-Metafolder-Plugin.json +0 -344
  314. package/40-checker/results/sample60-ci/MichengAI__dsh-archive-manager.json +0 -395
  315. package/40-checker/results/sample60-ci/MichengAI__dsh-im-connect.json +0 -404
  316. package/40-checker/results/sample60-ci/MindLab-Research__dsh-generative-ui.json +0 -410
  317. package/40-checker/results/sample60-ci/NEAZ71eve__dsh-tool-github.json +0 -392
  318. package/40-checker/results/sample60-ci/README.md +0 -7
  319. package/40-checker/results/sample60-ci/RINGOLINK__dsh-desktop-shell.json +0 -361
  320. package/40-checker/results/sample60-ci/Ruler4396__dsh-launcher.json +0 -231
  321. package/40-checker/results/sample60-ci/SeanTolstoyevski__dsh-code-review.json +0 -363
  322. package/40-checker/results/sample60-ci/Tasihi89__dsh-talk-map.json +0 -372
  323. package/40-checker/results/sample60-ci/Tyan66666__billion-context-dsh.json +0 -469
  324. package/40-checker/results/sample60-ci/V1ki__dsh-plugin-subscriptions.json +0 -368
  325. package/40-checker/results/sample60-ci/Yu-tao-Li__dsh-computer-use-win.json +0 -349
  326. package/40-checker/results/sample60-ci/ZSeven-W__dsh-ios.json +0 -344
  327. package/40-checker/results/sample60-ci/Zxznb666__dsh-qoder-cn-subagent.json +0 -349
  328. package/40-checker/results/sample60-ci/agent-mobile__dsh-mobile-gateway.json +0 -384
  329. package/40-checker/results/sample60-ci/c3cvld7aag__fujiang-dsh.json +0 -361
  330. package/40-checker/results/sample60-ci/cxzrdxy__dsh-file-explorer.json +0 -399
  331. package/40-checker/results/sample60-ci/dhicoc__dsh-reverse-skill.json +0 -352
  332. package/40-checker/results/sample60-ci/fangqiing__dsh-knowledge-lite.json +0 -360
  333. package/40-checker/results/sample60-ci/fwerkor__local-shell-mcp.json +0 -387
  334. package/40-checker/results/sample60-ci/fzy0517__deepseek-harness-session-cleaner.json +0 -354
  335. package/40-checker/results/sample60-ci/gjy1992__dsh-diagram.json +0 -381
  336. package/40-checker/results/sample60-ci/howmp__dsh-pentest.json +0 -361
  337. package/40-checker/results/sample60-ci/linhay__harmony-next.skills.json +0 -344
  338. package/40-checker/results/sample60-ci/liustack__modsearch.json +0 -382
  339. package/40-checker/results/sample60-ci/mmparko__dsh-purge.json +0 -441
  340. package/40-checker/results/sample60-ci/mrme000m__dsh-prime-orchestrator.json +0 -452
  341. package/40-checker/results/sample60-ci/omdsh-dev__dsh_workflow.json +0 -439
  342. package/40-checker/results/sample60-ci/plastic-labs__honcho.json +0 -231
  343. package/40-checker/results/sample60-ci/redstonedust__dsh-solidworks-copilot.json +0 -371
  344. package/40-checker/results/sample60-ci/seriousz158__dsh-memory.json +0 -351
  345. package/40-checker/results/sample60-ci/shanliuling__dsh-image-gen.json +0 -382
  346. package/40-checker/results/sample60-ci/shanliuling__skills-link.json +0 -344
  347. package/40-checker/results/sample60-ci/shengsheng90__DSH-taskboard.json +0 -370
  348. package/40-checker/results/sample60-ci/sjh9714__dsh-win32.json +0 -410
  349. package/40-checker/results/sample60-ci/skymecode__deepseek-harness-for-vscode.json +0 -391
  350. package/40-checker/results/sample60-ci/sopaco__deepwiki-rs.json +0 -231
  351. package/40-checker/results/sample60-ci/sopaco__terrain.json +0 -352
  352. package/40-checker/results/sample60-ci/summary.json +0 -555
  353. package/40-checker/results/sample60-ci/tinqiao-oss__engramory.json +0 -362
  354. package/40-checker/results/sample60-ci/tong-io__tongflow.json +0 -393
  355. package/40-checker/results/sample60-ci/vibeinging__dsh-desktop.json +0 -555
  356. package/40-checker/results/sample60-ci/w2112515__dsh-remote-host.json +0 -399
  357. package/40-checker/results/sample60-ci/wkfedor__deepseek-harness-voice-input.json +0 -358
  358. package/40-checker/results/sample60-ci/wz20__dsh-dafeiyu-dot.json +0 -390
  359. package/40-checker/results/sample60-ci/xfgil__dsh-hot-reloader.json +0 -344
  360. package/40-checker/results/sample60-ci/yi-yezhiqiu__dsh-prompt-market.json +0 -373
  361. package/40-checker/results/sample60-ci/yizhiyizhi0128__dsh-peak-scheduler.json +0 -370
  362. package/40-checker/results/sample60-ci/yjh051108__dsh-routing-suite.json +0 -437
  363. package/40-checker/results/sample60-ci/zed1902209846-dotcom__DPwhale-plugin.json +0 -231
  364. package/40-checker/results/triage/REPORT.md +0 -317
  365. package/40-checker/results/triage/evidence/g2-rejections.txt +0 -63
  366. package/40-checker/results/triage/evidence/purge-baseline-0.2.1-rc.5.json +0 -51
  367. package/40-checker/results/triage/evidence/purge-baseline-0.2.2-alpha.2.json +0 -51
  368. package/40-checker/results/triage/evidence/purge-postinstall.txt +0 -62
  369. package/40-checker/results/triage/evidence/purge-with-profile-0.2.1-rc.5.json +0 -71
  370. package/40-checker/results/triage/evidence/purge-with-profile-0.2.2-alpha.2.json +0 -71
  371. package/40-checker/results/triage/evidence/semver-matrix.json +0 -32
  372. package/40-checker/results/triage/triage.json +0 -295
  373. package/40-checker/results/webapp/README.md +0 -10
  374. package/40-checker/results/webapp/summary.json +0 -46
  375. package/40-checker/results/webapp/web-auth.json +0 -19
  376. package/40-checker/results/webruntime/DDDMUC__dsh-free-search/client-export.json +0 -7
  377. package/40-checker/results/webruntime/DDDMUC__dsh-free-search/installed-package.json +0 -123
  378. package/40-checker/results/webruntime/DDDMUC__dsh-free-search/probe.json +0 -129
  379. package/40-checker/results/webruntime/DDDMUC__dsh-free-search/shot.png +0 -0
  380. package/40-checker/results/webruntime/DDDMUC__dsh-free-search/summary.md +0 -16
  381. package/40-checker/results/webruntime/Ebony-Vinyl__dsh-our-free-model/client-export.json +0 -7
  382. package/40-checker/results/webruntime/Ebony-Vinyl__dsh-our-free-model/installed-package.json +0 -76
  383. package/40-checker/results/webruntime/Ebony-Vinyl__dsh-our-free-model/probe.json +0 -129
  384. package/40-checker/results/webruntime/Ebony-Vinyl__dsh-our-free-model/shot.png +0 -0
  385. package/40-checker/results/webruntime/Ebony-Vinyl__dsh-our-free-model/summary.md +0 -16
  386. package/40-checker/results/webruntime/REPORT.md +0 -253
  387. package/40-checker/results/webruntime/SeaOf0__dsh-redteam-model/client-export.json +0 -7
  388. package/40-checker/results/webruntime/SeaOf0__dsh-redteam-model/installed-package.json +0 -97
  389. package/40-checker/results/webruntime/SeaOf0__dsh-redteam-model/probe.json +0 -129
  390. package/40-checker/results/webruntime/SeaOf0__dsh-redteam-model/shot.png +0 -0
  391. package/40-checker/results/webruntime/SeaOf0__dsh-redteam-model/summary.md +0 -16
  392. package/40-checker/results/webruntime/YuJunZhiXue__dsh-purge/client-export.json +0 -7
  393. package/40-checker/results/webruntime/YuJunZhiXue__dsh-purge/installed-package.json +0 -98
  394. package/40-checker/results/webruntime/YuJunZhiXue__dsh-purge/probe.json +0 -136
  395. package/40-checker/results/webruntime/YuJunZhiXue__dsh-purge/shot.png +0 -0
  396. package/40-checker/results/webruntime/YuJunZhiXue__dsh-purge/summary.md +0 -16
  397. package/40-checker/results/webruntime/ci-diet/client-export.json +0 -10
  398. package/40-checker/results/webruntime/ci-diet/installed-package.json +0 -100
  399. package/40-checker/results/webruntime/ci-diet/probe.json +0 -129
  400. package/40-checker/results/webruntime/ci-diet/shot.png +0 -0
  401. package/40-checker/results/webruntime/ci-diet/summary.md +0 -16
  402. package/40-checker/results/webruntime/daily-log/client-export.json +0 -10
  403. package/40-checker/results/webruntime/daily-log/installed-package.json +0 -113
  404. package/40-checker/results/webruntime/daily-log/probe.json +0 -129
  405. package/40-checker/results/webruntime/daily-log/shot.png +0 -0
  406. package/40-checker/results/webruntime/daily-log/summary.md +0 -16
  407. package/40-checker/results/webruntime/howmp__dsh-pentest/client-export.json +0 -7
  408. package/40-checker/results/webruntime/howmp__dsh-pentest/installed-package.json +0 -90
  409. package/40-checker/results/webruntime/howmp__dsh-pentest/probe.json +0 -129
  410. package/40-checker/results/webruntime/howmp__dsh-pentest/shot.png +0 -0
  411. package/40-checker/results/webruntime/howmp__dsh-pentest/summary.md +0 -16
  412. package/40-checker/results/webruntime/kingcharleslzy-ai__dsh-purge/client-export.json +0 -7
  413. package/40-checker/results/webruntime/kingcharleslzy-ai__dsh-purge/installed-package.json +0 -164
  414. package/40-checker/results/webruntime/kingcharleslzy-ai__dsh-purge/probe.json +0 -129
  415. package/40-checker/results/webruntime/kingcharleslzy-ai__dsh-purge/shot.png +0 -0
  416. package/40-checker/results/webruntime/kingcharleslzy-ai__dsh-purge/summary.md +0 -16
  417. package/40-checker/results/webruntime/liguobao__ds-harness-remote/client-export.json +0 -7
  418. package/40-checker/results/webruntime/liguobao__ds-harness-remote/installed-package.json +0 -166
  419. package/40-checker/results/webruntime/liguobao__ds-harness-remote/probe.json +0 -129
  420. package/40-checker/results/webruntime/liguobao__ds-harness-remote/shot.png +0 -0
  421. package/40-checker/results/webruntime/liguobao__ds-harness-remote/summary.md +0 -16
  422. package/40-checker/results/webruntime/local-pre-ci/README.md +0 -67
  423. package/40-checker/results/webruntime/local-pre-ci/client-exports.json +0 -158
  424. package/40-checker/results/webruntime/local-pre-ci/dsh-free-search.probe.json +0 -119
  425. package/40-checker/results/webruntime/local-pre-ci/dsh-pocket.probe.json +0 -119
  426. package/40-checker/results/webruntime/local-pre-ci/dsh-redteam-model.probe.json +0 -119
  427. package/40-checker/results/webruntime/local-pre-ci/qiushi-shell-only.probe.json +0 -104
  428. package/40-checker/results/webruntime/local-pre-ci/ui-auth-no-login.fail.json +0 -52
  429. package/40-checker/results/webruntime/local-pre-ci/ui-auth.probe.json +0 -123
  430. package/40-checker/results/webruntime/mmparko__dsh-purge/client-export.json +0 -7
  431. package/40-checker/results/webruntime/mmparko__dsh-purge/installed-package.json +0 -95
  432. package/40-checker/results/webruntime/mmparko__dsh-purge/probe.json +0 -136
  433. package/40-checker/results/webruntime/mmparko__dsh-purge/shot.png +0 -0
  434. package/40-checker/results/webruntime/mmparko__dsh-purge/summary.md +0 -16
  435. package/40-checker/results/webruntime/project-memory/client-export.json +0 -7
  436. package/40-checker/results/webruntime/project-memory/installed-package.json +0 -118
  437. package/40-checker/results/webruntime/project-memory/probe.json +0 -129
  438. package/40-checker/results/webruntime/project-memory/shot.png +0 -0
  439. package/40-checker/results/webruntime/project-memory/summary.md +0 -16
  440. package/40-checker/results/webruntime/qiushi/client-export.json +0 -7
  441. package/40-checker/results/webruntime/qiushi/installed-package.json +0 -84
  442. package/40-checker/results/webruntime/qiushi/probe.json +0 -114
  443. package/40-checker/results/webruntime/qiushi/shot.png +0 -0
  444. package/40-checker/results/webruntime/qiushi/summary.md +0 -16
  445. package/40-checker/results/webruntime/shaobeichen__dsh-pocket/client-export.json +0 -7
  446. package/40-checker/results/webruntime/shaobeichen__dsh-pocket/installed-package.json +0 -85
  447. package/40-checker/results/webruntime/shaobeichen__dsh-pocket/probe.json +0 -129
  448. package/40-checker/results/webruntime/shaobeichen__dsh-pocket/shot.png +0 -0
  449. package/40-checker/results/webruntime/shaobeichen__dsh-pocket/summary.md +0 -16
  450. package/40-checker/results/webruntime/status-rotator/client-export.json +0 -7
  451. package/40-checker/results/webruntime/status-rotator/installed-package.json +0 -107
  452. package/40-checker/results/webruntime/status-rotator/probe.json +0 -129
  453. package/40-checker/results/webruntime/status-rotator/shot.png +0 -0
  454. package/40-checker/results/webruntime/status-rotator/summary.md +0 -16
  455. package/40-checker/results/webruntime/summary.json +0 -323
  456. package/40-checker/results/webruntime/telemetry/probe.json +0 -20
  457. package/40-checker/results/webruntime/telemetry/summary.md +0 -4
  458. package/40-checker/results/webruntime/ui-auth/client-export.json +0 -7
  459. package/40-checker/results/webruntime/ui-auth/installed-package.json +0 -94
  460. package/40-checker/results/webruntime/ui-auth/probe.json +0 -129
  461. package/40-checker/results/webruntime/ui-auth/shot.png +0 -0
  462. package/40-checker/results/webruntime/ui-auth/summary.md +0 -16
  463. package/40-checker/results/webruntime/verification/probe.json +0 -20
  464. package/40-checker/results/webruntime/verification/summary.md +0 -4
  465. package/40-checker/results/webruntime/ysr666__dsh-vision-router/client-export.json +0 -7
  466. package/40-checker/results/webruntime/ysr666__dsh-vision-router/installed-package.json +0 -142
  467. package/40-checker/results/webruntime/ysr666__dsh-vision-router/probe.json +0 -129
  468. package/40-checker/results/webruntime/ysr666__dsh-vision-router/shot.png +0 -0
  469. package/40-checker/results/webruntime/ysr666__dsh-vision-router/summary.md +0 -16
@@ -3,7 +3,7 @@
3
3
  > 版本:0.1.0 | 日期:2026-10-31 | 标准:DS-C v1.0.0 | 许可:Apache-2.0
4
4
  > 零依赖,Node ≥ 20。只读目标包;不修改被检对象。
5
5
  >
6
- > **未发布到 npm。** npm 上的 `dsh-plugin-verify` 是另一个项目;`dsh-levels` 也是第三方包。请从本仓运行 `node bin/...`,不要 `npx dsh-plugin-verify` / `npx dsh-levels`。
6
+ > **发行方式**:本仓直接运行时用 `node 40-checker/bin/...`;npm 上通过 `dsh-standards` 包分发(提供 `dsh-standards` 与 `dsh-levels` 两个命令)。不要用 `npx dsh-plugin-verify`、`npx dsh-levels`——npm 上这两个名字属于其他项目。
7
7
 
8
8
  ## 1. 它做什么
9
9
 
@@ -50,7 +50,7 @@ node bin/dsh-plugin-verify.mjs /path/to/plugin --format sarif --out report.sarif
50
50
  # package:作者本地
51
51
  node bin/dsh-plugin-verify.mjs ./my-plugin
52
52
 
53
- # listing:市场门禁
53
+ # listing:市场条目校验(收录前提醒,不是门禁)
54
54
  node bin/dsh-plugin-verify.mjs ./my-plugin \
55
55
  --profile listing \
56
56
  --market-index ./market.json \
@@ -13,7 +13,7 @@ const DEFAULT_COMMIT = 'ce7073d51254c26cd63b22a60835b8f948deb447'
13
13
  const DEFAULT_CORDIS = '4.0.6-alpha.1'
14
14
 
15
15
  function usage() {
16
- return `dsh-plugin-verify ${VERSION} — DS-C conformance checker (MVP)
16
+ return `${process.env.DSH_CHECKER_BRAND || 'dsh-plugin-verify ' + VERSION} — DS-C conformance checker (MVP)
17
17
 
18
18
  Usage:
19
19
  dsh-plugin-verify <package-dir> [options]
@@ -31,6 +31,19 @@ function inside(root, target) {
31
31
  export function resolveEntry(dir, manifest) {
32
32
  const candidates = []
33
33
  const exportTarget = rootExportTarget(manifest)
34
+ if (exportTarget) {
35
+ const absolute = path.resolve(dir, exportTarget)
36
+ if (!inside(dir, absolute)) {
37
+ return { exists: false, escape: true, source: 'exports["."]', target: exportTarget, absolute }
38
+ }
39
+ if (!isFile(absolute)) {
40
+ const sourceCandidates = ['src/index.ts', 'src/index.tsx', 'src/index.js', 'src/index.mjs']
41
+ const sourceEntry = sourceCandidates.find(relative => isFile(path.join(dir, relative))) ?? null
42
+ const scripts = isObject(manifest.scripts) ? manifest.scripts : {}
43
+ const buildHint = Boolean(sourceEntry) || ['build', 'prepare', 'compile'].some(name => typeof scripts[name] === 'string')
44
+ return { exists: false, escape: false, source: 'exports["."]', target: exportTarget, absolute, declaredMissing: true, sourceEntry, buildHint }
45
+ }
46
+ }
34
47
  if (exportTarget) candidates.push({ source: 'exports["."]', target: exportTarget })
35
48
  if (typeof manifest.main === 'string' && manifest.main.trim() !== '') candidates.push({ source: 'main', target: manifest.main })
36
49
  for (const fallback of ['index.js', 'index.mjs', 'index.cjs', 'index.ts']) candidates.push({ source: 'fallback', target: fallback })
@@ -183,6 +196,10 @@ export function runManifestChecks(dir, options = {}) {
183
196
  }
184
197
  if (entry.escape) {
185
198
  manifestDetails.push(detail('C-1.2', 'FAIL', `entry escapes the package: ${entry.target}`, ['package.json#exports']))
199
+ } else if (entry.declaredMissing && entry.buildHint) {
200
+ manifestDetails.push(detail('C-1.2', 'WARN', `exports["."] target missing; build hint exists (${entry.sourceEntry ?? 'build script'})`, ['package.json#exports']))
201
+ } else if (entry.declaredMissing) {
202
+ manifestDetails.push(detail('C-1.2', 'FAIL', `exports["."] points to a missing file: ${entry.target}`, ['package.json#exports']))
186
203
  } else if (entry.exists) {
187
204
  manifestDetails.push(detail('C-1.2', 'PASS', `entry resolves via ${entry.source}: ${entry.relative}`, [entry.relative]))
188
205
  } else if (entry.buildHint) {
@@ -63,19 +63,85 @@ function upperForTilde(version) {
63
63
  return { ...version, minor: version.minor + 1, patch: 0, prerelease: [] }
64
64
  }
65
65
 
66
- function tokenizeAlternative(alternative) {
67
- const tokens = []
66
+ function parsePartial(text) {
67
+ const match = /^v?(\d+)(?:\.(\d+|[xX*]))?(?:\.(\d+|[xX*]))?(?:-([0-9A-Za-z.-]+))?$/.exec(text.trim())
68
+ if (!match) return null
69
+ return {
70
+ major: Number(match[1]),
71
+ minor: match[2] === undefined || /[xX*]/.test(match[2]) ? null : Number(match[2]),
72
+ patch: match[3] === undefined || /[xX*]/.test(match[3]) ? null : Number(match[3]),
73
+ prerelease: match[4] ? match[4].split('.') : [],
74
+ }
75
+ }
76
+
77
+ function fullVersion(partial) {
78
+ return { major: partial.major, minor: partial.minor ?? 0, patch: partial.patch ?? 0, prerelease: partial.prerelease }
79
+ }
80
+ function nextMinor(partial) { return { major: partial.major, minor: (partial.minor ?? 0) + 1, patch: 0, prerelease: [] } }
81
+ function nextMajor(partial) { return { major: partial.major + 1, minor: 0, patch: 0, prerelease: [] } }
82
+ function fmt(version) {
83
+ const base = `${version.major}.${version.minor}.${version.patch}`
84
+ return version.prerelease && version.prerelease.length ? `${base}-${version.prerelease.join('.')}` : base
85
+ }
86
+
87
+ function expandToken(raw) {
88
+ if (raw === '*' || raw === 'x' || raw === 'X') return '*'
89
+ const match = /^(>=|<=|>|<|=|\^|~)?\s*v?(\d+)(?:\.(\d+|[xX*]))?(?:\.(\d+|[xX*]))?(?:-([0-9A-Za-z.-]+))?$/.exec(raw)
90
+ if (!match) return null
91
+ const op = match[1] ?? '='
92
+ const partial = {
93
+ major: Number(match[2]),
94
+ minor: match[3] === undefined || /[xX*]/.test(match[3]) ? null : Number(match[3]),
95
+ patch: match[4] === undefined || /[xX*]/.test(match[4]) ? null : Number(match[4]),
96
+ prerelease: match[5] ? match[5].split('.') : [],
97
+ }
98
+ const low = fullVersion(partial)
99
+ const noMinor = partial.minor === null
100
+ const noPatch = partial.patch === null
101
+ if (!noMinor && !noPatch) return `${op}${fmt(low)}`
102
+ switch (op) {
103
+ case '^':
104
+ case '~':
105
+ case '=':
106
+ return noMinor ? `>=${fmt(low)} <${fmt(nextMajor(partial))}` : `>=${fmt(low)} <${fmt(nextMinor(partial))}`
107
+ case '>=': return `>=${fmt(low)}`
108
+ case '>': return noMinor ? `>=${fmt(nextMajor(partial))}` : `>=${fmt(nextMinor(partial))}`
109
+ case '<': return `<${fmt(low)}`
110
+ case '<=': return noMinor ? `<${fmt(nextMajor(partial))}` : `<${fmt(nextMinor(partial))}`
111
+ default: return null
112
+ }
113
+ }
114
+
115
+ /** Hyphen ranges and x-ranges are normalized before tokenizing. */
116
+ function expandAlternative(alternative) {
68
117
  const text = alternative.trim()
69
- if (text === '' || text === '*' || text === 'x' || text === 'X') return [{ op: '*', version: null }]
70
- // Insert a space between a comparator and its version when written as ">=1.2.3"
71
- // (already no space) and split on whitespace.
118
+ if (text === '' || text === '*' || text === 'x' || text === 'X') return '*'
119
+ const hyphen = /^(.+?)\s+-\s+(.+)$/.exec(text)
120
+ if (hyphen) {
121
+ const left = parsePartial(hyphen[1])
122
+ const right = parsePartial(hyphen[2])
123
+ if (!left || !right) return null
124
+ const low = `>=${fmt(fullVersion(left))}`
125
+ if (right.minor === null) return `${low} <${fmt(nextMajor(right))}`
126
+ if (right.patch === null) return `${low} <${fmt(nextMinor(right))}`
127
+ return `${low} <=${fmt(fullVersion(right))}`
128
+ }
129
+ const parts = []
72
130
  for (const raw of text.split(/\s+/)) {
73
- let token = raw
74
- if (token === '*' || token === 'x' || token === 'X') {
75
- tokens.push({ op: '*', version: null })
76
- continue
77
- }
78
- const match = /^(>=|<=|>|<|=|\^|~)?\s*v?(\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?)$/.exec(token)
131
+ const expanded = expandToken(raw)
132
+ if (expanded === null) return null
133
+ parts.push(expanded)
134
+ }
135
+ return parts.join(' ')
136
+ }
137
+
138
+ function tokenizeAlternative(alternative) {
139
+ const expanded = expandAlternative(alternative)
140
+ if (expanded === null) return null
141
+ if (expanded === '*') return [{ op: '*', version: null }]
142
+ const tokens = []
143
+ for (const raw of expanded.split(/\s+/)) {
144
+ const match = /^(>=|<=|>|<|=|\^|~)?\s*v?(\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?)$/.exec(raw)
79
145
  if (!match) return null
80
146
  const op = match[1] ?? '='
81
147
  const version = parseVersion(match[2])
package/CHANGELOG.md ADDED
@@ -0,0 +1,24 @@
1
+ ## 1.0.1 — 2026-11-03
2
+
3
+ - 打包:`files` 收窄,不再把 `40-checker/results/` 打进 npm 包(此前包含第三方插件结果、截图与本机路径)。
4
+ - 文档:`npx dsh-levels` 会装到第三方包,改为 `npx -p dsh-standards dsh-levels`;修正不存在的 `bin/` 路径;测试数 73→98。
5
+ - CLI:`dsh-standards --help` 首行显示自己的包名与版本。
6
+ - 检查器:`exports["."]` 指向缺失文件时不再回退到 `main`。
7
+
8
+ # Changelog
9
+
10
+ ## 2026-11-03 — Node 24.9 baseline
11
+ - Require Node >=24.9.0 to match DeepSeek Harness 0.2.2-alpha.3.
12
+
13
+ ## 2026-11-02 — P0–P2, Apache-2.0, and attestation migration
14
+
15
+ - Renamed certificate → attestation (`dsh-attestation/1`, `DSH-ATT-*`,
16
+ `publish/attestations/`); historical docs carry a migration banner.
17
+ - Added the gap ledger (43), role governance (44), and three-purpose kits (45).
18
+ - Added `scheme/`, `spec/clauses.json`, `spec/reference-suite.json`,
19
+ `spec/schemas/report.schema.json`, `evidence/` hash chain.
20
+ - Added G4 static check, clause-map, stale-check, surveillance, dashboard.
21
+ - Added developer/official/market kits and `publish/verify.mjs` / `verify.html`.
22
+ - CI: governance checks, 73 tests, attestation verify, shell syntax, cross-platform matrix.
23
+ - License: text CC BY 4.0 with a required Change Notice; code Apache-2.0 (D-013); marks separate.
24
+ - Cross-repo: portal `f882144`, guide `e75cd9f`, kit `9897213`, catalog `a272d06`, certification `2f27666`, cert-mcp `4f0cf72`.
package/NOTICE ADDED
@@ -0,0 +1,14 @@
1
+ DSH standards
2
+ Copyright 2026 PerryLink
3
+
4
+ Text/specifications/documentation: CC BY 4.0 (LICENSE-CC-BY).
5
+ Modifications must carry a prominent Change Notice (MODIFICATION-POLICY.md).
6
+ Code/scripts/schemas: Apache License 2.0 (LICENSE-APACHE).
7
+
8
+ Unless required by applicable law or agreed to in writing, software is
9
+ distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND.
10
+ See the applicable license for the specific language.
11
+
12
+ The words DSH-ENTRY, DSH-FLOW, DSH-BOOST and the level badges are not licensed
13
+ by either license. Their use is governed by governance/mark-policy.md.
14
+ No trademark registration is claimed.
package/README.md CHANGED
@@ -17,7 +17,7 @@
17
17
 
18
18
  | 层 | 规范/实践 | 当前状态 |
19
19
  |---|---|---|
20
- | 1 | **DSH-ENTRY 入门规范** | 18/18 `recognized`;base-only 10/18 verified(8 clean + 2 gate-reject);real web profile 18/18 verified(16 clean + 2 gate-reject);client 15/15 loaded;18/18 clean 未达成 |
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
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
22
  | 3 | **DSH-BOOST 加速实践** | draft;LEV-1–8 **8/8 measured**(loader / context / provider-capture / synthetic timer;非生产基线) |
23
23
 
@@ -57,21 +57,21 @@
57
57
  ```bash
58
58
  # Published umbrella (package `dsh-standards`)
59
59
  npx dsh-standards <plugin-dir> --scope entry --entry-claim static
60
- npx dsh-levels audit <dir> --format json
60
+ npx -p dsh-standards dsh-levels <dir> --format json
61
61
 
62
62
  # From a source checkout
63
63
  cd 40-checker
64
64
  node --test test/*.test.mjs
65
65
 
66
66
  # 只做结构识别(不声明运行)
67
- node bin/dsh-plugin-verify.mjs <plugin-dir> --scope entry --entry-claim static
67
+ node 40-checker/bin/dsh-plugin-verify.mjs <plugin-dir> --scope entry --entry-claim static
68
68
 
69
69
  # 声明运行(bundle 需要 host)
70
- node bin/dsh-plugin-verify.mjs <bundle-dir> --scope entry \
70
+ node 40-checker/bin/dsh-plugin-verify.mjs <bundle-dir> --scope entry \
71
71
  --host /path/to/@deepseek-ai/dsh-app-boot/lib/index.js
72
72
 
73
73
  # 三层自检(ENTRY 自动;FLOW/BOOST 证据文件)
74
- node bin/dsh-levels.mjs audit <dir> --format json
74
+ node bin/dsh-levels.mjs <dir> --format json
75
75
 
76
76
  # J1 安装/卸载旅程
77
77
  node scripts/journey-runtime.mjs --package <dir> --json
@@ -95,7 +95,7 @@ node lev7-bench.mjs 64 20
95
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
96
  - client runtime:**15/15 `client-module-loaded`**(真实 Chromium);web-app **4/4 loaded**;
97
97
  - 不可用:**0 plugin code FAIL;2 host-gate reject(telemetry/verification)**;
98
- - 检查器:**73/73 tests**(含治理/DCO/评价记录/声明/验真/链/漂移测试);
98
+ - 检查器:**98/98 tests**(含治理/DCO/评价记录/声明/验真/链/漂移测试);
99
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×**(合成,非生产基线)。
100
100
 
101
101
  ## 给插件开发者:什么时候用哪个工具
@@ -15,4 +15,5 @@ if (argv.includes('--version') || argv.includes('-v')) {
15
15
  process.exit(0)
16
16
  }
17
17
 
18
+ process.env.DSH_CHECKER_BRAND = `dsh-standards ${pkg.version} (checker 0.1.0)`
18
19
  await import('../40-checker/bin/dsh-plugin-verify.mjs')
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-standards",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "DSH plugin standards and conformance checks: ENTRY/FLOW checks plus BOOST guidance. Non-official; no certification or ranking.",
5
5
  "type": "module",
6
6
  "main": "40-checker/src/index.mjs",
@@ -13,22 +13,31 @@
13
13
  "dsh-levels": "./bin/dsh-levels.mjs"
14
14
  },
15
15
  "files": [
16
- "40-checker",
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",
17
25
  "spec",
18
26
  "docs",
19
- "bin",
20
27
  "README.md",
28
+ "CHANGELOG.md",
21
29
  "LICENSE",
22
30
  "LICENSE-APACHE",
23
31
  "LICENSE-CC-BY",
24
- "NOTICE.md"
32
+ "NOTICE.md",
33
+ "NOTICE"
25
34
  ],
26
35
  "scripts": {
27
36
  "test": "node --test 40-checker/test/*.test.mjs",
28
37
  "test:fixtures": "node bin/dsh-standards.mjs 40-checker/fixtures/good --scope entry --entry-claim static --format text"
29
38
  },
30
39
  "engines": {
31
- "node": ">=20"
40
+ "node": ">=24.9.0"
32
41
  },
33
42
  "keywords": [
34
43
  "dsh",
@@ -1,70 +0,0 @@
1
- name: plugin-verify
2
- on:
3
- push:
4
- pull_request:
5
- workflow_dispatch:
6
- jobs:
7
- l0:
8
- runs-on: ubuntu-latest
9
- steps:
10
- - uses: actions/checkout@v4
11
- - uses: actions/setup-node@v4
12
- with:
13
- node-version: 22
14
- - name: unit tests
15
- run: node --test
16
- - name: good fixture (static-only M1; expect 0)
17
- run: |
18
- node bin/dsh-plugin-verify.mjs fixtures/good \
19
- --static-only \
20
- --market-index fixtures/market-index.json \
21
- --plugin-name @dsh-fixtures/good-plugin \
22
- --format json --out /tmp/good.json
23
- - name: bad fixture (expect 1; 0 would be a false green)
24
- run: |
25
- set +e
26
- node bin/dsh-plugin-verify.mjs fixtures/bad --format json --out /tmp/bad.json
27
- code=$?
28
- test "$code" -eq 1
29
- - name: SARIF smoke
30
- run: |
31
- node bin/dsh-plugin-verify.mjs fixtures/good \
32
- --static-only \
33
- --market-index fixtures/market-index.json \
34
- --plugin-name @dsh-fixtures/good-plugin \
35
- --format sarif --out /tmp/good.sarif
36
- - uses: actions/upload-artifact@v4
37
- with:
38
- name: reports
39
- path: |
40
- /tmp/good.json
41
- /tmp/bad.json
42
- /tmp/good.sarif
43
-
44
- l1-manual:
45
- if: github.event_name == 'workflow_dispatch'
46
- runs-on: ubuntu-latest
47
- steps:
48
- - uses: actions/checkout@v4
49
- - uses: actions/setup-node@v4
50
- with:
51
- node-version: 22
52
- - name: build host farm (requires a DSH checkout at DSH_HOST)
53
- env:
54
- DSH_HOST: ${{ vars.DSH_HOST }}
55
- run: |
56
- test -n "$DSH_HOST"
57
- node scripts/host-farm.mjs --plugin fixtures/bundle --farm /tmp/farm --link --quiet
58
- - name: L1 on bundle fixture
59
- env:
60
- DSH_HOST: ${{ vars.DSH_HOST }}
61
- run: |
62
- node bin/dsh-plugin-verify.mjs /tmp/farm/plugins/bundle \
63
- --treat-as-plugin \
64
- --runtime "$DSH_HOST/vendor/cordis/lib/index.js" \
65
- --runtime-version 0.2.2-alpha.2 \
66
- --format json --out /tmp/l1.json
67
- - uses: actions/upload-artifact@v4
68
- with:
69
- name: l1-report
70
- path: /tmp/l1.json