dorfl 0.1.1 → 0.2.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 (492) hide show
  1. package/dist/advance-ci-template.d.ts +3 -3
  2. package/dist/advance-ci-template.js +1 -1
  3. package/dist/advance-ci-template.js.map +1 -1
  4. package/dist/advance-classify.d.ts +5 -5
  5. package/dist/advance-classify.d.ts.map +1 -1
  6. package/dist/advance-classify.js +4 -4
  7. package/dist/advance-drivers.d.ts +8 -8
  8. package/dist/advance-drivers.d.ts.map +1 -1
  9. package/dist/advance-drivers.js +20 -8
  10. package/dist/advance-drivers.js.map +1 -1
  11. package/dist/advance-isolated.d.ts +3 -3
  12. package/dist/advance-isolated.d.ts.map +1 -1
  13. package/dist/advance-isolated.js +1 -1
  14. package/dist/advance-lifecycle-template.d.ts +2 -2
  15. package/dist/advance-lifecycle-template.d.ts.map +1 -1
  16. package/dist/advance-lifecycle-template.js +85 -13
  17. package/dist/advance-lifecycle-template.js.map +1 -1
  18. package/dist/advance-loop-driver.d.ts +3 -3
  19. package/dist/advance-loop-driver.d.ts.map +1 -1
  20. package/dist/advance-loop-driver.js +1 -1
  21. package/dist/advance-treeless-publish.d.ts +24 -1
  22. package/dist/advance-treeless-publish.d.ts.map +1 -1
  23. package/dist/advance-treeless-publish.js +41 -0
  24. package/dist/advance-treeless-publish.js.map +1 -1
  25. package/dist/advance.d.ts +69 -17
  26. package/dist/advance.d.ts.map +1 -1
  27. package/dist/advance.js +409 -102
  28. package/dist/advance.js.map +1 -1
  29. package/dist/advancing-lock.d.ts +31 -3
  30. package/dist/advancing-lock.d.ts.map +1 -1
  31. package/dist/advancing-lock.js +55 -5
  32. package/dist/advancing-lock.js.map +1 -1
  33. package/dist/agent-launch.d.ts +12 -0
  34. package/dist/agent-launch.d.ts.map +1 -1
  35. package/dist/agent-launch.js +22 -12
  36. package/dist/agent-launch.js.map +1 -1
  37. package/dist/agent-stop.d.ts +40 -2
  38. package/dist/agent-stop.d.ts.map +1 -1
  39. package/dist/agent-stop.js +30 -2
  40. package/dist/agent-stop.js.map +1 -1
  41. package/dist/apply-decide.d.ts +19 -5
  42. package/dist/apply-decide.d.ts.map +1 -1
  43. package/dist/apply-decide.js +38 -9
  44. package/dist/apply-decide.js.map +1 -1
  45. package/dist/apply-merge-action.d.ts +20 -8
  46. package/dist/apply-merge-action.d.ts.map +1 -1
  47. package/dist/apply-merge-action.js +44 -9
  48. package/dist/apply-merge-action.js.map +1 -1
  49. package/dist/apply-persist.d.ts +62 -31
  50. package/dist/apply-persist.d.ts.map +1 -1
  51. package/dist/apply-persist.js +173 -44
  52. package/dist/apply-persist.js.map +1 -1
  53. package/dist/apply-stuck-action.d.ts +151 -0
  54. package/dist/apply-stuck-action.d.ts.map +1 -0
  55. package/dist/apply-stuck-action.js +125 -0
  56. package/dist/apply-stuck-action.js.map +1 -0
  57. package/dist/brand.d.ts +12 -1
  58. package/dist/brand.d.ts.map +1 -1
  59. package/dist/brand.js +2 -1
  60. package/dist/brand.js.map +1 -1
  61. package/dist/buildable-body.d.ts +14 -14
  62. package/dist/buildable-body.js +9 -9
  63. package/dist/claim-cas.d.ts +3 -3
  64. package/dist/claim-cas.js +1 -1
  65. package/dist/claim-cas.js.map +1 -1
  66. package/dist/cli-spinner.d.ts +1 -1
  67. package/dist/cli-spinner.js +1 -1
  68. package/dist/cli.d.ts +10 -0
  69. package/dist/cli.d.ts.map +1 -1
  70. package/dist/cli.js +385 -128
  71. package/dist/cli.js.map +1 -1
  72. package/dist/close-job-template.d.ts +3 -3
  73. package/dist/close-job-template.js +9 -9
  74. package/dist/close-job.d.ts +8 -8
  75. package/dist/close-job.js +25 -25
  76. package/dist/close-job.js.map +1 -1
  77. package/dist/complete.d.ts +9 -6
  78. package/dist/complete.d.ts.map +1 -1
  79. package/dist/complete.js +99 -45
  80. package/dist/complete.js.map +1 -1
  81. package/dist/concurrency.d.ts +1 -1
  82. package/dist/concurrency.js +1 -1
  83. package/dist/config.d.ts +86 -40
  84. package/dist/config.d.ts.map +1 -1
  85. package/dist/config.js +61 -9
  86. package/dist/config.js.map +1 -1
  87. package/dist/continue-branch.d.ts +1 -1
  88. package/dist/continue-branch.d.ts.map +1 -1
  89. package/dist/continue-branch.js +23 -1
  90. package/dist/continue-branch.js.map +1 -1
  91. package/dist/cwd-section.js +1 -1
  92. package/dist/cwd-section.js.map +1 -1
  93. package/dist/decision-engine.d.ts +39 -11
  94. package/dist/decision-engine.d.ts.map +1 -1
  95. package/dist/decision-engine.js +10 -6
  96. package/dist/decision-engine.js.map +1 -1
  97. package/dist/do-autopick.d.ts +6 -6
  98. package/dist/do-autopick.d.ts.map +1 -1
  99. package/dist/do-autopick.js +16 -6
  100. package/dist/do-autopick.js.map +1 -1
  101. package/dist/do-config.d.ts +4 -4
  102. package/dist/do-config.js +3 -3
  103. package/dist/do-config.js.map +1 -1
  104. package/dist/do-remote-auto.d.ts +2 -2
  105. package/dist/do-remote-auto.js +1 -1
  106. package/dist/do.d.ts +74 -81
  107. package/dist/do.d.ts.map +1 -1
  108. package/dist/do.js +439 -50
  109. package/dist/do.js.map +1 -1
  110. package/dist/drop-source.d.ts +2 -2
  111. package/dist/env-config.d.ts.map +1 -1
  112. package/dist/env-config.js +19 -11
  113. package/dist/env-config.js.map +1 -1
  114. package/dist/failure-cause.d.ts +3 -2
  115. package/dist/failure-cause.d.ts.map +1 -1
  116. package/dist/failure-cause.js +28 -1
  117. package/dist/failure-cause.js.map +1 -1
  118. package/dist/format.d.ts +6 -6
  119. package/dist/format.d.ts.map +1 -1
  120. package/dist/format.js +13 -30
  121. package/dist/format.js.map +1 -1
  122. package/dist/frontmatter.d.ts +28 -15
  123. package/dist/frontmatter.d.ts.map +1 -1
  124. package/dist/frontmatter.js +38 -24
  125. package/dist/frontmatter.js.map +1 -1
  126. package/dist/gc.d.ts +65 -6
  127. package/dist/gc.d.ts.map +1 -1
  128. package/dist/gc.js +126 -9
  129. package/dist/gc.js.map +1 -1
  130. package/dist/github.d.ts +14 -0
  131. package/dist/github.d.ts.map +1 -1
  132. package/dist/github.js +73 -0
  133. package/dist/github.js.map +1 -1
  134. package/dist/harness.d.ts +25 -0
  135. package/dist/harness.d.ts.map +1 -1
  136. package/dist/harness.js.map +1 -1
  137. package/dist/index.d.ts +4 -1
  138. package/dist/index.d.ts.map +1 -1
  139. package/dist/index.js +2 -1
  140. package/dist/index.js.map +1 -1
  141. package/dist/install-ci-branch-protection.d.ts +133 -39
  142. package/dist/install-ci-branch-protection.d.ts.map +1 -1
  143. package/dist/install-ci-branch-protection.js +191 -49
  144. package/dist/install-ci-branch-protection.js.map +1 -1
  145. package/dist/install-ci-capabilities/advance-lifecycle.d.ts +1 -1
  146. package/dist/install-ci-capabilities/advance-lifecycle.js +1 -1
  147. package/dist/install-ci-capabilities/close-job.d.ts +1 -1
  148. package/dist/install-ci-capabilities/close-job.js +1 -1
  149. package/dist/install-ci-capabilities/example-noop.d.ts +1 -1
  150. package/dist/install-ci-capabilities/example-noop.js +1 -1
  151. package/dist/install-ci-capabilities/intake.d.ts +2 -2
  152. package/dist/install-ci-capabilities/intake.js +2 -2
  153. package/dist/install-ci-capabilities/verify.d.ts +1 -1
  154. package/dist/install-ci-capabilities/verify.js +1 -1
  155. package/dist/install-ci-core.d.ts +24 -4
  156. package/dist/install-ci-core.d.ts.map +1 -1
  157. package/dist/install-ci-core.js +12 -5
  158. package/dist/install-ci-core.js.map +1 -1
  159. package/dist/install-ci-github.d.ts +33 -1
  160. package/dist/install-ci-github.d.ts.map +1 -1
  161. package/dist/install-ci-github.js +74 -1
  162. package/dist/install-ci-github.js.map +1 -1
  163. package/dist/install-ci.d.ts +1 -1
  164. package/dist/install-ci.js +4 -4
  165. package/dist/install-ci.js.map +1 -1
  166. package/dist/install-skills.d.ts +123 -0
  167. package/dist/install-skills.d.ts.map +1 -0
  168. package/dist/install-skills.js +100 -0
  169. package/dist/install-skills.js.map +1 -0
  170. package/dist/intake-event.d.ts +6 -6
  171. package/dist/intake-event.js +6 -6
  172. package/dist/intake-marker.d.ts +3 -3
  173. package/dist/intake-marker.d.ts.map +1 -1
  174. package/dist/intake-triage.d.ts +1 -1
  175. package/dist/intake-triage.js +2 -2
  176. package/dist/intake-trigger-template.d.ts +8 -8
  177. package/dist/intake-trigger-template.d.ts.map +1 -1
  178. package/dist/intake-trigger-template.js +17 -17
  179. package/dist/intake-trigger-template.js.map +1 -1
  180. package/dist/intake.d.ts +65 -52
  181. package/dist/intake.d.ts.map +1 -1
  182. package/dist/intake.js +92 -76
  183. package/dist/intake.js.map +1 -1
  184. package/dist/integration-core.d.ts +27 -24
  185. package/dist/integration-core.d.ts.map +1 -1
  186. package/dist/integration-core.js +191 -77
  187. package/dist/integration-core.js.map +1 -1
  188. package/dist/integrator.d.ts +1 -1
  189. package/dist/integrator.d.ts.map +1 -1
  190. package/dist/integrator.js +19 -3
  191. package/dist/integrator.js.map +1 -1
  192. package/dist/isolation.d.ts +4 -4
  193. package/dist/isolation.d.ts.map +1 -1
  194. package/dist/isolation.js +9 -0
  195. package/dist/isolation.js.map +1 -1
  196. package/dist/issue-provider.d.ts +4 -4
  197. package/dist/issue-provider.js +1 -1
  198. package/dist/item-lock.d.ts +216 -149
  199. package/dist/item-lock.d.ts.map +1 -1
  200. package/dist/item-lock.js +345 -270
  201. package/dist/item-lock.js.map +1 -1
  202. package/dist/item-path.d.ts +2 -2
  203. package/dist/item-path.js +2 -2
  204. package/dist/ledger-lint.d.ts +9 -9
  205. package/dist/ledger-lint.js +9 -9
  206. package/dist/ledger-read.d.ts +57 -57
  207. package/dist/ledger-read.d.ts.map +1 -1
  208. package/dist/ledger-read.js +24 -24
  209. package/dist/ledger-read.js.map +1 -1
  210. package/dist/ledger-write.d.ts +33 -28
  211. package/dist/ledger-write.d.ts.map +1 -1
  212. package/dist/ledger-write.js +100 -122
  213. package/dist/ledger-write.js.map +1 -1
  214. package/dist/lifecycle-gather.d.ts +18 -1
  215. package/dist/lifecycle-gather.d.ts.map +1 -1
  216. package/dist/lifecycle-gather.js +23 -17
  217. package/dist/lifecycle-gather.js.map +1 -1
  218. package/dist/lifecycle-pools.d.ts +44 -7
  219. package/dist/lifecycle-pools.d.ts.map +1 -1
  220. package/dist/lifecycle-pools.js +27 -7
  221. package/dist/lifecycle-pools.js.map +1 -1
  222. package/dist/merge-question-surfacer.d.ts +18 -4
  223. package/dist/merge-question-surfacer.d.ts.map +1 -1
  224. package/dist/merge-question-surfacer.js +20 -5
  225. package/dist/merge-question-surfacer.js.map +1 -1
  226. package/dist/migrate-stuck-locks.d.ts +129 -0
  227. package/dist/migrate-stuck-locks.d.ts.map +1 -0
  228. package/dist/migrate-stuck-locks.js +355 -0
  229. package/dist/migrate-stuck-locks.js.map +1 -0
  230. package/dist/mint-adr.js +4 -4
  231. package/dist/mirror-pool-scan.d.ts +2 -2
  232. package/dist/mirror-pool-scan.js +3 -3
  233. package/dist/mirror-pool-scan.js.map +1 -1
  234. package/dist/needs-attention.d.ts +304 -27
  235. package/dist/needs-attention.d.ts.map +1 -1
  236. package/dist/needs-attention.js +542 -67
  237. package/dist/needs-attention.js.map +1 -1
  238. package/dist/orphan-sidecar.d.ts +10 -6
  239. package/dist/orphan-sidecar.d.ts.map +1 -1
  240. package/dist/orphan-sidecar.js +35 -2
  241. package/dist/orphan-sidecar.js.map +1 -1
  242. package/dist/pi-harness.d.ts +16 -0
  243. package/dist/pi-harness.d.ts.map +1 -1
  244. package/dist/pi-harness.js +82 -2
  245. package/dist/pi-harness.js.map +1 -1
  246. package/dist/placement.d.ts +8 -8
  247. package/dist/placement.js +3 -3
  248. package/dist/prd-to-spec.d.ts.map +1 -1
  249. package/dist/prd-to-spec.js +9 -5
  250. package/dist/prd-to-spec.js.map +1 -1
  251. package/dist/prompt.d.ts +16 -19
  252. package/dist/prompt.d.ts.map +1 -1
  253. package/dist/prompt.js +17 -19
  254. package/dist/prompt.js.map +1 -1
  255. package/dist/protocol/CLAIM-PROTOCOL.md +17 -10
  256. package/dist/protocol/REVIEW-PROTOCOL.md +4 -1
  257. package/dist/protocol/SURFACE-PROTOCOL.md +16 -2
  258. package/dist/protocol/TASKING-PROTOCOL.md +3 -1
  259. package/dist/protocol/WORK-CONTRACT.md +22 -18
  260. package/dist/protocol/task-template.md +1 -1
  261. package/dist/readiness.d.ts +1 -1
  262. package/dist/reap-branches.d.ts +12 -9
  263. package/dist/reap-branches.d.ts.map +1 -1
  264. package/dist/reap-branches.js +25 -7
  265. package/dist/reap-branches.js.map +1 -1
  266. package/dist/recover-isolated.d.ts +12 -0
  267. package/dist/recover-isolated.d.ts.map +1 -1
  268. package/dist/recover-isolated.js +6 -1
  269. package/dist/recover-isolated.js.map +1 -1
  270. package/dist/repo-config.d.ts +23 -2
  271. package/dist/repo-config.d.ts.map +1 -1
  272. package/dist/repo-config.js +64 -18
  273. package/dist/repo-config.js.map +1 -1
  274. package/dist/repo-mirror.d.ts.map +1 -1
  275. package/dist/repo-mirror.js +18 -2
  276. package/dist/repo-mirror.js.map +1 -1
  277. package/dist/review-gate.d.ts +3 -3
  278. package/dist/review-gate.d.ts.map +1 -1
  279. package/dist/review-gate.js +11 -10
  280. package/dist/review-gate.js.map +1 -1
  281. package/dist/review-verdict.d.ts +2 -2
  282. package/dist/review-verdict.d.ts.map +1 -1
  283. package/dist/review-verdict.js +2 -2
  284. package/dist/review-verdict.js.map +1 -1
  285. package/dist/run.d.ts +2 -2
  286. package/dist/run.d.ts.map +1 -1
  287. package/dist/run.js +58 -23
  288. package/dist/run.js.map +1 -1
  289. package/dist/scan.d.ts +26 -17
  290. package/dist/scan.d.ts.map +1 -1
  291. package/dist/scan.js +29 -15
  292. package/dist/scan.js.map +1 -1
  293. package/dist/select-order.d.ts +1 -1
  294. package/dist/select-priority.d.ts +14 -14
  295. package/dist/select-priority.d.ts.map +1 -1
  296. package/dist/select-priority.js +5 -5
  297. package/dist/select-priority.js.map +1 -1
  298. package/dist/sidecar-apply.js +1 -1
  299. package/dist/sidecar-apply.js.map +1 -1
  300. package/dist/sidecar.d.ts +47 -12
  301. package/dist/sidecar.d.ts.map +1 -1
  302. package/dist/sidecar.js +84 -4
  303. package/dist/sidecar.js.map +1 -1
  304. package/dist/skills/answer-questions/SKILL.md +89 -0
  305. package/dist/skills/capture-signal/SKILL.md +52 -0
  306. package/dist/skills/convert-from-prd-to-spec/SKILL.md +90 -0
  307. package/dist/skills/drive-tasks/SKILL.md +218 -0
  308. package/dist/skills/from-idea/SKILL.md +83 -0
  309. package/dist/skills/merge-prs/SKILL.md +70 -0
  310. package/dist/skills/orchestrate/SKILL.md +101 -0
  311. package/dist/skills/promote/SKILL.md +35 -0
  312. package/dist/skills/review/SKILL.md +16 -0
  313. package/dist/skills/setup/SKILL.md +258 -0
  314. package/dist/skills/setup/protocol/ADR-FORMAT.md +47 -0
  315. package/dist/skills/setup/protocol/CLAIM-PROTOCOL.md +224 -0
  316. package/dist/skills/setup/protocol/REVIEW-PROTOCOL.md +122 -0
  317. package/dist/skills/setup/protocol/SURFACE-PROTOCOL.md +135 -0
  318. package/dist/skills/setup/protocol/TASKING-PROTOCOL.md +124 -0
  319. package/dist/skills/setup/protocol/WORK-CONTRACT.md +280 -0
  320. package/dist/skills/setup/protocol/spec-template.md +71 -0
  321. package/dist/skills/setup/protocol/task-template.md +65 -0
  322. package/dist/skills/surface-questions/SKILL.md +16 -0
  323. package/dist/skills/to-spec/SKILL.md +34 -0
  324. package/dist/skills/to-task/SKILL.md +19 -0
  325. package/dist/skills/triage-observations/SKILL.md +78 -0
  326. package/dist/skills/work/SKILL.md +51 -0
  327. package/dist/slug-namespace.d.ts +6 -6
  328. package/dist/slug-namespace.js +8 -8
  329. package/dist/slug-namespace.js.map +1 -1
  330. package/dist/spec-complete.d.ts.map +1 -1
  331. package/dist/spec-complete.js +4 -5
  332. package/dist/spec-complete.js.map +1 -1
  333. package/dist/start.d.ts +1 -1
  334. package/dist/start.d.ts.map +1 -1
  335. package/dist/start.js +54 -60
  336. package/dist/start.js.map +1 -1
  337. package/dist/status.d.ts +3 -3
  338. package/dist/status.js +4 -4
  339. package/dist/status.js.map +1 -1
  340. package/dist/surface-gate.d.ts +2 -2
  341. package/dist/surface-gate.d.ts.map +1 -1
  342. package/dist/surface-gate.js +10 -3
  343. package/dist/surface-gate.js.map +1 -1
  344. package/dist/surface-persist.d.ts +2 -2
  345. package/dist/surface-persist.d.ts.map +1 -1
  346. package/dist/surface-persist.js +1 -1
  347. package/dist/surface-persist.js.map +1 -1
  348. package/dist/tasker-review-loop.d.ts +11 -10
  349. package/dist/tasker-review-loop.d.ts.map +1 -1
  350. package/dist/tasker-review-loop.js +8 -8
  351. package/dist/tasker-review-loop.js.map +1 -1
  352. package/dist/tasking-eligibility.d.ts +21 -21
  353. package/dist/tasking-eligibility.d.ts.map +1 -1
  354. package/dist/tasking-eligibility.js +10 -10
  355. package/dist/tasking-lock.d.ts +10 -10
  356. package/dist/tasking-lock.d.ts.map +1 -1
  357. package/dist/tasking-lock.js +69 -49
  358. package/dist/tasking-lock.js.map +1 -1
  359. package/dist/tasking.d.ts +73 -39
  360. package/dist/tasking.d.ts.map +1 -1
  361. package/dist/tasking.js +309 -95
  362. package/dist/tasking.js.map +1 -1
  363. package/dist/triage-gate.d.ts +1 -1
  364. package/dist/triage-persist.d.ts +15 -11
  365. package/dist/triage-persist.d.ts.map +1 -1
  366. package/dist/triage-persist.js +48 -18
  367. package/dist/triage-persist.js.map +1 -1
  368. package/dist/vendor/incur/agents.d.ts +58 -0
  369. package/dist/vendor/incur/agents.d.ts.map +1 -0
  370. package/dist/vendor/incur/agents.js +343 -0
  371. package/dist/vendor/incur/agents.js.map +1 -0
  372. package/dist/verify-workflow-template.d.ts +1 -1
  373. package/dist/verify-workflow-template.js +3 -3
  374. package/dist/watch-session.d.ts +11 -3
  375. package/dist/watch-session.d.ts.map +1 -1
  376. package/dist/watch-session.js +94 -7
  377. package/dist/watch-session.js.map +1 -1
  378. package/dist/work-layout.d.ts +15 -9
  379. package/dist/work-layout.d.ts.map +1 -1
  380. package/dist/work-layout.js +14 -9
  381. package/dist/work-layout.js.map +1 -1
  382. package/dist/workspace.d.ts +2 -2
  383. package/package.json +2 -2
  384. package/src/advance-ci-template.ts +4 -4
  385. package/src/advance-classify.ts +5 -5
  386. package/src/advance-drivers.ts +26 -13
  387. package/src/advance-isolated.ts +3 -3
  388. package/src/advance-lifecycle-template.ts +98 -13
  389. package/src/advance-loop-driver.ts +3 -3
  390. package/src/advance-treeless-publish.ts +46 -1
  391. package/src/advance.ts +495 -115
  392. package/src/advancing-lock.ts +102 -7
  393. package/src/agent-launch.ts +37 -12
  394. package/src/agent-stop.ts +60 -2
  395. package/src/apply-decide.ts +38 -9
  396. package/src/apply-merge-action.ts +49 -11
  397. package/src/apply-persist.ts +236 -62
  398. package/src/apply-stuck-action.ts +260 -0
  399. package/src/brand.ts +14 -2
  400. package/src/buildable-body.ts +14 -14
  401. package/src/claim-cas.ts +4 -4
  402. package/src/cli-spinner.ts +1 -1
  403. package/src/cli.ts +472 -141
  404. package/src/close-job-template.ts +9 -9
  405. package/src/close-job.ts +26 -26
  406. package/src/complete.ts +121 -63
  407. package/src/concurrency.ts +1 -1
  408. package/src/config.ts +143 -49
  409. package/src/continue-branch.ts +23 -1
  410. package/src/cwd-section.ts +1 -1
  411. package/src/decision-engine.ts +57 -19
  412. package/src/do-autopick.ts +21 -10
  413. package/src/do-config.ts +7 -7
  414. package/src/do-remote-auto.ts +2 -2
  415. package/src/do.ts +558 -85
  416. package/src/drop-source.ts +2 -2
  417. package/src/env-config.ts +19 -11
  418. package/src/failure-cause.ts +30 -1
  419. package/src/format.ts +13 -33
  420. package/src/frontmatter.ts +55 -35
  421. package/src/gc.ts +172 -9
  422. package/src/github.ts +78 -0
  423. package/src/harness.ts +25 -0
  424. package/src/index.ts +10 -0
  425. package/src/install-ci-branch-protection.ts +283 -58
  426. package/src/install-ci-capabilities/advance-lifecycle.ts +1 -1
  427. package/src/install-ci-capabilities/close-job.ts +1 -1
  428. package/src/install-ci-capabilities/example-noop.ts +1 -1
  429. package/src/install-ci-capabilities/intake.ts +2 -2
  430. package/src/install-ci-capabilities/verify.ts +1 -1
  431. package/src/install-ci-core.ts +34 -7
  432. package/src/install-ci-github.ts +87 -1
  433. package/src/install-ci.ts +4 -4
  434. package/src/install-skills.ts +166 -0
  435. package/src/intake-event.ts +6 -6
  436. package/src/intake-marker.ts +3 -3
  437. package/src/intake-triage.ts +2 -2
  438. package/src/intake-trigger-template.ts +18 -18
  439. package/src/intake.ts +138 -103
  440. package/src/integration-core.ts +234 -100
  441. package/src/integrator.ts +22 -9
  442. package/src/isolation.ts +13 -4
  443. package/src/issue-provider.ts +4 -4
  444. package/src/item-lock.ts +505 -361
  445. package/src/item-path.ts +2 -2
  446. package/src/ledger-lint.ts +9 -9
  447. package/src/ledger-read.ts +81 -81
  448. package/src/ledger-write.ts +137 -152
  449. package/src/lifecycle-gather.ts +45 -22
  450. package/src/lifecycle-pools.ts +71 -13
  451. package/src/merge-question-surfacer.ts +32 -8
  452. package/src/migrate-stuck-locks.ts +451 -0
  453. package/src/mint-adr.ts +4 -4
  454. package/src/mirror-pool-scan.ts +5 -5
  455. package/src/needs-attention.ts +877 -104
  456. package/src/orphan-sidecar.ts +49 -8
  457. package/src/pi-harness.ts +82 -2
  458. package/src/placement.ts +8 -8
  459. package/src/prd-to-spec.ts +13 -5
  460. package/src/prompt.ts +20 -25
  461. package/src/readiness.ts +1 -1
  462. package/src/reap-branches.ts +38 -14
  463. package/src/recover-isolated.ts +18 -1
  464. package/src/repo-config.ts +66 -17
  465. package/src/repo-mirror.ts +23 -1
  466. package/src/review-gate.ts +12 -11
  467. package/src/review-verdict.ts +3 -3
  468. package/src/run.ts +69 -23
  469. package/src/scan.ts +36 -22
  470. package/src/select-order.ts +1 -1
  471. package/src/select-priority.ts +15 -15
  472. package/src/sidecar-apply.ts +1 -1
  473. package/src/sidecar.ts +141 -14
  474. package/src/slug-namespace.ts +10 -10
  475. package/src/spec-complete.ts +4 -5
  476. package/src/start.ts +57 -63
  477. package/src/status.ts +7 -7
  478. package/src/surface-gate.ts +12 -5
  479. package/src/surface-persist.ts +3 -3
  480. package/src/tasker-review-loop.ts +18 -17
  481. package/src/tasking-eligibility.ts +21 -21
  482. package/src/tasking-lock.ts +75 -60
  483. package/src/tasking.ts +381 -135
  484. package/src/triage-gate.ts +1 -1
  485. package/src/triage-persist.ts +71 -27
  486. package/src/vendor/incur/LICENSE +21 -0
  487. package/src/vendor/incur/README.md +19 -0
  488. package/src/vendor/incur/agents.ts +392 -0
  489. package/src/verify-workflow-template.ts +3 -3
  490. package/src/watch-session.ts +102 -7
  491. package/src/work-layout.ts +14 -9
  492. package/src/workspace.ts +2 -2
@@ -1,25 +1,22 @@
1
1
  import {runAsync, type RunResult} from './git.js';
2
- import {
3
- acquireItemLock,
4
- releaseItemLock,
5
- markStuckItemLock,
6
- } from './item-lock.js';
2
+ import {acquireItemLock, releaseItemLock, readItemLock} from './item-lock.js';
3
+ import {surfaceStuckToNeedsAttention} from './needs-attention.js';
7
4
  import {workItemRel} from './work-layout.js';
8
5
 
9
6
  /**
10
- * The **tasking concurrency lock** (prd `auto-slice`, task `autoslice-lock`).
7
+ * The **tasking concurrency lock** (spec `auto-slice`, task `autoslice-lock`).
11
8
  *
12
- * Serialises *concurrent* taskers (two CI runs, or human + CI) so a prd is never
9
+ * Serialises *concurrent* taskers (two CI runs, or human + CI) so a spec is never
13
10
  * double-tasked. As of the capstone cut-over (task
14
- * `cutover-retire-slicing-advancing-markers-and-trim-folder-sets`, prd
11
+ * `cutover-retire-slicing-advancing-markers-and-trim-folder-sets`, spec
15
12
  * `ledger-status-per-item-lock-refs`; ADR `ledger-status-on-per-item-lock-refs`)
16
- * the legacy `git mv work/prds/ready/<slug>.md → work/tasking/<slug>.md` MARKER on `main`
13
+ * the legacy `git mv work/specs/ready/<slug>.md → work/tasking/<slug>.md` MARKER on `main`
17
14
  * is GONE: the body NEVER relocates until the durable promotion, exactly as claim
18
15
  * no longer moves the task body (task
19
16
  * `cutover-claim-body-stays-and-complete-sources-from-backlog`). The tasking lock
20
17
  * is now ONLY the UNIFIED per-item lock (`refs/dorfl/lock/<entry>`,
21
- * `action: task`, keyed `prd:<slug>`) — the SAME ref claim and advance use for
22
- * the same item, so tasking a prd is mutually exclusive with claiming/advancing
18
+ * `action: task`, keyed `spec:<slug>`) — the SAME ref claim and advance use for
19
+ * the same item, so tasking a spec is mutually exclusive with claiming/advancing
23
20
  * the SAME item BY CONSTRUCTION (the second acquirer loses the SAME create-only
24
21
  * ref CAS, with NO retry budget and NO false contention). There is no transient
25
22
  * status in `main`'s tree anymore, so a work branch cut from `main` inherits no
@@ -29,15 +26,16 @@ import {workItemRel} from './work-layout.js';
29
26
  * A `lost` (the item is already held for implement/task/advance) makes the
30
27
  * tasking acquire lose DEFINITIVELY (exit 2, no retry). On a successful acquire
31
28
  * it returns {@link AcquireTaskingLockResult.lockedBlob}: the git blob sha of the
32
- * prd body the lock TOOK, read from `work/prds/ready/<slug>.md` on the arbiter — the
29
+ * spec body the lock TOOK, read from `work/specs/ready/<slug>.md` on the arbiter — the
33
30
  * snapshot the tasker reads + tasks from, handed back so the integrate
34
- * transition can fail loud if the held prd was edited concurrently (the
31
+ * transition can fail loud if the held spec was edited concurrently (the
35
32
  * read-stability backstop). A dry-run takes no lock (it mutates nothing).
36
33
  *
37
34
  * - **Release** ({@link releaseTaskingLock}) DELETES the unified lock ref. It
38
- * moves NO lifecycle file: the durable `prdprd-tasked` success move is owned
39
- * by the integrate band (`tasking.ts`/`integration-core.ts`), and there is no
40
- * `tasking/ → prd/` abort bounce anymore (the body never left `prd/`). When
35
+ * moves NO lifecycle file: the durable `specs/readyspecs/tasked` success move
36
+ * is owned by the integrate band (`tasking.ts`/`integration-core.ts`), and there
37
+ * is no `tasking/ → specs/ready/` abort bounce anymore (the body never left
38
+ * `specs/ready/`). When
41
39
  * `routeToNeedsAttention` is set (the tasker review/edit loop's
42
40
  * decomposition-unclear verdict, or the task-SET acceptance gate's `block`),
43
41
  * release amends the lock `active → stuck` with the reason on the entry INSTEAD
@@ -51,13 +49,13 @@ import {workItemRel} from './work-layout.js';
51
49
  * The READ-STABILITY backstop (the content-identity stale check that used to live
52
50
  * in the release, comparing the held `work/tasking/<slug>.md` blob against the
53
51
  * acquire-time snapshot) now lives at the integrate seam (`tasking.ts`
54
- * `heldSpecIsStale`, comparing `work/prds/ready/<slug>.md`) — relocated because the
52
+ * `heldSpecIsStale`, comparing `work/specs/ready/<slug>.md`) — relocated because the
55
53
  * completing transition, not the release, owns the commit. See
56
54
  * `work/notes/observations/tasking-lock-does-not-stabilise-prd-content.md`.
57
55
  *
58
- * This module provides the lock PRIMITIVES only. The orchestrating `do prd:<slug>`
56
+ * This module provides the lock PRIMITIVES only. The orchestrating `do spec:<slug>`
59
57
  * tasking command (`tasking.ts`) acquires, drives the agent's tasking, integrates
60
- * the emitted tasks + the durable `prdprd-tasked` move, and releases. The
58
+ * the emitted tasks + the durable `specs/readyspecs/tasked` move, and releases. The
61
59
  * human path (no contention) may task on `main` directly without the lock.
62
60
  */
63
61
 
@@ -74,7 +72,7 @@ export type AcquireTaskingLockOutcome =
74
72
  export type AcquireTaskingLockExitCode = 0 | 1 | 2 | 3;
75
73
 
76
74
  export interface AcquireTaskingLockOptions {
77
- /** The prd slug to lock (`work/prds/ready/<slug>.md`). */
75
+ /** The spec slug to lock (`work/specs/ready/<slug>.md`). */
78
76
  slug: string;
79
77
  /** Working clone/worktree the lock acquire runs in. */
80
78
  cwd: string;
@@ -98,10 +96,10 @@ export interface AcquireTaskingLockResult {
98
96
  /** Human-readable summary of the terminal condition. */
99
97
  message: string;
100
98
  /**
101
- * On a successful acquire (`acquired`), the git BLOB sha of the prd body that
102
- * the lock TOOK (`work/prds/ready/<slug>.md` on the arbiter). This IS the snapshot the
99
+ * On a successful acquire (`acquired`), the git BLOB sha of the spec body that
100
+ * the lock TOOK (`work/specs/ready/<slug>.md` on the arbiter). This IS the snapshot the
103
101
  * tasker reads + tasks from; the integrate transition compares the current
104
- * `work/prds/ready/<slug>.md` blob against it to fail loud on a concurrent edit (the
102
+ * `work/specs/ready/<slug>.md` blob against it to fail loud on a concurrent edit (the
105
103
  * read-stability backstop). `undefined` unless `outcome === 'acquired'` (and on
106
104
  * dry-run, where nothing was published).
107
105
  */
@@ -157,7 +155,7 @@ async function runAcquire(
157
155
  }
158
156
  const by = options.by || (await resolveBy(cwd, env));
159
157
 
160
- // Is the prd still lockable (present in work/prds/ready/ on the arbiter's main)?
158
+ // Is the spec still lockable (present in work/specs/ready/ on the arbiter's main)?
161
159
  await gitHard(['fetch', '--quiet', arbiter], cwd, env);
162
160
  const spec = workItemRel('specs-ready', `${slug}.md`);
163
161
  const specBlob = await gitSoft(
@@ -166,7 +164,7 @@ async function runAcquire(
166
164
  env,
167
165
  );
168
166
  if (specBlob.status !== 0) {
169
- const message = `'${spec}' not found on ${arbiter}/main (no such prd, or it was already moved/tasked).`;
167
+ const message = `'${spec}' not found on ${arbiter}/main (no such spec, or it was already moved/tasked).`;
170
168
  note(message);
171
169
  return {exitCode: 2, outcome: 'lost', message};
172
170
  }
@@ -180,18 +178,17 @@ async function runAcquire(
180
178
  return {exitCode: 0, outcome: 'acquired', message, lockedBlob};
181
179
  }
182
180
 
183
- // Acquire the UNIFIED per-item lock (`action: task`, keyed `prd:<slug>` so it
181
+ // Acquire the UNIFIED per-item lock (`action: task`, keyed `spec:<slug>` so it
184
182
  // shares the ONE ref with claim/advance of the SAME item). A create-only ref
185
183
  // CAS: the winner holds it, the loser is DEFINITIVELY `lost` (exit 2, no retry
186
184
  // budget). No auto-steal of an orphaned lock, consistent with claim/advance and
187
185
  // the ADR's recovery model (no liveness heartbeat / auto-sweep; a human asserts
188
186
  // a lock is dead via `release-lock` + `gc --ledger`).
189
- // MIGRATE step (prd `prd-to-spec-vocabulary-cutover-and-migration-command`):
190
- // EMIT the parent-spec item identity as `spec:<slug>` so the unified per-item
191
- // lock ref is `refs/dorfl/lock/spec-<slug>` (the expand-lock task made
192
- // `spec:<slug>` resolve to a `spec-<slug>` entry). The resolver still ACCEPTS
193
- // `prd:<slug>`, so any lock taken under the old identity stays readable; the
194
- // contract task removes the legacy form.
187
+ // Spec `prd-to-spec-vocabulary-cutover-and-migration-command`: the parent-spec
188
+ // item identity is `spec:<slug>`, so the unified per-item lock ref is
189
+ // `refs/dorfl/lock/spec-<slug>`. HARD CUTOVER: the legacy ''prd:<slug>'' identity
190
+ // is GONE the resolver no longer treats ''prd:'' as the spec namespace (a
191
+ // ''prd:<slug>'' arg is a bare literal task slug now).
195
192
  const lock = await acquireItemLock({
196
193
  item: `spec:${slug}`,
197
194
  action: 'task',
@@ -228,7 +225,7 @@ export type ReleaseTaskingLockOutcome =
228
225
  export type ReleaseTaskingLockExitCode = 0 | 1 | 2 | 3 | 4;
229
226
 
230
227
  export interface ReleaseTaskingLockOptions {
231
- /** The prd slug whose lock to release. */
228
+ /** The spec slug whose lock to release. */
232
229
  slug: string;
233
230
  /** Working clone/worktree the release runs in. */
234
231
  cwd: string;
@@ -249,9 +246,9 @@ export interface ReleaseTaskingLockOptions {
249
246
  /**
250
247
  * The tasker review→edit LOOP's **decomposition-unclear** verdict
251
248
  * (`slicer-review-edit-loop`), or the task-SET acceptance gate's `block`:
252
- * instead of DELETING the lock (returning the prd to the claimable/taskable
249
+ * instead of DELETING the lock (returning the spec to the claimable/taskable
253
250
  * pool), amend it `active → stuck` with this reason recorded on the entry,
254
- * emitting NO guessed tasks. The prd body stays in `work/prds/ready/` (it never moved
251
+ * emitting NO guessed tasks. The spec body stays in `work/specs/ready/` (it never moved
255
252
  * under the lock); the stuck lock IS the tasking needs-attention surface (no
256
253
  * `work/needs-attention/` folder write), so it is NOT re-taskable until a human
257
254
  * resolves it via `release-lock`/`resume`. Omitted ⇒ the normal release DELETES
@@ -274,9 +271,9 @@ export interface ReleaseTaskingLockResult {
274
271
  /**
275
272
  * Release the tasking lock for `slug`: DELETE the unified `action: task` lock ref
276
273
  * (idempotent — an already-absent ref is a clean `released`). It moves NO lifecycle
277
- * file: the durable `prdprd-tasked` success move is owned by the integrate band,
278
- * and the prd body never left `work/prds/ready/` under the lock, so there is no
279
- * `tasking/ → prd/` restore.
274
+ * file: the durable `specs/readyspecs/tasked` success move is owned by the integrate band,
275
+ * and the spec body never left `work/specs/ready/` under the lock, so there is no
276
+ * `tasking/ → specs/ready/` restore.
280
277
  *
281
278
  * When `routeToNeedsAttention` is set (the tasker decomposition-unclear verdict /
282
279
  * the task-SET acceptance gate `block`), the lock is AMENDED `active → stuck`
@@ -326,33 +323,51 @@ async function runRelease(
326
323
  );
327
324
  }
328
325
 
329
- // DECOMPOSITION-UNCLEAR / TASK-GATE BLOCK: amend the lock `active stuck` with
330
- // the reason on the entry (the tasking needs-attention surface), NOT delete it.
331
- // The prd body stays in `work/prds/ready/`; the stuck lock keeps it out of the
332
- // taskable pool until a human resolves it (`release-lock`/`resume`).
326
+ // DECOMPOSITION-UNCLEAR / TASK-GATE BLOCK: surface the spec as a `stuck`-kind
327
+ // sidecar + `needsAnswers:true` on the spec body in ONE commit on
328
+ // `<arbiter>/main`, THEN release the tasking lock (PR-2b, spec
329
+ // `surface-stuck-as-questions-and-retire-stuck-lock-state`, decision #1). The
330
+ // spec body stays in `work/specs/ready/` (or `work/specs/proposed/` — the D1
331
+ // probe finds it); the surfaced question keeps the spec out of the taskable
332
+ // pool via `needsAnswers:true` (eligibility `false`) until a human answers.
333
333
  if (options.routeToNeedsAttention !== undefined) {
334
- // MIGRATE: EMIT `spec:<slug>` (keyed to the `spec-<slug>` lock entry).
335
- const stuck = await markStuckItemLock({
336
- item: `spec:${slug}`,
337
- reason: options.routeToNeedsAttention.reason,
338
- cwd,
339
- arbiter,
340
- env,
341
- });
342
- if (stuck.outcome === 'transitioned' || stuck.outcome === 'wrong-state') {
343
- // `wrong-state` (already stuck) is a tolerated idempotent re-surface.
344
- const message = `Routed the tasking of '${slug}' to needs-attention (per-item lock marked stuck).`;
334
+ const item = `spec:${slug}`;
335
+ // Detect a genuinely NOT-HELD lock BEFORE the surface (so a bounce of an
336
+ // unlocked spec still returns the exit-2 `lost` contract). The surface itself
337
+ // is idempotent, but without this pre-check a not-held spec would surface
338
+ // silently on main with no lock to release — losing the caller-visible
339
+ // "nothing to route" signal.
340
+ const held = await readItemLock({item, cwd, arbiter, env});
341
+ if (held === undefined) {
342
+ const message = `'${slug}' is not locked for tasking — nothing to route to needs-attention.`;
345
343
  note(message);
346
- return {exitCode: 0, outcome: 'released', message};
344
+ return {exitCode: 2, outcome: 'lost', message};
347
345
  }
348
- if (stuck.outcome === 'not-held') {
349
- const message = `'${slug}' is not locked for tasking — nothing to mark stuck.`;
346
+ try {
347
+ const surfaced = await surfaceStuckToNeedsAttention({
348
+ cwd,
349
+ slug,
350
+ item,
351
+ reason: options.routeToNeedsAttention.reason,
352
+ arbiter,
353
+ env,
354
+ note,
355
+ });
356
+ if (surfaced.surfaced || surfaced.bodyAbsent) {
357
+ const message = surfaced.surfaced
358
+ ? `Routed the tasking of '${slug}' to needs-attention (surfaced on ${arbiter}/main; tasking lock released).`
359
+ : `Routed the tasking of '${slug}' to needs-attention (no spec body on ${arbiter}/main — clean no-op surface; tasking lock released).`;
360
+ note(message);
361
+ return {exitCode: 0, outcome: 'released', message};
362
+ }
363
+ const message = `could not surface '${item}' on ${arbiter}/main (${surfaced.reasonNotSurfaced ?? 'unknown'}).`;
350
364
  note(message);
351
- return {exitCode: 2, outcome: 'lost', message};
365
+ return {exitCode: 1, outcome: 'usage-error', message};
366
+ } catch (err) {
367
+ const message = `could not surface '${item}' on ${arbiter}/main (${err instanceof Error ? err.message : String(err)}).`;
368
+ note(message);
369
+ return {exitCode: 1, outcome: 'usage-error', message};
352
370
  }
353
- const message = `could not mark the per-item lock for '${slug}' stuck (${stuck.outcome}: ${stuck.message}).`;
354
- note(message);
355
- return {exitCode: 1, outcome: 'usage-error', message};
356
371
  }
357
372
 
358
373
  // NORMAL release: delete the lock ref (idempotent).