dorfl 0.1.0 → 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 (324) 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 +83 -77
  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 +22 -22
  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 +33 -39
  80. package/dist/frontmatter.d.ts.map +1 -1
  81. package/dist/frontmatter.js +18 -31
  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/prd-to-spec.d.ts +15 -1
  156. package/dist/prd-to-spec.d.ts.map +1 -1
  157. package/dist/prd-to-spec.js +36 -14
  158. package/dist/prd-to-spec.js.map +1 -1
  159. package/dist/prompt.d.ts +24 -24
  160. package/dist/prompt.d.ts.map +1 -1
  161. package/dist/prompt.js +29 -31
  162. package/dist/prompt.js.map +1 -1
  163. package/dist/protocol/CLAIM-PROTOCOL.md +4 -4
  164. package/dist/protocol/REVIEW-PROTOCOL.md +1 -1
  165. package/dist/protocol/TASKING-PROTOCOL.md +12 -12
  166. package/dist/protocol/WORK-CONTRACT.md +39 -39
  167. package/dist/protocol/spec-template.md +1 -1
  168. package/dist/protocol/task-template.md +3 -3
  169. package/dist/readiness.d.ts +1 -1
  170. package/dist/recover-isolated.js +1 -1
  171. package/dist/repo-config.js +12 -12
  172. package/dist/repo-config.js.map +1 -1
  173. package/dist/review-gate.d.ts +3 -3
  174. package/dist/review-gate.d.ts.map +1 -1
  175. package/dist/review-gate.js +11 -10
  176. package/dist/review-gate.js.map +1 -1
  177. package/dist/review-verdict.d.ts +2 -2
  178. package/dist/review-verdict.d.ts.map +1 -1
  179. package/dist/review-verdict.js +1 -1
  180. package/dist/run.d.ts +1 -1
  181. package/dist/run.js +5 -5
  182. package/dist/run.js.map +1 -1
  183. package/dist/scan.d.ts +10 -10
  184. package/dist/scan.d.ts.map +1 -1
  185. package/dist/scan.js +8 -8
  186. package/dist/scan.js.map +1 -1
  187. package/dist/select-order.d.ts +1 -1
  188. package/dist/select-priority.d.ts +12 -12
  189. package/dist/select-priority.d.ts.map +1 -1
  190. package/dist/select-priority.js +5 -5
  191. package/dist/select-priority.js.map +1 -1
  192. package/dist/sidecar.d.ts +2 -2
  193. package/dist/sidecar.js +2 -2
  194. package/dist/sidecar.js.map +1 -1
  195. package/dist/slug-namespace.d.ts +1 -1
  196. package/dist/slug-namespace.js +3 -3
  197. package/dist/slug-namespace.js.map +1 -1
  198. package/dist/spec-complete.js +2 -2
  199. package/dist/spec-complete.js.map +1 -1
  200. package/dist/start.d.ts +1 -1
  201. package/dist/start.js +3 -3
  202. package/dist/start.js.map +1 -1
  203. package/dist/status.d.ts +3 -3
  204. package/dist/status.js +4 -4
  205. package/dist/status.js.map +1 -1
  206. package/dist/surface-gate.d.ts +2 -2
  207. package/dist/surface-gate.d.ts.map +1 -1
  208. package/dist/surface-persist.d.ts +2 -2
  209. package/dist/surface-persist.d.ts.map +1 -1
  210. package/dist/tasker-review-loop.d.ts +8 -8
  211. package/dist/tasker-review-loop.d.ts.map +1 -1
  212. package/dist/tasker-review-loop.js +8 -8
  213. package/dist/tasker-review-loop.js.map +1 -1
  214. package/dist/tasking-eligibility.d.ts +21 -21
  215. package/dist/tasking-eligibility.d.ts.map +1 -1
  216. package/dist/tasking-eligibility.js +10 -10
  217. package/dist/tasking-lock.d.ts +8 -8
  218. package/dist/tasking-lock.d.ts.map +1 -1
  219. package/dist/tasking-lock.js +20 -21
  220. package/dist/tasking-lock.js.map +1 -1
  221. package/dist/tasking.d.ts +33 -33
  222. package/dist/tasking.d.ts.map +1 -1
  223. package/dist/tasking.js +89 -88
  224. package/dist/tasking.js.map +1 -1
  225. package/dist/triage-gate.d.ts +1 -1
  226. package/dist/triage-persist.d.ts +5 -5
  227. package/dist/triage-persist.js +15 -15
  228. package/dist/triage-persist.js.map +1 -1
  229. package/dist/verify-workflow-template.d.ts +1 -1
  230. package/dist/verify-workflow-template.js +2 -2
  231. package/dist/work-layout.d.ts +9 -7
  232. package/dist/work-layout.d.ts.map +1 -1
  233. package/dist/work-layout.js +9 -7
  234. package/dist/work-layout.js.map +1 -1
  235. package/dist/workspace.d.ts +1 -1
  236. package/package.json +1 -1
  237. package/src/advance-ci-template.ts +4 -4
  238. package/src/advance-classify.ts +5 -5
  239. package/src/advance-drivers.ts +10 -10
  240. package/src/advance-isolated.ts +3 -3
  241. package/src/advance-lifecycle-template.ts +9 -9
  242. package/src/advance-loop-driver.ts +3 -3
  243. package/src/advance-treeless-publish.ts +1 -1
  244. package/src/advance.ts +30 -30
  245. package/src/advancing-lock.ts +6 -6
  246. package/src/apply-decide.ts +2 -2
  247. package/src/apply-merge-action.ts +5 -5
  248. package/src/apply-persist.ts +8 -8
  249. package/src/buildable-body.ts +14 -14
  250. package/src/claim-cas.ts +4 -4
  251. package/src/cli.ts +94 -84
  252. package/src/close-job-template.ts +8 -8
  253. package/src/close-job.ts +26 -26
  254. package/src/complete.ts +11 -11
  255. package/src/concurrency.ts +1 -1
  256. package/src/config.ts +37 -37
  257. package/src/continue-branch.ts +1 -1
  258. package/src/cwd-section.ts +1 -1
  259. package/src/decision-engine.ts +3 -3
  260. package/src/do-autopick.ts +9 -9
  261. package/src/do-config.ts +6 -6
  262. package/src/do-remote-auto.ts +2 -2
  263. package/src/do.ts +49 -49
  264. package/src/drop-source.ts +2 -2
  265. package/src/env-config.ts +8 -8
  266. package/src/format.ts +3 -3
  267. package/src/frontmatter.ts +42 -60
  268. package/src/install-ci-branch-protection.ts +1 -1
  269. package/src/install-ci-capabilities/advance-lifecycle.ts +1 -1
  270. package/src/install-ci-capabilities/close-job.ts +1 -1
  271. package/src/install-ci-capabilities/example-noop.ts +1 -1
  272. package/src/install-ci-capabilities/intake.ts +2 -2
  273. package/src/install-ci-capabilities/verify.ts +1 -1
  274. package/src/install-ci-core.ts +4 -4
  275. package/src/install-ci-github.ts +1 -1
  276. package/src/install-ci.ts +4 -4
  277. package/src/intake-event.ts +6 -6
  278. package/src/intake-marker.ts +3 -3
  279. package/src/intake-triage.ts +2 -2
  280. package/src/intake-trigger-template.ts +17 -17
  281. package/src/intake.ts +97 -97
  282. package/src/integration-core.ts +35 -35
  283. package/src/isolation.ts +3 -3
  284. package/src/issue-provider.ts +4 -4
  285. package/src/item-lock.ts +21 -21
  286. package/src/item-path.ts +2 -2
  287. package/src/ledger-lint.ts +9 -9
  288. package/src/ledger-read.ts +81 -81
  289. package/src/ledger-write.ts +3 -3
  290. package/src/lifecycle-gather.ts +16 -16
  291. package/src/lifecycle-pools.ts +4 -4
  292. package/src/merge-question-surfacer.ts +4 -4
  293. package/src/mint-adr.ts +4 -4
  294. package/src/mirror-pool-scan.ts +5 -5
  295. package/src/needs-attention.ts +22 -22
  296. package/src/orphan-sidecar.ts +2 -2
  297. package/src/placement.ts +6 -6
  298. package/src/prd-to-spec.ts +51 -15
  299. package/src/prompt.ts +33 -35
  300. package/src/readiness.ts +1 -1
  301. package/src/recover-isolated.ts +1 -1
  302. package/src/repo-config.ts +12 -12
  303. package/src/review-gate.ts +12 -11
  304. package/src/review-verdict.ts +2 -2
  305. package/src/run.ts +6 -6
  306. package/src/scan.ts +15 -15
  307. package/src/select-order.ts +1 -1
  308. package/src/select-priority.ts +13 -13
  309. package/src/sidecar.ts +3 -3
  310. package/src/slug-namespace.ts +3 -3
  311. package/src/spec-complete.ts +2 -2
  312. package/src/start.ts +4 -4
  313. package/src/status.ts +7 -7
  314. package/src/surface-gate.ts +2 -2
  315. package/src/surface-persist.ts +2 -2
  316. package/src/tasker-review-loop.ts +15 -15
  317. package/src/tasking-eligibility.ts +21 -21
  318. package/src/tasking-lock.ts +27 -28
  319. package/src/tasking.ts +124 -123
  320. package/src/triage-gate.ts +1 -1
  321. package/src/triage-persist.ts +16 -16
  322. package/src/verify-workflow-template.ts +2 -2
  323. package/src/work-layout.ts +9 -7
  324. package/src/workspace.ts +1 -1
@@ -1,6 +1,6 @@
1
1
  import { type SidecarType } from './sidecar.js';
2
2
  /**
3
- * The **unified item-lock module** (prd `ledger-status-per-item-lock-refs`, ADR
3
+ * The **unified item-lock module** (spec `ledger-status-per-item-lock-refs`, ADR
4
4
  * `ledger-status-on-per-item-lock-refs`). The runner's ONE lock primitive: ONE
5
5
  * lock per item, on a PER-ITEM hidden ref `refs/dorfl/lock/<entry>`,
6
6
  * acquired by an ATOMIC create-only push and released by DELETING the ref, with a
@@ -12,12 +12,12 @@ import { type SidecarType } from './sidecar.js';
12
12
  * It GENERALISES the green tracer that proved the dangerous core end-to-end on a
13
13
  * bare `file://` arbiter (the tracer is now this file). The one production
14
14
  * difference from the tracer is the IDENTITY SEAM: callers pass a NAMESPACED item
15
- * identity (`task:<slug>` / `prd:<slug>` / `observation:<slug>` / `obs:<slug>`,
15
+ * identity (`task:<slug>` / `spec:<slug>` / `observation:<slug>` / `obs:<slug>`,
16
16
  * or a bare `<slug>` = task), and this module derives the type-encoded lock
17
17
  * `<entry>` (`<type>-<slug>`) through {@link resolveSidecarIdentity} — the SAME
18
18
  * single source of truth the sidecar (`work/questions/<type>-<slug>.md`) and the
19
19
  * work branch (`work/<type>-<slug>`) already use. There is deliberately NO second
20
- * identity scheme: a task, a prd,
20
+ * identity scheme: a task, a spec,
21
21
  * and an observation that share a slug get DISTINCT lock refs, and the SAME item
22
22
  * under different actions shares ONE ref (so implement / task / advance on one
23
23
  * item are mutually exclusive by construction).
@@ -57,7 +57,7 @@ export declare const LOCK_REF_PREFIX = "refs/dorfl/lock";
57
57
  * (`<type>-<slug>`) from a NAMESPACED item identity, through the shared
58
58
  * {@link resolveSidecarIdentity} resolver (the single source of truth, which the
59
59
  * sidecar filename + the advancing-lock marker also key onto). Accepts the same
60
- * forms as that resolver: `task:<slug>` / `prd:<slug>` / `observation:<slug>` /
60
+ * forms as that resolver: `task:<slug>` / `spec:<slug>` / `observation:<slug>` /
61
61
  * `obs:<slug>`, or a bare `<slug>` (= task). Acquire/release/read ALL key
62
62
  * through THIS function, so there is one — and only one — addressing scheme.
63
63
  */
@@ -114,7 +114,7 @@ export interface ReleaseResult {
114
114
  }
115
115
  /**
116
116
  * Outcome of an AMEND-style transition (mark-stuck / resume / requeue) — the
117
- * lock-entry STATE MACHINE's interior moves (prd `ledger-status-per-item-lock-refs`,
117
+ * lock-entry STATE MACHINE's interior moves (spec `ledger-status-per-item-lock-refs`,
118
118
  * the C8 lock-entry state machine in the design trail). Each is a single CAS on the
119
119
  * held ref (no retry loop), so the verdict is definitive:
120
120
  * - `transitioned` — we won the CAS; the entry now holds the target `(action, state)`.
@@ -150,7 +150,7 @@ export interface TransitionResult {
150
150
  export declare function serialiseLockEntry(e: LockEntry): string;
151
151
  export interface AcquireOptions {
152
152
  /**
153
- * The NAMESPACED item identity to lock (`task:<slug>` / `prd:<slug>` /
153
+ * The NAMESPACED item identity to lock (`task:<slug>` / `spec:<slug>` /
154
154
  * `observation:<slug>` / `obs:<slug>`, or a bare `<slug>` = task). Resolved to
155
155
  * the type-encoded lock `<entry>` through {@link lockEntryFor}.
156
156
  */
@@ -196,7 +196,7 @@ export interface ReleaseHeldResult {
196
196
  message: string;
197
197
  }
198
198
  /**
199
- * GUARDED release for a runner that KNOWS it acquired and HELD the lock (prd
199
+ * GUARDED release for a runner that KNOWS it acquired and HELD the lock (spec
200
200
  * `ledger-status-per-item-lock-refs` US #13): unlike {@link releaseItemLock} —
201
201
  * whose `not-held` is a BENIGN idempotent case the complete/tasking/needs-attention
202
202
  * callers tolerate (the body may predate the lock, or a crash-recovery may have
@@ -291,19 +291,19 @@ export declare function readItemLock(opts: ReleaseOptions): Promise<LockEntry |
291
291
  * authoritative resting records the cross-substrate reconciliation reads. An
292
292
  * item is TERMINAL on `main` iff ANY of these paths exists on `<arbiter>/main`.
293
293
  * The won't-proceed terminal is PER-REGIME (the slug-collision correctness fix:
294
- * a dropped task and a dropped prd sharing a slug used to collide on one
294
+ * a dropped task and a dropped spec sharing a slug used to collide on one
295
295
  * bare-slug `work/dropped/<slug>.md`):
296
296
  * - a TASK: `work/tasks/done/<slug>.md` (completed) OR
297
297
  * `work/tasks/cancelled/<slug>.md` (the task regime's won't-proceed terminal).
298
- * - a PRD: `work/prds/tasked/<slug>.md` (tasked) OR `work/prds/dropped/<slug>.md`
299
- * (the prd regime's won't-proceed terminal).
298
+ * - a SPEC: `work/specs/tasked/<slug>.md` (tasked) OR `work/specs/dropped/<slug>.md`
299
+ * (the spec regime's won't-proceed terminal).
300
300
  * - an OBSERVATION: NONE. A note has no durable terminal folder — it leaves by
301
301
  * deletion (its absence, not a terminal record, is the end state). A promoted
302
- * observation becomes a NEW task/prd with its own ref.
302
+ * observation becomes a NEW task/spec with its own ref.
303
303
  */
304
304
  export declare function terminalMainPaths(type: SidecarType, slug: string): string[];
305
305
  /** The outcome of a cross-substrate reconciliation of one item's lock against
306
- * the authoritative `main` durable record (prd `ledger-status-per-item-lock-refs`
306
+ * the authoritative `main` durable record (spec `ledger-status-per-item-lock-refs`
307
307
  * US #9/#10; ADR `ledger-status-on-per-item-lock-refs`). */
308
308
  export type ReconcileOutcome = 'cleared-stale' | 'kept-stuck' | 'kept-in-flight' | 'no-lock' | 'error';
309
309
  export interface ReconcileResult {
@@ -312,19 +312,19 @@ export interface ReconcileResult {
312
312
  entry: string;
313
313
  ref: string;
314
314
  /** Whether `<arbiter>/main` shows the item terminal (per {@link terminalMainPaths}:
315
- * a task at `tasks/done`/`tasks/cancelled`, a prd at `prds/tasked`/`prds/dropped`). */
315
+ * a task at `tasks/done`/`tasks/cancelled`, a spec at `specs/tasked`/`specs/dropped`). */
316
316
  terminalOnMain: boolean;
317
317
  message: string;
318
318
  }
319
319
  /**
320
320
  * Reconcile ONE item's per-item lock against the AUTHORITATIVE `main` durable
321
- * record — the heart of complete's cross-substrate crash-safety (prd
321
+ * record — the heart of complete's cross-substrate crash-safety (spec
322
322
  * `ledger-status-per-item-lock-refs` US #9/#10; ADR
323
323
  * `ledger-status-on-per-item-lock-refs`; the design trail's Amendment 6).
324
324
  *
325
325
  * complete's order is hold lock → land the DURABLE `main` move FIRST → release
326
326
  * the lock SECOND. A crash BETWEEN the move and the release leaves a
327
- * terminal-on-`main` item (a completed/cancelled task or a tasked/dropped prd,
327
+ * terminal-on-`main` item (a completed/cancelled task or a tasked/dropped spec,
328
328
  * per {@link terminalMainPaths}) with a STILL-HELD lock — a stale lock with no
329
329
  * in-flight work behind it. This is the recovery that converges it.
330
330
  *
@@ -409,7 +409,7 @@ export interface LockReportEntry {
409
409
  */
410
410
  reconcile: ReconcileOutcome;
411
411
  }
412
- /** The `gc --ledger` stuck/orphaned-lock REPORT (prd
412
+ /** The `gc --ledger` stuck/orphaned-lock REPORT (spec
413
413
  * `ledger-status-per-item-lock-refs` US #14): every lingering per-item lock on the
414
414
  * arbiter, each classified read-only against `main`. An EMPTY list = no locks held
415
415
  * (an absent ref namespace reads as `[]`, the recoverable "all locks released"
@@ -418,7 +418,7 @@ export interface ItemLockReport {
418
418
  locks: LockReportEntry[];
419
419
  }
420
420
  /**
421
- * Build the `gc --ledger` stuck/orphaned-lock REPORT (prd
421
+ * Build the `gc --ledger` stuck/orphaned-lock REPORT (spec
422
422
  * `ledger-status-per-item-lock-refs` US #12/#13/#14; ADR
423
423
  * `ledger-status-on-per-item-lock-refs`): enumerate every per-item lock currently
424
424
  * held on the arbiter ({@link listItemLockEntries} — held active + stuck, with
@@ -450,7 +450,7 @@ export declare function reportItemLocks(cwd: string, arbiter?: string, env?: Nod
450
450
  */
451
451
  /**
452
452
  * Does the `gc --ledger` lock report contain a lock that NEEDS HUMAN ATTENTION
453
- * (prd US#14/#21; ADR `ledger-status-on-per-item-lock-refs`: this surface is the
453
+ * (spec US#14/#21; ADR `ledger-status-on-per-item-lock-refs`: this surface is the
454
454
  * STUCK / crash-orphaned lock, NOT every held one)? TRUE iff some lock is
455
455
  * `kept-stuck` (terminal-on-`main` + stuck) or `cleared-stale`-eligible
456
456
  * (terminal-on-`main` + a stale active orphan). A `kept-in-flight` (active,
@@ -504,7 +504,7 @@ export interface ReapReport {
504
504
  lost: number;
505
505
  }
506
506
  /**
507
- * The OPT-IN `gc --ledger --reap-stale-locks` SWEEP (prd
507
+ * The OPT-IN `gc --ledger --reap-stale-locks` SWEEP (spec
508
508
  * `ledger-status-per-item-lock-refs` US #14): a human asserting "clear the dead
509
509
  * TERMINAL locks now", so one command sweeps every orphaned terminal lock instead
510
510
  * of N hand-run `release-lock`s. It is the WRITE twin of {@link reportItemLocks}
@@ -560,7 +560,7 @@ export declare function itemFromLockEntry(entry: string): string;
560
560
  export declare function listItemLocks(cwd: string, arbiter?: string, env?: NodeJS.ProcessEnv): Promise<string[]>;
561
561
  /**
562
562
  * Read the FULL lock entries currently held on the arbiter — the `status`/`scan`
563
- * in-flight read path (prd `ledger-status-per-item-lock-refs` US #8; task
563
+ * in-flight read path (spec `ledger-status-per-item-lock-refs` US #8; task
564
564
  * `needs-attention-as-stuck-lock-state`). One fetch of the lock refs, then read
565
565
  * each held entry's `lock.md` blob, returning the parsed {@link LockEntry} for
566
566
  * every ref (so a caller can surface `active` (in-progress) and `stuck`
@@ -572,7 +572,7 @@ export declare function listItemLocks(cwd: string, arbiter?: string, env?: NodeJ
572
572
  export declare function listItemLockEntries(cwd: string, arbiter?: string, env?: NodeJS.ProcessEnv): Promise<LockEntry[]>;
573
573
  /**
574
574
  * List the TASK slugs currently lock-held on the arbiter — the held-slug set the
575
- * `ready/` pool readers SUBTRACT (prd `ledger-status-per-item-lock-refs` US #15;
575
+ * `ready/` pool readers SUBTRACT (spec `ledger-status-per-item-lock-refs` US #15;
576
576
  * task `claim-acquires-unified-lock-no-body-move`). Enumerates {@link listItemLocks}
577
577
  * and keeps only the `task-<slug>` entries (a prd/observation lock does not gate
578
578
  * the TASK pool), mapping each to its bare `<slug>`.
@@ -1 +1 @@
1
- {"version":3,"file":"item-lock.d.ts","sourceRoot":"","sources":["../src/item-lock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"item-lock.d.ts","sourceRoot":"","sources":["../src/item-lock.ts"],"names":[],"mappings":"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"}
package/dist/item-lock.js CHANGED
@@ -3,7 +3,7 @@ import { runAsync } from './git.js';
3
3
  import { resolveSidecarIdentity } from './sidecar.js';
4
4
  import { workItemRel } from './work-layout.js';
5
5
  /**
6
- * The **unified item-lock module** (prd `ledger-status-per-item-lock-refs`, ADR
6
+ * The **unified item-lock module** (spec `ledger-status-per-item-lock-refs`, ADR
7
7
  * `ledger-status-on-per-item-lock-refs`). The runner's ONE lock primitive: ONE
8
8
  * lock per item, on a PER-ITEM hidden ref `refs/dorfl/lock/<entry>`,
9
9
  * acquired by an ATOMIC create-only push and released by DELETING the ref, with a
@@ -15,12 +15,12 @@ import { workItemRel } from './work-layout.js';
15
15
  * It GENERALISES the green tracer that proved the dangerous core end-to-end on a
16
16
  * bare `file://` arbiter (the tracer is now this file). The one production
17
17
  * difference from the tracer is the IDENTITY SEAM: callers pass a NAMESPACED item
18
- * identity (`task:<slug>` / `prd:<slug>` / `observation:<slug>` / `obs:<slug>`,
18
+ * identity (`task:<slug>` / `spec:<slug>` / `observation:<slug>` / `obs:<slug>`,
19
19
  * or a bare `<slug>` = task), and this module derives the type-encoded lock
20
20
  * `<entry>` (`<type>-<slug>`) through {@link resolveSidecarIdentity} — the SAME
21
21
  * single source of truth the sidecar (`work/questions/<type>-<slug>.md`) and the
22
22
  * work branch (`work/<type>-<slug>`) already use. There is deliberately NO second
23
- * identity scheme: a task, a prd,
23
+ * identity scheme: a task, a spec,
24
24
  * and an observation that share a slug get DISTINCT lock refs, and the SAME item
25
25
  * under different actions shares ONE ref (so implement / task / advance on one
26
26
  * item are mutually exclusive by construction).
@@ -60,7 +60,7 @@ export const LOCK_REF_PREFIX = 'refs/dorfl/lock';
60
60
  * (`<type>-<slug>`) from a NAMESPACED item identity, through the shared
61
61
  * {@link resolveSidecarIdentity} resolver (the single source of truth, which the
62
62
  * sidecar filename + the advancing-lock marker also key onto). Accepts the same
63
- * forms as that resolver: `task:<slug>` / `prd:<slug>` / `observation:<slug>` /
63
+ * forms as that resolver: `task:<slug>` / `spec:<slug>` / `observation:<slug>` /
64
64
  * `obs:<slug>`, or a bare `<slug>` (= task). Acquire/release/read ALL key
65
65
  * through THIS function, so there is one — and only one — addressing scheme.
66
66
  */
@@ -259,7 +259,7 @@ export async function releaseItemLock(opts) {
259
259
  }
260
260
  }
261
261
  /**
262
- * GUARDED release for a runner that KNOWS it acquired and HELD the lock (prd
262
+ * GUARDED release for a runner that KNOWS it acquired and HELD the lock (spec
263
263
  * `ledger-status-per-item-lock-refs` US #13): unlike {@link releaseItemLock} —
264
264
  * whose `not-held` is a BENIGN idempotent case the complete/tasking/needs-attention
265
265
  * callers tolerate (the body may predate the lock, or a crash-recovery may have
@@ -596,15 +596,15 @@ export async function readItemLock(opts) {
596
596
  * authoritative resting records the cross-substrate reconciliation reads. An
597
597
  * item is TERMINAL on `main` iff ANY of these paths exists on `<arbiter>/main`.
598
598
  * The won't-proceed terminal is PER-REGIME (the slug-collision correctness fix:
599
- * a dropped task and a dropped prd sharing a slug used to collide on one
599
+ * a dropped task and a dropped spec sharing a slug used to collide on one
600
600
  * bare-slug `work/dropped/<slug>.md`):
601
601
  * - a TASK: `work/tasks/done/<slug>.md` (completed) OR
602
602
  * `work/tasks/cancelled/<slug>.md` (the task regime's won't-proceed terminal).
603
- * - a PRD: `work/prds/tasked/<slug>.md` (tasked) OR `work/prds/dropped/<slug>.md`
604
- * (the prd regime's won't-proceed terminal).
603
+ * - a SPEC: `work/specs/tasked/<slug>.md` (tasked) OR `work/specs/dropped/<slug>.md`
604
+ * (the spec regime's won't-proceed terminal).
605
605
  * - an OBSERVATION: NONE. A note has no durable terminal folder — it leaves by
606
606
  * deletion (its absence, not a terminal record, is the end state). A promoted
607
- * observation becomes a NEW task/prd with its own ref.
607
+ * observation becomes a NEW task/spec with its own ref.
608
608
  */
609
609
  export function terminalMainPaths(type, slug) {
610
610
  const file = `${slug}.md`;
@@ -625,13 +625,13 @@ export function terminalMainPaths(type, slug) {
625
625
  }
626
626
  /**
627
627
  * Reconcile ONE item's per-item lock against the AUTHORITATIVE `main` durable
628
- * record — the heart of complete's cross-substrate crash-safety (prd
628
+ * record — the heart of complete's cross-substrate crash-safety (spec
629
629
  * `ledger-status-per-item-lock-refs` US #9/#10; ADR
630
630
  * `ledger-status-on-per-item-lock-refs`; the design trail's Amendment 6).
631
631
  *
632
632
  * complete's order is hold lock → land the DURABLE `main` move FIRST → release
633
633
  * the lock SECOND. A crash BETWEEN the move and the release leaves a
634
- * terminal-on-`main` item (a completed/cancelled task or a tasked/dropped prd,
634
+ * terminal-on-`main` item (a completed/cancelled task or a tasked/dropped spec,
635
635
  * per {@link terminalMainPaths}) with a STILL-HELD lock — a stale lock with no
636
636
  * in-flight work behind it. This is the recovery that converges it.
637
637
  *
@@ -881,7 +881,7 @@ export async function classifyItemLockAgainstMain(opts) {
881
881
  }
882
882
  }
883
883
  /**
884
- * Build the `gc --ledger` stuck/orphaned-lock REPORT (prd
884
+ * Build the `gc --ledger` stuck/orphaned-lock REPORT (spec
885
885
  * `ledger-status-per-item-lock-refs` US #12/#13/#14; ADR
886
886
  * `ledger-status-on-per-item-lock-refs`): enumerate every per-item lock currently
887
887
  * held on the arbiter ({@link listItemLockEntries} — held active + stuck, with
@@ -929,7 +929,7 @@ export async function reportItemLocks(cwd, arbiter = 'origin', env) {
929
929
  */
930
930
  /**
931
931
  * Does the `gc --ledger` lock report contain a lock that NEEDS HUMAN ATTENTION
932
- * (prd US#14/#21; ADR `ledger-status-on-per-item-lock-refs`: this surface is the
932
+ * (spec US#14/#21; ADR `ledger-status-on-per-item-lock-refs`: this surface is the
933
933
  * STUCK / crash-orphaned lock, NOT every held one)? TRUE iff some lock is
934
934
  * `kept-stuck` (terminal-on-`main` + stuck) or `cleared-stale`-eligible
935
935
  * (terminal-on-`main` + a stale active orphan). A `kept-in-flight` (active,
@@ -979,7 +979,7 @@ function reconcileNote(reconcile) {
979
979
  }
980
980
  }
981
981
  /**
982
- * The OPT-IN `gc --ledger --reap-stale-locks` SWEEP (prd
982
+ * The OPT-IN `gc --ledger --reap-stale-locks` SWEEP (spec
983
983
  * `ledger-status-per-item-lock-refs` US #14): a human asserting "clear the dead
984
984
  * TERMINAL locks now", so one command sweeps every orphaned terminal lock instead
985
985
  * of N hand-run `release-lock`s. It is the WRITE twin of {@link reportItemLocks}
@@ -1186,7 +1186,7 @@ export async function listItemLocks(cwd, arbiter = 'origin', env) {
1186
1186
  }
1187
1187
  /**
1188
1188
  * Read the FULL lock entries currently held on the arbiter — the `status`/`scan`
1189
- * in-flight read path (prd `ledger-status-per-item-lock-refs` US #8; task
1189
+ * in-flight read path (spec `ledger-status-per-item-lock-refs` US #8; task
1190
1190
  * `needs-attention-as-stuck-lock-state`). One fetch of the lock refs, then read
1191
1191
  * each held entry's `lock.md` blob, returning the parsed {@link LockEntry} for
1192
1192
  * every ref (so a caller can surface `active` (in-progress) and `stuck`
@@ -1231,7 +1231,7 @@ export async function listItemLockEntries(cwd, arbiter = 'origin', env) {
1231
1231
  }
1232
1232
  /**
1233
1233
  * List the TASK slugs currently lock-held on the arbiter — the held-slug set the
1234
- * `ready/` pool readers SUBTRACT (prd `ledger-status-per-item-lock-refs` US #15;
1234
+ * `ready/` pool readers SUBTRACT (spec `ledger-status-per-item-lock-refs` US #15;
1235
1235
  * task `claim-acquires-unified-lock-no-body-move`). Enumerates {@link listItemLocks}
1236
1236
  * and keeps only the `task-<slug>` entries (a prd/observation lock does not gate
1237
1237
  * the TASK pool), mapping each to its bare `<slug>`.
@@ -20,7 +20,7 @@ import type { WorkFolderKey } from './work-layout.js';
20
20
  * (`tasks-backlog`, `prds-proposed`) on purpose: a concurrent `promote` may have
21
21
  * just `git mv`'d the item from staging into the pool between an apply's CAPTURE
22
22
  * and WRITE, and the apply must resolve to the post-move path — the whole point of
23
- * folder-agnostic apply (F3a of prd `staging-surface-and-apply-promote-safety`).
23
+ * folder-agnostic apply (F3a of spec `staging-surface-and-apply-promote-safety`).
24
24
  * Terminal-only folders (`cancelled`, `prds-dropped`, `needs-attention`) are NOT
25
25
  * here — once an item has reached a terminal, the apply is OVER, and a re-resolve
26
26
  * into a terminal would mean the item has effectively vanished from the active
@@ -40,7 +40,7 @@ export declare const APPLY_LIFECYCLE_FOLDERS: Record<SidecarType, readonly WorkF
40
40
  * move) — the apply rung then exits CLEAN (no commit, no ghost file), routed as the
41
41
  * `vanished` outcome.
42
42
  *
43
- * This is the F3a fix from prd `staging-surface-and-apply-promote-safety`: the
43
+ * This is the F3a fix from spec `staging-surface-and-apply-promote-safety`: the
44
44
  * sidecar is already identity-keyed and folder-agnostic; the item path is now the
45
45
  * same. A concurrent `promote` that `git mv`'d the item out from under a captured
46
46
  * path can no longer cause a stale-path write.
package/dist/item-path.js CHANGED
@@ -22,7 +22,7 @@ import { resolveSidecarIdentity } from './sidecar.js';
22
22
  * (`tasks-backlog`, `prds-proposed`) on purpose: a concurrent `promote` may have
23
23
  * just `git mv`'d the item from staging into the pool between an apply's CAPTURE
24
24
  * and WRITE, and the apply must resolve to the post-move path — the whole point of
25
- * folder-agnostic apply (F3a of prd `staging-surface-and-apply-promote-safety`).
25
+ * folder-agnostic apply (F3a of spec `staging-surface-and-apply-promote-safety`).
26
26
  * Terminal-only folders (`cancelled`, `prds-dropped`, `needs-attention`) are NOT
27
27
  * here — once an item has reached a terminal, the apply is OVER, and a re-resolve
28
28
  * into a terminal would mean the item has effectively vanished from the active
@@ -48,7 +48,7 @@ export const APPLY_LIFECYCLE_FOLDERS = {
48
48
  * move) — the apply rung then exits CLEAN (no commit, no ghost file), routed as the
49
49
  * `vanished` outcome.
50
50
  *
51
- * This is the F3a fix from prd `staging-surface-and-apply-promote-safety`: the
51
+ * This is the F3a fix from spec `staging-surface-and-apply-promote-safety`: the
52
52
  * sidecar is already identity-keyed and folder-agnostic; the item path is now the
53
53
  * same. A concurrent `promote` that `git mv`'d the item out from under a captured
54
54
  * path can no longer cause a stale-path write.
@@ -1,6 +1,6 @@
1
1
  import { type LedgerStatusFolder } from './work-layout.js';
2
2
  /**
3
- * The **one-slug-one-folder LINT** over the `work/` lifecycle ledger (prd
3
+ * The **one-slug-one-folder LINT** over the `work/` lifecycle ledger (spec
4
4
  * `ledger-integrity`, story 3 — the READ-side belt-and-suspenders for defect 1).
5
5
  *
6
6
  * `work/` IS the ledger: a task's STATUS is the FOLDER its single `.md` lives in
@@ -27,14 +27,14 @@ import { type LedgerStatusFolder } from './work-layout.js';
27
27
  * The `work/` STATUS folders a task's ledger file can rest in — the
28
28
  * one-slug-one-folder set this lint is asserted over (WORK-CONTRACT.md
29
29
  * "status = the folder"). After the capstone cut-over (task
30
- * `cutover-retire-slicing-advancing-markers-and-trim-folder-sets`, prd
30
+ * `cutover-retire-slicing-advancing-markers-and-trim-folder-sets`, spec
31
31
  * `ledger-status-per-item-lock-refs`; ADR `ledger-status-on-per-item-lock-refs`)
32
32
  * the ONLY `work/` moves on `main` are the DURABLE RESTING transitions, so a
33
33
  * task's ledger file can rest only in the DURABLE set: the pool `backlog/`, the
34
34
  * terminal `done/`, and the task regime's PER-REGIME "won't-proceed" terminal
35
- * `tasks/cancelled/` (the per-regime split of the previous shared `dropped/`, prd
35
+ * `tasks/cancelled/` (the per-regime split of the previous shared `dropped/`, spec
36
36
  * `folder-taxonomy-reorg-and-rename` US #10; the specific REASON lives in the item
37
- * BODY as a `reason:` value). The prd regime's terminal `prds/dropped/` is a
37
+ * BODY as a `reason:` value). The spec regime's terminal `specs/dropped/` is a
38
38
  * SEPARATE namespace and is NOT a task-status folder. The transient
39
39
  * `in-progress`/`needs-attention`/`tasking`/
40
40
  * `advancing` are GONE from `main`'s tree — they are per-item lock-ref state
@@ -45,11 +45,11 @@ import { type LedgerStatusFolder } from './work-layout.js';
45
45
  * `cancelled`). A read-side lint surfaces a slug that ends up in `tasks/cancelled/`
46
46
  * AND another status folder, so the lint covers all three.
47
47
  *
48
- * The capture buckets (`ideas`/`observations`/`findings`) and the prd-flow folders
49
- * (`prds/ready`/`prds/tasked`) are NOT task-status folders (WORK-CONTRACT.md: the buckets
50
- * are "exempt from status = folder"; the prd folders carry prds, a separate
48
+ * The capture buckets (`ideas`/`observations`/`findings`) and the spec-flow folders
49
+ * (`specs/ready`/`specs/tasked`) are NOT task-status folders (WORK-CONTRACT.md: the buckets
50
+ * are "exempt from status = folder"; the spec folders carry prds, a separate
51
51
  * namespace) — they are deliberately EXCLUDED so a slug that legitimately has both
52
- * a task and a same-named note/prd is never a false positive.
52
+ * a task and a same-named note/spec is never a false positive.
53
53
  */
54
54
  export { LEDGER_STATUS_FOLDERS, type LedgerStatusFolder } from './work-layout.js';
55
55
  /** One slug found in more than one status folder — the corruption to surface. */
@@ -103,7 +103,7 @@ export interface LedgerSweepResult {
103
103
  duplicates: DuplicateSlug[];
104
104
  }
105
105
  /**
106
- * The `gc`-STYLE ledger SWEEP (prd story 3's belt-and-suspenders): on demand,
106
+ * The `gc`-STYLE ledger SWEEP (spec story 3's belt-and-suspenders): on demand,
107
107
  * REPORT every slug present in more than one status folder of a LOCAL `work/`
108
108
  * ledger, naming the folders and the CANDIDATE canonical folder — and NEVER
109
109
  * auto-delete. A human confirms the cleanup (keep the canonical copy, delete the
@@ -4,7 +4,7 @@ import { parseFrontmatter } from './frontmatter.js';
4
4
  import { run } from './git.js';
5
5
  import { LEDGER_STATUS_FOLDERS, workFolderName, workFolderPath, workFolderPrefix, isWorkItemFile, } from './work-layout.js';
6
6
  /**
7
- * The **one-slug-one-folder LINT** over the `work/` lifecycle ledger (prd
7
+ * The **one-slug-one-folder LINT** over the `work/` lifecycle ledger (spec
8
8
  * `ledger-integrity`, story 3 — the READ-side belt-and-suspenders for defect 1).
9
9
  *
10
10
  * `work/` IS the ledger: a task's STATUS is the FOLDER its single `.md` lives in
@@ -31,14 +31,14 @@ import { LEDGER_STATUS_FOLDERS, workFolderName, workFolderPath, workFolderPrefix
31
31
  * The `work/` STATUS folders a task's ledger file can rest in — the
32
32
  * one-slug-one-folder set this lint is asserted over (WORK-CONTRACT.md
33
33
  * "status = the folder"). After the capstone cut-over (task
34
- * `cutover-retire-slicing-advancing-markers-and-trim-folder-sets`, prd
34
+ * `cutover-retire-slicing-advancing-markers-and-trim-folder-sets`, spec
35
35
  * `ledger-status-per-item-lock-refs`; ADR `ledger-status-on-per-item-lock-refs`)
36
36
  * the ONLY `work/` moves on `main` are the DURABLE RESTING transitions, so a
37
37
  * task's ledger file can rest only in the DURABLE set: the pool `backlog/`, the
38
38
  * terminal `done/`, and the task regime's PER-REGIME "won't-proceed" terminal
39
- * `tasks/cancelled/` (the per-regime split of the previous shared `dropped/`, prd
39
+ * `tasks/cancelled/` (the per-regime split of the previous shared `dropped/`, spec
40
40
  * `folder-taxonomy-reorg-and-rename` US #10; the specific REASON lives in the item
41
- * BODY as a `reason:` value). The prd regime's terminal `prds/dropped/` is a
41
+ * BODY as a `reason:` value). The spec regime's terminal `specs/dropped/` is a
42
42
  * SEPARATE namespace and is NOT a task-status folder. The transient
43
43
  * `in-progress`/`needs-attention`/`tasking`/
44
44
  * `advancing` are GONE from `main`'s tree — they are per-item lock-ref state
@@ -49,11 +49,11 @@ import { LEDGER_STATUS_FOLDERS, workFolderName, workFolderPath, workFolderPrefix
49
49
  * `cancelled`). A read-side lint surfaces a slug that ends up in `tasks/cancelled/`
50
50
  * AND another status folder, so the lint covers all three.
51
51
  *
52
- * The capture buckets (`ideas`/`observations`/`findings`) and the prd-flow folders
53
- * (`prds/ready`/`prds/tasked`) are NOT task-status folders (WORK-CONTRACT.md: the buckets
54
- * are "exempt from status = folder"; the prd folders carry prds, a separate
52
+ * The capture buckets (`ideas`/`observations`/`findings`) and the spec-flow folders
53
+ * (`specs/ready`/`specs/tasked`) are NOT task-status folders (WORK-CONTRACT.md: the buckets
54
+ * are "exempt from status = folder"; the spec folders carry prds, a separate
55
55
  * namespace) — they are deliberately EXCLUDED so a slug that legitimately has both
56
- * a task and a same-named note/prd is never a false positive.
56
+ * a task and a same-named note/spec is never a false positive.
57
57
  */
58
58
  export { LEDGER_STATUS_FOLDERS } from './work-layout.js';
59
59
  /**
@@ -204,7 +204,7 @@ export function formatDuplicateWarnings(duplicates) {
204
204
  return lines;
205
205
  }
206
206
  /**
207
- * The `gc`-STYLE ledger SWEEP (prd story 3's belt-and-suspenders): on demand,
207
+ * The `gc`-STYLE ledger SWEEP (spec story 3's belt-and-suspenders): on demand,
208
208
  * REPORT every slug present in more than one status folder of a LOCAL `work/`
209
209
  * ledger, naming the folders and the CANDIDATE canonical folder — and NEVER
210
210
  * auto-delete. A human confirms the cleanup (keep the canonical copy, delete the