dsh-pstack 0.1.0 → 0.2.0-beta.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 (312) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +92 -117
  3. package/assets/agents/comment-sicko.md +1 -1
  4. package/assets/agents/poteto-agent.md +2 -2
  5. package/assets/docs/guide/01-setup.md +9 -9
  6. package/assets/docs/guide/02-poteto-mode.md +4 -4
  7. package/assets/docs/guide/05-build-and-clean.md +3 -3
  8. package/assets/docs/guide/06-verify-and-ship.md +2 -2
  9. package/assets/docs/guide/07-overnight.md +10 -12
  10. package/assets/docs/guide/09-make-it-yours.md +2 -6
  11. package/assets/docs/guide/10-recipes-and-pitfalls.md +3 -3
  12. package/assets/docs/guide/README.md +1 -1
  13. package/assets/docs/guide/images/design.jpg +0 -0
  14. package/assets/docs/guide/images/overnight.jpg +0 -0
  15. package/assets/docs/guide/images/recipes.jpg +0 -0
  16. package/assets/docs/guide/images/router.jpg +0 -0
  17. package/assets/docs/guide/images/understanding.jpg +0 -0
  18. package/assets/docs/guide/images/verification.jpg +0 -0
  19. package/assets/docs/harness/dsh.md +60 -65
  20. package/assets/docs/pstack-models.example.md +40 -9
  21. package/assets/skills/architect/SKILL.md +12 -12
  22. package/assets/skills/arena/SKILL.md +11 -11
  23. package/assets/skills/automate-me/SKILL.md +15 -14
  24. package/assets/skills/benchmark-checklist/SKILL.md +0 -2
  25. package/assets/skills/blast-radius/SKILL.md +5 -5
  26. package/assets/skills/bro/SKILL.md +0 -2
  27. package/assets/skills/correct/SKILL.md +0 -2
  28. package/assets/skills/create-formal-verification-skill/SKILL.md +2 -2
  29. package/assets/skills/create-verification-skill/SKILL.md +2 -2
  30. package/assets/skills/figure-it-out/SKILL.md +13 -13
  31. package/assets/skills/how/SKILL.md +6 -6
  32. package/assets/skills/how/references/explainer-prompt.md +1 -1
  33. package/assets/skills/in-your-own-words/SKILL.md +0 -2
  34. package/assets/skills/interrogate/SKILL.md +9 -7
  35. package/assets/skills/interrogate/references/rubric.md +1 -1
  36. package/assets/skills/ketchup/SKILL.md +4 -4
  37. package/assets/skills/maintain-formal-verification-skill/SKILL.md +2 -2
  38. package/assets/skills/maintain-verification-skill/SKILL.md +3 -3
  39. package/assets/skills/no-comments/SKILL.md +7 -7
  40. package/assets/skills/poteto-help/SKILL.md +32 -31
  41. package/assets/skills/poteto-help/references/prompting.md +1 -1
  42. package/assets/skills/poteto-help/references/recipes.md +1 -1
  43. package/assets/skills/poteto-mode/SKILL.md +17 -19
  44. package/assets/skills/poteto-mode/playbooks/authoring-a-skill.md +3 -3
  45. package/assets/skills/poteto-mode/playbooks/autonomous-run.md +6 -4
  46. package/assets/skills/poteto-mode/playbooks/autopilot-full.md +6 -6
  47. package/assets/skills/poteto-mode/playbooks/autopilot-stack.md +2 -2
  48. package/assets/skills/poteto-mode/playbooks/babysit.md +3 -3
  49. package/assets/skills/poteto-mode/playbooks/bug-fix.md +7 -7
  50. package/assets/skills/poteto-mode/playbooks/eval.md +3 -3
  51. package/assets/skills/poteto-mode/playbooks/feature.md +8 -8
  52. package/assets/skills/poteto-mode/playbooks/hillclimb.md +3 -3
  53. package/assets/skills/poteto-mode/playbooks/investigation.md +2 -2
  54. package/assets/skills/poteto-mode/playbooks/multi-phase-plan.md +21 -21
  55. package/assets/skills/poteto-mode/playbooks/opening-a-pr.md +6 -6
  56. package/assets/skills/poteto-mode/playbooks/orchestrate.md +13 -13
  57. package/assets/skills/poteto-mode/playbooks/pause-safely.md +2 -2
  58. package/assets/skills/poteto-mode/playbooks/perf-issue.md +6 -6
  59. package/assets/skills/poteto-mode/playbooks/prototype.md +4 -4
  60. package/assets/skills/poteto-mode/playbooks/refactoring.md +9 -9
  61. package/assets/skills/poteto-mode/playbooks/runtime-forensics.md +3 -3
  62. package/assets/skills/poteto-mode/playbooks/session-pickup.md +2 -2
  63. package/assets/skills/poteto-mode/playbooks/shipping.md +2 -2
  64. package/assets/skills/poteto-mode/playbooks/trace-forensics.md +2 -2
  65. package/assets/skills/poteto-mode/playbooks/visual-parity.md +5 -5
  66. package/assets/skills/poteto-mode/playbooks/worktree-cleanup.md +14 -6
  67. package/assets/skills/poteto-mode/scripts/check-plan.mjs +85 -70
  68. package/assets/skills/poteto-mode/scripts/check-plan.test.mjs +343 -0
  69. package/assets/skills/poteto-mode/scripts/orch/orch.mjs +4282 -0
  70. package/assets/skills/poteto-mode/scripts/orch/orch.test.mjs +2042 -0
  71. package/assets/skills/poteto-mode/scripts/watch-pr/cli.test.mjs +5101 -0
  72. package/assets/skills/poteto-mode/scripts/watch-pr/github.test.mjs +1177 -0
  73. package/assets/skills/poteto-mode/scripts/watch-pr/policy.test.mjs +1441 -0
  74. package/assets/skills/poteto-mode/scripts/watch-pr/watch-pr.mjs +4601 -0
  75. package/assets/skills/poteto-mode/scripts/worktree-audit.mjs +675 -0
  76. package/assets/skills/principle-attack-the-premise/SKILL.md +0 -2
  77. package/assets/skills/principle-boundary-discipline/SKILL.md +0 -2
  78. package/assets/skills/principle-build-the-lever/SKILL.md +0 -3
  79. package/assets/skills/principle-encode-lessons-in-structure/SKILL.md +0 -2
  80. package/assets/skills/principle-exhaust-the-design-space/SKILL.md +0 -2
  81. package/assets/skills/principle-experience-first/SKILL.md +0 -2
  82. package/assets/skills/principle-explain-the-number/SKILL.md +0 -2
  83. package/assets/skills/principle-fix-root-causes/SKILL.md +0 -2
  84. package/assets/skills/principle-foundational-thinking/SKILL.md +0 -2
  85. package/assets/skills/principle-guard-the-context-window/SKILL.md +0 -2
  86. package/assets/skills/principle-laziness-protocol/SKILL.md +0 -2
  87. package/assets/skills/principle-make-operations-idempotent/SKILL.md +0 -2
  88. package/assets/skills/principle-migrate-callers-then-delete-legacy-apis/SKILL.md +0 -2
  89. package/assets/skills/principle-minimize-reader-load/SKILL.md +0 -2
  90. package/assets/skills/principle-model-the-domain/SKILL.md +0 -2
  91. package/assets/skills/principle-never-block-on-the-human/SKILL.md +0 -2
  92. package/assets/skills/principle-outcome-oriented-execution/SKILL.md +0 -2
  93. package/assets/skills/principle-prove-it-works/SKILL.md +2 -2
  94. package/assets/skills/principle-redesign-from-first-principles/SKILL.md +0 -2
  95. package/assets/skills/principle-separate-before-serializing-shared-state/SKILL.md +0 -2
  96. package/assets/skills/principle-sequence-verifiable-units/SKILL.md +0 -2
  97. package/assets/skills/principle-subtract-before-you-add/SKILL.md +0 -2
  98. package/assets/skills/principle-test-behavior-not-implementation/SKILL.md +0 -2
  99. package/assets/skills/principle-type-system-discipline/SKILL.md +0 -2
  100. package/assets/skills/recall/SKILL.md +9 -9
  101. package/assets/skills/reflect/SKILL.md +20 -21
  102. package/assets/skills/reflect/references/divergent-reviewer.md +4 -4
  103. package/assets/skills/reflect/references/judgment-reviewer.md +2 -2
  104. package/assets/skills/reflect/references/synthesizer.md +6 -6
  105. package/assets/skills/reflect/references/tooling-reviewer.md +2 -2
  106. package/assets/skills/setup-pstack/SKILL.md +28 -37
  107. package/assets/skills/sharpen/SKILL.md +0 -2
  108. package/assets/skills/show-me-your-work/SKILL.md +9 -9
  109. package/assets/skills/show-me-your-work/scripts/log.mjs +108 -0
  110. package/assets/skills/swarm/SKILL.md +8 -6
  111. package/assets/skills/tdd/SKILL.md +0 -2
  112. package/assets/skills/teach/SKILL.md +2 -2
  113. package/assets/skills/technical-writing/SKILL.md +2 -2
  114. package/assets/skills/typescript-best-practices/SKILL.md +6 -4
  115. package/assets/skills/unslop/SKILL.md +0 -2
  116. package/assets/skills/why/SKILL.md +9 -9
  117. package/cordis.patch.yml +33 -14
  118. package/dist/frontmatter-BQX3ekwP.mjs +229 -0
  119. package/dist/frontmatter-BQX3ekwP.mjs.map +1 -0
  120. package/dist/history.d.mts +429 -0
  121. package/dist/history.mjs +1129 -0
  122. package/dist/history.mjs.map +1 -0
  123. package/dist/host-contract-o47JH_r8.d.mts +527 -0
  124. package/dist/index.d.mts +273 -11
  125. package/dist/index.mjs +248 -148
  126. package/dist/index.mjs.map +1 -1
  127. package/dist/paths-D_JlVmBk.mjs +42 -0
  128. package/dist/paths-D_JlVmBk.mjs.map +1 -0
  129. package/dist/script.d.mts +193 -0
  130. package/dist/script.mjs +782 -0
  131. package/dist/script.mjs.map +1 -0
  132. package/dist/subagent.d.mts +306 -100
  133. package/dist/subagent.mjs +1309 -343
  134. package/dist/subagent.mjs.map +1 -1
  135. package/locale/en.json +6 -0
  136. package/locale/zh.json +6 -0
  137. package/package.json +55 -41
  138. package/static/icon.png +0 -0
  139. package/assets/skills/poteto-mode/scripts/bootstrap.ts +0 -62
  140. package/assets/skills/poteto-mode/scripts/bun.lock +0 -67
  141. package/assets/skills/poteto-mode/scripts/check-plan.test.ts +0 -96
  142. package/assets/skills/poteto-mode/scripts/orch/orch.test.ts +0 -761
  143. package/assets/skills/poteto-mode/scripts/orch/orch.ts +0 -590
  144. package/assets/skills/poteto-mode/scripts/orch/store.ts +0 -1677
  145. package/assets/skills/poteto-mode/scripts/package.json +0 -16
  146. package/assets/skills/poteto-mode/scripts/watch-pr/cli.test.ts +0 -224
  147. package/assets/skills/poteto-mode/scripts/watch-pr/cli.ts +0 -223
  148. package/assets/skills/poteto-mode/scripts/watch-pr/fakes.test-helper.ts +0 -129
  149. package/assets/skills/poteto-mode/scripts/watch-pr/github.test.ts +0 -436
  150. package/assets/skills/poteto-mode/scripts/watch-pr/github.ts +0 -718
  151. package/assets/skills/poteto-mode/scripts/watch-pr/policy.test.ts +0 -420
  152. package/assets/skills/poteto-mode/scripts/watch-pr/policy.ts +0 -836
  153. package/assets/skills/poteto-mode/scripts/watch-pr/render.ts +0 -169
  154. package/assets/skills/poteto-mode/scripts/watch-pr/tsconfig.json +0 -13
  155. package/assets/skills/poteto-mode/scripts/watch-pr/types.compile.ts +0 -93
  156. package/assets/skills/poteto-mode/scripts/watch-pr/types.ts +0 -413
  157. package/assets/skills/poteto-mode/scripts/watch-pr/watch-pr +0 -6
  158. package/assets/skills/poteto-mode/scripts/worktree-audit.sh +0 -127
  159. package/assets/skills/show-me-your-work/scripts/log.sh +0 -42
  160. package/dist/LICENSE +0 -22
  161. package/dist/README.md +0 -159
  162. package/dist/assets/agents/comment-sicko.md +0 -32
  163. package/dist/assets/agents/poteto-agent.md +0 -8
  164. package/dist/assets/docs/guide/01-setup.md +0 -64
  165. package/dist/assets/docs/guide/02-poteto-mode.md +0 -139
  166. package/dist/assets/docs/guide/03-understand.md +0 -79
  167. package/dist/assets/docs/guide/04-design.md +0 -133
  168. package/dist/assets/docs/guide/05-build-and-clean.md +0 -83
  169. package/dist/assets/docs/guide/06-verify-and-ship.md +0 -152
  170. package/dist/assets/docs/guide/07-overnight.md +0 -122
  171. package/dist/assets/docs/guide/08-principles.md +0 -72
  172. package/dist/assets/docs/guide/09-make-it-yours.md +0 -100
  173. package/dist/assets/docs/guide/10-recipes-and-pitfalls.md +0 -180
  174. package/dist/assets/docs/guide/README.md +0 -38
  175. package/dist/assets/docs/harness/dsh.md +0 -65
  176. package/dist/assets/docs/pstack-models.example.md +0 -23
  177. package/dist/assets/skills/architect/SKILL.md +0 -81
  178. package/dist/assets/skills/architect/references/design-red-flags.md +0 -57
  179. package/dist/assets/skills/architect/references/rationale-template.md +0 -35
  180. package/dist/assets/skills/architect/references/runner-prompt.md +0 -20
  181. package/dist/assets/skills/arena/SKILL.md +0 -50
  182. package/dist/assets/skills/automate-me/SKILL.md +0 -105
  183. package/dist/assets/skills/benchmark-checklist/SKILL.md +0 -41
  184. package/dist/assets/skills/blast-radius/SKILL.md +0 -52
  185. package/dist/assets/skills/bro/SKILL.md +0 -9
  186. package/dist/assets/skills/correct/SKILL.md +0 -34
  187. package/dist/assets/skills/create-formal-verification-skill/SKILL.md +0 -43
  188. package/dist/assets/skills/create-verification-skill/SKILL.md +0 -46
  189. package/dist/assets/skills/create-verification-skill/references/feature-map-example/README.md +0 -47
  190. package/dist/assets/skills/create-verification-skill/references/feature-map-example/create-note.md +0 -39
  191. package/dist/assets/skills/create-verification-skill/references/feature-map-example/search.md +0 -45
  192. package/dist/assets/skills/figure-it-out/SKILL.md +0 -54
  193. package/dist/assets/skills/how/SKILL.md +0 -38
  194. package/dist/assets/skills/how/references/explainer-prompt.md +0 -55
  195. package/dist/assets/skills/how/references/explorer-prompt.md +0 -35
  196. package/dist/assets/skills/in-your-own-words/SKILL.md +0 -9
  197. package/dist/assets/skills/interrogate/SKILL.md +0 -69
  198. package/dist/assets/skills/interrogate/references/code-quality-review.md +0 -47
  199. package/dist/assets/skills/interrogate/references/lead-judgment.md +0 -39
  200. package/dist/assets/skills/interrogate/references/reviewer-prompt.md +0 -62
  201. package/dist/assets/skills/interrogate/references/rubric.md +0 -77
  202. package/dist/assets/skills/ketchup/SKILL.md +0 -45
  203. package/dist/assets/skills/maintain-formal-verification-skill/SKILL.md +0 -60
  204. package/dist/assets/skills/maintain-verification-skill/SKILL.md +0 -41
  205. package/dist/assets/skills/no-comments/SKILL.md +0 -26
  206. package/dist/assets/skills/poteto-help/SKILL.md +0 -161
  207. package/dist/assets/skills/poteto-help/references/prompting.md +0 -51
  208. package/dist/assets/skills/poteto-help/references/recipes.md +0 -51
  209. package/dist/assets/skills/poteto-mode/SKILL.md +0 -153
  210. package/dist/assets/skills/poteto-mode/playbooks/authoring-a-skill.md +0 -12
  211. package/dist/assets/skills/poteto-mode/playbooks/autonomous-run.md +0 -13
  212. package/dist/assets/skills/poteto-mode/playbooks/autopilot-full.md +0 -25
  213. package/dist/assets/skills/poteto-mode/playbooks/autopilot-stack.md +0 -12
  214. package/dist/assets/skills/poteto-mode/playbooks/babysit.md +0 -23
  215. package/dist/assets/skills/poteto-mode/playbooks/bug-fix.md +0 -15
  216. package/dist/assets/skills/poteto-mode/playbooks/eval.md +0 -25
  217. package/dist/assets/skills/poteto-mode/playbooks/feature.md +0 -21
  218. package/dist/assets/skills/poteto-mode/playbooks/hillclimb.md +0 -21
  219. package/dist/assets/skills/poteto-mode/playbooks/investigation.md +0 -14
  220. package/dist/assets/skills/poteto-mode/playbooks/multi-phase-plan.md +0 -155
  221. package/dist/assets/skills/poteto-mode/playbooks/opening-a-pr.md +0 -34
  222. package/dist/assets/skills/poteto-mode/playbooks/orchestrate.md +0 -112
  223. package/dist/assets/skills/poteto-mode/playbooks/pause-safely.md +0 -10
  224. package/dist/assets/skills/poteto-mode/playbooks/perf-issue.md +0 -25
  225. package/dist/assets/skills/poteto-mode/playbooks/prototype.md +0 -14
  226. package/dist/assets/skills/poteto-mode/playbooks/refactoring.md +0 -16
  227. package/dist/assets/skills/poteto-mode/playbooks/runtime-forensics.md +0 -11
  228. package/dist/assets/skills/poteto-mode/playbooks/session-pickup.md +0 -11
  229. package/dist/assets/skills/poteto-mode/playbooks/shipping.md +0 -12
  230. package/dist/assets/skills/poteto-mode/playbooks/trace-forensics.md +0 -14
  231. package/dist/assets/skills/poteto-mode/playbooks/visual-parity.md +0 -11
  232. package/dist/assets/skills/poteto-mode/playbooks/worktree-cleanup.md +0 -12
  233. package/dist/assets/skills/poteto-mode/references/bugbot-triage.md +0 -142
  234. package/dist/assets/skills/poteto-mode/scripts/bootstrap.ts +0 -62
  235. package/dist/assets/skills/poteto-mode/scripts/bun.lock +0 -67
  236. package/dist/assets/skills/poteto-mode/scripts/check-plan.mjs +0 -205
  237. package/dist/assets/skills/poteto-mode/scripts/check-plan.test.ts +0 -96
  238. package/dist/assets/skills/poteto-mode/scripts/orch/orch.test.ts +0 -761
  239. package/dist/assets/skills/poteto-mode/scripts/orch/orch.ts +0 -590
  240. package/dist/assets/skills/poteto-mode/scripts/orch/store.ts +0 -1677
  241. package/dist/assets/skills/poteto-mode/scripts/package.json +0 -16
  242. package/dist/assets/skills/poteto-mode/scripts/watch-pr/cli.test.ts +0 -224
  243. package/dist/assets/skills/poteto-mode/scripts/watch-pr/cli.ts +0 -223
  244. package/dist/assets/skills/poteto-mode/scripts/watch-pr/fakes.test-helper.ts +0 -129
  245. package/dist/assets/skills/poteto-mode/scripts/watch-pr/github.test.ts +0 -436
  246. package/dist/assets/skills/poteto-mode/scripts/watch-pr/github.ts +0 -718
  247. package/dist/assets/skills/poteto-mode/scripts/watch-pr/policy.test.ts +0 -420
  248. package/dist/assets/skills/poteto-mode/scripts/watch-pr/policy.ts +0 -836
  249. package/dist/assets/skills/poteto-mode/scripts/watch-pr/render.ts +0 -169
  250. package/dist/assets/skills/poteto-mode/scripts/watch-pr/tsconfig.json +0 -13
  251. package/dist/assets/skills/poteto-mode/scripts/watch-pr/types.compile.ts +0 -93
  252. package/dist/assets/skills/poteto-mode/scripts/watch-pr/types.ts +0 -413
  253. package/dist/assets/skills/poteto-mode/scripts/watch-pr/watch-pr +0 -6
  254. package/dist/assets/skills/poteto-mode/scripts/worktree-audit.sh +0 -127
  255. package/dist/assets/skills/principle-attack-the-premise/SKILL.md +0 -23
  256. package/dist/assets/skills/principle-boundary-discipline/SKILL.md +0 -36
  257. package/dist/assets/skills/principle-build-the-lever/SKILL.md +0 -26
  258. package/dist/assets/skills/principle-encode-lessons-in-structure/SKILL.md +0 -13
  259. package/dist/assets/skills/principle-exhaust-the-design-space/SKILL.md +0 -11
  260. package/dist/assets/skills/principle-experience-first/SKILL.md +0 -21
  261. package/dist/assets/skills/principle-explain-the-number/SKILL.md +0 -19
  262. package/dist/assets/skills/principle-fix-root-causes/SKILL.md +0 -23
  263. package/dist/assets/skills/principle-foundational-thinking/SKILL.md +0 -23
  264. package/dist/assets/skills/principle-guard-the-context-window/SKILL.md +0 -14
  265. package/dist/assets/skills/principle-laziness-protocol/SKILL.md +0 -12
  266. package/dist/assets/skills/principle-make-operations-idempotent/SKILL.md +0 -24
  267. package/dist/assets/skills/principle-migrate-callers-then-delete-legacy-apis/SKILL.md +0 -16
  268. package/dist/assets/skills/principle-minimize-reader-load/SKILL.md +0 -20
  269. package/dist/assets/skills/principle-model-the-domain/SKILL.md +0 -26
  270. package/dist/assets/skills/principle-never-block-on-the-human/SKILL.md +0 -17
  271. package/dist/assets/skills/principle-outcome-oriented-execution/SKILL.md +0 -23
  272. package/dist/assets/skills/principle-prove-it-works/SKILL.md +0 -24
  273. package/dist/assets/skills/principle-redesign-from-first-principles/SKILL.md +0 -18
  274. package/dist/assets/skills/principle-separate-before-serializing-shared-state/SKILL.md +0 -18
  275. package/dist/assets/skills/principle-sequence-verifiable-units/SKILL.md +0 -19
  276. package/dist/assets/skills/principle-subtract-before-you-add/SKILL.md +0 -20
  277. package/dist/assets/skills/principle-test-behavior-not-implementation/SKILL.md +0 -22
  278. package/dist/assets/skills/principle-type-system-discipline/SKILL.md +0 -15
  279. package/dist/assets/skills/recall/SKILL.md +0 -37
  280. package/dist/assets/skills/reflect/SKILL.md +0 -70
  281. package/dist/assets/skills/reflect/references/divergent-reviewer.md +0 -38
  282. package/dist/assets/skills/reflect/references/judgment-reviewer.md +0 -37
  283. package/dist/assets/skills/reflect/references/synthesizer.md +0 -56
  284. package/dist/assets/skills/reflect/references/tooling-reviewer.md +0 -48
  285. package/dist/assets/skills/setup-pstack/SKILL.md +0 -76
  286. package/dist/assets/skills/sharpen/SKILL.md +0 -18
  287. package/dist/assets/skills/show-me-your-work/SKILL.md +0 -84
  288. package/dist/assets/skills/show-me-your-work/references/decision-log-template.tsv +0 -1
  289. package/dist/assets/skills/show-me-your-work/scripts/log.sh +0 -42
  290. package/dist/assets/skills/swarm/SKILL.md +0 -41
  291. package/dist/assets/skills/tdd/SKILL.md +0 -44
  292. package/dist/assets/skills/teach/SKILL.md +0 -23
  293. package/dist/assets/skills/technical-writing/SKILL.md +0 -108
  294. package/dist/assets/skills/typescript-best-practices/SKILL.md +0 -32
  295. package/dist/assets/skills/typescript-best-practices/references/patterns.md +0 -328
  296. package/dist/assets/skills/unslop/SKILL.md +0 -64
  297. package/dist/assets/skills/why/SKILL.md +0 -100
  298. package/dist/assets/skills/why/references/epistemics.md +0 -71
  299. package/dist/assets/skills/why/references/investigator-prompt.md +0 -84
  300. package/dist/assets/skills/why/references/source-playbook.md +0 -17
  301. package/dist/assets/skills/why/references/sources/code-archaeology.md +0 -51
  302. package/dist/assets/skills/why/references/sources/databricks.md +0 -70
  303. package/dist/assets/skills/why/references/sources/datadog.md +0 -97
  304. package/dist/assets/skills/why/references/sources/incident-postmortem.md +0 -5
  305. package/dist/assets/skills/why/references/sources/linear.md +0 -48
  306. package/dist/assets/skills/why/references/sources/notion.md +0 -55
  307. package/dist/assets/skills/why/references/sources/sentry.md +0 -66
  308. package/dist/assets/skills/why/references/sources/slack.md +0 -17
  309. package/dist/assets/skills/why/references/synthesizer-prompt.md +0 -129
  310. package/dist/cordis.patch.yml +0 -20
  311. package/dist/paths-Bbai4CaT.mjs +0 -16
  312. package/dist/paths-Bbai4CaT.mjs.map +0 -1
@@ -1,420 +0,0 @@
1
- import { describe, expect, it } from "bun:test";
2
- import { WatcherQueryError } from "./github.ts";
3
- import {
4
- applyQueueSnapshot,
5
- assessGitHubMerge,
6
- classifyPr,
7
- createQueueState,
8
- evaluateQueue,
9
- planQueue,
10
- queryBackoffSeconds,
11
- readSnapshot,
12
- runQueued,
13
- selectTierMajorStackDecision,
14
- } from "./policy.ts";
15
- import {
16
- fakeReader,
17
- failedCheck,
18
- passingCheck,
19
- pendingCheck,
20
- } from "./fakes.test-helper.ts";
21
- import type {
22
- GitHubReader,
23
- NonEmpty,
24
- PollingOptions,
25
- PrContext,
26
- ProgressVerdict,
27
- PullRequestFacts,
28
- RollupState,
29
- } from "./types.ts";
30
- import { parsePrNumber } from "./types.ts";
31
-
32
- const context = (number: number): PrContext => ({
33
- owner: "owner",
34
- repo: "repo",
35
- number: parsePrNumber(number),
36
- });
37
- const options = {
38
- interval: 10,
39
- sweepInterval: 300,
40
- timeout: 0,
41
- maxQueryErrors: 5,
42
- allowDraft: false,
43
- } satisfies PollingOptions;
44
-
45
- describe("readiness truth table", () => {
46
- it("covers every specified row and every UNKNOWN rollup value", () => {
47
- const cases: readonly [
48
- PullRequestFacts["mergeStateStatus"],
49
- RollupState,
50
- "allowed" | "refused",
51
- ][] = [
52
- ["BLOCKED", "FAILURE", "refused"],
53
- ["BLOCKED", "ERROR", "refused"],
54
- ["BLOCKED", "PENDING", "allowed"],
55
- ["UNSTABLE", "FAILURE", "allowed"],
56
- ["UNKNOWN", "ERROR", "allowed"],
57
- ["UNKNOWN", "EXPECTED", "allowed"],
58
- ["UNKNOWN", "FAILURE", "allowed"],
59
- ["UNKNOWN", "PENDING", "allowed"],
60
- ["UNKNOWN", "SUCCESS", "allowed"],
61
- ["UNKNOWN", null, "allowed"],
62
- ["CLEAN", "SUCCESS", "allowed"],
63
- ];
64
- for (const [mergeStateStatus, headRollupState, expected] of cases) {
65
- expect(
66
- assessGitHubMerge({ mergeStateStatus, headRollupState }).kind
67
- ).toBe(expected);
68
- }
69
- });
70
-
71
- it("turns a clean visible list plus GitHub refusal into an explicit CI blocker", async () => {
72
- const reader = fakeReader({
73
- facts: { mergeStateStatus: "BLOCKED" },
74
- fastPath: { kind: "checks", checks: [passingCheck()] },
75
- commitRollups: [{ oid: "head", state: "FAILURE" }],
76
- });
77
- const snapshot = await readSnapshot({
78
- reader,
79
- context: context(1),
80
- pendingHistory: "include",
81
- allowDraft: false,
82
- });
83
- expect(snapshot.kind).toBe("open");
84
- if (snapshot.kind !== "open") throw new Error("expected open snapshot");
85
- expect(snapshot.ci.kind).toBe("ci-github-rejected");
86
- expect(classifyPr(snapshot)).toMatchObject({
87
- kind: "blocker",
88
- blocker: { kind: "failing-checks" },
89
- });
90
- });
91
- });
92
-
93
- describe("snapshot query planning", () => {
94
- it("does not query commit rollups while queued checks are pending", async () => {
95
- const reader = fakeReader({
96
- fastPath: { kind: "checks", checks: [pendingCheck()] },
97
- });
98
- const snapshot = await readSnapshot({
99
- reader,
100
- context: context(2),
101
- pendingHistory: "omit",
102
- allowDraft: false,
103
- });
104
- expect(snapshot.kind).toBe("open");
105
- if (snapshot.kind !== "open") throw new Error("expected open snapshot");
106
- expect(snapshot.ci.kind).toBe("ci-pending");
107
- expect(reader.calls).toEqual([
108
- "pullRequest",
109
- "reviewThreadPage:null",
110
- "checksFastPath",
111
- ]);
112
- });
113
-
114
- it("queries rollups for settled and failed lists", async () => {
115
- const settled = fakeReader();
116
- await readSnapshot({
117
- reader: settled,
118
- context: context(3),
119
- pendingHistory: "omit",
120
- allowDraft: false,
121
- });
122
- expect(settled.calls).toContain("commitRollups");
123
-
124
- const failed = fakeReader({
125
- fastPath: { kind: "checks", checks: [failedCheck()] },
126
- });
127
- await readSnapshot({
128
- reader: failed,
129
- context: context(4),
130
- pendingHistory: "omit",
131
- allowDraft: false,
132
- });
133
- expect(failed.calls).toContain("commitRollups");
134
- });
135
-
136
- it("short-circuits merged rows before threads and checks", async () => {
137
- const reader = fakeReader({
138
- facts: { state: "MERGED", mergedAt: "2026-07-26T00:00:00Z" },
139
- });
140
- expect(
141
- (
142
- await readSnapshot({
143
- reader,
144
- context: context(5),
145
- pendingHistory: "include",
146
- allowDraft: false,
147
- })
148
- ).kind
149
- ).toBe("merged");
150
- expect(reader.calls).toEqual(["pullRequest"]);
151
- });
152
- });
153
-
154
- it("scans stacks tier-major so an upstack conflict outranks frontier CI", async () => {
155
- const frontier = await readSnapshot({
156
- reader: fakeReader({
157
- fastPath: { kind: "checks", checks: [failedCheck()] },
158
- commitRollups: [{ oid: "head", state: "FAILURE" }],
159
- }),
160
- context: context(10),
161
- pendingHistory: "omit",
162
- allowDraft: false,
163
- });
164
- const upstack = await readSnapshot({
165
- reader: fakeReader({ facts: { mergeable: "CONFLICTING" } }),
166
- context: context(11),
167
- pendingHistory: "omit",
168
- allowDraft: false,
169
- });
170
- const decision = selectTierMajorStackDecision([frontier, upstack]);
171
- expect(decision).toMatchObject({
172
- kind: "blocker",
173
- blocker: { kind: "merge-conflicts", pr: { number: 11 } },
174
- });
175
- });
176
-
177
- it("attributes a stack wait to the PR whose checks are pending, not the bottom", async () => {
178
- const readyBottom = await readSnapshot({
179
- reader: fakeReader(),
180
- context: context(20),
181
- pendingHistory: "omit",
182
- allowDraft: false,
183
- });
184
- const pendingUpstack = await readSnapshot({
185
- reader: fakeReader({
186
- fastPath: { kind: "checks", checks: [pendingCheck("upstack-build")] },
187
- }),
188
- context: context(21),
189
- pendingHistory: "omit",
190
- allowDraft: false,
191
- });
192
- const decision = selectTierMajorStackDecision([readyBottom, pendingUpstack]);
193
- expect(decision).toMatchObject({
194
- kind: "waiting",
195
- frontier: { number: 21 },
196
- pending: [{ name: "upstack-build" }],
197
- });
198
- });
199
-
200
- it("waits on a draft while checks are pending, then reports the draft gate", async () => {
201
- const pending = await readSnapshot({
202
- reader: fakeReader({
203
- facts: { isDraft: true },
204
- fastPath: { kind: "checks", checks: [pendingCheck()] },
205
- }),
206
- context: context(12),
207
- pendingHistory: "omit",
208
- allowDraft: false,
209
- });
210
- expect(classifyPr(pending).kind).toBe("waiting");
211
-
212
- const settled = await readSnapshot({
213
- reader: fakeReader({ facts: { isDraft: true } }),
214
- context: context(12),
215
- pendingHistory: "omit",
216
- allowDraft: false,
217
- });
218
- expect(classifyPr(settled)).toMatchObject({
219
- kind: "blocker",
220
- blocker: { kind: "merge-gate", reason: "draft-pr" },
221
- });
222
- });
223
-
224
- describe("queued-stack cadence", () => {
225
- async function openSnapshot(pr: PrContext) {
226
- return readSnapshot({
227
- reader: fakeReader(),
228
- context: pr,
229
- pendingHistory: "omit",
230
- allowDraft: false,
231
- });
232
- }
233
-
234
- it("drops a sweep head only after its snapshot succeeds", async () => {
235
- const queue = [
236
- context(20),
237
- context(21),
238
- context(22),
239
- ] satisfies NonEmpty<PrContext>;
240
- let state = createQueueState(queue, 0);
241
- const first = await openSnapshot(queue[0]);
242
- state = applyQueueSnapshot(state, first, 0, options).state;
243
- expect(state.work).toMatchObject({
244
- kind: "whole-stack-sweep",
245
- remaining: [{ number: 21 }, { number: 22 }],
246
- });
247
- const second = await openSnapshot(queue[1]);
248
- state = applyQueueSnapshot(state, second, 60, options).state;
249
- expect(state.work).toMatchObject({
250
- kind: "whole-stack-sweep",
251
- remaining: [{ number: 22 }],
252
- });
253
- });
254
-
255
- it("resumes the sweep at the PR whose read failed", async () => {
256
- const middle = context(21);
257
- const base = fakeReader();
258
- let failNext = true;
259
- const timeline: string[] = [];
260
- const reader = {
261
- ...base,
262
- async pullRequest(pr: PrContext) {
263
- if (pr.number === middle.number && failNext) {
264
- failNext = false;
265
- timeline.push(`fail:${pr.number}`);
266
- throw new WatcherQueryError({
267
- kind: "command-exit",
268
- retryable: true,
269
- detail: "rate limited",
270
- code: 1,
271
- });
272
- }
273
- timeline.push(`read:${pr.number}`);
274
- return base.pullRequest(pr);
275
- },
276
- } satisfies GitHubReader;
277
- let now = 0;
278
- let sleeps = 0;
279
- const running = runQueued({
280
- dependencies: {
281
- reader,
282
- clock: {
283
- now: () => now,
284
- observedAt: () => "2026-07-26T00:00:00.000Z",
285
- async sleep(seconds) {
286
- timeline.push("sleep");
287
- now += seconds;
288
- sleeps += 1;
289
- if (sleeps === 2) throw new Error("stop after resume proof");
290
- },
291
- },
292
- emit(verdict) {
293
- timeline.push(`emit:${verdict.kind}`);
294
- },
295
- },
296
- contexts: [context(20), middle, context(22)],
297
- options,
298
- });
299
- await expect(running).rejects.toThrow("stop after resume proof");
300
- expect(timeline).toEqual([
301
- "emit:QUEUE",
302
- "read:20",
303
- "fail:21",
304
- "emit:RETRY",
305
- "sleep",
306
- "read:21",
307
- "read:22",
308
- "emit:STATUS",
309
- "emit:WAITING",
310
- "sleep",
311
- ]);
312
- });
313
-
314
- it("emits a completed sweep only after its final successful snapshot", async () => {
315
- const queue = [context(30), context(31)] satisfies NonEmpty<PrContext>;
316
- let state = createQueueState(queue, 0);
317
- const first = applyQueueSnapshot(
318
- state,
319
- await openSnapshot(queue[0]),
320
- 0,
321
- options
322
- );
323
- expect(first.completedSweepRows).toBeNull();
324
- state = first.state;
325
- const second = applyQueueSnapshot(
326
- state,
327
- await openSnapshot(queue[1]),
328
- 5,
329
- options
330
- );
331
- expect(
332
- second.completedSweepRows?.map((row) => Number(row.context.number))
333
- ).toEqual([30, 31]);
334
- expect(second.state.nextSweepAt).toBe(305);
335
- });
336
-
337
- it("ADVANCE continues directly to the new frontier without sleeping", async () => {
338
- const one = context(40);
339
- const two = context(41);
340
- const base = fakeReader();
341
- const reads = new Map<number, number>();
342
- const timeline: string[] = [];
343
- const reader = {
344
- ...base,
345
- async pullRequest(pr: PrContext) {
346
- timeline.push(`read:${pr.number}`);
347
- const facts = await base.pullRequest(pr);
348
- const count = (reads.get(pr.number) ?? 0) + 1;
349
- reads.set(pr.number, count);
350
- return pr.number === one.number && count > 1
351
- ? {
352
- ...facts,
353
- state: "MERGED" as const,
354
- mergedAt: "2026-07-26T00:00:00Z",
355
- }
356
- : facts;
357
- },
358
- } satisfies GitHubReader;
359
- let now = 0;
360
- let sleeps = 0;
361
- const emitted: ProgressVerdict[] = [];
362
- const running = runQueued({
363
- dependencies: {
364
- reader,
365
- clock: {
366
- now: () => now,
367
- observedAt: () => "2026-07-26T00:00:00.000Z",
368
- async sleep(seconds) {
369
- timeline.push("sleep");
370
- now += seconds;
371
- sleeps += 1;
372
- if (sleeps === 2) throw new Error("stop after advance proof");
373
- },
374
- },
375
- emit(verdict) {
376
- emitted.push(verdict);
377
- timeline.push(`emit:${verdict.kind}`);
378
- },
379
- },
380
- contexts: [one, two],
381
- options,
382
- });
383
- await expect(running).rejects.toThrow("stop after advance proof");
384
- expect(emitted.some((event) => event.kind === "ADVANCE")).toBe(true);
385
- const firstSleep = timeline.indexOf("sleep");
386
- expect(timeline.slice(firstSleep, firstSleep + 5)).toEqual([
387
- "sleep",
388
- "read:40",
389
- "emit:ADVANCE",
390
- "read:41",
391
- "emit:WAITING",
392
- ]);
393
- });
394
-
395
- it("deduplicates identical waits and schedules the next due sweep", async () => {
396
- const queue = [context(50)] satisfies NonEmpty<PrContext>;
397
- let state = createQueueState(queue, 0);
398
- state = applyQueueSnapshot(
399
- state,
400
- await openSnapshot(queue[0]),
401
- 0,
402
- options
403
- ).state;
404
- const first = evaluateQueue(state, 0, options);
405
- expect(first.kind).toBe("waiting");
406
- if (first.kind !== "waiting") throw new Error("expected waiting");
407
- expect(first.emit).toBe(true);
408
- const second = evaluateQueue(first.state, 10, options);
409
- expect(second.kind).toBe("waiting");
410
- if (second.kind !== "waiting") throw new Error("expected waiting");
411
- expect(second.emit).toBe(false);
412
- expect(planQueue(second.state, 300).work?.kind).toBe("whole-stack-sweep");
413
- });
414
- });
415
-
416
- it("uses the specified retry floor and cap", () => {
417
- expect(queryBackoffSeconds(1, 1)).toBe(60);
418
- expect(queryBackoffSeconds(1, 2)).toBe(120);
419
- expect(queryBackoffSeconds(60, 4)).toBe(300);
420
- });