dorfl 0.0.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (619) hide show
  1. package/dist/advance-ci-template.d.ts +73 -0
  2. package/dist/advance-ci-template.d.ts.map +1 -0
  3. package/dist/advance-ci-template.js +104 -0
  4. package/dist/advance-ci-template.js.map +1 -0
  5. package/dist/advance-classify.d.ts +132 -0
  6. package/dist/advance-classify.d.ts.map +1 -0
  7. package/dist/advance-classify.js +120 -0
  8. package/dist/advance-classify.js.map +1 -0
  9. package/dist/advance-drivers.d.ts +182 -0
  10. package/dist/advance-drivers.d.ts.map +1 -0
  11. package/dist/advance-drivers.js +231 -0
  12. package/dist/advance-drivers.js.map +1 -0
  13. package/dist/advance-isolated.d.ts +156 -0
  14. package/dist/advance-isolated.d.ts.map +1 -0
  15. package/dist/advance-isolated.js +256 -0
  16. package/dist/advance-isolated.js.map +1 -0
  17. package/dist/advance-lifecycle-template.d.ts +107 -0
  18. package/dist/advance-lifecycle-template.d.ts.map +1 -0
  19. package/dist/advance-lifecycle-template.js +668 -0
  20. package/dist/advance-lifecycle-template.js.map +1 -0
  21. package/dist/advance-loop-driver.d.ts +325 -0
  22. package/dist/advance-loop-driver.d.ts.map +1 -0
  23. package/dist/advance-loop-driver.js +437 -0
  24. package/dist/advance-loop-driver.js.map +1 -0
  25. package/dist/advance-treeless-publish.d.ts +108 -0
  26. package/dist/advance-treeless-publish.d.ts.map +1 -0
  27. package/dist/advance-treeless-publish.js +71 -0
  28. package/dist/advance-treeless-publish.js.map +1 -0
  29. package/dist/advance.d.ts +340 -0
  30. package/dist/advance.d.ts.map +1 -0
  31. package/dist/advance.js +1122 -0
  32. package/dist/advance.js.map +1 -0
  33. package/dist/advancing-lock.d.ts +294 -0
  34. package/dist/advancing-lock.d.ts.map +1 -0
  35. package/dist/advancing-lock.js +594 -0
  36. package/dist/advancing-lock.js.map +1 -0
  37. package/dist/agent-launch.d.ts +79 -0
  38. package/dist/agent-launch.d.ts.map +1 -0
  39. package/dist/agent-launch.js +61 -0
  40. package/dist/agent-launch.js.map +1 -0
  41. package/dist/agent-stop.d.ts +149 -0
  42. package/dist/agent-stop.d.ts.map +1 -0
  43. package/dist/agent-stop.js +307 -0
  44. package/dist/agent-stop.js.map +1 -0
  45. package/dist/apply-decide.d.ts +127 -0
  46. package/dist/apply-decide.d.ts.map +1 -0
  47. package/dist/apply-decide.js +176 -0
  48. package/dist/apply-decide.js.map +1 -0
  49. package/dist/apply-merge-action.d.ts +206 -0
  50. package/dist/apply-merge-action.d.ts.map +1 -0
  51. package/dist/apply-merge-action.js +307 -0
  52. package/dist/apply-merge-action.js.map +1 -0
  53. package/dist/apply-persist.d.ts +174 -0
  54. package/dist/apply-persist.d.ts.map +1 -0
  55. package/dist/apply-persist.js +359 -0
  56. package/dist/apply-persist.js.map +1 -0
  57. package/dist/arbiter.d.ts +120 -0
  58. package/dist/arbiter.d.ts.map +1 -0
  59. package/dist/arbiter.js +255 -0
  60. package/dist/arbiter.js.map +1 -0
  61. package/dist/brand.d.ts +70 -0
  62. package/dist/brand.d.ts.map +1 -0
  63. package/dist/brand.js +84 -0
  64. package/dist/brand.js.map +1 -0
  65. package/dist/buildable-body.d.ts +132 -0
  66. package/dist/buildable-body.d.ts.map +1 -0
  67. package/dist/buildable-body.js +131 -0
  68. package/dist/buildable-body.js.map +1 -0
  69. package/dist/categorise.d.ts +66 -0
  70. package/dist/categorise.d.ts.map +1 -0
  71. package/dist/categorise.js +106 -0
  72. package/dist/categorise.js.map +1 -0
  73. package/dist/claim-cas.d.ts +117 -0
  74. package/dist/claim-cas.d.ts.map +1 -0
  75. package/dist/claim-cas.js +312 -0
  76. package/dist/claim-cas.js.map +1 -0
  77. package/dist/cli-spinner.d.ts +112 -0
  78. package/dist/cli-spinner.d.ts.map +1 -0
  79. package/dist/cli-spinner.js +157 -0
  80. package/dist/cli-spinner.js.map +1 -0
  81. package/dist/cli.d.ts +11 -0
  82. package/dist/cli.d.ts.map +1 -0
  83. package/dist/cli.js +3100 -0
  84. package/dist/cli.js.map +1 -0
  85. package/dist/close-job-template.d.ts +70 -0
  86. package/dist/close-job-template.d.ts.map +1 -0
  87. package/dist/close-job-template.js +180 -0
  88. package/dist/close-job-template.js.map +1 -0
  89. package/dist/close-job.d.ts +95 -0
  90. package/dist/close-job.d.ts.map +1 -0
  91. package/dist/close-job.js +226 -0
  92. package/dist/close-job.js.map +1 -0
  93. package/dist/complete.d.ts +361 -0
  94. package/dist/complete.d.ts.map +1 -0
  95. package/dist/complete.js +885 -0
  96. package/dist/complete.js.map +1 -0
  97. package/dist/concurrency.d.ts +68 -0
  98. package/dist/concurrency.d.ts.map +1 -0
  99. package/dist/concurrency.js +112 -0
  100. package/dist/concurrency.js.map +1 -0
  101. package/dist/config-override.d.ts +76 -0
  102. package/dist/config-override.d.ts.map +1 -0
  103. package/dist/config-override.js +50 -0
  104. package/dist/config-override.js.map +1 -0
  105. package/dist/config.d.ts +668 -0
  106. package/dist/config.d.ts.map +1 -0
  107. package/dist/config.js +241 -0
  108. package/dist/config.js.map +1 -0
  109. package/dist/continue-branch.d.ts +249 -0
  110. package/dist/continue-branch.d.ts.map +1 -0
  111. package/dist/continue-branch.js +389 -0
  112. package/dist/continue-branch.js.map +1 -0
  113. package/dist/cwd-section.d.ts +186 -0
  114. package/dist/cwd-section.d.ts.map +1 -0
  115. package/dist/cwd-section.js +209 -0
  116. package/dist/cwd-section.js.map +1 -0
  117. package/dist/decision-engine.d.ts +170 -0
  118. package/dist/decision-engine.d.ts.map +1 -0
  119. package/dist/decision-engine.js +136 -0
  120. package/dist/decision-engine.js.map +1 -0
  121. package/dist/detect.d.ts +17 -0
  122. package/dist/detect.d.ts.map +1 -0
  123. package/dist/detect.js +118 -0
  124. package/dist/detect.js.map +1 -0
  125. package/dist/do-autopick.d.ts +85 -0
  126. package/dist/do-autopick.d.ts.map +1 -0
  127. package/dist/do-autopick.js +112 -0
  128. package/dist/do-autopick.js.map +1 -0
  129. package/dist/do-config.d.ts +312 -0
  130. package/dist/do-config.d.ts.map +1 -0
  131. package/dist/do-config.js +358 -0
  132. package/dist/do-config.js.map +1 -0
  133. package/dist/do-remote-auto.d.ts +75 -0
  134. package/dist/do-remote-auto.d.ts.map +1 -0
  135. package/dist/do-remote-auto.js +111 -0
  136. package/dist/do-remote-auto.js.map +1 -0
  137. package/dist/do.d.ts +621 -0
  138. package/dist/do.d.ts.map +1 -0
  139. package/dist/do.js +1882 -0
  140. package/dist/do.js.map +1 -0
  141. package/dist/drop-source.d.ts +96 -0
  142. package/dist/drop-source.d.ts.map +1 -0
  143. package/dist/drop-source.js +91 -0
  144. package/dist/drop-source.js.map +1 -0
  145. package/dist/eligibility.d.ts +46 -0
  146. package/dist/eligibility.d.ts.map +1 -0
  147. package/dist/eligibility.js +34 -0
  148. package/dist/eligibility.js.map +1 -0
  149. package/dist/env-config.d.ts +51 -0
  150. package/dist/env-config.d.ts.map +1 -0
  151. package/dist/env-config.js +272 -0
  152. package/dist/env-config.js.map +1 -0
  153. package/dist/failure-cause.d.ts +70 -0
  154. package/dist/failure-cause.d.ts.map +1 -0
  155. package/dist/failure-cause.js +126 -0
  156. package/dist/failure-cause.js.map +1 -0
  157. package/dist/format.d.ts +43 -0
  158. package/dist/format.d.ts.map +1 -0
  159. package/dist/format.js +256 -0
  160. package/dist/format.js.map +1 -0
  161. package/dist/frontmatter.d.ts +208 -0
  162. package/dist/frontmatter.d.ts.map +1 -0
  163. package/dist/frontmatter.js +344 -0
  164. package/dist/frontmatter.js.map +1 -0
  165. package/dist/gate-readiness.d.ts +84 -0
  166. package/dist/gate-readiness.d.ts.map +1 -0
  167. package/dist/gate-readiness.js +103 -0
  168. package/dist/gate-readiness.js.map +1 -0
  169. package/dist/gc.d.ts +165 -0
  170. package/dist/gc.d.ts.map +1 -0
  171. package/dist/gc.js +313 -0
  172. package/dist/gc.js.map +1 -0
  173. package/dist/gh-failure.d.ts +42 -0
  174. package/dist/gh-failure.d.ts.map +1 -0
  175. package/dist/gh-failure.js +49 -0
  176. package/dist/gh-failure.js.map +1 -0
  177. package/dist/git.d.ts +75 -0
  178. package/dist/git.d.ts.map +1 -0
  179. package/dist/git.js +130 -0
  180. package/dist/git.js.map +1 -0
  181. package/dist/github.d.ts +187 -0
  182. package/dist/github.d.ts.map +1 -0
  183. package/dist/github.js +343 -0
  184. package/dist/github.js.map +1 -0
  185. package/dist/harness.d.ts +242 -0
  186. package/dist/harness.d.ts.map +1 -0
  187. package/dist/harness.js +157 -0
  188. package/dist/harness.js.map +1 -0
  189. package/dist/identity.d.ts +167 -0
  190. package/dist/identity.d.ts.map +1 -0
  191. package/dist/identity.js +231 -0
  192. package/dist/identity.js.map +1 -0
  193. package/dist/index.d.ts +147 -0
  194. package/dist/index.d.ts.map +1 -0
  195. package/dist/index.js +76 -0
  196. package/dist/index.js.map +1 -0
  197. package/dist/install-ci-branch-protection.d.ts +147 -0
  198. package/dist/install-ci-branch-protection.d.ts.map +1 -0
  199. package/dist/install-ci-branch-protection.js +166 -0
  200. package/dist/install-ci-branch-protection.js.map +1 -0
  201. package/dist/install-ci-capabilities/advance-lifecycle.d.ts +15 -0
  202. package/dist/install-ci-capabilities/advance-lifecycle.d.ts.map +1 -0
  203. package/dist/install-ci-capabilities/advance-lifecycle.js +28 -0
  204. package/dist/install-ci-capabilities/advance-lifecycle.js.map +1 -0
  205. package/dist/install-ci-capabilities/close-job.d.ts +13 -0
  206. package/dist/install-ci-capabilities/close-job.d.ts.map +1 -0
  207. package/dist/install-ci-capabilities/close-job.js +26 -0
  208. package/dist/install-ci-capabilities/close-job.js.map +1 -0
  209. package/dist/install-ci-capabilities/example-noop.d.ts +16 -0
  210. package/dist/install-ci-capabilities/example-noop.d.ts.map +1 -0
  211. package/dist/install-ci-capabilities/example-noop.js +23 -0
  212. package/dist/install-ci-capabilities/example-noop.js.map +1 -0
  213. package/dist/install-ci-capabilities/intake.d.ts +15 -0
  214. package/dist/install-ci-capabilities/intake.d.ts.map +1 -0
  215. package/dist/install-ci-capabilities/intake.js +28 -0
  216. package/dist/install-ci-capabilities/intake.js.map +1 -0
  217. package/dist/install-ci-capabilities/verify.d.ts +14 -0
  218. package/dist/install-ci-capabilities/verify.d.ts.map +1 -0
  219. package/dist/install-ci-capabilities/verify.js +27 -0
  220. package/dist/install-ci-capabilities/verify.js.map +1 -0
  221. package/dist/install-ci-core.d.ts +446 -0
  222. package/dist/install-ci-core.d.ts.map +1 -0
  223. package/dist/install-ci-core.js +760 -0
  224. package/dist/install-ci-core.js.map +1 -0
  225. package/dist/install-ci-github.d.ts +167 -0
  226. package/dist/install-ci-github.d.ts.map +1 -0
  227. package/dist/install-ci-github.js +315 -0
  228. package/dist/install-ci-github.js.map +1 -0
  229. package/dist/install-ci.d.ts +105 -0
  230. package/dist/install-ci.d.ts.map +1 -0
  231. package/dist/install-ci.js +363 -0
  232. package/dist/install-ci.js.map +1 -0
  233. package/dist/intake-event.d.ts +88 -0
  234. package/dist/intake-event.d.ts.map +1 -0
  235. package/dist/intake-event.js +66 -0
  236. package/dist/intake-event.js.map +1 -0
  237. package/dist/intake-marker.d.ts +95 -0
  238. package/dist/intake-marker.d.ts.map +1 -0
  239. package/dist/intake-marker.js +127 -0
  240. package/dist/intake-marker.js.map +1 -0
  241. package/dist/intake-triage.d.ts +48 -0
  242. package/dist/intake-triage.d.ts.map +1 -0
  243. package/dist/intake-triage.js +95 -0
  244. package/dist/intake-triage.js.map +1 -0
  245. package/dist/intake-trigger-template.d.ts +185 -0
  246. package/dist/intake-trigger-template.d.ts.map +1 -0
  247. package/dist/intake-trigger-template.js +449 -0
  248. package/dist/intake-trigger-template.js.map +1 -0
  249. package/dist/intake.d.ts +569 -0
  250. package/dist/intake.d.ts.map +1 -0
  251. package/dist/intake.js +1628 -0
  252. package/dist/intake.js.map +1 -0
  253. package/dist/integration-core.d.ts +539 -0
  254. package/dist/integration-core.d.ts.map +1 -0
  255. package/dist/integration-core.js +2195 -0
  256. package/dist/integration-core.js.map +1 -0
  257. package/dist/integrator.d.ts +343 -0
  258. package/dist/integrator.d.ts.map +1 -0
  259. package/dist/integrator.js +400 -0
  260. package/dist/integrator.js.map +1 -0
  261. package/dist/isolation.d.ts +219 -0
  262. package/dist/isolation.d.ts.map +1 -0
  263. package/dist/isolation.js +261 -0
  264. package/dist/isolation.js.map +1 -0
  265. package/dist/issue-provider.d.ts +349 -0
  266. package/dist/issue-provider.d.ts.map +1 -0
  267. package/dist/issue-provider.js +360 -0
  268. package/dist/issue-provider.js.map +1 -0
  269. package/dist/item-lock.d.ts +626 -0
  270. package/dist/item-lock.d.ts.map +1 -0
  271. package/dist/item-lock.js +1381 -0
  272. package/dist/item-lock.js.map +1 -0
  273. package/dist/item-path.d.ts +49 -0
  274. package/dist/item-path.d.ts.map +1 -0
  275. package/dist/item-path.js +66 -0
  276. package/dist/item-path.js.map +1 -0
  277. package/dist/ledger-lint.d.ts +129 -0
  278. package/dist/ledger-lint.d.ts.map +1 -0
  279. package/dist/ledger-lint.js +249 -0
  280. package/dist/ledger-lint.js.map +1 -0
  281. package/dist/ledger-read.d.ts +357 -0
  282. package/dist/ledger-read.d.ts.map +1 -0
  283. package/dist/ledger-read.js +442 -0
  284. package/dist/ledger-read.js.map +1 -0
  285. package/dist/ledger-write.d.ts +330 -0
  286. package/dist/ledger-write.d.ts.map +1 -0
  287. package/dist/ledger-write.js +411 -0
  288. package/dist/ledger-write.js.map +1 -0
  289. package/dist/lifecycle-gather.d.ts +30 -0
  290. package/dist/lifecycle-gather.d.ts.map +1 -0
  291. package/dist/lifecycle-gather.js +205 -0
  292. package/dist/lifecycle-gather.js.map +1 -0
  293. package/dist/lifecycle-pools.d.ts +180 -0
  294. package/dist/lifecycle-pools.d.ts.map +1 -0
  295. package/dist/lifecycle-pools.js +78 -0
  296. package/dist/lifecycle-pools.js.map +1 -0
  297. package/dist/merge-question-surfacer.d.ts +166 -0
  298. package/dist/merge-question-surfacer.d.ts.map +1 -0
  299. package/dist/merge-question-surfacer.js +297 -0
  300. package/dist/merge-question-surfacer.js.map +1 -0
  301. package/dist/mint-adr.d.ts +126 -0
  302. package/dist/mint-adr.d.ts.map +1 -0
  303. package/dist/mint-adr.js +257 -0
  304. package/dist/mint-adr.js.map +1 -0
  305. package/dist/mirror-pool-scan.d.ts +125 -0
  306. package/dist/mirror-pool-scan.d.ts.map +1 -0
  307. package/dist/mirror-pool-scan.js +104 -0
  308. package/dist/mirror-pool-scan.js.map +1 -0
  309. package/dist/needs-attention.d.ts +341 -0
  310. package/dist/needs-attention.d.ts.map +1 -0
  311. package/dist/needs-attention.js +900 -0
  312. package/dist/needs-attention.js.map +1 -0
  313. package/dist/orphan-sidecar.d.ts +79 -0
  314. package/dist/orphan-sidecar.d.ts.map +1 -0
  315. package/dist/orphan-sidecar.js +71 -0
  316. package/dist/orphan-sidecar.js.map +1 -0
  317. package/dist/output.d.ts +48 -0
  318. package/dist/output.d.ts.map +1 -0
  319. package/dist/output.js +66 -0
  320. package/dist/output.js.map +1 -0
  321. package/dist/pi-harness.d.ts +179 -0
  322. package/dist/pi-harness.d.ts.map +1 -0
  323. package/dist/pi-harness.js +342 -0
  324. package/dist/pi-harness.js.map +1 -0
  325. package/dist/placement.d.ts +99 -0
  326. package/dist/placement.d.ts.map +1 -0
  327. package/dist/placement.js +67 -0
  328. package/dist/placement.js.map +1 -0
  329. package/dist/prd-to-spec.d.ts +329 -0
  330. package/dist/prd-to-spec.d.ts.map +1 -0
  331. package/dist/prd-to-spec.js +706 -0
  332. package/dist/prd-to-spec.js.map +1 -0
  333. package/dist/prepare.d.ts +121 -0
  334. package/dist/prepare.d.ts.map +1 -0
  335. package/dist/prepare.js +140 -0
  336. package/dist/prepare.js.map +1 -0
  337. package/dist/prompt.d.ts +363 -0
  338. package/dist/prompt.d.ts.map +1 -0
  339. package/dist/prompt.js +499 -0
  340. package/dist/prompt.js.map +1 -0
  341. package/dist/protocol/ADR-FORMAT.md +47 -0
  342. package/dist/protocol/CLAIM-PROTOCOL.md +217 -0
  343. package/dist/protocol/REVIEW-PROTOCOL.md +119 -0
  344. package/dist/protocol/SURFACE-PROTOCOL.md +121 -0
  345. package/dist/protocol/TASKING-PROTOCOL.md +122 -0
  346. package/dist/protocol/WORK-CONTRACT.md +276 -0
  347. package/dist/protocol/spec-template.md +71 -0
  348. package/dist/protocol/task-template.md +65 -0
  349. package/dist/readiness.d.ts +66 -0
  350. package/dist/readiness.d.ts.map +1 -0
  351. package/dist/readiness.js +36 -0
  352. package/dist/readiness.js.map +1 -0
  353. package/dist/reap-branches.d.ts +102 -0
  354. package/dist/reap-branches.d.ts.map +1 -0
  355. package/dist/reap-branches.js +149 -0
  356. package/dist/reap-branches.js.map +1 -0
  357. package/dist/recover-isolated.d.ts +72 -0
  358. package/dist/recover-isolated.d.ts.map +1 -0
  359. package/dist/recover-isolated.js +188 -0
  360. package/dist/recover-isolated.js.map +1 -0
  361. package/dist/registry.d.ts +172 -0
  362. package/dist/registry.d.ts.map +1 -0
  363. package/dist/registry.js +296 -0
  364. package/dist/registry.js.map +1 -0
  365. package/dist/repo-config.d.ts +201 -0
  366. package/dist/repo-config.d.ts.map +1 -0
  367. package/dist/repo-config.js +414 -0
  368. package/dist/repo-config.js.map +1 -0
  369. package/dist/repo-key.d.ts +20 -0
  370. package/dist/repo-key.d.ts.map +1 -0
  371. package/dist/repo-key.js +68 -0
  372. package/dist/repo-key.js.map +1 -0
  373. package/dist/repo-mirror.d.ts +177 -0
  374. package/dist/repo-mirror.d.ts.map +1 -0
  375. package/dist/repo-mirror.js +271 -0
  376. package/dist/repo-mirror.js.map +1 -0
  377. package/dist/retry-backoff.d.ts +90 -0
  378. package/dist/retry-backoff.d.ts.map +1 -0
  379. package/dist/retry-backoff.js +98 -0
  380. package/dist/retry-backoff.js.map +1 -0
  381. package/dist/review-gate.d.ts +173 -0
  382. package/dist/review-gate.d.ts.map +1 -0
  383. package/dist/review-gate.js +261 -0
  384. package/dist/review-gate.js.map +1 -0
  385. package/dist/review-verdict.d.ts +149 -0
  386. package/dist/review-verdict.d.ts.map +1 -0
  387. package/dist/review-verdict.js +332 -0
  388. package/dist/review-verdict.js.map +1 -0
  389. package/dist/run.d.ts +221 -0
  390. package/dist/run.d.ts.map +1 -0
  391. package/dist/run.js +963 -0
  392. package/dist/run.js.map +1 -0
  393. package/dist/scan.d.ts +308 -0
  394. package/dist/scan.d.ts.map +1 -0
  395. package/dist/scan.js +374 -0
  396. package/dist/scan.js.map +1 -0
  397. package/dist/select-order.d.ts +75 -0
  398. package/dist/select-order.d.ts.map +1 -0
  399. package/dist/select-order.js +108 -0
  400. package/dist/select-order.js.map +1 -0
  401. package/dist/select-priority.d.ts +188 -0
  402. package/dist/select-priority.d.ts.map +1 -0
  403. package/dist/select-priority.js +80 -0
  404. package/dist/select-priority.js.map +1 -0
  405. package/dist/select.d.ts +25 -0
  406. package/dist/select.d.ts.map +1 -0
  407. package/dist/select.js +43 -0
  408. package/dist/select.js.map +1 -0
  409. package/dist/session-path.d.ts +36 -0
  410. package/dist/session-path.d.ts.map +1 -0
  411. package/dist/session-path.js +129 -0
  412. package/dist/session-path.js.map +1 -0
  413. package/dist/sidecar-apply.d.ts +83 -0
  414. package/dist/sidecar-apply.d.ts.map +1 -0
  415. package/dist/sidecar-apply.js +111 -0
  416. package/dist/sidecar-apply.js.map +1 -0
  417. package/dist/sidecar.d.ts +245 -0
  418. package/dist/sidecar.d.ts.map +1 -0
  419. package/dist/sidecar.js +481 -0
  420. package/dist/sidecar.js.map +1 -0
  421. package/dist/slug-namespace.d.ts +204 -0
  422. package/dist/slug-namespace.d.ts.map +1 -0
  423. package/dist/slug-namespace.js +229 -0
  424. package/dist/slug-namespace.js.map +1 -0
  425. package/dist/spec-complete.d.ts +44 -0
  426. package/dist/spec-complete.d.ts.map +1 -0
  427. package/dist/spec-complete.js +69 -0
  428. package/dist/spec-complete.js.map +1 -0
  429. package/dist/start.d.ts +97 -0
  430. package/dist/start.d.ts.map +1 -0
  431. package/dist/start.js +633 -0
  432. package/dist/start.js.map +1 -0
  433. package/dist/status.d.ts +199 -0
  434. package/dist/status.d.ts.map +1 -0
  435. package/dist/status.js +228 -0
  436. package/dist/status.js.map +1 -0
  437. package/dist/surface-gate.d.ts +162 -0
  438. package/dist/surface-gate.d.ts.map +1 -0
  439. package/dist/surface-gate.js +206 -0
  440. package/dist/surface-gate.js.map +1 -0
  441. package/dist/surface-persist.d.ts +86 -0
  442. package/dist/surface-persist.d.ts.map +1 -0
  443. package/dist/surface-persist.js +129 -0
  444. package/dist/surface-persist.js.map +1 -0
  445. package/dist/tasker-review-loop.d.ts +249 -0
  446. package/dist/tasker-review-loop.d.ts.map +1 -0
  447. package/dist/tasker-review-loop.js +369 -0
  448. package/dist/tasker-review-loop.js.map +1 -0
  449. package/dist/tasking-eligibility.d.ts +74 -0
  450. package/dist/tasking-eligibility.d.ts.map +1 -0
  451. package/dist/tasking-eligibility.js +52 -0
  452. package/dist/tasking-eligibility.js.map +1 -0
  453. package/dist/tasking-lock.d.ts +111 -0
  454. package/dist/tasking-lock.d.ts.map +1 -0
  455. package/dist/tasking-lock.js +256 -0
  456. package/dist/tasking-lock.js.map +1 -0
  457. package/dist/tasking.d.ts +275 -0
  458. package/dist/tasking.d.ts.map +1 -0
  459. package/dist/tasking.js +951 -0
  460. package/dist/tasking.js.map +1 -0
  461. package/dist/triage-gate.d.ts +127 -0
  462. package/dist/triage-gate.d.ts.map +1 -0
  463. package/dist/triage-gate.js +139 -0
  464. package/dist/triage-gate.js.map +1 -0
  465. package/dist/triage-persist.d.ts +163 -0
  466. package/dist/triage-persist.d.ts.map +1 -0
  467. package/dist/triage-persist.js +387 -0
  468. package/dist/triage-persist.js.map +1 -0
  469. package/dist/verdict-json.d.ts +32 -0
  470. package/dist/verdict-json.d.ts.map +1 -0
  471. package/dist/verdict-json.js +74 -0
  472. package/dist/verdict-json.js.map +1 -0
  473. package/dist/verify-workflow-template.d.ts +60 -0
  474. package/dist/verify-workflow-template.d.ts.map +1 -0
  475. package/dist/verify-workflow-template.js +126 -0
  476. package/dist/verify-workflow-template.js.map +1 -0
  477. package/dist/verify.d.ts +60 -0
  478. package/dist/verify.d.ts.map +1 -0
  479. package/dist/verify.js +62 -0
  480. package/dist/verify.js.map +1 -0
  481. package/dist/watch-session.d.ts +112 -0
  482. package/dist/watch-session.d.ts.map +1 -0
  483. package/dist/watch-session.js +347 -0
  484. package/dist/watch-session.js.map +1 -0
  485. package/dist/work-layout.d.ts +198 -0
  486. package/dist/work-layout.d.ts.map +1 -0
  487. package/dist/work-layout.js +217 -0
  488. package/dist/work-layout.js.map +1 -0
  489. package/dist/work-on.d.ts +154 -0
  490. package/dist/work-on.d.ts.map +1 -0
  491. package/dist/work-on.js +387 -0
  492. package/dist/work-on.js.map +1 -0
  493. package/dist/workspace.d.ts +224 -0
  494. package/dist/workspace.d.ts.map +1 -0
  495. package/dist/workspace.js +325 -0
  496. package/dist/workspace.js.map +1 -0
  497. package/package.json +46 -2
  498. package/src/advance-ci-template.ts +203 -0
  499. package/src/advance-classify.ts +197 -0
  500. package/src/advance-drivers.ts +414 -0
  501. package/src/advance-isolated.ts +432 -0
  502. package/src/advance-lifecycle-template.ts +791 -0
  503. package/src/advance-loop-driver.ts +745 -0
  504. package/src/advance-treeless-publish.ts +177 -0
  505. package/src/advance.ts +1564 -0
  506. package/src/advancing-lock.ts +988 -0
  507. package/src/agent-launch.ts +137 -0
  508. package/src/agent-stop.ts +361 -0
  509. package/src/apply-decide.ts +242 -0
  510. package/src/apply-merge-action.ts +502 -0
  511. package/src/apply-persist.ts +518 -0
  512. package/src/arbiter.ts +372 -0
  513. package/src/brand.ts +111 -0
  514. package/src/buildable-body.ts +196 -0
  515. package/src/categorise.ts +158 -0
  516. package/src/claim-cas.ts +513 -0
  517. package/src/cli-spinner.ts +225 -0
  518. package/src/cli.ts +4379 -0
  519. package/src/close-job-template.ts +236 -0
  520. package/src/close-job.ts +319 -0
  521. package/src/complete.ts +1379 -0
  522. package/src/concurrency.ts +151 -0
  523. package/src/config-override.ts +116 -0
  524. package/src/config.ts +883 -0
  525. package/src/continue-branch.ts +542 -0
  526. package/src/cwd-section.ts +392 -0
  527. package/src/decision-engine.ts +272 -0
  528. package/src/detect.ts +124 -0
  529. package/src/do-autopick.ts +223 -0
  530. package/src/do-config.ts +589 -0
  531. package/src/do-remote-auto.ts +197 -0
  532. package/src/do.ts +2623 -0
  533. package/src/drop-source.ts +194 -0
  534. package/src/eligibility.ts +79 -0
  535. package/src/env-config.ts +305 -0
  536. package/src/failure-cause.ts +142 -0
  537. package/src/format.ts +313 -0
  538. package/src/frontmatter.ts +477 -0
  539. package/src/gate-readiness.ts +147 -0
  540. package/src/gc.ts +510 -0
  541. package/src/gh-failure.ts +53 -0
  542. package/src/git.ts +186 -0
  543. package/src/github.ts +468 -0
  544. package/src/harness.ts +355 -0
  545. package/src/identity.ts +322 -0
  546. package/src/index.ts +785 -0
  547. package/src/install-ci-branch-protection.ts +255 -0
  548. package/src/install-ci-capabilities/advance-lifecycle.ts +34 -0
  549. package/src/install-ci-capabilities/close-job.ts +32 -0
  550. package/src/install-ci-capabilities/example-noop.ts +24 -0
  551. package/src/install-ci-capabilities/intake.ts +34 -0
  552. package/src/install-ci-capabilities/verify.ts +33 -0
  553. package/src/install-ci-core.ts +1088 -0
  554. package/src/install-ci-github.ts +376 -0
  555. package/src/install-ci.ts +552 -0
  556. package/src/intake-event.ts +102 -0
  557. package/src/intake-marker.ts +195 -0
  558. package/src/intake-triage.ts +138 -0
  559. package/src/intake-trigger-template.ts +591 -0
  560. package/src/intake.ts +2445 -0
  561. package/src/integration-core.ts +3065 -0
  562. package/src/integrator.ts +771 -0
  563. package/src/isolation.ts +484 -0
  564. package/src/issue-provider.ts +733 -0
  565. package/src/item-lock.ts +1858 -0
  566. package/src/item-path.ts +75 -0
  567. package/src/ledger-lint.ts +332 -0
  568. package/src/ledger-read.ts +924 -0
  569. package/src/ledger-write.ts +865 -0
  570. package/src/lifecycle-gather.ts +298 -0
  571. package/src/lifecycle-pools.ts +250 -0
  572. package/src/merge-question-surfacer.ts +496 -0
  573. package/src/mint-adr.ts +362 -0
  574. package/src/mirror-pool-scan.ts +240 -0
  575. package/src/needs-attention.ts +1506 -0
  576. package/src/orphan-sidecar.ts +150 -0
  577. package/src/output.ts +89 -0
  578. package/src/pi-harness.ts +403 -0
  579. package/src/placement.ts +131 -0
  580. package/src/prd-to-spec.ts +1059 -0
  581. package/src/prepare.ts +230 -0
  582. package/src/prompt.ts +763 -0
  583. package/src/readiness.ts +98 -0
  584. package/src/reap-branches.ts +278 -0
  585. package/src/recover-isolated.ts +276 -0
  586. package/src/registry.ts +475 -0
  587. package/src/repo-config.ts +550 -0
  588. package/src/repo-key.ts +74 -0
  589. package/src/repo-mirror.ts +367 -0
  590. package/src/retry-backoff.ts +130 -0
  591. package/src/review-gate.ts +389 -0
  592. package/src/review-verdict.ts +422 -0
  593. package/src/run.ts +1430 -0
  594. package/src/scan.ts +611 -0
  595. package/src/select-order.ts +143 -0
  596. package/src/select-priority.ts +266 -0
  597. package/src/select.ts +62 -0
  598. package/src/session-path.ts +153 -0
  599. package/src/sidecar-apply.ts +216 -0
  600. package/src/sidecar.ts +700 -0
  601. package/src/slug-namespace.ts +367 -0
  602. package/src/spec-complete.ts +118 -0
  603. package/src/start.ts +974 -0
  604. package/src/status.ts +441 -0
  605. package/src/surface-gate.ts +337 -0
  606. package/src/surface-persist.ts +241 -0
  607. package/src/tasker-review-loop.ts +671 -0
  608. package/src/tasking-eligibility.ts +114 -0
  609. package/src/tasking-lock.ts +416 -0
  610. package/src/tasking.ts +1437 -0
  611. package/src/triage-gate.ts +248 -0
  612. package/src/triage-persist.ts +570 -0
  613. package/src/verdict-json.ts +73 -0
  614. package/src/verify-workflow-template.ts +159 -0
  615. package/src/verify.ts +123 -0
  616. package/src/watch-session.ts +397 -0
  617. package/src/work-layout.ts +262 -0
  618. package/src/work-on.ts +660 -0
  619. package/src/workspace.ts +502 -0
@@ -0,0 +1,73 @@
1
+ /**
2
+ * The CI-integration deliverable for the `advance` loop (prd `advance-loop`,
3
+ * task `advance-install-ci`, US #27/28): the advance-loop CAPABILITY as a
4
+ * DOCUMENTED workflow TEMPLATE (not a CLI subcommand; see the task's `##
5
+ * Decisions`). The template at `docs/ci/advance-loop.yml.template` wires "on cron
6
+ * / on-answer-committed, run the RIGHT shape" and only INVOKES the existing
7
+ * `advance` driver; it is NOT entangled with the tick.
8
+ *
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
12
+ * advance-loop capability. This module's job is unchanged either way: locate +
13
+ * STRUCTURALLY VALIDATE the template, so its shape is a contract the CLI can
14
+ * safely emit (see `docs/ci/README.md` "Relationship to the `install-ci` CLI").
15
+ *
16
+ * This module locates + reads that template and STRUCTURALLY VALIDATES it. The
17
+ * package depends on NO YAML library (see `frontmatter.ts` for the same
18
+ * constraint), so {@link validateAdvanceCiTemplate} checks the small set of
19
+ * invariants the task's acceptance criteria require directly:
20
+ *
21
+ * - triggers on a CRON schedule AND on-answer-committed (a push touching
22
+ * `work/questions/**`);
23
+ * - `propose` mode → a MATRIX of independent jobs enumerated via the
24
+ * mirror-side pool scan (`dorfl scan --json`), one `advance … --propose`
25
+ * per item (the `--propose` flag TIES the integration mode to the matrix shape,
26
+ * so a leg can never merge to main);
27
+ * - `merge` mode → a MATRIX of independent jobs (one per item), each leg
28
+ * running `dorfl advance <item> --merge` so build/gate/review run
29
+ * concurrently across siblings; the LAND TAIL is serialised by the engine's
30
+ * `mergeRetries` CAS-retry loop (the git-alone floor), NOT by this
31
+ * workflow's job shape — a host-specific `concurrency:` group would be
32
+ * load-bearing for safety, which the floor framing forbids;
33
+ * - the dispatch input is `integrationMode` (ONE word, ONE meaning): it drives
34
+ * BOTH the integration flag the legs pass AND the job shape, so they cannot
35
+ * desync;
36
+ * - it references the EXISTING `advance` driver only (no new execution model);
37
+ * - it is a `.template` (so it never self-triggers in THIS repo).
38
+ *
39
+ * The check is deliberately a set of presence/shape assertions over the raw text
40
+ * rather than a full YAML parse — it is the dependency-free counterpart of "the
41
+ * template parses + references the right driver invocations" the task asks for.
42
+ */
43
+ /** A single structural problem found in the template. */
44
+ export interface AdvanceCiTemplateProblem {
45
+ /** A short, stable id for the violated invariant (for tests/assertions). */
46
+ id: string;
47
+ /** Human-readable description of what is missing or wrong. */
48
+ message: string;
49
+ }
50
+ /** The result of {@link validateAdvanceCiTemplate}. */
51
+ export interface AdvanceCiTemplateValidation {
52
+ /** True iff the template satisfies EVERY structural invariant. */
53
+ ok: boolean;
54
+ /** Each violated invariant (empty when `ok`). */
55
+ problems: AdvanceCiTemplateProblem[];
56
+ }
57
+ /**
58
+ * Locate the workflow template `docs/ci/advance-loop.yml.template`. It is a
59
+ * REPO doc (the maintainer copies it into a consumer's `.github/workflows/`), so
60
+ * it is resolved relative to this source file's monorepo position — the same
61
+ * dev-monorepo walk `resolveProtocolDoc`'s last candidates use. `override`
62
+ * short-circuits for tests / unusual layouts.
63
+ */
64
+ export declare function resolveAdvanceCiTemplatePath(override?: string): string;
65
+ /** Read the raw template text. Throws (ENOENT) if it cannot be located. */
66
+ export declare function loadAdvanceCiTemplate(override?: string): string;
67
+ /**
68
+ * Structurally validate the advance-loop CI workflow template against the task's
69
+ * acceptance criteria. Dependency-free (no YAML lib): a set of presence/shape
70
+ * assertions over the raw text.
71
+ */
72
+ export declare function validateAdvanceCiTemplate(text: string): AdvanceCiTemplateValidation;
73
+ //# sourceMappingURL=advance-ci-template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advance-ci-template.d.ts","sourceRoot":"","sources":["../src/advance-ci-template.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,yDAAyD;AACzD,MAAM,WAAW,wBAAwB;IACxC,4EAA4E;IAC5E,EAAE,EAAE,MAAM,CAAC;IACX,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,uDAAuD;AACvD,MAAM,WAAW,2BAA2B;IAC3C,kEAAkE;IAClE,EAAE,EAAE,OAAO,CAAC;IACZ,iDAAiD;IACjD,QAAQ,EAAE,wBAAwB,EAAE,CAAC;CACrC;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CA2BtE;AAED,2EAA2E;AAC3E,wBAAgB,qBAAqB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACxC,IAAI,EAAE,MAAM,GACV,2BAA2B,CA2F7B"}
@@ -0,0 +1,104 @@
1
+ import { existsSync, readFileSync } from 'node:fs';
2
+ import { dirname, resolve } from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ /**
5
+ * Locate the workflow template `docs/ci/advance-loop.yml.template`. It is a
6
+ * REPO doc (the maintainer copies it into a consumer's `.github/workflows/`), so
7
+ * it is resolved relative to this source file's monorepo position — the same
8
+ * dev-monorepo walk `resolveProtocolDoc`'s last candidates use. `override`
9
+ * short-circuits for tests / unusual layouts.
10
+ */
11
+ export function resolveAdvanceCiTemplatePath(override) {
12
+ if (override) {
13
+ return override;
14
+ }
15
+ const here = dirname(fileURLToPath(import.meta.url));
16
+ // here = .../packages/dorfl/{src,dist}; the doc lives at the monorepo
17
+ // root under docs/ci/. Walk up to the root from either src/ or dist/.
18
+ const candidates = [
19
+ resolve(here, '..', '..', '..', 'docs', 'ci', 'advance-loop.yml.template'),
20
+ resolve(here, '..', '..', '..', '..', 'docs', 'ci', 'advance-loop.yml.template'),
21
+ ];
22
+ for (const candidate of candidates) {
23
+ if (existsSync(candidate)) {
24
+ return candidate;
25
+ }
26
+ }
27
+ // Fall back to the first candidate so the error names the expected path.
28
+ return candidates[0];
29
+ }
30
+ /** Read the raw template text. Throws (ENOENT) if it cannot be located. */
31
+ export function loadAdvanceCiTemplate(override) {
32
+ return readFileSync(resolveAdvanceCiTemplatePath(override), 'utf8');
33
+ }
34
+ /**
35
+ * Structurally validate the advance-loop CI workflow template against the task's
36
+ * acceptance criteria. Dependency-free (no YAML lib): a set of presence/shape
37
+ * assertions over the raw text.
38
+ */
39
+ export function validateAdvanceCiTemplate(text) {
40
+ const problems = [];
41
+ const require = (id, present, message) => {
42
+ if (!present) {
43
+ problems.push({ id, message });
44
+ }
45
+ };
46
+ // --- Triggers: cron AND on-answer-committed ---------------------------------
47
+ require('trigger-cron', /\bschedule:\s*[\s\S]*?-\s*cron:/.test(text), 'must trigger on a cron schedule (`on.schedule[].cron`).');
48
+ require('trigger-on-answer-committed', /\bpush:\s*[\s\S]*?paths:[\s\S]*?work\/questions\//.test(text), 'must trigger on-answer-committed (a push touching `work/questions/**`).');
49
+ // --- propose ⇒ a MATRIX enumerated via the mirror-side pool scan -------------
50
+ require('propose-matrix', /strategy:\s*[\s\S]*?matrix:/.test(text), '`propose` mode must emit a MATRIX of jobs (`strategy.matrix`).');
51
+ require('propose-enumerates-via-scan', /dorfl scan --json/.test(text), 'the matrix items must be ENUMERATED via the mirror-side pool scan ' +
52
+ '(`dorfl scan --json`).');
53
+ // The `enumerate` `jq` must UNION taskable prds into the matrix
54
+ // (`ci-propose-matrix-must-enumerate-sliceable-prds-not-only-slices`): a
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
57
+ // read `scan --json`'s taskable-SPEC pool (`repos[].specs[]` + `cwd.repo.specs[]`)
58
+ // and emit `spec:<slug>` legs alongside the `task:<slug>` legs.
59
+ require('propose-enumerates-taskable-specs', /"spec:" \+ \.slug/.test(text) &&
60
+ /\.specs\[\]/.test(text), 'the propose-mode `enumerate` `jq` must union taskable specs into the ' +
61
+ "matrix as `spec:<slug>` legs (read from `scan --json`'s `repos[].specs[]` " +
62
+ '+ `cwd.repo.specs[]` pools), so a ready ungated SPEC becomes one auto-task ' +
63
+ 'matrix leg alongside the eligible-task legs ' +
64
+ '(`ci-propose-matrix-must-enumerate-sliceable-prds-not-only-slices`).');
65
+ require('propose-one-advance-per-item', /dorfl advance "?\$\{\{\s*matrix\./.test(text), 'each matrix leg must run one `dorfl advance <matrix item>` ' +
66
+ '(one PR per item).');
67
+ // The matrix leg must carry `--propose` so the integration mode is TIED to the
68
+ // matrix shape (it cannot desync from the dispatch `integrationMode` input nor
69
+ // fall back to a repo config default of `merge`). Scoped to the `advance-propose`
70
+ // job so it is the LEG that carries it, not merely the file somewhere.
71
+ require('propose-leg-carries-propose-flag', /advance-propose:[\s\S]*?dorfl advance "?\$\{\{\s*matrix\.[\s\S]*?--propose\b/.test(text), 'each `propose` matrix leg must pass `--propose` so the integration mode is ' +
72
+ 'TIED to the matrix shape (a leg can never merge to main / desync from the ' +
73
+ 'dispatch mode).');
74
+ // --- merge ⇒ a MATRIX per item (parallel build/gate/review, serialised land) -
75
+ // The engine's `integrateLock` + `mergeRetries` CAS-retry loop is what makes
76
+ // concurrent merge jobs LAND-SAFE (`land-time-reverify-and-parallel-merge-ceiling`):
77
+ // build/gate/review fan out across siblings, and a non-fast-forward push
78
+ // triggers re-rebase + re-gate + retry up to the resolved `mergeRetries` cap.
79
+ // The cross-job serialiser is the CAS-retry loop itself — the git-alone floor.
80
+ 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; ' +
81
+ "the land tail is serialised by the engine's `mergeRetries` CAS-retry " +
82
+ "loop, not by the workflow's job shape).");
83
+ // Each merge matrix leg must run one `dorfl advance <matrix.item> --merge`,
84
+ // scoped to the `advance-merge:` job so the `--merge` flag is TIED to its leg
85
+ // (cannot desync from the dispatch `integrationMode` input nor fall back to a
86
+ // repo config default of `propose`).
87
+ require('merge-leg-carries-merge-flag', /advance-merge:[\s\S]*?dorfl advance "?\$\{\{\s*matrix\.[\s\S]*?--merge\b/.test(text), 'each `merge` matrix leg must pass `--merge` so the integration mode is ' +
88
+ 'TIED to the matrix shape (a leg can never propose-only / desync from the ' +
89
+ 'dispatch mode).');
90
+ // The merge fan-out is the SAFETY-FLOOR shape: no `concurrency:` group on the
91
+ // `advance-merge:` job, because a GitHub Actions `concurrency:` serialiser
92
+ // would be load-bearing for cross-job land safety, and the floor must work on
93
+ // a bare arbiter with no host (Applied Answer q1: scaled CAS-retry is the
94
+ // floor; the portable cross-job ref-lock is the planned accelerator; GitHub
95
+ // `concurrency:` is OPTIONAL host sugar only, deliberately not used here).
96
+ require('merge-no-host-concurrency-serialiser', !/advance-merge:[\s\S]*?\n\s{4}concurrency:/.test(text), 'the `merge` job must NOT carry a `concurrency:` group: a host-specific ' +
97
+ 'serialiser would make the cross-job land safety depend on a GitHub Actions ' +
98
+ "feature; the engine's `mergeRetries` CAS-retry loop is the git-alone " +
99
+ 'floor.');
100
+ // --- It only INVOKES the existing `advance` driver (no new execution model) --
101
+ require('invokes-advance-driver', /dorfl advance\b/.test(text), 'the workflow must INVOKE the existing `advance` driver.');
102
+ return { ok: problems.length === 0, problems };
103
+ }
104
+ //# sourceMappingURL=advance-ci-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advance-ci-template.js","sourceRoot":"","sources":["../src/advance-ci-template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,YAAY,EAAC,MAAM,SAAS,CAAC;AACjD,OAAO,EAAC,OAAO,EAAE,OAAO,EAAC,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAC,aAAa,EAAC,MAAM,UAAU,CAAC;AA6DvC;;;;;;GAMG;AACH,MAAM,UAAU,4BAA4B,CAAC,QAAiB;IAC7D,IAAI,QAAQ,EAAE,CAAC;QACd,OAAO,QAAQ,CAAC;IACjB,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,sEAAsE;IACtE,sEAAsE;IACtE,MAAM,UAAU,GAAG;QAClB,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,2BAA2B,CAAC;QAC1E,OAAO,CACN,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,2BAA2B,CAC3B;KACD,CAAC;IACF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACpC,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,OAAO,SAAS,CAAC;QAClB,CAAC;IACF,CAAC;IACD,yEAAyE;IACzE,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;AACtB,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,qBAAqB,CAAC,QAAiB;IACtD,OAAO,YAAY,CAAC,4BAA4B,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;AACrE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CACxC,IAAY;IAEZ,MAAM,QAAQ,GAA+B,EAAE,CAAC;IAChD,MAAM,OAAO,GAAG,CAAC,EAAU,EAAE,OAAgB,EAAE,OAAe,EAAQ,EAAE;QACvE,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,QAAQ,CAAC,IAAI,CAAC,EAAC,EAAE,EAAE,OAAO,EAAC,CAAC,CAAC;QAC9B,CAAC;IACF,CAAC,CAAC;IAEF,+EAA+E;IAC/E,OAAO,CAAC,cAAc,EAAE,iCAAiC,CAAC,IAAI,CAC7D,IAAI,CACJ,EAAE,yDAAyD,CAAC,CAAC;IAC9D,OAAO,CAAC,6BAA6B,EAAE,mDAAmD,CAAC,IAAI,CAC9F,IAAI,CACJ,EAAE,yEAAyE,CAAC,CAAC;IAE9E,gFAAgF;IAChF,OAAO,CAAC,gBAAgB,EAAE,6BAA6B,CAAC,IAAI,CAC3D,IAAI,CACJ,EAAE,gEAAgE,CAAC,CAAC;IACrE,OAAO,CAAC,6BAA6B,EAAE,mBAAmB,CAAC,IAAI,CAC9D,IAAI,CACJ,EAAE,oEAAoE;QACtE,wBAAwB,CAAC,CAAC;IAC3B,gEAAgE;IAChE,yEAAyE;IACzE,mEAAmE;IACnE,4EAA4E;IAC5E,mFAAmF;IACnF,gEAAgE;IAChE,OAAO,CAAC,mCAAmC,EAAE,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1E,aAAa,CAAC,IAAI,CACjB,IAAI,CACJ,EAAE,uEAAuE;QAC1E,4EAA4E;QAC5E,6EAA6E;QAC7E,8CAA8C;QAC9C,sEAAsE,CAAC,CAAC;IACzE,OAAO,CAAC,8BAA8B,EAAE,mCAAmC,CAAC,IAAI,CAC/E,IAAI,CACJ,EAAE,6DAA6D;QAC/D,oBAAoB,CAAC,CAAC;IACvB,+EAA+E;IAC/E,+EAA+E;IAC/E,kFAAkF;IAClF,uEAAuE;IACvE,OAAO,CAAC,kCAAkC,EAAE,8EAA8E,CAAC,IAAI,CAC9H,IAAI,CACJ,EAAE,6EAA6E;QAC/E,4EAA4E;QAC5E,iBAAiB,CAAC,CAAC;IAEpB,gFAAgF;IAChF,6EAA6E;IAC7E,qFAAqF;IACrF,yEAAyE;IACzE,8EAA8E;IAC9E,+EAA+E;IAC/E,OAAO,CAAC,cAAc,EAAE,mDAAmD,CAAC,IAAI,CAC/E,IAAI,CACJ,EAAE,0EAA0E;QAC5E,uEAAuE;QACvE,yCAAyC,CAAC,CAAC;IAC5C,4EAA4E;IAC5E,8EAA8E;IAC9E,8EAA8E;IAC9E,qCAAqC;IACrC,OAAO,CAAC,8BAA8B,EAAE,0EAA0E,CAAC,IAAI,CACtH,IAAI,CACJ,EAAE,yEAAyE;QAC3E,2EAA2E;QAC3E,iBAAiB,CAAC,CAAC;IACpB,8EAA8E;IAC9E,2EAA2E;IAC3E,8EAA8E;IAC9E,0EAA0E;IAC1E,4EAA4E;IAC5E,2EAA2E;IAC3E,OAAO,CAAC,sCAAsC,EAAE,CAAC,2CAA2C,CAAC,IAAI,CAChG,IAAI,CACJ,EAAE,yEAAyE;QAC3E,6EAA6E;QAC7E,uEAAuE;QACvE,QAAQ,CAAC,CAAC;IAEX,gFAAgF;IAChF,OAAO,CAAC,wBAAwB,EAAE,iBAAiB,CAAC,IAAI,CACvD,IAAI,CACJ,EAAE,yDAAyD,CAAC,CAAC;IAE9D,OAAO,EAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,QAAQ,EAAC,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * The pure `advance` TICK classifier (prd `advance-loop`, task
3
+ * `advance-tick-classifier`) — the substrate-agnostic, read-only seam BOTH the
4
+ * one-shot driver and the loop (`run`) driver wrap. Mirrors the existing pure
5
+ * `categorise.ts` / `eligibility.ts` seams: NO model, NO lock, NO file mutation
6
+ * — it returns WHICH rung on WHICH item from EXACTLY two signals plus the item
7
+ * type, and nothing executes here (the rung EXECUTION is later tasks).
8
+ *
9
+ * The two signals (and ONLY these two):
10
+ * 1. the item's `needsAnswers` flag (from `frontmatter.ts`); and
11
+ * 2. the sidecar's ANSWERED-STATE (from the `advance-sidecar-contract`
12
+ * keystone: {@link allAnswered} / {@link pendingEntries} over the entries).
13
+ *
14
+ * The per-item state machine (the deterministic trigger — two signals only):
15
+ *
16
+ * needsAnswers: true?
17
+ * ├─ NO → ANALYSE (state-appropriate rung: build a ready task / task a ready
18
+ * │ prd / triage an untriaged observation). Analysis MAY advance, OR
19
+ * │ SURFACE questions.
20
+ * └─ YES → sidecar exists?
21
+ * ├─ NO → ANALYSE (first pass: generate questions → write the sidecar)
22
+ * │ [transitional — surfacing normally writes the sidecar atomically]
23
+ * └─ YES → all entries answered?
24
+ * ├─ YES → ANALYSE: apply the answers + advance.
25
+ * └─ NO → NO-OP (awaiting human).
26
+ *
27
+ * Two invariants this classifier (and the downstream that executes the rung)
28
+ * MUST preserve:
29
+ * 1. `needsAnswers:false ⟺ NO active sidecar` (clear-flag and delete-sidecar are
30
+ * the SAME atomic step — enforced in `advance-sidecar-contract`'s
31
+ * `applyAtomic`, asserted HERE at the classifier boundary). A
32
+ * contradictory input (one set without the other) is the only state the
33
+ * classifier REFUSES to classify into an ANALYSE/NO-OP rung — it returns the
34
+ * explicit `invariant-violation` kind so a caller can route it rather than
35
+ * silently mis-advance.
36
+ * 2. A PENDING (not-all-answered) sidecar makes the tick a clean NO-OP (so a
37
+ * `run` daemon never spins hot re-surfacing the same question). A SUBSET of
38
+ * answered entries is still pending ⇒ SKIP (NO-OP).
39
+ *
40
+ * "ANALYSE" is NOT "always advance" — surface-and-pause is itself a rung, so the
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),
43
+ * `task-spec` (spec), `triage-observation` (observation) when there are no open
44
+ * questions; `surface` (first-pass question generation) when `needsAnswers` but
45
+ * no sidecar yet; `apply` when all entries are answered.
46
+ */
47
+ import type { SidecarModel, SidecarType } from './sidecar.js';
48
+ /**
49
+ * One TICK input: an item's TYPE + its two classification signals. `needsAnswers`
50
+ * is the item-body flag (`undefined`/`false` ⇒ not gated; `true` ⇒ gated). The
51
+ * `sidecar` is the parsed ACTIVE sidecar model when one exists, else `undefined`
52
+ * — the classifier reads its answered-state via the keystone's derived helpers,
53
+ * never a third state store.
54
+ */
55
+ export interface TickItem {
56
+ /** The item type — the state machine is per-TYPE (task / prd / observation). */
57
+ type: SidecarType;
58
+ /** Autonomy axis 2 (DISCOVERED): `true` ⇒ open questions block autonomous work. */
59
+ needsAnswers: boolean | undefined;
60
+ /** The parsed ACTIVE sidecar, or `undefined` when none exists. */
61
+ sidecar: SidecarModel | undefined;
62
+ }
63
+ /**
64
+ * The CLASSIFIED rung kinds (a discriminated union NAMING the rung WITHOUT
65
+ * executing it). The ANALYSE rungs split per-type; `surface`/`apply` are
66
+ * type-agnostic transitions; `no-op` is the calm-at-rest result; and
67
+ * `invariant-violation` is the explicit refusal an inconsistent input yields.
68
+ */
69
+ export type TickRungKind =
70
+ /** A ready task → build it (later: invoke the `do <slug>` machinery). */
71
+ 'build-task'
72
+ /** A ready spec → task it (later: invoke the `do spec:<slug>` machinery). */
73
+ | 'task-spec'
74
+ /** An untriaged observation → triage it (auto-disposition or surface a question). */
75
+ | 'triage-observation'
76
+ /** `needsAnswers` but NO sidecar yet → first-pass question generation. */
77
+ | 'surface'
78
+ /** A sidecar with EVERY entry answered → apply the answers + advance. */
79
+ | 'apply'
80
+ /** Nothing to do: a PENDING sidecar (awaiting human) or nothing eligible. */
81
+ | 'no-op'
82
+ /** The `needsAnswers:false ⟺ no active sidecar` invariant is broken. */
83
+ | 'invariant-violation';
84
+ /**
85
+ * The classifier's verdict: the rung kind, the item type it was classified for,
86
+ * and a short machine-stable `reason` tag for the NO-OP / refusal cases (so a
87
+ * caller — or a test — can distinguish "pending sidecar" from "nothing eligible"
88
+ * without re-deriving the signals).
89
+ */
90
+ export interface TickClassification {
91
+ kind: TickRungKind;
92
+ type: SidecarType;
93
+ /**
94
+ * A machine-stable tag explaining a `no-op` / `invariant-violation`:
95
+ * - `pending-sidecar` — an active sidecar still has unanswered entries.
96
+ * - `needsAnswers-without-sidecar` — `needsAnswers:true` but no sidecar AND
97
+ * this should have surfaced (kept for completeness; `surface` covers the
98
+ * normal first pass, so this only appears on the refusal path below).
99
+ * - `sidecar-without-needsAnswers` — a sidecar exists but `needsAnswers` is
100
+ * not `true` (invariant 1 broken — the flag and the sidecar disagree).
101
+ * `undefined` for the ANALYSE rungs and `apply`/`surface`.
102
+ */
103
+ reason?: 'pending-sidecar' | 'needsAnswers-without-sidecar' | 'sidecar-without-needsAnswers';
104
+ }
105
+ /**
106
+ * Classify ONE tick PURELY from the item's two signals + its type — read-only,
107
+ * no model, no lock, no file mutation. Returns the classified rung the executor
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:
110
+ *
111
+ * - `needsAnswers` NOT true:
112
+ * - a sidecar present ⇒ INVARIANT 1 BROKEN (`sidecar-without-needsAnswers`)
113
+ * → `invariant-violation`. (`needsAnswers:false ⟺ no active sidecar`.)
114
+ * - no sidecar ⇒ ANALYSE: the per-type rung (`build-task` / `task-spec` /
115
+ * `triage-observation`).
116
+ * - `needsAnswers` true:
117
+ * - NO sidecar ⇒ `surface` (first-pass question generation — transitional).
118
+ * - a PENDING sidecar (a subset/none answered) ⇒ `no-op` (`pending-sidecar`)
119
+ * — the clean NO-OP that keeps a `run` daemon from spinning hot; a SUBSET
120
+ * of answered entries SKIPS here too.
121
+ * - an ALL-ANSWERED sidecar ⇒ `apply` (apply the answers + advance; the
122
+ * executor may append new Qs and re-pause, or resolve fully).
123
+ */
124
+ export declare function classifyTick(item: TickItem): TickClassification;
125
+ /**
126
+ * Is this classified rung a CLASSIFIED-NO-OP (the calm-at-rest result)? A small
127
+ * predicate the loop/convergence tests use to assert "the candidate pool is
128
+ * STABLE" — a `no-op` OR an `invariant-violation` is NOT an advanceable rung. The
129
+ * ANALYSE rungs + `surface` + `apply` ARE advanceable.
130
+ */
131
+ export declare function isAdvanceable(classification: TickClassification): boolean;
132
+ //# sourceMappingURL=advance-classify.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * The pure `advance` TICK classifier (prd `advance-loop`, task
3
+ * `advance-tick-classifier`) — the substrate-agnostic, read-only seam BOTH the
4
+ * one-shot driver and the loop (`run`) driver wrap. Mirrors the existing pure
5
+ * `categorise.ts` / `eligibility.ts` seams: NO model, NO lock, NO file mutation
6
+ * — it returns WHICH rung on WHICH item from EXACTLY two signals plus the item
7
+ * type, and nothing executes here (the rung EXECUTION is later tasks).
8
+ *
9
+ * The two signals (and ONLY these two):
10
+ * 1. the item's `needsAnswers` flag (from `frontmatter.ts`); and
11
+ * 2. the sidecar's ANSWERED-STATE (from the `advance-sidecar-contract`
12
+ * keystone: {@link allAnswered} / {@link pendingEntries} over the entries).
13
+ *
14
+ * The per-item state machine (the deterministic trigger — two signals only):
15
+ *
16
+ * needsAnswers: true?
17
+ * ├─ NO → ANALYSE (state-appropriate rung: build a ready task / task a ready
18
+ * │ prd / triage an untriaged observation). Analysis MAY advance, OR
19
+ * │ SURFACE questions.
20
+ * └─ YES → sidecar exists?
21
+ * ├─ NO → ANALYSE (first pass: generate questions → write the sidecar)
22
+ * │ [transitional — surfacing normally writes the sidecar atomically]
23
+ * └─ YES → all entries answered?
24
+ * ├─ YES → ANALYSE: apply the answers + advance.
25
+ * └─ NO → NO-OP (awaiting human).
26
+ *
27
+ * Two invariants this classifier (and the downstream that executes the rung)
28
+ * MUST preserve:
29
+ * 1. `needsAnswers:false ⟺ NO active sidecar` (clear-flag and delete-sidecar are
30
+ * the SAME atomic step — enforced in `advance-sidecar-contract`'s
31
+ * `applyAtomic`, asserted HERE at the classifier boundary). A
32
+ * contradictory input (one set without the other) is the only state the
33
+ * classifier REFUSES to classify into an ANALYSE/NO-OP rung — it returns the
34
+ * explicit `invariant-violation` kind so a caller can route it rather than
35
+ * silently mis-advance.
36
+ * 2. A PENDING (not-all-answered) sidecar makes the tick a clean NO-OP (so a
37
+ * `run` daemon never spins hot re-surfacing the same question). A SUBSET of
38
+ * answered entries is still pending ⇒ SKIP (NO-OP).
39
+ *
40
+ * "ANALYSE" is NOT "always advance" — surface-and-pause is itself a rung, so the
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),
43
+ * `task-spec` (spec), `triage-observation` (observation) when there are no open
44
+ * questions; `surface` (first-pass question generation) when `needsAnswers` but
45
+ * no sidecar yet; `apply` when all entries are answered.
46
+ */
47
+ import { allAnswered } from './sidecar.js';
48
+ /** The per-TYPE ANALYSE rung when there are no open questions (the no-gate path). */
49
+ const ANALYSE_RUNG_FOR_TYPE = {
50
+ task: 'build-task',
51
+ // A `spec` analyses through the `task-spec` rung (spec IS the parent-spec
52
+ // artifact tasked into build tasks).
53
+ spec: 'task-spec',
54
+ observation: 'triage-observation',
55
+ };
56
+ /**
57
+ * Classify ONE tick PURELY from the item's two signals + its type — read-only,
58
+ * no model, no lock, no file mutation. Returns the classified rung the executor
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:
61
+ *
62
+ * - `needsAnswers` NOT true:
63
+ * - a sidecar present ⇒ INVARIANT 1 BROKEN (`sidecar-without-needsAnswers`)
64
+ * → `invariant-violation`. (`needsAnswers:false ⟺ no active sidecar`.)
65
+ * - no sidecar ⇒ ANALYSE: the per-type rung (`build-task` / `task-spec` /
66
+ * `triage-observation`).
67
+ * - `needsAnswers` true:
68
+ * - NO sidecar ⇒ `surface` (first-pass question generation — transitional).
69
+ * - a PENDING sidecar (a subset/none answered) ⇒ `no-op` (`pending-sidecar`)
70
+ * — the clean NO-OP that keeps a `run` daemon from spinning hot; a SUBSET
71
+ * of answered entries SKIPS here too.
72
+ * - an ALL-ANSWERED sidecar ⇒ `apply` (apply the answers + advance; the
73
+ * executor may append new Qs and re-pause, or resolve fully).
74
+ */
75
+ export function classifyTick(item) {
76
+ const { type, needsAnswers, sidecar } = item;
77
+ const gated = needsAnswers === true;
78
+ if (!gated) {
79
+ // Invariant 1: `needsAnswers:false ⟺ no active sidecar`. A sidecar present
80
+ // here means the flag and the sidecar DISAGREE — refuse rather than
81
+ // silently advance past an open question the flag forgot to declare.
82
+ if (sidecar !== undefined) {
83
+ return {
84
+ kind: 'invariant-violation',
85
+ type,
86
+ reason: 'sidecar-without-needsAnswers',
87
+ };
88
+ }
89
+ // ANALYSE: the per-type lifecycle rung (read-only classification only).
90
+ return { kind: ANALYSE_RUNG_FOR_TYPE[type], type };
91
+ }
92
+ // `needsAnswers` is true.
93
+ if (sidecar === undefined) {
94
+ // First pass: no sidecar yet → surface the questions (write it). This is the
95
+ // transitional cell — surfacing normally writes the sidecar atomically, so a
96
+ // gated item without a sidecar is the moment to generate questions.
97
+ return { kind: 'surface', type };
98
+ }
99
+ // A sidecar exists: the two signals AGREE (invariant 1 holds). The answered-
100
+ // state — derived from the ENTRIES, never the frontmatter mirror — decides.
101
+ if (allAnswered(sidecar)) {
102
+ // Every entry answered → apply + advance (the executor may re-pause).
103
+ return { kind: 'apply', type };
104
+ }
105
+ // A PENDING sidecar (a SUBSET answered, or none) ⇒ clean NO-OP. This is the
106
+ // invariant-2 cell: the loop never thrashes on a half-answered item; it idles
107
+ // until the human answers the rest (equivalent to `pendingEntries.length > 0`).
108
+ return { kind: 'no-op', type, reason: 'pending-sidecar' };
109
+ }
110
+ /**
111
+ * Is this classified rung a CLASSIFIED-NO-OP (the calm-at-rest result)? A small
112
+ * predicate the loop/convergence tests use to assert "the candidate pool is
113
+ * STABLE" — a `no-op` OR an `invariant-violation` is NOT an advanceable rung. The
114
+ * ANALYSE rungs + `surface` + `apply` ARE advanceable.
115
+ */
116
+ export function isAdvanceable(classification) {
117
+ return (classification.kind !== 'no-op' &&
118
+ classification.kind !== 'invariant-violation');
119
+ }
120
+ //# sourceMappingURL=advance-classify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advance-classify.js","sourceRoot":"","sources":["../src/advance-classify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAGH,OAAO,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AAqEzC,qFAAqF;AACrF,MAAM,qBAAqB,GAAsC;IAChE,IAAI,EAAE,YAAY;IAClB,0EAA0E;IAC1E,qCAAqC;IACrC,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,oBAAoB;CACjC,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,YAAY,CAAC,IAAc;IAC1C,MAAM,EAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAC,GAAG,IAAI,CAAC;IAC3C,MAAM,KAAK,GAAG,YAAY,KAAK,IAAI,CAAC;IAEpC,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,2EAA2E;QAC3E,oEAAoE;QACpE,qEAAqE;QACrE,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO;gBACN,IAAI,EAAE,qBAAqB;gBAC3B,IAAI;gBACJ,MAAM,EAAE,8BAA8B;aACtC,CAAC;QACH,CAAC;QACD,wEAAwE;QACxE,OAAO,EAAC,IAAI,EAAE,qBAAqB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAC,CAAC;IAClD,CAAC;IAED,0BAA0B;IAC1B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC3B,6EAA6E;QAC7E,6EAA6E;QAC7E,oEAAoE;QACpE,OAAO,EAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAC,CAAC;IAChC,CAAC;IAED,6EAA6E;IAC7E,4EAA4E;IAC5E,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,sEAAsE;QACtE,OAAO,EAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;IAC9B,CAAC;IAED,4EAA4E;IAC5E,8EAA8E;IAC9E,gFAAgF;IAChF,OAAO,EAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAC,CAAC;AACzD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,cAAkC;IAC/D,OAAO,CACN,cAAc,CAAC,IAAI,KAAK,OAAO;QAC/B,cAAc,CAAC,IAAI,KAAK,qBAAqB,CAC7C,CAAC;AACH,CAAC"}
@@ -0,0 +1,182 @@
1
+ import { type AdvanceContext, type AdvanceResult, type AdvanceExitCode, type AdvanceOutcome } from './advance.js';
2
+ import { type LedgerReadStrategy } from './ledger-read.js';
3
+ import type { LifecyclePoolGates } from './lifecycle-pools.js';
4
+ import type { Config } from './config.js';
5
+ import type { ConfigOverrideMap } from './config-override.js';
6
+ /**
7
+ * The **`advance` one-shot DRIVER** (prd `advance-loop`, task
8
+ * `advance-drivers-and-gates`, US #2/7/23/25/26) — the SEQUENTIAL driver that
9
+ * WRAPS the substrate-agnostic advance TICK ({@link performAdvance}) over named
10
+ * item(s) or the bare eligible-SET form. It is the in-place counterpart of
11
+ * `do-autopick`'s {@link performDoAuto}/{@link performDoArgs}: it SELECTS +
12
+ * ORDERS items and runs the EXISTING tick per item, SEQUENTIALLY.
13
+ *
14
+ * **One substrate-agnostic TICK, two drivers (US #7).** The tick (classify →
15
+ * lock → execute, already built in {@link performAdvance}) is the shared
16
+ * contract. The TWO drivers wrap it:
17
+ *
18
+ * - the **one-shot driver** (this module) — human `advance`-style or a CI
19
+ * invocation: runs the tick over named item(s) / the eligible set
20
+ * SEQUENTIALLY (`advance` is sequential, exactly like `do`);
21
+ * - the **loop driver** (`run`, `run.ts`) — loops the tick over the eligible
22
+ * set with genuine parallelism, each item lock-guarded by the `advancing`
23
+ * borrow (already in {@link performAdvance}). `run` ≡ CI (same tick, different
24
+ * substrate); NO new execution model is introduced.
25
+ *
26
+ * **`-n x` is ALWAYS SEQUENTIAL (US #25)** — a dumb "run the tick N times" loop,
27
+ * for BOTH `do -n` ({@link performDoAuto}) and `advance -n` (here). Parallelism is
28
+ * NEVER a property of `-n`; it comes only from `run` (the concurrent loop) or the
29
+ * CI matrix.
30
+ *
31
+ * **The FLAT per-action gate family (US #23)** falls out of the SELECTION layer,
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
34
+ * is a policy on the autonomous-SELECTION step, NOT on the explicit verb a human
35
+ * typed — an explicitly-NAMED `advance <slug>` builds regardless, mirroring
36
+ * `do <task>` vs `autoBuild`). SURFACE + APPLY are ALWAYS allowed — they run
37
+ * through the tick on any named item and are never pool-gated, so a repo with
38
+ * EVERY flag off still gets the QUESTION LOOP (surface + apply) but no autonomous
39
+ * build/task in the bare/`-n` selection ("question loop with zero autonomy").
40
+ * The triage rung's ask-vs-auto distinction (`observationTriage`) is read inside
41
+ * the tick; its SELECTION-layer `off` gate drops the observation pool here.
42
+ *
43
+ * **Isolation + chaining FALL OUT (US #26):** this driver builds NO new isolation
44
+ * or chaining machinery — it threads the SAME `AdvanceContext` the tick already
45
+ * consumes (which orchestrates `do`/`do prd:` through the isolation-strategy seam
46
+ * and rebase-before-integrate); a chain conflict routes to needs-attention as
47
+ * today, inside the orchestrated `do`.
48
+ */
49
+ /** The single-`advance` tick runner this driver drives per selected item. */
50
+ export type AdvanceTickRunner = (options: AdvanceTickOptions) => Promise<AdvanceResult>;
51
+ /** The per-item tick options: the run context + the one resolved arg. */
52
+ export interface AdvanceTickOptions extends AdvanceContext {
53
+ arg: string;
54
+ read?: LedgerReadStrategy;
55
+ }
56
+ /** Options shared with every per-item tick run, threaded verbatim. */
57
+ type SharedAdvanceContext = AdvanceContext;
58
+ export interface PerformAdvanceMultiOptions extends SharedAdvanceContext {
59
+ /**
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
62
+ * `selectionOrder` (the configurable cross-pool order). The per-action gate
63
+ * family is APPLIED HERE, at the selection layer (the policy-on-autonomous-
64
+ * selection point).
65
+ */
66
+ config: Config;
67
+ /**
68
+ * The per-machine {@link ConfigOverrideMap}. Threaded into the in-place pool
69
+ * scan (`scanRepoPaths`) so the per-machine override applies to advance
70
+ * autopick eligibility — WITHOUT it the committed `.dorfl.json` silently
71
+ * beats the override on this path (the in-place advance autopick mirror of the
72
+ * `do` autopick defect).
73
+ */
74
+ override?: ConfigOverrideMap;
75
+ /**
76
+ * `advance -n <x>`: how many eligible items to advance, IN SEQUENCE. Bare
77
+ * `advance` (no arg, no count) ⇒ 1. SEQUENTIAL — never a parallelism knob
78
+ * (US #25; parallelism is `run` or the CI matrix).
79
+ */
80
+ count?: number;
81
+ /** Override the single-tick runner (tests inject a stub). Defaults to {@link performAdvance}. */
82
+ run?: AdvanceTickRunner;
83
+ /** Override the read seam (prd pool); defaults to the active {@link ledgerRead}. */
84
+ read?: LedgerReadStrategy;
85
+ /**
86
+ * The LIFECYCLE-POOL create-gates (task `advance-autopick-lifecycle-pools`),
87
+ * the internal hook the gate tasks (`observation-triage-tri-state-gate` /
88
+ * `surface-blockers-gate`) will wire to the `observationTriage` /
89
+ * `surfaceBlockers` config read. INTERIM, born OFF: omitted ⇒ BOTH create-gates
90
+ * OFF, so the triage + surface sub-pools contribute NOTHING and a bare/`-n`
91
+ * `advance` auto-triages / auto-surfaces nothing (it changes no repo's
92
+ * behaviour). The apply sub-pool is NOT gated (consume is always-on), so an
93
+ * answered sidecar applies regardless. Tests FORCE the create-gates on through
94
+ * this same hook to exercise the triage/surface paths.
95
+ */
96
+ lifecycleGates?: LifecyclePoolGates;
97
+ }
98
+ /** The aggregate result of a multi-item `advance` invocation. */
99
+ export interface AdvanceMultiResult {
100
+ /** Each per-item {@link AdvanceResult}, in the order they ran. */
101
+ results: AdvanceResult[];
102
+ /**
103
+ * The process exit code for the whole invocation: 0 iff EVERY item that ran
104
+ * succeeded (or there was nothing eligible — an empty bare `advance` is not a
105
+ * failure); otherwise the first non-zero per-item exit code (the worst outcome
106
+ * surfaces). Mirrors `do`'s multi-item exit contract.
107
+ */
108
+ exitCode: AdvanceExitCode;
109
+ /** Human-readable summary (printed by the CLI). */
110
+ message: string;
111
+ }
112
+ /**
113
+ * Run the BARE / `-n <x>` form: build the two ELIGIBLE pools for `cwd` (eligible
114
+ * TASKS gated by `autoBuild`, taskable prds gated by `autoTask`), order them
115
+ * (plus the lifecycle pools) per the resolved `selectionOrder` with `apply`
116
+ * pinned first, take `count` (default 1), and run the EXISTING advance tick per
117
+ * selected item, SEQUENTIALLY. The pools are the EXACT
118
+ * `do-autopick` pools (the SAME `scoreItems`/`taskableSpecs` predicates), so the
119
+ * per-action gate family is honoured by construction.
120
+ *
121
+ * The bare/`-n` selection draws ONLY from the autonomous pools (eligible tasks +
122
+ * taskable prds); SURFACE + APPLY of a gated item are reached by NAMING the item
123
+ * ({@link performAdvanceArgs}) — they are always-allowed and not pool-gated, so the
124
+ * bare form with every flag off correctly selects NOTHING (zero autonomy) while a
125
+ * named `advance <slug>` still surfaces/applies.
126
+ */
127
+ export declare function performAdvanceAuto(options: PerformAdvanceMultiOptions): Promise<AdvanceMultiResult>;
128
+ /**
129
+ * Run the EXPLICIT multi-arg form (`advance <a> <b> …`): the named items in the
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
133
+ * collision errors), SEQUENTIALLY. A NAMED item is the always-allowed path — its
134
+ * surface/apply rung runs regardless of the per-action gates.
135
+ */
136
+ export declare function performAdvanceArgs(args: string[], options: PerformAdvanceMultiOptions): Promise<AdvanceMultiResult>;
137
+ /**
138
+ * Run ONE in-place advance tick + ff-push a tree-less rung's result to the
139
+ * arbiter — task `advance-in-place-publishes-treeless-results`. Wraps the
140
+ * substrate-agnostic tick ({@link AdvanceTickRunner}) with the shared
141
+ * {@link pushTreelessResult} so a surfaced sidecar / `triaged:` marker /
142
+ * applied-answer commit committed LOCALLY in the in-place cwd LANDS on the
143
+ * arbiter's `main` (today the in-place tick commits locally and the work is lost
144
+ * on an ephemeral CI runner). Mirrors the `--isolated` one-shot + `run` loop
145
+ * driver call sites byte-for-byte:
146
+ *
147
+ * - gates PURELY on `result.exitCode === 0 && TREELESS_RUNGS.has(result.rung)
148
+ * && context.arbiter !== undefined` — the SAME gate the existing drivers
149
+ * use, no cleverer guard (a build/task rung integrates through the
150
+ * `doDriver` band; a no-arbiter laptop checkout already sits on the real
151
+ * `main`);
152
+ * - reuses `pushTreelessResult` VERBATIM (its bounded re-fetch+rebase retry is
153
+ * LOAD-BEARING for a sequential `-n` batch that integrates a build/task rung
154
+ * mid-batch and then runs a later tree-less rung whose `HEAD:main` push is
155
+ * non-fast-forward by construction);
156
+ * - NEVER `--force`. A push that keeps failing (or a genuine rebase conflict)
157
+ * is REPORTED via the `note` sink and does NOT crash the tick — the work
158
+ * stays committed in the cwd for the next pass / a human.
159
+ *
160
+ * Used by BOTH in-place entry points: {@link runSelectedInSequence} (the
161
+ * multi-item `-n` / auto-pick / multi-arg path) AND the CLI single-named-item
162
+ * path (which calls {@link performAdvance} directly, bypassing the sequence
163
+ * runner — the easy-to-miss site).
164
+ *
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`)
167
+ * runs `promoteObservation`'s OWN arbiter CAS and commits NOTHING tree-less, so the
168
+ * ff-push here is a harmless no-op (a `HEAD` with nothing new) — it does NOT
169
+ * double-publish nor clobber the promote CAS.
170
+ */
171
+ export declare function runAdvanceTickWithTreelessPublish(options: AdvanceTickOptions, run: AdvanceTickRunner): Promise<AdvanceResult>;
172
+ /**
173
+ * Is this aggregate result a CALM-AT-REST (US #31 convergence) one — every item
174
+ * that ran was a NO-OP (a pending sidecar idling) AND nothing failed? The
175
+ * convergence/drain tests use this to assert the loop IDLES when there are no
176
+ * answers (no thrash) and DRAINS monotonically as answers arrive. A pool of
177
+ * pending-sidecar items advances NOTHING (every tick a clean no-op); as the human
178
+ * answers, the answered items flip to `apply` and the no-op count shrinks.
179
+ */
180
+ export declare function isCalmAtRest(result: AdvanceMultiResult): boolean;
181
+ export type { AdvanceOutcome };
182
+ //# sourceMappingURL=advance-drivers.d.ts.map
@@ -0,0 +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"}