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
@@ -4,8 +4,8 @@ This is the consumer-facing reference for the quality gates the framework
4
4
  runs against your repo: the lint baseline ratchet, the maintainability
5
5
  ratchet, the CRAP per-method gate, the **absolute quality floors**
6
6
  (90/85/90 coverage, MI ≥ 70, CRAP ≤ 20), the anti-thrashing protocol,
7
- and the concurrent close-safety retry that protects the Epic branch when
8
- multiple Stories close in quick succession.
7
+ and the concurrent close-safety retry that protects Story-branch pushes
8
+ when multiple Stories close in quick succession.
9
9
 
10
10
  The floor + ratchet duo is intentional: the ratchet protects against
11
11
  regressions on touched files; the floor enforces an absolute threshold
@@ -36,10 +36,9 @@ it once and reuse the context as you read through any individual gate.
36
36
 
37
37
  ## Concurrent close safety
38
38
 
39
- `/deliver`'s wave loop may close multiple Stories into the same
40
- `epic/<epicId>` branch in quick succession. The push step inside `story-close.js` retries
41
- on a non-fast-forward rejection fetch, replay the story merge on top of
42
- the new remote tip, push again — bounded by
39
+ `/deliver` may close multiple Stories from separate Story branches in quick
40
+ succession. The push step inside `single-story-close.js` refreshes against the
41
+ latest `main` and retries a rejected Story-branch push bounded by
43
42
  `DEFAULT_STORY_MERGE_RETRY.maxAttempts` (3) and
44
43
  `DEFAULT_STORY_MERGE_RETRY.backoffMs` (`[250, 500, 1000]`) from
45
44
  `.agents/scripts/lib/config/runners.js`.
@@ -117,18 +116,14 @@ The same files-out-of-scope list as before, declared in `.c8rc.cjs`:
117
116
  whose meaningful logic (label taxonomy + project field defs) lives
118
117
  in `lib/label-taxonomy.js` and is unit-tested there. The CLI shell
119
118
  itself is integration-only against a live GitHub repo.
120
- - `.agents/scripts/hydrate-context.js` — thin wrapper around the
121
- unit-tested hydration engine; end-to-end coverage requires a real
122
- provider tree and Story prompt context, which lives in integration
123
- tests.
124
- - `plan-context.js`, `plan-persist.js`, `epic-plan-healthcheck.js` —
119
+ - `plan-context.js`, `plan-persist.js`
125
120
  `/plan` CLI shells with no unit-test seam; the meaningful
126
121
  orchestration logic lives in `lib/orchestration/plan-context.js`,
127
122
  `lib/orchestration/plan-persist/*`, and the plan phase modules, and is
128
123
  unit-tested there.
129
124
  - A larger Story #1702 carve-out of top-level CLI gates, orchestration
130
125
  CLIs, git-manipulation CLIs, and `lib/*` glue (e.g. `lint-baseline.js`,
131
- `story-close.js`, `dispatcher.js`, `run-tests.js`,
126
+ `single-story-init.js`, `run-tests.js`,
132
127
  `lib/config-schema.js`) — see the `.c8rc.cjs` header comment for the
133
128
  per-category rationale and the authoritative entry list.
134
129
 
@@ -251,7 +246,7 @@ file. When any threshold under
251
246
  the qualitative anti-thrashing cues in
252
247
  [`.agents/instructions.md`](../instructions.md) are tripped, the
253
248
  friction logger flips the Story to `agent::blocked` and
254
- posts a structured `friction` comment on the Task so the operator has
249
+ posts a structured `friction` comment on the Story so the operator has
255
250
  the trace.
256
251
 
257
252
  ---
@@ -261,9 +256,8 @@ the trace.
261
256
  After a Story's implementation commits land and **before** the Story
262
257
  proceeds to close, delivery runs a bounded acceptance self-eval loop
263
258
  (Step 1a of
264
- [`helpers/epic-deliver-story`](../workflows/helpers/epic-deliver-story.md)
265
- and `helpers/single-story-deliver`; the shared per-round mechanic lives
266
- in
259
+ [`helpers/deliver-story`](../workflows/helpers/deliver-story.md); the shared
260
+ per-round mechanic lives in
267
261
  [`helpers/acceptance-self-eval`](../workflows/helpers/acceptance-self-eval.md),
268
262
  with the gate CLI at
269
263
  [`.agents/scripts/acceptance-eval.js`](../scripts/acceptance-eval.js)).
@@ -293,8 +287,8 @@ the `delivery.acceptanceEval` field reference.
293
287
  > Baseline envelope, axes, and component model: see the
294
288
  > [Baseline reference](#baseline-reference) section below.
295
289
 
296
- The lint baseline engine enforces zero-deterioration during Epic
297
- workflows. Integrations fail if new lint warnings are introduced, and the
290
+ The lint baseline engine enforces zero-deterioration during Story
291
+ delivery. Integrations fail if new lint warnings are introduced, and the
298
292
  baseline automatically tightens when the codebase improves.
299
293
 
300
294
  The canonical baseline file lives at `baselines/lint.json` (override via
@@ -319,7 +313,7 @@ this was removed in a pre-npm-era release; the operator is now the gate.
319
313
  A per-file maintainability scoring engine computes composite scores based
320
314
  on cyclomatic complexity, file length, and dependency counts. The
321
315
  `baselines/maintainability.json` baseline prevents score degradation
322
- between Epics.
316
+ between Stories.
323
317
 
324
318
  Refresh with `npm run maintainability:update`.
325
319
 
@@ -49,13 +49,13 @@ description, edit the workflow file’s front-matter and regenerate.
49
49
  | `/audit-security` | Audit dependency CVEs, input-validation gaps, secrets handling, and auth boundaries; emit a structured High/Medium/Low findings report. |
50
50
  | `/audit-seo` | Audit SEO fundamentals and Generative Engine Optimization signals (meta, structured data, crawlability); only relevant for web targets. |
51
51
  | `/audit-sre` | "Audit production-readiness for a release candidate: SLOs, observability, runbooks, error budgets, and rollback paths." |
52
- | `/audit-to-stories` | Convert findings produced by the audit-\* workflows into actionable GitHub Stories. Reads temp/audits/audit-\*-results.md, groups findings cross-audit, deduplicates against existing Issues by fingerprint, and either chains into /plan --idea or opens standalone Stories. |
52
+ | `/audit-to-stories` | Convert findings produced by the audit-\* workflows into actionable GitHub Stories. Reads temp/audits/audit-\*-results.md, groups findings cross-audit, deduplicates against existing Issues by fingerprint, and either chains into /plan --seed-file or opens standalone Stories. |
53
53
  | `/audit-ux-ui` | Audit UX/UI consistency and design system adherence |
54
- | `/deliver` | Unified delivery entry point. Inspects the ticket type(s) and Epic-reference state of the supplied IDs, composes a sequential segment plan over any mix of Epics and standalone Stories, then delegates each segment to the Epic wave loop or the standalone multi-Story fan-out preserving every flag and the parallel-delivery contract of the retired commands. |
54
+ | `/deliver` | Unified delivery entry point. Delivers one or more Stories via the single deliver-story engine story-<id> PR main. Sequences N>1 by depends\_on and runs the per-run epilogue once at the end. |
55
55
  | `/git-cleanup` | Tidy the local checkout in four phases: fast-forward `main`, prune stale remote-tracking refs, sweep merged branches (squash-aware), and triage `git stash` entries — each step gated by operator confirmation. |
56
56
  | `/git-deliver` | Single ad-hoc delivery command for working-tree changes. Detects the git setup and escalates to the right terminal step — commit only, commit + push, or commit + push + open a PR with native auto-merge — picking the default from observable state and letting flags pin any level explicitly. Replaces the retired git-commit-all, git-push, and git-pr-all trio. |
57
57
  | `/mandrel-update` | npm-era upgrade wraparound for a Mandrel consumer. Runs `npx mandrel update` (resolve newest published version → install → re-materialize `.agents/` → migrate → doctor → surface changelog) as the single mechanical step, then walks the operator through the judgment wraparound the CLI deliberately leaves unowned: reconcile `.agentrc.json`, install the Epic #1386 quality-gate surface, refresh the harness permission allowlist, reconcile the consumer's `AGENTS.md` / runbooks against the surfaced changelog, and stage + commit the staged lockfile bump. |
58
- | `/plan` | Unified planning entry point. Routes a seed idea (via scope triage) or an existing Epic ID to the right planning path — the 3-step Epic path (interrogate author persist) or the standalone-Story authoring path — and absorbs every planning flag. |
58
+ | `/plan` | Unified planning entry point. Interrogate author persist. Emits one Story by default (folded Tech Spec in the Story body); splits into N>1 only under the default-single split policy. |
59
59
  | `/qa-assist` | Human-led QA assist loop — set up, then ride a rolling multi-observation intake session. The operator reports observations in any order; the agent enriches each (repro + root-cause file:line + coverage verdict for bugs; analysis + options + recommendation for enhancements), asks clarifying questions only when ambiguous, and appends a redacted ledger item — recording, never planning — to a persistent, resumable session under temp/qa/. Only when the operator says they are done does it review the full ledger and hand off to /plan. |
60
60
  | `/qa-explore` | Agent-led exploratory-QA loop — the agent Plans a surface with an explicit static-vs-drive method choice, drives it (browser MCP or static), and captures ledger items read-only, then Triages — a bounded per-surface session, HITL-gated at every phase transition, routed through the shared dedup/coverage/classification/missing-test/redaction/session core under temp/qa/ |
61
61
  | `/qa-run` | Drive Gherkin scenarios through a real browser as an agent-driven QA sweep |
@@ -8,34 +8,46 @@ set. You MUST strictly adhere to the following rules:
8
8
 
9
9
  ## 1. System Guardrails & Initialization
10
10
 
11
- ### A. Persona Routing & Execution
11
+ ### A. Role Framing (no persona packs)
12
12
 
13
- When the runtime injects a persona for the current task (via the hydrator from
14
- `task.persona`), retrieve and strictly adopt the rules in
15
- `.agents/personas/[role].md`. If a user explicitly instructs "Act as
16
- [Role/Persona]" in chat, honor that as well.
13
+ v2 has **no** `.agents/personas/` packs and **no** `persona::*` GitHub labels.
14
+ Behavioral constraints come from this file, always-on / on-demand rules, and
15
+ skills. Role-scoped spawn contexts (when used) live under `.agents/agents/`
16
+ via `delivery.routing.roleScopedAgents`. QA auth identities (`qa.personas`)
17
+ are a separate fixture concept — not agent behavior packs.
17
18
 
18
- - **Fallback:** If the specific persona file is missing, default to
19
- `.agents/personas/engineer.md`.
19
+ If a user says "act as [role]" in chat, apply the matching skill / workflow
20
+ guidance (e.g. QA skills for verification work, security skill for threat
21
+ modeling) rather than looking for a persona file.
20
22
 
21
23
  ### B. Skill Activation
22
24
 
23
25
  The skill library uses a **two-tier architecture**:
24
26
 
25
27
  - **`core/`** — Universal, process-driven skills that apply across any project
26
- (e.g., `core/debugging-and-error-recovery`, `core/test-driven-development`,
28
+ (e.g., `core/debugging-and-error-recovery`, `core/code-review-and-quality`,
27
29
  `core/security-and-hardening`). Always check for a relevant core skill first.
28
- - **`stack/`** Tech-stack-specific skills for concrete libraries, services,
29
- and tools (e.g., `stack/backend/cloudflare-hono-architect`,
30
- `stack/frontend/tailwind-v4`, `stack/qa/playwright`). Apply these when the
31
- project uses that specific technology.
30
+ The **test-first** discipline (TDD cycle, Prove-It Pattern, good-test style,
31
+ property-based technique) lives in
32
+ [`rules/testing-standards.md`](rules/testing-standards.md), not a skill.
33
+ - **`stack/`** Tech-stack-specific skills for concrete tools (e.g.,
34
+ `stack/qa/playwright`, `stack/qa/vitest`, `stack/qa/gherkin-authoring`).
35
+ Apply these when the project uses that specific technology. For third-party
36
+ library and framework knowledge not covered here, use the live-docs lookup
37
+ mandated in § 1.C rather than a frozen in-repo cache.
32
38
 
33
39
  When a task involves a specific domain or technology, you MUST read the
34
40
  corresponding `.agents/skills/[tier]/[category]/[skill-name]/SKILL.md` file and
35
41
  apply its constraints. Review the skill's `examples/` directory or
36
42
  `examples.md` sibling **when present and relevant** to the task — most skills
37
- do not ship one, so do not probe blindly. When uncertain which skill to apply,
38
- read `core/using-agent-skills` for guidance on skill selection and sequencing.
43
+ do not ship one, so do not probe blindly. When uncertain which skill applies,
44
+ match the task against the one-line `description` in each skill's frontmatter
45
+ (catalogued in `.agents/skills/skills.index.json`). Skills compose: a complete
46
+ feature typically flows `idea-refinement` → the `/plan` workflow →
47
+ implementation test-first (`rules/testing-standards.md`) →
48
+ `code-review-and-quality` — not every task needs every skill. The always-on
49
+ operating posture (surface assumptions, manage confusion, push back on flawed
50
+ approaches, verify don't assume) is governed by § 3–4 and § 1.I of this file.
39
51
 
40
52
  ### C. Proactive Documentation
41
53
 
@@ -96,12 +108,17 @@ does not re-pay their bytes on every turn.
96
108
  - **Always-on core** (loaded alongside this file):
97
109
  - [`rules/security-baseline.md`](rules/security-baseline.md) — inviolable
98
110
  security MUSTs; applies to every piece of code generated.
99
- - [`rules/git-conventions.md`](rules/git-conventions.md) — every commit,
100
- branch, and PR touches it.
111
+ - [`rules/git-conventions.md`](rules/git-conventions.md) — the always-on git
112
+ core (branch shapes, commit-subject format, `refs #`, push/hygiene MUSTs);
113
+ every commit, branch, and PR touches it.
101
114
 
102
115
  - **On-demand** — read the file **before** doing the matching work; each opens
103
116
  with a one-line "this rule applies when…" scope header, so skimming its first
104
117
  paragraph confirms whether it governs the task at hand:
118
+ - [`rules/git-conventions-reference.md`](rules/git-conventions-reference.md)
119
+ — the git-history mechanics the core summarizes: hard-cutover policy, the
120
+ push-hook false-negative signature, shared-checkout contention, the
121
+ docs-freshness gate, and `meta::*` routing labels.
105
122
  - [`rules/shell-conventions.md`](rules/shell-conventions.md) — before
106
123
  chaining shell commands or writing cross-platform command strings.
107
124
  - [`rules/testing-standards.md`](rules/testing-standards.md) — before
@@ -138,27 +155,22 @@ technology context is intentionally kept out of `.agentrc.json`.
138
155
 
139
156
  ### H. Observability & Friction Telemetry
140
157
 
141
- You MUST log telemetry about any operational difficulty or automation
142
- opportunity you encounter. Friction is a **local NDJSON signal**:
143
- `diagnose-friction.js` appends one canonical `kind: friction` record to the
144
- per-Epic/per-Story `signals.ndjson` stream on local disk (validated
145
- write-time against `signal-event.schema.json`; the retro roll-up reads it
146
- back). It is not posted to the GitHub ticket at capture time — the retro
147
- phase is what surfaces the aggregated friction as routed proposals.
158
+ You MUST log telemetry about operational difficulty or automation
159
+ opportunities you hit. Friction is a **local NDJSON signal**:
160
+ `diagnose-friction.js` appends one `kind: friction` record to the per-Epic/
161
+ per-Story `signals.ndjson` stream on local disk — not posted to the ticket at
162
+ capture time; the retro phase surfaces the aggregate as routed proposals.
148
163
 
149
164
  - **Command**:
150
165
  `node .agents/scripts/diagnose-friction.js --story [STORY_ID] --cmd [FAILED_COMMAND]`
151
- (add `--epic [EPIC_ID]` when the Story sits under an Epic)
152
- - **When to fire**: After consecutive tool validation errors, unrecoverable
153
- command failures, or ambiguity requiring explicit self-correction. Also
154
- after repetitive sequences of commands or boilerplate-heavy steps that
155
- could be simplified by a workflow or skill.
156
- - **No-Epic context**: Outside an Epic/Story loop there is no per-Epic
157
- stream to anchor to, so the record lands on the **standalone signal
158
- stream** (`temp/standalone/stories/story-<sid>/signals.ndjson`) under the
159
- same canonical schema. The signal is never silently dropped — a
160
- best-effort write failure is logged, not swallowed into a promise of a
161
- side-file that no reader consumes.
166
+ (add `--epic [EPIC_ID]` under an Epic).
167
+ - **When to fire**: after repeated tool-validation errors, an unrecoverable
168
+ command failure, ambiguity needing self-correction, or repetitive
169
+ boilerplate steps a workflow/skill could simplify.
170
+
171
+ The schema validation, the standalone (no-Epic) stream path, and the
172
+ never-silently-dropped guarantee are reference detail see
173
+ [`docs/execution-reference.md` § Friction telemetry](docs/execution-reference.md#friction-telemetry).
162
174
 
163
175
  #### Log Level Control
164
176
 
@@ -192,18 +204,14 @@ hand back to the operator. Do not paper over the loop with another
192
204
  just-in-case retry.
193
205
 
194
206
  This protocol is not soft-prompt-only — it has a runtime substrate. While
195
- executing as a Story delivery sub-agent (via `helpers/epic-deliver-story`
196
- or `helpers/single-story-deliver`), you MUST emit a `story.heartbeat`
197
- lifecycle event on every Task transition (or whenever you stall on a
198
- long-running step) so the parent `/deliver` idle watchdog 2e of
199
- `.agents/workflows/helpers/deliver-epic.md`, re-ticked every 30 minutes via
200
- `wave-tick.js --check-idle 30`) can distinguish a child still making
201
- progress from a dead one. If you genuinely cannot proceed, transition to
202
- `agent::blocked` and exit non-zero never fall silent. A child with no
203
- recent `story.heartbeat`, no commit on its `story-<id>` branch, and no
204
- `agent::blocked` label is exactly the failure mode the idle watchdog is
205
- built to catch, and the watchdog will re-dispatch (or escalate) the Story
206
- without your participation.
207
+ executing as a Story delivery sub-agent (via `helpers/deliver-story`), you
208
+ MUST emit a `story.heartbeat` lifecycle event on every Task transition (or
209
+ whenever you stall on a long-running step) so the parent `/deliver`
210
+ sequencer can distinguish a child still making progress from a dead one. If
211
+ you genuinely cannot proceed, transition to `agent::blocked` and exit
212
+ non-zero never fall silent. A child with no recent `story.heartbeat`, no
213
+ commit on its `story-<id>` branch, and no `agent::blocked` label is exactly
214
+ the stall shape the parent run must detect and escalate.
207
215
 
208
216
  ### J. HITL Blocker Escalation (Safe Execution)
209
217
 
@@ -233,8 +241,7 @@ resolve by this **total ordering** (higher wins):
233
241
  (§ 1.E).
234
242
  2. **This file** — `.agents/instructions.md`.
235
243
  3. **Global rules** — `.agents/rules/*.md` (§ 1.F).
236
- 4. **The active persona** — `.agents/personas/[role].md` (§ 1.A).
237
- 5. **Skills** — `.agents/skills/**/SKILL.md` (§ 1.B).
244
+ 4. **Skills** — `.agents/skills/**/SKILL.md` (§ 1.B).
238
245
 
239
246
  Two carve-outs refine the ordering:
240
247
 
@@ -242,18 +249,18 @@ Two carve-outs refine the ordering:
242
249
  tier overlap, the narrower, more-specific statement governs the broader one
243
250
  (e.g. a stack-specific skill refines a general core skill; a per-rule
244
251
  statement refines a cross-rule one).
245
- - **`rules/security-baseline.md` is inviolable.** No persona, skill, or local
246
- override may relax a security MUST. A security constraint that conflicts
247
- with any lower-tier guidance — or with a local override — always wins,
248
- regardless of its tier position above.
252
+ - **`rules/security-baseline.md` is inviolable.** No skill or local override
253
+ may relax a security MUST. A security constraint that conflicts with any
254
+ lower-tier guidance — or with a local override — always wins, regardless of
255
+ its tier position above.
249
256
 
250
257
  ---
251
258
 
252
259
  ## 2. FinOps & Token Budgeting (Economic Guardrails)
253
260
 
254
261
  Mandrel does **not** enforce live LLM spend from response metadata. It caps
255
- **hydrated prompt size** (`delivery.maxTokenBudget`, section-aware elision) and
256
- runs optional **pre-dispatch estimates** (`delivery.preflight.*`); your host
262
+ **planning context budget** (`planning.context.maxBytes`) and related
263
+ envelopes; your host
257
264
  runtime owns session quota and hard stops. The config keys, the ≈4-char/token
258
265
  estimate, and the elision behaviour are reference detail — see
259
266
  [`docs/execution-reference.md` § FinOps & token budgeting](docs/execution-reference.md#finops--token-budgeting-economic-guardrails).
@@ -273,7 +280,7 @@ budget grounds.
273
280
  ensures (generates or reuses) a per-Epic docs digest — a single compact
274
281
  outline (path, byte size, heading outline with line numbers, and the
275
282
  first paragraph under each `##`) built from `project.docsContextFiles`
276
- — at `temp/epic-<epicId>/docs-digest.md` (`plan-context.js`, via the
283
+ — at `temp/run-<id>/docs-digest.md` (`plan-context.js`, via the
277
284
  shared generator in
278
285
  `.agents/scripts/lib/orchestration/docs-digest.js`; the same file the
279
286
  `/deliver` story sub-agents below already consume). Use the digest to
@@ -293,19 +300,13 @@ budget grounds.
293
300
  hard cutover: there is no read-every-`docsContextFiles`-file branch
294
301
  retained.
295
302
  - **Digest-first Reading (`/deliver` story sub-agents)**: A `/deliver`
296
- Story delivery sub-agent (dispatched via `helpers/epic-deliver-story` or
297
- `helpers/single-story-deliver`) does **not** re-read the full
298
- `project.docsContextFiles` set per Story. Instead it reads the **per-Epic
299
- docs digest** the same file and shape described above — that
300
- `epic-deliver-prepare.js` writes to
301
- `temp/epic-<epicId>/docs-digest.md` and the parent threads into the
302
- child prompt as `docsDigestPath`. Use the digest to decide which docs are
303
- relevant to the Story at hand, then **pull the full file on demand**
304
- (reading the section at the line number the digest names) when a section
305
- bears on the change. When `docsDigestPath` is null (the project has no
306
- `project.docsContextFiles` configured) there is no digest to read and no
307
- per-Story docs mandate — read a full doc only if the Story's own context
308
- points you at one. This is the hard cutover from the former
303
+ Story delivery sub-agent (dispatched via `helpers/deliver-story`) does
304
+ **not** re-read the full `project.docsContextFiles` set per Story. When
305
+ the caller threads a `docsDigestPath`, use that compact outline to decide
306
+ which docs are relevant, then **pull the full file on demand**. When
307
+ `docsDigestPath` is null there is no digest to read and no per-Story docs
308
+ mandate read a full doc only if the Story's own context points you at
309
+ one. This is the hard cutover from the former
309
310
  read-every-file-per-Story rule: delivery children no longer ingest the
310
311
  whole docs set up front.
311
312
  - **Standalone-Story planning path (`story-plan.js --emit-context`)**:
@@ -386,24 +387,23 @@ budget grounds.
386
387
 
387
388
  ---
388
389
 
389
- ## 5. Git & Epic Protocol (Strict Standards)
390
+ ## 5. Git & Story Protocol (Strict Standards)
390
391
 
391
392
  To maintain a clean and readable repository history, you MUST follow these
392
- strict conventions for all epic-related Git operations. See
393
+ strict conventions for all Story-related Git operations. See
393
394
  [`.agents/rules/git-conventions.md`](rules/git-conventions.md) for the full
394
395
  canonical reference.
395
396
 
396
397
  ### A. Branch Naming (Canonical)
397
398
 
398
- Epic execution uses two branch shapes. The runtime creates and maintains
399
- them automatically; agents commit on the execution branch only.
399
+ v2 delivery uses one branch shape. The runtime creates and maintains it
400
+ via `single-story-init.js`; agents commit on that branch only.
400
401
 
401
- | Purpose | Format | Owner | Notes |
402
- | ---------------- | ---------------------------- | ---------------------- | --------------------------------------------------------------------------------------------- |
403
- | Story execution | `story-<storyId>` | `story-init.js` | Per-Story worktree at `.worktrees/story-<storyId>/`. All Story implementation commits land here. |
404
- | Epic integration | `epic/<epicId>` | `/deliver` slash command | Story branches merge into this branch with `--no-ff`. Pushed per wave. |
402
+ | Purpose | Format | Owner | Notes |
403
+ | --------------- | ----------------- | ----------------------- | --------------------------------------------------------------------- |
404
+ | Story execution | `story-<storyId>` | `single-story-init.js` | Per-Story worktree at `.worktrees/story-<storyId>/`. PR target is `main` (squash + required checks). There is no `epic/<id>` integration branch and no `--no-ff` wave merge. |
405
405
 
406
- - **Verification**: After `story-init.js` returns, confirm
406
+ - **Verification**: After `single-story-init.js` returns, confirm
407
407
  `git branch --show-current` reports `story-<storyId>` before making any
408
408
  commits. If it does not, **STOP** and re-init.
409
409
 
@@ -419,31 +419,30 @@ prompted.
419
419
 
420
420
  ### C. History Hygiene
421
421
 
422
- Prioritize a clean `epic/[EPIC_ID]` branch. Story branches are merged into
423
- the Epic branch automatically by `helpers/epic-deliver-story` (via
424
- `story-close.js`); the Epic branch reaches `main` via the pull request that
425
- `/deliver` opens at the end of its run — the operator merges through
426
- the GitHub UI. There is no in-script merge to `main`.
427
-
428
- ### D. Ticket hierarchy (2-tier)
429
-
430
- Mandrel uses a **2-tier ticket hierarchy** (Epic Story).
431
- Acceptance criteria and verification steps live inline on the Story
432
- body (`acceptance[]` / `verify[]`); there is no Feature tier and no
433
- `type::task` ticket layer. Thematic grouping lives as prose in the
434
- Epic body (which also carries the folded Tech Spec sections).
435
-
436
- - The decomposer emits only `type::epic` and `type::story` issues;
437
- Stories attach directly to the Epic.
438
- - Each Story-implementation phase is executed by
439
- `helpers/epic-deliver-story` (Epic-attached) or
440
- `helpers/single-story-deliver` (standalone). There is no per-Task
441
- sub-loop; the agent authors commit subjects directly per
442
- [`rules/git-conventions.md`](rules/git-conventions.md) and references
443
- the parent Story via `(refs #<storyId>)`.
444
- - Story branches, the Epic-branch integration target, the wave-loop
445
- fan-out, and the `epic/<id>` `main` PR merge model are the same
446
- as Section 5.A.
422
+ Every Story reaches `main` via its own PR (`story-<id>` → squash + required
423
+ checks). `helpers/deliver-story` / `single-story-close.js` open that PR;
424
+ there is no Epic integration branch and no in-script push to `main`.
425
+
426
+ ### D. Ticket hierarchy (Story-only)
427
+
428
+ v2 collapses the ticket model to **Story**. Acceptance criteria and
429
+ verification steps live inline on the Story body (`acceptance[]` /
430
+ `verify[]`); the folded Tech Spec lives inline in `## Spec` (over-budget
431
+ Specs fail closed split or tighten; never write under `docs/`). Optional
432
+ `depends_on` edges order rare multi-Story plan-runs.
433
+
434
+ - `/plan` emits one or more `type::story` issues (default N=1); N>1 shares a
435
+ `plan-run::<id>` label.
436
+ - Each Story is executed by `helpers/deliver-story` (invoked from
437
+ [`/deliver`](workflows/deliver.md)). There is no per-Task sub-loop; the
438
+ agent authors commit subjects directly per
439
+ [`rules/git-conventions.md`](rules/git-conventions.md) and references the
440
+ Story via `(refs #<storyId>)`.
441
+ - Branch model matches Section 5.A (`story-<id>` → PR → `main`).
442
+ - There is no `type::epic` / `type::task` label and no Epic issue form. An
443
+ Epic is at most an optional untyped human umbrella issue outside
444
+ orchestration; `/deliver` refuses tickets that still carry an
445
+ `Epic: #N` footer.
447
446
 
448
447
  ---
449
448
 
@@ -461,12 +460,12 @@ To keep the repository clean and avoid polluting the Git history:
461
460
 
462
461
  ## 7. Complexity-Aware Execution
463
462
 
464
- The dispatcher automatically calculates the execution plan for an Epic. A
465
- Story is a **capability slice a frontier model delivers and self-verifies in
466
- one pass** a broad footprint is normal when the change is cohesive. The
467
- numeric sizing backstop lives in one place: `DEFAULT_TASK_SIZING` in
468
- `.agents/scripts/lib/orchestration/ticket-validator-sizing.js` (operator
469
- override via `planning.taskSizing`). Do not re-slice a capability-sized
463
+ `/plan` sizes each Story as a **capability slice a frontier model delivers
464
+ and self-verifies in one pass** a broad footprint is normal when the
465
+ change is cohesive. The session-capacity backstop lives in one place:
466
+ `DEFAULT_MODEL_CAPACITY` in
467
+ `.agents/scripts/lib/orchestration/ticket-validator-sizing.js` (framework
468
+ constant not operator-tunable). Do not re-slice a capability-sized
470
469
  Story into per-module fragments just because it touches many files.
471
470
 
472
471
  ### A. When You See `⚠️ COMPLEXITY WARNING`
@@ -1,12 +1,11 @@
1
1
  # CI Failure Triage & Remediation
2
2
 
3
3
  This rule applies when a delivery path is watching a pull request's CI checks
4
- and a required check is red (or repeatedly slow) — the Epic Phase 8
5
- watch-and-iterate loop
6
- ([`deliver-epic.md`](../workflows/helpers/deliver-epic.md)) and the standalone
4
+ and a required check is red (or repeatedly slow) — the `/deliver` router
5
+ ([`deliver.md`](../workflows/deliver.md)) runs each Story through the
7
6
  single-Story Step 4 CI watch + fix loop
8
- ([`single-story-deliver.md`](../workflows/helpers/single-story-deliver.md))
9
- both hand off to it. It is the single triage brain those mechanisms defer to:
7
+ ([`deliver-story.md`](../workflows/helpers/deliver-story.md)), which hands off
8
+ to it. It is the single triage brain that mechanism defers to:
10
9
  the watcher (`pr-watch-with-update.js`) surfaces the failing check, the run
11
10
  link, and the failure signature; this rule decides what to do next.
12
11
 
@@ -50,18 +49,15 @@ path) or surfaces it inline (standalone path) — start from that digest.
50
49
  A deterministic failure caused by the diff is remediated at source. Use the
51
50
  existing per-check fix table — do **not** duplicate it here:
52
51
 
53
- - **Epic Phase 8**:
54
- [`deliver-epic-reference.md` § Phase 8Watch-and-iterate remediation](../workflows/helpers/deliver-epic-reference.md#phase-8--watch-and-iterate-remediation)
55
- (§ 8.1 Remediation).
56
- - **Standalone Step 4**:
57
- [`single-story-deliver-reference.md` § Step 4 — CI watch + fix recovery](../workflows/helpers/single-story-deliver-reference.md#step-4--ci-watch--fix-recovery).
52
+ - **Story Step 4**:
53
+ [`deliver-story-reference.md` § Step 4CI watch + fix recovery](../workflows/helpers/deliver-story-reference.md#step-4--ci-watch--fix-recovery).
58
54
 
59
55
  In short: lint/format → `npm run lint` + biome apply; maintainability/crap
60
56
  baseline drift → re-run the ratcheted script and fix at source (refresh a
61
57
  baseline only when the diff demonstrably can't be covered); test failure →
62
58
  reproduce with `npm test`, fix source or test; coverage threshold → add tests.
63
- Commit the fix on the delivery branch (`epic/<epicId>` or `story-<storyId>`),
64
- push, and re-run the watcher. Auto-merge stays armed across retries.
59
+ Commit the fix on the delivery branch (`story-<storyId>`), push, and re-run the
60
+ watcher. Auto-merge stays armed across retries.
65
61
 
66
62
  ## Infra, transient, and flaky failures ARE root-cause defects
67
63