dorfl 0.1.1 → 0.1.2

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 (313) hide show
  1. package/dist/advance-ci-template.d.ts +3 -3
  2. package/dist/advance-ci-template.js +1 -1
  3. package/dist/advance-ci-template.js.map +1 -1
  4. package/dist/advance-classify.d.ts +5 -5
  5. package/dist/advance-classify.d.ts.map +1 -1
  6. package/dist/advance-classify.js +4 -4
  7. package/dist/advance-drivers.d.ts +7 -7
  8. package/dist/advance-drivers.d.ts.map +1 -1
  9. package/dist/advance-drivers.js +5 -5
  10. package/dist/advance-drivers.js.map +1 -1
  11. package/dist/advance-isolated.d.ts +3 -3
  12. package/dist/advance-isolated.d.ts.map +1 -1
  13. package/dist/advance-isolated.js +1 -1
  14. package/dist/advance-lifecycle-template.d.ts +2 -2
  15. package/dist/advance-lifecycle-template.js +9 -9
  16. package/dist/advance-lifecycle-template.js.map +1 -1
  17. package/dist/advance-loop-driver.d.ts +3 -3
  18. package/dist/advance-loop-driver.d.ts.map +1 -1
  19. package/dist/advance-loop-driver.js +1 -1
  20. package/dist/advance-treeless-publish.d.ts +1 -1
  21. package/dist/advance.d.ts +11 -11
  22. package/dist/advance.d.ts.map +1 -1
  23. package/dist/advance.js +21 -21
  24. package/dist/advance.js.map +1 -1
  25. package/dist/advancing-lock.d.ts +1 -1
  26. package/dist/advancing-lock.js +5 -5
  27. package/dist/apply-decide.d.ts +2 -2
  28. package/dist/apply-decide.js +2 -2
  29. package/dist/apply-merge-action.d.ts +4 -4
  30. package/dist/apply-merge-action.js +2 -2
  31. package/dist/apply-persist.d.ts +5 -5
  32. package/dist/apply-persist.d.ts.map +1 -1
  33. package/dist/apply-persist.js +7 -7
  34. package/dist/apply-persist.js.map +1 -1
  35. package/dist/buildable-body.d.ts +14 -14
  36. package/dist/buildable-body.js +9 -9
  37. package/dist/claim-cas.d.ts +3 -3
  38. package/dist/claim-cas.js +1 -1
  39. package/dist/claim-cas.js.map +1 -1
  40. package/dist/cli.d.ts.map +1 -1
  41. package/dist/cli.js +76 -76
  42. package/dist/cli.js.map +1 -1
  43. package/dist/close-job-template.d.ts +3 -3
  44. package/dist/close-job-template.js +8 -8
  45. package/dist/close-job.d.ts +8 -8
  46. package/dist/close-job.js +25 -25
  47. package/dist/close-job.js.map +1 -1
  48. package/dist/complete.d.ts +3 -3
  49. package/dist/complete.js +8 -8
  50. package/dist/complete.js.map +1 -1
  51. package/dist/concurrency.d.ts +1 -1
  52. package/dist/concurrency.js +1 -1
  53. package/dist/config.d.ts +32 -32
  54. package/dist/config.js +5 -5
  55. package/dist/config.js.map +1 -1
  56. package/dist/continue-branch.d.ts +1 -1
  57. package/dist/continue-branch.js +1 -1
  58. package/dist/cwd-section.js +1 -1
  59. package/dist/cwd-section.js.map +1 -1
  60. package/dist/decision-engine.d.ts +2 -2
  61. package/dist/do-autopick.d.ts +6 -6
  62. package/dist/do-autopick.d.ts.map +1 -1
  63. package/dist/do-autopick.js +5 -5
  64. package/dist/do-autopick.js.map +1 -1
  65. package/dist/do-config.d.ts +3 -3
  66. package/dist/do-config.js +3 -3
  67. package/dist/do-config.js.map +1 -1
  68. package/dist/do-remote-auto.d.ts +2 -2
  69. package/dist/do-remote-auto.js +1 -1
  70. package/dist/do.d.ts +25 -25
  71. package/dist/do.d.ts.map +1 -1
  72. package/dist/do.js +20 -20
  73. package/dist/do.js.map +1 -1
  74. package/dist/drop-source.d.ts +2 -2
  75. package/dist/env-config.js +8 -8
  76. package/dist/env-config.js.map +1 -1
  77. package/dist/format.js +3 -3
  78. package/dist/format.js.map +1 -1
  79. package/dist/frontmatter.d.ts +14 -13
  80. package/dist/frontmatter.d.ts.map +1 -1
  81. package/dist/frontmatter.js +12 -24
  82. package/dist/frontmatter.js.map +1 -1
  83. package/dist/install-ci-branch-protection.d.ts +1 -1
  84. package/dist/install-ci-branch-protection.js +1 -1
  85. package/dist/install-ci-capabilities/advance-lifecycle.d.ts +1 -1
  86. package/dist/install-ci-capabilities/advance-lifecycle.js +1 -1
  87. package/dist/install-ci-capabilities/close-job.d.ts +1 -1
  88. package/dist/install-ci-capabilities/close-job.js +1 -1
  89. package/dist/install-ci-capabilities/example-noop.d.ts +1 -1
  90. package/dist/install-ci-capabilities/example-noop.js +1 -1
  91. package/dist/install-ci-capabilities/intake.d.ts +2 -2
  92. package/dist/install-ci-capabilities/intake.js +2 -2
  93. package/dist/install-ci-capabilities/verify.d.ts +1 -1
  94. package/dist/install-ci-capabilities/verify.js +1 -1
  95. package/dist/install-ci-core.d.ts +3 -3
  96. package/dist/install-ci-core.js +2 -2
  97. package/dist/install-ci-core.js.map +1 -1
  98. package/dist/install-ci-github.d.ts +1 -1
  99. package/dist/install-ci-github.js +1 -1
  100. package/dist/install-ci.d.ts +1 -1
  101. package/dist/install-ci.js +4 -4
  102. package/dist/install-ci.js.map +1 -1
  103. package/dist/intake-event.d.ts +6 -6
  104. package/dist/intake-event.js +6 -6
  105. package/dist/intake-marker.d.ts +3 -3
  106. package/dist/intake-marker.d.ts.map +1 -1
  107. package/dist/intake-triage.d.ts +1 -1
  108. package/dist/intake-triage.js +2 -2
  109. package/dist/intake-trigger-template.d.ts +8 -8
  110. package/dist/intake-trigger-template.d.ts.map +1 -1
  111. package/dist/intake-trigger-template.js +16 -16
  112. package/dist/intake-trigger-template.js.map +1 -1
  113. package/dist/intake.d.ts +50 -50
  114. package/dist/intake.d.ts.map +1 -1
  115. package/dist/intake.js +70 -70
  116. package/dist/intake.js.map +1 -1
  117. package/dist/integration-core.d.ts +17 -17
  118. package/dist/integration-core.js +17 -17
  119. package/dist/integration-core.js.map +1 -1
  120. package/dist/isolation.d.ts +3 -3
  121. package/dist/issue-provider.d.ts +4 -4
  122. package/dist/issue-provider.js +1 -1
  123. package/dist/item-lock.d.ts +21 -21
  124. package/dist/item-lock.d.ts.map +1 -1
  125. package/dist/item-lock.js +16 -16
  126. package/dist/item-path.d.ts +2 -2
  127. package/dist/item-path.js +2 -2
  128. package/dist/ledger-lint.d.ts +9 -9
  129. package/dist/ledger-lint.js +9 -9
  130. package/dist/ledger-read.d.ts +57 -57
  131. package/dist/ledger-read.d.ts.map +1 -1
  132. package/dist/ledger-read.js +24 -24
  133. package/dist/ledger-read.js.map +1 -1
  134. package/dist/ledger-write.d.ts +2 -2
  135. package/dist/ledger-write.js +1 -1
  136. package/dist/lifecycle-gather.d.ts +1 -1
  137. package/dist/lifecycle-gather.js +16 -16
  138. package/dist/lifecycle-gather.js.map +1 -1
  139. package/dist/lifecycle-pools.d.ts +4 -4
  140. package/dist/lifecycle-pools.js +1 -1
  141. package/dist/merge-question-surfacer.d.ts +3 -3
  142. package/dist/merge-question-surfacer.js +2 -2
  143. package/dist/merge-question-surfacer.js.map +1 -1
  144. package/dist/mint-adr.js +4 -4
  145. package/dist/mirror-pool-scan.d.ts +2 -2
  146. package/dist/mirror-pool-scan.js +3 -3
  147. package/dist/mirror-pool-scan.js.map +1 -1
  148. package/dist/needs-attention.d.ts +13 -13
  149. package/dist/needs-attention.d.ts.map +1 -1
  150. package/dist/needs-attention.js +11 -11
  151. package/dist/needs-attention.js.map +1 -1
  152. package/dist/orphan-sidecar.d.ts +2 -2
  153. package/dist/placement.d.ts +6 -6
  154. package/dist/placement.js +2 -2
  155. package/dist/prompt.d.ts +16 -19
  156. package/dist/prompt.d.ts.map +1 -1
  157. package/dist/prompt.js +17 -19
  158. package/dist/prompt.js.map +1 -1
  159. package/dist/readiness.d.ts +1 -1
  160. package/dist/recover-isolated.js +1 -1
  161. package/dist/repo-config.js +12 -12
  162. package/dist/repo-config.js.map +1 -1
  163. package/dist/review-gate.d.ts +3 -3
  164. package/dist/review-gate.d.ts.map +1 -1
  165. package/dist/review-gate.js +11 -10
  166. package/dist/review-gate.js.map +1 -1
  167. package/dist/review-verdict.d.ts +2 -2
  168. package/dist/review-verdict.d.ts.map +1 -1
  169. package/dist/review-verdict.js +1 -1
  170. package/dist/run.d.ts +1 -1
  171. package/dist/run.js +4 -4
  172. package/dist/run.js.map +1 -1
  173. package/dist/scan.d.ts +10 -10
  174. package/dist/scan.d.ts.map +1 -1
  175. package/dist/scan.js +8 -8
  176. package/dist/scan.js.map +1 -1
  177. package/dist/select-order.d.ts +1 -1
  178. package/dist/select-priority.d.ts +12 -12
  179. package/dist/select-priority.d.ts.map +1 -1
  180. package/dist/select-priority.js +5 -5
  181. package/dist/select-priority.js.map +1 -1
  182. package/dist/sidecar.d.ts +2 -2
  183. package/dist/sidecar.js +2 -2
  184. package/dist/sidecar.js.map +1 -1
  185. package/dist/slug-namespace.d.ts +1 -1
  186. package/dist/slug-namespace.js +3 -3
  187. package/dist/slug-namespace.js.map +1 -1
  188. package/dist/spec-complete.js +2 -2
  189. package/dist/spec-complete.js.map +1 -1
  190. package/dist/start.d.ts +1 -1
  191. package/dist/start.js +3 -3
  192. package/dist/start.js.map +1 -1
  193. package/dist/status.d.ts +3 -3
  194. package/dist/status.js +4 -4
  195. package/dist/status.js.map +1 -1
  196. package/dist/surface-gate.d.ts +2 -2
  197. package/dist/surface-gate.d.ts.map +1 -1
  198. package/dist/surface-persist.d.ts +2 -2
  199. package/dist/surface-persist.d.ts.map +1 -1
  200. package/dist/tasker-review-loop.d.ts +8 -8
  201. package/dist/tasker-review-loop.d.ts.map +1 -1
  202. package/dist/tasker-review-loop.js +8 -8
  203. package/dist/tasker-review-loop.js.map +1 -1
  204. package/dist/tasking-eligibility.d.ts +21 -21
  205. package/dist/tasking-eligibility.d.ts.map +1 -1
  206. package/dist/tasking-eligibility.js +10 -10
  207. package/dist/tasking-lock.d.ts +8 -8
  208. package/dist/tasking-lock.d.ts.map +1 -1
  209. package/dist/tasking-lock.js +20 -21
  210. package/dist/tasking-lock.js.map +1 -1
  211. package/dist/tasking.d.ts +33 -33
  212. package/dist/tasking.d.ts.map +1 -1
  213. package/dist/tasking.js +88 -86
  214. package/dist/tasking.js.map +1 -1
  215. package/dist/triage-gate.d.ts +1 -1
  216. package/dist/triage-persist.d.ts +5 -5
  217. package/dist/triage-persist.js +15 -15
  218. package/dist/triage-persist.js.map +1 -1
  219. package/dist/verify-workflow-template.d.ts +1 -1
  220. package/dist/verify-workflow-template.js +2 -2
  221. package/dist/work-layout.d.ts +9 -7
  222. package/dist/work-layout.d.ts.map +1 -1
  223. package/dist/work-layout.js +9 -7
  224. package/dist/work-layout.js.map +1 -1
  225. package/dist/workspace.d.ts +1 -1
  226. package/package.json +1 -1
  227. package/src/advance-ci-template.ts +4 -4
  228. package/src/advance-classify.ts +5 -5
  229. package/src/advance-drivers.ts +10 -10
  230. package/src/advance-isolated.ts +3 -3
  231. package/src/advance-lifecycle-template.ts +9 -9
  232. package/src/advance-loop-driver.ts +3 -3
  233. package/src/advance-treeless-publish.ts +1 -1
  234. package/src/advance.ts +30 -30
  235. package/src/advancing-lock.ts +6 -6
  236. package/src/apply-decide.ts +2 -2
  237. package/src/apply-merge-action.ts +5 -5
  238. package/src/apply-persist.ts +8 -8
  239. package/src/buildable-body.ts +14 -14
  240. package/src/claim-cas.ts +4 -4
  241. package/src/cli.ts +83 -83
  242. package/src/close-job-template.ts +8 -8
  243. package/src/close-job.ts +26 -26
  244. package/src/complete.ts +11 -11
  245. package/src/concurrency.ts +1 -1
  246. package/src/config.ts +37 -37
  247. package/src/continue-branch.ts +1 -1
  248. package/src/cwd-section.ts +1 -1
  249. package/src/decision-engine.ts +3 -3
  250. package/src/do-autopick.ts +9 -9
  251. package/src/do-config.ts +6 -6
  252. package/src/do-remote-auto.ts +2 -2
  253. package/src/do.ts +47 -47
  254. package/src/drop-source.ts +2 -2
  255. package/src/env-config.ts +8 -8
  256. package/src/format.ts +3 -3
  257. package/src/frontmatter.ts +23 -33
  258. package/src/install-ci-branch-protection.ts +1 -1
  259. package/src/install-ci-capabilities/advance-lifecycle.ts +1 -1
  260. package/src/install-ci-capabilities/close-job.ts +1 -1
  261. package/src/install-ci-capabilities/example-noop.ts +1 -1
  262. package/src/install-ci-capabilities/intake.ts +2 -2
  263. package/src/install-ci-capabilities/verify.ts +1 -1
  264. package/src/install-ci-core.ts +4 -4
  265. package/src/install-ci-github.ts +1 -1
  266. package/src/install-ci.ts +4 -4
  267. package/src/intake-event.ts +6 -6
  268. package/src/intake-marker.ts +3 -3
  269. package/src/intake-triage.ts +2 -2
  270. package/src/intake-trigger-template.ts +17 -17
  271. package/src/intake.ts +97 -97
  272. package/src/integration-core.ts +35 -35
  273. package/src/isolation.ts +3 -3
  274. package/src/issue-provider.ts +4 -4
  275. package/src/item-lock.ts +21 -21
  276. package/src/item-path.ts +2 -2
  277. package/src/ledger-lint.ts +9 -9
  278. package/src/ledger-read.ts +81 -81
  279. package/src/ledger-write.ts +3 -3
  280. package/src/lifecycle-gather.ts +16 -16
  281. package/src/lifecycle-pools.ts +4 -4
  282. package/src/merge-question-surfacer.ts +4 -4
  283. package/src/mint-adr.ts +4 -4
  284. package/src/mirror-pool-scan.ts +5 -5
  285. package/src/needs-attention.ts +22 -22
  286. package/src/orphan-sidecar.ts +2 -2
  287. package/src/placement.ts +6 -6
  288. package/src/prompt.ts +20 -25
  289. package/src/readiness.ts +1 -1
  290. package/src/recover-isolated.ts +1 -1
  291. package/src/repo-config.ts +12 -12
  292. package/src/review-gate.ts +12 -11
  293. package/src/review-verdict.ts +2 -2
  294. package/src/run.ts +5 -5
  295. package/src/scan.ts +15 -15
  296. package/src/select-order.ts +1 -1
  297. package/src/select-priority.ts +13 -13
  298. package/src/sidecar.ts +3 -3
  299. package/src/slug-namespace.ts +3 -3
  300. package/src/spec-complete.ts +2 -2
  301. package/src/start.ts +4 -4
  302. package/src/status.ts +7 -7
  303. package/src/surface-gate.ts +2 -2
  304. package/src/surface-persist.ts +2 -2
  305. package/src/tasker-review-loop.ts +15 -15
  306. package/src/tasking-eligibility.ts +21 -21
  307. package/src/tasking-lock.ts +27 -28
  308. package/src/tasking.ts +123 -121
  309. package/src/triage-gate.ts +1 -1
  310. package/src/triage-persist.ts +16 -16
  311. package/src/verify-workflow-template.ts +2 -2
  312. package/src/work-layout.ts +9 -7
  313. package/src/workspace.ts +1 -1
@@ -7,19 +7,19 @@ import {
7
7
  import {workItemRel} from './work-layout.js';
8
8
 
9
9
  /**
10
- * The **tasking concurrency lock** (prd `auto-slice`, task `autoslice-lock`).
10
+ * The **tasking concurrency lock** (spec `auto-slice`, task `autoslice-lock`).
11
11
  *
12
- * Serialises *concurrent* taskers (two CI runs, or human + CI) so a prd is never
12
+ * Serialises *concurrent* taskers (two CI runs, or human + CI) so a spec is never
13
13
  * double-tasked. As of the capstone cut-over (task
14
- * `cutover-retire-slicing-advancing-markers-and-trim-folder-sets`, prd
14
+ * `cutover-retire-slicing-advancing-markers-and-trim-folder-sets`, spec
15
15
  * `ledger-status-per-item-lock-refs`; ADR `ledger-status-on-per-item-lock-refs`)
16
- * the legacy `git mv work/prds/ready/<slug>.md → work/tasking/<slug>.md` MARKER on `main`
16
+ * the legacy `git mv work/specs/ready/<slug>.md → work/tasking/<slug>.md` MARKER on `main`
17
17
  * is GONE: the body NEVER relocates until the durable promotion, exactly as claim
18
18
  * no longer moves the task body (task
19
19
  * `cutover-claim-body-stays-and-complete-sources-from-backlog`). The tasking lock
20
20
  * is now ONLY the UNIFIED per-item lock (`refs/dorfl/lock/<entry>`,
21
- * `action: task`, keyed `prd:<slug>`) — the SAME ref claim and advance use for
22
- * the same item, so tasking a prd is mutually exclusive with claiming/advancing
21
+ * `action: task`, keyed `spec:<slug>`) — the SAME ref claim and advance use for
22
+ * the same item, so tasking a spec is mutually exclusive with claiming/advancing
23
23
  * the SAME item BY CONSTRUCTION (the second acquirer loses the SAME create-only
24
24
  * ref CAS, with NO retry budget and NO false contention). There is no transient
25
25
  * status in `main`'s tree anymore, so a work branch cut from `main` inherits no
@@ -29,9 +29,9 @@ import {workItemRel} from './work-layout.js';
29
29
  * A `lost` (the item is already held for implement/task/advance) makes the
30
30
  * tasking acquire lose DEFINITIVELY (exit 2, no retry). On a successful acquire
31
31
  * it returns {@link AcquireTaskingLockResult.lockedBlob}: the git blob sha of the
32
- * prd body the lock TOOK, read from `work/prds/ready/<slug>.md` on the arbiter — the
32
+ * spec body the lock TOOK, read from `work/specs/ready/<slug>.md` on the arbiter — the
33
33
  * snapshot the tasker reads + tasks from, handed back so the integrate
34
- * transition can fail loud if the held prd was edited concurrently (the
34
+ * transition can fail loud if the held spec was edited concurrently (the
35
35
  * read-stability backstop). A dry-run takes no lock (it mutates nothing).
36
36
  *
37
37
  * - **Release** ({@link releaseTaskingLock}) DELETES the unified lock ref. It
@@ -51,11 +51,11 @@ import {workItemRel} from './work-layout.js';
51
51
  * The READ-STABILITY backstop (the content-identity stale check that used to live
52
52
  * in the release, comparing the held `work/tasking/<slug>.md` blob against the
53
53
  * acquire-time snapshot) now lives at the integrate seam (`tasking.ts`
54
- * `heldSpecIsStale`, comparing `work/prds/ready/<slug>.md`) — relocated because the
54
+ * `heldSpecIsStale`, comparing `work/specs/ready/<slug>.md`) — relocated because the
55
55
  * completing transition, not the release, owns the commit. See
56
56
  * `work/notes/observations/tasking-lock-does-not-stabilise-prd-content.md`.
57
57
  *
58
- * This module provides the lock PRIMITIVES only. The orchestrating `do prd:<slug>`
58
+ * This module provides the lock PRIMITIVES only. The orchestrating `do spec:<slug>`
59
59
  * tasking command (`tasking.ts`) acquires, drives the agent's tasking, integrates
60
60
  * the emitted tasks + the durable `prd → prd-tasked` move, and releases. The
61
61
  * human path (no contention) may task on `main` directly without the lock.
@@ -74,7 +74,7 @@ export type AcquireTaskingLockOutcome =
74
74
  export type AcquireTaskingLockExitCode = 0 | 1 | 2 | 3;
75
75
 
76
76
  export interface AcquireTaskingLockOptions {
77
- /** The prd slug to lock (`work/prds/ready/<slug>.md`). */
77
+ /** The spec slug to lock (`work/specs/ready/<slug>.md`). */
78
78
  slug: string;
79
79
  /** Working clone/worktree the lock acquire runs in. */
80
80
  cwd: string;
@@ -98,10 +98,10 @@ export interface AcquireTaskingLockResult {
98
98
  /** Human-readable summary of the terminal condition. */
99
99
  message: string;
100
100
  /**
101
- * On a successful acquire (`acquired`), the git BLOB sha of the prd body that
102
- * the lock TOOK (`work/prds/ready/<slug>.md` on the arbiter). This IS the snapshot the
101
+ * On a successful acquire (`acquired`), the git BLOB sha of the spec body that
102
+ * the lock TOOK (`work/specs/ready/<slug>.md` on the arbiter). This IS the snapshot the
103
103
  * tasker reads + tasks from; the integrate transition compares the current
104
- * `work/prds/ready/<slug>.md` blob against it to fail loud on a concurrent edit (the
104
+ * `work/specs/ready/<slug>.md` blob against it to fail loud on a concurrent edit (the
105
105
  * read-stability backstop). `undefined` unless `outcome === 'acquired'` (and on
106
106
  * dry-run, where nothing was published).
107
107
  */
@@ -157,7 +157,7 @@ async function runAcquire(
157
157
  }
158
158
  const by = options.by || (await resolveBy(cwd, env));
159
159
 
160
- // Is the prd still lockable (present in work/prds/ready/ on the arbiter's main)?
160
+ // Is the spec still lockable (present in work/specs/ready/ on the arbiter's main)?
161
161
  await gitHard(['fetch', '--quiet', arbiter], cwd, env);
162
162
  const spec = workItemRel('specs-ready', `${slug}.md`);
163
163
  const specBlob = await gitSoft(
@@ -166,7 +166,7 @@ async function runAcquire(
166
166
  env,
167
167
  );
168
168
  if (specBlob.status !== 0) {
169
- const message = `'${spec}' not found on ${arbiter}/main (no such prd, or it was already moved/tasked).`;
169
+ const message = `'${spec}' not found on ${arbiter}/main (no such spec, or it was already moved/tasked).`;
170
170
  note(message);
171
171
  return {exitCode: 2, outcome: 'lost', message};
172
172
  }
@@ -180,18 +180,17 @@ async function runAcquire(
180
180
  return {exitCode: 0, outcome: 'acquired', message, lockedBlob};
181
181
  }
182
182
 
183
- // Acquire the UNIFIED per-item lock (`action: task`, keyed `prd:<slug>` so it
183
+ // Acquire the UNIFIED per-item lock (`action: task`, keyed `spec:<slug>` so it
184
184
  // shares the ONE ref with claim/advance of the SAME item). A create-only ref
185
185
  // CAS: the winner holds it, the loser is DEFINITIVELY `lost` (exit 2, no retry
186
186
  // budget). No auto-steal of an orphaned lock, consistent with claim/advance and
187
187
  // the ADR's recovery model (no liveness heartbeat / auto-sweep; a human asserts
188
188
  // a lock is dead via `release-lock` + `gc --ledger`).
189
- // MIGRATE step (prd `prd-to-spec-vocabulary-cutover-and-migration-command`):
190
- // EMIT the parent-spec item identity as `spec:<slug>` so the unified per-item
191
- // lock ref is `refs/dorfl/lock/spec-<slug>` (the expand-lock task made
192
- // `spec:<slug>` resolve to a `spec-<slug>` entry). The resolver still ACCEPTS
193
- // `prd:<slug>`, so any lock taken under the old identity stays readable; the
194
- // contract task removes the legacy form.
189
+ // Spec `prd-to-spec-vocabulary-cutover-and-migration-command`: the parent-spec
190
+ // item identity is `spec:<slug>`, so the unified per-item lock ref is
191
+ // `refs/dorfl/lock/spec-<slug>`. HARD CUTOVER: the legacy `prd:<slug>` identity
192
+ // is GONE the resolver no longer treats `prd:` as the spec namespace (a
193
+ // `prd:<slug>` arg is a bare literal task slug now).
195
194
  const lock = await acquireItemLock({
196
195
  item: `spec:${slug}`,
197
196
  action: 'task',
@@ -228,7 +227,7 @@ export type ReleaseTaskingLockOutcome =
228
227
  export type ReleaseTaskingLockExitCode = 0 | 1 | 2 | 3 | 4;
229
228
 
230
229
  export interface ReleaseTaskingLockOptions {
231
- /** The prd slug whose lock to release. */
230
+ /** The spec slug whose lock to release. */
232
231
  slug: string;
233
232
  /** Working clone/worktree the release runs in. */
234
233
  cwd: string;
@@ -249,9 +248,9 @@ export interface ReleaseTaskingLockOptions {
249
248
  /**
250
249
  * The tasker review→edit LOOP's **decomposition-unclear** verdict
251
250
  * (`slicer-review-edit-loop`), or the task-SET acceptance gate's `block`:
252
- * instead of DELETING the lock (returning the prd to the claimable/taskable
251
+ * instead of DELETING the lock (returning the spec to the claimable/taskable
253
252
  * pool), amend it `active → stuck` with this reason recorded on the entry,
254
- * emitting NO guessed tasks. The prd body stays in `work/prds/ready/` (it never moved
253
+ * emitting NO guessed tasks. The spec body stays in `work/specs/ready/` (it never moved
255
254
  * under the lock); the stuck lock IS the tasking needs-attention surface (no
256
255
  * `work/needs-attention/` folder write), so it is NOT re-taskable until a human
257
256
  * resolves it via `release-lock`/`resume`. Omitted ⇒ the normal release DELETES
@@ -275,7 +274,7 @@ export interface ReleaseTaskingLockResult {
275
274
  * Release the tasking lock for `slug`: DELETE the unified `action: task` lock ref
276
275
  * (idempotent — an already-absent ref is a clean `released`). It moves NO lifecycle
277
276
  * file: the durable `prd → prd-tasked` success move is owned by the integrate band,
278
- * and the prd body never left `work/prds/ready/` under the lock, so there is no
277
+ * and the spec body never left `work/specs/ready/` under the lock, so there is no
279
278
  * `tasking/ → prd/` restore.
280
279
  *
281
280
  * When `routeToNeedsAttention` is set (the tasker decomposition-unclear verdict /
@@ -328,7 +327,7 @@ async function runRelease(
328
327
 
329
328
  // DECOMPOSITION-UNCLEAR / TASK-GATE BLOCK: amend the lock `active → stuck` with
330
329
  // the reason on the entry (the tasking needs-attention surface), NOT delete it.
331
- // The prd body stays in `work/prds/ready/`; the stuck lock keeps it out of the
330
+ // The spec body stays in `work/specs/ready/`; the stuck lock keeps it out of the
332
331
  // taskable pool until a human resolves it (`release-lock`/`resume`).
333
332
  if (options.routeToNeedsAttention !== undefined) {
334
333
  // MIGRATE: EMIT `spec:<slug>` (keyed to the `spec-<slug>` lock entry).