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 Harness } from './harness.js';
2
2
  /**
3
- * The **TRIAGE auto-disposition GATE** (prd `advance-loop`, task
3
+ * The **TRIAGE auto-disposition GATE** (spec `advance-loop`, task
4
4
  * `advance-rung-triage`, US #17) — the CONSERVATIVE, `observationTriage: 'auto'`-
5
5
  * gated exception to the question-gated default. On `classify=triage-observation`
6
6
  * AND `observationTriage` resolved to `'auto'`, the engine asks this gate whether
@@ -78,7 +78,7 @@ export interface PromoteObservationOptions {
78
78
  * triage-local {@link createItemThroughCas} writer (one local commit through the
79
79
  * CAS) — NOT intake's branch+integrate band — so the CAS-loser-backs-off
80
80
  * guarantee and the same-commit note deletion are uniform across the two routes.
81
- * MIGRATE step (prd `prd-to-spec-vocabulary-cutover-and-migration-command`): the
81
+ * MIGRATE step (spec `prd-to-spec-vocabulary-cutover-and-migration-command`): the
82
82
  * produced VALUE is `'spec'` (the verdict outcome renamed from `'prd'`).
83
83
  */
84
84
  artifact?: 'task' | 'spec';
@@ -131,22 +131,22 @@ export interface PromoteObservationResult {
131
131
  }
132
132
  /**
133
133
  * Promote an ANSWERED observation to a NEW, SELF-CONTAINED artifact (US #1/#3/#8
134
- * for the task route; US #4/#9 for the PRD route): CAS-create the new item keyed
134
+ * for the task route; US #4/#9 for the SPEC route): CAS-create the new item keyed
135
135
  * on the NEW item's identity (its target path), with the observation note + its
136
136
  * answered sidecar `git rm`-ed IN THE SAME atomic commit. Promote is ONE commit
137
137
  * (create + delete).
138
138
  *
139
139
  * The artifact TYPE (`options.artifact`) selects the target + body shape: `'task'`
140
140
  * (default) mints `work/tasks/ready/<slug>.md`; `'prd'` mints
141
- * `work/prds/proposed/<slug>.md` (PRD staging — a human later promotes it to
141
+ * `work/specs/proposed/<slug>.md` (SPEC staging — a human later promotes it to
142
142
  * `ready/`). BOTH routes use the SAME triage-local {@link createItemThroughCas}
143
143
  * writer (NOT intake's `switchToWorkBranch`/`performIntegration` branch+integrate
144
144
  * band, which is intake's standalone front door): one create/integrate surface for
145
- * triage, the CAS-loser-backs-off guarantee uniform across task and PRD promotion.
145
+ * triage, the CAS-loser-backs-off guarantee uniform across task and SPEC promotion.
146
146
  *
147
147
  * The minted body is built FROM the observation (see {@link buildPromotedBody}):
148
148
  * its mechanism + fix prose is carried into the artifact's lead section (`## What
149
- * to build` for a task, `## Problem Statement` for a PRD), and its
149
+ * to build` for a task, `## Problem Statement` for a SPEC), and its
150
150
  * `## Open questions` scoping is transcribed into the new item's own
151
151
  * `## Open questions` block with `needsAnswers` set when questions remain (cleared
152
152
  * when none do) — so an agent can build from the artifact ALONE and no decision
@@ -6,7 +6,7 @@ import { createItemThroughCas, } from './advancing-lock.js';
6
6
  import { resolveSidecarIdentity, sidecarPathFor } from './sidecar.js';
7
7
  import { renderTaskBody, renderSpecBody } from './buildable-body.js';
8
8
  /**
9
- * The engine-owned TRIAGE PERSIST (prd `advance-loop`, task `advance-rung-triage`,
9
+ * The engine-owned TRIAGE PERSIST (spec `advance-loop`, task `advance-rung-triage`,
10
10
  * US #16/17/24/30) — the half of the observation-triage rung the ENGINE owns (the
11
11
  * triage gate JUDGES, the engine ACTS). It is the SIBLING of `surface-persist.ts`
12
12
  * (the surface rung's persist) and `apply-persist.ts` (the apply rung's persist),
@@ -138,22 +138,22 @@ export function autoDispositionObservation(options) {
138
138
  }
139
139
  /**
140
140
  * Promote an ANSWERED observation to a NEW, SELF-CONTAINED artifact (US #1/#3/#8
141
- * for the task route; US #4/#9 for the PRD route): CAS-create the new item keyed
141
+ * for the task route; US #4/#9 for the SPEC route): CAS-create the new item keyed
142
142
  * on the NEW item's identity (its target path), with the observation note + its
143
143
  * answered sidecar `git rm`-ed IN THE SAME atomic commit. Promote is ONE commit
144
144
  * (create + delete).
145
145
  *
146
146
  * The artifact TYPE (`options.artifact`) selects the target + body shape: `'task'`
147
147
  * (default) mints `work/tasks/ready/<slug>.md`; `'prd'` mints
148
- * `work/prds/proposed/<slug>.md` (PRD staging — a human later promotes it to
148
+ * `work/specs/proposed/<slug>.md` (SPEC staging — a human later promotes it to
149
149
  * `ready/`). BOTH routes use the SAME triage-local {@link createItemThroughCas}
150
150
  * writer (NOT intake's `switchToWorkBranch`/`performIntegration` branch+integrate
151
151
  * band, which is intake's standalone front door): one create/integrate surface for
152
- * triage, the CAS-loser-backs-off guarantee uniform across task and PRD promotion.
152
+ * triage, the CAS-loser-backs-off guarantee uniform across task and SPEC promotion.
153
153
  *
154
154
  * The minted body is built FROM the observation (see {@link buildPromotedBody}):
155
155
  * its mechanism + fix prose is carried into the artifact's lead section (`## What
156
- * to build` for a task, `## Problem Statement` for a PRD), and its
156
+ * to build` for a task, `## Problem Statement` for a SPEC), and its
157
157
  * `## Open questions` scoping is transcribed into the new item's own
158
158
  * `## Open questions` block with `needsAnswers` set when questions remain (cleared
159
159
  * when none do) — so an agent can build from the artifact ALONE and no decision
@@ -233,10 +233,10 @@ export async function promoteObservation(options) {
233
233
  *
234
234
  * The artifact TYPE selects the frontmatter + lead heading: a `task` gets
235
235
  * `## What to build` + `blockedBy: []` + a `## Prompt` (the buildable-task shape);
236
- * a `prd` gets `## Problem Statement` (the PRD document shape, with no `blockedBy` —
237
- * a PRD is not a blockable task — and no `## Prompt`, since a PRD is not
236
+ * a `prd` gets `## Problem Statement` (the SPEC document shape, with no `blockedBy` —
237
+ * a SPEC is not a blockable task — and no `## Prompt`, since a SPEC is not
238
238
  * dispatched by `do`/`run`). BOTH carry the SAME transcribed mechanism prose +
239
- * open-question block, so a PRD minted into `proposed/` is just as self-contained
239
+ * open-question block, so a SPEC minted into `proposed/` is just as self-contained
240
240
  * as a task.
241
241
  *
242
242
  * The `## Prompt` (task only) is the STRUCTURAL dispatchability the validator
@@ -244,9 +244,9 @@ export async function promoteObservation(options) {
244
244
  * dispatched build throws "has no '## Prompt' section". The body BELOW the
245
245
  * frontmatter (lead section + mechanism prose + optional `## Open questions` +
246
246
  * the task-only `## Prompt`) is rendered by the SHARED owner of the
247
- * buildable-task/PRD schema, {@link renderTaskBody} / {@link renderSpecBody}
247
+ * buildable-task/SPEC schema, {@link renderTaskBody} / {@link renderSpecBody}
248
248
  * (`buildable-body.ts`), so the producer and the consumer cannot drift apart
249
- * (prd `centralize-buildable-task-renderer-shared-by-intake-and-promotion`,
249
+ * (spec `centralize-buildable-task-renderer-shared-by-intake-and-promotion`,
250
250
  * US #3/#5/#6). This function owns only the FRONTMATTER writer; the section
251
251
  * skeleton lives in the one renderer. The empty-mechanism `## Prompt` seed is
252
252
  * passed EXPLICITLY (`Build the task '<slug>', described above.`) so promotion's
@@ -269,8 +269,8 @@ export async function promoteObservation(options) {
269
269
  * fails with `has no '## Prompt' section` (the `extractPromptSection`/`resolveTask`
270
270
  * guard in `prompt.ts`). This is the robust backstop that closes that hole
271
271
  * regardless of agent compliance: for a TASK, if the body has no `## Prompt`
272
- * heading, append a seeded one (blockquoted, matching the renderer's shape). A PRD
273
- * is left UNTOUCHED — a PRD is a north-star doc, not dispatched by `do`/`run`, and carries no
272
+ * heading, append a seeded one (blockquoted, matching the renderer's shape). A SPEC
273
+ * is left UNTOUCHED — a SPEC is a north-star doc, not dispatched by `do`/`run`, and carries no
274
274
  * `## Prompt` by design.
275
275
  */
276
276
  function ensureTaskDispatchable(artifact, slug, body) {
@@ -298,7 +298,7 @@ function buildPromotedBody(artifact, slug, observation) {
298
298
  `title: ${slug}`,
299
299
  `slug: ${slug}`,
300
300
  `needsAnswers: ${hasQuestions ? 'true' : 'false'}`,
301
- // A PRD is a north-star doc, not a blockable task — only the task shape carries
301
+ // A SPEC is a north-star doc, not a blockable task — only the task shape carries
302
302
  // `blockedBy`.
303
303
  ...(artifact === 'spec' ? [] : ['blockedBy: []']),
304
304
  '---',
@@ -314,8 +314,8 @@ function buildPromotedBody(artifact, slug, observation) {
314
314
  // no leading blank. Do NOT move the separator into the renderer.
315
315
  const fenceToBody = frontmatter.join('\n') + '\n\n';
316
316
  // The body BELOW the frontmatter is rendered by the SHARED schema owner so the
317
- // section skeleton has one home, not two (prd
318
- // `centralize-buildable-task-renderer-shared-by-intake-and-promotion`). A PRD
317
+ // section skeleton has one home, not two (spec
318
+ // `centralize-buildable-task-renderer-shared-by-intake-and-promotion`). A SPEC
319
319
  // goes through `renderSpecBody` (no `## Prompt`); a task through
320
320
  // `renderTaskBody` (always a `## Prompt`).
321
321
  if (artifact === 'spec') {
@@ -1 +1 @@
1
- {"version":3,"file":"triage-persist.js","sourceRoot":"","sources":["../src/triage-persist.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"triage-persist.js","sourceRoot":"","sources":["../src/triage-persist.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * The `install-ci` VERIFY-WORKFLOW capability (prd
2
+ * The `install-ci` VERIFY-WORKFLOW capability (spec
3
3
  * `land-time-reverify-and-parallel-merge-ceiling`, task
4
4
  * `install-ci-tier1-branch-protection`; Story 11 — the Tier-1 GitHub ceiling).
5
5
  * Emits a small `verify.yml` workflow whose ONLY job is `verify` and runs on
@@ -1,5 +1,5 @@
1
1
  /**
2
- * The `install-ci` VERIFY-WORKFLOW capability (prd
2
+ * The `install-ci` VERIFY-WORKFLOW capability (spec
3
3
  * `land-time-reverify-and-parallel-merge-ceiling`, task
4
4
  * `install-ci-tier1-branch-protection`; Story 11 — the Tier-1 GitHub ceiling).
5
5
  * Emits a small `verify.yml` workflow whose ONLY job is `verify` and runs on
@@ -41,7 +41,7 @@ export const VERIFY_WORKFLOW_PATH = 'workflows/verify.yml';
41
41
  */
42
42
  export function generateVerifyWorkflow(_config) {
43
43
  return `\
44
- # dorfl — the VERIFY workflow (Tier-1 GitHub ceiling; prd
44
+ # dorfl — the VERIFY workflow (Tier-1 GitHub ceiling; spec
45
45
  # land-time-reverify-and-parallel-merge-ceiling, task
46
46
  # install-ci-tier1-branch-protection). EMITTED by \`dorfl install-ci\`; the
47
47
  # human commits it. DO NOT hand-edit a copy — re-run install-ci to upgrade.
@@ -3,7 +3,7 @@
3
3
  * folder-name union/array, the item-scan predicate, and the prefix-task helpers
4
4
  * used across `src/`.
5
5
  *
6
- * This is Phase 0 of the `folder-taxonomy-reorg-and-rename` prd — the de-risking
6
+ * This is Phase 0 of the `folder-taxonomy-reorg-and-rename` spec — the de-risking
7
7
  * checkpoint. EVERY raw work-path literal (`join(cwd, 'work', ...)`, `'work/<folder>'`,
8
8
  * `'work/<folder>/'.length` prefix-tasks) and EVERY folder-name union/array that
9
9
  * used to be scattered across ~70 files now routes through here. The NAMES are
@@ -14,7 +14,7 @@
14
14
  * {@link WORK_FOLDER_NAME} (and `git mv` the on-disk folders) and NOTHING ELSE.
15
15
  * Call sites reference folders by their SYMBOLIC key (`'tasks-ready'`,
16
16
  * `'specs-ready'`, …), never by a raw string, so a folder-VALUE flip never
17
- * re-touches a single call site (a KEY rename, e.g. the prd→spec cutover below,
17
+ * re-touches a single call site (a KEY rename, e.g. the spec→spec cutover below,
18
18
  * is a mechanical relabel of the key literal at each site — behaviour-preserving).
19
19
  *
20
20
  * Domain note (crown-jewel invariant): a `work/` tree is a set of governance
@@ -61,17 +61,19 @@ export declare const WORK_ROOT: "work";
61
61
  * and `needs-attention` (both are really lock-ref state, NOT durable folders;
62
62
  * routed here only so no reader hand-writes the literal).
63
63
  *
64
- * NOTE on the prd→spec vocabulary cutover
64
+ * NOTE on the spec→spec vocabulary cutover
65
65
  * (`rename-spec-work-layout-and-folders`, migrate-batch 1 of
66
66
  * `prd-to-spec-vocabulary-cutover-and-migration-command`): the spec-regime KEYS
67
67
  * below now read in the `spec` vocabulary (`specs-proposed`/`specs-ready`/
68
68
  * `specs-tasked`/`specs-dropped`) AND their VALUES flip to `work/specs/*` in
69
- * lockstep with the on-disk `git mv work/prds/* → work/specs/*`. Unlike the earlier
69
+ * lockstep with the on-disk `git mv work/specs/* → work/specs/*`. Unlike the earlier
70
70
  * key-only relabel, this batch moves the folders too, so the KEY and VALUE change
71
71
  * together and the self-renaming-folder guard stays green. The KEY rename is a
72
72
  * mechanical relabel of the key literal at each call site (behaviour-preserving);
73
- * the frontmatter `prd:` field (a DATA alias the migration command converts) is the
74
- * one deliberate survivor; the `--specs-land-in` flag/`specsLandIn` config + the
73
+ * the legacy frontmatter `prd:` field survives ONLY as un-migrated on-disk DATA the
74
+ * `dorfl prd-to-spec` command textually converts to `spec:` (HARD CUTOVER: it is no
75
+ * longer READ by `parseFrontmatter` — `spec:` is the only read key); the
76
+ * `--specs-land-in` flag/`specsLandIn` config + the
75
77
  * `Spec*` symbols were completed by the later batches + the contract task. The
76
78
  * folder-as-status invariant is unchanged.
77
79
  */
@@ -153,7 +155,7 @@ export declare function isWorkItemFile(name: string): boolean;
153
155
  * order: `in-progress` over `tasks-ready`, with `done` appended only behind the
154
156
  * stranded-continue gate. Order is load-bearing — kept exactly as the original
155
157
  * union/array. (`tasks-backlog` is NOT in this DEFAULT order: it is appended at
156
- * the LOWEST priority ONLY behind the explicit `--allow-backlog` flag, prd
158
+ * the LOWEST priority ONLY behind the explicit `--allow-backlog` flag, spec
157
159
  * `do-allow-backlog-drive-staged-tasks-without-promotion` — see
158
160
  * {@link TaskResolutionFolder}.)
159
161
  */
@@ -1 +1 @@
1
- {"version":3,"file":"work-layout.d.ts","sourceRoot":"","sources":["../src/work-layout.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAG,MAAe,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;CAgBnB,CAAC;AAEX,0EAA0E;AAC1E,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,gBAAgB,CAAC;AAE1D;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAE5D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,MAAM,CAE1E;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC3B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,MAAM,GACV,MAAM,CAER;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAE3D;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAE9D;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACpC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,aAAa,GACnB,MAAM,GAAG,SAAS,CAGpB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpD;AAID;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,iDAIS,CAAC;AAE9C;;;;;;GAMG;AACH,MAAM,MAAM,oBAAoB,GAC7B,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,GACxC,eAAe,CAAC;AAEnB;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,oEAKU,CAAC;AAE9C,2EAA2E;AAC3E,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,+CAIW,CAAC;AAE9C,uFAAuF;AACvF,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAExE;;;;GAIG;AACH,eAAO,MAAM,YAAY,0CAGoB,CAAC;AAE9C,yEAAyE;AACzE,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"work-layout.d.ts","sourceRoot":"","sources":["../src/work-layout.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAG,MAAe,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;CAgBnB,CAAC;AAEX,0EAA0E;AAC1E,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,gBAAgB,CAAC;AAE1D;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAE5D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,MAAM,CAE1E;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC3B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,MAAM,GACV,MAAM,CAER;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAE3D;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAE9D;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACpC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,aAAa,GACnB,MAAM,GAAG,SAAS,CAGpB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpD;AAID;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,iDAIS,CAAC;AAE9C;;;;;;GAMG;AACH,MAAM,MAAM,oBAAoB,GAC7B,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,GACxC,eAAe,CAAC;AAEnB;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,oEAKU,CAAC;AAE9C,2EAA2E;AAC3E,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,+CAIW,CAAC;AAE9C,uFAAuF;AACvF,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAExE;;;;GAIG;AACH,eAAO,MAAM,YAAY,0CAGoB,CAAC;AAE9C,yEAAyE;AACzE,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC"}
@@ -4,7 +4,7 @@ import { join } from 'node:path';
4
4
  * folder-name union/array, the item-scan predicate, and the prefix-task helpers
5
5
  * used across `src/`.
6
6
  *
7
- * This is Phase 0 of the `folder-taxonomy-reorg-and-rename` prd — the de-risking
7
+ * This is Phase 0 of the `folder-taxonomy-reorg-and-rename` spec — the de-risking
8
8
  * checkpoint. EVERY raw work-path literal (`join(cwd, 'work', ...)`, `'work/<folder>'`,
9
9
  * `'work/<folder>/'.length` prefix-tasks) and EVERY folder-name union/array that
10
10
  * used to be scattered across ~70 files now routes through here. The NAMES are
@@ -15,7 +15,7 @@ import { join } from 'node:path';
15
15
  * {@link WORK_FOLDER_NAME} (and `git mv` the on-disk folders) and NOTHING ELSE.
16
16
  * Call sites reference folders by their SYMBOLIC key (`'tasks-ready'`,
17
17
  * `'specs-ready'`, …), never by a raw string, so a folder-VALUE flip never
18
- * re-touches a single call site (a KEY rename, e.g. the prd→spec cutover below,
18
+ * re-touches a single call site (a KEY rename, e.g. the spec→spec cutover below,
19
19
  * is a mechanical relabel of the key literal at each site — behaviour-preserving).
20
20
  *
21
21
  * Domain note (crown-jewel invariant): a `work/` tree is a set of governance
@@ -62,17 +62,19 @@ export const WORK_ROOT = 'work';
62
62
  * and `needs-attention` (both are really lock-ref state, NOT durable folders;
63
63
  * routed here only so no reader hand-writes the literal).
64
64
  *
65
- * NOTE on the prd→spec vocabulary cutover
65
+ * NOTE on the spec→spec vocabulary cutover
66
66
  * (`rename-spec-work-layout-and-folders`, migrate-batch 1 of
67
67
  * `prd-to-spec-vocabulary-cutover-and-migration-command`): the spec-regime KEYS
68
68
  * below now read in the `spec` vocabulary (`specs-proposed`/`specs-ready`/
69
69
  * `specs-tasked`/`specs-dropped`) AND their VALUES flip to `work/specs/*` in
70
- * lockstep with the on-disk `git mv work/prds/* → work/specs/*`. Unlike the earlier
70
+ * lockstep with the on-disk `git mv work/specs/* → work/specs/*`. Unlike the earlier
71
71
  * key-only relabel, this batch moves the folders too, so the KEY and VALUE change
72
72
  * together and the self-renaming-folder guard stays green. The KEY rename is a
73
73
  * mechanical relabel of the key literal at each call site (behaviour-preserving);
74
- * the frontmatter `prd:` field (a DATA alias the migration command converts) is the
75
- * one deliberate survivor; the `--specs-land-in` flag/`specsLandIn` config + the
74
+ * the legacy frontmatter `prd:` field survives ONLY as un-migrated on-disk DATA the
75
+ * `dorfl prd-to-spec` command textually converts to `spec:` (HARD CUTOVER: it is no
76
+ * longer READ by `parseFrontmatter` — `spec:` is the only read key); the
77
+ * `--specs-land-in` flag/`specsLandIn` config + the
76
78
  * `Spec*` symbols were completed by the later batches + the contract task. The
77
79
  * folder-as-status invariant is unchanged.
78
80
  */
@@ -170,7 +172,7 @@ export function isWorkItemFile(name) {
170
172
  * order: `in-progress` over `tasks-ready`, with `done` appended only behind the
171
173
  * stranded-continue gate. Order is load-bearing — kept exactly as the original
172
174
  * union/array. (`tasks-backlog` is NOT in this DEFAULT order: it is appended at
173
- * the LOWEST priority ONLY behind the explicit `--allow-backlog` flag, prd
175
+ * the LOWEST priority ONLY behind the explicit `--allow-backlog` flag, spec
174
176
  * `do-allow-backlog-drive-staged-tasks-without-promotion` — see
175
177
  * {@link TaskResolutionFolder}.)
176
178
  */
@@ -1 +1 @@
1
- {"version":3,"file":"work-layout.js","sourceRoot":"","sources":["../src/work-layout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"work-layout.js","sourceRoot":"","sources":["../src/work-layout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,MAAe,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC/B,eAAe,EAAE,eAAe;IAChC,aAAa,EAAE,aAAa;IAC5B,aAAa,EAAE,aAAa;IAC5B,iBAAiB,EAAE,iBAAiB;IACpC,IAAI,EAAE,YAAY;IAClB,SAAS,EAAE,iBAAiB;IAC5B,gBAAgB,EAAE,gBAAgB;IAClC,aAAa,EAAE,aAAa;IAC5B,cAAc,EAAE,cAAc;IAC9B,eAAe,EAAE,eAAe;IAChC,YAAY,EAAE,oBAAoB;IAClC,KAAK,EAAE,aAAa;IACpB,QAAQ,EAAE,gBAAgB;IAC1B,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE,UAAU;CACX,CAAC;AAKX;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,MAAqB;IACnD,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,MAAqB;IACjE,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;AACtD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAC3B,IAAY,EACZ,MAAqB,EACrB,IAAY;IAEZ,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;AACpE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,MAAqB;IAClD,OAAO,GAAG,SAAS,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;AACjD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,MAAqB,EAAE,QAAgB;IAClE,OAAO,GAAG,SAAS,IAAI,cAAc,CAAC,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;AAC7D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAqB;IACrD,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC;AACpC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACpC,IAAY,EACZ,MAAqB;IAErB,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACxC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACxE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IAC1C,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC3C,CAAC;AAED,iFAAiF;AAEjF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACtC,aAAa;IACb,aAAa;IACb,MAAM;CACsC,CAAC;AAa9C;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACrC,aAAa;IACb,aAAa;IACb,iBAAiB;IACjB,MAAM;CACsC,CAAC;AAK9C;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACpC,aAAa;IACb,MAAM;IACN,WAAW;CACiC,CAAC;AAK9C;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC3B,aAAa;IACb,cAAc;CAC8B,CAAC"}
@@ -114,7 +114,7 @@ export interface CreateJobOptions {
114
114
  slug: string;
115
115
  /**
116
116
  * The item TYPE — `'task'` (build) or `'prd'` (tasking) — namespacing the
117
- * work branch via {@link workBranchRef} so a same-slug task and prd never
117
+ * work branch via {@link workBranchRef} so a same-slug task and spec never
118
118
  * collide. Defaults to `'task'`.
119
119
  */
120
120
  type?: SlugNamespace;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dorfl",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/wighawag/dorfl.git",
@@ -3,7 +3,7 @@ import {dirname, resolve} from 'node:path';
3
3
  import {fileURLToPath} from 'node:url';
4
4
 
5
5
  /**
6
- * The CI-integration deliverable for the `advance` loop (prd `advance-loop`,
6
+ * The CI-integration deliverable for the `advance` loop (spec `advance-loop`,
7
7
  * task `advance-install-ci`, US #27/28): the advance-loop CAPABILITY as a
8
8
  * DOCUMENTED workflow TEMPLATE (not a CLI subcommand; see the task's `##
9
9
  * Decisions`). The template at `docs/ci/advance-loop.yml.template` wires "on cron
@@ -11,8 +11,8 @@ import {fileURLToPath} from 'node:url';
11
11
  * `advance` driver; it is NOT entangled with the tick.
12
12
  *
13
13
  * The unified, per-capability `install-ci` CLI (auth/secrets wizard + GitHub
14
- * adapter) is owned by the separate `runner-in-ci` prd
15
- * (`work/prds/tasked/runner-in-ci.md`); when built it EMITS this template as its
14
+ * adapter) is owned by the separate `runner-in-ci` spec
15
+ * (`work/specs/tasked/runner-in-ci.md`); when built it EMITS this template as its
16
16
  * advance-loop capability. This module's job is unchanged either way: locate +
17
17
  * STRUCTURALLY VALIDATE the template, so its shape is a contract the CLI can
18
18
  * safely emit (see `docs/ci/README.md` "Relationship to the `install-ci` CLI").
@@ -136,7 +136,7 @@ export function validateAdvanceCiTemplate(
136
136
  // The `enumerate` `jq` must UNION taskable prds into the matrix
137
137
  // (`ci-propose-matrix-must-enumerate-sliceable-prds-not-only-slices`): a
138
138
  // task-only `jq` would render `DORFL_AUTO_TASK` dead on the hourly
139
- // cron — a ready ungated PRD would never become a matrix leg. The `jq` must
139
+ // cron — a ready ungated SPEC would never become a matrix leg. The `jq` must
140
140
  // read `scan --json`'s taskable-SPEC pool (`repos[].specs[]` + `cwd.repo.specs[]`)
141
141
  // and emit `spec:<slug>` legs alongside the `task:<slug>` legs.
142
142
  require('propose-enumerates-taskable-specs', /"spec:" \+ \.slug/.test(text) &&
@@ -1,5 +1,5 @@
1
1
  /**
2
- * The pure `advance` TICK classifier (prd `advance-loop`, task
2
+ * The pure `advance` TICK classifier (spec `advance-loop`, task
3
3
  * `advance-tick-classifier`) — the substrate-agnostic, read-only seam BOTH the
4
4
  * one-shot driver and the loop (`run`) driver wrap. Mirrors the existing pure
5
5
  * `categorise.ts` / `eligibility.ts` seams: NO model, NO lock, NO file mutation
@@ -15,7 +15,7 @@
15
15
  *
16
16
  * needsAnswers: true?
17
17
  * ├─ NO → ANALYSE (state-appropriate rung: build a ready task / task a ready
18
- * │ prd / triage an untriaged observation). Analysis MAY advance, OR
18
+ * │ spec / triage an untriaged observation). Analysis MAY advance, OR
19
19
  * │ SURFACE questions.
20
20
  * └─ YES → sidecar exists?
21
21
  * ├─ NO → ANALYSE (first pass: generate questions → write the sidecar)
@@ -39,7 +39,7 @@
39
39
  *
40
40
  * "ANALYSE" is NOT "always advance" — surface-and-pause is itself a rung, so the
41
41
  * ANALYSE branch resolves to the per-TYPE rung the executor will run (the cells
42
- * of the prd's "Per-item-type transitions" table): `build-task` (task),
42
+ * of the spec's "Per-item-type transitions" table): `build-task` (task),
43
43
  * `task-spec` (spec), `triage-observation` (observation) when there are no open
44
44
  * questions; `surface` (first-pass question generation) when `needsAnswers` but
45
45
  * no sidecar yet; `apply` when all entries are answered.
@@ -56,7 +56,7 @@ import {allAnswered} from './sidecar.js';
56
56
  * never a third state store.
57
57
  */
58
58
  export interface TickItem {
59
- /** The item type — the state machine is per-TYPE (task / prd / observation). */
59
+ /** The item type — the state machine is per-TYPE (task / spec / observation). */
60
60
  type: SidecarType;
61
61
  /** Autonomy axis 2 (DISCOVERED): `true` ⇒ open questions block autonomous work. */
62
62
  needsAnswers: boolean | undefined;
@@ -128,7 +128,7 @@ const ANALYSE_RUNG_FOR_TYPE: Record<SidecarType, TickRungKind> = {
128
128
  * Classify ONE tick PURELY from the item's two signals + its type — read-only,
129
129
  * no model, no lock, no file mutation. Returns the classified rung the executor
130
130
  * will later run (or `no-op` / `invariant-violation`). The decision tree is the
131
- * prd's per-item state machine, with invariant 1 asserted at the boundary:
131
+ * spec's per-item state machine, with invariant 1 asserted at the boundary:
132
132
  *
133
133
  * - `needsAnswers` NOT true:
134
134
  * - a sidecar present ⇒ INVARIANT 1 BROKEN (`sidecar-without-needsAnswers`)
@@ -23,7 +23,7 @@ import type {Config} from './config.js';
23
23
  import type {ConfigOverrideMap} from './config-override.js';
24
24
 
25
25
  /**
26
- * The **`advance` one-shot DRIVER** (prd `advance-loop`, task
26
+ * The **`advance` one-shot DRIVER** (spec `advance-loop`, task
27
27
  * `advance-drivers-and-gates`, US #2/7/23/25/26) — the SEQUENTIAL driver that
28
28
  * WRAPS the substrate-agnostic advance TICK ({@link performAdvance}) over named
29
29
  * item(s) or the bare eligible-SET form. It is the in-place counterpart of
@@ -49,7 +49,7 @@ import type {ConfigOverrideMap} from './config-override.js';
49
49
  *
50
50
  * **The FLAT per-action gate family (US #23)** falls out of the SELECTION layer,
51
51
  * exactly as it does for `do`: the eligible-pool scan only SURFACES a build item
52
- * when `autoBuild` is on and a task-a-prd item when `autoTask` is on (the gate
52
+ * when `autoBuild` is on and a task-a-spec item when `autoTask` is on (the gate
53
53
  * is a policy on the autonomous-SELECTION step, NOT on the explicit verb a human
54
54
  * typed — an explicitly-NAMED `advance <slug>` builds regardless, mirroring
55
55
  * `do <task>` vs `autoBuild`). SURFACE + APPLY are ALWAYS allowed — they run
@@ -61,7 +61,7 @@ import type {ConfigOverrideMap} from './config-override.js';
61
61
  *
62
62
  * **Isolation + chaining FALL OUT (US #26):** this driver builds NO new isolation
63
63
  * or chaining machinery — it threads the SAME `AdvanceContext` the tick already
64
- * consumes (which orchestrates `do`/`do prd:` through the isolation-strategy seam
64
+ * consumes (which orchestrates `do`/`do spec:` through the isolation-strategy seam
65
65
  * and rebase-before-integrate); a chain conflict routes to needs-attention as
66
66
  * today, inside the orchestrated `do`.
67
67
  */
@@ -83,7 +83,7 @@ type SharedAdvanceContext = AdvanceContext;
83
83
  export interface PerformAdvanceMultiOptions extends SharedAdvanceContext {
84
84
  /**
85
85
  * The resolved repo config — provides `autoBuild` (the build gate for the
86
- * task pool), `autoTask` (the task-a-prd gate for the prd pool), and
86
+ * task pool), `autoTask` (the task-a-spec gate for the spec pool), and
87
87
  * `selectionOrder` (the configurable cross-pool order). The per-action gate
88
88
  * family is APPLIED HERE, at the selection layer (the policy-on-autonomous-
89
89
  * selection point).
@@ -105,7 +105,7 @@ export interface PerformAdvanceMultiOptions extends SharedAdvanceContext {
105
105
  count?: number;
106
106
  /** Override the single-tick runner (tests inject a stub). Defaults to {@link performAdvance}. */
107
107
  run?: AdvanceTickRunner;
108
- /** Override the read seam (prd pool); defaults to the active {@link ledgerRead}. */
108
+ /** Override the read seam (spec pool); defaults to the active {@link ledgerRead}. */
109
109
  read?: LedgerReadStrategy;
110
110
  /**
111
111
  * The LIFECYCLE-POOL create-gates (task `advance-autopick-lifecycle-pools`),
@@ -180,7 +180,7 @@ export async function performAdvanceAuto(
180
180
  );
181
181
 
182
182
  // Pool 2 — TASKABLE prds filtered by `autoslice-gate`'s predicate (gated on
183
- // `autoTask`). With `autoTask` off NO prd is selected — the task rung is
183
+ // `autoTask`). With `autoTask` off NO spec is selected — the task rung is
184
184
  // never reached by the bare/`-n` selection.
185
185
  const pool = read.resolveSpecPool({repoPath: cwd});
186
186
  const specCandidates: SpecCandidate[] = pool.specs.map((spec) => ({
@@ -237,8 +237,8 @@ export async function performAdvanceAuto(
237
237
  /**
238
238
  * Run the EXPLICIT multi-arg form (`advance <a> <b> …`): the named items in the
239
239
  * GIVEN order (no pool/priority — the operator chose them). Each arg is run
240
- * through the existing advance tick, which itself resolves bare/`task:`/`prd:`/
241
- * `obs:` (so a named prd drives the task rung, an `obs:` the triage rung, a
240
+ * through the existing advance tick, which itself resolves bare/`task:`/`spec:`/
241
+ * `obs:` (so a named spec drives the task rung, an `obs:` the triage rung, a
242
242
  * collision errors), SEQUENTIALLY. A NAMED item is the always-allowed path — its
243
243
  * surface/apply rung runs regardless of the per-action gates.
244
244
  */
@@ -260,7 +260,7 @@ export async function performAdvanceArgs(
260
260
  /**
261
261
  * Run a list of selected items through the existing advance tick, SEQUENTIALLY
262
262
  * (US #25 — `-n` is always sequential), threading the shared context to each. For
263
- * the pool path the arg encodes the namespace (`prd:<slug>` for a selected prd,
263
+ * the pool path the arg encodes the namespace (`spec:<slug>` for a selected spec,
264
264
  * bare slug for a task); for the explicit-arg path the caller's raw arg is passed
265
265
  * verbatim. Each tick is INDEPENDENTLY `advancing`-lock-guarded inside
266
266
  * {@link performAdvance} — sequential here means one item at a time, never a
@@ -363,7 +363,7 @@ export async function runAdvanceTickWithTreelessPublish(
363
363
  * the tick surfaces/applies);
364
364
  * - `task` → bare `<slug>` (an eligible task's build rung, OR a `needsAnswers`
365
365
  * task the tick surfaces/applies).
366
- * The tick re-classifies each arg, so a `needsAnswers`-blocked task/prd reaches
366
+ * The tick re-classifies each arg, so a `needsAnswers`-blocked task/spec reaches
367
367
  * surface/apply and an untriaged observation reaches triage — the classifier +
368
368
  * rung bodies are unchanged; only this selection->arg mapping is new.
369
369
  */
@@ -21,7 +21,7 @@ import type {Config} from './config.js';
21
21
  import type {AdvanceTickRunner, AdvanceMultiResult} from './advance-drivers.js';
22
22
 
23
23
  /**
24
- * The **ISOLATED advance-tick RUNNER** + its sequential drivers (prd
24
+ * The **ISOLATED advance-tick RUNNER** + its sequential drivers (spec
25
25
  * `advance-loop`, task `advance-isolated-one-shot`, US #25/26) — the "isolated
26
26
  * one-shot" cell `advance` was missing. It gives `advance` the SAME isolation
27
27
  * ergonomic `do --isolated` has: run the advance TICK ({@link performAdvance}) in
@@ -83,7 +83,7 @@ export interface IsolatedAdvanceContext extends Omit<AdvanceContext, 'cwd'> {
83
83
 
84
84
  /** Options for {@link performAdvanceIsolated} — the per-item isolated tick. */
85
85
  export interface PerformAdvanceIsolatedOptions extends IsolatedAdvanceContext {
86
- /** The raw advance arg: bare (= task), `prd:<slug>`, or `obs:<slug>`. */
86
+ /** The raw advance arg: bare (= task), `spec:<slug>`, or `obs:<slug>`. */
87
87
  arg: string;
88
88
  /** The read seam (slug resolution / pool); defaults to {@link ledgerRead}. */
89
89
  read?: LedgerReadStrategy;
@@ -373,7 +373,7 @@ export async function performAdvanceIsolatedAuto(
373
373
  * Run the EXPLICIT multi-arg form (`advance --isolated <a> <b> …`): the NAMED items
374
374
  * in the GIVEN order (no pool/priority — the operator chose them), each through the
375
375
  * ISOLATED advance-tick runner, SEQUENTIALLY. No mirror scan is needed (the args
376
- * are explicit); the per-item tick resolves each bare/`prd:`/`obs:` arg itself.
376
+ * are explicit); the per-item tick resolves each bare/`spec:`/`obs:` arg itself.
377
377
  */
378
378
  export async function performAdvanceIsolatedArgs(
379
379
  args: string[],
@@ -1,5 +1,5 @@
1
1
  /**
2
- * The `install-ci` ADVANCE-LIFECYCLE capability (prd `runner-in-ci`, task
2
+ * The `install-ci` ADVANCE-LIFECYCLE capability (spec `runner-in-ci`, task
3
3
  * `install-ci-advance-lifecycle-workflow`; capability C: auto-triage observations
4
4
  * + surface declared blockers + apply committed answers). This module GENERATES
5
5
  * the advance-lifecycle workflow by ABSORBING and PARAMETERISING the existing seed
@@ -43,7 +43,7 @@
43
43
  * each leg carries `--propose` so it can NEVER merge to `main`); `merge` ⇒ ALSO
44
44
  * a MATRIX (one leg per item; build/gate/review fan out, the LAND tail is
45
45
  * serialised by the engine's `mergeRetries` CAS-retry loop — the git-alone
46
- * floor — NOT by the workflow shape; PRD
46
+ * floor — NOT by the workflow shape; SPEC
47
47
  * `land-time-reverify-and-parallel-merge-ceiling`). This is integration-mode
48
48
  * behaviour, IDENTICAL to the build tick (integration mode is
49
49
  * verb-independent).
@@ -101,7 +101,7 @@ export function generateAdvanceLifecycleWorkflow(
101
101
  const setupWith = providerSecretsWithBlock(config);
102
102
  return `\
103
103
  # dorfl — the ADVANCE LIFECYCLE loop in CI (capability C: auto-triage
104
- # observations + surface declared blockers + apply committed answers, prd
104
+ # observations + surface declared blockers + apply committed answers, spec
105
105
  # runner-in-ci). EMITTED by \`dorfl install-ci\` by PARAMETERISING the seed
106
106
  # \`docs/ci/advance-loop.yml.template\` (the advance-loop capability's output) — the
107
107
  # human commits it. DO NOT hand-edit a copy — re-run install-ci to upgrade the
@@ -127,7 +127,7 @@ export function generateAdvanceLifecycleWorkflow(
127
127
  # * merge ⇒ ALSO a MATRIX (one leg per item; build/gate/review fan out, the
128
128
  # LAND tail — rebase + CAS push to \`main\` — is serialised by the
129
129
  # engine's \`mergeRetries\` CAS-retry loop, NOT by the workflow shape.
130
- # PRD \`land-time-reverify-and-parallel-merge-ceiling\`: a
130
+ # SPEC \`land-time-reverify-and-parallel-merge-ceiling\`: a
131
131
  # non-fast-forward push triggers re-rebase + re-gate + retry, never
132
132
  # a \`--force\`. The cross-job serialiser is the CAS-retry FLOOR;
133
133
  # there is NO host-specific \`concurrency:\` group on the merge job).
@@ -389,7 +389,7 @@ jobs:
389
389
  run: dorfl advance "\${{ matrix.item }}" --propose --watch --arbiter origin
390
390
 
391
391
  # ── MERGE: a MATRIX of independent jobs (parallel build/gate/review, serialised land) ──
392
- # PRD \`land-time-reverify-and-parallel-merge-ceiling\` (stories 4 + 6): each item
392
+ # SPEC \`land-time-reverify-and-parallel-merge-ceiling\` (stories 4 + 6): each item
393
393
  # gets its own leg; build/gate/review run concurrently across siblings; the LAND
394
394
  # TAIL is serialised by the engine's \`mergeRetries\` CAS-retry loop — the
395
395
  # git-alone floor — NOT by the workflow shape. A non-fast-forward push triggers
@@ -573,7 +573,7 @@ export function validateAdvanceLifecycleWorkflow(
573
573
  'dispatch mode).');
574
574
 
575
575
  // --- merge ⇒ a MATRIX per item (parallel build/gate/review, serialised land) -
576
- // PRD `land-time-reverify-and-parallel-merge-ceiling` stories 4 + 6: build/
576
+ // SPEC `land-time-reverify-and-parallel-merge-ceiling` stories 4 + 6: build/
577
577
  // gate/review fan out; the LAND tail is serialised by the engine's
578
578
  // `mergeRetries` CAS-retry loop (the git-alone floor), NOT the workflow.
579
579
  require('merge-matrix', /advance-merge:[\s\S]*?strategy:\s*[\s\S]*?matrix:/.test(
@@ -690,7 +690,7 @@ export function validateAdvanceLifecycleWorkflow(
690
690
  text,
691
691
  ), 'the `sweepMergedBranches` dispatch input (capability F, opt-out) must be ' +
692
692
  'preserved.');
693
- // The ORPHAN-SIDECAR reap (prd
693
+ // The ORPHAN-SIDECAR reap (spec
694
694
  // `agentic-question-resolution-retire-disposition-vocabulary`, US #10) rides
695
695
  // the SAME scheduled `dorfl gc --remote-branches` invocation, so it provably
696
696
  // FIRES on the cron tick (not behind an un-passed flag). The reap step that
@@ -745,7 +745,7 @@ export function validateAdvanceLifecycleWorkflow(
745
745
  // --- The propose `enumerate` matrix must UNION taskable prds --------------
746
746
  // (`ci-propose-matrix-must-enumerate-sliceable-prds-not-only-slices`): a
747
747
  // task-only `jq` would render `DORFL_AUTO_TASK: 'true'` dead on the
748
- // hourly cron — a ready ungated PRD would never become a matrix leg. The `jq`
748
+ // hourly cron — a ready ungated SPEC would never become a matrix leg. The `jq`
749
749
  // must enumerate `spec:<slug>` ids from `scan --json`'s taskable-SPEC pool
750
750
  // (`repos[].specs[]` + `cwd.repo.specs[]`) alongside the eligible-task legs.
751
751
  require('propose-enumerates-taskable-specs', /"spec:" \+ \.slug/.test(text) &&
@@ -760,7 +760,7 @@ export function validateAdvanceLifecycleWorkflow(
760
760
  // --- The propose `enumerate` matrix must UNION the LIFECYCLE pools ----------
761
761
  // (`ci-propose-matrix-enumerates-lifecycle-items`): a build/task-only `jq`
762
762
  // runs the answer-loop ONLY in merge mode — a `needsAnswers` item is
763
- // `eligible:false` and untriaged observations are not in the task/prd pools at
763
+ // `eligible:false` and untriaged observations are not in the task/spec pools at
764
764
  // all, so NO lifecycle rung (triage/surface/apply) ever gets a propose leg. The
765
765
  // `jq` must enumerate the three lifecycle sub-pools from `scan --json`
766
766
  // (`repos[].lifecycle.*` + `cwd.repo.lifecycle.*`): `triage[]` → `obs:<slug>`,