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,411 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { runAsync } from './git.js';
3
+ import { Integrator, } from './integrator.js';
4
+ import { routeToNeedsAttention, returnToBacklog, } from './needs-attention.js';
5
+ import { markStuckItemLock, resumeItemLock, } from './item-lock.js';
6
+ // --- The sole strategy: exactly today's behaviour -------------------------
7
+ /** Run git, returning the raw result (no throw) — for soft checks. */
8
+ function gitSoft(args, cwd, env) {
9
+ return runAsync('git', args, cwd, { env });
10
+ }
11
+ /** Run git; throw on non-zero (genuinely unexpected plumbing failures). */
12
+ async function gitHard(args, cwd, env) {
13
+ const result = await runAsync('git', args, cwd, { env });
14
+ if (result.status !== 0) {
15
+ throw new Error(`git ${args.join(' ')} failed (exit ${result.status}): ${result.stderr.trim()}`);
16
+ }
17
+ return result;
18
+ }
19
+ /** The git trailer key the per-attempt CAS nonce rides in (greppable, round-trips). */
20
+ export const CAS_NONCE_TRAILER = 'CAS-Nonce';
21
+ /**
22
+ * Rebuild the transition tip ({@link localBranch}'s commit, whose sha is {@link
23
+ * head}) into a NEW commit object that is byte-for-byte identical EXCEPT for a
24
+ * freshly-appended `CAS-Nonce: <uuid>` trailer, and return the new sha. This is
25
+ * the ONE chokepoint that makes EVERY {@link
26
+ * LedgerWriteStrategy.applyTransition} caller's CAS commit unique — create,
27
+ * claim, tasking-lock, advancing-lock, and the needs-attention/requeue surface
28
+ * all route their publish through `applyTransition`, so stamping HERE (the seam
29
+ * AMENDING the tip's message just before the push) covers all of them WITHOUT a
30
+ * shared commit-building helper and WITHOUT touching each commit site.
31
+ *
32
+ * It is built with `commit-tree` plumbing on the same tree + parent + ambient
33
+ * env identity as the tip, so it NEVER mutates the caller's working tree, index,
34
+ * or HEAD (safe from a job worktree mid-flight), and it preserves WHO/WHAT — it
35
+ * ONLY appends the trailer to the original message. The author/committer
36
+ * identity is pinned from the original commit so the stamp does not silently
37
+ * re-attribute the transition.
38
+ *
39
+ * A FRESH nonce is generated on EACH call — and `applyTransition` calls this once
40
+ * per ATTEMPT (each retry of a caller's outer refetch loop re-enters
41
+ * `applyTransition`), so two concurrent same-identity racers, and any single
42
+ * racer across its own retries, ALWAYS get distinct shas.
43
+ */
44
+ async function stampNonce(params) {
45
+ const { localBranch, head, cwd, env } = params;
46
+ const nonce = randomUUID();
47
+ // Read the tip's tree + parents + author/committer identity + original message
48
+ // in ONE `git log` (one git subprocess, not four) — the body (%B, multi-line)
49
+ // MUST be last. Fields are NUL-separated (%x00); the trailing field is the raw
50
+ // body so its embedded newlines do not confuse the split.
51
+ const FIELD_SEP = '\u0000';
52
+ const raw = (await gitHard([
53
+ 'log',
54
+ '-1',
55
+ `--format=%T%x00%P%x00%an%x00%ae%x00%aI%x00%cn%x00%ce%x00%B`,
56
+ head,
57
+ ], cwd, env)).stdout;
58
+ const fields = raw.split(FIELD_SEP);
59
+ const tree = (fields[0] ?? '').trim();
60
+ const parents = (fields[1] ?? '')
61
+ .trim()
62
+ .split(/\s+/)
63
+ .filter((p) => p.length > 0); // the tip's parents (usually exactly one)
64
+ const authorName = fields[2] ?? '';
65
+ const authorEmail = fields[3] ?? '';
66
+ const authorDate = fields[4] ?? '';
67
+ const committerName = fields[5] ?? '';
68
+ const committerEmail = fields[6] ?? '';
69
+ // The body is the last field; strip trailing whitespace before we append.
70
+ const message = (fields[7] ?? '').replace(/\s+$/, '');
71
+ // Pin the original author/committer so the stamp re-attributes nothing; we are
72
+ // only appending a trailer to the message.
73
+ const stampEnv = {
74
+ ...(env ?? process.env),
75
+ GIT_AUTHOR_NAME: authorName,
76
+ GIT_AUTHOR_EMAIL: authorEmail,
77
+ GIT_AUTHOR_DATE: authorDate,
78
+ GIT_COMMITTER_NAME: committerName,
79
+ GIT_COMMITTER_EMAIL: committerEmail,
80
+ // Deliberately do NOT pin GIT_COMMITTER_DATE: even two stamps with identical
81
+ // everything-else would still differ by the nonce, but leaving the committer
82
+ // date current is the honest "when this attempt was published".
83
+ };
84
+ // Append the trailer as its own block so it round-trips as a real git trailer.
85
+ const noncedMessage = `${message}\n\n${CAS_NONCE_TRAILER}: ${nonce}\n`;
86
+ const parentArgs = parents.flatMap((p) => ['-p', p]);
87
+ const result = await runAsync('git', ['commit-tree', tree, ...parentArgs, '-m', noncedMessage], cwd, { env: stampEnv });
88
+ if (result.status !== 0) {
89
+ throw new Error(`git commit-tree (CAS nonce stamp) failed (exit ${result.status}): ${result.stderr.trim()} — localBranch=${localBranch}`);
90
+ }
91
+ return result.stdout.trim();
92
+ }
93
+ /**
94
+ * The ONLY ledger-write strategy: current behaviour. It CAS-publishes the
95
+ * prepared transition commit to the arbiter's `main` — the `main` push and the
96
+ * `--force-with-lease=main:<base>` lease live HERE, not in the public input — and
97
+ * verifies the arbiter's `main` is now that commit (guarding against an
98
+ * "Everything up-to-date" push masquerading as a successful transition). A future
99
+ * strategy would be a different object implementing the same interface — chosen
100
+ * NOWHERE today (no mode/config selects it).
101
+ */
102
+ export const currentLedgerWrite = {
103
+ async applyTransition({ arbiter, localBranch, expectedBase, head, cwd, dryRun, env, note, }) {
104
+ const emit = note ?? (() => { });
105
+ if (dryRun) {
106
+ const message = `[dry-run] would: git push ${arbiter} ${localBranch}:main --force-with-lease=main:${expectedBase}`;
107
+ emit(message);
108
+ return { kind: 'published', message };
109
+ }
110
+ // Stamp this ATTEMPT's transition commit with a FRESH random nonce (a real
111
+ // `CAS-Nonce: <uuid>` git trailer) so the pushed sha is UNIQUE per attempt.
112
+ // This is what makes the lease authoritative even for SAME-IDENTITY,
113
+ // SAME-CONTENT racers: without it, two racers who build an identical tree +
114
+ // message off the same base within git's 1-second timestamp resolution
115
+ // produce an IDENTICAL sha X. The first push ff's main to X; the second
116
+ // push of the SAME X degrades to "Everything up-to-date" (git exits 0, the
117
+ // lease has nothing to reject), and the post-push verify X === X passes — so
118
+ // BOTH would return `published`. The nonce gives each attempt a DISTINCT sha,
119
+ // so the loser's push finds main moved past <base> and is GENUINELY rejected
120
+ // by the lease, and the verify below correctly fails for it. The stamp is
121
+ // built with `commit-tree` plumbing (no checkout/HEAD mutation), reusing the
122
+ // tip's tree + parent + author/committer identity — it ONLY appends the
123
+ // trailer, leaving WHO/WHAT/the original message intact. Called per ATTEMPT
124
+ // (each retry of the caller's outer refetch loop re-enters here), so every
125
+ // attempt gets a fresh nonce, not one per process.
126
+ const nonced = await stampNonce({ localBranch, head, cwd, env });
127
+ // The atomic compare-and-swap. --force-with-lease=main:<base> asserts the
128
+ // arbiter's main is STILL <base> (unchanged since our fetch); the push then
129
+ // fast-forwards main to our (nonce'd, thus unique) commit. If main moved, the
130
+ // lease fails → rejected.
131
+ const push = await gitSoft([
132
+ 'push',
133
+ arbiter,
134
+ `${nonced}:main`,
135
+ `--force-with-lease=main:${expectedBase}`,
136
+ ], cwd, env);
137
+ if (push.status === 0) {
138
+ // Verify the arbiter main now points at OUR (nonce'd) commit. INVARIANT:
139
+ // because the nonce makes our sha unique, a successful push can ONLY mean
140
+ // either (a) we genuinely ff'd main to our nonce'd commit (published), or
141
+ // (b) someone else's commit (a DIFFERENT nonce ⇒ a DIFFERENT sha) is already
142
+ // there and ours did NOT land — i.e. an "up-to-date / no change of our
143
+ // making" no-op, which is a LOSS. The nonce makes the two naturally
144
+ // distinguishable: `arbiterHead === nonced` iff WE won. So an up-to-date
145
+ // no-op can never satisfy this and is classified REJECTED, never published.
146
+ await gitHard(['fetch', '--quiet', arbiter], cwd, env);
147
+ const arbiterHead = (await gitHard(['rev-parse', `${arbiter}/main`], cwd, env)).stdout.trim();
148
+ if (arbiterHead === nonced) {
149
+ return {
150
+ kind: 'published',
151
+ message: 'transition published',
152
+ publishedHead: nonced,
153
+ };
154
+ }
155
+ emit(`push reported up-to-date / no change of our making — ${arbiter}/main is not our commit — treating as rejected.`);
156
+ }
157
+ return { kind: 'rejected', message: 'push rejected / lease failed' };
158
+ },
159
+ /**
160
+ * The complete transition under the SAME strategy: integrate the prepared work
161
+ * branch back to the arbiter exactly as `complete.ts` did before — it builds
162
+ * the {@link Integrator} with the chosen provider and calls `integrate` (the
163
+ * branch was already rebased onto the latest arbiter ledger by the caller, so
164
+ * this is the non-rebasing `integrate`, never `--force`). `merge` ff's the
165
+ * branch to the arbiter's `main`; `propose` pushes the branch + asks the
166
+ * provider to request review. That `merge` targets `main` is an implementation
167
+ * detail of THIS strategy — the public input never names it.
168
+ */
169
+ async applyCompleteTransition({ arbiter, branch, mode, provider, noPR, title, body, deleteMergedHead, cwd, env, }) {
170
+ const integrator = new Integrator({ provider });
171
+ return integrator.integrate({
172
+ cwd,
173
+ arbiter,
174
+ branch,
175
+ mode,
176
+ noPR,
177
+ title,
178
+ body,
179
+ deleteMergedHead,
180
+ env,
181
+ });
182
+ },
183
+ /**
184
+ * The needs-attention transition under the SAME strategy. The seam's contract
185
+ * is transition-kind-agnostic: durably record a stuck job =
186
+ *
187
+ * - **OBSERVABLE** — publish the stuck state to the ledger surface so
188
+ * `scan`/`status`/a fresh checkout/another machine can see it. (THIS mode-M
189
+ * strategy does that by CHERRY-PICKING the move-only commit — the reason +
190
+ * the `git mv` — onto the arbiter's `main`, all-or-nothing, never `--force`d,
191
+ * so the half-finished wip below it never lands there. A future mode-P
192
+ * strategy could make it observable WITHOUT writing `main`, e.g. by reading
193
+ * work-branch tips.)
194
+ * - **RECOVERABLE** — push the work branch (when there IS one), so the saved
195
+ * work travels cross-machine and a requeue continues from its tip. (Mode M
196
+ * does that by `git push`ing the branch; the WHICH branch is the caller's,
197
+ * not assumed `work/<slug>` — a build bounce pushes `work/<slug>`, a tasking
198
+ * bounce its `work/prd-<slug>`, a temp-branch caller pushes NOTHING.)
199
+ *
200
+ * Both halves are ONE operation done in ONE place: it delegates to {@link
201
+ * routeToNeedsAttention}, which appends the reason as body prose (never a
202
+ * frontmatter field — WORK-CONTRACT rule 3), saves the aborted work as a
203
+ * **wip** commit, `git mv`s the item to `work/needs-attention/` as the
204
+ * **move-only** commit (the tip), and — when an `arbiter` is given — pushes the
205
+ * work branch (best-effort, branch-parameterised, emptiness-guarded; SURFACE-
206
+ * ONLY when `pushBranch: false`). The seam does NOT strip the arbiter: the same
207
+ * arbiter both publishes the surface (here) AND drives the helper's branch push,
208
+ * so "record stuck" and "save the work" can never drift apart. The human-vs-
209
+ * autonomous gate rides on whether an `arbiter` is given at all (human
210
+ * `complete` passes none → no surface, no push, local-only; autonomous `do`/`run`
211
+ * pass it → both).
212
+ */
213
+ async applyNeedsAttentionTransition(input) {
214
+ // BOUNCE = SAVE WIP + PUSH BRANCH (recoverable) + MARK LOCK STUCK (observable)
215
+ // — task `cutover-needs-attention-becomes-lock-stuck-recovery-surface`
216
+ // (decision i+). The OBSERVABLE half is now the per-item lock `state: stuck`
217
+ // (full reason prose + any agent-surfaced questions on the entry), NOT a
218
+ // `git mv` to `needs-attention/` and NOT an on-`main` surface — so a
219
+ // protected-`main` bounce succeeds and a branch cut from `main` inherits no
220
+ // stuck record. The RECOVERABLE half is UNCHANGED: {@link routeToNeedsAttention}
221
+ // commits the agent's uncommitted wip to the `work/<slug>` branch tip and
222
+ // pushes the branch (best-effort, branch-parameterised, emptiness-guarded,
223
+ // outage-retried), so the partial work travels cross-machine and a `requeue`
224
+ // continues from the tip. The work-branch push is NOT a `main` write.
225
+ const saved = await routeToNeedsAttention(input);
226
+ const stuck = await bounceToStuckLock({
227
+ cwd: input.cwd,
228
+ slug: input.slug,
229
+ reason: input.reason,
230
+ questions: input.questions,
231
+ arbiter: input.arbiter,
232
+ env: input.env,
233
+ note: input.note,
234
+ });
235
+ return {
236
+ // `moved` reflects the OBSERVABLE half (the stuck record): the lock amend.
237
+ moved: stuck.moved,
238
+ reasonNotMoved: stuck.reasonNotMoved,
239
+ // The branch push outcome is the honest RECOVERABLE report (`do`/`run` read
240
+ // it). The on-`main` surface half is GONE (the lock is the surface now).
241
+ branchPush: saved.branchPush,
242
+ pushError: saved.pushError,
243
+ };
244
+ },
245
+ /**
246
+ * The return-to-backlog transition under the SAME strategy: re-queue the
247
+ * stuck item by delegating to {@link returnToBacklog}, which moves the slug's
248
+ * current `work/<needs-attention|in-progress>/<slug>.md → work/backlog/<slug>.md`
249
+ * TREE-LESSLY — it
250
+ * builds the move off `<arbiter>/main` with plumbing and CAS-publishes it back
251
+ * THROUGH this same write seam (`applyTransition`, the very push+lease+verify
252
+ * `claim` uses), never staging/committing in the cwd working tree.
253
+ */
254
+ applyReturnToBacklogTransition(input) {
255
+ return returnToBacklog(input);
256
+ },
257
+ /**
258
+ * The tree-less surface transition under the SAME strategy: surface the stuck
259
+ * AFTER-COMMIT, LEDGER-ONLY item by delegating to the tree-less surface (now a pure lock amend),
260
+ * which moves `work/in-progress/<slug>.md → work/needs-attention/<slug>.md`
261
+ * (reason in the body) TREE-LESSLY — it builds the move off `<arbiter>/main` with
262
+ * plumbing and CAS-publishes it THROUGH this same write seam
263
+ * (`applyTransition`, the very push+lease+verify `claim`/`requeue` use), never
264
+ * staging/committing in the cwd working tree. The reverse of
265
+ * {@link applyReturnToBacklogTransition}, the same one mechanism.
266
+ */
267
+ async applyTreelessNeedsAttentionTransition(input) {
268
+ // PURE LOCK AMEND (task
269
+ // `cutover-needs-attention-becomes-lock-stuck-recovery-surface`, decision i+):
270
+ // the after-commit / ledger-only surface (continue-push-failure /
271
+ // continue-rebase-conflict) is now the SAME `active → stuck` lock amend as the
272
+ // cwd-bound bounce — NO `git mv`, NO `main` write. The recoverable work is
273
+ // already committed on the kept `work/<slug>` branch (intact on the arbiter);
274
+ // the stuck reason + questions ride on the lock entry. A re-surface of an
275
+ // already-stuck item is a tolerated idempotent no-op (`wrong-state`).
276
+ const moved = await bounceToStuckLock({
277
+ cwd: input.cwd,
278
+ slug: input.slug,
279
+ reason: input.reason,
280
+ questions: input.questions,
281
+ arbiter: input.arbiter,
282
+ env: input.env,
283
+ note: input.note,
284
+ });
285
+ return { moved: moved.moved, reasonNotMoved: moved.reasonNotMoved };
286
+ },
287
+ /**
288
+ * The resolve-needs-attention transition under the SAME strategy — satisfying
289
+ * the INTENT "clear the stuck surface + restore in-progress." It delegates to
290
+ * the resume lock amend (reverse `git mv` needs-attention →
291
+ * in-progress, committed) and, when an `arbiter` is given, publishes that
292
+ * reverse move-only commit to the arbiter's `main` — CLEARING the stuck surface
293
+ * there (the item is back in in-progress on the ledger). Same all-or-nothing,
294
+ * never-`--force` publish. "Reverse-move on `main`" is a detail of THIS
295
+ * strategy; the seam's contract is only the intent "clear the surface."
296
+ */
297
+ async applyResolveNeedsAttentionTransition(input) {
298
+ // PURE LOCK AMEND (task
299
+ // `cutover-needs-attention-becomes-lock-stuck-recovery-surface`, decision i+):
300
+ // resolving a stuck item is `stuck → active` on the per-item lock (a human is
301
+ // picking it up), NOT a `needs-attention/ → in-progress/` folder move. NO `main`
302
+ // write — the body already rests in `backlog/` (task 9a) and the work stays on
303
+ // the kept `work/<slug>` branch. Without an arbiter there is no lock ref to
304
+ // amend (the human-local face), so it is a recorded no-op success.
305
+ if (!input.arbiter) {
306
+ return { moved: true };
307
+ }
308
+ const r = await resumeItemLock({
309
+ item: `task:${input.slug}`,
310
+ cwd: input.cwd,
311
+ arbiter: input.arbiter,
312
+ env: input.env,
313
+ });
314
+ if (r.outcome === 'transitioned') {
315
+ return { moved: true };
316
+ }
317
+ // `wrong-state` (already active — not actually stuck) is tolerated as a no-op
318
+ // success: the item is already in-flight, the caller onboards onto it anyway.
319
+ if (r.outcome === 'wrong-state') {
320
+ return { moved: true };
321
+ }
322
+ return {
323
+ moved: false,
324
+ reasonNotMoved: `could not resume '${input.slug}' (${r.outcome}: ${r.message}).`,
325
+ };
326
+ },
327
+ };
328
+ /**
329
+ * The SOLE stuck-state RECORD: amend the item's HELD per-item lock
330
+ * `active → stuck` + the FULL reason prose + any agent-surfaced questions, via the
331
+ * state machine's mark-stuck CAS amend ({@link markStuckItemLock}) — task
332
+ * `cutover-needs-attention-becomes-lock-stuck-recovery-surface` (decision i+; prd
333
+ * `ledger-status-per-item-lock-refs` US #5/#8; ADR
334
+ * `ledger-status-on-per-item-lock-refs`). This REPLACES the `git mv →
335
+ * needs-attention/` folder bounce + its on-`main` surface + branch push: the
336
+ * bounce now touches ONLY the lock ref (NO `main` write — so a protected-`main`
337
+ * bounce succeeds, and a work branch cut from `main` inherits no stuck record).
338
+ *
339
+ * The bounce holds the TASK's `implement` lock that `claim` acquired (task
340
+ * `claim-acquires-unified-lock-no-body-move`), so the normal stuck path is a plain
341
+ * `active → stuck` amend (`transitioned`). The OUTCOME MAPPING onto `{moved}`:
342
+ * - `transitioned` — the lock is now stuck (the stuck state is recorded) ⇒
343
+ * `moved: true`.
344
+ * - `wrong-state` — the lock is ALREADY `stuck` (an idempotent re-surface of a
345
+ * still-stuck item) ⇒ `moved: true` (the stuck record stands).
346
+ * - `not-held` — there is NO held lock to amend (an item that predates the
347
+ * lock, or a flow where claim did not acquire) ⇒ `moved: false` honestly: with
348
+ * the folder retired there is no other substrate to record the stuck state on,
349
+ * so the caller reports the bounce did NOT land (retry/resolve) rather than
350
+ * fake a success.
351
+ * - `lost`/`error` — a concurrent CAS race / environment fault ⇒ `moved: false`.
352
+ * - no arbiter — a human local-only `complete` (no arbiter handle): the lock
353
+ * ref lives on the arbiter, so there is no lock to amend; treat as a recorded
354
+ * no-op (`moved: true`) — a human is right there (the same human-vs-autonomous
355
+ * posture the old local-only folder move took). NOTE this records nothing
356
+ * durable, by design: the human is in the loop.
357
+ *
358
+ * Keyed on `task:<slug>` (the bounce surfaces a TASK; the prd/observation locks
359
+ * are tasking/advance holds whose own bounce paths are separate).
360
+ */
361
+ async function bounceToStuckLock(params) {
362
+ const { cwd, slug, reason, questions, arbiter, env } = params;
363
+ const note = params.note ?? (() => { });
364
+ if (!arbiter) {
365
+ // No arbiter handle ⇒ no lock ref to amend. A human local-only `complete`:
366
+ // the human is right there, so this is a recorded no-op (parity with the old
367
+ // local-only folder move that wrote nothing cross-machine).
368
+ note(`'${slug}' bounced locally (no arbiter) — the stuck reason is not recorded ` +
369
+ 'on a lock ref (a human is right here).');
370
+ return { moved: true };
371
+ }
372
+ try {
373
+ const r = await markStuckItemLock({
374
+ item: `task:${slug}`,
375
+ reason,
376
+ questions,
377
+ cwd,
378
+ arbiter,
379
+ env,
380
+ });
381
+ const movedOutcomes = ['transitioned', 'wrong-state'];
382
+ if (movedOutcomes.includes(r.outcome)) {
383
+ if (r.outcome === 'transitioned') {
384
+ note(`Marked the per-item lock for '${slug}' stuck: ${reason}`);
385
+ }
386
+ else {
387
+ note(`The per-item lock for '${slug}' is already stuck (re-surface).`);
388
+ }
389
+ return { moved: true };
390
+ }
391
+ const reasonNotMoved = r.outcome === 'not-held'
392
+ ? `'${slug}' has no held lock to mark stuck (the bounce could not record ` +
393
+ 'the stuck state — the item is not lock-held).'
394
+ : `could not mark the per-item lock for '${slug}' stuck (${r.outcome}: ` +
395
+ `${r.message}).`;
396
+ note(reasonNotMoved);
397
+ return { moved: false, reasonNotMoved };
398
+ }
399
+ catch (err) {
400
+ const reasonNotMoved = `could not mark the per-item lock for '${slug}' stuck ` +
401
+ `(${err instanceof Error ? err.message : String(err)}).`;
402
+ note(reasonNotMoved);
403
+ return { moved: false, reasonNotMoved };
404
+ }
405
+ }
406
+ /**
407
+ * The active ledger-write strategy. There is exactly one (current behaviour);
408
+ * this indirection is the seam's single insertion point — NOT a selectable mode.
409
+ */
410
+ export const ledgerWrite = currentLedgerWrite;
411
+ //# sourceMappingURL=ledger-write.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ledger-write.js","sourceRoot":"","sources":["../src/ledger-write.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { type LedgerReadStrategy } from './ledger-read.js';
2
+ import { type LifecyclePoolGates } from './lifecycle-pools.js';
3
+ import type { SelectedLifecyclePools } from './select-priority.js';
4
+ /**
5
+ * Gather + build the lifecycle pools for an IN-PLACE working checkout (sync).
6
+ * Reads `work/notes/observations/` + the per-item sidecar state through the read seam +
7
+ * the filesystem, then hands them to the shared {@link buildLifecyclePools}. The
8
+ * gates default BOTH OFF (the interim hardcoded-off, calm by default).
9
+ */
10
+ export declare function gatherLifecycleInPlace(input: {
11
+ repoPath: string;
12
+ read?: LedgerReadStrategy;
13
+ gates?: LifecyclePoolGates;
14
+ }): SelectedLifecyclePools;
15
+ /**
16
+ * Gather + build the lifecycle pools for a MIRROR-SIDE bare hub mirror (async).
17
+ * Reads the SAME logical inputs as {@link gatherLifecycleInPlace} \u2014 observations +
18
+ * the `needsAnswers` pool from the mirror's committed `main` (via
19
+ * `resolveMirrorState`), the prd pool via `resolveMirrorSpecPool`, and each item's
20
+ * sidecar via `git show` \u2014 then hands them to the SAME shared
21
+ * {@link buildLifecyclePools}, so the in-place + mirror enumerations AGREE.
22
+ */
23
+ export declare function gatherLifecycleMirror(input: {
24
+ mirrorPath: string;
25
+ ref?: string;
26
+ read?: LedgerReadStrategy;
27
+ gates?: LifecyclePoolGates;
28
+ env?: NodeJS.ProcessEnv;
29
+ }): Promise<SelectedLifecyclePools>;
30
+ //# sourceMappingURL=lifecycle-gather.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle-gather.d.ts","sourceRoot":"","sources":["../src/lifecycle-gather.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,KAAK,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AAOrE,OAAO,EAEN,KAAK,kBAAkB,EAGvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,sBAAsB,CAAC;AAiHjE;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,KAAK,CAAC,EAAE,kBAAkB,CAAC;CAC3B,GAAG,sBAAsB,CA4BzB;AA2BD;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CAAC,KAAK,EAAE;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACxB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CA0FlC"}