dsh-standards 0.0.3 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (597) hide show
  1. package/40-checker/.github/workflows/plugin-verify.yml +70 -0
  2. package/40-checker/README.md +251 -0
  3. package/40-checker/bin/dsh-levels.mjs +15 -0
  4. package/40-checker/bin/dsh-plugin-verify.mjs +8 -0
  5. package/40-checker/fixtures/bad/index.mjs +12 -0
  6. package/40-checker/fixtures/bad/package.json +15 -0
  7. package/40-checker/fixtures/bad-manifest/index.js +1 -0
  8. package/40-checker/fixtures/bad-manifest/package.json +5 -0
  9. package/40-checker/fixtures/bundle/cordis.patch.yml +3 -0
  10. package/40-checker/fixtures/bundle/package.json +15 -0
  11. package/40-checker/fixtures/bundle/server.mjs +7 -0
  12. package/40-checker/fixtures/bundle-v0/cordis.patch.yml +3 -0
  13. package/40-checker/fixtures/bundle-v0/package.json +21 -0
  14. package/40-checker/fixtures/bundle-v0/server.mjs +7 -0
  15. package/40-checker/fixtures/client-missing/client.js +1 -0
  16. package/40-checker/fixtures/client-missing/index.js +1 -0
  17. package/40-checker/fixtures/client-missing/package.json +6 -0
  18. package/40-checker/fixtures/flow-config/index.js +9 -0
  19. package/40-checker/fixtures/flow-config/package.json +10 -0
  20. package/40-checker/fixtures/fs-write/index.mjs +7 -0
  21. package/40-checker/fixtures/fs-write/package.json +10 -0
  22. package/40-checker/fixtures/good/index.mjs +10 -0
  23. package/40-checker/fixtures/good/package.json +19 -0
  24. package/40-checker/fixtures/hang/index.mjs +5 -0
  25. package/40-checker/fixtures/hang/package.json +10 -0
  26. package/40-checker/fixtures/known-answer/expected.json +18 -0
  27. package/40-checker/fixtures/market-index-real.json +18 -0
  28. package/40-checker/fixtures/market-index.json +18 -0
  29. package/40-checker/fixtures/negative/bad-entry/package.json +1 -0
  30. package/40-checker/fixtures/negative/no-entry/package.json +1 -0
  31. package/40-checker/fixtures/negative/no-patch/package.json +1 -0
  32. package/40-checker/fixtures/negative/root-missing/cordis.patch.yml +2 -0
  33. package/40-checker/fixtures/negative/root-missing/package.json +1 -0
  34. package/40-checker/fixtures/negative/workspace/package.json +1 -0
  35. package/40-checker/package.json +22 -0
  36. package/40-checker/results/boost/REPORT.md +304 -0
  37. package/40-checker/results/boost/lev12458.json +1747 -0
  38. package/40-checker/results/client/README.md +16 -0
  39. package/40-checker/results/entry/18/DDDMUC__dsh-free-search.json +381 -0
  40. package/40-checker/results/entry/18/DDDMUC__dsh-free-search.runtime.json +34 -0
  41. package/40-checker/results/entry/18/Ebony-Vinyl__dsh-our-free-model.json +361 -0
  42. package/40-checker/results/entry/18/Ebony-Vinyl__dsh-our-free-model.runtime.json +34 -0
  43. package/40-checker/results/entry/18/README.md +24 -0
  44. package/40-checker/results/entry/18/RUNTIME.md +18 -0
  45. package/40-checker/results/entry/18/SeaOf0__dsh-redteam-model.json +391 -0
  46. package/40-checker/results/entry/18/YuJunZhiXue__dsh-purge.json +432 -0
  47. package/40-checker/results/entry/18/ci-diet.json +365 -0
  48. package/40-checker/results/entry/18/ci-diet.runtime-attempt.json +38 -0
  49. package/40-checker/results/entry/18/daily-log.json +357 -0
  50. package/40-checker/results/entry/18/daily-log.runtime.json +519 -0
  51. package/40-checker/results/entry/18/fullbase/ATTRIBUTION.md +29 -0
  52. package/40-checker/results/entry/18/fullbase/DDDMUC__dsh-free-search.json +99 -0
  53. package/40-checker/results/entry/18/fullbase/Ebony-Vinyl__dsh-our-free-model.json +95 -0
  54. package/40-checker/results/entry/18/fullbase/REPORT.md +261 -0
  55. package/40-checker/results/entry/18/fullbase/SeaOf0__dsh-redteam-model.json +144 -0
  56. package/40-checker/results/entry/18/fullbase/YuJunZhiXue__dsh-purge.json +106 -0
  57. package/40-checker/results/entry/18/fullbase/ci-diet.json +99 -0
  58. package/40-checker/results/entry/18/fullbase/daily-log.json +94 -0
  59. package/40-checker/results/entry/18/fullbase/howmp__dsh-pentest.json +104 -0
  60. package/40-checker/results/entry/18/fullbase/kingcharleslzy-ai__dsh-purge.json +143 -0
  61. package/40-checker/results/entry/18/fullbase/liguobao__ds-harness-remote.json +134 -0
  62. package/40-checker/results/entry/18/fullbase/mmparko__dsh-purge.json +138 -0
  63. package/40-checker/results/entry/18/fullbase/project-memory.json +108 -0
  64. package/40-checker/results/entry/18/fullbase/qiushi.json +94 -0
  65. package/40-checker/results/entry/18/fullbase/shaobeichen__dsh-pocket.json +94 -0
  66. package/40-checker/results/entry/18/fullbase/status-rotator.json +94 -0
  67. package/40-checker/results/entry/18/fullbase/summary.json +297 -0
  68. package/40-checker/results/entry/18/fullbase/telemetry.json +94 -0
  69. package/40-checker/results/entry/18/fullbase/ui-auth.json +94 -0
  70. package/40-checker/results/entry/18/fullbase/verification.json +94 -0
  71. package/40-checker/results/entry/18/fullbase/ysr666__dsh-vision-router.json +106 -0
  72. package/40-checker/results/entry/18/howmp__dsh-pentest.json +361 -0
  73. package/40-checker/results/entry/18/kingcharleslzy-ai__dsh-purge.json +411 -0
  74. package/40-checker/results/entry/18/liguobao__ds-harness-remote.json +379 -0
  75. package/40-checker/results/entry/18/mmparko__dsh-purge.json +441 -0
  76. package/40-checker/results/entry/18/project-memory.json +361 -0
  77. package/40-checker/results/entry/18/project-memory.runtime.json +519 -0
  78. package/40-checker/results/entry/18/qiushi.json +353 -0
  79. package/40-checker/results/entry/18/qiushi.runtime.json +519 -0
  80. package/40-checker/results/entry/18/realweb/REPORT.md +73 -0
  81. package/40-checker/results/entry/18/realweb/SeaOf0__dsh-redteam-model.json +104 -0
  82. package/40-checker/results/entry/18/realweb/YuJunZhiXue__dsh-purge.json +64 -0
  83. package/40-checker/results/entry/18/realweb/howmp__dsh-pentest.json +65 -0
  84. package/40-checker/results/entry/18/realweb/kingcharleslzy-ai__dsh-purge.json +75 -0
  85. package/40-checker/results/entry/18/realweb/mmparko__dsh-purge.json +70 -0
  86. package/40-checker/results/entry/18/realweb/shaobeichen__dsh-pocket.json +56 -0
  87. package/40-checker/results/entry/18/realweb/summary.json +196 -0
  88. package/40-checker/results/entry/18/realweb/ui-auth.json +56 -0
  89. package/40-checker/results/entry/18/realweb/ysr666__dsh-vision-router.json +61 -0
  90. package/40-checker/results/entry/18/richbase/REPORT.md +70 -0
  91. package/40-checker/results/entry/18/richbase/SeaOf0__dsh-redteam-model.json +61 -0
  92. package/40-checker/results/entry/18/richbase/SeaOf0__dsh-redteam-model.log +38 -0
  93. package/40-checker/results/entry/18/shaobeichen__dsh-pocket.json +363 -0
  94. package/40-checker/results/entry/18/status-rotator.json +362 -0
  95. package/40-checker/results/entry/18/status-rotator.runtime.json +519 -0
  96. package/40-checker/results/entry/18/summary.json +266 -0
  97. package/40-checker/results/entry/18/targetonly/DDDMUC__dsh-free-search.json +34 -0
  98. package/40-checker/results/entry/18/targetonly/Ebony-Vinyl__dsh-our-free-model.json +34 -0
  99. package/40-checker/results/entry/18/targetonly/SeaOf0__dsh-redteam-model.json +84 -0
  100. package/40-checker/results/entry/18/targetonly/YuJunZhiXue__dsh-purge.json +52 -0
  101. package/40-checker/results/entry/18/targetonly/ci-diet.json +34 -0
  102. package/40-checker/results/entry/18/targetonly/daily-log.json +34 -0
  103. package/40-checker/results/entry/18/targetonly/howmp__dsh-pentest.json +46 -0
  104. package/40-checker/results/entry/18/targetonly/kingcharleslzy-ai__dsh-purge.json +61 -0
  105. package/40-checker/results/entry/18/targetonly/liguobao__ds-harness-remote.json +39 -0
  106. package/40-checker/results/entry/18/targetonly/mmparko__dsh-purge.json +57 -0
  107. package/40-checker/results/entry/18/targetonly/project-memory.json +34 -0
  108. package/40-checker/results/entry/18/targetonly/qiushi.json +34 -0
  109. package/40-checker/results/entry/18/targetonly/shaobeichen__dsh-pocket.json +34 -0
  110. package/40-checker/results/entry/18/targetonly/status-rotator.json +34 -0
  111. package/40-checker/results/entry/18/targetonly/summary.json +133 -0
  112. package/40-checker/results/entry/18/targetonly/telemetry.json +34 -0
  113. package/40-checker/results/entry/18/targetonly/ui-auth.json +34 -0
  114. package/40-checker/results/entry/18/targetonly/verification.json +34 -0
  115. package/40-checker/results/entry/18/targetonly/ysr666__dsh-vision-router.json +43 -0
  116. package/40-checker/results/entry/18/telemetry.json +349 -0
  117. package/40-checker/results/entry/18/ui-auth.json +369 -0
  118. package/40-checker/results/entry/18/verification.json +358 -0
  119. package/40-checker/results/entry/18/ysr666__dsh-vision-router.json +409 -0
  120. package/40-checker/results/fixtures/bad.json +347 -0
  121. package/40-checker/results/fixtures/bundle.json +378 -0
  122. package/40-checker/results/fixtures/good-listing.json +382 -0
  123. package/40-checker/results/fixtures/good-static.json +322 -0
  124. package/40-checker/results/fixtures/good.json +375 -0
  125. package/40-checker/results/fixtures/good.sarif +274 -0
  126. package/40-checker/results/flow/README.md +19 -0
  127. package/40-checker/results/flow/j3-j7-fixture.json +51 -0
  128. package/40-checker/results/flow/j5-j8-client-missing.json +45 -0
  129. package/40-checker/results/flow/j5-j8-good.json +45 -0
  130. package/40-checker/results/flow/journey-fixture-bundle.json +90 -0
  131. package/40-checker/results/flow/journey-fixture-j1-j2-j4-j6.json +107 -0
  132. package/40-checker/results/flow/real/DDDMUC__dsh-free-search.json +297 -0
  133. package/40-checker/results/flow/real/REPORT.md +335 -0
  134. package/40-checker/results/flow/real/YuJunZhiXue__dsh-purge.json +317 -0
  135. package/40-checker/results/flow/real/ci-diet.json +351 -0
  136. package/40-checker/results/flow/real/daily-log.json +286 -0
  137. package/40-checker/results/flow/real/index.json +325 -0
  138. package/40-checker/results/flow/real/project-memory.json +290 -0
  139. package/40-checker/results/flow/real/qiushi.json +277 -0
  140. package/40-checker/results/flow/real/status-rotator.json +275 -0
  141. package/40-checker/results/flow/real/telemetry.json +178 -0
  142. package/40-checker/results/flow/real/ui-auth.json +288 -0
  143. package/40-checker/results/flow/real/verification.json +265 -0
  144. package/40-checker/results/governance/co-maintainer-packet.md +85 -0
  145. package/40-checker/results/l1/ci-diet.json +406 -0
  146. package/40-checker/results/l1/npm-dsh-telemetry-redactor-0.1.0.json +390 -0
  147. package/40-checker/results/l1/npm-dsh-verification-receipt-0.1.0.json +406 -0
  148. package/40-checker/results/l1/npm-qiushi-dsh-evidence-audit-0.1.0.json +394 -0
  149. package/40-checker/results/l1/npm-zzerx-dsh-plugin-daily-log-0.4.3.json +405 -0
  150. package/40-checker/results/l1/project-memory.json +402 -0
  151. package/40-checker/results/l1/source-DDDMUC__dsh-free-search.json +422 -0
  152. package/40-checker/results/l1/source-Ebony-Vinyl__dsh-our-free-model.json +421 -0
  153. package/40-checker/results/l1/source-SeaOf0__dsh-redteam-model.json +432 -0
  154. package/40-checker/results/l1/source-YuJunZhiXue__dsh-purge.json +473 -0
  155. package/40-checker/results/l1/source-howmp__dsh-pentest.json +402 -0
  156. package/40-checker/results/l1/source-kingcharleslzy-ai__dsh-purge.json +452 -0
  157. package/40-checker/results/l1/source-liguobao__ds-harness-remote.json +420 -0
  158. package/40-checker/results/l1/source-mmparko__dsh-purge.json +482 -0
  159. package/40-checker/results/l1/source-shaobeichen__dsh-pocket.json +404 -0
  160. package/40-checker/results/l1/source-ysr666__dsh-vision-router.json +384 -0
  161. package/40-checker/results/l1/status-rotator.json +403 -0
  162. package/40-checker/results/l1/ui-auth.json +429 -0
  163. package/40-checker/results/l1/ysr666__dsh-vision-router.published.json +384 -0
  164. package/40-checker/results/lev3/REPORT.md +342 -0
  165. package/40-checker/results/lev3/lev3.json +4835 -0
  166. package/40-checker/results/lev6/REPORT.md +460 -0
  167. package/40-checker/results/lev6/capture-sample.json +241 -0
  168. package/40-checker/results/lev6/capture.jsonl +4 -0
  169. package/40-checker/results/lev6/lev6.json +245 -0
  170. package/40-checker/results/lev6/replication-r1.json +245 -0
  171. package/40-checker/results/levels/README.md +16 -0
  172. package/40-checker/results/levels/dsh-plugin-doctor.json +141 -0
  173. package/40-checker/results/levels/dsh-plugin-guide.json +136 -0
  174. package/40-checker/results/m1/dsh-ci-diet-0.5.2.json +352 -0
  175. package/40-checker/results/m1/dsh-status-rotator-0.38.0.json +349 -0
  176. package/40-checker/results/m1/dsh-telemetry-redactor-0.1.0.json +336 -0
  177. package/40-checker/results/m1/dsh-ui-auth-0.7.1.json +356 -0
  178. package/40-checker/results/m1/dsh-verification-receipt-0.1.0.json +344 -0
  179. package/40-checker/results/m1/index-level.json +13 -0
  180. package/40-checker/results/m1/levels.json +72100 -0
  181. package/40-checker/results/m1/qiushi-dsh-evidence-audit-0.1.0.json +339 -0
  182. package/40-checker/results/m1/yolk_vat-y-dsh-project-memory-0.6.7.json +348 -0
  183. package/40-checker/results/m1/zzerx-dsh-plugin-daily-log-0.4.3.json +344 -0
  184. package/40-checker/results/m2/dsh-ci-diet.json +421 -0
  185. package/40-checker/results/m2/dsh-ci-diet.unshare-landlock.json +424 -0
  186. package/40-checker/results/m2/dsh-ci-diet.unshare.json +423 -0
  187. package/40-checker/results/m2/fixture-bundle.image.json +404 -0
  188. package/40-checker/results/m2/fixture-bundle.json +392 -0
  189. package/40-checker/results/m2/fixture-bundle.landlock.json +396 -0
  190. package/40-checker/results/m2/fixture-bundle.unshare.json +395 -0
  191. package/40-checker/results/m2/fs-write.json +338 -0
  192. package/40-checker/results/m2/hang.json +31 -0
  193. package/40-checker/results/m2/hang.unshare-landlock.json +34 -0
  194. package/40-checker/results/m2/hang.unshare.json +33 -0
  195. package/40-checker/results/m2/project-memory.json +417 -0
  196. package/40-checker/results/m2/status-rotator.json +418 -0
  197. package/40-checker/results/m2/ui-auth.json +444 -0
  198. package/40-checker/results/negative/bad-entry.json +345 -0
  199. package/40-checker/results/negative/no-entry.json +345 -0
  200. package/40-checker/results/negative/no-patch.json +344 -0
  201. package/40-checker/results/negative/root-missing.json +344 -0
  202. package/40-checker/results/negative/root-missing.runtime.json +30 -0
  203. package/40-checker/results/negative/summary.json +51 -0
  204. package/40-checker/results/negative/workspace.json +344 -0
  205. package/40-checker/results/patched/Ebony-Vinyl__dsh-our-free-model.json +334 -0
  206. package/40-checker/results/patched/Ebony-Vinyl__dsh-our-free-model.overlay.json +335 -0
  207. package/40-checker/results/patched/SeaOf0__dsh-redteam-model.json +315 -0
  208. package/40-checker/results/patched/SeaOf0__dsh-redteam-model.overlay.json +316 -0
  209. package/40-checker/results/patched/mmparko__dsh-purge.json +357 -0
  210. package/40-checker/results/patched/mmparko__dsh-purge.overlay.json +358 -0
  211. package/40-checker/results/patched/shaobeichen__dsh-pocket.json +315 -0
  212. package/40-checker/results/patched/shaobeichen__dsh-pocket.overlay.json +316 -0
  213. package/40-checker/results/real/DDDMUC__dsh-free-search.json +344 -0
  214. package/40-checker/results/real/Ebony-Vinyl__dsh-our-free-model.json +343 -0
  215. package/40-checker/results/real/SeaOf0__dsh-redteam-model.json +354 -0
  216. package/40-checker/results/real/YuJunZhiXue__dsh-purge.json +395 -0
  217. package/40-checker/results/real/howmp__dsh-pentest.json +324 -0
  218. package/40-checker/results/real/kingcharleslzy-ai__dsh-purge.json +374 -0
  219. package/40-checker/results/real/liguobao__ds-harness-remote.json +342 -0
  220. package/40-checker/results/real/mmparko__dsh-purge.json +404 -0
  221. package/40-checker/results/real/shaobeichen__dsh-pocket.json +326 -0
  222. package/40-checker/results/real/ysr666__dsh-vision-router.json +372 -0
  223. package/40-checker/results/real/ysr666__dsh-vision-router.listing.json +378 -0
  224. package/40-checker/results/round-robin/compare.json +52 -0
  225. package/40-checker/results/round-robin/runner-a.json +9 -0
  226. package/40-checker/results/round-robin/runner-b.json +9 -0
  227. package/40-checker/results/sample20/123dbl__dsh-side-session.json +344 -0
  228. package/40-checker/results/sample20/173787247__dsh-wsl-dns.json +360 -0
  229. package/40-checker/results/sample20/863683348__dsh-insight.json +375 -0
  230. package/40-checker/results/sample20/Ansellwan__DSH-Custom-Wallpaper.json +344 -0
  231. package/40-checker/results/sample20/Jamailar__beav-deepseek-harness.json +341 -0
  232. package/40-checker/results/sample20/ManoloRemiddi__DSH-Metafolder-Plugin.json +344 -0
  233. package/40-checker/results/sample20/NEAZ71eve__dsh-tool-github.json +384 -0
  234. package/40-checker/results/sample20/README.md +3 -0
  235. package/40-checker/results/sample20/RINGOLINK__dsh-desktop-shell.json +352 -0
  236. package/40-checker/results/sample20/Zxznb666__dsh-qoder-cn-subagent.json +349 -0
  237. package/40-checker/results/sample20/agent-mobile__dsh-mobile-gateway.json +353 -0
  238. package/40-checker/results/sample20/fangqiing__dsh-knowledge-lite.json +359 -0
  239. package/40-checker/results/sample20/fzy0517__deepseek-harness-session-cleaner.json +344 -0
  240. package/40-checker/results/sample20/gjy1992__dsh-diagram.json +350 -0
  241. package/40-checker/results/sample20/mrme000m__dsh-prime-orchestrator.json +414 -0
  242. package/40-checker/results/sample20/redstonedust__dsh-solidworks-copilot.json +362 -0
  243. package/40-checker/results/sample20/summary.json +234 -0
  244. package/40-checker/results/sample20/w2112515__dsh-remote-host.json +344 -0
  245. package/40-checker/results/sample20/wkfedor__deepseek-harness-voice-input.json +350 -0
  246. package/40-checker/results/sample20/xfgil__dsh-hot-reloader.json +344 -0
  247. package/40-checker/results/sample20/yizhiyizhi0128__dsh-peak-scheduler.json +360 -0
  248. package/40-checker/results/sample20-ci/123dbl__dsh-side-session.json +344 -0
  249. package/40-checker/results/sample20-ci/173787247__dsh-wsl-dns.json +360 -0
  250. package/40-checker/results/sample20-ci/863683348__dsh-insight.json +375 -0
  251. package/40-checker/results/sample20-ci/Ansellwan__DSH-Custom-Wallpaper.json +344 -0
  252. package/40-checker/results/sample20-ci/Jamailar__beav-deepseek-harness.json +367 -0
  253. package/40-checker/results/sample20-ci/ManoloRemiddi__DSH-Metafolder-Plugin.json +344 -0
  254. package/40-checker/results/sample20-ci/NEAZ71eve__dsh-tool-github.json +392 -0
  255. package/40-checker/results/sample20-ci/README.md +5 -0
  256. package/40-checker/results/sample20-ci/RINGOLINK__dsh-desktop-shell.json +361 -0
  257. package/40-checker/results/sample20-ci/Zxznb666__dsh-qoder-cn-subagent.json +349 -0
  258. package/40-checker/results/sample20-ci/agent-mobile__dsh-mobile-gateway.json +384 -0
  259. package/40-checker/results/sample20-ci/fangqiing__dsh-knowledge-lite.json +360 -0
  260. package/40-checker/results/sample20-ci/fzy0517__deepseek-harness-session-cleaner.json +354 -0
  261. package/40-checker/results/sample20-ci/gjy1992__dsh-diagram.json +381 -0
  262. package/40-checker/results/sample20-ci/mrme000m__dsh-prime-orchestrator.json +452 -0
  263. package/40-checker/results/sample20-ci/redstonedust__dsh-solidworks-copilot.json +371 -0
  264. package/40-checker/results/sample20-ci/summary.json +195 -0
  265. package/40-checker/results/sample20-ci/w2112515__dsh-remote-host.json +399 -0
  266. package/40-checker/results/sample20-ci/wkfedor__deepseek-harness-voice-input.json +358 -0
  267. package/40-checker/results/sample20-ci/xfgil__dsh-hot-reloader.json +344 -0
  268. package/40-checker/results/sample20-ci/yizhiyizhi0128__dsh-peak-scheduler.json +370 -0
  269. package/40-checker/results/sample20-ci/zed1902209846-dotcom__DPwhale-plugin.json +231 -0
  270. package/40-checker/results/sample60/123dbl__dsh-side-session.json +344 -0
  271. package/40-checker/results/sample60/173787247__dsh-wsl-dns.json +360 -0
  272. package/40-checker/results/sample60/863683348__dsh-insight.json +375 -0
  273. package/40-checker/results/sample60/Anionex__dsh-turn-rewind.json +349 -0
  274. package/40-checker/results/sample60/Ansellwan__DSH-Custom-Wallpaper.json +344 -0
  275. package/40-checker/results/sample60/Ebony-Vinyl__EAC-Pack.json +352 -0
  276. package/40-checker/results/sample60/EricWang1358__dsh-web-studyhub.json +376 -0
  277. package/40-checker/results/sample60/GanyuanRan__Aegis.json +349 -0
  278. package/40-checker/results/sample60/HiSeax__dsh-codely.json +358 -0
  279. package/40-checker/results/sample60/Jamailar__beav-deepseek-harness.json +341 -0
  280. package/40-checker/results/sample60/ManoloRemiddi__DSH-Metafolder-Plugin.json +344 -0
  281. package/40-checker/results/sample60/MichengAI__dsh-archive-manager.json +357 -0
  282. package/40-checker/results/sample60/MichengAI__dsh-im-connect.json +347 -0
  283. package/40-checker/results/sample60/MindLab-Research__dsh-generative-ui.json +350 -0
  284. package/40-checker/results/sample60/NEAZ71eve__dsh-tool-github.json +384 -0
  285. package/40-checker/results/sample60/README.md +7 -0
  286. package/40-checker/results/sample60/RINGOLINK__dsh-desktop-shell.json +352 -0
  287. package/40-checker/results/sample60/SeanTolstoyevski__dsh-code-review.json +352 -0
  288. package/40-checker/results/sample60/Tasihi89__dsh-talk-map.json +344 -0
  289. package/40-checker/results/sample60/Tyan66666__billion-context-dsh.json +469 -0
  290. package/40-checker/results/sample60/V1ki__dsh-plugin-subscriptions.json +350 -0
  291. package/40-checker/results/sample60/Yu-tao-Li__dsh-computer-use-win.json +341 -0
  292. package/40-checker/results/sample60/ZSeven-W__dsh-ios.json +344 -0
  293. package/40-checker/results/sample60/Zxznb666__dsh-qoder-cn-subagent.json +349 -0
  294. package/40-checker/results/sample60/agent-mobile__dsh-mobile-gateway.json +353 -0
  295. package/40-checker/results/sample60/c3cvld7aag__fujiang-dsh.json +361 -0
  296. package/40-checker/results/sample60/cxzrdxy__dsh-file-explorer.json +389 -0
  297. package/40-checker/results/sample60/dhicoc__dsh-reverse-skill.json +341 -0
  298. package/40-checker/results/sample60/fangqiing__dsh-knowledge-lite.json +359 -0
  299. package/40-checker/results/sample60/fwerkor__local-shell-mcp.json +369 -0
  300. package/40-checker/results/sample60/fzy0517__deepseek-harness-session-cleaner.json +344 -0
  301. package/40-checker/results/sample60/gjy1992__dsh-diagram.json +350 -0
  302. package/40-checker/results/sample60/howmp__dsh-pentest.json +341 -0
  303. package/40-checker/results/sample60/linhay__harmony-next.skills.json +344 -0
  304. package/40-checker/results/sample60/liustack__modsearch.json +371 -0
  305. package/40-checker/results/sample60/mmparko__dsh-purge.json +372 -0
  306. package/40-checker/results/sample60/mrme000m__dsh-prime-orchestrator.json +414 -0
  307. package/40-checker/results/sample60/omdsh-dev__dsh_workflow.json +439 -0
  308. package/40-checker/results/sample60/redstonedust__dsh-solidworks-copilot.json +362 -0
  309. package/40-checker/results/sample60/seriousz158__dsh-memory.json +350 -0
  310. package/40-checker/results/sample60/shanliuling__dsh-image-gen.json +353 -0
  311. package/40-checker/results/sample60/shanliuling__skills-link.json +344 -0
  312. package/40-checker/results/sample60/shengsheng90__DSH-taskboard.json +341 -0
  313. package/40-checker/results/sample60/sjh9714__dsh-win32.json +374 -0
  314. package/40-checker/results/sample60/skymecode__deepseek-harness-for-vscode.json +351 -0
  315. package/40-checker/results/sample60/sopaco__terrain.json +352 -0
  316. package/40-checker/results/sample60/summary.json +658 -0
  317. package/40-checker/results/sample60/tinqiao-oss__engramory.json +352 -0
  318. package/40-checker/results/sample60/tong-io__tongflow.json +359 -0
  319. package/40-checker/results/sample60/vibeinging__dsh-desktop.json +382 -0
  320. package/40-checker/results/sample60/w2112515__dsh-remote-host.json +344 -0
  321. package/40-checker/results/sample60/wkfedor__deepseek-harness-voice-input.json +350 -0
  322. package/40-checker/results/sample60/wz20__dsh-dafeiyu-dot.json +349 -0
  323. package/40-checker/results/sample60/xfgil__dsh-hot-reloader.json +344 -0
  324. package/40-checker/results/sample60/yi-yezhiqiu__dsh-prompt-market.json +360 -0
  325. package/40-checker/results/sample60/yizhiyizhi0128__dsh-peak-scheduler.json +360 -0
  326. package/40-checker/results/sample60/yjh051108__dsh-routing-suite.json +366 -0
  327. package/40-checker/results/sample60-ci/123dbl__dsh-side-session.json +344 -0
  328. package/40-checker/results/sample60-ci/173787247__dsh-wsl-dns.json +360 -0
  329. package/40-checker/results/sample60-ci/863683348__dsh-insight.json +375 -0
  330. package/40-checker/results/sample60-ci/Anionex__dsh-turn-rewind.json +379 -0
  331. package/40-checker/results/sample60-ci/Ansellwan__DSH-Custom-Wallpaper.json +344 -0
  332. package/40-checker/results/sample60-ci/Ebony-Vinyl__EAC-Pack.json +362 -0
  333. package/40-checker/results/sample60-ci/EricWang1358__dsh-web-studyhub.json +378 -0
  334. package/40-checker/results/sample60-ci/GanyuanRan__Aegis.json +349 -0
  335. package/40-checker/results/sample60-ci/HiSeax__dsh-codely.json +368 -0
  336. package/40-checker/results/sample60-ci/Jamailar__beav-deepseek-harness.json +367 -0
  337. package/40-checker/results/sample60-ci/LiarMTTT__TavernWeave.json +231 -0
  338. package/40-checker/results/sample60-ci/ManoloRemiddi__DSH-Metafolder-Plugin.json +344 -0
  339. package/40-checker/results/sample60-ci/MichengAI__dsh-archive-manager.json +395 -0
  340. package/40-checker/results/sample60-ci/MichengAI__dsh-im-connect.json +404 -0
  341. package/40-checker/results/sample60-ci/MindLab-Research__dsh-generative-ui.json +410 -0
  342. package/40-checker/results/sample60-ci/NEAZ71eve__dsh-tool-github.json +392 -0
  343. package/40-checker/results/sample60-ci/README.md +7 -0
  344. package/40-checker/results/sample60-ci/RINGOLINK__dsh-desktop-shell.json +361 -0
  345. package/40-checker/results/sample60-ci/Ruler4396__dsh-launcher.json +231 -0
  346. package/40-checker/results/sample60-ci/SeanTolstoyevski__dsh-code-review.json +363 -0
  347. package/40-checker/results/sample60-ci/Tasihi89__dsh-talk-map.json +372 -0
  348. package/40-checker/results/sample60-ci/Tyan66666__billion-context-dsh.json +469 -0
  349. package/40-checker/results/sample60-ci/V1ki__dsh-plugin-subscriptions.json +368 -0
  350. package/40-checker/results/sample60-ci/Yu-tao-Li__dsh-computer-use-win.json +349 -0
  351. package/40-checker/results/sample60-ci/ZSeven-W__dsh-ios.json +344 -0
  352. package/40-checker/results/sample60-ci/Zxznb666__dsh-qoder-cn-subagent.json +349 -0
  353. package/40-checker/results/sample60-ci/agent-mobile__dsh-mobile-gateway.json +384 -0
  354. package/40-checker/results/sample60-ci/c3cvld7aag__fujiang-dsh.json +361 -0
  355. package/40-checker/results/sample60-ci/cxzrdxy__dsh-file-explorer.json +399 -0
  356. package/40-checker/results/sample60-ci/dhicoc__dsh-reverse-skill.json +352 -0
  357. package/40-checker/results/sample60-ci/fangqiing__dsh-knowledge-lite.json +360 -0
  358. package/40-checker/results/sample60-ci/fwerkor__local-shell-mcp.json +387 -0
  359. package/40-checker/results/sample60-ci/fzy0517__deepseek-harness-session-cleaner.json +354 -0
  360. package/40-checker/results/sample60-ci/gjy1992__dsh-diagram.json +381 -0
  361. package/40-checker/results/sample60-ci/howmp__dsh-pentest.json +361 -0
  362. package/40-checker/results/sample60-ci/linhay__harmony-next.skills.json +344 -0
  363. package/40-checker/results/sample60-ci/liustack__modsearch.json +382 -0
  364. package/40-checker/results/sample60-ci/mmparko__dsh-purge.json +441 -0
  365. package/40-checker/results/sample60-ci/mrme000m__dsh-prime-orchestrator.json +452 -0
  366. package/40-checker/results/sample60-ci/omdsh-dev__dsh_workflow.json +439 -0
  367. package/40-checker/results/sample60-ci/plastic-labs__honcho.json +231 -0
  368. package/40-checker/results/sample60-ci/redstonedust__dsh-solidworks-copilot.json +371 -0
  369. package/40-checker/results/sample60-ci/seriousz158__dsh-memory.json +351 -0
  370. package/40-checker/results/sample60-ci/shanliuling__dsh-image-gen.json +382 -0
  371. package/40-checker/results/sample60-ci/shanliuling__skills-link.json +344 -0
  372. package/40-checker/results/sample60-ci/shengsheng90__DSH-taskboard.json +370 -0
  373. package/40-checker/results/sample60-ci/sjh9714__dsh-win32.json +410 -0
  374. package/40-checker/results/sample60-ci/skymecode__deepseek-harness-for-vscode.json +391 -0
  375. package/40-checker/results/sample60-ci/sopaco__deepwiki-rs.json +231 -0
  376. package/40-checker/results/sample60-ci/sopaco__terrain.json +352 -0
  377. package/40-checker/results/sample60-ci/summary.json +555 -0
  378. package/40-checker/results/sample60-ci/tinqiao-oss__engramory.json +362 -0
  379. package/40-checker/results/sample60-ci/tong-io__tongflow.json +393 -0
  380. package/40-checker/results/sample60-ci/vibeinging__dsh-desktop.json +555 -0
  381. package/40-checker/results/sample60-ci/w2112515__dsh-remote-host.json +399 -0
  382. package/40-checker/results/sample60-ci/wkfedor__deepseek-harness-voice-input.json +358 -0
  383. package/40-checker/results/sample60-ci/wz20__dsh-dafeiyu-dot.json +390 -0
  384. package/40-checker/results/sample60-ci/xfgil__dsh-hot-reloader.json +344 -0
  385. package/40-checker/results/sample60-ci/yi-yezhiqiu__dsh-prompt-market.json +373 -0
  386. package/40-checker/results/sample60-ci/yizhiyizhi0128__dsh-peak-scheduler.json +370 -0
  387. package/40-checker/results/sample60-ci/yjh051108__dsh-routing-suite.json +437 -0
  388. package/40-checker/results/sample60-ci/zed1902209846-dotcom__DPwhale-plugin.json +231 -0
  389. package/40-checker/results/triage/REPORT.md +317 -0
  390. package/40-checker/results/triage/evidence/g2-rejections.txt +63 -0
  391. package/40-checker/results/triage/evidence/purge-baseline-0.2.1-rc.5.json +51 -0
  392. package/40-checker/results/triage/evidence/purge-baseline-0.2.2-alpha.2.json +51 -0
  393. package/40-checker/results/triage/evidence/purge-postinstall.txt +62 -0
  394. package/40-checker/results/triage/evidence/purge-with-profile-0.2.1-rc.5.json +71 -0
  395. package/40-checker/results/triage/evidence/purge-with-profile-0.2.2-alpha.2.json +71 -0
  396. package/40-checker/results/triage/evidence/semver-matrix.json +32 -0
  397. package/40-checker/results/triage/triage.json +295 -0
  398. package/40-checker/results/webapp/README.md +10 -0
  399. package/40-checker/results/webapp/summary.json +46 -0
  400. package/40-checker/results/webapp/web-auth.json +19 -0
  401. package/40-checker/results/webruntime/DDDMUC__dsh-free-search/client-export.json +7 -0
  402. package/40-checker/results/webruntime/DDDMUC__dsh-free-search/installed-package.json +123 -0
  403. package/40-checker/results/webruntime/DDDMUC__dsh-free-search/probe.json +129 -0
  404. package/40-checker/results/webruntime/DDDMUC__dsh-free-search/shot.png +0 -0
  405. package/40-checker/results/webruntime/DDDMUC__dsh-free-search/summary.md +16 -0
  406. package/40-checker/results/webruntime/Ebony-Vinyl__dsh-our-free-model/client-export.json +7 -0
  407. package/40-checker/results/webruntime/Ebony-Vinyl__dsh-our-free-model/installed-package.json +76 -0
  408. package/40-checker/results/webruntime/Ebony-Vinyl__dsh-our-free-model/probe.json +129 -0
  409. package/40-checker/results/webruntime/Ebony-Vinyl__dsh-our-free-model/shot.png +0 -0
  410. package/40-checker/results/webruntime/Ebony-Vinyl__dsh-our-free-model/summary.md +16 -0
  411. package/40-checker/results/webruntime/REPORT.md +253 -0
  412. package/40-checker/results/webruntime/SeaOf0__dsh-redteam-model/client-export.json +7 -0
  413. package/40-checker/results/webruntime/SeaOf0__dsh-redteam-model/installed-package.json +97 -0
  414. package/40-checker/results/webruntime/SeaOf0__dsh-redteam-model/probe.json +129 -0
  415. package/40-checker/results/webruntime/SeaOf0__dsh-redteam-model/shot.png +0 -0
  416. package/40-checker/results/webruntime/SeaOf0__dsh-redteam-model/summary.md +16 -0
  417. package/40-checker/results/webruntime/YuJunZhiXue__dsh-purge/client-export.json +7 -0
  418. package/40-checker/results/webruntime/YuJunZhiXue__dsh-purge/installed-package.json +98 -0
  419. package/40-checker/results/webruntime/YuJunZhiXue__dsh-purge/probe.json +136 -0
  420. package/40-checker/results/webruntime/YuJunZhiXue__dsh-purge/shot.png +0 -0
  421. package/40-checker/results/webruntime/YuJunZhiXue__dsh-purge/summary.md +16 -0
  422. package/40-checker/results/webruntime/ci-diet/client-export.json +10 -0
  423. package/40-checker/results/webruntime/ci-diet/installed-package.json +100 -0
  424. package/40-checker/results/webruntime/ci-diet/probe.json +129 -0
  425. package/40-checker/results/webruntime/ci-diet/shot.png +0 -0
  426. package/40-checker/results/webruntime/ci-diet/summary.md +16 -0
  427. package/40-checker/results/webruntime/daily-log/client-export.json +10 -0
  428. package/40-checker/results/webruntime/daily-log/installed-package.json +113 -0
  429. package/40-checker/results/webruntime/daily-log/probe.json +129 -0
  430. package/40-checker/results/webruntime/daily-log/shot.png +0 -0
  431. package/40-checker/results/webruntime/daily-log/summary.md +16 -0
  432. package/40-checker/results/webruntime/howmp__dsh-pentest/client-export.json +7 -0
  433. package/40-checker/results/webruntime/howmp__dsh-pentest/installed-package.json +90 -0
  434. package/40-checker/results/webruntime/howmp__dsh-pentest/probe.json +129 -0
  435. package/40-checker/results/webruntime/howmp__dsh-pentest/shot.png +0 -0
  436. package/40-checker/results/webruntime/howmp__dsh-pentest/summary.md +16 -0
  437. package/40-checker/results/webruntime/kingcharleslzy-ai__dsh-purge/client-export.json +7 -0
  438. package/40-checker/results/webruntime/kingcharleslzy-ai__dsh-purge/installed-package.json +164 -0
  439. package/40-checker/results/webruntime/kingcharleslzy-ai__dsh-purge/probe.json +129 -0
  440. package/40-checker/results/webruntime/kingcharleslzy-ai__dsh-purge/shot.png +0 -0
  441. package/40-checker/results/webruntime/kingcharleslzy-ai__dsh-purge/summary.md +16 -0
  442. package/40-checker/results/webruntime/liguobao__ds-harness-remote/client-export.json +7 -0
  443. package/40-checker/results/webruntime/liguobao__ds-harness-remote/installed-package.json +166 -0
  444. package/40-checker/results/webruntime/liguobao__ds-harness-remote/probe.json +129 -0
  445. package/40-checker/results/webruntime/liguobao__ds-harness-remote/shot.png +0 -0
  446. package/40-checker/results/webruntime/liguobao__ds-harness-remote/summary.md +16 -0
  447. package/40-checker/results/webruntime/local-pre-ci/README.md +67 -0
  448. package/40-checker/results/webruntime/local-pre-ci/client-exports.json +158 -0
  449. package/40-checker/results/webruntime/local-pre-ci/dsh-free-search.probe.json +119 -0
  450. package/40-checker/results/webruntime/local-pre-ci/dsh-pocket.probe.json +119 -0
  451. package/40-checker/results/webruntime/local-pre-ci/dsh-redteam-model.probe.json +119 -0
  452. package/40-checker/results/webruntime/local-pre-ci/qiushi-shell-only.probe.json +104 -0
  453. package/40-checker/results/webruntime/local-pre-ci/ui-auth-no-login.fail.json +52 -0
  454. package/40-checker/results/webruntime/local-pre-ci/ui-auth.probe.json +123 -0
  455. package/40-checker/results/webruntime/mmparko__dsh-purge/client-export.json +7 -0
  456. package/40-checker/results/webruntime/mmparko__dsh-purge/installed-package.json +95 -0
  457. package/40-checker/results/webruntime/mmparko__dsh-purge/probe.json +136 -0
  458. package/40-checker/results/webruntime/mmparko__dsh-purge/shot.png +0 -0
  459. package/40-checker/results/webruntime/mmparko__dsh-purge/summary.md +16 -0
  460. package/40-checker/results/webruntime/project-memory/client-export.json +7 -0
  461. package/40-checker/results/webruntime/project-memory/installed-package.json +118 -0
  462. package/40-checker/results/webruntime/project-memory/probe.json +129 -0
  463. package/40-checker/results/webruntime/project-memory/shot.png +0 -0
  464. package/40-checker/results/webruntime/project-memory/summary.md +16 -0
  465. package/40-checker/results/webruntime/qiushi/client-export.json +7 -0
  466. package/40-checker/results/webruntime/qiushi/installed-package.json +84 -0
  467. package/40-checker/results/webruntime/qiushi/probe.json +114 -0
  468. package/40-checker/results/webruntime/qiushi/shot.png +0 -0
  469. package/40-checker/results/webruntime/qiushi/summary.md +16 -0
  470. package/40-checker/results/webruntime/shaobeichen__dsh-pocket/client-export.json +7 -0
  471. package/40-checker/results/webruntime/shaobeichen__dsh-pocket/installed-package.json +85 -0
  472. package/40-checker/results/webruntime/shaobeichen__dsh-pocket/probe.json +129 -0
  473. package/40-checker/results/webruntime/shaobeichen__dsh-pocket/shot.png +0 -0
  474. package/40-checker/results/webruntime/shaobeichen__dsh-pocket/summary.md +16 -0
  475. package/40-checker/results/webruntime/status-rotator/client-export.json +7 -0
  476. package/40-checker/results/webruntime/status-rotator/installed-package.json +107 -0
  477. package/40-checker/results/webruntime/status-rotator/probe.json +129 -0
  478. package/40-checker/results/webruntime/status-rotator/shot.png +0 -0
  479. package/40-checker/results/webruntime/status-rotator/summary.md +16 -0
  480. package/40-checker/results/webruntime/summary.json +323 -0
  481. package/40-checker/results/webruntime/telemetry/probe.json +20 -0
  482. package/40-checker/results/webruntime/telemetry/summary.md +4 -0
  483. package/40-checker/results/webruntime/ui-auth/client-export.json +7 -0
  484. package/40-checker/results/webruntime/ui-auth/installed-package.json +94 -0
  485. package/40-checker/results/webruntime/ui-auth/probe.json +129 -0
  486. package/40-checker/results/webruntime/ui-auth/shot.png +0 -0
  487. package/40-checker/results/webruntime/ui-auth/summary.md +16 -0
  488. package/40-checker/results/webruntime/verification/probe.json +20 -0
  489. package/40-checker/results/webruntime/verification/summary.md +4 -0
  490. package/40-checker/results/webruntime/ysr666__dsh-vision-router/client-export.json +7 -0
  491. package/40-checker/results/webruntime/ysr666__dsh-vision-router/installed-package.json +142 -0
  492. package/40-checker/results/webruntime/ysr666__dsh-vision-router/probe.json +129 -0
  493. package/40-checker/results/webruntime/ysr666__dsh-vision-router/shot.png +0 -0
  494. package/40-checker/results/webruntime/ysr666__dsh-vision-router/summary.md +16 -0
  495. package/40-checker/samples/README.md +8 -0
  496. package/40-checker/samples/entry18.json +139 -0
  497. package/40-checker/samples/frame.json +485 -0
  498. package/40-checker/scripts/apply-overlay.mjs +59 -0
  499. package/40-checker/scripts/attestation-check.mjs +151 -0
  500. package/40-checker/scripts/bundle-smoke.mjs +126 -0
  501. package/40-checker/scripts/claim-check.mjs +145 -0
  502. package/40-checker/scripts/clause-map.mjs +94 -0
  503. package/40-checker/scripts/collect-fixtures.mjs +44 -0
  504. package/40-checker/scripts/dashboard.mjs +85 -0
  505. package/40-checker/scripts/dco-check.mjs +147 -0
  506. package/40-checker/scripts/dependabot-check.mjs +40 -0
  507. package/40-checker/scripts/doc-commands-check.mjs +92 -0
  508. package/40-checker/scripts/entry-scan.mjs +190 -0
  509. package/40-checker/scripts/entry-validate.mjs +291 -0
  510. package/40-checker/scripts/entry18-attribution.mjs +66 -0
  511. package/40-checker/scripts/entry18-ci.mjs +685 -0
  512. package/40-checker/scripts/entry18-realweb-summary.mjs +71 -0
  513. package/40-checker/scripts/entry18-web.mjs +307 -0
  514. package/40-checker/scripts/evidence-chain.mjs +100 -0
  515. package/40-checker/scripts/flow-index.mjs +82 -0
  516. package/40-checker/scripts/flow-sample-ci.mjs +529 -0
  517. package/40-checker/scripts/governance-check.mjs +210 -0
  518. package/40-checker/scripts/host-farm.mjs +165 -0
  519. package/40-checker/scripts/journey-config-observe.mjs +109 -0
  520. package/40-checker/scripts/journey-disclosure-shape.mjs +83 -0
  521. package/40-checker/scripts/journey-runtime.mjs +178 -0
  522. package/40-checker/scripts/journey.mjs +76 -0
  523. package/40-checker/scripts/label-drift.mjs +74 -0
  524. package/40-checker/scripts/label-sync.mjs +87 -0
  525. package/40-checker/scripts/label-verify.mjs +90 -0
  526. package/40-checker/scripts/landlock-exec.c +101 -0
  527. package/40-checker/scripts/level-audit.mjs +336 -0
  528. package/40-checker/scripts/m1-sidecar.mjs +126 -0
  529. package/40-checker/scripts/m2-runner.mjs +213 -0
  530. package/40-checker/scripts/round-robin.mjs +88 -0
  531. package/40-checker/scripts/sample-frame.mjs +72 -0
  532. package/40-checker/scripts/sample20-ci.mjs +25 -0
  533. package/40-checker/scripts/sample60-ci.mjs +25 -0
  534. package/40-checker/scripts/stale-check.mjs +59 -0
  535. package/40-checker/scripts/surveillance.mjs +88 -0
  536. package/40-checker/scripts/web-probe.mjs +504 -0
  537. package/40-checker/src/cli.mjs +300 -0
  538. package/40-checker/src/client-shape.mjs +37 -0
  539. package/40-checker/src/declarations.mjs +242 -0
  540. package/40-checker/src/index.mjs +8 -0
  541. package/40-checker/src/install-spec.mjs +67 -0
  542. package/40-checker/src/label.mjs +130 -0
  543. package/40-checker/src/manifest.mjs +364 -0
  544. package/40-checker/src/permissions.mjs +60 -0
  545. package/40-checker/src/report.mjs +204 -0
  546. package/40-checker/src/result.mjs +60 -0
  547. package/40-checker/src/runtime.mjs +299 -0
  548. package/40-checker/src/semver.mjs +128 -0
  549. package/40-checker/src/util.mjs +148 -0
  550. package/40-checker/test/attestation.test.mjs +59 -0
  551. package/40-checker/test/checks.test.mjs +172 -0
  552. package/40-checker/test/claim.test.mjs +28 -0
  553. package/40-checker/test/client-shape.test.mjs +35 -0
  554. package/40-checker/test/dco.test.mjs +51 -0
  555. package/40-checker/test/entry-validate.test.mjs +172 -0
  556. package/40-checker/test/governance.test.mjs +76 -0
  557. package/40-checker/test/label.test.mjs +97 -0
  558. package/40-checker/test/level-audit.test.mjs +99 -0
  559. package/40-checker/test/levels.test.mjs +31 -0
  560. package/40-checker/test/ops.test.mjs +117 -0
  561. package/40-checker/test/permissions.test.mjs +40 -0
  562. package/40-checker/test/semver.test.mjs +32 -0
  563. package/40-checker/test/verify.test.mjs +57 -0
  564. package/LICENSE +28 -0
  565. package/LICENSE-APACHE +190 -0
  566. package/LICENSE-CC-BY +23 -0
  567. package/NOTICE.md +11 -0
  568. package/README.md +146 -3
  569. package/bin/dsh-levels.mjs +4 -0
  570. package/bin/dsh-standards.mjs +18 -0
  571. package/docs/BOOST-FIXTURES-2026-11-02.md +38 -0
  572. package/docs/DEVELOPER-JOURNEY.md +40 -0
  573. package/docs/HOST-J3-BUG-REPORT-DRAFT.md +27 -0
  574. package/docs/HOST-J3-CONFIG-REPRO-2026-11-02.md +36 -0
  575. package/docs/NAMING-FALLBACK.md +11 -0
  576. package/docs/fork-policy.md +12 -0
  577. package/docs/full-test-plan-2026-11-02.md +207 -0
  578. package/docs/incident.md +37 -0
  579. package/docs/onboarding.md +27 -0
  580. package/docs/privacy.md +12 -0
  581. package/docs/release.md +16 -0
  582. package/docs/scope-security.md +62 -0
  583. package/docs/status-taxonomy.md +54 -0
  584. package/docs/sunset.md +44 -0
  585. package/docs/translating.md +12 -0
  586. package/package.json +49 -12
  587. package/spec/README.md +27 -0
  588. package/spec/boost/README.md +8 -0
  589. package/spec/clauses.json +253 -0
  590. package/spec/entry/README.md +9 -0
  591. package/spec/flow/README.md +8 -0
  592. package/spec/levels.json +371 -0
  593. package/spec/levels.schema.json +45 -0
  594. package/spec/reference-suite.json +35 -0
  595. package/spec/schemas/attestation.schema.json +284 -0
  596. package/spec/schemas/evidence.schema.json +331 -0
  597. package/spec/schemas/report.schema.json +64 -0
@@ -0,0 +1,460 @@
1
+ # LEV-6 — stable prefix / assembly reuse (provider-capture, synthetic model)
2
+
3
+ - **Status:** `measured` — **provider-capture (synthetic model, not billing)**
4
+ - **Practice:** LEV-6 / stable prefix · assembly reuse (BOOST)
5
+ - **DSH:** `@deepseek-ai/dsh@0.2.2-alpha.2`, Node `v24.22.1` (CI: `ubuntu-latest`, Node 24)
6
+ - **Wire protocol:** Anthropic Messages `POST {baseURL}/v1/messages`, SSE stream
7
+ (`anthropic-version: 2023-06-01`) — **not** OpenAI chat-completions; see §2
8
+ - **Evidence:**
9
+ [lev6.json](lev6.json) · [capture.jsonl](capture.jsonl) (275 KB, 4 raw requests) ·
10
+ [capture-sample.json](capture-sample.json) (anatomy of one request) ·
11
+ [replication-r1.json](replication-r1.json) (summary of the second, standalone replication)
12
+ - **Harness:**
13
+ [lev6-capture-server.mjs](../../../examples/boost/lev6-capture-server.mjs) ·
14
+ [lev6-analyze.mjs](../../../examples/boost/lev6-analyze.mjs) ·
15
+ [lev6-arm.patch.yml](../../../examples/boost/lev6-arm.patch.yml) ·
16
+ [lev6-capture.yml](../../../.github/workflows/lev6-capture.yml)
17
+ - **Generated at:** `2026-10-31T16:07:22.027Z` (JSON `generatedAt`); capture sha256
18
+ `0b5a2e644548d63b67e37aae0f47aa2a1e7586c03b159c48ef653ba4aa74f19b`
19
+ - **Claim scope:** assembled request prefix bytes/tokens and byte-reuse ratios
20
+ only. **No billing, cost, or cache-hit claim is made anywhere in this
21
+ report**, and the two replications below are two runs of the same two arms,
22
+ not additional arms.
23
+
24
+ ## 0. One-line result
25
+
26
+ Two fresh headless sessions per arm, same short task, both pointed at a local
27
+ synthetic endpoint: **arm A reused 100.00 % of the cacheable prompt prefix
28
+ (25,785 / 25,785 bytes ≈ 6,447 estimated tokens) and 100 % of the 25,966-byte
29
+ base request body**, while **arm B, whose persona prefix starts with a per-run
30
+ nonce, reused 0 bytes and diverged at prompt byte 0**. Raw HTTP-body reuse was
31
+ lower for both arms (A 40.99 %, B 6.44 %) because DSH appends a per-session
32
+ `dsh_session_log` extension after the base request; that field, not the prompt,
33
+ sets the wire-prefix boundary.
34
+
35
+ ## 1. What is measured, and what is not
36
+
37
+ | Measured | Not measured |
38
+ |---|---|
39
+ | The exact request bytes DSH assembled (captured verbatim over loopback) | Any real provider's cache behaviour or cache hit rate |
40
+ | Longest common prefix with the previous request of the same arm, in raw wire bytes and in prompt order | Billing, price, or money saved |
41
+ | Token counts under DSH's own fixed density, `ceil(bytes / 4)` | Real tokenizer output (DSH itself uses this heuristic, not a tokenizer) |
42
+ | Session identity, headers, and request-extension contents | Whether `api.deepseek.com` accepts the extension fields (never contacted) |
43
+
44
+ The token rule is DSH's, not an invention here: `CHARS_PER_TOKEN = 4` in
45
+ `packages/llm/token-meter/src/estimate.ts`. The analyzer adds no per-block
46
+ structural overhead because the metric is a byte-span prefix, not a rendered
47
+ message price.
48
+
49
+ ## 2. Correction to the experiment brief: the provider is Anthropic Messages
50
+
51
+ The brief said `llm-deepseek` speaks an OpenAI-compatible chat-completions API.
52
+ At `0.2.2-alpha.2` it does not, and a `/chat/completions` stub would have been
53
+ rejected before any capture happened:
54
+
55
+ | Evidence in the checkout | Value |
56
+ |---|---|
57
+ | `packages/llm/llm-deepseek/src/config.ts` `PUBLIC_BASE_URL` | `https://api.deepseek.com/anthropic` |
58
+ | `packages/llm/llm-deepseek/src/messages-api.ts` `messagesApiRoot()` | appends `/v1` unless the base path already ends in `/v1` |
59
+ | `packages/llm/llm-deepseek/src/adapter.ts` fetch | `POST ${messagesApiRoot(baseURL)}/messages`, `accept: text/event-stream`, `anthropic-version: 2023-06-01`, optional `anthropic-beta` |
60
+ | `packages/llm/llm-deepseek/src/wire-types.ts` | `WireRequest` = `{model, stream, max_tokens, messages, system, thinking, output_config?, tools?}` |
61
+ | `packages/llm/llm-deepseek/src/translate.ts` | requires `message_start` → block events → `message_delta.stop_reason` → `message_stop` |
62
+
63
+ The capture server therefore implements `POST /v1/messages` and the six SSE
64
+ events the translator accepts. **The DSH client accepted it on the first run**
65
+ (exit 0, synthetic answer printed); no fallback to a lower-level capture was
66
+ needed.
67
+
68
+ ## 3. Method
69
+
70
+ ### 3.1 Capture server
71
+
72
+ `examples/boost/lev6-capture-server.mjs` — zero dependencies, never calls the
73
+ network, writes one JSONL record per request and answers with a scripted
74
+ Messages stream.
75
+
76
+ | Route | Meaning |
77
+ |---|---|
78
+ | `GET /health` | readiness probe; also reports counters and the output path |
79
+ | `POST /v1/messages` | arm `unspecified` |
80
+ | `POST /<arm>/v1/messages` | arm `<arm>` — the URL path is the arm label |
81
+
82
+ Each JSONL record carries `seq`, `arm`, `receivedAt`, `method`, `path`,
83
+ `headers` (auth values replaced by `<redacted>`), `bodyBytes`, `bodySha256`,
84
+ `model`, `sessionId`, `syntheticUsage`, and the exact `rawBody`. Non-Messages
85
+ traffic is recorded with `kind: "other"` (0 such requests in this capture), so a
86
+ rejected fake provider would be visible rather than silently dropped.
87
+
88
+ `syntheticUsage` is derived from the request length (`ceil(bodyBytes / 4)`,
89
+ output from the reply length) and is labelled as such. It exists to drive DSH's
90
+ usage plumbing; the cache counters are explicitly `0` because the server models
91
+ no caching.
92
+
93
+ ### 3.2 Pointing DSH at the endpoint
94
+
95
+ No source change and no credential file: two environment variables the provider
96
+ already reads, plus a profile overlay.
97
+
98
+ | Mechanism | Where it comes from |
99
+ |---|---|
100
+ | `DEEPSEEK_BASE_URL=http://127.0.0.1:<port>/<arm>` | `BASE_URL_ENV` in `llm-deepseek/src/config.ts`, resolved from the launch environment (`resolveAdapterOptions(config, environment)`) |
101
+ | `DEEPSEEK_API_KEY=sk-lev6-fixture-no-real-key` | headless reads credentials from the launch environment (`packages/bundle/headless/README.md`); a blank or header-unsafe key fails `assertUsableApiKey`, any other value passes |
102
+ | `DSH_HOME=<temp>/home-a` | isolated profile, sessions, storages — no user state is read |
103
+ | `DSH_TELEMETRY_DISABLED=1` | opt out of the OTel exporter |
104
+ | `LEV6_PERSONA_PREFIX` | read by the overlay below |
105
+
106
+ Profile overlay `examples/boost/lev6-arm.patch.yml` (applied with `--patch`,
107
+ after the bundle and profile layers):
108
+
109
+ ```yaml
110
+ - id: system-prompt
111
+ config:
112
+ includeHarnessIdentity: false # the persona prefix becomes prompt byte 0
113
+ personaPrefix: !!js process.env.LEV6_PERSONA_PREFIX
114
+ - id: session-title-llm
115
+ disabled: true # otherwise a second, unrelated request per session
116
+ - id: agent-default-model
117
+ config:
118
+ provider: deepseek-official
119
+ model: deepseek-flash
120
+ ```
121
+
122
+ Both arms use the same overlay and the same task text
123
+ (`Reply with one short sentence.`); they differ only in the persona prefix.
124
+
125
+ ### 3.3 Arms and sessions
126
+
127
+ | Arm | Persona prefix (first bytes of the system prompt) | Sessions |
128
+ |---|---|---|
129
+ | `arm-a` | `LEV6 persona prefix: stable benchmark persona.` | 2 fresh sessions, same bytes |
130
+ | `arm-b` | `<fresh UUID v4> LEV6 persona prefix: stable benchmark persona.` | 2 fresh sessions, new UUID per run |
131
+
132
+ Fresh sessions are real: headless creates a new `session-<uuid>` per invocation,
133
+ each with its own session log in its `DSH_HOME`; the capture confirms 4 distinct
134
+ `x-deepseek-harness-session-id` values for 4 requests.
135
+
136
+ ### 3.4 Analyzer: two prefix views
137
+
138
+ `examples/boost/lev6-analyze.mjs` is pure (file in, JSON/markdown out):
139
+
140
+ 1. **wire** — the raw HTTP body bytes. This is the literal capture. Note that
141
+ DSH serializes `messages` **before** `system` and `tools`, so this view
142
+ understates a stable system prompt.
143
+ 2. **promptOrder** — the cacheable prompt in provider order:
144
+ `system` text ‖ tool-schema JSON ‖ messages JSON, no separators. This is a
145
+ documented, deterministic canonicalization of the captured request (not a
146
+ second capture) that mirrors the order a prefix-caching provider hashes.
147
+
148
+ Both views report: request count, total input bytes/tokens, prefix-reused
149
+ bytes/tokens, reuse ratio (reused ÷ the bytes that have a predecessor), and the
150
+ first divergence offset. The wire view additionally names the top-level field
151
+ that contains the divergence and reports whether the **base request** — every
152
+ field before the plugin request extensions — was fully reused.
153
+
154
+ ### 3.5 Local validation
155
+
156
+ Endpoint smoke test with `curl` (see §7), then two independent replications of
157
+ the full experiment on WSL2 Ubuntu 24.04:
158
+
159
+ | Replication | How | Body sizes (A1/A2/B1/B2) |
160
+ |---|---|---|
161
+ | R1 | direct `node <dsh>/lib/bin.js --profile headless …` runs, 4 sessions | 63,582 / 63,582 / 63,656 / 63,656 bytes |
162
+ | R2 | the CI workflow's `run:` steps executed verbatim by a local harness with a `dsh` shim | 63,568 / 63,568 / 63,642 / 63,642 bytes |
163
+
164
+ R1 and R2 are **two independent replications of the same experiment — the same
165
+ two arms (`arm-a`, `arm-b`) re-executed — not a third and fourth arm.** The
166
+ experiment proper has exactly two arms and four sessions; R1/R2 exist only to
167
+ show the result repeats across two independent runs of the same code path.
168
+
169
+ R2 is the committed capture (`capture.jsonl`, `lev6.json`); R1's summary is
170
+ [replication-r1.json](replication-r1.json) (its raw capture lived in a scratch
171
+ directory and is not committed). The ±14-byte offset between replications is the
172
+ length of the workspace path echoed into the runtime context message. Every
173
+ conclusion below holds identically in both.
174
+
175
+ ## 4. Results
176
+
177
+ `40-checker/results/lev6/lev6.json`, capture sha256 `0b5a2e64…`:
178
+
179
+ | arm | requests | sessions | input bytes | input tokens | wire reused | wire reuse | wire 1st divergence | base request | base fully reused | prompt reused | prompt reuse | prompt 1st divergence |
180
+ |---|---|---|---|---|---|---|---|---|---|---|---|---|
181
+ | `arm-a` | 2 | 2 | 127,136 | 31,784 | 26,059 B / 6,515 tok | **40.99 %** | 26,059 (`dsh_session_log`) | 25,966 B | **yes (25,966/25,966)** | 25,785 B / 6,447 tok | **100.00 %** | none |
182
+ | `arm-b` | 2 | 2 | 127,284 | 31,821 | 4,098 B / 1,025 tok | **6.44 %** | 4,098 (`system`, +0 into the system value) | 26,003 B | no (4,098/26,003) | 0 B / 0 tok | **0.00 %** | **0 (`system`)** |
183
+
184
+ Per-request facts:
185
+
186
+ | arm | seq | session | bytes | tokens | base request bytes |
187
+ |---|---|---|---|---|---|
188
+ | `arm-a` | 1 | `session-83128dee-a158-411f-8ed1-9e60b07ffea7` | 63,568 | 15,892 | 25,966 |
189
+ | `arm-a` | 2 | `session-032ee526-b3fb-49ee-a9f0-5f44ba918c71` | 63,568 | 15,892 | 25,966 |
190
+ | `arm-b` | 3 | `session-ec7578bc-d8e6-4e94-8384-8a308f6f0172` | 63,642 | 15,911 | 26,003 |
191
+ | `arm-b` | 4 | `session-e560bada-6790-4759-9f46-d2302449670d` | 63,642 | 15,911 | 26,003 |
192
+
193
+ R1 (standalone) gives the same picture: arm A wire reuse 40.99 % (26,063 B),
194
+ base 100 % (25,970/25,970), prompt 100 % (25,789/25,789); arm B wire 6.44 %
195
+ (4,102 B), prompt 0.00 % with divergence at prompt byte 0.
196
+
197
+ Assertions (all 11 pass in R1 and R2; the analyzer exits non-zero on failure):
198
+
199
+ | id | R2 result | detail |
200
+ |---|---|---|
201
+ | `captures-two-arms` | PASS | `arm-a(2), arm-b(2)` |
202
+ | `two-requests-per-arm` | PASS | 2 per arm |
203
+ | `fresh-session-per-request` | PASS | 2/2 distinct sessions per arm |
204
+ | `same-task-text-per-arm` | PASS | canonical messages identical within each arm |
205
+ | `stable-prompt-prefix-reuse` | PASS | arm A prompt reuse 100.00 % (≥ 95 %) |
206
+ | `stable-base-request-reused` | PASS | arm A base request 25,966/25,966 B; the wire prefix stops only at `dsh_session_log` |
207
+ | `volatile-diverges-at-prompt-byte-zero` | PASS | arm B prompt divergence 0 in `system` (≤ 16) |
208
+ | `volatile-prompt-reuse-is-small` | PASS | arm B prompt reuse 0.00 % (≤ 5 %) |
209
+ | `volatile-wire-diverges-at-system-prefix-start` | PASS | arm B wire divergence 4,098, i.e. 0 bytes into the system value |
210
+ | `volatile-wire-diverges-at-system-field` | PASS | arm B wire divergence field = `system` |
211
+ | `arms-are-distinguishable` | PASS | prompt reuse gap 100.00 pp (≥ 50 pp) |
212
+
213
+ ## 5. Where the 63.5 KB goes — request anatomy
214
+
215
+ From `capture-sample.json` (arm A, seq 1). Top-level fields, in wire order and
216
+ byte size:
217
+
218
+ | # | field | offset | bytes | kind |
219
+ |---|---|---|---|---|
220
+ | 1 | `model` | 1 | 16 | base |
221
+ | 2 | `stream` | 26 | 4 | base |
222
+ | 3 | `messages` | 40 | 3,952 | base |
223
+ | 4 | `max_tokens` | 4,004 | 6 | base |
224
+ | 5 | `thinking` | 4,024 | 18 | base |
225
+ | 6 | `output_config` | 4,054 | 17 | base |
226
+ | 7 | `system` | 4,088 | 2,665 (text 2,639) | base |
227
+ | 8 | `tools` | 6,763 | 19,194 (24 tools) | base |
228
+ | 9 | `dsh_session_log` | 25,966 | 31,509 | extension |
229
+ | 10 | `dsh_plugin_packages` | 57,494 | 6,051 (87 packages) | extension |
230
+
231
+ Two facts follow directly, and they matter for LEV-6:
232
+
233
+ 1. **The base request is the stable unit, and it is only 41 % of the bytes.**
234
+ The remaining 59 % (37,602 B) are plugin request extensions appended by
235
+ `prepareRequestExtensions` (`JSON.stringify({ ...body, ...fields })`). The
236
+ `dsh_session_log` field carries the session envelope (`session.id`,
237
+ `createdAt`, `cwd`) and therefore differs between every fresh session; the
238
+ `dsh_plugin_packages` inventory is constant for one installation.
239
+ 2. **`dsh_session_log` re-sends much of the request.** Its 14 wire events
240
+ include a 2,826-byte `system/message` copy of the system prompt, a
241
+ 19,357-byte `request/header` copy of the tool schemas, and 152 + 1,526 +
242
+ 5,845-byte `user/message` copies — i.e. the payload is duplicated behind a
243
+ per-session identifier. Whether a provider charges for these bytes is a
244
+ provider-side billing question this experiment does not answer; what is
245
+ measured is that DSH assembles and sends them.
246
+
247
+ Event breakdown of `dsh_session_log` in this request:
248
+ `permission/preset` 28 · `sandbox/mode` 26 · `approval/policy` 16 ·
249
+ `agent/inbox/spliced` 198 + 63 · `turn/start` 10 · `step/start` 19 ·
250
+ `system/message` 2,826 · `user/message` 152 + 1,526 + 5,845 ·
251
+ `request/header` 19,357 · `request/context` 115 · `session/title` 89.
252
+
253
+ Headers of the same request:
254
+
255
+ ```http
256
+ POST /arm-a/v1/messages HTTP/1.1
257
+ host: 127.0.0.1:8787
258
+ connection: keep-alive
259
+ user-agent: deepseek-harness/0.2.2-alpha.2 (+https://github.com/deepseek-ai/deepseek-harness)
260
+ content-type: application/json
261
+ accept: text/event-stream
262
+ x-api-key: <redacted>
263
+ anthropic-version: 2023-06-01
264
+ x-deepseek-harness-user-id: ff34d592-c014-43a0-aacd-fae009d599c7
265
+ x-deepseek-harness-session-id: session-83128dee-a158-411f-8ed1-9e60b07ffea7
266
+ accept-language: *
267
+ sec-fetch-mode: cors
268
+ accept-encoding: gzip, deflate
269
+ content-length: 63568
270
+ ```
271
+
272
+ No `anthropic-beta` header was needed: no file API, no in-history tool changes.
273
+
274
+ ## 6. What this means for the LEV-6 practice
275
+
276
+ - **A stable system prefix is achievable and byte-exact.** With the same
277
+ persona and the same task, two fresh sessions assemble a base request that is
278
+ byte-identical (25,966/25,966 B), including the 24 tool schemas and the
279
+ system prompt. Nothing volatile leaks into `system`, `tools`, or `messages`
280
+ in this composition — no clock, no session id, no port, no cwd inside the
281
+ prompt (the cwd appears in the runtime-context *context* message, which is
282
+ stable for a fixed workspace).
283
+ - **One nonce at the first prompt byte erases the whole prompt prefix.** Arm B
284
+ diverges at prompt byte 0 and reuses nothing, even though the rest of the
285
+ system prompt, all 24 tool schemas, and the entire message list are
286
+ unchanged. The lesson for plugin authors is the one LEV-6 states: put
287
+ per-run values in runtime context (a separate user-role snapshot), never in
288
+ the persona/system prefix.
289
+ - **Raw request bytes are the wrong prefix model for this harness.** DSH
290
+ appends `dsh_session_log` *after* the base request, and that field carries
291
+ the session id. A provider that cached raw HTTP bytes would stop at byte
292
+ 25,966 regardless of how stable the prompt is (hence A's 40.99 %); a
293
+ provider that caches the semantic prompt (system → tools → messages) would
294
+ see the full 25,785 bytes (100 %). The `promptOrder` view exists so the two
295
+ effects are not confused. Neither view is a measured cache hit.
296
+ - **The JSON key order is a trap when auditing this by hand.** `system` is
297
+ serialized after `messages` (offset 4,088 of 63,568), so a naive "first
298
+ differing byte" reading of a volatile *system* prefix reports ~4 KB instead
299
+ of the 2.6 KB prompt. The analyzer therefore reports both the wire offset and
300
+ the offset inside the system value (`+0` for arm B).
301
+
302
+ ## 7. Recorded sample request
303
+
304
+ Endpoint validation with `curl` (arm route, hand-written 194-byte body). Nothing
305
+ is redacted for sensitivity: the only key involved is the fixture value
306
+ `sk-lev6-curl-sample-not-a-real-key`, redacted by the server's header policy.
307
+
308
+ ```console
309
+ $ curl -sS -D - -X POST http://127.0.0.1:8798/arm-a/v1/messages \
310
+ -H 'content-type: application/json' \
311
+ -H 'x-api-key: sk-lev6-curl-sample-not-a-real-key' \
312
+ -H 'anthropic-version: 2023-06-01' \
313
+ --data '{"model":"deepseek-flash","stream":true,"max_tokens":64,
314
+ "messages":[{"role":"user","content":[{"type":"text","text":"Say hi."}]}],
315
+ "system":"You are a test agent.","thinking":{"type":"disabled"}}'
316
+ HTTP/1.1 200 OK
317
+ content-type: text/event-stream; charset=utf-8
318
+ cache-control: no-cache, no-transform
319
+ connection: keep-alive
320
+ x-lev6-capture: synthetic
321
+
322
+ event: message_start
323
+ data: {"type":"message_start","message":{"id":"msg_lev6_synthetic","type":"message","role":"assistant","model":"deepseek-flash","content":[],"usage":{"input_tokens":49,"output_tokens":0,"cache_read_input_tokens":0,"cache_creation_input_tokens":0}}}
324
+
325
+ event: content_block_start
326
+ data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}}
327
+
328
+ event: content_block_delta
329
+ data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"LEV6 synthetic reply (no model was called)."}}
330
+
331
+ event: content_block_stop
332
+ event: message_delta … {"stop_reason":"end_turn","usage":{"output_tokens":11}}
333
+ event: message_stop
334
+ ```
335
+
336
+ The record written for it (`rawBody`, byte-exact):
337
+
338
+ ```json
339
+ {"model":"deepseek-flash","stream":true,"max_tokens":64,"messages":[{"role":"user","content":[{"type":"text","text":"Say hi."}]}],"system":"You are a test agent.","thinking":{"type":"disabled"}}
340
+ ```
341
+
342
+ `bodyBytes: 194`, `bodySha256: 56f65947…`, `syntheticUsage.input_tokens: 49`.
343
+ The real DSH request from the experiment is in
344
+ [capture-sample.json](capture-sample.json) (field table, headers, event
345
+ breakdown, first 1,600 bytes) and verbatim in [capture.jsonl](capture.jsonl).
346
+
347
+ ## 8. CI: exact command and artifacts
348
+
349
+ Workflow: [.github/workflows/lev6-capture.yml](../../../.github/workflows/lev6-capture.yml),
350
+ manual trigger only.
351
+
352
+ ```console
353
+ gh workflow run lev6-capture.yml # or: Actions → lev6-capture → Run workflow
354
+ gh run watch
355
+ gh run download <run-id> -n lev6-capture
356
+ ```
357
+
358
+ What the job does, in order: Node 24 + `npm install --global
359
+ @deepseek-ai/dsh@0.2.2-alpha.2` → start the capture server on
360
+ `127.0.0.1:8787` (`--reset`, so each run starts empty) and wait for `/health` →
361
+ in an **empty workspace** under the runner temp dir, run `dsh --profile headless
362
+ --patch examples/boost/lev6-arm.patch.yml "Reply with one short sentence."`
363
+ twice for `arm-a` (constant persona) and twice for `arm-b` (fresh
364
+ `crypto.randomUUID()` per run), each arm with its own `DSH_HOME` → stop the
365
+ server → run the analyzer with `--assert` → publish the markdown table to the
366
+ job page → upload the artifact even if assertions fail → fail the job if the
367
+ analyzer exited non-zero.
368
+
369
+ The artifact `lev6-capture` contains `capture.jsonl`, `lev6.json` (written by CI
370
+ as `summary.json`; same object), `summary.md`, `server.out`, `server.err`, the
371
+ four `stdout-*.txt` / `stderr-*.txt` pairs, `nonces.txt`, and the recorded
372
+ toolchain versions.
373
+
374
+ ## 9. Limitations and non-claims
375
+
376
+ - **Synthetic model.** The server returns a fixed text block; no model ran.
377
+ Tool-call streaming, thinking blocks, and multi-turn tool loops are not
378
+ exercised, so this says nothing about those paths' assembly.
379
+ - **No provider, no cache, no billing.** No provider cache was hit or
380
+ emulated; the `usage` counters are derived from request bytes and the cache
381
+ counters are zero. "Reuse ratio" here is a byte-prefix property of two
382
+ assembled requests, not a cache hit rate and not money.
383
+ - **`promptOrder` is a model.** It is a deterministic canonicalization
384
+ (`system` ‖ tools ‖ messages) of the captured bytes. A real provider may
385
+ serialize tool schemas differently; the view is labelled and never mixed with
386
+ the raw capture.
387
+ - **Framework fields are unverified against the official gateway.** The
388
+ `dsh_session_log` and `dsh_plugin_packages` extensions are what DSH assembles
389
+ for the official route in this composition; whether `api.deepseek.com`
390
+ accepts or bills them was not tested (no request left the machine).
391
+ - **Composition deviations, both arms equally:** `session-title-llm` is
392
+ disabled (it would add a second, differently-shaped request per session, and
393
+ the capture would mix two request kinds), and `includeHarnessIdentity` is off
394
+ so the configurable persona is prompt byte 0 (the shipped headless profile
395
+ starts with a fixed identity section). Restoring the default would move arm
396
+ B's divergence to the persona section offset, not to 0, without changing the
397
+ conclusion.
398
+ - **Two sessions per arm, one task, one host.** Linux/WSL2 locally and
399
+ `ubuntu-latest` in CI; no Windows/macOS run. Byte counts shift with the
400
+ workspace path length (observed ±14 bytes), which is why the assertions are
401
+ relative, not absolute.
402
+ - **Session identity drives the wire boundary.** The `dsh_session_log`
403
+ envelope means the wire prefix can never reach 100 % across fresh sessions,
404
+ even for a perfect prefix. That is a property of this DSH composition, and
405
+ the report states it rather than hiding it behind the prompt-order number.
406
+
407
+ ## 10. Reproduction (local)
408
+
409
+ ```sh
410
+ # 1. install the anchor (CI installs globally; locally a project install is fine)
411
+ npm install @deepseek-ai/dsh@0.2.2-alpha.2
412
+
413
+ # 2. capture server
414
+ node examples/boost/lev6-capture-server.mjs \
415
+ --port 8787 --out capture.jsonl --reset &
416
+
417
+ # 3. two fresh sessions per arm, empty workspace, isolated homes
418
+ mkdir -p /tmp/lev6/workspace
419
+ for run in 1 2; do
420
+ ( cd /tmp/lev6/workspace && \
421
+ DSH_HOME=/tmp/lev6/home-a \
422
+ DEEPSEEK_API_KEY=sk-lev6-fixture-no-real-key \
423
+ DEEPSEEK_BASE_URL=http://127.0.0.1:8787/arm-a \
424
+ DSH_TELEMETRY_DISABLED=1 \
425
+ LEV6_PERSONA_PREFIX='LEV6 persona prefix: stable benchmark persona.' \
426
+ dsh --profile headless --patch "$PWD/examples/boost/lev6-arm.patch.yml" \
427
+ 'Reply with one short sentence.' )
428
+ done
429
+ for run in 1 2; do
430
+ nonce="$(node -p 'crypto.randomUUID()')"
431
+ ( cd /tmp/lev6/workspace && \
432
+ DSH_HOME=/tmp/lev6/home-b \
433
+ DEEPSEEK_API_KEY=sk-lev6-fixture-no-real-key \
434
+ DEEPSEEK_BASE_URL=http://127.0.0.1:8787/arm-b \
435
+ DSH_TELEMETRY_DISABLED=1 \
436
+ LEV6_PERSONA_PREFIX="$nonce LEV6 persona prefix: stable benchmark persona." \
437
+ dsh --profile headless --patch "$PWD/examples/boost/lev6-arm.patch.yml" \
438
+ 'Reply with one short sentence.' )
439
+ done
440
+
441
+ # 4. pure analysis (exit 1 if an expectation fails)
442
+ node examples/boost/lev6-analyze.mjs \
443
+ --capture capture.jsonl --out lev6.json --markdown summary.md --assert
444
+ ```
445
+
446
+ ---
447
+
448
+ ## CI replication (2026-11-01)
449
+
450
+ `lev6-capture` run [41218936165](https://github.com/PerryLink/dsh-standards/actions/runs/41218936165)
451
+ completed with the analyzer's 11/11 assertions:
452
+
453
+ | arm | wire reuse | base request fully reused | prompt-order reuse | prompt first divergence |
454
+ |---|---|---|---|---|
455
+ | arm-a (stable) | 42.05% (22,855 B) | yes, 22,762/22,762 B | **100.00%** (22,581 B) | none |
456
+ | arm-b (per-run nonce) | 1.64% (894 B) | no | **0.00%** (0 B) | **0 (`system`)** |
457
+
458
+ Absolute byte counts differ from the committed capture because the CI workspace
459
+ path and profile layers change the serialized prefix; the relative result and the
460
+ falsification are identical. Artifact: `lev6-capture` (run 41218936165).