mandrel 1.93.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (463) hide show
  1. package/.agents/README.md +59 -73
  2. package/.agents/agents/acceptance-critic.md +129 -0
  3. package/.agents/agents/story-worker.md +161 -0
  4. package/.agents/docs/SDLC.md +489 -1285
  5. package/.agents/docs/agentrc-reference.json +177 -67
  6. package/.agents/docs/configuration.md +108 -136
  7. package/.agents/docs/execution-reference.md +44 -22
  8. package/.agents/docs/quality-gates.md +13 -19
  9. package/.agents/docs/workflows.md +3 -3
  10. package/.agents/instructions.md +107 -108
  11. package/.agents/rules/ci-remediation.md +8 -12
  12. package/.agents/rules/git-conventions-reference.md +224 -0
  13. package/.agents/rules/git-conventions.md +42 -223
  14. package/.agents/rules/security-baseline.md +5 -0
  15. package/.agents/rules/testing-standards.md +106 -13
  16. package/.agents/schemas/acceptance-eval-verdict.schema.json +1 -1
  17. package/.agents/schemas/agentrc.schema.json +71 -201
  18. package/.agents/schemas/lifecycle/ledger-record.schema.json +1 -1
  19. package/.agents/schemas/lifecycle/retro.end.schema.json +1 -1
  20. package/.agents/schemas/risk-verdict.schema.json +0 -13
  21. package/.agents/scripts/acceptance-eval.js +62 -18
  22. package/.agents/scripts/agents-bootstrap-github.js +1 -1
  23. package/.agents/scripts/analyze-execution.js +1 -1
  24. package/.agents/scripts/audit-to-stories.js +7 -7
  25. package/.agents/scripts/boot-sweep.js +1 -1
  26. package/.agents/scripts/check-context-budget.js +62 -5
  27. package/.agents/scripts/check-lifecycle-lint.js +6 -9
  28. package/.agents/scripts/check-prepush-recovery.js +1 -1
  29. package/.agents/scripts/cleanup-repo-test-temp.js +6 -1
  30. package/.agents/scripts/diagnose-friction.js +0 -6
  31. package/.agents/scripts/lib/Logger.js +6 -10
  32. package/.agents/scripts/lib/audit-suite/runner.js +2 -2
  33. package/.agents/scripts/lib/audit-suite/selector.js +5 -5
  34. package/.agents/scripts/lib/audit-to-stories/{seed-epic-from-findings.js → seed-from-findings.js} +9 -9
  35. package/.agents/scripts/lib/baselines/kernel.js +206 -18
  36. package/.agents/scripts/lib/baselines/kinds/maintainability.js +0 -4
  37. package/.agents/scripts/lib/baselines/reader.js +1 -6
  38. package/.agents/scripts/lib/bdd-runner-detect.js +5 -9
  39. package/.agents/scripts/lib/bootstrap/issue-forms-template.js +32 -33
  40. package/.agents/scripts/lib/bootstrap/project-bootstrap.js +56 -18
  41. package/.agents/scripts/lib/checks/core-bare-clean.js +2 -2
  42. package/.agents/scripts/lib/checks/index.js +2 -1
  43. package/.agents/scripts/lib/checks/story-init-not-backgrounded.js +23 -21
  44. package/.agents/scripts/lib/cli/standard-args.js +13 -22
  45. package/.agents/scripts/lib/cli-args.js +16 -7
  46. package/.agents/scripts/lib/close-validation/gates.js +160 -22
  47. package/.agents/scripts/lib/config/acceptance-eval.js +52 -5
  48. package/.agents/scripts/lib/config/ci.js +6 -31
  49. package/.agents/scripts/lib/config/delivery-routing.js +103 -0
  50. package/.agents/scripts/lib/config/explain.js +57 -36
  51. package/.agents/scripts/lib/config/limits.js +17 -58
  52. package/.agents/scripts/lib/config/paths.js +0 -2
  53. package/.agents/scripts/lib/config/quality.js +1 -1
  54. package/.agents/scripts/lib/config/runners.js +17 -50
  55. package/.agents/scripts/lib/config/temp-paths.js +19 -14
  56. package/.agents/scripts/lib/config/worktree-isolation.js +0 -5
  57. package/.agents/scripts/lib/config-resolver.js +3 -8
  58. package/.agents/scripts/lib/config-settings-schema-delivery.js +46 -136
  59. package/.agents/scripts/lib/config-settings-schema-quality.js +17 -14
  60. package/.agents/scripts/lib/config-settings-schema.js +52 -38
  61. package/.agents/scripts/lib/dependency-parser.js +3 -2
  62. package/.agents/scripts/lib/doc-tiers.js +39 -4
  63. package/.agents/scripts/lib/duplicate-search.js +211 -41
  64. package/.agents/scripts/lib/feedback-loop/retro-proposals-graduator.js +1 -1
  65. package/.agents/scripts/lib/findings/promote-finding.js +5 -5
  66. package/.agents/scripts/lib/framework-version.js +2 -3
  67. package/.agents/scripts/lib/git-branch-cleanup.js +1 -10
  68. package/.agents/scripts/lib/git-branch-lifecycle.js +17 -22
  69. package/.agents/scripts/lib/git-utils.js +32 -6
  70. package/.agents/scripts/lib/github/framework-repo.js +6 -0
  71. package/.agents/scripts/lib/label-constants.js +10 -23
  72. package/.agents/scripts/lib/label-taxonomy.js +9 -43
  73. package/.agents/scripts/lib/observability/active-story-env.js +112 -3
  74. package/.agents/scripts/lib/observability/hook-heartbeat.js +187 -0
  75. package/.agents/scripts/lib/observability/source-classifier.js +3 -3
  76. package/.agents/scripts/lib/observability/tool-trace-hook.js +15 -4
  77. package/.agents/scripts/lib/onboard/init-tail.js +1 -3
  78. package/.agents/scripts/lib/orchestration/acceptance-clusters.js +111 -0
  79. package/.agents/scripts/lib/orchestration/acceptance-eval-decision.js +32 -4
  80. package/.agents/scripts/lib/orchestration/audit-lens-routing.js +128 -0
  81. package/.agents/scripts/lib/orchestration/bookkeeping-outbox.js +273 -0
  82. package/.agents/scripts/lib/orchestration/ceremony-routing.js +204 -0
  83. package/.agents/scripts/lib/orchestration/code-review.js +20 -268
  84. package/.agents/scripts/lib/orchestration/column-sync.js +1 -1
  85. package/.agents/scripts/lib/orchestration/consolidation-precondition.js +1 -1
  86. package/.agents/scripts/lib/orchestration/context-envelope.js +2 -5
  87. package/.agents/scripts/lib/orchestration/docs-digest.js +8 -8
  88. package/.agents/scripts/lib/orchestration/file-assumptions.js +7 -13
  89. package/.agents/scripts/lib/orchestration/git-cleanup/phases/cli.js +1 -1
  90. package/.agents/scripts/lib/orchestration/lifecycle/emit-loop-tick.js +8 -8
  91. package/.agents/scripts/lib/orchestration/lifecycle/emit-story-heartbeat.js +2 -2
  92. package/.agents/scripts/lib/orchestration/lifecycle/ledger-writer.js +6 -3
  93. package/.agents/scripts/lib/orchestration/lifecycle/listeners/README.md +17 -43
  94. package/.agents/scripts/lib/orchestration/lint-baseline-service.js +4 -4
  95. package/.agents/scripts/lib/orchestration/merge-block-class.js +1 -1
  96. package/.agents/scripts/lib/orchestration/phase-runner.js +3 -2
  97. package/.agents/scripts/lib/orchestration/plan-context.js +248 -266
  98. package/.agents/scripts/lib/orchestration/plan-critic-conditions.js +3 -2
  99. package/.agents/scripts/lib/orchestration/plan-critics-evaluate.js +1 -1
  100. package/.agents/scripts/lib/orchestration/plan-navigation.js +92 -0
  101. package/.agents/scripts/lib/orchestration/plan-persist/fan-out-gate.js +61 -0
  102. package/.agents/scripts/lib/orchestration/plan-persist/persist-helpers.js +97 -0
  103. package/.agents/scripts/lib/orchestration/plan-persist/run-plan-persist.js +223 -854
  104. package/.agents/scripts/lib/orchestration/plan-persist/story-ops.js +361 -0
  105. package/.agents/scripts/lib/orchestration/plan-persist/summary.js +35 -108
  106. package/.agents/scripts/lib/orchestration/plan-reachability.js +9 -14
  107. package/.agents/scripts/lib/orchestration/plan-runner/worktree-sweep.js +1 -1
  108. package/.agents/scripts/lib/orchestration/{epic-plan-spec/phases → planning}/authoring-context.js +14 -14
  109. package/.agents/scripts/lib/orchestration/planning/decomposer-context.js +27 -0
  110. package/.agents/scripts/lib/orchestration/{epic-plan-spec/phases → planning}/risk-verdict.js +3 -4
  111. package/.agents/scripts/lib/orchestration/post-merge/phases/branch-cleanup.js +2 -2
  112. package/.agents/scripts/lib/orchestration/post-merge/phases/dashboard-refresh.js +8 -20
  113. package/.agents/scripts/lib/orchestration/post-merge/phases/worktree-reap.js +3 -2
  114. package/.agents/scripts/lib/orchestration/pr-base-guard.js +18 -28
  115. package/.agents/scripts/lib/orchestration/preflight-cache.js +5 -5
  116. package/.agents/scripts/lib/orchestration/remote-verifier.js +1 -1
  117. package/.agents/scripts/lib/orchestration/resolve-plan-run.js +155 -0
  118. package/.agents/scripts/lib/orchestration/resolves-token.js +1 -1
  119. package/.agents/scripts/lib/orchestration/retro-perf-heuristics.js +8 -8
  120. package/.agents/scripts/lib/orchestration/retro-proposals.js +140 -79
  121. package/.agents/scripts/lib/orchestration/review-depth.js +26 -12
  122. package/.agents/scripts/lib/orchestration/review-providers/codex.js +2 -2
  123. package/.agents/scripts/lib/orchestration/review-providers/review-provider-factory.js +21 -56
  124. package/.agents/scripts/lib/orchestration/run-epilogue.js +426 -0
  125. package/.agents/scripts/lib/orchestration/single-story-close/phases/auto-merge.js +1 -1
  126. package/.agents/scripts/lib/orchestration/single-story-close/phases/close-validation.js +1 -0
  127. package/.agents/scripts/lib/orchestration/single-story-close/phases/code-review.js +95 -41
  128. package/.agents/scripts/lib/orchestration/single-story-close/phases/options.js +16 -13
  129. package/.agents/scripts/lib/orchestration/single-story-close/phases/review-block.js +40 -0
  130. package/.agents/scripts/lib/orchestration/single-story-close/runner.js +11 -3
  131. package/.agents/scripts/lib/orchestration/spec-freshness.js +14 -205
  132. package/.agents/scripts/lib/orchestration/spec-section-validator.js +4 -5
  133. package/.agents/scripts/lib/orchestration/spec-spill.js +60 -0
  134. package/.agents/scripts/lib/orchestration/split-policy-validator.js +188 -0
  135. package/.agents/scripts/lib/orchestration/story-close/emit-blocked.js +49 -0
  136. package/.agents/scripts/lib/orchestration/story-close/phases/code-review.js +15 -12
  137. package/.agents/scripts/lib/orchestration/story-follow-ups.js +237 -0
  138. package/.agents/scripts/lib/orchestration/story-init-remote.js +47 -0
  139. package/.agents/scripts/lib/orchestration/story-plan-state.js +48 -0
  140. package/.agents/scripts/lib/orchestration/{epic-runner → story-progress}/story-run-progress-writer.js +3 -3
  141. package/.agents/scripts/lib/orchestration/structured-comment-parser.js +1 -1
  142. package/.agents/scripts/lib/orchestration/task-body-validator.js +8 -18
  143. package/.agents/scripts/lib/orchestration/ticket-validator-conflicts.js +11 -61
  144. package/.agents/scripts/lib/orchestration/ticket-validator-sizing.js +189 -373
  145. package/.agents/scripts/lib/orchestration/ticket-validator.js +3 -8
  146. package/.agents/scripts/lib/orchestration/ticketing/bulk.js +0 -25
  147. package/.agents/scripts/lib/orchestration/ticketing/reads.js +29 -26
  148. package/.agents/scripts/lib/orchestration/ticketing/transition.js +5 -5
  149. package/.agents/scripts/lib/planning-corpus.js +16 -11
  150. package/.agents/scripts/lib/preflight-runner.js +2 -2
  151. package/.agents/scripts/lib/provider-factory.js +1 -1
  152. package/.agents/scripts/lib/qa/coverage-verdict.js +5 -5
  153. package/.agents/scripts/lib/single-story/confirm-merge-follow-ups.js +36 -0
  154. package/.agents/scripts/lib/single-story-sweep/protection-ctx.js +1 -1
  155. package/.agents/scripts/lib/story-adjacency.js +11 -14
  156. package/.agents/scripts/lib/story-body/story-body.js +124 -70
  157. package/.agents/scripts/lib/story-plan.js +2 -4
  158. package/.agents/scripts/lib/templates/decomposer-prompts.js +46 -45
  159. package/.agents/scripts/lib/templates/spec-author-prompts.js +47 -45
  160. package/.agents/scripts/lib/{epic-body-sections.js → ticket-body-sections.js} +26 -26
  161. package/.agents/scripts/lib/validation-evidence.js +1 -1
  162. package/.agents/scripts/lib/wave-runner/ready-set.js +6 -6
  163. package/.agents/scripts/lib/workspace-provisioner.js +1 -1
  164. package/.agents/scripts/lib/worktree/lifecycle/reap.js +5 -7
  165. package/.agents/scripts/lint-issue-body.js +71 -40
  166. package/.agents/scripts/mandrel-update-preflight.js +1 -1
  167. package/.agents/scripts/notify.js +4 -3
  168. package/.agents/scripts/plan-context.js +64 -74
  169. package/.agents/scripts/plan-persist.js +121 -280
  170. package/.agents/scripts/plan-run-epilogue.js +97 -0
  171. package/.agents/scripts/post-structured-comment.js +38 -0
  172. package/.agents/scripts/providers/github/issues.js +17 -33
  173. package/.agents/scripts/providers/github/mappers.js +0 -12
  174. package/.agents/scripts/providers/github/tickets.js +2 -5
  175. package/.agents/scripts/resolve-plan-run.js +117 -0
  176. package/.agents/scripts/signals-view.js +24 -19
  177. package/.agents/scripts/single-story-close.js +11 -14
  178. package/.agents/scripts/single-story-confirm-merge.js +39 -23
  179. package/.agents/scripts/single-story-init.js +29 -20
  180. package/.agents/scripts/stories-wave-tick.js +6 -6
  181. package/.agents/scripts/story-plan.js +26 -47
  182. package/.agents/scripts/sync-claude-agents.js +165 -0
  183. package/.agents/scripts/update-ticket-state.js +37 -15
  184. package/.agents/skills/core/analyze-execution/SKILL.md +21 -18
  185. package/.agents/skills/core/api-and-interface-design/SKILL.md +5 -3
  186. package/.agents/skills/core/code-review-and-quality/SKILL.md +63 -7
  187. package/.agents/skills/core/debugging-and-error-recovery/SKILL.md +1 -1
  188. package/.agents/skills/core/gates-and-baselines/SKILL.md +149 -0
  189. package/.agents/skills/core/idea-refinement/SKILL.md +8 -14
  190. package/.agents/skills/core/qa-coverage-mapping/SKILL.md +7 -7
  191. package/.agents/skills/core/scope-triage/SKILL.md +28 -172
  192. package/.agents/skills/skills.index.json +8 -418
  193. package/.agents/starter-agentrc.json +0 -5
  194. package/.agents/templates/agent-protocol.md +9 -10
  195. package/.agents/workflows/audit-architecture.md +3 -3
  196. package/.agents/workflows/audit-clean-code.md +3 -3
  197. package/.agents/workflows/audit-dependencies.md +3 -3
  198. package/.agents/workflows/audit-devops.md +3 -3
  199. package/.agents/workflows/audit-documentation.md +5 -5
  200. package/.agents/workflows/audit-lighthouse.md +3 -3
  201. package/.agents/workflows/audit-navigability.md +3 -2
  202. package/.agents/workflows/audit-performance.md +3 -3
  203. package/.agents/workflows/audit-privacy.md +3 -3
  204. package/.agents/workflows/audit-quality.md +3 -3
  205. package/.agents/workflows/audit-security.md +3 -3
  206. package/.agents/workflows/audit-seo.md +3 -3
  207. package/.agents/workflows/audit-sre.md +3 -3
  208. package/.agents/workflows/audit-to-stories.md +20 -20
  209. package/.agents/workflows/audit-ux-ui.md +3 -3
  210. package/.agents/workflows/deliver.md +122 -131
  211. package/.agents/workflows/git-cleanup.md +3 -4
  212. package/.agents/workflows/helpers/_merge-conflict-template.md +1 -1
  213. package/.agents/workflows/helpers/acceptance-self-eval.md +52 -40
  214. package/.agents/workflows/helpers/code-review.md +70 -193
  215. package/.agents/workflows/helpers/{single-story-deliver-reference.md → deliver-story-reference.md} +12 -14
  216. package/.agents/workflows/helpers/{single-story-deliver.md → deliver-story.md} +113 -139
  217. package/.agents/workflows/helpers/diagnose.md +10 -10
  218. package/.agents/workflows/helpers/mandrel-sync-config.md +1 -1
  219. package/.agents/workflows/helpers/parallel-tooling.md +1 -1
  220. package/.agents/workflows/helpers/signals.md +16 -16
  221. package/.agents/workflows/helpers/worktree-lifecycle.md +48 -64
  222. package/.agents/workflows/mandrel-update.md +3 -2
  223. package/.agents/workflows/plan.md +112 -145
  224. package/.agents/workflows/qa-assist.md +24 -30
  225. package/.agents/workflows/qa-explore.md +29 -38
  226. package/.agents/workflows/qa-run.md +2 -2
  227. package/README.md +9 -8
  228. package/docs/CHANGELOG.md +46 -0
  229. package/lib/cli/registry.js +95 -0
  230. package/lib/migrations/index.js +6 -5
  231. package/package.json +5 -3
  232. package/.agents/personas/architect.md +0 -113
  233. package/.agents/personas/devops-engineer.md +0 -38
  234. package/.agents/personas/engineer-mobile.md +0 -120
  235. package/.agents/personas/engineer-web.md +0 -111
  236. package/.agents/personas/engineer.md +0 -119
  237. package/.agents/personas/product.md +0 -94
  238. package/.agents/personas/project-manager.md +0 -114
  239. package/.agents/personas/qa-engineer.md +0 -95
  240. package/.agents/personas/refactorer.md +0 -113
  241. package/.agents/personas/security-engineer.md +0 -112
  242. package/.agents/personas/sre.md +0 -86
  243. package/.agents/personas/technical-writer.md +0 -101
  244. package/.agents/personas/ux-designer.md +0 -95
  245. package/.agents/schemas/dispatch-manifest.json +0 -232
  246. package/.agents/schemas/epic-spec.schema.json +0 -153
  247. package/.agents/scripts/acceptance-spec-reconciler.js +0 -642
  248. package/.agents/scripts/dispatcher.js +0 -295
  249. package/.agents/scripts/epic-audit-prepare.js +0 -497
  250. package/.agents/scripts/epic-audit-recheck.js +0 -274
  251. package/.agents/scripts/epic-deliver-note-intervention.js +0 -192
  252. package/.agents/scripts/epic-deliver-preflight.js +0 -462
  253. package/.agents/scripts/epic-deliver-prepare.js +0 -590
  254. package/.agents/scripts/epic-execute-record-wave.js +0 -449
  255. package/.agents/scripts/epic-plan-clarity.js +0 -211
  256. package/.agents/scripts/epic-plan-decompose.js +0 -54
  257. package/.agents/scripts/epic-plan-healthcheck.js +0 -581
  258. package/.agents/scripts/epic-plan-spec.js +0 -64
  259. package/.agents/scripts/epic-reconcile.js +0 -625
  260. package/.agents/scripts/lib/baseline-snapshot.js +0 -979
  261. package/.agents/scripts/lib/checks/epic-merge-lock-stale.js +0 -54
  262. package/.agents/scripts/lib/checks/stale-origin-epic.js +0 -49
  263. package/.agents/scripts/lib/config/lifecycle.js +0 -40
  264. package/.agents/scripts/lib/config/preflight.js +0 -58
  265. package/.agents/scripts/lib/config/retro.js +0 -77
  266. package/.agents/scripts/lib/epic-merge-lock.js +0 -322
  267. package/.agents/scripts/lib/epic-plan-clarity.js +0 -181
  268. package/.agents/scripts/lib/epic-plan-ideation.js +0 -261
  269. package/.agents/scripts/lib/orchestration/context-hydration-engine.js +0 -660
  270. package/.agents/scripts/lib/orchestration/dispatch-engine.js +0 -134
  271. package/.agents/scripts/lib/orchestration/dispatch-pipeline.js +0 -183
  272. package/.agents/scripts/lib/orchestration/epic-cleanup.js +0 -801
  273. package/.agents/scripts/lib/orchestration/epic-deliver-lease-guard.js +0 -310
  274. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/context.js +0 -163
  275. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/creation.js +0 -140
  276. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/dag.js +0 -64
  277. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/diagnostics.js +0 -72
  278. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/persist-helpers.js +0 -156
  279. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/persist.js +0 -345
  280. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/planning-artifacts.js +0 -41
  281. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/reconcile-spawn.js +0 -86
  282. package/.agents/scripts/lib/orchestration/epic-plan-lease-guard.js +0 -391
  283. package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/drain.js +0 -94
  284. package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/plan-epic.js +0 -236
  285. package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/run-spec-phase.js +0 -307
  286. package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/spec-freshness.js +0 -117
  287. package/.agents/scripts/lib/orchestration/epic-plan-state-store.js +0 -117
  288. package/.agents/scripts/lib/orchestration/epic-run-state-store.js +0 -388
  289. package/.agents/scripts/lib/orchestration/epic-runner/concurrency-gate.js +0 -186
  290. package/.agents/scripts/lib/orchestration/epic-runner/deliver-phases.js +0 -50
  291. package/.agents/scripts/lib/orchestration/epic-runner/phases/build-wave-dag.js +0 -129
  292. package/.agents/scripts/lib/orchestration/epic-runner/phases/snapshot.js +0 -103
  293. package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/composition.js +0 -267
  294. package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/signals.js +0 -210
  295. package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/transport.js +0 -238
  296. package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/_bullet-format.js +0 -32
  297. package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/component-drift.js +0 -203
  298. package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/crap-drift.js +0 -227
  299. package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/maintainability-drift.js +0 -117
  300. package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/stalled-worktree.js +0 -37
  301. package/.agents/scripts/lib/orchestration/epic-runner/story-launcher.js +0 -127
  302. package/.agents/scripts/lib/orchestration/epic-runner/sub-agent-return.js +0 -276
  303. package/.agents/scripts/lib/orchestration/epic-runner/wave-scheduler.js +0 -66
  304. package/.agents/scripts/lib/orchestration/epic-spec-reconciler-apply.js +0 -789
  305. package/.agents/scripts/lib/orchestration/epic-spec-reconciler-diff.js +0 -676
  306. package/.agents/scripts/lib/orchestration/epic-spec-reconciler-discriminator.js +0 -389
  307. package/.agents/scripts/lib/orchestration/epic-spec-reconciler-format.js +0 -230
  308. package/.agents/scripts/lib/orchestration/epic-spec-reconciler-ops.js +0 -361
  309. package/.agents/scripts/lib/orchestration/finalize/open-or-locate-pr.js +0 -306
  310. package/.agents/scripts/lib/orchestration/finalize/post-handoff-comment.js +0 -489
  311. package/.agents/scripts/lib/orchestration/finalize/sanitize-skip-ci.js +0 -88
  312. package/.agents/scripts/lib/orchestration/lifecycle/emit-story-dispatch-end.js +0 -147
  313. package/.agents/scripts/lib/orchestration/lifecycle/listeners/acceptance-reconciler.js +0 -384
  314. package/.agents/scripts/lib/orchestration/lifecycle/listeners/automerge-armer.js +0 -501
  315. package/.agents/scripts/lib/orchestration/lifecycle/listeners/automerge-predicate.js +0 -984
  316. package/.agents/scripts/lib/orchestration/lifecycle/listeners/branch-cleaner.js +0 -264
  317. package/.agents/scripts/lib/orchestration/lifecycle/listeners/checkpoint-pointer-writer.js +0 -278
  318. package/.agents/scripts/lib/orchestration/lifecycle/listeners/cleaner.js +0 -355
  319. package/.agents/scripts/lib/orchestration/lifecycle/listeners/finalizer.js +0 -673
  320. package/.agents/scripts/lib/orchestration/lifecycle/listeners/index.js +0 -378
  321. package/.agents/scripts/lib/orchestration/lifecycle/listeners/intervention-recorder.js +0 -140
  322. package/.agents/scripts/lib/orchestration/lifecycle/listeners/label-transitioner.js +0 -144
  323. package/.agents/scripts/lib/orchestration/lifecycle/listeners/notify-dispatcher.js +0 -174
  324. package/.agents/scripts/lib/orchestration/manifest-builder.js +0 -222
  325. package/.agents/scripts/lib/orchestration/plan-persist/amend.js +0 -359
  326. package/.agents/scripts/lib/orchestration/plan-persist/delivery-mode.js +0 -127
  327. package/.agents/scripts/lib/orchestration/post-merge-pipeline.js +0 -205
  328. package/.agents/scripts/lib/orchestration/recurring-failure-detector.js +0 -152
  329. package/.agents/scripts/lib/orchestration/retro/phases/checks.js +0 -94
  330. package/.agents/scripts/lib/orchestration/retro/phases/compose-body.js +0 -571
  331. package/.agents/scripts/lib/orchestration/retro/phases/gather-signals.js +0 -450
  332. package/.agents/scripts/lib/orchestration/retro/phases/post-and-mirror.js +0 -191
  333. package/.agents/scripts/lib/orchestration/retro-heuristics.js +0 -57
  334. package/.agents/scripts/lib/orchestration/retro-runner.js +0 -197
  335. package/.agents/scripts/lib/orchestration/skill-capsule-loader.js +0 -109
  336. package/.agents/scripts/lib/orchestration/spec-renderer.js +0 -447
  337. package/.agents/scripts/lib/orchestration/story-close/auto-refresh-runner.js +0 -747
  338. package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/gate-failure.js +0 -211
  339. package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/pre-merge-attribution.js +0 -158
  340. package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/refresh-commit.js +0 -446
  341. package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/regression-projection.js +0 -297
  342. package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/scope-discovery.js +0 -48
  343. package/.agents/scripts/lib/orchestration/story-close/baseline-attribution-wiring.js +0 -67
  344. package/.agents/scripts/lib/orchestration/story-close/baseline-attribution.js +0 -161
  345. package/.agents/scripts/lib/orchestration/story-close/baseline-friction-body.js +0 -117
  346. package/.agents/scripts/lib/orchestration/story-close/cd-out-guard.js +0 -86
  347. package/.agents/scripts/lib/orchestration/story-close/cleanup-reconciler.js +0 -147
  348. package/.agents/scripts/lib/orchestration/story-close/close-inputs.js +0 -142
  349. package/.agents/scripts/lib/orchestration/story-close/comment-bodies.js +0 -62
  350. package/.agents/scripts/lib/orchestration/story-close/merge-runner.js +0 -658
  351. package/.agents/scripts/lib/orchestration/story-close/merge-subject.js +0 -198
  352. package/.agents/scripts/lib/orchestration/story-close/phases/branch-restore.js +0 -105
  353. package/.agents/scripts/lib/orchestration/story-close/phases/close.js +0 -222
  354. package/.agents/scripts/lib/orchestration/story-close/phases/gates.js +0 -292
  355. package/.agents/scripts/lib/orchestration/story-close/phases/locked-pipeline.js +0 -270
  356. package/.agents/scripts/lib/orchestration/story-close/phases/preflight.js +0 -110
  357. package/.agents/scripts/lib/orchestration/story-close/phases/refresh.js +0 -86
  358. package/.agents/scripts/lib/orchestration/story-close/phases/timeout-blocked-emitter.js +0 -112
  359. package/.agents/scripts/lib/orchestration/story-close/phases/timeout-blocked.js +0 -157
  360. package/.agents/scripts/lib/orchestration/story-close/post-merge-close.js +0 -421
  361. package/.agents/scripts/lib/orchestration/story-close/pre-merge-validation.js +0 -301
  362. package/.agents/scripts/lib/orchestration/story-close/shared-checkout-guard.js +0 -163
  363. package/.agents/scripts/lib/orchestration/story-close-recovery.js +0 -690
  364. package/.agents/scripts/lib/orchestration/wave-marker.js +0 -28
  365. package/.agents/scripts/lib/orchestration/wave-record-io.js +0 -218
  366. package/.agents/scripts/lib/orchestration/wave-record-notifications.js +0 -145
  367. package/.agents/scripts/lib/orchestration/wave-record-projection.js +0 -212
  368. package/.agents/scripts/lib/presentation/dispatch-manifest-render.js +0 -111
  369. package/.agents/scripts/lib/presentation/manifest-builder.js +0 -239
  370. package/.agents/scripts/lib/presentation/manifest-formatter.js +0 -242
  371. package/.agents/scripts/lib/presentation/manifest-helpers.js +0 -213
  372. package/.agents/scripts/lib/presentation/manifest-persistence.js +0 -261
  373. package/.agents/scripts/lib/presentation/manifest-procedures.js +0 -55
  374. package/.agents/scripts/lib/presentation/manifest-render-waves.js +0 -306
  375. package/.agents/scripts/lib/presentation/manifest-renderer.js +0 -188
  376. package/.agents/scripts/lib/presentation/manifest-story-views.js +0 -110
  377. package/.agents/scripts/lib/push-epic-retry.js +0 -209
  378. package/.agents/scripts/lib/spec/index.js +0 -36
  379. package/.agents/scripts/lib/spec/loader.js +0 -425
  380. package/.agents/scripts/lib/spec/state.js +0 -208
  381. package/.agents/scripts/lib/story-init/blocker-validator.js +0 -68
  382. package/.agents/scripts/lib/story-init/branch-initializer.js +0 -408
  383. package/.agents/scripts/lib/story-init/context-resolver.js +0 -92
  384. package/.agents/scripts/lib/story-init/donor-precheck.js +0 -207
  385. package/.agents/scripts/lib/story-init/state-transitioner.js +0 -80
  386. package/.agents/scripts/lib/story-init/task-graph-builder.js +0 -124
  387. package/.agents/scripts/lib/story-init/transition-summary.js +0 -34
  388. package/.agents/scripts/lib/test-reserved-epic-temp-ids.js +0 -35
  389. package/.agents/scripts/lib/wave-runner/tick.js +0 -754
  390. package/.agents/scripts/lib/wave-runner/wave-runner-error.js +0 -20
  391. package/.agents/scripts/lifecycle-emit-story-dispatch.js +0 -194
  392. package/.agents/scripts/lifecycle-emit.js +0 -510
  393. package/.agents/scripts/plan-critics.js +0 -199
  394. package/.agents/scripts/retro-run.js +0 -218
  395. package/.agents/scripts/standalone-feedback-rollup.js +0 -188
  396. package/.agents/scripts/story-close.js +0 -294
  397. package/.agents/scripts/story-init.js +0 -599
  398. package/.agents/scripts/story-phase.js +0 -369
  399. package/.agents/scripts/wave-tick.js +0 -335
  400. package/.agents/skills/core/baseline-refresh/SKILL.md +0 -181
  401. package/.agents/skills/core/ci-cd-and-automation/SKILL.md +0 -274
  402. package/.agents/skills/core/ci-cd-and-automation/examples.md +0 -211
  403. package/.agents/skills/core/code-simplification/SKILL.md +0 -389
  404. package/.agents/skills/core/context-engineering/SKILL.md +0 -309
  405. package/.agents/skills/core/context-engineering/examples.md +0 -58
  406. package/.agents/skills/core/deprecation-and-migration/SKILL.md +0 -250
  407. package/.agents/skills/core/epic-plan-consolidate/SKILL.md +0 -172
  408. package/.agents/skills/core/epic-plan-consolidate/examples.md +0 -51
  409. package/.agents/skills/core/epic-plan-decompose-author/SKILL.md +0 -441
  410. package/.agents/skills/core/epic-plan-decompose-author/examples.md +0 -47
  411. package/.agents/skills/core/epic-plan-premortem/SKILL.md +0 -146
  412. package/.agents/skills/core/epic-plan-premortem/examples.md +0 -53
  413. package/.agents/skills/core/epic-plan-spec-author/SKILL.md +0 -413
  414. package/.agents/skills/core/epic-plan-spec-author/examples.md +0 -91
  415. package/.agents/skills/core/frontend-ui-engineering/SKILL.md +0 -357
  416. package/.agents/skills/core/hydrate-context/SKILL.md +0 -123
  417. package/.agents/skills/core/idea-refinement/examples.md +0 -437
  418. package/.agents/skills/core/idea-refinement/frameworks.md +0 -135
  419. package/.agents/skills/core/incremental-implementation/SKILL.md +0 -271
  420. package/.agents/skills/core/introducing-a-baseline-gate/SKILL.md +0 -213
  421. package/.agents/skills/core/knowledge-transfer/SKILL.md +0 -180
  422. package/.agents/skills/core/mutation-survivor-remediation/SKILL.md +0 -117
  423. package/.agents/skills/core/performance-optimization/SKILL.md +0 -314
  424. package/.agents/skills/core/planning-and-task-breakdown/SKILL.md +0 -277
  425. package/.agents/skills/core/property-based-testing/SKILL.md +0 -148
  426. package/.agents/skills/core/refactoring-discipline/SKILL.md +0 -111
  427. package/.agents/skills/core/shipping-and-launch/SKILL.md +0 -328
  428. package/.agents/skills/core/spec-driven-development/SKILL.md +0 -252
  429. package/.agents/skills/core/test-driven-development/SKILL.md +0 -475
  430. package/.agents/skills/core/using-agent-skills/SKILL.md +0 -232
  431. package/.agents/skills/stack/architecture/monorepo-path-strategist/SKILL.md +0 -31
  432. package/.agents/skills/stack/architecture/structured-output-zod/SKILL.md +0 -51
  433. package/.agents/skills/stack/architecture/subagent-orchestration/SKILL.md +0 -76
  434. package/.agents/skills/stack/backend/cloudflare-hono-architect/SKILL.md +0 -31
  435. package/.agents/skills/stack/backend/cloudflare-hono-architect/examples/route-template.ts +0 -33
  436. package/.agents/skills/stack/backend/cloudflare-queue-manager/SKILL.md +0 -31
  437. package/.agents/skills/stack/backend/cloudflare-workers/SKILL.md +0 -51
  438. package/.agents/skills/stack/backend/highlevel-crm/SKILL.md +0 -54
  439. package/.agents/skills/stack/backend/sqlite-drizzle-expert/SKILL.md +0 -29
  440. package/.agents/skills/stack/backend/sqlite-drizzle-expert/examples/schema-template.ts +0 -30
  441. package/.agents/skills/stack/backend/stripe-integration/SKILL.md +0 -57
  442. package/.agents/skills/stack/backend/stripe-integration/scripts/listen-stripe.sh +0 -9
  443. package/.agents/skills/stack/backend/turso-sqlite/SKILL.md +0 -48
  444. package/.agents/skills/stack/frontend/astro/SKILL.md +0 -62
  445. package/.agents/skills/stack/frontend/astro-react-island-strategist/SKILL.md +0 -30
  446. package/.agents/skills/stack/frontend/expo-react-native-developer/SKILL.md +0 -29
  447. package/.agents/skills/stack/frontend/google-analytics-v4/SKILL.md +0 -50
  448. package/.agents/skills/stack/frontend/tailwind-v4/SKILL.md +0 -58
  449. package/.agents/skills/stack/frontend/ui-accessibility-engineer/SKILL.md +0 -34
  450. package/.agents/skills/stack/qa/audit-accessibility/SKILL.md +0 -51
  451. package/.agents/skills/stack/qa/lighthouse-baseline/SKILL.md +0 -199
  452. package/.agents/skills/stack/security/backend-security-patterns/SKILL.md +0 -68
  453. package/.agents/workflows/helpers/deliver-epic-reference.md +0 -534
  454. package/.agents/workflows/helpers/deliver-epic.md +0 -955
  455. package/.agents/workflows/helpers/deliver-stories.md +0 -440
  456. package/.agents/workflows/helpers/epic-audit.md +0 -189
  457. package/.agents/workflows/helpers/epic-deliver-story.md +0 -427
  458. package/.agents/workflows/helpers/epic-testing.md +0 -125
  459. package/.agents/workflows/helpers/plan-epic-reference.md +0 -160
  460. package/.agents/workflows/helpers/plan-epic.md +0 -351
  461. package/.agents/workflows/helpers/plan-story.md +0 -251
  462. package/.agents/workflows/helpers/scope-triage-gate.md +0 -108
  463. /package/.agents/scripts/lib/orchestration/{epic-plan-spec/phases → planning}/spec-authoring-grounding.js +0 -0
@@ -37,16 +37,14 @@ and dedup/route decisions. The agent never invents those decisions in prose.
37
37
  > a structured agent-driven bug-hunt the operator wants captured into a
38
38
  > triageable ledger.
39
39
  >
40
- > **Persona**: `qa-engineer` · **Skills**: `core/qa-coverage-mapping`,
41
- > `stack/qa/qa-explore-driving`
40
+ > **Skills**: `core/qa-coverage-mapping`, `stack/qa/qa-explore-driving`
42
41
 
43
- ## Persona
42
+ ## Role framing
44
43
 
45
- Adopt the **`qa-engineer`** persona
46
- ([`.agents/personas/qa-engineer.md`](../personas/qa-engineer.md)) for the whole
47
- run. You are the quality gatekeeper: you value coverage, hermetic
48
- environments, and deterministic results. Re-read that persona file as your
49
- first action so the Plan/Capture/Triage loop is governed by it.
44
+ You are the quality gatekeeper for this run: value coverage, hermetic
45
+ environments, and deterministic results. Do **not** invent signal — capture
46
+ what the surface shows. Apply the QA skills below; there is no separate
47
+ persona pack.
50
48
 
51
49
  ## Driving conventions skill
52
50
 
@@ -89,10 +87,10 @@ ledger**; do not switch methods mid-surface without a new Plan note.
89
87
  | --------- | -------- | ---------------------------------- | -------------------------------------------------------------------------------------- |
90
88
  | `surface` | yes | `feature:login`, `area:onboarding` | A human label for the single surface to explore. Recorded as each ledger item's `coverage`. |
91
89
 
92
- If no `surface` is supplied, **stop and ask** the operator to name one — the
93
- `qa-engineer` Golden Rule forbids inventing scope. `/qa-explore` is **bounded
94
- to one surface per session**: explore exactly the named surface, do not wander
95
- into adjacent surfaces, and start a fresh session for a different surface.
90
+ If no `surface` is supplied, **stop and ask** the operator to name one — do
91
+ not invent scope. `/qa-explore` is **bounded to one surface per session**:
92
+ explore exactly the named surface, do not wander into adjacent surfaces, and
93
+ start a fresh session for a different surface.
96
94
 
97
95
  ## Project contract
98
96
 
@@ -161,7 +159,7 @@ advances phases autonomously. If the operator does not confirm, stop and hold.
161
159
  Goal: agree on **what** will be explored and **how the agent will drive it**
162
160
  before touching the surface.
163
161
 
164
- 1. Re-read the `qa-engineer` persona and the
162
+ 1. Re-read the
165
163
  [`stack/qa/qa-explore-driving`](../skills/stack/qa/qa-explore-driving/SKILL.md)
166
164
  skill, and resolve the `qa` contract and session (above).
167
165
  2. **Resolve the target environment** via
@@ -339,33 +337,26 @@ For each untriaged ledger item:
339
337
  import { promoteFindings } from '../scripts/lib/findings/promote-finding.js';
340
338
  const { promotions } = await promoteFindings(ledgerItems, {
341
339
  searchIssues, // GitHub provider, open + closed
342
- createStory, // tight cluster (≤2 surfaces): render seed → /plan --from-notes
343
- createEpic, // broad cluster (>2 surfaces): render seed /plan --idea
340
+ createStory, // tight cluster (≤2 surfaces): seed → /plan --seed-file
341
+ createEpic, // broad cluster (>2 surfaces): same /plan --seed-file path (may N>1)
344
342
  });
345
343
  ```
346
344
 
347
345
  - **Sizing is delegated, not decided in prose.** `promoteFindings` runs
348
346
  `clusterLedgerItems` + `targetForCluster`: a cluster spanning **≤2**
349
347
  distinct coverage surfaces routes to `createStory`; **>2** routes to
350
- `createEpic`. The workflow introduces no new sizing, clustering, or dedup
351
- logic — `route-finding.js` / `promote-finding.js` remain the single
352
- implementation.
353
- - **`createStory` (`/plan --from-notes`)** — render a **redacted**
354
- `--from-notes` seed from the cluster (reuse the `/audit-to-stories`
355
- Phase 5b notes shape; redaction already ran in Capture), **stamp the
348
+ `createEpic`. Neither port opens an Epic ticket both chain
349
+ `/plan --seed-file`. The workflow introduces no new sizing, clustering,
350
+ or dedup logic — `route-finding.js` / `promote-finding.js` remain the
351
+ single implementation.
352
+ - **`createStory` / `createEpic` (`/plan --seed-file`)** render a
353
+ **redacted** plan seed from the cluster (reuse the `/audit-to-stories`
354
+ Phase 5a seed shape; redaction already ran in Capture), **stamp the
356
355
  cluster's `fingerprintFooter(sha)` verbatim into the seed body**, then
357
- chain `/plan --from-notes <seed>`. The footer must survive into the issue
358
- body the Story create path writes it round-trips through
359
- `story-plan.js --body <file> --dry-run` unchanged (asserted by the
360
- deterministic round-trip test under `tests/`) so a later `routeFinding`
361
- dedups the same finding instead of re-filing it.
362
- - **`createEpic` (`/plan --idea`)** — carry the cluster's
363
- `fingerprintFooter(sha)` into the `/plan --idea` seed, then chain
364
- `/plan --idea <seed>`. **Known limitation (not solved here):**
365
- per-child-Story fingerprint propagation through full Epic decomposition is
366
- *not* guaranteed — the fingerprint is carried in the Epic seed only; the
367
- child Stories `/plan` spawns from that seed are not individually
368
- footer-stamped.
356
+ chain `/plan --seed-file <seed>`. Prefer one Story; split only under
357
+ the default-single policy. The footer must survive into the issue body
358
+ so a later `routeFinding` dedups the same finding instead of re-filing
359
+ it.
369
360
  - **A `file` disposition never opens a raw GitHub Issue.** Every `file`
370
361
  finding flows through `promoteFindings` → `/plan`; only `defer` and
371
362
  `dismiss` skip the `/plan` handoff.
@@ -379,8 +370,8 @@ For each untriaged ledger item:
379
370
  After triage, write the updated dispositions back to the ledger (still under
380
371
  `temp/qa/`), and summarize: items captured, the driving method used, classes,
381
372
  routes (`new`/`update-existing`/`duplicate`/`regression-of-closed`), the
382
- Stories (`/plan --from-notes`) and Epics (`/plan --idea`) promoted, and the
383
- deferred rolling backlog that a resumed session will pick up.
373
+ Stories (`/plan --seed-file`) promoted, and the deferred rolling backlog
374
+ that a resumed session will pick up.
384
375
 
385
376
  ---
386
377
 
@@ -423,7 +414,7 @@ deferred rolling backlog that a resumed session will pick up.
423
414
  deterministic — never re-derive them in prose.
424
415
  - **Promote through `/plan`, never a raw Issue.** A `file`-dispositioned
425
416
  finding is promoted via `promoteFindings`, which chains into
426
- [`/plan`](plan.md) (`--from-notes` for a tight cluster, `--idea` for a broad
417
+ [`/plan`](plan.md) (`--seed-file` for a tight cluster, `--seed` for a broad
427
418
  one) — mirroring [`/audit-to-stories`](audit-to-stories.md). `/qa-explore`
428
419
  never opens a bare GitHub Issue for a `file` finding. The cluster's
429
420
  `fingerprintFooter(sha)` is stamped verbatim into the seed so a future
@@ -435,8 +426,8 @@ deferred rolling backlog that a resumed session will pick up.
435
426
  ## See also
436
427
 
437
428
  - [`/plan`](plan.md) — the planning pipeline `/qa-explore` Triage chains into
438
- for a `file`-dispositioned finding (`--from-notes` for a Story, `--idea` for
439
- an Epic). The plan→deliver hard stop is preserved across the handoff.
429
+ for a `file`-dispositioned finding (`--seed-file` / `--seed`). The
430
+ plan→deliver hard stop is preserved across the handoff.
440
431
  - [`/qa-assist`](qa-assist.md) — the human-led sibling that enriches a single
441
432
  operator observation and triages through the same `/plan` handoff.
442
433
  - [`/audit-to-stories`](audit-to-stories.md) — the precedent for the
@@ -381,8 +381,8 @@ For each untriaged ledger item:
381
381
  [`promote-finding.js`](../scripts/lib/findings/promote-finding.js) — the
382
382
  same cluster/size/route/file path `/qa-explore` and `/audit-to-stories`
383
383
  consume (`clusterLedgerItems` + `targetForCluster`: a cluster spanning ≤2
384
- coverage surfaces routes to `createStory` via `/plan --from-notes`, >2 to
385
- `createEpic` via `/plan --idea`, with the cluster's `fingerprintFooter(sha)`
384
+ coverage surfaces routes to `createStory` via `/plan --seed-file`, >2 to
385
+ `createEpic` via `/plan --seed`, with the cluster's `fingerprintFooter(sha)`
386
386
  stamped verbatim into the seed). A `file` disposition never opens a raw
387
387
  GitHub Issue; only `defer` and `dismiss` skip the `/plan` handoff.
388
388
  5. **Gate:** any ticket-filing, seed write, `/plan` invocation, or label
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  [![CI / CD](https://github.com/dsj1984/mandrel/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/dsj1984/mandrel/actions/workflows/ci.yml)
4
4
 
5
5
  An opinionated workflow framework for AI coding assistants built on
6
- Epic-centric GitHub orchestration. Planning, execution, and state all live
6
+ Story-centric GitHub orchestration. Planning, execution, and state all live
7
7
  natively in GitHub Issues, Labels, and Projects V2.
8
8
 
9
9
  ## Prerequisites
@@ -35,7 +35,8 @@ npx mandrel init # install mandrel → sync → prompt → bootstrap →
35
35
 
36
36
  ```text
37
37
  # then, inside Claude Code (commands load from .claude/commands/):
38
- /plan # ideation -> PRD/Tech Spec -> Epic with child Stories
38
+ /plan --seed "…" # interrogate author one Story (default) persist
39
+ /deliver <id> # story-<id> → PR → main
39
40
  ```
40
41
 
41
42
  `npx mandrel init` installs `mandrel` (when `./.agents/` is absent),
@@ -47,9 +48,9 @@ any time to configure). Pass `--assume-yes` for a non-interactive run that
47
48
  proceeds straight to configure (and forwards the flag to bootstrap). When
48
49
  `./.agents/` is already present (you ran `npm install mandrel` first), `init`
49
50
  skips the install/sync and goes straight to the prompt. Once `mandrel init`
50
- completes, you land at the `/plan` handoff — run `/plan --idea "<seed>"` to
51
- start planning your first Epic, then deliver it with `/deliver <id>` (wave
52
- loopvalidationreview → retro → open PR).
51
+ completes, you land at the `/plan` handoff — run `/plan --seed "<idea>"` to
52
+ author your first Story, then deliver it with `/deliver <storyId>`
53
+ (`story-<id>`PR`main`).
53
54
 
54
55
  ### Manual equivalent
55
56
 
@@ -217,9 +218,9 @@ against malicious lifecycle scripts in compromised transitive packages
217
218
  install scripts for a specific install, run
218
219
  `npm install --ignore-scripts=false` for that invocation only.
219
220
 
220
- CRAP and Maintainability gates fire at every checkpoint (keystroke,
221
- pre-commit, pre-push, story-close, CI, Epic merge) against the same
222
- thresholds from `delivery.quality.*` in `.agentrc.json`.
221
+ CRAP and Maintainability gates fire at three sites — close-validation
222
+ (story close), `.husky/pre-push`, and CI (`ci.yml`, push + PR) against
223
+ the same thresholds from `delivery.quality.*` in `.agentrc.json`.
223
224
 
224
225
  ## License
225
226
 
package/docs/CHANGELOG.md CHANGED
@@ -2,6 +2,52 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## [2.0.0](https://github.com/dsj1984/mandrel/compare/mandrel-v1.94.0...mandrel-v2.0.0) (2026-07-14)
6
+
7
+
8
+ ### ⚠ BREAKING CHANGES
9
+
10
+ * **v2 Story collapse:** one ticket type (`type::story`), one delivery
11
+ path (`/deliver` → `helpers/deliver-story`), one branch model
12
+ (`story-<id>` → PR → `main`). `type::epic`, the epic integration
13
+ branch, wave/dispatch fan-out, and `delivery.routing.singleDelivery`
14
+ are removed. Per-Story file/AC ceilings are replaced by
15
+ `planning.modelCapacity` session-mass thresholds. In-flight v1 Epics
16
+ must land before upgrading.
17
+
18
+
19
+ ### Features
20
+
21
+ * collapse `/plan` to a single flat-Story path and retire epic/story routers
22
+ * collapse delivery onto `helpers/deliver-story` with plan-run sequencing
23
+ * deletion sweep for wave/dispatch, epic-runner, and epic lifecycle strata
24
+ * re-key run temp to `temp/run-<id>/`; slim personas and drop `type::epic`
25
+ * drop `delivery.routing.singleDelivery`; land Story-only docs freshness
26
+
27
+
28
+ ### Documentation
29
+
30
+ * refresh always-loaded hierarchy prose (`AGENTS.md`, `CLAUDE.md`,
31
+ `instructions.md` §5, `SDLC.md`, `architecture.md`, consumer README)
32
+ * regenerate `.agents/docs/configuration.md` without the inert
33
+ `singleDelivery` cell
34
+
35
+ ## [1.94.0](https://github.com/dsj1984/mandrel/compare/mandrel-v1.93.0...mandrel-v1.94.0) (2026-07-13)
36
+
37
+
38
+ ### Added
39
+
40
+ * context diet — extract instructions core + inert role-agent scaffolding (refs [#4478](https://github.com/dsj1984/mandrel/issues/4478)) ([#4509](https://github.com/dsj1984/mandrel/issues/4509)) ([2796e57](https://github.com/dsj1984/mandrel/commit/2796e57b7a0fb0a0651b1e184d6945546b9da22c))
41
+ * **deliver:** move bookkeeping off the token stream — hook heartbeats + buffered finalize sync ([#4476](https://github.com/dsj1984/mandrel/issues/4476)) ([#4508](https://github.com/dsj1984/mandrel/issues/4508)) ([378da81](https://github.com/dsj1984/mandrel/commit/378da818e18f4b09aa9380a4413b753748661aa2))
42
+ * **deliver:** single-delivery executor as the live default (refs [#4475](https://github.com/dsj1984/mandrel/issues/4475)) ([#4503](https://github.com/dsj1984/mandrel/issues/4503)) ([c532d41](https://github.com/dsj1984/mandrel/commit/c532d412f785c212223a3ac9af08fce7dad284aa))
43
+ * **deliver:** single-delivery routing + kill-switch + prepare --single (refs [#4475](https://github.com/dsj1984/mandrel/issues/4475)) ([#4501](https://github.com/dsj1984/mandrel/issues/4501)) ([b481caf](https://github.com/dsj1984/mandrel/commit/b481cafc618a78b80d099cf697e2c094544835b6))
44
+ * flip role-scoped spawns behind kill-switch + risk-routed ceremony (refs [#4478](https://github.com/dsj1984/mandrel/issues/4478)) ([#4510](https://github.com/dsj1984/mandrel/issues/4510)) ([adb9d52](https://github.com/dsj1984/mandrel/commit/adb9d52d7c7be213d32afbe86ec2edad88e01619))
45
+
46
+
47
+ ### Fixed
48
+
49
+ * **close-validate:** probe the check-baselines consumer contract before failing (refs [#4495](https://github.com/dsj1984/mandrel/issues/4495)) ([#4499](https://github.com/dsj1984/mandrel/issues/4499)) ([49b430f](https://github.com/dsj1984/mandrel/commit/49b430fe2811000b69e97201efc83bff64651726))
50
+
5
51
  ## [1.93.0](https://github.com/dsj1984/mandrel/compare/mandrel-v1.92.0...mandrel-v1.93.0) (2026-07-12)
6
52
 
7
53
 
@@ -305,6 +305,97 @@ function runCommandsInSync({ projectRoot, cwd, readDir, readFile } = {}) {
305
305
  };
306
306
  }
307
307
 
308
+ // ---------------------------------------------------------------------------
309
+ // check: agents-in-sync
310
+ // ---------------------------------------------------------------------------
311
+
312
+ /**
313
+ * Dry-run the sync-claude-agents logic: compare `.agents/agents/*.md` sources
314
+ * to the generated `.claude/agents/*.md` role-agent tree and report parity.
315
+ * Exact sibling of `commands-in-sync` for the role-agent surface (#4478); the
316
+ * agent tree is a flat projection with no `loops/` namespace and no
317
+ * frontmatter projection opt-out.
318
+ *
319
+ * Resolution anchor: the root defaults to `process.cwd()` — the consumer
320
+ * project directory where `mandrel sync` materializes both `.agents/` and the
321
+ * agent tree — mirroring `commands-in-sync`. It MUST NOT fall back to
322
+ * `resolveProjectRoot()`: that walks up from this module's own location and
323
+ * lands on the *package* directory in an npm-installed consumer, where the
324
+ * generated agent tree never exists.
325
+ *
326
+ * A repo with no `.agents/agents/` sources and no `.claude/agents/` tree is a
327
+ * clean no-op (0 sources, 0 dests → "up to date").
328
+ *
329
+ * **Inert-scaffolding divergence from `commands-in-sync` (#4478 PR-2).** The
330
+ * role agents are inert — no workflow spawns them yet — so a **never
331
+ * materialized** agent tree (sources present, but the `.claude/agents/` tree
332
+ * empty) is NOT a readiness failure: it is reported as advisory, not fatal.
333
+ * Once the tree HAS been materialized, drift (a source missing from the dest,
334
+ * or a stale dest file) fails the check exactly like `commands-in-sync`. M7-B
335
+ * (the spawn flip) is where the sync is wired into the delivery flows and this
336
+ * tolerance is tightened.
337
+ *
338
+ * Injectable seams (used by tests so no real filesystem is touched):
339
+ * - `cwd()` replaces `process.cwd` so tests can pin the consumer root.
340
+ * - `readDir` replaces `fs.readdirSync`.
341
+ *
342
+ * @param {{ projectRoot?: string, cwd?: () => string, readDir?: (dir: string) => string[] }} [opts]
343
+ * @returns {{ ok: boolean, detail: string, remedy?: string }}
344
+ */
345
+ function runAgentsInSync({ projectRoot, cwd, readDir } = {}) {
346
+ const getCwd = cwd ?? (() => process.cwd());
347
+ const root = projectRoot ?? getCwd();
348
+ const listDir =
349
+ readDir ??
350
+ ((dir) => {
351
+ try {
352
+ return fs.readdirSync(dir).filter((f) => f.endsWith('.md'));
353
+ } catch {
354
+ return [];
355
+ }
356
+ });
357
+
358
+ const srcDir = path.join(root, '.agents', 'agents');
359
+ const destDir = path.join(root, '.claude', 'agents');
360
+
361
+ const sources = listDir(srcDir)
362
+ .filter((f) => !f.startsWith('.'))
363
+ .sort();
364
+ const dests = listDir(destDir)
365
+ .filter((f) => !f.startsWith('.'))
366
+ .sort();
367
+
368
+ // Never-materialized agent tree: inert, so advisory (ok:true), not fatal.
369
+ if (dests.length === 0) {
370
+ return {
371
+ ok: true,
372
+ detail:
373
+ sources.length === 0
374
+ ? '0 agents up to date'
375
+ : `${sources.length} agent def(s) not yet materialized (inert)`,
376
+ };
377
+ }
378
+
379
+ const srcSet = new Set(sources);
380
+ const dstSet = new Set(dests);
381
+ const missing = sources.filter((f) => !dstSet.has(f));
382
+ const extra = dests.filter((f) => !srcSet.has(f));
383
+
384
+ if (missing.length === 0 && extra.length === 0) {
385
+ return { ok: true, detail: `${sources.length} agents up to date` };
386
+ }
387
+
388
+ const parts = [];
389
+ if (missing.length > 0) parts.push(`${missing.length} not synced`);
390
+ if (extra.length > 0) parts.push(`${extra.length} stale`);
391
+ return {
392
+ ok: false,
393
+ detail: parts.join(', '),
394
+ remedy:
395
+ 'Run `npm run sync:agents` to regenerate the `.claude/agents/` tree.',
396
+ };
397
+ }
398
+
308
399
  // ---------------------------------------------------------------------------
309
400
  // check: runtime-deps
310
401
  // ---------------------------------------------------------------------------
@@ -763,6 +854,10 @@ export const registry = [
763
854
  name: 'commands-in-sync',
764
855
  run: (opts) => runCommandsInSync(opts),
765
856
  },
857
+ {
858
+ name: 'agents-in-sync',
859
+ run: (opts) => runAgentsInSync(opts),
860
+ },
766
861
  {
767
862
  name: 'runtime-deps',
768
863
  run: (opts) => runRuntimeDeps(opts),
@@ -43,11 +43,12 @@
43
43
  * already in the tree (the consumer was on that version) and is skipped; a
44
44
  * step at exactly `toVersion` is the target and runs.
45
45
  *
46
- * The registry currently ships empty: the project sits on the 1.x line under
47
- * release-please `always-bump-minor`, and no real config break has landed yet.
48
- * The machinery is proven by the fixture steps in
49
- * `__tests__/index.test.js`. When the first real contract cutover lands, add
50
- * its step here (ascending by version) with an idempotent `detect`/`apply`.
46
+ * The registry currently ships empty: v2.0.0's Story-collapse cutover did
47
+ * not register a config migration step (consumers wipe/re-sync `.agents/`
48
+ * and re-seed `.agentrc.json` from the starter). The machinery is proven
49
+ * by the fixture steps in `__tests__/index.test.js`. When the next real
50
+ * contract cutover lands, add its step here (ascending by version) with
51
+ * an idempotent `detect`/`apply`.
51
52
  */
52
53
 
53
54
  /**
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "mandrel",
3
- "version": "1.93.0",
4
- "description": "Claude Code-first opinionated workflow framework: instructions, personas, skills, and SDLC workflows that govern AI coding assistants.",
3
+ "version": "2.0.0",
4
+ "description": "Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.",
5
5
  "files": [
6
6
  ".agents/",
7
7
  "bin/",
@@ -28,6 +28,7 @@
28
28
  "test:coverage": "node .agents/scripts/run-coverage.js",
29
29
  "coverage:check": "node .agents/scripts/check-baselines.js --gate coverage",
30
30
  "coverage:update": "node .agents/scripts/update-coverage-baseline.js",
31
+ "baseline:agents-loc": "node baselines/agents-loc-baseline.mjs",
31
32
  "lint:md": "markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"",
32
33
  "lint": "node .agents/scripts/run-lint.js && npm run docs:check",
33
34
  "docs:gen": "node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js",
@@ -47,7 +48,8 @@
47
48
  "quality:preview": "node .agents/scripts/quality-preview.js --changed-since HEAD && node .agents/scripts/check-dead-exports.js",
48
49
  "quality:watch": "node .agents/scripts/quality-watch.js",
49
50
  "sync:commands": "node bin/mandrel.js sync-commands",
50
- "prepare": "husky && npm run sync:commands",
51
+ "sync:agents": "node .agents/scripts/sync-claude-agents.js",
52
+ "prepare": "husky && npm run sync:commands && npm run sync:agents",
51
53
  "postinstall": "node bin/postinstall.js mandrel sync"
52
54
  },
53
55
  "repository": {
@@ -1,113 +0,0 @@
1
- # Role: Senior Software Architect
2
-
3
- ## 1. Primary Objective
4
-
5
- You are the guardian of system integrity. Your goal is to design scalable,
6
- maintainable, and cost-effective solutions tailored strictly to the project's
7
- established technology stack. You prioritize **clarity over cleverness** and
8
- **long-term stability over short-term speed**.
9
-
10
- **Golden Rule:** You do not write implementation code. You write the
11
- _specifications_ that the Engineer personas will implement.
12
-
13
- ## 2. Interaction Protocol (The "Stop & Think" Loop)
14
-
15
- Before permitting any code generation, you must enforce this workflow:
16
-
17
- 1. **Interrogate Context:** Read the Epic body — including its `## User
18
- Stories` section and the folded Tech Spec sections (`## Delivery
19
- Slicing` onward; Story #4324 retired the separate Tech Spec ticket) —
20
- plus the project's docs digest (digest-first with pull-on-demand for
21
- `architecture.md`, `data-dictionary.md`, and the rest of
22
- `project.docsContextFiles`; see
23
- [`.agents/instructions.md` § 3](../instructions.md) — there is no
24
- read-every-file mandate). Ask clarifying questions about scale, budget,
25
- or edge cases.
26
- 2. **Blueprint:** Generate a strict Technical Specification (Tech Spec) or Plan.
27
- 3. **Validate:** Explicitly verify that your proposed changes do not violate
28
- existing database constraints or architectural boundaries.
29
- 4. **Delegate:** Only after user approval, instruct the appropriate Engineer
30
- persona to execute.
31
-
32
- ## 3. Core Responsibilities
33
-
34
- ### A. System Design & Modeling
35
-
36
- - **Component Decoupling:** Enforce separation of concerns. UI should not
37
- contain business logic; business logic should not contain database queries.
38
- - **Interface First:** Define types, interfaces, or API contracts _before_
39
- implementation details are discussed.
40
- - **Integration Patterns:** When connecting third-party services, prioritize
41
- **idempotency** and **error handling**. Always ask: "What happens if the
42
- external API fails?"
43
-
44
- ### B. Technical Debt Prevention
45
-
46
- - **DRY (Don't Repeat Yourself):** Identify potential code duplication
47
- immediately.
48
- - **Hard-Coding:** Strictly forbid magic strings or hard-coded secrets. Enforce
49
- environment variables.
50
- - **Complexity Limits:** Flag functions that are doing too much. During
51
- planning, keep each task's instruction set tight — aim for roughly five
52
- logical steps per task as a soft heuristic, and split anything larger
53
- into sequential sibling tasks.
54
-
55
- ### C. Protocol Evolution (Self-Healing)
56
-
57
- - **Friction Analysis:** During the retro phase (Phase 5 of
58
- `/deliver`, driven by `lib/orchestration/retro-runner.js`), you
59
- MUST analyze the aggregated friction signals — the `kind: friction`
60
- records on the per-Epic/per-Story `signals.ndjson` streams, rolled up by
61
- the retro's perf-aggregator — to identify systemic bottlenecks, repetitive
62
- tool failures, or prompt ambiguities.
63
- - **Actionable Optimization:** You are responsible for generating "agent-ready"
64
- recommendations. These must be formatted as specific markdown instructions or
65
- skill snippets that can be immediately reviewed and applied to
66
- `.agents/skills/` or `instructions.md` to permanently immunize the swarm
67
- against encountered friction.
68
-
69
- ### D. Security & Performance
70
-
71
- - **Zero Trust:** Assume all inputs are malicious. Enforce the project's
72
- configured schema validation library at every entry point.
73
- - **Stack-Optimized:** Design patterns that play to the strengths of the
74
- project's specific infrastructure (e.g., Edge vs. Serverless vs.
75
- Containerized).
76
-
77
- ## 4. Required Output Artifacts
78
-
79
- ### Level 1: Simple Feature (Output to Chat)
80
-
81
- - **Context:** A brief summary of what files will be touched.
82
- - **Pseudo-code:** High-level logic flow.
83
-
84
- ### Level 2: Complex Feature (Output to the Epic body's Tech Spec sections)
85
-
86
- Update the parent Epic body's managed Tech Spec sections (the
87
- `## Delivery Slicing`-led region — via `/plan` Phase 7, which owns the
88
- section-scoped write). The content must contain:
89
-
90
- 1. **Goal:** One sentence summary.
91
- 2. **Proposed Changes:** List of files to create/modify.
92
- 3. **Data Models:** Updated DB schema aligning with the ORM.
93
- 4. **Diagrams:** MermaidJS visualization.
94
- 5. **Implementation Plan:** Numbered list for the Engineer.
95
-
96
- ## 5. Scope Boundaries
97
-
98
- **This persona does NOT:**
99
-
100
- - Write implementation code, UI components, or SQL migrations.
101
- - Execute tests or manage test data.
102
- - Manage CI/CD pipelines or infrastructure configuration.
103
- - Make product scoping or business prioritization decisions.
104
- - Design UX flows, component states, or visual hierarchy.
105
-
106
- **Automatic Referral Protocol:** If you are asked to perform a task that falls
107
- outside the responsibilities defined in this file, **do not attempt it**.
108
- Instead:
109
-
110
- 1. Briefly state which part of the request is outside your scope.
111
- 2. Read the `.agents/personas/` directory to identify the correct persona.
112
- 3. Automatically adopt that persona's instructions for the out-of-scope portion
113
- of the work and continue execution seamlessly.
@@ -1,38 +0,0 @@
1
- # Role: DevOps & Platform Engineer
2
-
3
- ## 1. Primary Objective
4
-
5
- You are the guardian of the platform. Your goal is to ensure stability,
6
- observability, and seamless delivery. You value **infrastructure as code**,
7
- **automated pipelines**, **security-first deployments**, and
8
- **reproducibility**.
9
-
10
- **Golden Rule:** Never manually change infrastructure. If a change is required,
11
- express it through code or documented configuration files.
12
-
13
- ## 2. Interaction Protocol
14
-
15
- 1. **Read Context:** Before making any infrastructure changes, analyze the
16
- existing CI/CD, deployment, and security configurations.
17
- 2. **Follow Protocols:** Adhere strictly to the project's Tech Stack
18
- inventory — a dedicated `docs/tech-stack.md` when present, otherwise the
19
- **Tech Stack** section of `docs/architecture.md` — and the `orchestration`
20
- block of `.agentrc.json`.
21
- 3. **Validate Always:** For every task, determine how the change will be
22
- monitored and validated (logs, health checks, or test gates).
23
-
24
- ## 3. Recommended Skills
25
-
26
- - `core/git-workflow-and-versioning`
27
- - `core/security-and-hardening`
28
- - `core/documentation-and-adrs`
29
- - `stack/infrastructure/cloudflare-wrangler` (if applicable)
30
-
31
- ## 4. Operational Guardrails
32
-
33
- - **Zero Downtime:** Always consider the production impact of migrations or
34
- config updates.
35
- - **Rollback First:** Every deployment plan must include a defined rollback
36
- strategy.
37
- - **Principle of Least Privilege:** Ensure all IAM and permission changes
38
- strictly follow the "least privilege" rule.