dorfl 0.0.0 → 0.1.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 (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 +3094 -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 +215 -0
  162. package/dist/frontmatter.d.ts.map +1 -0
  163. package/dist/frontmatter.js +345 -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 +315 -0
  330. package/dist/prd-to-spec.d.ts.map +1 -0
  331. package/dist/prd-to-spec.js +684 -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 +360 -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 +952 -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 +4369 -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 +485 -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 +1023 -0
  581. package/src/prepare.ts +230 -0
  582. package/src/prompt.ts +760 -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 +1438 -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,449 @@
1
+ /**
2
+ * The `install-ci` ISSUE-INTAKE capability (prd `runner-in-ci`, task
3
+ * `install-ci-intake-trigger-and-review-surface`; capability D: consider incoming
4
+ * issues → task/prd, AND insertion point E: surface the review verdict back into
5
+ * the issue thread). This module GENERATES the one fixed intake workflow file and
6
+ * STRUCTURALLY VALIDATES it, mirroring the snapshot-assertion style of
7
+ * `advance-lifecycle-template.ts` / `advance-ci-template.ts` (the package depends on
8
+ * NO YAML lib, so the checks are presence/shape assertions over the raw text). It
9
+ * ALSO carries the PURE author-trust → per-outcome-flags DERIVATION
10
+ * ({@link deriveIntakeFlags}) — CI's merge-vs-propose POLICY, the load-bearing
11
+ * testable logic the workflow encodes at runtime.
12
+ *
13
+ * SCOPE FENCE (prd Out-of-Scope): the issue→artifact TRANSFORM engine is
14
+ * `issue-intake`'s (`intake <N>` + its four-outcome dispatch + the per-outcome
15
+ * KNOBS + the lone-task review that posts to the issue thread). CI only
16
+ * WIRES/SCHEDULES/INVOKES it and owns the merge-vs-propose POLICY + the delivery
17
+ * surface. This module emits NO transform; it emits the WORKFLOW that calls it.
18
+ *
19
+ * The discipline (prd capability-D row + the merge-vs-propose POLICY + the two
20
+ * RESOLVED design decisions in the task):
21
+ *
22
+ * - TRIGGERS: `issues` opened, `issue_comment` created, and a label
23
+ * (`dorfl:intake`). It invokes `intake <N>` (EXPLICIT, four-outcome
24
+ * dispatch) — never a bare slug.
25
+ * - EVENT→`IntakeEventKind` MAPPING (Decision 2: no edit-detection): only a
26
+ * CREATED `issue_comment` (and an opened issue / the label) drives
27
+ * (re-)evaluation; an EDITED comment is NOT a trigger (the ID-based
28
+ * `seen=<ids>` watermark suffices). The "post a NEW comment to signal an edit"
29
+ * convention is documented in the workflow so a human knows to re-trigger.
30
+ * - AUTHOR-TRUST → per-outcome FLAGS (Decision 1, {@link deriveIntakeFlags}): an
31
+ * UNTRUSTED author (`author_association` not in OWNER/MEMBER/COLLABORATOR)
32
+ * forces `--propose-task` REGARDLESS of the `autoBuild` gate, while
33
+ * `--merge-spec` stays allowed (a human still tasks a spec before anything
34
+ * autonomous acts — the checkpoint is intact). A TRUSTED author gets the plain
35
+ * gate-derived mode for both. The fully-gateless "all gates on + merge
36
+ * everywhere" path is a LOUD, NON-DEFAULT opt-in — the default is conservative
37
+ * (propose / human-in-the-loop).
38
+ * - INSERTION POINT E (the issue-thread review surface): the review verdict over
39
+ * intake's generated prds/tasks is surfaced into the ISSUE THREAD via the
40
+ * `IssueProvider.postIssueComment` seam (issue thread, by NUMBER — NOT the PR
41
+ * seam `postPRComment`, which is keyed by url). This is REUSED, not new:
42
+ * `intake <N>` already runs the lone-task review/edit loop and posts its
43
+ * findings as questions through `postIssueComment`. The workflow surfaces E by
44
+ * INVOKING `intake`; it adds no second review mechanism.
45
+ * - CI runs IN-PLACE (the CI container IS the isolation): no
46
+ * `--isolated`/`--remote`/registry. A PER-ISSUE concurrency group serialises
47
+ * overlapping ticks on the SAME issue; the `processing` lock / claim CAS is the
48
+ * real cross-run serialiser.
49
+ * - The running CI job NEVER edits `.github/workflows/**` (US #9): it requests NO
50
+ * `workflows` permission and cannot rewrite its own triggers. It needs
51
+ * `contents: write` + `pull-requests: write` (emit/propose the artifact) +
52
+ * `issues: write` (post the clarifying/review comment back).
53
+ *
54
+ * The structural validator is the dependency-free counterpart of "the workflow
55
+ * parses + carries the right discipline" the task's acceptance criteria require;
56
+ * the test generates this artifact under `--fake` and asserts every invariant.
57
+ */
58
+ import { brand } from './brand.js';
59
+ import { providerSecretsWithBlock } from './install-ci-core.js';
60
+ /** The capability id (the registry key + the emitted workflow file stem). */
61
+ export const INTAKE_TRIGGER_CAPABILITY_ID = 'intake';
62
+ /** The wizard-facing label for the issue-intake capability. */
63
+ export const INTAKE_TRIGGER_CAPABILITY_LABEL = 'Consider incoming issues → task/prd + surface the review verdict into the issue thread (the intake trigger: issues / issue_comment / label)';
64
+ /** The repo-relative path (under the output base) of the emitted workflow. */
65
+ export const INTAKE_TRIGGER_WORKFLOW_PATH = 'workflows/intake.yml';
66
+ /**
67
+ * The intake-trigger LABEL: a label whose addition (re-)triggers intake on an
68
+ * issue (the "label" trigger of capability D), brand-namespaced exactly like the
69
+ * `processing` lock so it cannot collide with a user's own labels. DISTINCT from
70
+ * the transient `processing` lock — this one is a human-facing "please (re-)intake
71
+ * this" signal, not a concurrency mutex.
72
+ */
73
+ export const INTAKE_TRIGGER_LABEL = `${brand.base}:intake`;
74
+ // ─── The AUTHOR-TRUST → per-outcome-flags DERIVATION (CI's POLICY) ────────────
75
+ /**
76
+ * The trusted `author_association` values (Decision 1): a repo OWNER, an org
77
+ * MEMBER, or a write-COLLABORATOR is TRUSTED; everyone else
78
+ * (`CONTRIBUTOR`/`FIRST_TIME_CONTRIBUTOR`/`FIRST_TIMER`/`NONE`/anything unknown)
79
+ * is UNTRUSTED. This is the WHOLE author-trust signal — admin/write-collaborator,
80
+ * read straight off the event payload, no extra API call, no multi-factor matrix.
81
+ */
82
+ export const TRUSTED_AUTHOR_ASSOCIATIONS = [
83
+ 'OWNER',
84
+ 'MEMBER',
85
+ 'COLLABORATOR',
86
+ ];
87
+ /**
88
+ * DERIVE the per-outcome merge-vs-propose flags from the gate state COMPOSED with
89
+ * author-trust — CI's merge-vs-propose POLICY (prd "merge-vs-propose POLICY" +
90
+ * "Composed with AUTHOR-TRUST"; task Decision 1). This is the load-bearing pure
91
+ * logic the workflow encodes at runtime (it reads `author_association` off the
92
+ * event payload and sets the flags accordingly):
93
+ *
94
+ * - **SPEC** — gate-derived ONLY (author-trust does NOT bite): `--merge-spec` iff
95
+ * `autoTask` is OFF (a human must task the spec before anything autonomous
96
+ * acts on it — the human checkpoint stays AHEAD even for an untrusted author),
97
+ * else `--propose-spec`.
98
+ * - **TASK** — `--propose-task` iff (`autoBuild` ON) OR (author UNTRUSTED);
99
+ * `--merge-task` ONLY iff (`autoBuild` OFF AND author TRUSTED). An untrusted
100
+ * author can never auto-merge a task from a public-front-door issue.
101
+ *
102
+ * So the only way to `--merge-task` is a TRUSTED author with `autoBuild` OFF —
103
+ * and the fully-gateless "merge everything" path additionally needs `autoTask`
104
+ * OFF; both gates off + a trusted author is the LOUD, NON-DEFAULT opt-in. The
105
+ * conservative case (untrusted author, or any gate on) keeps a human in the loop.
106
+ */
107
+ export function deriveIntakeFlags(options) {
108
+ const { gate, authorTrusted } = options;
109
+ // SPEC: gate-derived only — a human-tasks-it checkpoint stays ahead regardless
110
+ // of author-trust, so an untrusted author may still --merge-spec.
111
+ const spec = gate.autoTask ? 'propose' : 'merge';
112
+ // TASK: propose if the agent will auto-build it (gate ON) OR the author is
113
+ // untrusted; merge ONLY when both are safe (gate OFF AND author trusted).
114
+ const task = gate.autoBuild || !authorTrusted ? 'propose' : 'merge';
115
+ // ORIGIN-TRUST stamp (task `untrusted-origin-forces-build-propose`): the SAME
116
+ // author-trust verdict, collapsed to the wire value `intake` stamps onto the
117
+ // emitted artifact. Derived HERE — next to the integration flags, off the SAME
118
+ // `authorTrusted` input — so the stamp and the task/prd modes cannot desync.
119
+ // It is NOT a re-resolution of trust (CI already resolved it); it is the verdict
120
+ // being CARRIED so it survives the prd/task merge boundary (the becomes-code
121
+ // checkpoint is not laundered when the file lands on main).
122
+ const originTrust = authorTrusted
123
+ ? 'trusted'
124
+ : 'untrusted';
125
+ return { spec, task, originTrust };
126
+ }
127
+ /**
128
+ * Classify an `author_association` string into trusted/untrusted (Decision 1). A
129
+ * missing/empty/unknown value is UNTRUSTED (fail-safe: a public front-door defaults
130
+ * to the conservative, human-in-the-loop path). Case-insensitive on the wire value
131
+ * for robustness, though GitHub emits upper-case.
132
+ */
133
+ export function isAuthorTrusted(authorAssociation) {
134
+ if (!authorAssociation) {
135
+ return false;
136
+ }
137
+ const upper = authorAssociation.toUpperCase();
138
+ return TRUSTED_AUTHOR_ASSOCIATIONS.includes(upper);
139
+ }
140
+ // ─── The workflow generator ──────────────────────────────────────────────────
141
+ /**
142
+ * Generate the intake-trigger workflow YAML. Deterministic: the same config
143
+ * produces byte-identical output. The workflow is a FIXED shell (ADR §6: all
144
+ * policy is env/config, so the artifact carries no config-derived policy beyond
145
+ * the env-block scaffolding) — `config` is accepted for parity with the
146
+ * `CapabilityEmitter` seam and future per-config wiring, but the intake-trigger
147
+ * shape itself is config-independent.
148
+ *
149
+ * The per-outcome FLAGS are DERIVED AT RUNTIME by a `bash` step that mirrors
150
+ * {@link deriveIntakeFlags}: it reads the gate env block + the event's
151
+ * `author_association` and sets `--merge-spec`/`--propose-spec` +
152
+ * `--merge-task`/`--propose-task` accordingly. The same rule that
153
+ * {@link deriveIntakeFlags} unit-tests is what the workflow executes — they cannot
154
+ * desync because the test asserts the SHELL derivation matches the function.
155
+ */
156
+ export function generateIntakeWorkflow(config) {
157
+ // `intake <N>` runs the prompt→verdict decision (the agent), so it needs the
158
+ // provider secret(s) forwarded to `$GITHUB_ENV` by the setup action.
159
+ const setupWith = providerSecretsWithBlock(config);
160
+ return `\
161
+ # dorfl — the ISSUE INTAKE trigger in CI (capability D: consider incoming
162
+ # issues → task/prd, PLUS insertion point E: surface the review verdict into the
163
+ # issue thread, prd runner-in-ci). EMITTED by \`dorfl install-ci\`; the human
164
+ # commits it. DO NOT hand-edit a copy — re-run install-ci to upgrade the shell.
165
+ #
166
+ # WHAT IT DOES — \`dorfl intake <N>\` reads issue #N + its comment thread,
167
+ # runs a prompt→verdict decision (ask / task / PRD / bounce), and dispatches it.
168
+ # CI owns ONLY the trigger + the merge-vs-propose POLICY + the delivery surface;
169
+ # the TRANSFORM is the engine's (the Out-of-Scope fence — CI re-implements none of
170
+ # it). The lone-task review/edit loop \`intake\` already runs ALSO surfaces its
171
+ # findings as questions back into THIS issue thread via the issue-comment seam (insertion
172
+ # point E) — REUSED, not a new review mechanism.
173
+ #
174
+ # TRIGGERS (capability D): an OPENED issue, a CREATED issue comment, and the
175
+ # \`${INTAKE_TRIGGER_LABEL}\` label. A CREATED comment is the (re-)evaluation
176
+ # trigger; an EDITED comment is deliberately NOT a trigger (the ID-based
177
+ # \`seen=<ids>\` watermark catches new comments; editing a prior comment never
178
+ # re-triggers). CONVENTION: if you edit a previous comment to answer intake's
179
+ # question, ALSO post a NEW comment noting the edit — the new comment is what drives
180
+ # re-evaluation (a fresh id the watermark catches). There is NO edit-detection /
181
+ # \`updated_at\` / body-hash tracking.
182
+ #
183
+ # AUTHOR-TRUST → per-outcome FLAGS (the merge-vs-propose POLICY): because ANYBODY
184
+ # can file an issue, the merge decision composes with WHO authored it. An UNTRUSTED
185
+ # author (\`author_association\` not OWNER/MEMBER/COLLABORATOR) forces
186
+ # \`--propose-task\` REGARDLESS of the \`autoBuild\` gate — a task from a public
187
+ # front-door issue can never auto-merge — while \`--merge-spec\` stays allowed (a
188
+ # human must still task a spec before anything autonomous acts on it, so the human
189
+ # checkpoint is intact). A TRUSTED author gets the plain gate-derived mode. The
190
+ # fully-gateless "merge everything" path (both gates off + a trusted author) is a
191
+ # LOUD, NON-DEFAULT opt-in; the default is conservative (propose).
192
+ #
193
+ # CI runs IN-PLACE (the CI container IS the isolation): NO --isolated/--remote/
194
+ # registry (laptop-only affordances). The PER-ISSUE concurrency group below
195
+ # serialises overlapping ticks on the SAME issue; the \`processing\` lock / claim
196
+ # CAS is the real cross-run serialiser.
197
+ #
198
+ # SAFETY (US #9): the running job is FORBIDDEN from editing the workflows tree
199
+ # under .github. It requests NO \`workflows\` permission, so it can never rewrite
200
+ # its own triggers.
201
+
202
+ name: intake
203
+
204
+ on:
205
+ issues:
206
+ # An OPENED issue triggers a first intake pass. NOT \`edited\` — a body edit's
207
+ # re-evaluation is the engine's event-model concern (issue-intake); the CI
208
+ # trigger relies on a CREATED comment to drive (re-)evaluation.
209
+ types:
210
+ - opened
211
+ - labeled
212
+ issue_comment:
213
+ # A CREATED comment is the (re-)evaluation trigger (Decision 2). An EDITED
214
+ # comment is NOT listed — editing a prior comment never re-triggers; post a NEW
215
+ # comment to signal an edit (the ID-based seen=<ids> watermark catches it).
216
+ types:
217
+ - created
218
+
219
+ # PER-ISSUE concurrency group: serialise overlapping ticks on the SAME issue (two
220
+ # triggers landing close together must not run intake on one issue twice at once).
221
+ # The \`processing\` lock / claim CAS is the real cross-run serialiser; this just
222
+ # avoids redundant concurrent ticks. Keyed by the issue number so DIFFERENT issues
223
+ # still run in parallel.
224
+ concurrency:
225
+ group: intake-\${{ github.event.issue.number }}
226
+ cancel-in-progress: false
227
+
228
+ # NO \`workflows\` permission: the running job can NEVER edit the workflows tree
229
+ # under .github (US #9). \`contents: write\` + \`pull-requests: write\` emit/propose
230
+ # the artifact; \`issues: write\` posts the clarifying/review comment back into the
231
+ # thread (insertion point E). It never rewrites its triggers.
232
+ permissions:
233
+ contents: write
234
+ pull-requests: write
235
+ issues: write
236
+
237
+ env:
238
+ # ── The engine GATE FAMILY, surfaced as the DORFL_* env block ─────────
239
+ # CI is NOT a special policy surface (ADR ci-config-policy-and-gate-family §5):
240
+ # it runs the SAME engine gates, resolved through flag > env > per-repo > global
241
+ # > default. The SAME .dorfl.json the laptop uses applies here; this env
242
+ # block is the optional CI-only override. Change behaviour by editing these
243
+ # values (or a GitHub repo variable / .dorfl.json key) — NOT by re-running
244
+ # install-ci (ADR §6: install-ci is one-time).
245
+ #
246
+ # \`intake\` itself is GATE-FREE (the explicit invocation is its own
247
+ # authorization), so these gates do NOT block it — CI READS them to DERIVE the
248
+ # per-outcome merge-vs-propose flags below (the merge-vs-propose POLICY). CALM
249
+ # DEFAULTS: both off ⇒ the next step is a HUMAN, so the gate-derived mode is the
250
+ # permissive merge side; author-trust then forces propose for a task from an
251
+ # untrusted author.
252
+ DORFL_AUTO_BUILD: 'false' # gate: will an agent auto-build the emitted task next?
253
+ DORFL_AUTO_TASK: 'false' # gate: will an agent auto-task the emitted prd next?
254
+
255
+ jobs:
256
+ intake:
257
+ # Only run for an issue/comment that actually carries an issue number (a
258
+ # comment on a PR also fires \`issue_comment\`; skip those — there is no issue to
259
+ # intake). \`pull_request\` is absent on a real issue comment.
260
+ if: \${{ github.event.issue.number && !github.event.issue.pull_request }}
261
+ runs-on: ubuntu-latest
262
+ steps:
263
+ - uses: actions/checkout@v4
264
+ with:
265
+ fetch-depth: 0
266
+ - uses: ./.github/actions/dorfl-setup${setupWith}
267
+
268
+ - name: derive the per-outcome merge-vs-propose flags (gate × author-trust)
269
+ id: policy
270
+ # The merge-vs-propose POLICY, executed at runtime — the SAME rule
271
+ # \`deriveIntakeFlags\` unit-tests (they cannot desync; the test asserts this
272
+ # shell matches the function):
273
+ # * SPEC — gate-derived ONLY: --merge-spec iff autoTask OFF (a human
274
+ # tasks it before anything autonomous acts — the checkpoint
275
+ # stays ahead even for an UNTRUSTED author), else --propose-spec.
276
+ # * TASK — --propose-task iff (autoBuild ON) OR (author UNTRUSTED);
277
+ # --merge-task ONLY iff (autoBuild OFF AND author TRUSTED).
278
+ # author_association comes from the COMMENT on an \`issue_comment\` event,
279
+ # else the ISSUE on an \`issues\` event — read straight off the payload, no
280
+ # extra API call.
281
+ env:
282
+ AUTHOR_ASSOCIATION: \${{ github.event.comment.author_association || github.event.issue.author_association }}
283
+ run: |
284
+ set -euo pipefail
285
+
286
+ # SPEC flag: gate-derived only (author-trust does NOT bite a spec).
287
+ if [ "\${DORFL_AUTO_TASK}" = "true" ]; then
288
+ spec_flag="--propose-spec"
289
+ else
290
+ spec_flag="--merge-spec"
291
+ fi
292
+
293
+ # Author-trust: TRUSTED iff OWNER/MEMBER/COLLABORATOR (admin / write-
294
+ # collaborator — the whole signal). Anything else (incl. empty) is
295
+ # UNTRUSTED → the conservative, human-in-the-loop path.
296
+ trusted="false"
297
+ case "\${AUTHOR_ASSOCIATION:-}" in
298
+ OWNER|MEMBER|COLLABORATOR) trusted="true" ;;
299
+ esac
300
+
301
+ # TASK flag: propose if the agent will auto-build it (gate ON) OR the
302
+ # author is untrusted; merge ONLY when both are safe.
303
+ if [ "\${DORFL_AUTO_BUILD}" = "true" ] || [ "\${trusted}" != "true" ]; then
304
+ task_flag="--propose-task"
305
+ else
306
+ task_flag="--merge-task"
307
+ fi
308
+
309
+ # ORIGIN-TRUST stamp (task untrusted-origin-forces-build-propose):
310
+ # derived from the SAME \${trusted} case above (one author-trust read,
311
+ # two consumers — the task/prd modes AND the stamp — so they cannot
312
+ # desync). \`intake\` STAMPS this onto the emitted prd/task frontmatter
313
+ # (origin: issue + originTrust: <value>); it does NOT re-resolve trust
314
+ # (that is CI's policy, passed IN). The stamp SURVIVES the merge boundary
315
+ # so a later auto-task/auto-build of an untrusted-origin artifact still
316
+ # forces a human becomes-code checkpoint (the laundering gap is closed).
317
+ if [ "\${trusted}" = "true" ]; then
318
+ origin_trust_flag="--origin-trust=trusted"
319
+ else
320
+ origin_trust_flag="--origin-trust=untrusted"
321
+ fi
322
+
323
+ echo "spec_flag=\${spec_flag}" >> "\$GITHUB_OUTPUT"
324
+ echo "task_flag=\${task_flag}" >> "\$GITHUB_OUTPUT"
325
+ echo "origin_trust_flag=\${origin_trust_flag}" >> "\$GITHUB_OUTPUT"
326
+ echo "intake policy: author_association='\${AUTHOR_ASSOCIATION:-}' trusted=\${trusted} → \${spec_flag} \${task_flag} \${origin_trust_flag}"
327
+
328
+ - name: intake the issue (four-outcome dispatch; surfaces the review verdict into the thread)
329
+ # In-place in this checkout (no --isolated/--remote): the CI container IS
330
+ # the isolation. EXPLICIT \`intake <N>\`, never a bare slug. The per-outcome
331
+ # flags carry the merge-vs-propose POLICY derived above. \`intake\` runs the
332
+ # lone-task review/edit loop and posts its findings as questions back into
333
+ # THIS issue thread (insertion point E) through the issue-comment seam —
334
+ # CI surfaces E by invoking intake; it adds no new review mechanism.
335
+ env:
336
+ GH_TOKEN: \${{ secrets.GITHUB_TOKEN }}
337
+ run: |
338
+ dorfl intake "\${{ github.event.issue.number }}" \\
339
+ "\${{ steps.policy.outputs.spec_flag }}" \\
340
+ "\${{ steps.policy.outputs.task_flag }}" \\
341
+ "\${{ steps.policy.outputs.origin_trust_flag }}" \\
342
+ --arbiter origin
343
+ `;
344
+ }
345
+ /**
346
+ * Structurally validate the intake-trigger workflow against the task's acceptance
347
+ * criteria. Dependency-free (no YAML lib): presence/shape assertions over the raw
348
+ * text, mirroring {@link validateAdvanceLifecycleWorkflow} /
349
+ * {@link validateCloseJobWorkflow}.
350
+ */
351
+ export function validateIntakeWorkflow(text) {
352
+ const problems = [];
353
+ const require = (id, present, message) => {
354
+ if (!present) {
355
+ problems.push({ id, message });
356
+ }
357
+ };
358
+ // The OPERATIVE (non-comment) lines: the prohibitions below (no `--isolated`/
359
+ // `--remote`/`do`/`pull_request` trigger/`.github/workflows` self-edit/edit
360
+ // trigger) are about what the job DOES, not what the explanatory comments
361
+ // MENTION. Strip full-line `#` comments before the negative checks; the positive
362
+ // presence checks run over the full text (comments are harmless there).
363
+ const operative = text
364
+ .split('\n')
365
+ .filter((line) => !/^\s*#/.test(line))
366
+ .join('\n');
367
+ // --- INVOKES `intake <N>` (explicit, four-outcome dispatch), never bare ------
368
+ require('invokes-intake', /dorfl intake\b/.test(operative), 'must invoke `dorfl intake <N>` (the four-outcome dispatch engine CI ' +
369
+ 'schedules).');
370
+ // The issue number rides the explicit positional — never a bare slug, and the
371
+ // number comes from the event payload (the issue under intake).
372
+ require('intake-explicit-issue-number', /dorfl intake "?\$\{\{\s*github\.event\.issue\.number/.test(operative), 'the intake invocation must pass the explicit issue NUMBER ' +
373
+ '(`github.event.issue.number`), never a bare slug.');
374
+ // CI owns ONLY the trigger/policy/delivery — it must NOT invoke a build/task
375
+ // verb (that is the build/task tick), nor re-implement the transform.
376
+ require('no-build-verbs', !/dorfl (?:do|advance)\b/.test(operative), 'the intake workflow must invoke ONLY `intake` (+ derive the policy), not a ' +
377
+ 'build/task verb — CI owns the trigger + merge policy, not the transform.');
378
+ // --- TRIGGERS: issues opened + issue_comment created + the label ------------
379
+ require('trigger-issues-opened', /\bissues:\s*[\s\S]*?types:\s*[\s\S]*?-\s*opened\b/.test(text), 'must trigger on an OPENED issue (`on.issues.types: [opened]`).');
380
+ require('trigger-issue-comment-created', /\bissue_comment:\s*[\s\S]*?types:\s*[\s\S]*?-\s*created\b/.test(text), 'must trigger on a CREATED issue comment ' +
381
+ '(`on.issue_comment.types: [created]`) — the (re-)evaluation trigger.');
382
+ require('trigger-label', /\bissues:\s*[\s\S]*?types:\s*[\s\S]*?-\s*labeled\b/.test(text), 'must trigger on a label (`on.issues.types: [labeled]`).');
383
+ // --- Decision 2: a CREATED comment triggers; an EDITED comment does NOT ------
384
+ // The `issue_comment` trigger must NOT list `edited` (no edit-detection); and
385
+ // there must be no `updated_at`/body-hash edit-tracking wiring.
386
+ require('no-comment-edited-trigger', !/issue_comment:\s*[\s\S]*?types:\s*[\s\S]*?-\s*edited\b/.test(text), 'the `issue_comment` trigger must NOT include `edited` (Decision 2: no ' +
387
+ 'edit-detection; a CREATED comment is the (re-)evaluation trigger).');
388
+ require('no-edit-tracking', !/updated_at|body-hash|bodyHash/.test(operative), 'must NOT implement `updated_at` / body-hash edit-tracking (Decision 2).');
389
+ // The "post a NEW comment to signal an edit" CONVENTION must be documented in
390
+ // the workflow so a human knows how to re-trigger after editing a comment.
391
+ require('documents-new-comment-convention', /post a NEW comment/i.test(text), 'must DOCUMENT the "post a new comment to signal an edit" convention ' +
392
+ '(Decision 2) so a human knows how to drive re-evaluation.');
393
+ // --- AUTHOR-TRUST → per-outcome flags (Decision 1) --------------------------
394
+ // The workflow must READ author_association off the event payload (no extra API).
395
+ require('reads-author-association', /author_association/.test(text), 'must read `author_association` off the event payload to compose author-' +
396
+ 'trust into the merge-vs-propose policy (Decision 1; no extra API call).');
397
+ // Trust = OWNER/MEMBER/COLLABORATOR (the whole signal).
398
+ require('trust-owner-member-collaborator', /OWNER\|MEMBER\|COLLABORATOR|OWNER[\s\S]{0,40}MEMBER[\s\S]{0,40}COLLABORATOR/.test(text), 'author-trust must be OWNER/MEMBER/COLLABORATOR (admin / write-collaborator ' +
399
+ '— the whole signal; Decision 1).');
400
+ // An untrusted author forces --propose-task; the derivation must emit both
401
+ // task modes (so the untrusted path can reach propose and the trusted-safe
402
+ // path can reach merge).
403
+ require('derives-propose-task', /--propose-task\b/.test(operative), 'the policy derivation must be able to emit `--propose-task` (the ' +
404
+ 'untrusted-author / autoBuild-on fallback).');
405
+ require('derives-merge-task', /--merge-task\b/.test(operative), 'the policy derivation must be able to emit `--merge-task` (the ' +
406
+ 'trusted-author + autoBuild-off path).');
407
+ // --merge-spec stays allowed even for an untrusted author (spec checkpoint ahead).
408
+ require('derives-merge-spec', /--merge-spec\b/.test(operative), 'the policy derivation must be able to emit `--merge-spec` (a spec stays ' +
409
+ 'mergeable even for an untrusted author — the human-tasks-it checkpoint).');
410
+ require('derives-propose-spec', /--propose-spec\b/.test(operative), 'the policy derivation must be able to emit `--propose-spec` (autoTask on).');
411
+ // ORIGIN-TRUST stamp (task untrusted-origin-forces-build-propose): the shell
412
+ // must derive `--origin-trust <trusted|untrusted>` from the SAME author-trust
413
+ // case it uses for the task/PRD modes, and pass it to `intake` so the emitted
414
+ // artifact is stamped (the stamp + the modes cannot desync).
415
+ require('derives-origin-trust-untrusted', /--origin-trust=untrusted\b/.test(operative), 'the policy derivation must emit `--origin-trust=untrusted` for a non-trusted ' +
416
+ 'author (so the emitted artifact is stamped untrusted; task ' +
417
+ 'untrusted-origin-forces-build-propose).');
418
+ require('derives-origin-trust-trusted', /--origin-trust=trusted\b/.test(operative), 'the policy derivation must emit `--origin-trust=trusted` for a trusted author.');
419
+ require('passes-origin-trust-to-intake', /steps\.policy\.outputs\.origin_trust_flag/.test(operative), 'the intake invocation must pass the derived `--origin-trust` flag (the ' +
420
+ 'stamp must reach `dorfl intake`).');
421
+ // The derivation must compose the gate env block (it READS the gates to derive).
422
+ require('reads-auto-build-gate', /DORFL_AUTO_BUILD\b/.test(text), 'the policy derivation must read the `DORFL_AUTO_BUILD` gate.');
423
+ require('reads-auto-task-gate', /DORFL_AUTO_TASK\b/.test(text), 'the policy derivation must read the `DORFL_AUTO_TASK` gate.');
424
+ // --- Insertion point E: the issue-thread review surface ---------------------
425
+ // E is REUSED via `intake` (which runs the lone-task review and posts to the
426
+ // thread). The workflow must request `issues: write` so that comment can land.
427
+ require('issues-write-permission', /\bissues:\s*write\b/.test(operative), 'must request `issues: write` so the review verdict / clarifying question ' +
428
+ 'can be posted back into the issue thread (insertion point E).');
429
+ // It must NOT route the review verdict through the PR-comment seam — E posts to
430
+ // the ISSUE (postIssueComment by number), NOT the PR (postPRComment by url).
431
+ require('no-pr-comment-seam', !/postPRComment\b/.test(operative), 'insertion point E posts to the ISSUE thread (postIssueComment by number), ' +
432
+ 'NOT the PR seam `postPRComment` (by url) — do not use the PR seam.');
433
+ // --- CI runs IN-PLACE: no isolation machinery ------------------------------
434
+ require('no-isolated-flag', !/--isolated\b/.test(operative), 'CI runs IN-PLACE (the container IS the isolation): no `--isolated` flag.');
435
+ require('no-remote-flag', !/--remote(?![-\w])/.test(operative), 'CI runs IN-PLACE: no `--remote` flag (laptop-only affordance).');
436
+ // --- A PER-ISSUE concurrency group ------------------------------------------
437
+ require('concurrency-group', /\bconcurrency:\s*[\s\S]*?group:/.test(text), 'must carry a CI `concurrency.group` so overlapping ticks never collide.');
438
+ require('per-issue-concurrency', /concurrency:\s*[\s\S]*?group:[^\n]*github\.event\.issue\.number/.test(text), 'the concurrency group must be PER-ISSUE (keyed by the issue number) so ' +
439
+ 'different issues still run in parallel.');
440
+ // --- US #9: NO `workflows` permission; cannot self-edit triggers ------------
441
+ require('no-workflows-permission', !/\bworkflows:\s*write\b/.test(text), 'the running job must request NO `workflows` permission (US #9: it can ' +
442
+ 'never edit `.github/workflows/**` / rewrite its own triggers).');
443
+ require('never-edits-dot-github-workflows', !/\.github\/workflows\//.test(operative), 'no emitted job step may touch `.github/workflows/**` (US #9).');
444
+ // --- Wires the SHARED composite setup action -------------------------------
445
+ require('uses-shared-setup-action', /uses:\s*\.\/\.github\/actions\/dorfl-setup\b/.test(text), 'the job must wire the shared composite setup action ' +
446
+ '(`./.github/actions/dorfl-setup`, emitted by the core task).');
447
+ return { ok: problems.length === 0, problems };
448
+ }
449
+ //# sourceMappingURL=intake-trigger-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intake-trigger-template.js","sourceRoot":"","sources":["../src/intake-trigger-template.ts"],"names":[],"mappings":"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"}