mandrel 1.58.0 → 1.60.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 (319) hide show
  1. package/.agents/README.md +100 -98
  2. package/.agents/docs/SDLC.md +140 -141
  3. package/.agents/docs/configuration.md +16 -16
  4. package/.agents/docs/workflows.md +7 -8
  5. package/.agents/instructions.md +12 -11
  6. package/.agents/personas/architect.md +1 -1
  7. package/.agents/personas/product.md +1 -1
  8. package/.agents/personas/project-manager.md +14 -14
  9. package/.agents/personas/technical-writer.md +1 -1
  10. package/.agents/rules/changelog-style.md +5 -5
  11. package/.agents/rules/git-conventions.md +3 -3
  12. package/.agents/schemas/agentrc.schema.json +3 -3
  13. package/.agents/schemas/audit-rules.json +20 -0
  14. package/.agents/schemas/dispatch-manifest.json +4 -4
  15. package/.agents/schemas/epic-spec.schema.json +15 -45
  16. package/.agents/schemas/lifecycle/README.md +1 -1
  17. package/.agents/schemas/lifecycle/story.dispatch.end.schema.json +1 -1
  18. package/.agents/schemas/lifecycle/story.dispatch.start.schema.json +1 -1
  19. package/.agents/schemas/lifecycle/story.heartbeat.schema.json +1 -1
  20. package/.agents/schemas/validation-evidence.schema.json +1 -1
  21. package/.agents/scripts/README.md +1 -1
  22. package/.agents/scripts/acceptance-eval.js +21 -4
  23. package/.agents/scripts/acceptance-spec-reconciler.js +2 -2
  24. package/.agents/scripts/analyze-execution.js +2 -2
  25. package/.agents/scripts/assert-branch.js +1 -3
  26. package/.agents/scripts/audit-to-stories.js +1 -1
  27. package/.agents/scripts/bootstrap.js +1 -1
  28. package/.agents/scripts/check-arch-cycles.js +360 -0
  29. package/.agents/scripts/check-doc-links.js +2 -3
  30. package/.agents/scripts/coverage-capture.js +24 -3
  31. package/.agents/scripts/diagnose-friction.js +1 -1
  32. package/.agents/scripts/dispatcher.js +2 -2
  33. package/.agents/scripts/drain-pending-cleanup.js +1 -1
  34. package/.agents/scripts/epic-audit-prepare.js +3 -3
  35. package/.agents/scripts/epic-deliver-note-intervention.js +2 -2
  36. package/.agents/scripts/epic-deliver-preflight.js +11 -9
  37. package/.agents/scripts/epic-deliver-prepare.js +13 -5
  38. package/.agents/scripts/epic-execute-record-wave.js +5 -5
  39. package/.agents/scripts/epic-plan-healthcheck.js +6 -10
  40. package/.agents/scripts/epic-plan-spec-validate.js +1 -1
  41. package/.agents/scripts/epic-reconcile.js +11 -29
  42. package/.agents/scripts/evidence-gate.js +2 -2
  43. package/.agents/scripts/generate-workflows-doc.js +1 -1
  44. package/.agents/scripts/git-rebase-and-resolve.js +1 -1
  45. package/.agents/scripts/hierarchy-gate.js +40 -24
  46. package/.agents/scripts/lib/ITicketingProvider.js +1 -1
  47. package/.agents/scripts/lib/audit-suite/selector.js +1 -1
  48. package/.agents/scripts/lib/audit-to-stories/seed-epic-from-findings.js +2 -2
  49. package/.agents/scripts/lib/baseline-snapshot.js +7 -7
  50. package/.agents/scripts/lib/baselines/kinds/coverage.js +33 -149
  51. package/.agents/scripts/lib/baselines/kinds/duplication.js +27 -116
  52. package/.agents/scripts/lib/baselines/kinds/kind-factory.js +192 -0
  53. package/.agents/scripts/lib/baselines/kinds/lighthouse.js +34 -133
  54. package/.agents/scripts/lib/baselines/kinds/maintainability.js +31 -124
  55. package/.agents/scripts/lib/baselines/kinds/mutation.js +25 -111
  56. package/.agents/scripts/lib/baselines/maintainability-baseline-io.js +59 -0
  57. package/.agents/scripts/lib/baselines/maintainability-baseline-save.js +37 -0
  58. package/.agents/scripts/lib/baselines/writer.js +1 -1
  59. package/.agents/scripts/lib/bdd-runner-detect.js +1 -1
  60. package/.agents/scripts/lib/bdd-scenario-scanner.js +3 -3
  61. package/.agents/scripts/lib/bootstrap/baselines-layout-migration.js +1 -1
  62. package/.agents/scripts/lib/bootstrap/branch-protection.js +1 -1
  63. package/.agents/scripts/lib/bootstrap/ci-workflow-template.js +1 -1
  64. package/.agents/scripts/lib/bootstrap/commit-push.js +2 -2
  65. package/.agents/scripts/lib/close-validation/commands.js +188 -0
  66. package/.agents/scripts/lib/close-validation/gates.js +235 -0
  67. package/.agents/scripts/lib/close-validation/process.js +101 -0
  68. package/.agents/scripts/lib/close-validation/projections/maintainability.js +1 -1
  69. package/.agents/scripts/lib/close-validation/runner.js +325 -0
  70. package/.agents/scripts/lib/close-validation/telemetry.js +70 -0
  71. package/.agents/scripts/lib/codebase-snapshot.js +1 -1
  72. package/.agents/scripts/lib/config/explain.js +1 -1
  73. package/.agents/scripts/lib/config/quality.js +6 -6
  74. package/.agents/scripts/lib/config/runners.js +2 -2
  75. package/.agents/scripts/lib/config/runtime.js +1 -1
  76. package/.agents/scripts/lib/config/temp-paths.js +2 -2
  77. package/.agents/scripts/lib/config-resolver.js +2 -5
  78. package/.agents/scripts/lib/config-settings-schema-delivery.js +2 -2
  79. package/.agents/scripts/lib/config-settings-schema-quality.js +1 -1
  80. package/.agents/scripts/lib/config-settings-schema.js +3 -3
  81. package/.agents/scripts/lib/coverage-capture.js +147 -4
  82. package/.agents/scripts/lib/cpu-pool.js +14 -0
  83. package/.agents/scripts/lib/crap-utils.js +6 -11
  84. package/.agents/scripts/lib/duplicate-search.js +1 -1
  85. package/.agents/scripts/lib/dynamic-workflow/capability.js +1 -1
  86. package/.agents/scripts/lib/dynamic-workflow/documentation-report-contract.js +87 -0
  87. package/.agents/scripts/lib/epic-plan-clarity.js +1 -1
  88. package/.agents/scripts/lib/epic-plan-ideation.js +1 -1
  89. package/.agents/scripts/lib/feedback-loop/memory-freshness.js +1 -1
  90. package/.agents/scripts/lib/feedback-loop/prior-feedback-fetcher.js +1 -1
  91. package/.agents/scripts/lib/findings/classify-finding.js +1 -1
  92. package/.agents/scripts/lib/findings/promote-finding.js +10 -10
  93. package/.agents/scripts/lib/git-utils.js +24 -22
  94. package/.agents/scripts/lib/label-constants.js +3 -4
  95. package/.agents/scripts/lib/label-taxonomy.js +3 -8
  96. package/.agents/scripts/lib/maintainability-engine.js +1 -1
  97. package/.agents/scripts/lib/maintainability-utils.js +4 -187
  98. package/.agents/scripts/lib/observability/perf-report-readers.js +32 -23
  99. package/.agents/scripts/lib/orchestration/acceptance-eval-decision.js +81 -7
  100. package/.agents/scripts/lib/orchestration/code-review.js +95 -82
  101. package/.agents/scripts/lib/orchestration/context-hydration-engine.js +8 -9
  102. package/.agents/scripts/lib/orchestration/dependency-analyzer.js +3 -3
  103. package/.agents/scripts/lib/orchestration/detectors-phase.js +2 -2
  104. package/.agents/scripts/lib/orchestration/dispatch-engine.js +30 -38
  105. package/.agents/scripts/lib/orchestration/dispatch-pipeline.js +14 -37
  106. package/.agents/scripts/lib/orchestration/epic-cleanup.js +1 -1
  107. package/.agents/scripts/lib/orchestration/epic-deliver-lease-guard.js +22 -22
  108. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/creation.js +1 -1
  109. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/dag.js +7 -21
  110. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/diagnostics.js +3 -3
  111. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/planning-artifacts.js +2 -2
  112. package/.agents/scripts/lib/orchestration/epic-plan-lease-guard.js +206 -58
  113. package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/drain.js +1 -1
  114. package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/plan-epic.js +27 -3
  115. package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/prompts.js +1 -1
  116. package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/run-spec-phase.js +28 -8
  117. package/.agents/scripts/lib/orchestration/epic-plan-state-store.js +1 -1
  118. package/.agents/scripts/lib/orchestration/epic-run-state-store.js +3 -3
  119. package/.agents/scripts/lib/orchestration/epic-runner/concurrency-gate.js +4 -4
  120. package/.agents/scripts/lib/orchestration/epic-runner/deliver-phases.js +3 -3
  121. package/.agents/scripts/lib/orchestration/epic-runner/phases/build-wave-dag.js +13 -41
  122. package/.agents/scripts/lib/orchestration/epic-runner/phases/snapshot.js +7 -7
  123. package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/composition.js +2 -3
  124. package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/signals.js +2 -8
  125. package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/transport.js +4 -4
  126. package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/component-drift.js +103 -0
  127. package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/crap-drift.js +22 -64
  128. package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/maintainability-drift.js +38 -76
  129. package/.agents/scripts/lib/orchestration/epic-runner/story-launcher.js +4 -4
  130. package/.agents/scripts/lib/orchestration/epic-runner/story-run-progress-writer.js +10 -10
  131. package/.agents/scripts/lib/orchestration/epic-runner/sub-agent-return.js +8 -20
  132. package/.agents/scripts/lib/orchestration/epic-spec-reconciler-apply.js +7 -15
  133. package/.agents/scripts/lib/orchestration/epic-spec-reconciler-diff.js +72 -41
  134. package/.agents/scripts/lib/orchestration/epic-spec-reconciler-ops.js +2 -4
  135. package/.agents/scripts/lib/orchestration/file-assumptions.js +6 -5
  136. package/.agents/scripts/lib/orchestration/finalize/close-planning-tickets.js +1 -1
  137. package/.agents/scripts/lib/orchestration/finalize/open-or-locate-pr.js +2 -2
  138. package/.agents/scripts/lib/orchestration/finalize/sanitize-skip-ci.js +1 -1
  139. package/.agents/scripts/lib/orchestration/lease-guard-shared.js +144 -0
  140. package/.agents/scripts/lib/orchestration/lifecycle/emit-story-dispatch-end.js +1 -1
  141. package/.agents/scripts/lib/orchestration/lifecycle/emit-story-heartbeat.js +3 -3
  142. package/.agents/scripts/lib/orchestration/lifecycle/listeners/README.md +1 -1
  143. package/.agents/scripts/lib/orchestration/lifecycle/listeners/automerge-armer.js +1 -1
  144. package/.agents/scripts/lib/orchestration/lifecycle/listeners/automerge-predicate.js +1 -1
  145. package/.agents/scripts/lib/orchestration/lifecycle/listeners/branch-cleaner.js +1 -1
  146. package/.agents/scripts/lib/orchestration/lifecycle/listeners/finalizer.js +1 -1
  147. package/.agents/scripts/lib/orchestration/lifecycle/listeners/index.js +1 -1
  148. package/.agents/scripts/lib/orchestration/lifecycle/listeners/merge-watcher.js +1 -1
  149. package/.agents/scripts/lib/orchestration/lifecycle/listeners/notify-dispatcher.js +1 -1
  150. package/.agents/scripts/lib/orchestration/lifecycle/listeners/watcher.js +8 -8
  151. package/.agents/scripts/lib/orchestration/manifest-builder.js +5 -5
  152. package/.agents/scripts/lib/orchestration/parked-follow-ons.js +2 -2
  153. package/.agents/scripts/lib/orchestration/plan-runner/plan-router.js +5 -5
  154. package/.agents/scripts/lib/orchestration/post-merge/phases/notification.js +3 -3
  155. package/.agents/scripts/lib/orchestration/post-merge/phases/ticket-closure.js +3 -3
  156. package/.agents/scripts/lib/orchestration/post-merge/phases/worktree-reap.js +7 -7
  157. package/.agents/scripts/lib/orchestration/preflight-cache.js +36 -13
  158. package/.agents/scripts/lib/orchestration/recurring-failure-detector.js +1 -1
  159. package/.agents/scripts/lib/orchestration/retro/phases/compose-body.js +1 -1
  160. package/.agents/scripts/lib/orchestration/retro/phases/gather-signals.js +2 -2
  161. package/.agents/scripts/lib/orchestration/retro-runner.js +3 -3
  162. package/.agents/scripts/lib/orchestration/review-depth.js +1 -1
  163. package/.agents/scripts/lib/orchestration/review-providers/codex.js +5 -60
  164. package/.agents/scripts/lib/orchestration/review-providers/native.js +7 -6
  165. package/.agents/scripts/lib/orchestration/review-providers/parse-findings.js +105 -0
  166. package/.agents/scripts/lib/orchestration/review-providers/security-review.js +7 -59
  167. package/.agents/scripts/lib/orchestration/single-story-close/phases/close-validation.js +2 -4
  168. package/.agents/scripts/lib/orchestration/single-story-close/phases/options.js +1 -1
  169. package/.agents/scripts/lib/orchestration/single-story-close/phases/wrong-tree-guard.js +1 -1
  170. package/.agents/scripts/lib/orchestration/single-story-close/runner.js +2 -4
  171. package/.agents/scripts/lib/orchestration/single-story-lease-guard.js +32 -35
  172. package/.agents/scripts/lib/orchestration/skill-capsule-loader.js +1 -2
  173. package/.agents/scripts/lib/orchestration/spec-freshness.js +1 -1
  174. package/.agents/scripts/lib/orchestration/spec-renderer.js +36 -73
  175. package/.agents/scripts/lib/orchestration/spec-section-validator.js +1 -1
  176. package/.agents/scripts/lib/orchestration/story-close/auto-refresh-runner.js +451 -503
  177. package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/pre-merge-attribution.js +8 -2
  178. package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/refresh-commit.js +47 -2
  179. package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/regression-projection.js +2 -2
  180. package/.agents/scripts/lib/orchestration/story-close/baseline-friction-body.js +1 -1
  181. package/.agents/scripts/lib/orchestration/story-close/format-autofix.js +358 -54
  182. package/.agents/scripts/lib/orchestration/story-close/phases/close.js +1 -1
  183. package/.agents/scripts/lib/orchestration/story-close/phases/gates.js +3 -2
  184. package/.agents/scripts/lib/orchestration/story-close/phases/locked-pipeline.js +32 -5
  185. package/.agents/scripts/lib/orchestration/story-close/post-merge-close.js +5 -18
  186. package/.agents/scripts/lib/orchestration/story-close/pre-merge-validation.js +3 -3
  187. package/.agents/scripts/lib/orchestration/story-close-recovery.js +33 -16
  188. package/.agents/scripts/lib/orchestration/story-reachability.js +47 -0
  189. package/.agents/scripts/lib/orchestration/task-body-validator.js +6 -6
  190. package/.agents/scripts/lib/orchestration/ticket-lease.js +1 -1
  191. package/.agents/scripts/lib/orchestration/ticket-validator-conflicts.js +4 -35
  192. package/.agents/scripts/lib/orchestration/ticket-validator-sizing.js +1 -10
  193. package/.agents/scripts/lib/orchestration/ticket-validator.js +25 -70
  194. package/.agents/scripts/lib/orchestration/ticketing/bulk.js +44 -73
  195. package/.agents/scripts/lib/orchestration/ticketing/reads.js +16 -7
  196. package/.agents/scripts/lib/orchestration/ticketing/state.js +53 -439
  197. package/.agents/scripts/lib/orchestration/ticketing/transition.js +471 -0
  198. package/.agents/scripts/lib/orchestration/ticketing.js +0 -1
  199. package/.agents/scripts/lib/orchestration/wave-record-notifications.js +3 -3
  200. package/.agents/scripts/lib/orchestration/wave-record-projection.js +2 -8
  201. package/.agents/scripts/lib/plan-phase-cleanup.js +1 -1
  202. package/.agents/scripts/lib/preflight-runner.js +1 -1
  203. package/.agents/scripts/lib/presentation/dispatch-manifest-render.js +4 -5
  204. package/.agents/scripts/lib/presentation/manifest-builder.js +28 -34
  205. package/.agents/scripts/lib/presentation/manifest-formatter.js +3 -4
  206. package/.agents/scripts/lib/presentation/manifest-helpers.js +1 -1
  207. package/.agents/scripts/lib/presentation/manifest-procedures.js +4 -4
  208. package/.agents/scripts/lib/presentation/manifest-render-waves.js +4 -23
  209. package/.agents/scripts/lib/presentation/manifest-renderer.js +1 -1
  210. package/.agents/scripts/lib/presentation/manifest-story-views.js +2 -11
  211. package/.agents/scripts/lib/project-root.js +17 -0
  212. package/.agents/scripts/lib/signals/schema.js +1 -1
  213. package/.agents/scripts/lib/spec/index.js +1 -1
  214. package/.agents/scripts/lib/spec/loader.js +2 -2
  215. package/.agents/scripts/lib/spec/state.js +7 -16
  216. package/.agents/scripts/lib/story-adjacency.js +76 -0
  217. package/.agents/scripts/lib/story-init/context-resolver.js +3 -3
  218. package/.agents/scripts/lib/story-init/state-transitioner.js +2 -2
  219. package/.agents/scripts/lib/story-init/task-graph-builder.js +7 -7
  220. package/.agents/scripts/lib/story-lifecycle.js +9 -9
  221. package/.agents/scripts/lib/story-plan.js +1 -1
  222. package/.agents/scripts/lib/templates/decomposer-prompts.js +59 -52
  223. package/.agents/scripts/lib/transpile.js +93 -0
  224. package/.agents/scripts/lib/wave-runner/tick.js +4 -153
  225. package/.agents/scripts/lib/workers/crap-worker.js +1 -1
  226. package/.agents/scripts/lib/workers/maintainability-report-worker.js +1 -1
  227. package/.agents/scripts/lib/worktree/lifecycle/creation.js +20 -2
  228. package/.agents/scripts/lib/worktree/lifecycle/force-drain.js +90 -0
  229. package/.agents/scripts/lib/worktree/lifecycle/reap.js +26 -8
  230. package/.agents/scripts/lib/worktree/node-modules-strategy.js +74 -0
  231. package/.agents/scripts/lifecycle-emit-story-dispatch.js +1 -1
  232. package/.agents/scripts/lifecycle-emit.js +1 -1
  233. package/.agents/scripts/providers/github/board-add.js +1 -1
  234. package/.agents/scripts/providers/github/errors.js +1 -1
  235. package/.agents/scripts/providers/github/mappers.js +2 -2
  236. package/.agents/scripts/providers/github/tickets.js +114 -10
  237. package/.agents/scripts/resync-status-column.js +1 -1
  238. package/.agents/scripts/retro-run.js +2 -2
  239. package/.agents/scripts/run-lint.js +10 -1
  240. package/.agents/scripts/run-tests.js +24 -4
  241. package/.agents/scripts/single-story-init.js +1 -1
  242. package/.agents/scripts/stories-wave-tick.js +13 -10
  243. package/.agents/scripts/story-close.js +1 -1
  244. package/.agents/scripts/story-init.js +162 -26
  245. package/.agents/scripts/story-phase.js +5 -5
  246. package/.agents/scripts/story-plan.js +3 -3
  247. package/.agents/scripts/sync-branch-from-base.js +2 -2
  248. package/.agents/scripts/validate-docs-freshness.js +1 -1
  249. package/.agents/scripts/wave-tick.js +1 -1
  250. package/.agents/skills/core/analyze-execution/SKILL.md +2 -2
  251. package/.agents/skills/core/epic-plan-consolidate/SKILL.md +21 -26
  252. package/.agents/skills/core/epic-plan-decompose-author/SKILL.md +23 -56
  253. package/.agents/skills/core/epic-plan-spec-author/SKILL.md +4 -4
  254. package/.agents/skills/core/hydrate-context/SKILL.md +2 -2
  255. package/.agents/skills/core/idea-refinement/SKILL.md +4 -4
  256. package/.agents/skills/core/knowledge-transfer/SKILL.md +2 -2
  257. package/.agents/skills/core/planning-and-task-breakdown/SKILL.md +1 -1
  258. package/.agents/skills/core/scope-triage/SKILL.md +9 -10
  259. package/.agents/skills/core/using-agent-skills/SKILL.md +1 -1
  260. package/.agents/skills/skills.index.json +7 -7
  261. package/.agents/skills/stack/qa/lighthouse-baseline/SKILL.md +1 -1
  262. package/.agents/templates/agent-protocol.md +2 -2
  263. package/.agents/workflows/agents-update.md +2 -2
  264. package/.agents/workflows/audit-architecture.md +2 -2
  265. package/.agents/workflows/audit-clean-code.md +2 -2
  266. package/.agents/workflows/audit-dependencies.md +1 -1
  267. package/.agents/workflows/audit-devops.md +1 -1
  268. package/.agents/workflows/audit-documentation.md +226 -0
  269. package/.agents/workflows/audit-lighthouse.md +1 -1
  270. package/.agents/workflows/audit-performance.md +2 -2
  271. package/.agents/workflows/audit-privacy.md +1 -1
  272. package/.agents/workflows/audit-quality.md +2 -2
  273. package/.agents/workflows/audit-security.md +2 -2
  274. package/.agents/workflows/audit-seo.md +1 -1
  275. package/.agents/workflows/audit-sre.md +1 -1
  276. package/.agents/workflows/audit-to-stories.md +10 -10
  277. package/.agents/workflows/audit-ux-ui.md +1 -1
  278. package/.agents/workflows/deliver.md +85 -0
  279. package/.agents/workflows/explain.md +3 -3
  280. package/.agents/workflows/git-merge-pr.md +1 -1
  281. package/.agents/workflows/git-pr-all.md +13 -10
  282. package/.agents/workflows/git-push.md +6 -3
  283. package/.agents/workflows/helpers/_merge-conflict-template.md +1 -1
  284. package/.agents/workflows/helpers/acceptance-self-eval.md +1 -1
  285. package/.agents/workflows/helpers/code-review.md +5 -5
  286. package/.agents/workflows/{epic-deliver.md → helpers/deliver-epic.md} +59 -66
  287. package/.agents/workflows/{story-deliver.md → helpers/deliver-stories.md} +25 -25
  288. package/.agents/workflows/helpers/diagnose.md +1 -1
  289. package/.agents/workflows/helpers/epic-audit.md +6 -6
  290. package/.agents/workflows/helpers/epic-deliver-story.md +28 -39
  291. package/.agents/workflows/helpers/epic-plan-decompose.md +23 -23
  292. package/.agents/workflows/helpers/epic-plan-spec.md +6 -6
  293. package/.agents/workflows/helpers/epic-testing.md +3 -3
  294. package/.agents/workflows/helpers/parallel-tooling.md +1 -1
  295. package/.agents/workflows/{epic-plan.md → helpers/plan-epic.md} +84 -84
  296. package/.agents/workflows/{story-plan.md → helpers/plan-story.md} +43 -43
  297. package/.agents/workflows/helpers/signals.md +1 -1
  298. package/.agents/workflows/helpers/single-story-deliver.md +12 -11
  299. package/.agents/workflows/helpers/worktree-lifecycle.md +18 -18
  300. package/.agents/workflows/onboard.md +21 -20
  301. package/.agents/workflows/plan.md +89 -0
  302. package/.agents/workflows/qa-explore.md +1 -1
  303. package/.agents/workflows/qa-run-harness.md +1 -1
  304. package/README.md +17 -20
  305. package/docs/CHANGELOG.md +1149 -0
  306. package/lib/cli/__tests__/update-changelog-surface.test.js +357 -0
  307. package/lib/cli/__tests__/update-reexec.test.js +513 -0
  308. package/lib/cli/init.js +338 -0
  309. package/lib/cli/update.js +413 -52
  310. package/package.json +3 -1
  311. package/.agents/scripts/lib/auto-refresh-baselines.js +0 -308
  312. package/.agents/scripts/lib/close-validation.js +0 -897
  313. package/.agents/scripts/lib/orchestration/cascade-grouping.js +0 -275
  314. package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter.js +0 -69
  315. package/.agents/scripts/lib/orchestration/reconciler.js +0 -137
  316. package/.agents/scripts/lib/orchestration/story-close/format-autofix-scoped.js +0 -221
  317. package/.agents/scripts/lib/orchestration/story-close/format-autofix-shared.js +0 -123
  318. package/.agents/scripts/lib/task-utils.js +0 -26
  319. package/.agents/scripts/story-deliver-prepare.js +0 -267
package/.agents/README.md CHANGED
@@ -1,58 +1,62 @@
1
- # Mandrel — `.agents/`
2
-
3
- This is the framework payload (`.agents/`) consumed by host repos. It ships
4
- inside the [`mandrel`](https://www.npmjs.com/package/mandrel)
5
- npm package and is materialized into a consumer's `./.agents/` directory by
6
- `mandrel sync`. It carries a system prompt, a baseline rule pack, a
7
- two-tier skill library, a slash-command workflow set, and the
8
- orchestration engine that runs Epic → Feature → Story plans on
9
- GitHub. The framework version is the version of the installed
10
- [`mandrel`](https://www.npmjs.com/package/mandrel) npm
11
- package — run `npm ls mandrel` (or read `package.json`), not a
12
- count here.
1
+ # Mandrel Framework
2
+
3
+ An opinionated workflow framework for AI coding assistants built on
4
+ Epic-centric GitHub orchestration. Planning, execution, and state all live natively in GitHub Issues, Labels, and Projects V2.
5
+
6
+ This is the consumer README inside the distributed `.agents/` bundle. It explains what each part of the bundle is for and captures the cross-directory authoring conventions. The process narrative for
7
+ `/plan` and `/deliver` stays in [`docs/SDLC.md`](docs/SDLC.md).
13
8
 
14
- > **Ticket hierarchy.** Mandrel uses a **3-tier hierarchy**
15
- > (Epic Feature Story) with inline `acceptance[]` / `verify[]` on
16
- > Story bodies. See [`docs/SDLC.md` § Ticket hierarchy](docs/SDLC.md) for the
17
- > diagram and execution-model implications.
9
+ The framework payload (`.agents/`) is consumed by host repos. It ships inside the [`mandrel`](https://www.npmjs.com/package/mandrel)
10
+ npm package and is materialized into a consumer's `./.agents/` directory by `mandrel sync`. It carries a system prompt, a baseline rule pack, a two-tier skill library, a slash-command workflow set, and the orchestration engine that runs Epic → Story plans on GitHub.
18
11
 
19
- This is the only README inside the distributed `.agents/` bundle. It
20
- explains what each part of the bundle is for and captures the
21
- cross-directory authoring conventions. The process narrative for
22
- `/epic-plan` and `/epic-deliver` stays in [`docs/SDLC.md`](docs/SDLC.md).
12
+ The framework version is the version of the installed [`mandrel`](https://www.npmjs.com/package/mandrel) npm package — run `npm ls mandrel` (or read `package.json`), not a
13
+ count here.
23
14
 
24
15
  ---
25
16
 
26
17
  ## Activation
27
18
 
28
- ### Cold start — `npx create-mandrel`
19
+ ### All-in-one Install
29
20
 
30
- The canonical cold-start path is a single launcher command, run from the
31
- root of your project (the folder does **not** need to be a git repo yet):
21
+ From an **empty or existing** local directory, run:
32
22
 
33
23
  ```bash
34
- npx create-mandrel # install mandrelmandrel sync bootstrap.js
24
+ npx mandrel init # install (if absent) prompt: configure now, or just the files
35
25
  ```
36
26
 
37
- `create-mandrel` installs `mandrel`, materializes `./.agents/` via
38
- `mandrel sync` (skipping the install when `.agents/` already exists), and
39
- finishes by running `node .agents/scripts/bootstrap.js`, forwarding any flags
40
- you pass. After it completes, run **`/onboard`** inside Claude Code for the
41
- guided first run — stack detection, docs scaffolding, a `mandrel doctor`
42
- readiness gate, and a started `/epic-plan` handoff.
27
+ `mandrel init` first **installs the framework if `./.agents/` is absent** —
28
+ `npm install mandrel --ignore-scripts` followed by an explicit `mandrel sync`,
29
+ so the materialization is a single deterministic step rather than a
30
+ postinstall-then-init double sync. When `./.agents/` already exists from a prior install, it skips straight to the prompt the one subcommand is idempotent across both entry points.
31
+
32
+ It then shows a **two-option prompt**:
33
+
34
+ 1. **Configure now** — runs `node .agents/scripts/bootstrap.js`, forwarding any
35
+ passthrough flags unchanged, to wire the project and GitHub side (creates the
36
+ GitHub repo + Projects board).
37
+ 2. **Just the files** — stops after materialization and prints a re-run hint
38
+ (`mandrel init`) so you can configure later.
43
39
 
44
- The remainder of this section documents the manual steps `create-mandrel`
45
- wraps, for operators who prefer to drive them by hand.
40
+ `--assume-yes` skips the prompt and configures non-interactively (the flag is
41
+ also forwarded to `bootstrap.js`); a non-TTY run without `--assume-yes` defaults
42
+ to **files-only**, so the side-effecting GitHub provisioning never runs
43
+ unattended.
46
44
 
47
- ### Manual cold start install the npm package
45
+ After it completes, run **`/onboard`** inside Claude Code for the guided first
46
+ run — stack detection, docs scaffolding, a `mandrel doctor` readiness gate, and
47
+ a started `/plan` handoff.
48
+
49
+ ### Manual Install
50
+
51
+ This section documents the manual steps `mandrel init` wraps, for operators who prefer to drive them by hand.
52
+
53
+ #### Mandrel Package
48
54
 
49
55
  From an **empty or existing** project that does not yet have `.agents/`,
50
56
  install the package and materialize the framework payload:
51
57
 
52
58
  ```bash
53
59
  npm install mandrel
54
- # pnpm add mandrel
55
- # yarn add mandrel
56
60
  ```
57
61
 
58
62
  Installing `mandrel` pins an exact, provenance-signed version in
@@ -69,13 +73,43 @@ npx mandrel sync --dry-run # preview the planned copies, write nothing
69
73
  npx mandrel doctor # confirm the install is healthy
70
74
  ```
71
75
 
72
- Then run the bootstrap to wire the project and GitHub side:
76
+ #### Bootstrap Config
73
77
 
74
- ```bash
75
- node .agents/scripts/bootstrap.js
76
- ```
78
+ To wire the local directory and GitHub, run `npx mandrel init` again or use the bootstrapper directly: `node .agents/scripts/bootstrap.js`
79
+
80
+ The bootstrap pipeline, in order:
81
+
82
+ 1. **Preflight gate (runs first, before any mutation).** A single
83
+ fail-before-mutate check confirms Node is at the required major
84
+ version, `git` is on `PATH`, the command is running inside a git work
85
+ tree, and — unless `--skip-github` is set — that the `gh` CLI is
86
+ installed and authenticated. If any check fails the bootstrap prints
87
+ each failing check's remedy and halts with exit 1 **before** touching
88
+ a single file or making a GitHub call, so a half-configured repo is
89
+ never left behind.
90
+ 2. **Resolve answers (owner / repo / base branch / operator handle /
91
+ project number).** Defaults are inferred from the local `git remote`
92
+ and config (no network calls). Each value is resolved through a
93
+ priority chain: CLI flag → environment variable
94
+ (`GH_OWNER`, `GH_REPO`, …) → silently-accepted inferred default →
95
+ interactive picker → free-text prompt → `--assume-yes` default.
96
+ 3. **Project-side mutations.** Seeds `.agentrc.json` from
97
+ [`starter-agentrc.json`](starter-agentrc.json), merges the framework's
98
+ runtime dependencies into `package.json`, runs the install, wires the
99
+ command-sync hook (the UserPromptSubmit hook that regenerates the flat
100
+ `.claude/commands/` tree so every `/<command>` loads), wires the system
101
+ prompt (see below), gitignores derived artefacts, and runs the
102
+ quality-gates installer.
103
+ 4. **GitHub-side mutations.** Creates the label taxonomy, Project V2
104
+ fields, branch protection, and merge-method settings. Skipped with
105
+ `--skip-github`.
77
106
 
78
- ### Upgrading and local additions
107
+ The bootstrap is idempotent — safe to re-run; an already-configured
108
+ clone produces zero file mutations.
109
+
110
+ ---
111
+
112
+ ## Upgrading and local additions
79
113
 
80
114
  Once installed, the ongoing upgrade path is **`mandrel update`** — it bumps
81
115
  `mandrel` to the newest non-major version, re-runs `mandrel sync`,
@@ -107,53 +141,9 @@ the consumer-owned space `mandrel sync` never copies into nor prunes and the
107
141
  drift check treats as sanctioned, so keep project-specific skills and local
108
142
  workflow fragments there rather than editing synced files in place.
109
143
 
110
- ### Run the unified bootstrap directly
111
-
112
- When `.agents/` is already materialized, run the bootstrap straight from the
113
- host repo root:
114
-
115
- ```bash
116
- node .agents/scripts/bootstrap.js
117
- # bootstrap also seeds a discoverable npm alias, so after the first run:
118
- npm run bootstrap
119
- ```
120
-
121
- The bootstrap adds an `npm run bootstrap` script to the consumer's
122
- `package.json` (pointing at `node .agents/scripts/bootstrap.js`) the
123
- first time it runs — an operator-defined `bootstrap` script always wins,
124
- so the seed is skipped when the key already exists.
125
-
126
- The bootstrap pipeline, in order:
127
-
128
- 1. **Preflight gate (runs first, before any mutation).** A single
129
- fail-before-mutate check confirms Node is at the required major
130
- version, `git` is on `PATH`, the command is running inside a git work
131
- tree, and — unless `--skip-github` is set — that the `gh` CLI is
132
- installed and authenticated. If any check fails the bootstrap prints
133
- each failing check's remedy and halts with exit 1 **before** touching
134
- a single file or making a GitHub call, so a half-configured repo is
135
- never left behind.
136
- 2. **Resolve answers (owner / repo / base branch / operator handle /
137
- project number).** Defaults are inferred from the local `git remote`
138
- and config (no network calls). Each value is resolved through a
139
- priority chain: CLI flag → environment variable
140
- (`GH_OWNER`, `GH_REPO`, …) → silently-accepted inferred default →
141
- interactive picker → free-text prompt → `--assume-yes` default.
142
- 3. **Project-side mutations.** Seeds `.agentrc.json` from
143
- [`starter-agentrc.json`](starter-agentrc.json), merges the framework's
144
- runtime dependencies into `package.json`, runs the install, wires the
145
- command-sync hook (the UserPromptSubmit hook that regenerates the flat
146
- `.claude/commands/` tree so every `/<command>` loads), wires the system
147
- prompt (see below), gitignores derived artefacts, and runs the
148
- quality-gates installer.
149
- 4. **GitHub-side mutations.** Creates the label taxonomy, Project V2
150
- fields, branch protection, and merge-method settings. Skipped with
151
- `--skip-github`.
152
-
153
- The bootstrap is idempotent — safe to re-run; an already-configured
154
- clone produces zero file mutations.
144
+ ---
155
145
 
156
- ### Automatic system-prompt wiring
146
+ ## Automatic system-prompt wiring
157
147
 
158
148
  The bootstrap wires the framework system prompt into a project-root
159
149
  `CLAUDE.md` automatically, so there is no manual "load the system prompt"
@@ -170,7 +160,9 @@ If your AI tool is not Claude Code, load
170
160
  [`instructions.md`](instructions.md) verbatim through that tool's own
171
161
  system-prompt mechanism (`.cursorrules`, Custom Instructions, etc.).
172
162
 
173
- ### Interactive repo / project pickers
163
+ ---
164
+
165
+ ## Interactive repo / project pickers
174
166
 
175
167
  When the bootstrap runs interactively (a TTY, and `--assume-yes` is not
176
168
  set), the **repo** and **project-number** questions render a live,
@@ -195,14 +187,16 @@ For non-interactive (CI) installs, pass `--owner`, `--repo`, and
195
187
  After bootstrap, every Mandrel command is generated into a flat
196
188
  `.claude/commands/` tree by `npm run sync:commands` (the UserPromptSubmit hook
197
189
  keeps it current) and loads as a bare `/<command>` slash command — e.g.
198
- `/epic-plan`, `/story-plan`, `/story-deliver`, `/audit-security`. The
190
+ `/plan`, `/plan`, `/deliver`, `/audit-security`. The
199
191
  commands load in every Claude Code environment. The [SDLC guide](docs/SDLC.md) walks
200
192
  an end-to-end Epic; standalone Stories pair
201
- [`/story-plan`](workflows/story-plan.md) (idea → drafted Story
202
- Issue) with [`/story-deliver`](workflows/story-deliver.md) (Story Issue → merged
193
+ [`/plan`](workflows/helpers/plan-story.md) (idea → drafted Story
194
+ Issue) with [`/deliver`](workflows/helpers/deliver-stories.md) (Story Issue → merged
203
195
  PR).
204
196
 
205
- ### Runtime dependencies
197
+ ---
198
+
199
+ ## Runtime dependencies
206
200
 
207
201
  The framework scripts under `.agents/scripts/` import a small set of
208
202
  third-party npm packages at runtime. The materialized `./.agents/` tree
@@ -237,12 +231,20 @@ in `runtime-deps.json`.
237
231
 
238
232
  ---
239
233
 
234
+ ## Ticket Hierarchy
235
+
236
+ Mandrel uses a **2-tier hierarchy** (Epic → Story) with inline `acceptance[]` / `verify[]` on story bodies.
237
+
238
+ See [`docs/SDLC.md` § Ticket hierarchy](docs/SDLC.md) for the diagram and execution-model implications.
239
+
240
+ ---
241
+
240
242
  ## Contents
241
243
 
242
244
  | Path | Purpose |
243
245
  | ---- | ------- |
244
246
  | [`instructions.md`](instructions.md) | Primary system prompt loaded by the host AI tool. |
245
- | [`docs/SDLC.md`](docs/SDLC.md) | Operator process for `/epic-plan` and `/epic-deliver`. |
247
+ | [`docs/SDLC.md`](docs/SDLC.md) | Operator process for `/plan` and `/deliver`. |
246
248
  | [`starter-agentrc.json`](starter-agentrc.json) | Bootstrap delta-seed copied to the consumer repo root as `.agentrc.json`. |
247
249
  | [`agentrc-reference.json`](docs/agentrc-reference.json) | Exhaustive editor reference enumerating every schema key with its framework default. |
248
250
  | [`personas/`](personas/) | Role-specific behavior packs selected by task persona or explicit user instruction. |
@@ -443,7 +445,7 @@ sessions, `gh auth login` is sufficient.
443
445
  ## Self-Healing Checks
444
446
 
445
447
  `scripts/lib/checks/` is the discovery-based registry of named checks
446
- consumed by preflight guards (`/epic-deliver`, `/story-close`, `npm test`),
448
+ consumed by preflight guards (`/deliver`, `/story-close`, `npm test`),
447
449
  the `diagnose.js` ad-hoc viewer, and the retro surface. Use one check per
448
450
  file. The runner (`index.js`) loads checks at process start and filters by
449
451
  scope at each call site.
@@ -567,7 +569,7 @@ Schema conventions:
567
569
  ## Code review providers (pluggable chain)
568
570
 
569
571
  `runCodeReview()` (invoked at the end of `helpers/epic-deliver-story`,
570
- `helpers/single-story-deliver`, and `/epic-deliver`'s `delivery.code-review`
572
+ `helpers/single-story-deliver`, and `/deliver`'s `delivery.code-review`
571
573
  state) loads its review backend through a pluggable registry. Two configuration shapes are supported:
572
574
 
573
575
  - **Legacy single provider** — `delivery.codeReview.provider: "native"`
@@ -719,7 +721,7 @@ falls from minutes to under a second.
719
721
  ## Multi-developer coordination
720
722
 
721
723
  Two operators can drive the same repository at once — one running
722
- `/epic-deliver <id>`, another running `/single-story-deliver <id>`, or two
724
+ `/deliver <id>`, another running `/single-story-deliver <id>`, or two
723
725
  operators on the same Epic from separate clones. The framework keeps those
724
726
  runs from clobbering one another with **two distinct coordination layers**.
725
727
  They solve different problems and must not be confused:
@@ -761,7 +763,7 @@ yanks the claim back from whoever legitimately took over.
761
763
 
762
764
  **Where it's wired:**
763
765
 
764
- - **`/epic-deliver`** acquires the lease on the **Epic** ticket during its
766
+ - **`/deliver`** acquires the lease on the **Epic** ticket during its
765
767
  prepare phase, before any mutating git work
766
768
  ([`epic-deliver-lease-guard.js`](scripts/lib/orchestration/epic-deliver-lease-guard.js)).
767
769
  A live foreign claim refuses the run; pass `--steal` to override and
@@ -774,7 +776,7 @@ yanks the claim back from whoever legitimately took over.
774
776
  ([`single-story-lease-guard.js`](scripts/lib/orchestration/single-story-lease-guard.js)).
775
777
  The standalone path requires `github.operatorHandle` to be set — without
776
778
  an operator identity the lease has no owner to record.
777
- - **`/epic-plan`** acquires the lease on the **Epic** ticket before Phase 7
779
+ - **`/plan`** acquires the lease on the **Epic** ticket before Phase 7
778
780
  (spec) and releases it after Phase 8 (decompose)
779
781
  ([`epic-plan-lease-guard.js`](scripts/lib/orchestration/epic-plan-lease-guard.js)).
780
782
  Because planning emits no `story.heartbeat` (heartbeats are a
@@ -793,7 +795,7 @@ confuse:
793
795
 
794
796
  | File | Audience | Role |
795
797
  | --------------------------------- | --------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
796
- | `.agentrc.json` (repo root) | The framework dogfooding itself | Live config used when running `/epic-*`, `/story-deliver` against this repo. Exercises the framework end-to-end. |
798
+ | `.agentrc.json` (repo root) | The framework dogfooding itself | Live config used when running `/epic-*`, `/deliver` against this repo. Exercises the framework end-to-end. |
797
799
  | `.agents/starter-agentrc.json` | Downstream consumer repos | Bootstrap delta-seed a consumer copies via `cp .agents/starter-agentrc.json .agentrc.json`. Minimum schema-required keys. |
798
800
  | `.agents/docs/agentrc-reference.json` | Operators and reviewers | Exhaustive editor reference enumerating every schema key with its framework default. Not a copy target. |
799
801