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,5 +1,5 @@
1
1
  /**
2
- * The CI-integration deliverable for the `advance` loop (prd `advance-loop`,
2
+ * The CI-integration deliverable for the `advance` loop (spec `advance-loop`,
3
3
  * task `advance-install-ci`, US #27/28): the advance-loop CAPABILITY as a
4
4
  * DOCUMENTED workflow TEMPLATE (not a CLI subcommand; see the task's `##
5
5
  * Decisions`). The template at `docs/ci/advance-loop.yml.template` wires "on cron
@@ -7,8 +7,8 @@
7
7
  * `advance` driver; it is NOT entangled with the tick.
8
8
  *
9
9
  * The unified, per-capability `install-ci` CLI (auth/secrets wizard + GitHub
10
- * adapter) is owned by the separate `runner-in-ci` prd
11
- * (`work/prds/tasked/runner-in-ci.md`); when built it EMITS this template as its
10
+ * adapter) is owned by the separate `runner-in-ci` spec
11
+ * (`work/specs/tasked/runner-in-ci.md`); when built it EMITS this template as its
12
12
  * advance-loop capability. This module's job is unchanged either way: locate +
13
13
  * STRUCTURALLY VALIDATE the template, so its shape is a contract the CLI can
14
14
  * safely emit (see `docs/ci/README.md` "Relationship to the `install-ci` CLI").
@@ -53,7 +53,7 @@ export function validateAdvanceCiTemplate(text) {
53
53
  // The `enumerate` `jq` must UNION taskable prds into the matrix
54
54
  // (`ci-propose-matrix-must-enumerate-sliceable-prds-not-only-slices`): a
55
55
  // task-only `jq` would render `DORFL_AUTO_TASK` dead on the hourly
56
- // cron — a ready ungated PRD would never become a matrix leg. The `jq` must
56
+ // cron — a ready ungated SPEC would never become a matrix leg. The `jq` must
57
57
  // read `scan --json`'s taskable-SPEC pool (`repos[].specs[]` + `cwd.repo.specs[]`)
58
58
  // and emit `spec:<slug>` legs alongside the `task:<slug>` legs.
59
59
  require('propose-enumerates-taskable-specs', /"spec:" \+ \.slug/.test(text) &&
@@ -1 +1 @@
1
- {"version":3,"file":"advance-ci-template.js","sourceRoot":"","sources":["../src/advance-ci-template.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"advance-ci-template.js","sourceRoot":"","sources":["../src/advance-ci-template.ts"],"names":[],"mappings":"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"}
@@ -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.
@@ -53,7 +53,7 @@ import type { SidecarModel, SidecarType } from './sidecar.js';
53
53
  * never a third state store.
54
54
  */
55
55
  export interface TickItem {
56
- /** The item type — the state machine is per-TYPE (task / prd / observation). */
56
+ /** The item type — the state machine is per-TYPE (task / spec / observation). */
57
57
  type: SidecarType;
58
58
  /** Autonomy axis 2 (DISCOVERED): `true` ⇒ open questions block autonomous work. */
59
59
  needsAnswers: boolean | undefined;
@@ -106,7 +106,7 @@ export interface TickClassification {
106
106
  * Classify ONE tick PURELY from the item's two signals + its type — read-only,
107
107
  * no model, no lock, no file mutation. Returns the classified rung the executor
108
108
  * will later run (or `no-op` / `invariant-violation`). The decision tree is the
109
- * prd's per-item state machine, with invariant 1 asserted at the boundary:
109
+ * spec's per-item state machine, with invariant 1 asserted at the boundary:
110
110
  *
111
111
  * - `needsAnswers` NOT true:
112
112
  * - a sidecar present ⇒ INVARIANT 1 BROKEN (`sidecar-without-needsAnswers`)
@@ -1 +1 @@
1
- {"version":3,"file":"advance-classify.d.ts","sourceRoot":"","sources":["../src/advance-classify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAEH,OAAO,KAAK,EAAC,YAAY,EAAE,WAAW,EAAC,MAAM,cAAc,CAAC;AAG5D;;;;;;GAMG;AACH,MAAM,WAAW,QAAQ;IACxB,gFAAgF;IAChF,IAAI,EAAE,WAAW,CAAC;IAClB,mFAAmF;IACnF,YAAY,EAAE,OAAO,GAAG,SAAS,CAAC;IAClC,kEAAkE;IAClE,OAAO,EAAE,YAAY,GAAG,SAAS,CAAC;CAClC;AAED;;;;;GAKG;AACH,MAAM,MAAM,YAAY;AAEvB,yEAAyE;AACvE,YAAY;AACd,6EAA6E;GAC3E,WAAW;AACb,qFAAqF;GACnF,oBAAoB;AAEtB,0EAA0E;GACxE,SAAS;AACX,yEAAyE;GACvE,OAAO;AAET,6EAA6E;GAC3E,OAAO;AAET,wEAAwE;GACtE,qBAAqB,CAAC;AAEzB;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IAClC,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,WAAW,CAAC;IAClB;;;;;;;;;OASG;IACH,MAAM,CAAC,EACJ,iBAAiB,GACjB,8BAA8B,GAC9B,8BAA8B,CAAC;CAClC;AAWD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,kBAAkB,CAsC/D;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,cAAc,EAAE,kBAAkB,GAAG,OAAO,CAKzE"}
1
+ {"version":3,"file":"advance-classify.d.ts","sourceRoot":"","sources":["../src/advance-classify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAEH,OAAO,KAAK,EAAC,YAAY,EAAE,WAAW,EAAC,MAAM,cAAc,CAAC;AAG5D;;;;;;GAMG;AACH,MAAM,WAAW,QAAQ;IACxB,iFAAiF;IACjF,IAAI,EAAE,WAAW,CAAC;IAClB,mFAAmF;IACnF,YAAY,EAAE,OAAO,GAAG,SAAS,CAAC;IAClC,kEAAkE;IAClE,OAAO,EAAE,YAAY,GAAG,SAAS,CAAC;CAClC;AAED;;;;;GAKG;AACH,MAAM,MAAM,YAAY;AAEvB,yEAAyE;AACvE,YAAY;AACd,6EAA6E;GAC3E,WAAW;AACb,qFAAqF;GACnF,oBAAoB;AAEtB,0EAA0E;GACxE,SAAS;AACX,yEAAyE;GACvE,OAAO;AAET,6EAA6E;GAC3E,OAAO;AAET,wEAAwE;GACtE,qBAAqB,CAAC;AAEzB;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IAClC,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,WAAW,CAAC;IAClB;;;;;;;;;OASG;IACH,MAAM,CAAC,EACJ,iBAAiB,GACjB,8BAA8B,GAC9B,8BAA8B,CAAC;CAClC;AAWD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,kBAAkB,CAsC/D;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,cAAc,EAAE,kBAAkB,GAAG,OAAO,CAKzE"}
@@ -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.
@@ -57,7 +57,7 @@ const ANALYSE_RUNG_FOR_TYPE = {
57
57
  * Classify ONE tick PURELY from the item's two signals + its type — read-only,
58
58
  * no model, no lock, no file mutation. Returns the classified rung the executor
59
59
  * will later run (or `no-op` / `invariant-violation`). The decision tree is the
60
- * prd's per-item state machine, with invariant 1 asserted at the boundary:
60
+ * spec's per-item state machine, with invariant 1 asserted at the boundary:
61
61
  *
62
62
  * - `needsAnswers` NOT true:
63
63
  * - a sidecar present ⇒ INVARIANT 1 BROKEN (`sidecar-without-needsAnswers`)
@@ -4,7 +4,7 @@ import type { LifecyclePoolGates } from './lifecycle-pools.js';
4
4
  import type { Config } from './config.js';
5
5
  import type { ConfigOverrideMap } from './config-override.js';
6
6
  /**
7
- * The **`advance` one-shot DRIVER** (prd `advance-loop`, task
7
+ * The **`advance` one-shot DRIVER** (spec `advance-loop`, task
8
8
  * `advance-drivers-and-gates`, US #2/7/23/25/26) — the SEQUENTIAL driver that
9
9
  * WRAPS the substrate-agnostic advance TICK ({@link performAdvance}) over named
10
10
  * item(s) or the bare eligible-SET form. It is the in-place counterpart of
@@ -30,7 +30,7 @@ import type { ConfigOverrideMap } from './config-override.js';
30
30
  *
31
31
  * **The FLAT per-action gate family (US #23)** falls out of the SELECTION layer,
32
32
  * exactly as it does for `do`: the eligible-pool scan only SURFACES a build item
33
- * when `autoBuild` is on and a task-a-prd item when `autoTask` is on (the gate
33
+ * when `autoBuild` is on and a task-a-spec item when `autoTask` is on (the gate
34
34
  * is a policy on the autonomous-SELECTION step, NOT on the explicit verb a human
35
35
  * typed — an explicitly-NAMED `advance <slug>` builds regardless, mirroring
36
36
  * `do <task>` vs `autoBuild`). SURFACE + APPLY are ALWAYS allowed — they run
@@ -42,7 +42,7 @@ import type { ConfigOverrideMap } from './config-override.js';
42
42
  *
43
43
  * **Isolation + chaining FALL OUT (US #26):** this driver builds NO new isolation
44
44
  * or chaining machinery — it threads the SAME `AdvanceContext` the tick already
45
- * consumes (which orchestrates `do`/`do prd:` through the isolation-strategy seam
45
+ * consumes (which orchestrates `do`/`do spec:` through the isolation-strategy seam
46
46
  * and rebase-before-integrate); a chain conflict routes to needs-attention as
47
47
  * today, inside the orchestrated `do`.
48
48
  */
@@ -58,7 +58,7 @@ type SharedAdvanceContext = AdvanceContext;
58
58
  export interface PerformAdvanceMultiOptions extends SharedAdvanceContext {
59
59
  /**
60
60
  * The resolved repo config — provides `autoBuild` (the build gate for the
61
- * task pool), `autoTask` (the task-a-prd gate for the prd pool), and
61
+ * task pool), `autoTask` (the task-a-spec gate for the spec pool), and
62
62
  * `selectionOrder` (the configurable cross-pool order). The per-action gate
63
63
  * family is APPLIED HERE, at the selection layer (the policy-on-autonomous-
64
64
  * selection point).
@@ -80,7 +80,7 @@ export interface PerformAdvanceMultiOptions extends SharedAdvanceContext {
80
80
  count?: number;
81
81
  /** Override the single-tick runner (tests inject a stub). Defaults to {@link performAdvance}. */
82
82
  run?: AdvanceTickRunner;
83
- /** Override the read seam (prd pool); defaults to the active {@link ledgerRead}. */
83
+ /** Override the read seam (spec pool); defaults to the active {@link ledgerRead}. */
84
84
  read?: LedgerReadStrategy;
85
85
  /**
86
86
  * The LIFECYCLE-POOL create-gates (task `advance-autopick-lifecycle-pools`),
@@ -128,8 +128,8 @@ export declare function performAdvanceAuto(options: PerformAdvanceMultiOptions):
128
128
  /**
129
129
  * Run the EXPLICIT multi-arg form (`advance <a> <b> …`): the named items in the
130
130
  * GIVEN order (no pool/priority — the operator chose them). Each arg is run
131
- * through the existing advance tick, which itself resolves bare/`task:`/`prd:`/
132
- * `obs:` (so a named prd drives the task rung, an `obs:` the triage rung, a
131
+ * through the existing advance tick, which itself resolves bare/`task:`/`spec:`/
132
+ * `obs:` (so a named spec drives the task rung, an `obs:` the triage rung, a
133
133
  * collision errors), SEQUENTIALLY. A NAMED item is the always-allowed path — its
134
134
  * surface/apply rung runs regardless of the per-action gates.
135
135
  */
@@ -163,7 +163,7 @@ export declare function performAdvanceArgs(args: string[], options: PerformAdvan
163
163
  * runner — the easy-to-miss site).
164
164
  *
165
165
  * The promote-apply edge mirrors the existing drivers without a special case: an
166
- * `apply` rung whose agentic verdict mints an artifact (`mint-task`/`mint-prd`)
166
+ * `apply` rung whose agentic verdict mints an artifact (`mint-task`/`mint-spec`)
167
167
  * runs `promoteObservation`'s OWN arbiter CAS and commits NOTHING tree-less, so the
168
168
  * ff-push here is a harmless no-op (a `HEAD` with nothing new) — it does NOT
169
169
  * double-publish nor clobber the promote CAS.
@@ -1 +1 @@
1
- {"version":3,"file":"advance-drivers.d.ts","sourceRoot":"","sources":["../src/advance-drivers.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,MAAM,cAAc,CAAC;AAMtB,OAAO,EAAa,KAAK,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AAQrE,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,sBAAsB,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,6EAA6E;AAC7E,MAAM,MAAM,iBAAiB,GAAG,CAC/B,OAAO,EAAE,kBAAkB,KACvB,OAAO,CAAC,aAAa,CAAC,CAAC;AAE5B,yEAAyE;AACzE,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACzD,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,kBAAkB,CAAC;CAC1B;AAED,sEAAsE;AACtE,KAAK,oBAAoB,GAAG,cAAc,CAAC;AAE3C,MAAM,WAAW,0BAA2B,SAAQ,oBAAoB;IACvE;;;;;;OAMG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iGAAiG;IACjG,GAAG,CAAC,EAAE,iBAAiB,CAAC;IACxB,oFAAoF;IACpF,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,kBAAkB,CAAC;CACpC;AAED,iEAAiE;AACjE,MAAM,WAAW,kBAAkB;IAClC,kEAAkE;IAClE,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB;;;;;OAKG;IACH,QAAQ,EAAE,eAAe,CAAC;IAC1B,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;CAChB;AAUD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,kBAAkB,CACvC,OAAO,EAAE,0BAA0B,GACjC,OAAO,CAAC,kBAAkB,CAAC,CAuE7B;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACvC,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,0BAA0B,GACjC,OAAO,CAAC,kBAAkB,CAAC,CAU7B;AAqCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAsB,iCAAiC,CACtD,OAAO,EAAE,kBAAkB,EAC3B,GAAG,EAAE,iBAAiB,GACpB,OAAO,CAAC,aAAa,CAAC,CAqBxB;AA+CD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAIhE;AAED,YAAY,EAAC,cAAc,EAAC,CAAC"}
1
+ {"version":3,"file":"advance-drivers.d.ts","sourceRoot":"","sources":["../src/advance-drivers.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,MAAM,cAAc,CAAC;AAOtB,OAAO,EAAa,KAAK,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AAQrE,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,sBAAsB,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,6EAA6E;AAC7E,MAAM,MAAM,iBAAiB,GAAG,CAC/B,OAAO,EAAE,kBAAkB,KACvB,OAAO,CAAC,aAAa,CAAC,CAAC;AAE5B,yEAAyE;AACzE,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACzD,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,kBAAkB,CAAC;CAC1B;AAED,sEAAsE;AACtE,KAAK,oBAAoB,GAAG,cAAc,CAAC;AAE3C,MAAM,WAAW,0BAA2B,SAAQ,oBAAoB;IACvE;;;;;;OAMG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iGAAiG;IACjG,GAAG,CAAC,EAAE,iBAAiB,CAAC;IACxB,qFAAqF;IACrF,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,kBAAkB,CAAC;CACpC;AAED,iEAAiE;AACjE,MAAM,WAAW,kBAAkB;IAClC,kEAAkE;IAClE,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB;;;;;OAKG;IACH,QAAQ,EAAE,eAAe,CAAC;IAC1B,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;CAChB;AAUD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,kBAAkB,CACvC,OAAO,EAAE,0BAA0B,GACjC,OAAO,CAAC,kBAAkB,CAAC,CAmF7B;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACvC,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,0BAA0B,GACjC,OAAO,CAAC,kBAAkB,CAAC,CAU7B;AAqCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAsB,iCAAiC,CACtD,OAAO,EAAE,kBAAkB,EAC3B,GAAG,EAAE,iBAAiB,GACpB,OAAO,CAAC,aAAa,CAAC,CAqBxB;AA+CD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAIhE;AAED,YAAY,EAAC,cAAc,EAAC,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { performAdvance, } from './advance.js';
2
2
  import { pushTreelessResult, TREELESS_RUNGS, } from './advance-treeless-publish.js';
3
3
  import { scanRepoPaths } from './scan.js';
4
+ import { heldTaskSlugs } from './item-lock.js';
4
5
  import { ledgerRead } from './ledger-read.js';
5
6
  import { selectPrioritised, taskableSpecs, } from './select-priority.js';
6
7
  import { gatherLifecycleInPlace } from './lifecycle-gather.js';
@@ -32,13 +33,21 @@ export async function performAdvanceAuto(options) {
32
33
  const note = options.note ?? (() => { });
33
34
  const cwd = options.cwd;
34
35
  const count = options.count ?? 1;
36
+ // Held-slug subtraction (task
37
+ // `in-place-scan-subtracts-held-locked-slugs-from-propose-matrix`): read the
38
+ // coordination arbiter's held task-lock refs and pass them into `scanRepoPaths`
39
+ // so a held item (`active`/`stuck`) is not selected into the build pool NOR the
40
+ // lifecycle surface/apply pools — the same subtraction the CI enumerate path
41
+ // runs. `heldTaskSlugs` is the GRACEFUL variant (empty set on any read fault):
42
+ // the follow-on claim CAS is still the load-bearing safety net locally.
43
+ const heldSlugs = await heldTaskSlugs(cwd, options.arbiter);
35
44
  // Pool 1 — eligible TASKS via the EXISTING scan/select path. `scoreItems`
36
45
  // inside `scanRepoPaths` gates eligibility on `autoBuild` (the build gate), so
37
46
  // with `autoBuild` off NO task is selected — the build rung is never reached
38
47
  // by the bare/`-n` selection.
39
- const report = scanRepoPaths([cwd], options.config, new Set(), options.override);
48
+ const report = scanRepoPaths([cwd], options.config, heldSlugs, options.override);
40
49
  // Pool 2 — TASKABLE prds filtered by `autoslice-gate`'s predicate (gated on
41
- // `autoTask`). With `autoTask` off NO prd is selected — the task rung is
50
+ // `autoTask`). With `autoTask` off NO spec is selected — the task rung is
42
51
  // never reached by the bare/`-n` selection.
43
52
  const pool = read.resolveSpecPool({ repoPath: cwd });
44
53
  const specCandidates = pool.specs.map((spec) => ({
@@ -63,6 +72,9 @@ export async function performAdvanceAuto(options) {
63
72
  repoPath: cwd,
64
73
  read,
65
74
  gates: options.lifecycleGates,
75
+ // Subtract held task slugs from the triage/surface/apply candidate inputs,
76
+ // symmetric to Pool 1's `scoreItems` subtraction above.
77
+ heldSlugs,
66
78
  });
67
79
  // Order across the (up to) FIVE pools per the resolved `selectionOrder` (apply
68
80
  // pinned first) + bound by count — the SAME shared, pure `selectPrioritised` the
@@ -89,8 +101,8 @@ export async function performAdvanceAuto(options) {
89
101
  /**
90
102
  * Run the EXPLICIT multi-arg form (`advance <a> <b> …`): the named items in the
91
103
  * GIVEN order (no pool/priority — the operator chose them). Each arg is run
92
- * through the existing advance tick, which itself resolves bare/`task:`/`prd:`/
93
- * `obs:` (so a named prd drives the task rung, an `obs:` the triage rung, a
104
+ * through the existing advance tick, which itself resolves bare/`task:`/`spec:`/
105
+ * `obs:` (so a named spec drives the task rung, an `obs:` the triage rung, a
94
106
  * collision errors), SEQUENTIALLY. A NAMED item is the always-allowed path — its
95
107
  * surface/apply rung runs regardless of the per-action gates.
96
108
  */
@@ -100,7 +112,7 @@ export async function performAdvanceArgs(args, options) {
100
112
  repoPath: options.cwd,
101
113
  slug: arg,
102
114
  // The arg is passed VERBATIM to the tick (it does its own slug resolution
103
- // across task/prd/observation); the namespace is irrelevant for explicit args.
115
+ // across task/spec/observation); the namespace is irrelevant for explicit args.
104
116
  namespace: 'task',
105
117
  }));
106
118
  return runSelectedInSequence(selected, options, run, { verbatimArg: true });
@@ -108,7 +120,7 @@ export async function performAdvanceArgs(args, options) {
108
120
  /**
109
121
  * Run a list of selected items through the existing advance tick, SEQUENTIALLY
110
122
  * (US #25 — `-n` is always sequential), threading the shared context to each. For
111
- * the pool path the arg encodes the namespace (`prd:<slug>` for a selected prd,
123
+ * the pool path the arg encodes the namespace (`spec:<slug>` for a selected spec,
112
124
  * bare slug for a task); for the explicit-arg path the caller's raw arg is passed
113
125
  * verbatim. Each tick is INDEPENDENTLY `advancing`-lock-guarded inside
114
126
  * {@link performAdvance} — sequential here means one item at a time, never a
@@ -158,7 +170,7 @@ async function runSelectedInSequence(selected, options, run, mode = {}) {
158
170
  * runner — the easy-to-miss site).
159
171
  *
160
172
  * The promote-apply edge mirrors the existing drivers without a special case: an
161
- * `apply` rung whose agentic verdict mints an artifact (`mint-task`/`mint-prd`)
173
+ * `apply` rung whose agentic verdict mints an artifact (`mint-task`/`mint-spec`)
162
174
  * runs `promoteObservation`'s OWN arbiter CAS and commits NOTHING tree-less, so the
163
175
  * ff-push here is a harmless no-op (a `HEAD` with nothing new) — it does NOT
164
176
  * double-publish nor clobber the promote CAS.
@@ -194,7 +206,7 @@ export async function runAdvanceTickWithTreelessPublish(options, run) {
194
206
  * the tick surfaces/applies);
195
207
  * - `task` → bare `<slug>` (an eligible task's build rung, OR a `needsAnswers`
196
208
  * task the tick surfaces/applies).
197
- * The tick re-classifies each arg, so a `needsAnswers`-blocked task/prd reaches
209
+ * The tick re-classifies each arg, so a `needsAnswers`-blocked task/spec reaches
198
210
  * surface/apply and an untriaged observation reaches triage — the classifier +
199
211
  * rung bodies are unchanged; only this selection->arg mapping is new.
200
212
  */
@@ -1 +1 @@
1
- {"version":3,"file":"advance-drivers.js","sourceRoot":"","sources":["../src/advance-drivers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"advance-drivers.js","sourceRoot":"","sources":["../src/advance-drivers.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import type { LifecyclePoolGates } from './lifecycle-pools.js';
4
4
  import type { Config } from './config.js';
5
5
  import type { AdvanceTickRunner, AdvanceMultiResult } from './advance-drivers.js';
6
6
  /**
7
- * The **ISOLATED advance-tick RUNNER** + its sequential drivers (prd
7
+ * The **ISOLATED advance-tick RUNNER** + its sequential drivers (spec
8
8
  * `advance-loop`, task `advance-isolated-one-shot`, US #25/26) — the "isolated
9
9
  * one-shot" cell `advance` was missing. It gives `advance` the SAME isolation
10
10
  * ergonomic `do --isolated` has: run the advance TICK ({@link performAdvance}) in
@@ -64,7 +64,7 @@ export interface IsolatedAdvanceContext extends Omit<AdvanceContext, 'cwd'> {
64
64
  }
65
65
  /** Options for {@link performAdvanceIsolated} — the per-item isolated tick. */
66
66
  export interface PerformAdvanceIsolatedOptions extends IsolatedAdvanceContext {
67
- /** The raw advance arg: bare (= task), `prd:<slug>`, or `obs:<slug>`. */
67
+ /** The raw advance arg: bare (= task), `spec:<slug>`, or `obs:<slug>`. */
68
68
  arg: string;
69
69
  /** The read seam (slug resolution / pool); defaults to {@link ledgerRead}. */
70
70
  read?: LedgerReadStrategy;
@@ -149,7 +149,7 @@ export declare function performAdvanceIsolatedAuto(options: PerformAdvanceIsolat
149
149
  * Run the EXPLICIT multi-arg form (`advance --isolated <a> <b> …`): the NAMED items
150
150
  * in the GIVEN order (no pool/priority — the operator chose them), each through the
151
151
  * ISOLATED advance-tick runner, SEQUENTIALLY. No mirror scan is needed (the args
152
- * are explicit); the per-item tick resolves each bare/`prd:`/`obs:` arg itself.
152
+ * are explicit); the per-item tick resolves each bare/`spec:`/`obs:` arg itself.
153
153
  */
154
154
  export declare function performAdvanceIsolatedArgs(args: string[], options: PerformAdvanceIsolatedMultiOptions): Promise<AdvanceMultiResult>;
155
155
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"advance-isolated.d.ts","sourceRoot":"","sources":["../src/advance-isolated.ts"],"names":[],"mappings":"AASA,OAAO,EAEN,KAAK,cAAc,EACnB,KAAK,aAAa,EAElB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAa,KAAK,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AAErE,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAAC,iBAAiB,EAAE,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AAEhF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,qFAAqF;AACrF,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC;IAC1E;;;;;OAKG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,aAAa,EAAE,MAAM,CAAC;CACtB;AAED,+EAA+E;AAC/E,MAAM,WAAW,6BAA8B,SAAQ,sBAAsB;IAC5E,yEAAyE;IACzE,GAAG,EAAE,MAAM,CAAC;IACZ,8EAA8E;IAC9E,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,iDAAiD;IACjD,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB;;;OAGG;IACH,GAAG,CAAC,EAAE,iBAAiB,CAAC;CACxB;AAID;;;;;;;;;;GAUG;AACH,wBAAsB,sBAAsB,CAC3C,OAAO,EAAE,6BAA6B,GACpC,OAAO,CAAC,aAAa,CAAC,CAuGxB;AA0BD,+EAA+E;AAC/E,KAAK,qBAAqB,GAAG,sBAAsB,CAAC;AAEpD,MAAM,WAAW,kCAAmC,SAAQ,qBAAqB;IAChF;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,iDAAiD;IACjD,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,sGAAsG;IACtG,WAAW,CAAC,EAAE,CACb,OAAO,EAAE,6BAA6B,KAClC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5B,wFAAwF;IACxF,GAAG,CAAC,EAAE,iBAAiB,CAAC;IACxB,8EAA8E;IAC9E,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC;;;;OAIG;IACH,cAAc,CAAC,EAAE,kBAAkB,CAAC;CACpC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,0BAA0B,CAC/C,OAAO,EAAE,kCAAkC,GACzC,OAAO,CAAC,kBAAkB,CAAC,CAiE7B;AAED;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAC/C,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,kCAAkC,GACzC,OAAO,CAAC,kBAAkB,CAAC,CAQ7B"}
1
+ {"version":3,"file":"advance-isolated.d.ts","sourceRoot":"","sources":["../src/advance-isolated.ts"],"names":[],"mappings":"AASA,OAAO,EAEN,KAAK,cAAc,EACnB,KAAK,aAAa,EAElB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAa,KAAK,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AAErE,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAAC,iBAAiB,EAAE,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AAEhF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,qFAAqF;AACrF,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC;IAC1E;;;;;OAKG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,aAAa,EAAE,MAAM,CAAC;CACtB;AAED,+EAA+E;AAC/E,MAAM,WAAW,6BAA8B,SAAQ,sBAAsB;IAC5E,0EAA0E;IAC1E,GAAG,EAAE,MAAM,CAAC;IACZ,8EAA8E;IAC9E,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,iDAAiD;IACjD,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB;;;OAGG;IACH,GAAG,CAAC,EAAE,iBAAiB,CAAC;CACxB;AAID;;;;;;;;;;GAUG;AACH,wBAAsB,sBAAsB,CAC3C,OAAO,EAAE,6BAA6B,GACpC,OAAO,CAAC,aAAa,CAAC,CAuGxB;AA0BD,+EAA+E;AAC/E,KAAK,qBAAqB,GAAG,sBAAsB,CAAC;AAEpD,MAAM,WAAW,kCAAmC,SAAQ,qBAAqB;IAChF;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,iDAAiD;IACjD,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,sGAAsG;IACtG,WAAW,CAAC,EAAE,CACb,OAAO,EAAE,6BAA6B,KAClC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5B,wFAAwF;IACxF,GAAG,CAAC,EAAE,iBAAiB,CAAC;IACxB,8EAA8E;IAC9E,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC;;;;OAIG;IACH,cAAc,CAAC,EAAE,kBAAkB,CAAC;CACpC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,0BAA0B,CAC/C,OAAO,EAAE,kCAAkC,GACzC,OAAO,CAAC,kBAAkB,CAAC,CAiE7B;AAED;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAC/C,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,kCAAkC,GACzC,OAAO,CAAC,kBAAkB,CAAC,CAQ7B"}
@@ -216,7 +216,7 @@ export async function performAdvanceIsolatedAuto(options) {
216
216
  * Run the EXPLICIT multi-arg form (`advance --isolated <a> <b> …`): the NAMED items
217
217
  * in the GIVEN order (no pool/priority — the operator chose them), each through the
218
218
  * ISOLATED advance-tick runner, SEQUENTIALLY. No mirror scan is needed (the args
219
- * are explicit); the per-item tick resolves each bare/`prd:`/`obs:` arg itself.
219
+ * are explicit); the per-item tick resolves each bare/`spec:`/`obs:` arg itself.
220
220
  */
221
221
  export async function performAdvanceIsolatedArgs(args, options) {
222
222
  const runIsolated = options.runIsolated ?? performAdvanceIsolated;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * The `install-ci` ADVANCE-LIFECYCLE capability (prd `runner-in-ci`, task
2
+ * The `install-ci` ADVANCE-LIFECYCLE capability (spec `runner-in-ci`, task
3
3
  * `install-ci-advance-lifecycle-workflow`; capability C: auto-triage observations
4
4
  * + surface declared blockers + apply committed answers). This module GENERATES
5
5
  * the advance-lifecycle workflow by ABSORBING and PARAMETERISING the existing seed
@@ -43,7 +43,7 @@
43
43
  * each leg carries `--propose` so it can NEVER merge to `main`); `merge` ⇒ ALSO
44
44
  * a MATRIX (one leg per item; build/gate/review fan out, the LAND tail is
45
45
  * serialised by the engine's `mergeRetries` CAS-retry loop — the git-alone
46
- * floor — NOT by the workflow shape; PRD
46
+ * floor — NOT by the workflow shape; SPEC
47
47
  * `land-time-reverify-and-parallel-merge-ceiling`). This is integration-mode
48
48
  * behaviour, IDENTICAL to the build tick (integration mode is
49
49
  * verb-independent).
@@ -1 +1 @@
1
- {"version":3,"file":"advance-lifecycle-template.d.ts","sourceRoot":"","sources":["../src/advance-lifecycle-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AAEH,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AAG3D,6EAA6E;AAC7E,eAAO,MAAM,+BAA+B,sBAAsB,CAAC;AAEnE,oEAAoE;AACpE,eAAO,MAAM,kCAAkC,uJACsG,CAAC;AAEtJ,8EAA8E;AAC9E,eAAO,MAAM,+BAA+B,oCACV,CAAC;AAEnC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gCAAgC,CAC/C,MAAM,EAAE,gBAAgB,GACtB,MAAM,CAgYR;AAED,mEAAmE;AACnE,MAAM,WAAW,uBAAuB;IACvC,4EAA4E;IAC5E,EAAE,EAAE,MAAM,CAAC;IACX,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,8DAA8D;AAC9D,MAAM,WAAW,0BAA0B;IAC1C,kEAAkE;IAClE,EAAE,EAAE,OAAO,CAAC;IACZ,iDAAiD;IACjD,QAAQ,EAAE,uBAAuB,EAAE,CAAC;CACpC;AAED;;;;GAIG;AACH,wBAAgB,gCAAgC,CAC/C,IAAI,EAAE,MAAM,GACV,0BAA0B,CA8R5B"}
1
+ {"version":3,"file":"advance-lifecycle-template.d.ts","sourceRoot":"","sources":["../src/advance-lifecycle-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AAEH,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AAG3D,6EAA6E;AAC7E,eAAO,MAAM,+BAA+B,sBAAsB,CAAC;AAEnE,oEAAoE;AACpE,eAAO,MAAM,kCAAkC,uJACsG,CAAC;AAEtJ,8EAA8E;AAC9E,eAAO,MAAM,+BAA+B,oCACV,CAAC;AAEnC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gCAAgC,CAC/C,MAAM,EAAE,gBAAgB,GACtB,MAAM,CA6aR;AAED,mEAAmE;AACnE,MAAM,WAAW,uBAAuB;IACvC,4EAA4E;IAC5E,EAAE,EAAE,MAAM,CAAC;IACX,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,8DAA8D;AAC9D,MAAM,WAAW,0BAA0B;IAC1C,kEAAkE;IAClE,EAAE,EAAE,OAAO,CAAC;IACZ,iDAAiD;IACjD,QAAQ,EAAE,uBAAuB,EAAE,CAAC;CACpC;AAED;;;;GAIG;AACH,wBAAgB,gCAAgC,CAC/C,IAAI,EAAE,MAAM,GACV,0BAA0B,CAsU5B"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * The `install-ci` ADVANCE-LIFECYCLE capability (prd `runner-in-ci`, task
2
+ * The `install-ci` ADVANCE-LIFECYCLE capability (spec `runner-in-ci`, task
3
3
  * `install-ci-advance-lifecycle-workflow`; capability C: auto-triage observations
4
4
  * + surface declared blockers + apply committed answers). This module GENERATES
5
5
  * the advance-lifecycle workflow by ABSORBING and PARAMETERISING the existing seed
@@ -43,7 +43,7 @@
43
43
  * each leg carries `--propose` so it can NEVER merge to `main`); `merge` ⇒ ALSO
44
44
  * a MATRIX (one leg per item; build/gate/review fan out, the LAND tail is
45
45
  * serialised by the engine's `mergeRetries` CAS-retry loop — the git-alone
46
- * floor — NOT by the workflow shape; PRD
46
+ * floor — NOT by the workflow shape; SPEC
47
47
  * `land-time-reverify-and-parallel-merge-ceiling`). This is integration-mode
48
48
  * behaviour, IDENTICAL to the build tick (integration mode is
49
49
  * verb-independent).
@@ -91,7 +91,7 @@ export function generateAdvanceLifecycleWorkflow(config) {
91
91
  const setupWith = providerSecretsWithBlock(config);
92
92
  return `\
93
93
  # dorfl — the ADVANCE LIFECYCLE loop in CI (capability C: auto-triage
94
- # observations + surface declared blockers + apply committed answers, prd
94
+ # observations + surface declared blockers + apply committed answers, spec
95
95
  # runner-in-ci). EMITTED by \`dorfl install-ci\` by PARAMETERISING the seed
96
96
  # \`docs/ci/advance-loop.yml.template\` (the advance-loop capability's output) — the
97
97
  # human commits it. DO NOT hand-edit a copy — re-run install-ci to upgrade the
@@ -117,7 +117,7 @@ export function generateAdvanceLifecycleWorkflow(config) {
117
117
  # * merge ⇒ ALSO a MATRIX (one leg per item; build/gate/review fan out, the
118
118
  # LAND tail — rebase + CAS push to \`main\` — is serialised by the
119
119
  # engine's \`mergeRetries\` CAS-retry loop, NOT by the workflow shape.
120
- # PRD \`land-time-reverify-and-parallel-merge-ceiling\`: a
120
+ # SPEC \`land-time-reverify-and-parallel-merge-ceiling\`: a
121
121
  # non-fast-forward push triggers re-rebase + re-gate + retry, never
122
122
  # a \`--force\`. The cross-job serialiser is the CAS-retry FLOOR;
123
123
  # there is NO host-specific \`concurrency:\` group on the merge job).
@@ -274,8 +274,19 @@ jobs:
274
274
  outputs:
275
275
  items: \${{ steps.scan.outputs.items }}
276
276
  any: \${{ steps.scan.outputs.any }}
277
+ # Dynamic GitHub-backstop cap (spec
278
+ # \`graceful-pre-timeout-wip-checkpoint\`): the agent-leg jobs
279
+ # (advance-propose / advance-merge) read this as their
280
+ # \`timeout-minutes\` — replacing the retired static
281
+ # \`legTimeoutMinutes\`. Computed at run time from the committed
282
+ # \`dorfl.json\` (via \`dorfl config --json\`) as
283
+ # \`agentDeadlineMinutes + checkpointHeadroomMinutes\`, so an edit to
284
+ # \`dorfl.json\` reflects EVERYWHERE (the internal deadline the legs
285
+ # honour AND this GitHub cap) on the NEXT tick — no \`install-ci\`
286
+ # re-run, no baked-in YAML number.
287
+ githubTimeout: \${{ steps.timeout.outputs.githubTimeout }}
277
288
  steps:
278
- - uses: actions/checkout@v4
289
+ - uses: actions/checkout@v5
279
290
  with:
280
291
  fetch-depth: 0
281
292
  - uses: ./.github/actions/dorfl-setup
@@ -319,6 +330,22 @@ jobs:
319
330
  else
320
331
  echo "any=false" >> "$GITHUB_OUTPUT"
321
332
  fi
333
+ - id: timeout
334
+ # Dynamic GitHub-backstop cap (spec
335
+ # \`graceful-pre-timeout-wip-checkpoint\` — step 5): read the committed
336
+ # \`dorfl.json\` via \`dorfl config --json\` (in-place, so the resolution
337
+ # chain reads THIS repo's file exactly like \`scan --here\`), and emit
338
+ # \`githubTimeout = agentDeadlineMinutes + checkpointHeadroomMinutes\` as
339
+ # a job OUTPUT the agent-leg jobs consume via
340
+ # \`timeout-minutes: \${{ needs.enumerate.outputs.githubTimeout }}\`. So
341
+ # the SAME committed config drives BOTH the legs' internal deadline AND
342
+ # this GitHub cap — edit + commit, next tick uses it for both, no
343
+ # \`install-ci\` re-run, no baked YAML number. \`dorfl.json\` is the
344
+ # single source read at run time by BOTH consumers.
345
+ run: |
346
+ cap="$(dorfl config --json \\
347
+ | jq '.agentDeadlineMinutes + .checkpointHeadroomMinutes')"
348
+ echo "githubTimeout=\${cap}" >> "$GITHUB_OUTPUT"
322
349
 
323
350
  # ── PROPOSE: a MATRIX of independent jobs (one PR per item) ──────────────────
324
351
  # True parallelism — each item is an independent PR, so a matrix is the right
@@ -330,6 +357,20 @@ jobs:
330
357
  needs: enumerate
331
358
  if: \${{ (github.event.inputs.integrationMode || 'propose') == 'propose' && needs.enumerate.outputs.any == 'true' }}
332
359
  runs-on: ubuntu-latest
360
+ # Per-leg wall-clock cap: the DYNAMIC GitHub backstop the enumerate job
361
+ # emits (spec \`graceful-pre-timeout-wip-checkpoint\`), computed at run
362
+ # time from the committed \`dorfl.json\` as
363
+ # \`agentDeadlineMinutes + checkpointHeadroomMinutes\`. It is a STRICTLY
364
+ # LARGER backstop than the dorfl-internal deadline the leg self-stops at
365
+ # (which SAVES its WIP + auto-continues on the next tick), so the GitHub
366
+ # SIGKILL only fires if the graceful save itself wedges. Editing
367
+ # \`dorfl.json\` flips BOTH the internal deadline AND this cap on the
368
+ # next tick — no \`install-ci\` re-run, no baked-in YAML number.
369
+ # A job output is always a STRING; \`timeout-minutes\` needs an INTEGER, so
370
+ # coerce it with \`fromJson(...)\` (the same pattern the \`item\` matrix uses).
371
+ # A raw \`\${{ ... }}\` substitution makes GitHub reject it ("Unexpected
372
+ # value '45'").
373
+ timeout-minutes: \${{ fromJson(needs.enumerate.outputs.githubTimeout) }}
333
374
  strategy:
334
375
  # Independent PRs: one failing item must NOT cancel the others.
335
376
  fail-fast: false
@@ -342,7 +383,7 @@ jobs:
342
383
  matrix:
343
384
  item: \${{ fromJson(needs.enumerate.outputs.items) }}
344
385
  steps:
345
- - uses: actions/checkout@v4
386
+ - uses: actions/checkout@v5
346
387
  with:
347
388
  fetch-depth: 0
348
389
  - uses: ./.github/actions/dorfl-setup${setupWith}
@@ -379,7 +420,7 @@ jobs:
379
420
  run: dorfl advance "\${{ matrix.item }}" --propose --watch --arbiter origin
380
421
 
381
422
  # ── MERGE: a MATRIX of independent jobs (parallel build/gate/review, serialised land) ──
382
- # PRD \`land-time-reverify-and-parallel-merge-ceiling\` (stories 4 + 6): each item
423
+ # SPEC \`land-time-reverify-and-parallel-merge-ceiling\` (stories 4 + 6): each item
383
424
  # gets its own leg; build/gate/review run concurrently across siblings; the LAND
384
425
  # TAIL is serialised by the engine's \`mergeRetries\` CAS-retry loop — the
385
426
  # git-alone floor — NOT by the workflow shape. A non-fast-forward push triggers
@@ -393,6 +434,10 @@ jobs:
393
434
  needs: enumerate
394
435
  if: \${{ (github.event.inputs.integrationMode || 'propose') == 'merge' && needs.enumerate.outputs.any == 'true' }}
395
436
  runs-on: ubuntu-latest
437
+ # Per-leg wall-clock cap: the DYNAMIC GitHub backstop the enumerate job
438
+ # emits (see advance-propose for the rationale). \`fromJson(...)\` coerces the
439
+ # string job output to the INTEGER \`timeout-minutes\` requires.
440
+ timeout-minutes: \${{ fromJson(needs.enumerate.outputs.githubTimeout) }}
396
441
  strategy:
397
442
  # Independent landings: one failing item must NOT cancel the others; a
398
443
  # loser of the CAS race re-rebases + re-gates + retries.
@@ -403,7 +448,7 @@ jobs:
403
448
  matrix:
404
449
  item: \${{ fromJson(needs.enumerate.outputs.items) }}
405
450
  steps:
406
- - uses: actions/checkout@v4
451
+ - uses: actions/checkout@v5
407
452
  with:
408
453
  fetch-depth: 0
409
454
  - uses: ./.github/actions/dorfl-setup${setupWith}
@@ -453,7 +498,7 @@ jobs:
453
498
  if: \${{ (github.event.inputs.sweepMergedBranches || 'true') == 'true' }}
454
499
  runs-on: ubuntu-latest
455
500
  steps:
456
- - uses: actions/checkout@v4
501
+ - uses: actions/checkout@v5
457
502
  with:
458
503
  fetch-depth: 0
459
504
  - uses: ./.github/actions/dorfl-setup
@@ -516,7 +561,7 @@ export function validateAdvanceLifecycleWorkflow(text) {
516
561
  'TIED to the matrix shape (a leg can never merge to main / desync from the ' +
517
562
  'dispatch mode).');
518
563
  // --- merge ⇒ a MATRIX per item (parallel build/gate/review, serialised land) -
519
- // PRD `land-time-reverify-and-parallel-merge-ceiling` stories 4 + 6: build/
564
+ // SPEC `land-time-reverify-and-parallel-merge-ceiling` stories 4 + 6: build/
520
565
  // gate/review fan out; the LAND tail is serialised by the engine's
521
566
  // `mergeRetries` CAS-retry loop (the git-alone floor), NOT the workflow.
522
567
  require('merge-matrix', /advance-merge:[\s\S]*?strategy:\s*[\s\S]*?matrix:/.test(text), 'the `merge` job must use a MATRIX (parallel build/gate/review per item; ' +
@@ -596,7 +641,7 @@ export function validateAdvanceLifecycleWorkflow(text) {
596
641
  'agnostic merged-branch sweep).');
597
642
  require('reap-sweep-dispatch-input', /sweepMergedBranches:/.test(text), 'the `sweepMergedBranches` dispatch input (capability F, opt-out) must be ' +
598
643
  'preserved.');
599
- // The ORPHAN-SIDECAR reap (prd
644
+ // The ORPHAN-SIDECAR reap (spec
600
645
  // `agentic-question-resolution-retire-disposition-vocabulary`, US #10) rides
601
646
  // the SAME scheduled `dorfl gc --remote-branches` invocation, so it provably
602
647
  // FIRES on the cron tick (not behind an un-passed flag). The reap step that
@@ -630,7 +675,7 @@ export function validateAdvanceLifecycleWorkflow(text) {
630
675
  // --- The propose `enumerate` matrix must UNION taskable prds --------------
631
676
  // (`ci-propose-matrix-must-enumerate-sliceable-prds-not-only-slices`): a
632
677
  // task-only `jq` would render `DORFL_AUTO_TASK: 'true'` dead on the
633
- // hourly cron — a ready ungated PRD would never become a matrix leg. The `jq`
678
+ // hourly cron — a ready ungated SPEC would never become a matrix leg. The `jq`
634
679
  // must enumerate `spec:<slug>` ids from `scan --json`'s taskable-SPEC pool
635
680
  // (`repos[].specs[]` + `cwd.repo.specs[]`) alongside the eligible-task legs.
636
681
  require('propose-enumerates-taskable-specs', /"spec:" \+ \.slug/.test(text) &&
@@ -642,7 +687,7 @@ export function validateAdvanceLifecycleWorkflow(text) {
642
687
  // --- The propose `enumerate` matrix must UNION the LIFECYCLE pools ----------
643
688
  // (`ci-propose-matrix-enumerates-lifecycle-items`): a build/task-only `jq`
644
689
  // runs the answer-loop ONLY in merge mode — a `needsAnswers` item is
645
- // `eligible:false` and untriaged observations are not in the task/prd pools at
690
+ // `eligible:false` and untriaged observations are not in the task/spec pools at
646
691
  // all, so NO lifecycle rung (triage/surface/apply) ever gets a propose leg. The
647
692
  // `jq` must enumerate the three lifecycle sub-pools from `scan --json`
648
693
  // (`repos[].lifecycle.*` + `cwd.repo.lifecycle.*`): `triage[]` → `obs:<slug>`,
@@ -660,6 +705,33 @@ export function validateAdvanceLifecycleWorkflow(text) {
660
705
  'so the WHOLE answer-loop (triage + surface + apply) runs in propose mode, ' +
661
706
  'not only in merge mode ' +
662
707
  '(`ci-propose-matrix-enumerates-lifecycle-items`).');
708
+ // --- DYNAMIC GitHub backstop (spec `graceful-pre-timeout-wip-checkpoint`) ---
709
+ // The agent-leg jobs (advance-propose / advance-merge) must consume the
710
+ // enumerate job's dynamic `githubTimeout` output, NOT a baked-in number. This
711
+ // closes the drift where the static `legTimeoutMinutes` render only refreshed
712
+ // on `install-ci` re-run; now the same committed `dorfl.json` drives BOTH the
713
+ // internal deadline AND the GitHub cap on every tick.
714
+ require('enumerate-emits-github-timeout-output', /enumerate:[\s\S]*?outputs:[\s\S]*?githubTimeout:/.test(text), 'the `enumerate` job must declare a `githubTimeout` job OUTPUT (computed ' +
715
+ 'from the committed `dorfl.json` as ' +
716
+ '`agentDeadlineMinutes + checkpointHeadroomMinutes`).');
717
+ require('enumerate-reads-dorfl-config-json', /dorfl config --json/.test(text), 'the `enumerate` job must read the committed config via ' +
718
+ '`dorfl config --json` at run time (so an edit to `dorfl.json` ' +
719
+ 'reflects on the next tick without an `install-ci` re-run).');
720
+ require('enumerate-computes-deadline-plus-headroom', /agentDeadlineMinutes \+ checkpointHeadroomMinutes/.test(text), 'the `enumerate` job must compute `githubTimeout` as ' +
721
+ '`agentDeadlineMinutes + checkpointHeadroomMinutes` (the backstop is ' +
722
+ 'DELIBERATELY head-room above the internal deadline).');
723
+ require('propose-uses-dynamic-github-timeout', /advance-propose:[\s\S]*?timeout-minutes:\s*\$\{\{\s*fromJson\(needs\.enumerate\.outputs\.githubTimeout\)\s*\}\}/.test(text), 'the `advance-propose` job must set `timeout-minutes: ${{ ' +
724
+ 'fromJson(needs.enumerate.outputs.githubTimeout) }}` (the DYNAMIC GitHub ' +
725
+ 'backstop, fromJson-coerced to an integer, not a baked-in number).');
726
+ require('merge-uses-dynamic-github-timeout', /advance-merge:[\s\S]*?timeout-minutes:\s*\$\{\{\s*fromJson\(needs\.enumerate\.outputs\.githubTimeout\)\s*\}\}/.test(text), 'the `advance-merge` job must set `timeout-minutes: ${{ ' +
727
+ 'fromJson(needs.enumerate.outputs.githubTimeout) }}` (the DYNAMIC GitHub ' +
728
+ 'backstop, fromJson-coerced to an integer).');
729
+ // A baked static `timeout-minutes: <number>` on an agent-leg job is the
730
+ // retired `legTimeoutMinutes` render — forbid it so a future edit cannot
731
+ // silently re-introduce the drift the dynamic backstop is fixing.
732
+ require('no-static-agent-leg-timeout', !/(?:advance-propose|advance-merge):[\s\S]*?timeout-minutes:\s*\d/.test(text), 'no agent-leg job may set a baked-in numeric `timeout-minutes` ' +
733
+ '(the retired `legTimeoutMinutes` render); the GitHub backstop is ' +
734
+ 'DYNAMIC (read from `dorfl.json` at run time).');
663
735
  // --- Wires the SHARED composite setup action -------------------------------
664
736
  require('uses-shared-setup-action', /uses:\s*\.\/\.github\/actions\/dorfl-setup\b/.test(text), 'every job must wire the shared composite setup action ' +
665
737
  '(`./.github/actions/dorfl-setup`, emitted by the core task).');