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,594 @@
1
+ import { mkdirSync, writeFileSync, rmSync } from 'node:fs';
2
+ import { dirname, join } from 'node:path';
3
+ import { runAsync } from './git.js';
4
+ import { ledgerWrite } from './ledger-write.js';
5
+ import { resolveSidecarIdentity } from './sidecar.js';
6
+ import { acquireItemLock, releaseItemLock } from './item-lock.js';
7
+ import { realSleep } from './retry-backoff.js';
8
+ /**
9
+ * The **advancing-lock BORROW** (prd `advance-loop`, task
10
+ * `advancing-lock-borrow`, US #19–24).
11
+ *
12
+ * The surface/apply/triage phase's SHORT borrow. As of the capstone cut-over
13
+ * (task `cutover-retire-slicing-advancing-markers-and-trim-folder-sets`, prd
14
+ * `ledger-status-per-item-lock-refs`; ADR `ledger-status-on-per-item-lock-refs`)
15
+ * the legacy `work/advancing/<entry>.md` presence-MARKER on `main` is GONE. The
16
+ * advancing borrow now rides ONLY the UNIFIED per-item lock
17
+ * (`refs/dorfl/lock/<entry>`, `action: advance`) — there is no transient
18
+ * status in `main`'s tree anymore, so a work branch cut from `main` inherits no
19
+ * stale advancing marker.
20
+ *
21
+ * The borrow is keyed by item IDENTITY (`<type>-<slug>`, via
22
+ * {@link resolveSidecarIdentity} — the single source of truth the unified lock,
23
+ * the sidecar, and the work branch all share), so a task, a prd, and an
24
+ * observation that share a slug NEVER collide, and the SAME `<entry>` ref means an
25
+ * `advance` hold is MUTUALLY EXCLUSIVE with a claim/task hold of the SAME item BY
26
+ * CONSTRUCTION (the second acquirer loses the SAME create-only ref CAS).
27
+ *
28
+ * It is file-ORTHOGONAL to the item it locks: the item's own lifecycle file NEVER
29
+ * moves (the borrow is a LOCK, not a lifecycle transition), which is exactly why
30
+ * it can lock items resting in DIFFERENT source folders (a backlog task, a `prds/`
31
+ * prd, an `observations/` note) with one uniform mechanism.
32
+ *
33
+ * **TREE-LESS vs BUILD/TASK RUNGS (`acquireUnified`).** The advance tick sets
34
+ * `acquireUnified` PER RUNG (the policy lives in `advance.ts`, where the rung is
35
+ * known):
36
+ *
37
+ * - **TREE-LESS rungs** (`surface`/`apply`/`triage`) have NO inner `do`, so the
38
+ * advancing acquire takes the item's unified `action: advance` lock — that hold
39
+ * IS the advance∥claim / advance∥task exclusion. Acquire/release delegate to
40
+ * {@link acquireItemLock} / {@link releaseItemLock} (a parentless ref CAS, no
41
+ * working-tree write, no retry budget).
42
+ * - **BUILD-TASK / TASK-PRD rungs** never take the unified lock at the advance
43
+ * layer (`acquireUnified` false): `performAdvance` orchestrates an inner
44
+ * `performDo` that ITSELF acquires the SAME `task-<slug>`/`prd-<slug>` ref
45
+ * (the create-only CAS with NO re-entrancy/auto-steal), so taking it again here
46
+ * would DEADLOCK the tick against itself. For these rungs the acquire/release
47
+ * are a NO-OP (`acquired`/`released`); the inner `do`'s lock is the sole
48
+ * exclusion point (the POST-#9 EXCLUSION PROOF, owned by this task).
49
+ *
50
+ * A dry-run never takes the lock (it mutates nothing). This module stays
51
+ * rung-agnostic — it only knows "unified or not", never the rung kind.
52
+ *
53
+ * This module also delivers {@link createItemThroughCas}: new-item creation routed
54
+ * THROUGH the SAME write-seam CAS, keyed on the NEW item's identity (its target
55
+ * path), so the (unlikely) same-slug new-item race needs NO special case — the
56
+ * loser simply fails the CAS and backs off. The triage rung (observation→promote
57
+ * drafting a new `work/backlog/<new-slug>.md`) consumes it. It is NOT a lock and
58
+ * was never tied to the marker.
59
+ *
60
+ * Lock discipline: MANDATORY for the autonomous driver (a contender may be active),
61
+ * a no-op formality for a solo human (no contender). Every lock acquire/release is
62
+ * RUNNER-mediated (the agent never touches the lock ref). Recovery is the unified
63
+ * lock's: `release-lock <item>` + the `gc --ledger` stuck-lock report (no liveness
64
+ * heartbeat, no auto-sweep; a human asserts a lock is dead).
65
+ */
66
+ const DEFAULT_ARBITER = 'origin';
67
+ /** Raised for usage/environment errors (exit 1). */
68
+ class AdvancingLockUsageError extends Error {
69
+ }
70
+ /**
71
+ * Acquire the advancing borrow for `item`. For a TREE-LESS rung
72
+ * (`acquireUnified: true`) this is the item's unified `action: advance` lock (a
73
+ * parentless ref CAS); for a build/task rung (the default) it is a NO-OP
74
+ * `acquired` (the inner `do`'s claim/task lock is the exclusion). Never throws
75
+ * for the expected "lost the race" (exit 2) case — it is returned.
76
+ */
77
+ export async function acquireAdvancingLock(options) {
78
+ const note = options.note ?? (() => { });
79
+ try {
80
+ return await runAcquire(options, note);
81
+ }
82
+ catch (err) {
83
+ if (err instanceof AdvancingLockUsageError) {
84
+ return { exitCode: 1, outcome: 'usage-error', message: err.message };
85
+ }
86
+ const message = err instanceof Error ? err.message : String(err);
87
+ return { exitCode: 1, outcome: 'usage-error', message };
88
+ }
89
+ }
90
+ async function runAcquire(options, note) {
91
+ const arbiter = options.arbiter ?? DEFAULT_ARBITER;
92
+ const dryRun = options.dryRun ?? false;
93
+ const cwd = options.cwd;
94
+ const env = options.env;
95
+ if (!options.item) {
96
+ throw new AdvancingLockUsageError('missing <item>. usage: acquireAdvancingLock({item, cwd, arbiter})');
97
+ }
98
+ // The type-encoded entry `<type>-<slug>` — the SAME identity scheme the sidecar
99
+ // and the unified lock use, derived via the shared resolver (the source of truth).
100
+ const { type, slug } = resolveSidecarIdentity(options.item);
101
+ const entry = `${type}-${slug}`;
102
+ if ((await gitSoft(['rev-parse', '--git-dir'], cwd, env)).status !== 0) {
103
+ throw new AdvancingLockUsageError('not inside a git repository');
104
+ }
105
+ if ((await gitSoft(['remote', 'get-url', arbiter], cwd, env)).status !== 0) {
106
+ throw new AdvancingLockUsageError(`no git remote named '${arbiter}' (set one, or pass --arbiter)`);
107
+ }
108
+ const by = options.by || (await resolveBy(cwd, env));
109
+ // BUILD/TASK rung (or a dry-run): NO advance-layer hold at all. The inner `do`'s
110
+ // claim/task unified lock is the sole exclusion point — taking it again here
111
+ // would deadlock the tick against itself. A NO-OP `acquired`.
112
+ const acquireUnified = (options.acquireUnified ?? false) && !dryRun;
113
+ if (!acquireUnified) {
114
+ const message = dryRun
115
+ ? `[dry-run] advancing borrow for '${entry}' (no lock taken).`
116
+ : `advancing borrow for '${entry}' rides the inner do's lock (no advance-layer hold).`;
117
+ note(message);
118
+ return { exitCode: 0, outcome: 'acquired', message, entry };
119
+ }
120
+ // TREE-LESS rung: take the item's UNIFIED per-item lock (`action: advance`,
121
+ // keyed `item` so it shares the ONE `<type>-<slug>` ref with claim/task/advance
122
+ // of the SAME item). A create-only ref CAS: the winner holds it, the loser is
123
+ // DEFINITIVELY `lost` (exit 2, no retry budget — a per-item conflict the loser
124
+ // should lose). No auto-steal of an orphaned lock, consistent with claim/task
125
+ // and the ADR's recovery model (no liveness heartbeat / auto-sweep; a human
126
+ // asserts a lock is dead via `release-lock` + `gc --ledger`).
127
+ const lock = await acquireItemLock({
128
+ item: options.item,
129
+ action: 'advance',
130
+ cwd,
131
+ arbiter,
132
+ holder: by,
133
+ env,
134
+ });
135
+ if (lock.outcome === 'error') {
136
+ throw new AdvancingLockUsageError(`failed to acquire the item lock for '${entry}': ${lock.message}`);
137
+ }
138
+ if (lock.outcome === 'lost') {
139
+ note(lock.message);
140
+ return { exitCode: 2, outcome: 'lost', message: lock.message, entry };
141
+ }
142
+ const message = `LOCKED '${entry}' for advancing on ${arbiter} (unified lock).`;
143
+ note(message);
144
+ return { exitCode: 0, outcome: 'acquired', message, entry };
145
+ }
146
+ /**
147
+ * Release the advancing borrow for `item`. For a TREE-LESS rung
148
+ * (`releaseUnified: true`) this DELETES the item's unified `action: advance` lock
149
+ * ref; for a build/task rung (the default) it is a NO-OP `released` (that rung
150
+ * never took an advance-layer hold — the inner `do` released its own lock). It
151
+ * moves NO lifecycle file: the borrow is a LOCK, not a lifecycle transition, so
152
+ * the item is returned exactly where it rested.
153
+ *
154
+ * Idempotent: a unified release of an already-absent ref reports `released` (the
155
+ * item is returned to rest with no held lock). Best-effort + never throws for the
156
+ * expected cases.
157
+ */
158
+ export async function releaseAdvancingLock(options) {
159
+ const note = options.note ?? (() => { });
160
+ try {
161
+ return await runRelease(options, note);
162
+ }
163
+ catch (err) {
164
+ if (err instanceof AdvancingLockUsageError) {
165
+ return { exitCode: 1, outcome: 'usage-error', message: err.message };
166
+ }
167
+ const message = err instanceof Error ? err.message : String(err);
168
+ return { exitCode: 1, outcome: 'usage-error', message };
169
+ }
170
+ }
171
+ async function runRelease(options, note) {
172
+ const arbiter = options.arbiter ?? DEFAULT_ARBITER;
173
+ const cwd = options.cwd;
174
+ const env = options.env;
175
+ if (!options.item) {
176
+ throw new AdvancingLockUsageError('missing <item>. usage: releaseAdvancingLock({item, cwd, arbiter})');
177
+ }
178
+ const { type, slug } = resolveSidecarIdentity(options.item);
179
+ const entry = `${type}-${slug}`;
180
+ if ((await gitSoft(['rev-parse', '--git-dir'], cwd, env)).status !== 0) {
181
+ throw new AdvancingLockUsageError('not inside a git repository');
182
+ }
183
+ if ((await gitSoft(['remote', 'get-url', arbiter], cwd, env)).status !== 0) {
184
+ throw new AdvancingLockUsageError(`no git remote named '${arbiter}' (set one, or pass --arbiter)`);
185
+ }
186
+ // BUILD/TASK rung: nothing was held at the advance layer — a NO-OP `released`.
187
+ const releaseUnified = options.releaseUnified ?? false;
188
+ if (!releaseUnified) {
189
+ const message = `advancing borrow for '${entry}' released (no advance-layer hold to drop).`;
190
+ note(message);
191
+ return { exitCode: 0, outcome: 'released', message, entry };
192
+ }
193
+ // TREE-LESS rung: delete the unified `action: advance` lock ref (idempotent —
194
+ // an already-absent ref is `not-held`, still mapped to `released`: the item is
195
+ // returned to rest with no held lock).
196
+ const released = await releaseItemLock({
197
+ item: options.item,
198
+ cwd,
199
+ arbiter,
200
+ env,
201
+ });
202
+ if (released.outcome === 'error') {
203
+ throw new AdvancingLockUsageError(`failed to release the item lock for '${entry}': ${released.message}`);
204
+ }
205
+ const message = released.outcome === 'not-held'
206
+ ? `advancing borrow for '${entry}' was already released (no lock held).`
207
+ : `RELEASED '${entry}' advancing borrow on ${arbiter} (item untouched).`;
208
+ note(message);
209
+ return { exitCode: 0, outcome: 'released', message, entry };
210
+ }
211
+ /**
212
+ * The INTERACTIVE default: today's shape (3 retries, NO delay). A human-typed
213
+ * single-item caller keeps the prompt bounded give-up it always had. Preserved
214
+ * so the API change is backwards-compatible for direct callers of
215
+ * {@link createItemThroughCas} that pass nothing.
216
+ */
217
+ export const INTERACTIVE_CAS_CONTENTION = {
218
+ retries: 3,
219
+ initialDelayMs: 0,
220
+ maxDelayMs: 0,
221
+ maxTotalMs: 0,
222
+ };
223
+ /**
224
+ * The LIFECYCLE default: the wider envelope for the parallel-legs fan-out (the
225
+ * lifecycle propose/triage tick's promote-CAS + `mint-adr` legs). A modest base
226
+ * delay grows under an AWS-style DECORRELATED-JITTER schedule up to a cap, with a
227
+ * generous wall-clock envelope so a herd of valid appends DRAINS instead of
228
+ * thrashing to exhaustion. Sized so a lone leg is barely slower than today
229
+ * (jitter is small on the first retry) while a fan-out of N legs desynchronises
230
+ * within a few retries. See the decision block at the bottom of this file.
231
+ */
232
+ export const LIFECYCLE_CAS_CONTENTION = {
233
+ retries: 32,
234
+ initialDelayMs: 25,
235
+ maxDelayMs: 2_000,
236
+ maxTotalMs: 30_000,
237
+ };
238
+ /**
239
+ * Run a CAS create/publish attempt inside the CONTENTION-RETRY loop. Reusable
240
+ * primitive shared between {@link createItemThroughCas} (the production path) and
241
+ * the unit tests that drive the loop with an injected fake attempt + injected
242
+ * `Sleep` + injected RNG so the retry timeline + jitter are fully deterministic
243
+ * with no real wall-clock waits.
244
+ *
245
+ * The `attempt` callback runs ONE CAS attempt and reports `created` / `lost` /
246
+ * `rejected`. On `rejected` the loop consults the {@link CasContentionBudget}:
247
+ * 1. if the attempts cap is reached → clean bounded give-up (`contended`);
248
+ * 2. else compute a DECORRELATED-JITTER delay ({@link nextCasContentionDelayMs});
249
+ * 3. if the delay would push cumulative sleep past `maxTotalMs` → clean bounded
250
+ * give-up (`contended` — the wall-clock terminator);
251
+ * 4. else emit the retry note, sleep, and loop.
252
+ */
253
+ export async function runCasContentionLoop(input) {
254
+ const note = input.note ?? (() => { });
255
+ const budget = input.budget;
256
+ const retries = budget.retries ?? INTERACTIVE_CAS_CONTENTION.retries;
257
+ const initialDelayMs = budget.initialDelayMs ?? INTERACTIVE_CAS_CONTENTION.initialDelayMs;
258
+ const maxDelayMs = budget.maxDelayMs ?? INTERACTIVE_CAS_CONTENTION.maxDelayMs;
259
+ const maxTotalMs = budget.maxTotalMs ?? INTERACTIVE_CAS_CONTENTION.maxTotalMs;
260
+ const sleep = budget.sleep ?? realSleep;
261
+ const rng = budget.rng ?? Math.random;
262
+ let attempts = 0;
263
+ let elapsed = 0;
264
+ let previousDelayMs = 0;
265
+ const sleeps = [];
266
+ // eslint-disable-next-line no-constant-condition
267
+ while (true) {
268
+ attempts += 1;
269
+ const result = await input.attempt();
270
+ if (result.kind === 'created') {
271
+ return { kind: 'created', message: result.message, attempts, sleeps };
272
+ }
273
+ if (result.kind === 'lost') {
274
+ return { kind: 'lost', message: result.message, attempts, sleeps };
275
+ }
276
+ const rejectedCount = attempts; // attempts so far == rejections so far
277
+ if (rejectedCount > retries) {
278
+ const message = `push rejected ${rejectedCount} times (main is contended). Try again shortly.`;
279
+ note(message);
280
+ return { kind: 'contended', message, attempts, sleeps };
281
+ }
282
+ const delay = nextCasContentionDelayMs({
283
+ previousDelayMs,
284
+ initialDelayMs,
285
+ maxDelayMs,
286
+ rng,
287
+ });
288
+ if (maxTotalMs > 0 && elapsed + delay > maxTotalMs) {
289
+ const message = `push rejected ${rejectedCount} times (main is contended; wall-clock budget ${maxTotalMs}ms exhausted). Try again shortly.`;
290
+ note(message);
291
+ return { kind: 'contended', message, attempts, sleeps };
292
+ }
293
+ note(`main advanced under us — refetch and retry (${rejectedCount}/${retries})...`);
294
+ if (delay > 0) {
295
+ await sleep(delay);
296
+ elapsed += delay;
297
+ previousDelayMs = delay;
298
+ sleeps.push(delay);
299
+ }
300
+ }
301
+ }
302
+ /**
303
+ * Compute the NEXT contention-retry delay under AWS-style DECORRELATED JITTER:
304
+ * `delay = min(cap, floor(base + rng() * (min(cap, prev*3) - base)))`, clamped to
305
+ * `[base, cap]`. `previousDelayMs = 0` (the first retry) uses `base` as the
306
+ * seed. Returns `0` iff the delay is disabled (either bound is `0` or `NaN`),
307
+ * which preserves the interactive "instant retry" shape.
308
+ *
309
+ * Exported for the pure-unit shape test — the property is BOUNDED randomness
310
+ * that grows toward the cap.
311
+ */
312
+ export function nextCasContentionDelayMs(input) {
313
+ const base = input.initialDelayMs;
314
+ const cap = input.maxDelayMs;
315
+ if (!(base > 0) || !(cap > 0)) {
316
+ return 0;
317
+ }
318
+ const prev = input.previousDelayMs > 0 ? input.previousDelayMs : base;
319
+ const upper = Math.min(cap, prev * 3);
320
+ const r = Math.max(0, Math.min(1, input.rng()));
321
+ return Math.max(base, Math.min(cap, Math.floor(base + r * (upper - base))));
322
+ }
323
+ /**
324
+ * Create a NEW `work/` item THROUGH the CAS, keyed on the new item's identity (its
325
+ * `path`). The reusable helper the triage rung consumes when an observation→promote
326
+ * drafts a new `work/backlog/<new-slug>.md`: the (unlikely) same-slug new-item race
327
+ * needs NO special case — exactly one creator lands the file, the loser fails the
328
+ * CAS (exit 2) and backs off. Same CAS-micro-commit / force-with-lease shape as the
329
+ * unified lock; it is NOT a lock (it does not hold a borrow), it ATOMICALLY publishes
330
+ * a new file iff that path is still absent on the arbiter.
331
+ *
332
+ * An optional {@link CreateItemThroughCasOptions.deletePaths} rides the SAME create
333
+ * commit (the promote route's note + sidecar `git rm`), so create + delete are ONE
334
+ * atomic commit: a crash never strands the source without its successor, and a CAS
335
+ * LOSER — which never reaches the commit — leaves the source intact for a retry.
336
+ */
337
+ export async function createItemThroughCas(options) {
338
+ const note = options.note ?? (() => { });
339
+ try {
340
+ return await runCreate(options, note);
341
+ }
342
+ catch (err) {
343
+ if (err instanceof AdvancingLockUsageError) {
344
+ return { exitCode: 1, outcome: 'usage-error', message: err.message };
345
+ }
346
+ const message = err instanceof Error ? err.message : String(err);
347
+ return { exitCode: 1, outcome: 'usage-error', message };
348
+ }
349
+ }
350
+ async function runCreate(options, note) {
351
+ const arbiter = options.arbiter ?? DEFAULT_ARBITER;
352
+ const budget = options.contention ?? {};
353
+ const retries = budget.retries ?? options.retries ?? INTERACTIVE_CAS_CONTENTION.retries;
354
+ const initialDelayMs = budget.initialDelayMs ?? INTERACTIVE_CAS_CONTENTION.initialDelayMs;
355
+ const maxDelayMs = budget.maxDelayMs ?? INTERACTIVE_CAS_CONTENTION.maxDelayMs;
356
+ const maxTotalMs = budget.maxTotalMs ?? INTERACTIVE_CAS_CONTENTION.maxTotalMs;
357
+ const sleep = budget.sleep ?? realSleep;
358
+ const rng = budget.rng ?? Math.random;
359
+ const dryRun = options.dryRun ?? false;
360
+ const cwd = options.cwd;
361
+ const env = options.env;
362
+ const path = options.path;
363
+ if (!path) {
364
+ throw new AdvancingLockUsageError('missing <path>. usage: createItemThroughCas({path, content, cwd, arbiter})');
365
+ }
366
+ if ((await gitSoft(['rev-parse', '--git-dir'], cwd, env)).status !== 0) {
367
+ throw new AdvancingLockUsageError('not inside a git repository');
368
+ }
369
+ if ((await gitSoft(['remote', 'get-url', arbiter], cwd, env)).status !== 0) {
370
+ throw new AdvancingLockUsageError(`no git remote named '${arbiter}' (set one, or pass --arbiter)`);
371
+ }
372
+ const by = options.by || (await resolveBy(cwd, env));
373
+ const dirtyWorktree = (await gitSoft(['diff', '--quiet'], cwd, env)).status !== 0;
374
+ const dirtyIndex = (await gitSoft(['diff', '--cached', '--quiet'], cwd, env)).status !== 0;
375
+ if (dirtyWorktree || dirtyIndex) {
376
+ throw new AdvancingLockUsageError('working tree has uncommitted changes; commit/stash them before creating');
377
+ }
378
+ // A throwaway create branch, slugified off the new item's path (so concurrent
379
+ // creators of DIFFERENT paths don't collide on the branch name either).
380
+ const createBranch = `create/${path.replace(/[^A-Za-z0-9._-]+/g, '-')}`;
381
+ const origRef = await originalRef(cwd, env);
382
+ try {
383
+ // The bounded DECORRELATED-JITTER contention-retry lives in
384
+ // {@link runCasContentionLoop} — the shared primitive tests drive directly
385
+ // with an injected fake attempt + `Sleep` + RNG (no real waits, no flakes).
386
+ const loop = await runCasContentionLoop({
387
+ attempt: () => createAttempt({
388
+ path,
389
+ content: options.content,
390
+ deletePaths: options.deletePaths ?? [],
391
+ by,
392
+ arbiter,
393
+ dryRun,
394
+ cwd,
395
+ env,
396
+ createBranch,
397
+ note,
398
+ }),
399
+ budget: {
400
+ retries,
401
+ initialDelayMs,
402
+ maxDelayMs,
403
+ maxTotalMs,
404
+ sleep,
405
+ rng,
406
+ },
407
+ note,
408
+ });
409
+ if (loop.kind === 'created') {
410
+ return { exitCode: 0, outcome: 'created', message: loop.message };
411
+ }
412
+ if (loop.kind === 'lost') {
413
+ return { exitCode: 2, outcome: 'lost', message: loop.message };
414
+ }
415
+ return { exitCode: 3, outcome: 'contended', message: loop.message };
416
+ }
417
+ finally {
418
+ await cleanup(cwd, origRef, createBranch, env);
419
+ }
420
+ }
421
+ /** One create attempt: branch off arbiter/main, add the new file, CAS-push. */
422
+ async function createAttempt(ctx) {
423
+ const { arbiter, path, content, deletePaths, createBranch, cwd, env, note } = ctx;
424
+ await gitHard(['fetch', '--quiet', arbiter], cwd, env);
425
+ // Is the path still free on the arbiter's main? (the new item absent.)
426
+ if (await catFileExists(`${arbiter}/main:${path}`, cwd, env)) {
427
+ const message = `'${path}' already exists on ${arbiter}/main — the new item lost the create race (or the slug is taken). Back off.`;
428
+ note(message);
429
+ return { kind: 'lost', message };
430
+ }
431
+ await gitHard(['checkout', '--quiet', '--detach', `${arbiter}/main`], cwd, env);
432
+ await gitSoft(['branch', '-D', createBranch], cwd, env);
433
+ await gitHard(['checkout', '--quiet', '-b', createBranch, `${arbiter}/main`], cwd, env);
434
+ const fileAbs = join(cwd, path);
435
+ mkdirSync(dirname(fileAbs), { recursive: true });
436
+ writeFileSync(fileAbs, content);
437
+ const add = await gitSoft(['add', '--', path], cwd, env);
438
+ if (add.status !== 0) {
439
+ throw new AdvancingLockUsageError(`git add failed for '${path}' (unexpected — aborting create)`);
440
+ }
441
+ // `git rm` the extra paths (the promoted source note + its sidecar) INTO this
442
+ // SAME create commit, so the create + delete are ONE atomic commit. Best-effort
443
+ // per path: a path absent on the create branch (e.g. an uncommitted local note,
444
+ // or an already-gone sidecar) is staged as a working-tree removal instead so
445
+ // the commit still carries the intended deletion without aborting.
446
+ for (const del of deletePaths) {
447
+ if (del === '' || del === path) {
448
+ continue;
449
+ }
450
+ const rm = await gitSoft(['rm', '--quiet', '--', del], cwd, env);
451
+ if (rm.status !== 0) {
452
+ // Not tracked on this branch — remove from the working tree (if present)
453
+ // and stage that removal; a never-existed path is simply skipped.
454
+ rmSync(join(cwd, del), { force: true });
455
+ await gitSoft(['add', '--', del], cwd, env);
456
+ }
457
+ }
458
+ await gitHard(['commit', '--quiet', '-m', `advance: create ${path} (by ${ctx.by})`], cwd, env);
459
+ const base = (await gitHard(['rev-parse', `${arbiter}/main`], cwd, env)).stdout.trim();
460
+ const head = (await gitHard(['rev-parse', 'HEAD'], cwd, env)).stdout.trim();
461
+ if (head === base) {
462
+ throw new AdvancingLockUsageError('advance-create commit is a no-op (nothing added) — aborting');
463
+ }
464
+ // Publish through the SAME seam (kind `advancing`) — keyed on the new item's
465
+ // identity (its path). The lease guards the CAS: a concurrent creator that
466
+ // landed first advanced main past our base, so our lease fails → rejected; the
467
+ // outer loop refetches and the next attempt finds the path TAKEN → lost (no
468
+ // special case). This holds EVEN for a same-identity racer who built an
469
+ // identical create commit within git's 1-second timestamp resolution: the seam
470
+ // stamps each attempt with a per-attempt `CAS-Nonce`, so the two racers'
471
+ // commits have DISTINCT shas — the loser's push is a genuine lease rejection,
472
+ // NOT an "Everything up-to-date" no-op that would spuriously verify as won.
473
+ if (ctx.dryRun) {
474
+ const result = await ledgerWrite.applyTransition({
475
+ kind: 'advancing',
476
+ arbiter,
477
+ localBranch: createBranch,
478
+ expectedBase: base,
479
+ head,
480
+ cwd,
481
+ dryRun: true,
482
+ env,
483
+ note,
484
+ });
485
+ return { kind: 'created', message: result.message };
486
+ }
487
+ const result = await ledgerWrite.applyTransition({
488
+ kind: 'advancing',
489
+ arbiter,
490
+ localBranch: createBranch,
491
+ expectedBase: base,
492
+ head,
493
+ cwd,
494
+ env,
495
+ note,
496
+ });
497
+ if (result.kind === 'published') {
498
+ const message = `CREATED '${path}' on ${arbiter}/main.`;
499
+ note(message);
500
+ return { kind: 'created', message };
501
+ }
502
+ return { kind: 'rejected', message: result.message };
503
+ }
504
+ // --- Shared helpers (same shape as claim-cas.ts) --------------------------
505
+ /** The branch (or detached HEAD sha) we should return to afterward. */
506
+ async function originalRef(cwd, env) {
507
+ const sym = await gitSoft(['symbolic-ref', '--quiet', '--short', 'HEAD'], cwd, env);
508
+ if (sym.status === 0 && sym.stdout.trim() !== '') {
509
+ return sym.stdout.trim();
510
+ }
511
+ return (await gitHard(['rev-parse', 'HEAD'], cwd, env)).stdout.trim();
512
+ }
513
+ /** Best-effort: return to where we were and drop the throwaway branch. */
514
+ async function cleanup(cwd, origRef, branch, env) {
515
+ await gitSoft(['checkout', '--quiet', origRef], cwd, env);
516
+ await gitSoft(['branch', '-D', branch], cwd, env);
517
+ }
518
+ /** Resolve the advisory locker: git user.name, else $USER/$USERNAME, else ''. */
519
+ async function resolveBy(cwd, env) {
520
+ const name = await gitSoft(['config', 'user.name'], cwd, env);
521
+ if (name.status === 0 && name.stdout.trim() !== '') {
522
+ return name.stdout.trim();
523
+ }
524
+ const e = env ?? process.env;
525
+ return e.USER ?? e.USERNAME ?? '';
526
+ }
527
+ /** `git cat-file -e <object>` — true iff the object exists. */
528
+ async function catFileExists(object, cwd, env) {
529
+ return (await gitSoft(['cat-file', '-e', object], cwd, env)).status === 0;
530
+ }
531
+ /** Run git, returning the raw result (no throw) — for soft checks. */
532
+ function gitSoft(args, cwd, env) {
533
+ return runAsync('git', args, cwd, { env });
534
+ }
535
+ /** Run git; throw on non-zero (genuinely unexpected plumbing failures). */
536
+ async function gitHard(args, cwd, env) {
537
+ const result = await runAsync('git', args, cwd, { env });
538
+ if (result.status !== 0) {
539
+ throw new Error(`git ${args.join(' ')} failed (exit ${result.status}): ${result.stderr.trim()}`);
540
+ }
541
+ return result;
542
+ }
543
+ // --- Decisions ------------------------------------------------------------
544
+ //
545
+ // **CAS contention retry: from instant-fixed-cap to bounded-JITTER + widened
546
+ // budget (fan-out drain).** The earlier recorded model for `createItemThroughCas`
547
+ // was "contention retries INSTANTLY, no delay, tiny fixed cap (3)". That is
548
+ // correct for a SINGLE contender (grab the new base and go) but PATHOLOGICAL for
549
+ // a lifecycle propose fan-out: N parallel legs (one per answered/triaged item)
550
+ // all CAS-append against the SAME `main` ref, refetch and re-push in lockstep,
551
+ // exhaust the tiny cap, and a large fraction exit `contended` (exit 3) EVEN
552
+ // THOUGH every leg's write is valid and would land if they took turns. A real
553
+ // 66-leg propose tick left ~33 legs at exit 3 \u2014 a thundering herd on one ref.
554
+ //
555
+ // The revised model, encoded here:
556
+ // 1. Add a bounded DECORRELATED-JITTER inter-retry delay
557
+ // ({@link nextCasContentionDelayMs}). Parallel legs desynchronise; the herd
558
+ // breaks; the fan-out DRAINS. Small enough that a lone leg is barely
559
+ // slower than today (first-retry delay is O(base)).
560
+ // 2. WIDEN the budget on the lifecycle path ({@link LIFECYCLE_CAS_CONTENTION}):
561
+ // more retries + a wall-clock envelope, since a lifecycle leg has no human
562
+ // waiting. The regime stays BOUNDED (attempts cap AND wall-clock cap) so
563
+ // genuine exhaustion still yields a clean `contended`, never a hang.
564
+ // 3. Scope the widened budget to the LIFECYCLE path via an explicit
565
+ // `contention` option threaded from the driver (`advance.ts` \u2192
566
+ // `promoteObservation` / `mintAdr` \u2192 `createItemThroughCas`). Direct
567
+ // callers that pass nothing keep the INTERACTIVE shape
568
+ // ({@link INTERACTIVE_CAS_CONTENTION}): 3 retries, NO delay \u2014 backwards
569
+ // compatible, so a human-typed single-item caller stays prompt.
570
+ //
571
+ // **Deliberately DISTINCT from the OUTAGE regime in `retry-backoff.ts`.** That
572
+ // helper models an unreachable remote with EXPONENTIAL backoff (the remote may
573
+ // come back). Contention is a REJECTED push against a MOVED ref \u2014 the remote is
574
+ // fine, the base just advanced. It wants a small RANDOM delay to BREAK LOCKSTEP,
575
+ // not an exponential outage ramp. Do NOT reuse `retryWithBackoff` here.
576
+ //
577
+ // **Jitter shape: AWS-style DECORRELATED JITTER**
578
+ // (`delay = uniform(base, min(cap, prev*3))`). Grows toward the cap when the
579
+ // contention persists (more spread across the herd as the tail hangs on), but
580
+ // bounded above by `cap`. The alternative \u2014 flat `uniform(0, base)` \u2014 was
581
+ // considered and rejected: it does not adapt to a long tail, so the last N legs
582
+ // still collide at similar rates once the herd shrinks; the decorrelated growth
583
+ // is what makes the tail DRAIN under sustained parallel load. Same shape as the
584
+ // recovery-rebase jitter loop in `integration-core.ts` uses (`Math.floor(random
585
+ // * (jitterMs + 1))` on a fixed cap) but with the AWS growth term so a lifecycle
586
+ // tail is not stuck on a tiny fixed window.
587
+ //
588
+ // **Composes with, does NOT duplicate, the held-lock-subtraction sibling**
589
+ // (`advance-matrix-enumerates-held-locked-items-so-legs-fail-every-tick`): that
590
+ // task reduces the NUMBER of legs entering the matrix (never enumerate a held
591
+ // item); this task handles the RESIDUAL legitimate contention among the valid
592
+ // legs that DO get scheduled. The two layers together should quiet the propose-
593
+ // matrix CI noise.
594
+ //# sourceMappingURL=advancing-lock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advancing-lock.js","sourceRoot":"","sources":["../src/advancing-lock.ts"],"names":[],"mappings":"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"}