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
@@ -3,7 +3,7 @@
3
3
  * folder-name union/array, the item-scan predicate, and the prefix-task helpers
4
4
  * used across `src/`.
5
5
  *
6
- * This is Phase 0 of the `folder-taxonomy-reorg-and-rename` prd — the de-risking
6
+ * This is Phase 0 of the `folder-taxonomy-reorg-and-rename` spec — the de-risking
7
7
  * checkpoint. EVERY raw work-path literal (`join(cwd, 'work', ...)`, `'work/<folder>'`,
8
8
  * `'work/<folder>/'.length` prefix-tasks) and EVERY folder-name union/array that
9
9
  * used to be scattered across ~70 files now routes through here. The NAMES are
@@ -14,7 +14,7 @@
14
14
  * {@link WORK_FOLDER_NAME} (and `git mv` the on-disk folders) and NOTHING ELSE.
15
15
  * Call sites reference folders by their SYMBOLIC key (`'tasks-ready'`,
16
16
  * `'specs-ready'`, …), never by a raw string, so a folder-VALUE flip never
17
- * re-touches a single call site (a KEY rename, e.g. the prd→spec cutover below,
17
+ * re-touches a single call site (a KEY rename, e.g. the spec→spec cutover below,
18
18
  * is a mechanical relabel of the key literal at each site — behaviour-preserving).
19
19
  *
20
20
  * Domain note (crown-jewel invariant): a `work/` tree is a set of governance
@@ -61,17 +61,19 @@ export declare const WORK_ROOT: "work";
61
61
  * and `needs-attention` (both are really lock-ref state, NOT durable folders;
62
62
  * routed here only so no reader hand-writes the literal).
63
63
  *
64
- * NOTE on the prd→spec vocabulary cutover
64
+ * NOTE on the spec→spec vocabulary cutover
65
65
  * (`rename-spec-work-layout-and-folders`, migrate-batch 1 of
66
66
  * `prd-to-spec-vocabulary-cutover-and-migration-command`): the spec-regime KEYS
67
67
  * below now read in the `spec` vocabulary (`specs-proposed`/`specs-ready`/
68
68
  * `specs-tasked`/`specs-dropped`) AND their VALUES flip to `work/specs/*` in
69
- * lockstep with the on-disk `git mv work/prds/* → work/specs/*`. Unlike the earlier
69
+ * lockstep with the on-disk `git mv work/specs/* → work/specs/*`. Unlike the earlier
70
70
  * key-only relabel, this batch moves the folders too, so the KEY and VALUE change
71
71
  * together and the self-renaming-folder guard stays green. The KEY rename is a
72
72
  * mechanical relabel of the key literal at each call site (behaviour-preserving);
73
- * the frontmatter `prd:` field (a DATA alias the migration command converts) is the
74
- * one deliberate survivor; the `--specs-land-in` flag/`specsLandIn` config + the
73
+ * the legacy frontmatter ''prd:'' field survives ONLY as un-migrated on-disk DATA the
74
+ * `dorfl prd-to-spec` command textually converts to `spec:` (HARD CUTOVER: it is no
75
+ * longer READ by `parseFrontmatter` — `spec:` is the only read key); the
76
+ * `--specs-land-in` flag/`specsLandIn` config + the
75
77
  * `Spec*` symbols were completed by the later batches + the contract task. The
76
78
  * folder-as-status invariant is unchanged.
77
79
  */
@@ -153,7 +155,7 @@ export declare function isWorkItemFile(name: string): boolean;
153
155
  * order: `in-progress` over `tasks-ready`, with `done` appended only behind the
154
156
  * stranded-continue gate. Order is load-bearing — kept exactly as the original
155
157
  * union/array. (`tasks-backlog` is NOT in this DEFAULT order: it is appended at
156
- * the LOWEST priority ONLY behind the explicit `--allow-backlog` flag, prd
158
+ * the LOWEST priority ONLY behind the explicit `--allow-backlog` flag, spec
157
159
  * `do-allow-backlog-drive-staged-tasks-without-promotion` — see
158
160
  * {@link TaskResolutionFolder}.)
159
161
  */
@@ -169,9 +171,13 @@ export type TaskResolutionFolder = (typeof TASK_RESOLUTION_FOLDERS)[number] | 't
169
171
  /**
170
172
  * The task LIFECYCLE folders a `task:<slug>` / lone-task `issue:` can reside
171
173
  * in (spec-complete.ts + close-job.ts `TASK_FOLDERS`): `tasks-ready`, `in-progress`,
172
- * `needs-attention`, `done`.
174
+ * `done`. `needs-attention` was dropped post-cutover
175
+ * (`finish-needs-attention-folder-cutover-remove-legacy-recovery-readers`, ratified
176
+ * in `docs/adr/needs-attention-folder-cutover-followup-nits.md`): the folder is
177
+ * retired — a stuck item is the per-item lock `state: stuck` with the body resting
178
+ * in `tasks/ready/`, so no task ever resides in `work/needs-attention/`.
173
179
  */
174
- export declare const TASK_LIFECYCLE_FOLDERS: readonly ["tasks-ready", "in-progress", "needs-attention", "done"];
180
+ export declare const TASK_LIFECYCLE_FOLDERS: readonly ["tasks-ready", "in-progress", "done"];
175
181
  /** One of the task lifecycle folders (spec-complete.ts / close-job.ts). */
176
182
  export type TaskLifecycleFolder = (typeof TASK_LIFECYCLE_FOLDERS)[number];
177
183
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"work-layout.d.ts","sourceRoot":"","sources":["../src/work-layout.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAG,MAAe,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;CAgBnB,CAAC;AAEX,0EAA0E;AAC1E,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,gBAAgB,CAAC;AAE1D;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAE5D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,MAAM,CAE1E;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC3B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,MAAM,GACV,MAAM,CAER;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAE3D;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAE9D;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACpC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,aAAa,GACnB,MAAM,GAAG,SAAS,CAGpB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpD;AAID;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,iDAIS,CAAC;AAE9C;;;;;;GAMG;AACH,MAAM,MAAM,oBAAoB,GAC7B,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,GACxC,eAAe,CAAC;AAEnB;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,oEAKU,CAAC;AAE9C,2EAA2E;AAC3E,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,+CAIW,CAAC;AAE9C,uFAAuF;AACvF,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAExE;;;;GAIG;AACH,eAAO,MAAM,YAAY,0CAGoB,CAAC;AAE9C,yEAAyE;AACzE,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"work-layout.d.ts","sourceRoot":"","sources":["../src/work-layout.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAG,MAAe,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;CAgBnB,CAAC;AAEX,0EAA0E;AAC1E,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,gBAAgB,CAAC;AAE1D;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAE5D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,MAAM,CAE1E;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC3B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,MAAM,GACV,MAAM,CAER;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAE3D;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAE9D;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACpC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,aAAa,GACnB,MAAM,GAAG,SAAS,CAGpB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpD;AAID;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,iDAIS,CAAC;AAE9C;;;;;;GAMG;AACH,MAAM,MAAM,oBAAoB,GAC7B,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,GACxC,eAAe,CAAC;AAEnB;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,iDAIU,CAAC;AAE9C,2EAA2E;AAC3E,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,+CAIW,CAAC;AAE9C,uFAAuF;AACvF,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAExE;;;;GAIG;AACH,eAAO,MAAM,YAAY,0CAGoB,CAAC;AAE9C,yEAAyE;AACzE,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC"}
@@ -4,7 +4,7 @@ import { join } from 'node:path';
4
4
  * folder-name union/array, the item-scan predicate, and the prefix-task helpers
5
5
  * used across `src/`.
6
6
  *
7
- * This is Phase 0 of the `folder-taxonomy-reorg-and-rename` prd — the de-risking
7
+ * This is Phase 0 of the `folder-taxonomy-reorg-and-rename` spec — the de-risking
8
8
  * checkpoint. EVERY raw work-path literal (`join(cwd, 'work', ...)`, `'work/<folder>'`,
9
9
  * `'work/<folder>/'.length` prefix-tasks) and EVERY folder-name union/array that
10
10
  * used to be scattered across ~70 files now routes through here. The NAMES are
@@ -15,7 +15,7 @@ import { join } from 'node:path';
15
15
  * {@link WORK_FOLDER_NAME} (and `git mv` the on-disk folders) and NOTHING ELSE.
16
16
  * Call sites reference folders by their SYMBOLIC key (`'tasks-ready'`,
17
17
  * `'specs-ready'`, …), never by a raw string, so a folder-VALUE flip never
18
- * re-touches a single call site (a KEY rename, e.g. the prd→spec cutover below,
18
+ * re-touches a single call site (a KEY rename, e.g. the spec→spec cutover below,
19
19
  * is a mechanical relabel of the key literal at each site — behaviour-preserving).
20
20
  *
21
21
  * Domain note (crown-jewel invariant): a `work/` tree is a set of governance
@@ -62,17 +62,19 @@ export const WORK_ROOT = 'work';
62
62
  * and `needs-attention` (both are really lock-ref state, NOT durable folders;
63
63
  * routed here only so no reader hand-writes the literal).
64
64
  *
65
- * NOTE on the prd→spec vocabulary cutover
65
+ * NOTE on the spec→spec vocabulary cutover
66
66
  * (`rename-spec-work-layout-and-folders`, migrate-batch 1 of
67
67
  * `prd-to-spec-vocabulary-cutover-and-migration-command`): the spec-regime KEYS
68
68
  * below now read in the `spec` vocabulary (`specs-proposed`/`specs-ready`/
69
69
  * `specs-tasked`/`specs-dropped`) AND their VALUES flip to `work/specs/*` in
70
- * lockstep with the on-disk `git mv work/prds/* → work/specs/*`. Unlike the earlier
70
+ * lockstep with the on-disk `git mv work/specs/* → work/specs/*`. Unlike the earlier
71
71
  * key-only relabel, this batch moves the folders too, so the KEY and VALUE change
72
72
  * together and the self-renaming-folder guard stays green. The KEY rename is a
73
73
  * mechanical relabel of the key literal at each call site (behaviour-preserving);
74
- * the frontmatter `prd:` field (a DATA alias the migration command converts) is the
75
- * one deliberate survivor; the `--specs-land-in` flag/`specsLandIn` config + the
74
+ * the legacy frontmatter ''prd:'' field survives ONLY as un-migrated on-disk DATA the
75
+ * `dorfl prd-to-spec` command textually converts to `spec:` (HARD CUTOVER: it is no
76
+ * longer READ by `parseFrontmatter` — `spec:` is the only read key); the
77
+ * `--specs-land-in` flag/`specsLandIn` config + the
76
78
  * `Spec*` symbols were completed by the later batches + the contract task. The
77
79
  * folder-as-status invariant is unchanged.
78
80
  */
@@ -170,7 +172,7 @@ export function isWorkItemFile(name) {
170
172
  * order: `in-progress` over `tasks-ready`, with `done` appended only behind the
171
173
  * stranded-continue gate. Order is load-bearing — kept exactly as the original
172
174
  * union/array. (`tasks-backlog` is NOT in this DEFAULT order: it is appended at
173
- * the LOWEST priority ONLY behind the explicit `--allow-backlog` flag, prd
175
+ * the LOWEST priority ONLY behind the explicit `--allow-backlog` flag, spec
174
176
  * `do-allow-backlog-drive-staged-tasks-without-promotion` — see
175
177
  * {@link TaskResolutionFolder}.)
176
178
  */
@@ -182,12 +184,15 @@ export const TASK_RESOLUTION_FOLDERS = [
182
184
  /**
183
185
  * The task LIFECYCLE folders a `task:<slug>` / lone-task `issue:` can reside
184
186
  * in (spec-complete.ts + close-job.ts `TASK_FOLDERS`): `tasks-ready`, `in-progress`,
185
- * `needs-attention`, `done`.
187
+ * `done`. `needs-attention` was dropped post-cutover
188
+ * (`finish-needs-attention-folder-cutover-remove-legacy-recovery-readers`, ratified
189
+ * in `docs/adr/needs-attention-folder-cutover-followup-nits.md`): the folder is
190
+ * retired — a stuck item is the per-item lock `state: stuck` with the body resting
191
+ * in `tasks/ready/`, so no task ever resides in `work/needs-attention/`.
186
192
  */
187
193
  export const TASK_LIFECYCLE_FOLDERS = [
188
194
  'tasks-ready',
189
195
  'in-progress',
190
- 'needs-attention',
191
196
  'done',
192
197
  ];
193
198
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"work-layout.js","sourceRoot":"","sources":["../src/work-layout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"work-layout.js","sourceRoot":"","sources":["../src/work-layout.ts"],"names":[],"mappings":"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"}
@@ -113,8 +113,8 @@ export interface CreateJobOptions {
113
113
  /** The work slug being processed (→ branch `work/<type>-<slug>` + work-id). */
114
114
  slug: string;
115
115
  /**
116
- * The item TYPE — `'task'` (build) or `'prd'` (tasking) — namespacing the
117
- * work branch via {@link workBranchRef} so a same-slug task and prd never
116
+ * The item TYPE — `'task'` (build) or `'spec'` (tasking) — namespacing the
117
+ * work branch via {@link workBranchRef} so a same-slug task and spec never
118
118
  * collide. Defaults to `'task'`.
119
119
  */
120
120
  type?: SlugNamespace;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dorfl",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/wighawag/dorfl.git",
@@ -39,7 +39,7 @@
39
39
  "vitest": "^4.0.18"
40
40
  },
41
41
  "scripts": {
42
- "build": "tsc && node scripts/vendor-protocol.mjs",
42
+ "build": "tsc && node scripts/vendor-protocol.mjs && node scripts/vendor-skills.mjs",
43
43
  "dev": "as-soon -w src pnpm build",
44
44
  "cli": "tsx src/cli.ts",
45
45
  "test": "vitest run",
@@ -3,7 +3,7 @@ import {dirname, resolve} from 'node:path';
3
3
  import {fileURLToPath} from 'node:url';
4
4
 
5
5
  /**
6
- * The CI-integration deliverable for the `advance` loop (prd `advance-loop`,
6
+ * The CI-integration deliverable for the `advance` loop (spec `advance-loop`,
7
7
  * task `advance-install-ci`, US #27/28): the advance-loop CAPABILITY as a
8
8
  * DOCUMENTED workflow TEMPLATE (not a CLI subcommand; see the task's `##
9
9
  * Decisions`). The template at `docs/ci/advance-loop.yml.template` wires "on cron
@@ -11,8 +11,8 @@ import {fileURLToPath} from 'node:url';
11
11
  * `advance` driver; it is NOT entangled with the tick.
12
12
  *
13
13
  * The unified, per-capability `install-ci` CLI (auth/secrets wizard + GitHub
14
- * adapter) is owned by the separate `runner-in-ci` prd
15
- * (`work/prds/tasked/runner-in-ci.md`); when built it EMITS this template as its
14
+ * adapter) is owned by the separate `runner-in-ci` spec
15
+ * (`work/specs/tasked/runner-in-ci.md`); when built it EMITS this template as its
16
16
  * advance-loop capability. This module's job is unchanged either way: locate +
17
17
  * STRUCTURALLY VALIDATE the template, so its shape is a contract the CLI can
18
18
  * safely emit (see `docs/ci/README.md` "Relationship to the `install-ci` CLI").
@@ -136,7 +136,7 @@ export function validateAdvanceCiTemplate(
136
136
  // The `enumerate` `jq` must UNION taskable prds into the matrix
137
137
  // (`ci-propose-matrix-must-enumerate-sliceable-prds-not-only-slices`): a
138
138
  // task-only `jq` would render `DORFL_AUTO_TASK` dead on the hourly
139
- // cron — a ready ungated PRD would never become a matrix leg. The `jq` must
139
+ // cron — a ready ungated SPEC would never become a matrix leg. The `jq` must
140
140
  // read `scan --json`'s taskable-SPEC pool (`repos[].specs[]` + `cwd.repo.specs[]`)
141
141
  // and emit `spec:<slug>` legs alongside the `task:<slug>` legs.
142
142
  require('propose-enumerates-taskable-specs', /"spec:" \+ \.slug/.test(text) &&
@@ -1,5 +1,5 @@
1
1
  /**
2
- * The pure `advance` TICK classifier (prd `advance-loop`, task
2
+ * The pure `advance` TICK classifier (spec `advance-loop`, task
3
3
  * `advance-tick-classifier`) — the substrate-agnostic, read-only seam BOTH the
4
4
  * one-shot driver and the loop (`run`) driver wrap. Mirrors the existing pure
5
5
  * `categorise.ts` / `eligibility.ts` seams: NO model, NO lock, NO file mutation
@@ -15,7 +15,7 @@
15
15
  *
16
16
  * needsAnswers: true?
17
17
  * ├─ NO → ANALYSE (state-appropriate rung: build a ready task / task a ready
18
- * │ prd / triage an untriaged observation). Analysis MAY advance, OR
18
+ * │ spec / triage an untriaged observation). Analysis MAY advance, OR
19
19
  * │ SURFACE questions.
20
20
  * └─ YES → sidecar exists?
21
21
  * ├─ NO → ANALYSE (first pass: generate questions → write the sidecar)
@@ -39,7 +39,7 @@
39
39
  *
40
40
  * "ANALYSE" is NOT "always advance" — surface-and-pause is itself a rung, so the
41
41
  * ANALYSE branch resolves to the per-TYPE rung the executor will run (the cells
42
- * of the prd's "Per-item-type transitions" table): `build-task` (task),
42
+ * of the spec's "Per-item-type transitions" table): `build-task` (task),
43
43
  * `task-spec` (spec), `triage-observation` (observation) when there are no open
44
44
  * questions; `surface` (first-pass question generation) when `needsAnswers` but
45
45
  * no sidecar yet; `apply` when all entries are answered.
@@ -56,7 +56,7 @@ import {allAnswered} from './sidecar.js';
56
56
  * never a third state store.
57
57
  */
58
58
  export interface TickItem {
59
- /** The item type — the state machine is per-TYPE (task / prd / observation). */
59
+ /** The item type — the state machine is per-TYPE (task / spec / observation). */
60
60
  type: SidecarType;
61
61
  /** Autonomy axis 2 (DISCOVERED): `true` ⇒ open questions block autonomous work. */
62
62
  needsAnswers: boolean | undefined;
@@ -128,7 +128,7 @@ const ANALYSE_RUNG_FOR_TYPE: Record<SidecarType, TickRungKind> = {
128
128
  * Classify ONE tick PURELY from the item's two signals + its type — read-only,
129
129
  * no model, no lock, no file mutation. Returns the classified rung the executor
130
130
  * will later run (or `no-op` / `invariant-violation`). The decision tree is the
131
- * prd's per-item state machine, with invariant 1 asserted at the boundary:
131
+ * spec's per-item state machine, with invariant 1 asserted at the boundary:
132
132
  *
133
133
  * - `needsAnswers` NOT true:
134
134
  * - a sidecar present ⇒ INVARIANT 1 BROKEN (`sidecar-without-needsAnswers`)
@@ -10,6 +10,7 @@ import {
10
10
  TREELESS_RUNGS,
11
11
  } from './advance-treeless-publish.js';
12
12
  import {scanRepoPaths} from './scan.js';
13
+ import {heldTaskSlugs} from './item-lock.js';
13
14
  import {ledgerRead, type LedgerReadStrategy} from './ledger-read.js';
14
15
  import {
15
16
  selectPrioritised,
@@ -23,7 +24,7 @@ import type {Config} from './config.js';
23
24
  import type {ConfigOverrideMap} from './config-override.js';
24
25
 
25
26
  /**
26
- * The **`advance` one-shot DRIVER** (prd `advance-loop`, task
27
+ * The **`advance` one-shot DRIVER** (spec `advance-loop`, task
27
28
  * `advance-drivers-and-gates`, US #2/7/23/25/26) — the SEQUENTIAL driver that
28
29
  * WRAPS the substrate-agnostic advance TICK ({@link performAdvance}) over named
29
30
  * item(s) or the bare eligible-SET form. It is the in-place counterpart of
@@ -49,7 +50,7 @@ import type {ConfigOverrideMap} from './config-override.js';
49
50
  *
50
51
  * **The FLAT per-action gate family (US #23)** falls out of the SELECTION layer,
51
52
  * exactly as it does for `do`: the eligible-pool scan only SURFACES a build item
52
- * when `autoBuild` is on and a task-a-prd item when `autoTask` is on (the gate
53
+ * when `autoBuild` is on and a task-a-spec item when `autoTask` is on (the gate
53
54
  * is a policy on the autonomous-SELECTION step, NOT on the explicit verb a human
54
55
  * typed — an explicitly-NAMED `advance <slug>` builds regardless, mirroring
55
56
  * `do <task>` vs `autoBuild`). SURFACE + APPLY are ALWAYS allowed — they run
@@ -61,7 +62,7 @@ import type {ConfigOverrideMap} from './config-override.js';
61
62
  *
62
63
  * **Isolation + chaining FALL OUT (US #26):** this driver builds NO new isolation
63
64
  * or chaining machinery — it threads the SAME `AdvanceContext` the tick already
64
- * consumes (which orchestrates `do`/`do prd:` through the isolation-strategy seam
65
+ * consumes (which orchestrates `do`/`do spec:` through the isolation-strategy seam
65
66
  * and rebase-before-integrate); a chain conflict routes to needs-attention as
66
67
  * today, inside the orchestrated `do`.
67
68
  */
@@ -83,7 +84,7 @@ type SharedAdvanceContext = AdvanceContext;
83
84
  export interface PerformAdvanceMultiOptions extends SharedAdvanceContext {
84
85
  /**
85
86
  * The resolved repo config — provides `autoBuild` (the build gate for the
86
- * task pool), `autoTask` (the task-a-prd gate for the prd pool), and
87
+ * task pool), `autoTask` (the task-a-spec gate for the spec pool), and
87
88
  * `selectionOrder` (the configurable cross-pool order). The per-action gate
88
89
  * family is APPLIED HERE, at the selection layer (the policy-on-autonomous-
89
90
  * selection point).
@@ -105,7 +106,7 @@ export interface PerformAdvanceMultiOptions extends SharedAdvanceContext {
105
106
  count?: number;
106
107
  /** Override the single-tick runner (tests inject a stub). Defaults to {@link performAdvance}. */
107
108
  run?: AdvanceTickRunner;
108
- /** Override the read seam (prd pool); defaults to the active {@link ledgerRead}. */
109
+ /** Override the read seam (spec pool); defaults to the active {@link ledgerRead}. */
109
110
  read?: LedgerReadStrategy;
110
111
  /**
111
112
  * The LIFECYCLE-POOL create-gates (task `advance-autopick-lifecycle-pools`),
@@ -168,6 +169,15 @@ export async function performAdvanceAuto(
168
169
  const cwd = options.cwd;
169
170
  const count = options.count ?? 1;
170
171
 
172
+ // Held-slug subtraction (task
173
+ // `in-place-scan-subtracts-held-locked-slugs-from-propose-matrix`): read the
174
+ // coordination arbiter's held task-lock refs and pass them into `scanRepoPaths`
175
+ // so a held item (`active`/`stuck`) is not selected into the build pool NOR the
176
+ // lifecycle surface/apply pools — the same subtraction the CI enumerate path
177
+ // runs. `heldTaskSlugs` is the GRACEFUL variant (empty set on any read fault):
178
+ // the follow-on claim CAS is still the load-bearing safety net locally.
179
+ const heldSlugs = await heldTaskSlugs(cwd, options.arbiter);
180
+
171
181
  // Pool 1 — eligible TASKS via the EXISTING scan/select path. `scoreItems`
172
182
  // inside `scanRepoPaths` gates eligibility on `autoBuild` (the build gate), so
173
183
  // with `autoBuild` off NO task is selected — the build rung is never reached
@@ -175,12 +185,12 @@ export async function performAdvanceAuto(
175
185
  const report = scanRepoPaths(
176
186
  [cwd],
177
187
  options.config,
178
- new Set(),
188
+ heldSlugs,
179
189
  options.override,
180
190
  );
181
191
 
182
192
  // Pool 2 — TASKABLE prds filtered by `autoslice-gate`'s predicate (gated on
183
- // `autoTask`). With `autoTask` off NO prd is selected — the task rung is
193
+ // `autoTask`). With `autoTask` off NO spec is selected — the task rung is
184
194
  // never reached by the bare/`-n` selection.
185
195
  const pool = read.resolveSpecPool({repoPath: cwd});
186
196
  const specCandidates: SpecCandidate[] = pool.specs.map((spec) => ({
@@ -206,6 +216,9 @@ export async function performAdvanceAuto(
206
216
  repoPath: cwd,
207
217
  read,
208
218
  gates: options.lifecycleGates,
219
+ // Subtract held task slugs from the triage/surface/apply candidate inputs,
220
+ // symmetric to Pool 1's `scoreItems` subtraction above.
221
+ heldSlugs,
209
222
  });
210
223
 
211
224
  // Order across the (up to) FIVE pools per the resolved `selectionOrder` (apply
@@ -237,8 +250,8 @@ export async function performAdvanceAuto(
237
250
  /**
238
251
  * Run the EXPLICIT multi-arg form (`advance <a> <b> …`): the named items in the
239
252
  * GIVEN order (no pool/priority — the operator chose them). Each arg is run
240
- * through the existing advance tick, which itself resolves bare/`task:`/`prd:`/
241
- * `obs:` (so a named prd drives the task rung, an `obs:` the triage rung, a
253
+ * through the existing advance tick, which itself resolves bare/`task:`/`spec:`/
254
+ * `obs:` (so a named spec drives the task rung, an `obs:` the triage rung, a
242
255
  * collision errors), SEQUENTIALLY. A NAMED item is the always-allowed path — its
243
256
  * surface/apply rung runs regardless of the per-action gates.
244
257
  */
@@ -251,7 +264,7 @@ export async function performAdvanceArgs(
251
264
  repoPath: options.cwd,
252
265
  slug: arg,
253
266
  // The arg is passed VERBATIM to the tick (it does its own slug resolution
254
- // across task/prd/observation); the namespace is irrelevant for explicit args.
267
+ // across task/spec/observation); the namespace is irrelevant for explicit args.
255
268
  namespace: 'task' as const,
256
269
  }));
257
270
  return runSelectedInSequence(selected, options, run, {verbatimArg: true});
@@ -260,7 +273,7 @@ export async function performAdvanceArgs(
260
273
  /**
261
274
  * Run a list of selected items through the existing advance tick, SEQUENTIALLY
262
275
  * (US #25 — `-n` is always sequential), threading the shared context to each. For
263
- * the pool path the arg encodes the namespace (`prd:<slug>` for a selected prd,
276
+ * the pool path the arg encodes the namespace (`spec:<slug>` for a selected spec,
264
277
  * bare slug for a task); for the explicit-arg path the caller's raw arg is passed
265
278
  * verbatim. Each tick is INDEPENDENTLY `advancing`-lock-guarded inside
266
279
  * {@link performAdvance} — sequential here means one item at a time, never a
@@ -321,7 +334,7 @@ async function runSelectedInSequence(
321
334
  * runner — the easy-to-miss site).
322
335
  *
323
336
  * The promote-apply edge mirrors the existing drivers without a special case: an
324
- * `apply` rung whose agentic verdict mints an artifact (`mint-task`/`mint-prd`)
337
+ * `apply` rung whose agentic verdict mints an artifact (`mint-task`/`mint-spec`)
325
338
  * runs `promoteObservation`'s OWN arbiter CAS and commits NOTHING tree-less, so the
326
339
  * ff-push here is a harmless no-op (a `HEAD` with nothing new) — it does NOT
327
340
  * double-publish nor clobber the promote CAS.
@@ -363,7 +376,7 @@ export async function runAdvanceTickWithTreelessPublish(
363
376
  * the tick surfaces/applies);
364
377
  * - `task` → bare `<slug>` (an eligible task's build rung, OR a `needsAnswers`
365
378
  * task the tick surfaces/applies).
366
- * The tick re-classifies each arg, so a `needsAnswers`-blocked task/prd reaches
379
+ * The tick re-classifies each arg, so a `needsAnswers`-blocked task/spec reaches
367
380
  * surface/apply and an untriaged observation reaches triage — the classifier +
368
381
  * rung bodies are unchanged; only this selection->arg mapping is new.
369
382
  */
@@ -21,7 +21,7 @@ import type {Config} from './config.js';
21
21
  import type {AdvanceTickRunner, AdvanceMultiResult} from './advance-drivers.js';
22
22
 
23
23
  /**
24
- * The **ISOLATED advance-tick RUNNER** + its sequential drivers (prd
24
+ * The **ISOLATED advance-tick RUNNER** + its sequential drivers (spec
25
25
  * `advance-loop`, task `advance-isolated-one-shot`, US #25/26) — the "isolated
26
26
  * one-shot" cell `advance` was missing. It gives `advance` the SAME isolation
27
27
  * ergonomic `do --isolated` has: run the advance TICK ({@link performAdvance}) in
@@ -83,7 +83,7 @@ export interface IsolatedAdvanceContext extends Omit<AdvanceContext, 'cwd'> {
83
83
 
84
84
  /** Options for {@link performAdvanceIsolated} — the per-item isolated tick. */
85
85
  export interface PerformAdvanceIsolatedOptions extends IsolatedAdvanceContext {
86
- /** The raw advance arg: bare (= task), `prd:<slug>`, or `obs:<slug>`. */
86
+ /** The raw advance arg: bare (= task), `spec:<slug>`, or `obs:<slug>`. */
87
87
  arg: string;
88
88
  /** The read seam (slug resolution / pool); defaults to {@link ledgerRead}. */
89
89
  read?: LedgerReadStrategy;
@@ -373,7 +373,7 @@ export async function performAdvanceIsolatedAuto(
373
373
  * Run the EXPLICIT multi-arg form (`advance --isolated <a> <b> …`): the NAMED items
374
374
  * in the GIVEN order (no pool/priority — the operator chose them), each through the
375
375
  * ISOLATED advance-tick runner, SEQUENTIALLY. No mirror scan is needed (the args
376
- * are explicit); the per-item tick resolves each bare/`prd:`/`obs:` arg itself.
376
+ * are explicit); the per-item tick resolves each bare/`spec:`/`obs:` arg itself.
377
377
  */
378
378
  export async function performAdvanceIsolatedArgs(
379
379
  args: string[],