@polymorphism-tech/morph-spec 8.47.0 → 9.1.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 (377) hide show
  1. package/CLAUDE.md +51 -43
  2. package/README.md +39 -38
  3. package/bin/morph-spec.js +41 -113
  4. package/bin/validate.js +1 -147
  5. package/claude-plugin.json +1 -1
  6. package/docs/CHEATSHEET.md +1 -1
  7. package/docs/QUICKSTART.md +1 -1
  8. package/framework/CLAUDE.md +41 -101
  9. package/framework/MORPH.md +95 -252
  10. package/framework/agents.json +86 -21
  11. package/framework/commands/morph-apply.md +5 -28
  12. package/framework/commands/morph-archive.md +1 -1
  13. package/framework/commands/morph-hotfix.md +8 -8
  14. package/framework/commands/morph-infra.md +1 -1
  15. package/framework/commands/morph-preflight.md +2 -3
  16. package/framework/commands/morph-status.md +4 -4
  17. package/framework/docs/CLI.md +574 -286
  18. package/framework/evals/review-checklist.md +82 -41
  19. package/framework/hooks/README.md +10 -11
  20. package/framework/hooks/claude-code/core/block-destructive-worktree-removal.js +6 -49
  21. package/framework/hooks/claude-code/core/block-raw-worktree-add.js +2 -35
  22. package/framework/hooks/claude-code/core/chain.js +4 -65
  23. package/framework/hooks/claude-code/core/comment-guard.js +3 -17
  24. package/framework/hooks/claude-code/core/denylist.json +33 -3
  25. package/framework/hooks/claude-code/core/enforce-phase-writes.js +15 -63
  26. package/framework/hooks/claude-code/core/gate-guard.js +9 -78
  27. package/framework/hooks/claude-code/core/graph-refresh-kick.js +3 -24
  28. package/framework/hooks/claude-code/core/heavy-gate.js +3 -21
  29. package/framework/hooks/claude-code/core/heavy-release.js +2 -13
  30. package/framework/hooks/claude-code/core/loop-detect.js +2 -31
  31. package/framework/hooks/claude-code/core/pre-bash-denylist.js +36 -2
  32. package/framework/hooks/claude-code/core/protect-spec-files.js +25 -297
  33. package/framework/hooks/claude-code/core/state-sync.js +15 -85
  34. package/framework/hooks/claude-code/core/telemetry-log.js +15 -96
  35. package/framework/hooks/claude-code/core/validate-completion.js +37 -147
  36. package/framework/hooks/claude-code/core/warn-bash-source-write.js +23 -0
  37. package/framework/hooks/claude-code/core/worktree-context.js +15 -114
  38. package/framework/hooks/claude-code/core/worktree-create.js +6 -70
  39. package/framework/hooks/claude-code/core/worktree-env-inject.js +5 -56
  40. package/framework/hooks/claude-code/core/worktree-remove.js +5 -31
  41. package/framework/hooks/claude-code/statusline.py +55 -41
  42. package/framework/hooks/package.json +3 -0
  43. package/framework/hooks/shared/activity-logger.js +9 -89
  44. package/framework/hooks/shared/agent-reap.js +2 -17
  45. package/framework/hooks/shared/build-check.js +11 -76
  46. package/framework/hooks/shared/claim-registry.js +9 -119
  47. package/framework/hooks/shared/command-tokens.js +168 -44
  48. package/framework/hooks/shared/comment-rules.js +5 -20
  49. package/framework/hooks/shared/comment-scanner.js +11 -43
  50. package/framework/hooks/shared/comment-stripper.js +11 -85
  51. package/framework/hooks/shared/e2e-check.js +0 -0
  52. package/framework/hooks/shared/errata.js +59 -0
  53. package/framework/hooks/shared/feature-locator.js +11 -95
  54. package/framework/hooks/shared/frontend-locations.js +4 -0
  55. package/framework/hooks/shared/gate-question.js +12 -0
  56. package/framework/hooks/shared/git-exclude.js +3 -20
  57. package/framework/hooks/shared/git-paths.js +8 -104
  58. package/framework/hooks/shared/graph-freshness.js +22 -166
  59. package/framework/hooks/shared/graph-refresh.js +21 -149
  60. package/framework/hooks/shared/heavy-command.js +4 -12
  61. package/framework/hooks/shared/hook-response.js +8 -83
  62. package/framework/hooks/shared/morph-cli.js +8 -52
  63. package/framework/hooks/shared/payload-utils.js +10 -132
  64. package/framework/hooks/shared/phase-utils.js +14 -72
  65. package/framework/hooks/shared/redact-secrets.js +4 -15
  66. package/framework/hooks/shared/reparse-scan.js +6 -66
  67. package/framework/hooks/shared/slice-progress.js +99 -0
  68. package/framework/hooks/shared/source-files.js +4 -17
  69. package/framework/hooks/shared/spawn-command.js +23 -0
  70. package/framework/hooks/shared/state-reader.js +51 -247
  71. package/framework/hooks/shared/state-writer.js +9 -54
  72. package/framework/hooks/shared/stdin-reader.js +1 -11
  73. package/framework/hooks/shared/telemetry-logger.js +7 -67
  74. package/framework/hooks/shared/transcript-usage.js +7 -29
  75. package/framework/hooks/shared/worktree-root.js +7 -29
  76. package/framework/mcp/registry.json +3 -4
  77. package/framework/phases.json +23 -39
  78. package/framework/rules/csharp-standards.md +1 -1
  79. package/framework/rules/frontend-standards.md +1 -0
  80. package/framework/rules/hangfire-standards.md +1 -1
  81. package/framework/rules/neon-standards.md +1 -1
  82. package/framework/schemas/config.schema.json +14 -9
  83. package/framework/schemas/feature.schema.json +15 -50
  84. package/framework/skills/README.md +3 -4
  85. package/framework/skills/core/create-umbraco-lp/SKILL.md +1 -1
  86. package/framework/skills/core/migrate-lp-to-umbraco/SKILL.md +1 -1
  87. package/framework/skills/core/morph-apply/SKILL.md +149 -222
  88. package/framework/skills/core/morph-hotfix/SKILL.md +33 -42
  89. package/framework/skills/core/morph-machine/SKILL.md +2 -2
  90. package/framework/skills/core/morph-media/SKILL.md +1 -1
  91. package/framework/skills/core/morph-plan/SKILL.md +137 -299
  92. package/framework/skills/core/morph-review/SKILL.md +111 -136
  93. package/framework/skills/core/morph-standards/SKILL.md +27 -39
  94. package/framework/skills/core/morph-uiux/SKILL.md +94 -152
  95. package/framework/standards/STANDARDS.json +109 -1219
  96. package/framework/standards/STANDARDS.meta.json +1319 -0
  97. package/framework/standards/ai-agents/agent-archetypes.md +2 -2
  98. package/framework/standards/ai-agents/agent-session.md +1 -1
  99. package/framework/standards/ai-agents/conversational-agent-with-phases.md +4 -4
  100. package/framework/standards/ai-agents/durable-workflows-hitl.md +3 -3
  101. package/framework/standards/ai-agents/evals-with-cache.md +1 -2
  102. package/framework/standards/ai-agents/guardrails.md +1 -1
  103. package/framework/standards/ai-agents/multi-agent-patterns.md +2 -2
  104. package/framework/standards/ai-agents/observability-patterns.md +1 -1
  105. package/framework/standards/ai-agents/production.md +1 -1
  106. package/framework/standards/ai-agents/prompt-sources.md +2 -2
  107. package/framework/standards/ai-agents/providers/model-registry.md +1 -1
  108. package/framework/standards/ai-agents/rag-custom-pgvector.md +2 -2
  109. package/framework/standards/ai-agents/setup.md +3 -3
  110. package/framework/standards/ai-agents/sweet-spot.md +2 -2
  111. package/framework/standards/ai-agents/tool-adapters.md +0 -2
  112. package/framework/standards/ai-agents/vector-data-extensions.md +4 -4
  113. package/framework/standards/ai-agents/workflows.md +1 -1
  114. package/framework/standards/architecture/code-comments.md +7 -7
  115. package/framework/standards/architecture/vertical-slice/vertical-slice.md +1 -1
  116. package/framework/standards/backend/api/validation.md +1 -1
  117. package/framework/standards/backend/dotnet/vsa-handler-patterns.md +5 -5
  118. package/framework/standards/backend/integrations/hangfire/hangfire-jobs.md +1 -1
  119. package/framework/standards/backend/integrations/neon-auth/neon-auth.md +2 -2
  120. package/framework/standards/data/nosql/cache/redis.md +1 -1
  121. package/framework/standards/data/nosql/cosmos-db.md +3 -3
  122. package/framework/standards/frontend/admin-app/forms.md +1 -1
  123. package/framework/standards/frontend/design-system/art-direction.md +88 -0
  124. package/framework/standards/frontend/design-system/premium-finish.md +77 -2
  125. package/framework/standards/infrastructure/neon/neon-pgvector.md +5 -5
  126. package/framework/standards/integration/mcp/mcp-tools.md +7 -7
  127. package/framework/templates/CLAUDE.md.core.template +3 -3
  128. package/framework/templates/README.md +2 -3
  129. package/framework/templates/REGISTRY.json +15 -179
  130. package/framework/templates/docs/plan.md +72 -0
  131. package/framework/templates/docs/ui-mockups.md +4 -0
  132. package/framework/templates/dotnet/ai-kit/README.md +1 -9
  133. package/framework/templates/dotnet/ai-kit/tests/Morph.AiKit.Tests/Morph.AiKit.Tests.csproj +0 -10
  134. package/framework/templates/meta-prompts/squad-leaders/backend-squad.md +1 -1
  135. package/framework/templates/meta-prompts/squad-leaders/frontend-squad.md +1 -1
  136. package/framework/templates/meta-prompts/squad-leaders/squad-leader.md +1 -1
  137. package/framework/templates/meta-prompts/validators/pre-commit-validator.md +3 -4
  138. package/package.json +1 -1
  139. package/src/commands/context/context-refresh.js +0 -16
  140. package/src/commands/dashboard/dashboard.js +2 -8
  141. package/src/commands/e2e/e2e.js +18 -105
  142. package/src/commands/graph/affected.js +0 -14
  143. package/src/commands/graph/build.js +11 -50
  144. package/src/commands/graph/explain.js +0 -16
  145. package/src/commands/graph/status.js +1 -12
  146. package/src/commands/mcp/mcp-setup.js +4 -62
  147. package/src/commands/observability/cost.js +17 -111
  148. package/src/commands/observability/telemetry.js +1 -14
  149. package/src/commands/project/branch.js +4 -45
  150. package/src/commands/project/claim.js +4 -48
  151. package/src/commands/project/doctor-procs.js +1 -1
  152. package/src/commands/project/doctor.js +53 -307
  153. package/src/commands/project/env.js +1 -27
  154. package/src/commands/project/fleet.js +6 -35
  155. package/src/commands/project/heavy.js +3 -3
  156. package/src/commands/project/init.js +8 -68
  157. package/src/commands/project/install-plugin-cmd.js +0 -1
  158. package/src/commands/project/setup-infra-cmd.js +2 -1
  159. package/src/commands/project/stack-scan.js +58 -0
  160. package/src/commands/project/standards.js +65 -72
  161. package/src/commands/project/status.js +28 -121
  162. package/src/commands/project/update.js +31 -223
  163. package/src/commands/project/worktree.js +109 -883
  164. package/src/commands/scaffold/scaffold.js +0 -25
  165. package/src/commands/state/advance.js +65 -120
  166. package/src/commands/state/approve.js +87 -229
  167. package/src/commands/state/archive.js +23 -139
  168. package/src/commands/state/auto-approval.js +65 -0
  169. package/src/commands/state/create.js +49 -109
  170. package/src/commands/state/delete.js +11 -63
  171. package/src/commands/state/finish.js +105 -494
  172. package/src/commands/state/gate-check.js +74 -183
  173. package/src/commands/state/gate-decision.js +8 -42
  174. package/src/commands/state/handoff.js +4 -31
  175. package/src/commands/state/list.js +21 -91
  176. package/src/commands/state/report-check.js +134 -338
  177. package/src/commands/state/retype.js +12 -28
  178. package/src/commands/validation/index.js +0 -3
  179. package/src/commands/validation/mutate.js +79 -19
  180. package/src/commands/validation/plan-check.js +81 -0
  181. package/src/commands/validation/validate-feature.js +52 -216
  182. package/src/commands/validation/verify.js +45 -160
  183. package/src/core/paths/output-schema.js +9 -155
  184. package/src/core/state/feature-identity.js +1 -25
  185. package/src/core/state/gate-order.js +2 -30
  186. package/src/core/state/lifecycle-audit.js +8 -100
  187. package/src/core/state/state-manager.js +32 -395
  188. package/src/core/templates/template-registry.js +2 -97
  189. package/src/core/templates/template-renderer.js +13 -93
  190. package/src/core/templates/template-seed.js +21 -0
  191. package/src/core/work-types.js +10 -45
  192. package/src/dashboard/app/App.jsx +1 -8
  193. package/src/dashboard/app/components/ActivityFeed.jsx +2 -8
  194. package/src/dashboard/app/components/CommandPalette.jsx +4 -11
  195. package/src/dashboard/app/components/DetailPanel.jsx +1 -5
  196. package/src/dashboard/app/components/EntityLink.jsx +0 -12
  197. package/src/dashboard/app/components/ErrorBoundary.jsx +1 -8
  198. package/src/dashboard/app/components/KnowledgeMarkdown.jsx +0 -11
  199. package/src/dashboard/app/components/Markdown.jsx +0 -9
  200. package/src/dashboard/app/components/PhaseRail.jsx +0 -11
  201. package/src/dashboard/app/components/SearchFilter.jsx +0 -4
  202. package/src/dashboard/app/components/Sidebar.jsx +0 -5
  203. package/src/dashboard/app/hooks/useMorphQuery.js +1 -11
  204. package/src/dashboard/app/hooks/usePref.js +1 -5
  205. package/src/dashboard/app/lib/format.js +0 -2
  206. package/src/dashboard/app/lib/phases.js +3 -9
  207. package/src/dashboard/app/lib/project.js +0 -12
  208. package/src/dashboard/app/pages/Activity.jsx +1 -1
  209. package/src/dashboard/app/pages/AgentMap.jsx +1 -8
  210. package/src/dashboard/app/pages/FeatureDetail.jsx +139 -133
  211. package/src/dashboard/app/pages/Features.jsx +9 -16
  212. package/src/dashboard/app/pages/Guide.jsx +2 -3
  213. package/src/dashboard/app/pages/HookInspector.jsx +2 -23
  214. package/src/dashboard/app/pages/PhasePipeline.jsx +3 -7
  215. package/src/dashboard/app/pages/Portfolio.jsx +0 -1
  216. package/src/dashboard/app/pages/RulesMap.jsx +1 -16
  217. package/src/dashboard/app/pages/SkillsLibrary.jsx +1 -16
  218. package/src/dashboard/app/pages/Standards.jsx +2 -17
  219. package/src/dashboard/scanner/activity-scanner.js +14 -83
  220. package/src/dashboard/scanner/agents-scanner.js +1 -23
  221. package/src/dashboard/scanner/docs-scanner.js +1 -7
  222. package/src/dashboard/scanner/feature-status.js +2 -5
  223. package/src/dashboard/scanner/features-scanner.js +92 -113
  224. package/src/dashboard/scanner/hooks-scanner.js +5 -28
  225. package/src/dashboard/scanner/index.js +0 -4
  226. package/src/dashboard/scanner/portfolio.js +5 -29
  227. package/src/dashboard/scanner/project-api.js +8 -54
  228. package/src/dashboard/scanner/rules-scanner.js +1 -2
  229. package/src/dashboard/scanner/skills-scanner.js +2 -12
  230. package/src/dashboard/scanner/standards-scanner.js +4 -7
  231. package/src/dashboard/vite-plugin-morph-data.js +5 -19
  232. package/src/lib/ai/ai-checks.js +7 -52
  233. package/src/lib/ai/ai-project-scan.js +14 -108
  234. package/src/lib/ai/code-audit.js +7 -63
  235. package/src/lib/ai/pin-drift.js +8 -51
  236. package/src/lib/ai/registry-audit.js +11 -90
  237. package/src/lib/ci/ci-verify.js +14 -13
  238. package/src/lib/ci/github-ci.js +9 -37
  239. package/src/lib/ci/workflow-scaffold.js +2 -10
  240. package/src/lib/detectors/claude-config-detector.js +13 -74
  241. package/src/lib/detectors/index.js +8 -59
  242. package/src/lib/e2e/compose-env.js +5 -66
  243. package/src/lib/e2e/stack-teardown.js +6 -40
  244. package/src/lib/generators/architecture-scanner.js +18 -156
  245. package/src/lib/generators/handoff-generator.js +37 -112
  246. package/src/lib/generators/scaffold-generator.js +5 -101
  247. package/src/lib/generators/settings-generator.js +11 -122
  248. package/src/lib/git/branch-classifier.js +11 -84
  249. package/src/lib/git/default-branch.js +14 -169
  250. package/src/lib/git/evidence-staleness.js +2 -1
  251. package/src/lib/git/gh.js +2 -17
  252. package/src/lib/git/pending-prs.js +6 -37
  253. package/src/lib/git/pr-files.js +3 -28
  254. package/src/lib/git/pr-index.js +3 -34
  255. package/src/lib/git/tree-fingerprint.js +17 -17
  256. package/src/lib/git/tree-state.js +6 -33
  257. package/src/lib/graph/god-nodes.js +2 -22
  258. package/src/lib/graph/graph-health.js +3 -24
  259. package/src/lib/graph/graph-loader.js +5 -56
  260. package/src/lib/graph/graphify-runtime.js +7 -37
  261. package/src/lib/graph/graphifyignore.js +8 -74
  262. package/src/lib/graph/sanitize.js +16 -136
  263. package/src/lib/heavy/cleanup.js +2 -6
  264. package/src/lib/installers/effects.js +8 -93
  265. package/src/lib/installers/mcp-installer.js +9 -169
  266. package/src/lib/installers/memory-installer.js +8 -33
  267. package/src/lib/installers/templates-reconcile.js +5 -60
  268. package/src/lib/mutation/commands.js +3 -2
  269. package/src/lib/mutation/dotnet-introspection.js +281 -0
  270. package/src/lib/mutation/plan.js +14 -6
  271. package/src/lib/mutation/runner.js +1 -1
  272. package/src/lib/mutation/subset.js +47 -13
  273. package/src/lib/plan/artifact-vocabulary.js +40 -0
  274. package/src/lib/plan/checks.js +208 -0
  275. package/src/lib/plan/plan-parser.js +204 -0
  276. package/src/lib/plan/plan-template.js +18 -0
  277. package/src/lib/projects/registry.js +7 -44
  278. package/src/lib/review-reports.js +204 -0
  279. package/src/lib/risk-detector.js +131 -274
  280. package/src/lib/specs/adr-index.js +38 -85
  281. package/src/lib/specs/design-seed.js +18 -0
  282. package/src/lib/specs/frontmatter.js +31 -0
  283. package/src/lib/specs/gfm-table.js +11 -0
  284. package/src/lib/specs/revocations.js +31 -102
  285. package/src/lib/specs/screen-checklist.js +56 -132
  286. package/src/lib/stack/dotnet-build-ignores.js +43 -0
  287. package/src/lib/stack/stack-profile.js +1 -28
  288. package/src/lib/stack/stack-scan.js +260 -0
  289. package/src/lib/stack-filter.js +4 -27
  290. package/src/lib/standards/registry.js +37 -0
  291. package/src/lib/standards/sections.js +47 -0
  292. package/src/lib/standards/verified-against.js +19 -191
  293. package/src/lib/tasks/eval-node.js +23 -179
  294. package/src/lib/tasks/linux-runner.js +18 -142
  295. package/src/lib/tasks/test-nodes.js +43 -313
  296. package/src/lib/tasks/test-runner.js +107 -447
  297. package/src/lib/telemetry/metrics.js +13 -103
  298. package/src/lib/telemetry/telemetry-reader.js +13 -238
  299. package/src/lib/telemetry/verify-event.js +4 -34
  300. package/src/lib/validators/code-budget/code-budget-validator.js +4 -44
  301. package/src/lib/validators/code-budget/index.js +0 -7
  302. package/src/lib/validators/contracts/contract-compliance-validator.js +4 -26
  303. package/src/lib/validators/contracts/index.js +0 -6
  304. package/src/lib/validators/nextjs/index.js +0 -5
  305. package/src/lib/validators/nextjs/next-component-validator.js +4 -81
  306. package/src/lib/validators/packages/index.js +0 -6
  307. package/src/lib/validators/packages/package-validator.js +6 -56
  308. package/src/lib/validators/reuse/index.js +0 -8
  309. package/src/lib/validators/reuse/reuse-validator.js +24 -137
  310. package/src/lib/validators/reuse/symbol-scanner.js +6 -62
  311. package/src/lib/validators/traceability-check.js +54 -156
  312. package/src/lib/validators/validation-runner.js +20 -125
  313. package/src/lib/validators/verify-runner.js +152 -575
  314. package/src/lib/work-type-detector.js +5 -67
  315. package/src/lib/worktree/docker-audit.js +17 -137
  316. package/src/lib/worktree/env-allocator.js +10 -98
  317. package/src/lib/worktree/feature-truth.js +12 -115
  318. package/src/lib/worktree/finish-backup.js +32 -242
  319. package/src/lib/worktree/fleet-scanner.js +31 -126
  320. package/src/lib/worktree/ignored-triage.js +15 -91
  321. package/src/lib/worktree/vscode-settings.js +2 -3
  322. package/src/lib/worktree/worktree-audit.js +21 -213
  323. package/src/lib/worktree/worktree-include.js +3 -5
  324. package/src/scripts/global-install.js +3 -9
  325. package/src/scripts/install-plugin.js +1 -13
  326. package/src/scripts/setup-infra.js +17 -138
  327. package/src/utils/agents-installer.js +92 -272
  328. package/src/utils/banner.js +4 -25
  329. package/src/utils/claude-md-injector.js +1 -37
  330. package/src/utils/claude-settings-manager.js +1 -87
  331. package/src/utils/file-copier.js +32 -90
  332. package/src/utils/hooks-installer.js +26 -296
  333. package/src/utils/skills-installer.js +4 -102
  334. package/src/utils/version-checker.js +4 -83
  335. package/framework/commands/morph-proposal.md +0 -57
  336. package/framework/evals/trace-schema.md +0 -67
  337. package/framework/hooks/claude-code/core/tasks-json-guard.js +0 -83
  338. package/framework/hooks/claude-code/core/trace-autogen.js +0 -277
  339. package/framework/hooks/git/pre-commit/specs.sh +0 -50
  340. package/framework/hooks/shared/tasks-validator.js +0 -111
  341. package/framework/rules/morph-task-tracking.md +0 -54
  342. package/framework/rules/morph-workflow.md +0 -244
  343. package/framework/schemas/tasks.schema.json +0 -79
  344. package/framework/skills/core/morph-brainstorming/SKILL.md +0 -161
  345. package/framework/skills/core/morph-implement/SKILL.md +0 -194
  346. package/framework/skills/core/morph-proposal/SKILL.md +0 -152
  347. package/framework/skills/core/morph-stack-scan/SKILL.md +0 -145
  348. package/framework/templates/docs/proposal.md +0 -192
  349. package/framework/templates/docs/spec.md +0 -57
  350. package/framework/templates/docs/ui-components.md +0 -52
  351. package/framework/templates/docs/ui-design-system.md +0 -76
  352. package/framework/templates/docs/ui-flows.md +0 -167
  353. package/framework/templates/examples/spec-examples.md +0 -91
  354. package/framework/templates/feature/decisions.md +0 -124
  355. package/framework/templates/feature/recap.md +0 -145
  356. package/framework/templates/tasks.template.json +0 -17
  357. package/src/commands/state/usecase.js +0 -143
  358. package/src/commands/tasks/dag.js +0 -181
  359. package/src/commands/utils/index.js +0 -3
  360. package/src/lib/agents/output-collector.js +0 -76
  361. package/src/lib/detectors/design-system-detector.js +0 -188
  362. package/src/lib/evaluator-report.js +0 -104
  363. package/src/lib/generators/design-system-generator.js +0 -508
  364. package/src/lib/specs/acervo-format.js +0 -70
  365. package/src/lib/specs/acervo-lifecycle.js +0 -264
  366. package/src/lib/specs/done-criteria-check.js +0 -200
  367. package/src/lib/specs/usecase-check.js +0 -301
  368. package/src/lib/specs/usecase-promoter.js +0 -301
  369. package/src/lib/specs/usecase-registry.js +0 -237
  370. package/src/lib/tasks/dispatch-planner.js +0 -319
  371. package/src/lib/tasks/dotnet-test-introspection.js +0 -632
  372. package/src/lib/tasks/mermaid-renderer.js +0 -132
  373. package/src/lib/tasks/task-classifier.js +0 -30
  374. package/src/lib/tasks/task-parser.js +0 -209
  375. package/src/lib/tasks/tasks-json-parser.js +0 -296
  376. package/src/lib/tasks/test-scope.js +0 -597
  377. package/src/utils/agent-id-mapper.js +0 -11
@@ -1,192 +0,0 @@
1
- # Feature Proposal: {{titleCase FEATURE_NAME}}
2
-
3
- > Proposal for a new feature. This document describes WHAT and WHY.
4
- > For technical details, see `spec.md`.
5
-
6
- ## Metadata
7
-
8
- | Field | Value |
9
- |-------|-------|
10
- | **Proposed** | {{DATE}} |
11
- | **Author** | {{AUTHOR}} |
12
- | **Status** | Draft / Under Review / Approved / Rejected |
13
- | **Priority** | High / Medium / Low |
14
- {{#if STACK}}| **Stack** | {{STACK}} |{{/if}}
15
-
16
- ---
17
-
18
- ## Overview
19
-
20
- {Brief 2-3 sentence summary of the feature}
21
-
22
- ---
23
-
24
- ## Acceptance Criteria
25
-
26
- Verifiable conditions that mean this feature is done:
27
-
28
- - [ ] {Criterion 1 — observable / testable}
29
- - [ ] {Criterion 2}
30
- - [ ] {Criterion 3}
31
-
32
- ---
33
-
34
- ## Problem Statement
35
-
36
- ### What is the problem?
37
-
38
- {Describe the problem this feature solves. Be specific.}
39
-
40
- ### Who is affected?
41
-
42
- {Who suffers from this problem? End users? Developers? Operations?}
43
-
44
- ### What is the impact?
45
-
46
- {What is the impact of NOT solving this problem?}
47
- - User productivity loss: {X}
48
- - Revenue/Cost impact: {X}
49
- - User satisfaction: {X}
50
-
51
- ---
52
-
53
- ## Proposed Solution
54
-
55
- ### Overview
56
-
57
- {Describe the proposed solution in 2-3 paragraphs}
58
-
59
- ### Key Features
60
-
61
- 1. **{Feature 1}** - {brief description}
62
- 2. **{Feature 2}** - {brief description}
63
- 3. **{Feature 3}** - {brief description}
64
-
65
- {{#if (eq STACK "nextjs-neon")}}
66
- ### Technical Approach
67
-
68
- | Layer | Technology | Role |
69
- |-------|-----------|------|
70
- | **Database** | Neon (PostgreSQL + RLS) | {tables, policies, storage} |
71
- | **Backend API** | .NET 10 Minimal API | {endpoints, business logic} |
72
- | **Frontend** | Next.js 15 (App Router) | {pages, components, auth} |
73
- | **Infra** | Coolify + Docker | {deployment, SSL} |
74
- {{/if}}
75
-
76
- ### User Journey
77
-
78
- ```
79
- 1. User {initial action}
80
- 2. System {response}
81
- 3. User {next action}
82
- 4. System {final result}
83
- ```
84
-
85
- ---
86
-
87
- {{#if (eq STACK "nextjs-neon")}}
88
- ## Cost Estimate
89
-
90
- | Resource | Provider | Monthly Cost | Notes |
91
- |----------|----------|-------------|-------|
92
- | Neon | Free / Launch | $0 - $19 | {DB, Connection Pooling, Branching} |
93
- | VPS (Coolify) | {provider} | ${X} | {API + Web containers} |
94
- | External APIs | {provider} | ${X} | {if applicable} |
95
- | **Total** | | **${X}/month** | |
96
-
97
- ---
98
-
99
- {{/if}}
100
- ## Success Metrics
101
-
102
- How will we know this feature is successful?
103
-
104
- | Metric | Current | Target |
105
- |--------|---------|--------|
106
- | {Metric 1} | {X} | {Y} |
107
- | {Metric 2} | {X} | {Y} |
108
-
109
- ---
110
-
111
- ## Scope
112
-
113
- ### In Scope
114
-
115
- - {Item 1 that is included}
116
- - {Item 2 that is included}
117
- - {Item 3 that is included}
118
-
119
- ### Out of Scope
120
-
121
- - {Item 1 that is NOT included}
122
- - {Item 2 that is NOT included}
123
-
124
- ### Future Considerations
125
-
126
- - {Item that could be added later}
127
-
128
- ---
129
-
130
- ## Risks & Concerns
131
-
132
- | Risk | Likelihood | Impact | Mitigation |
133
- |------|------------|--------|------------|
134
- | {Risk 1} | High/Med/Low | High/Med/Low | {mitigation strategy} |
135
- | {Risk 2} | High/Med/Low | High/Med/Low | {mitigation strategy} |
136
-
137
- ---
138
-
139
- ## Conflitos com o acervo
140
-
141
- UCs (`.morph/specs/usecases/`), ADRs ativos (`.morph/specs/adrs/`) and `.morph/context/*.md` that
142
- this request contradicts. `Nenhum conflito encontrado.` when there is none — the section is always present.
143
-
144
- | Fonte | O que diz hoje | O que o pedido muda | Decisão |
145
- |-------|----------------|---------------------|---------|
146
- | {UC-133} | {Public Sans + Lora em toda a interface} | {admin passa a Geist} | {vale o novo no admin; a vitrine mantém o antigo — decisions.md ADR-001} |
147
-
148
- ---
149
-
150
- ## Dependencies
151
-
152
- - [ ] {Dependency 1} - {status}
153
- - [ ] {Dependency 2} - {status}
154
-
155
- ---
156
-
157
- ## Estimated Effort
158
-
159
- | Phase | Estimate |
160
- |-------|----------|
161
- | Design & Spec | {X}h |
162
- {{#if (eq STACK "nextjs-neon")}}| Database & Migrations | {X}h |
163
- | Backend API | {X}h |
164
- | Frontend | {X}h |
165
- {{else}}| Implementation | {X}h |
166
- {{/if}}| Testing | {X}h |
167
- | **Total** | **{X}h** |
168
-
169
- ---
170
-
171
- ## Questions & Clarifications
172
-
173
- 1. {Question 1 that needs answering}
174
- 2. {Question 2 that needs answering}
175
-
176
- ---
177
-
178
- ## Next Steps
179
-
180
- Once approved:
181
- 1. Create detailed `spec.md` with technical design
182
- {{#if (eq STACK "nextjs-neon")}}2. Define contracts (`contracts.cs` + `contracts.ts`)
183
- 3. Record decisions in `decisions.md`
184
- 4. Break down into `tasks.json`
185
- 5. Begin implementation
186
- {{else}}2. Break down into `tasks.json`
187
- 3. Begin implementation
188
- {{/if}}
189
-
190
- ---
191
-
192
- *Created with MORPH Framework*
@@ -1,57 +0,0 @@
1
- # Feature Specification: {{titleCase FEATURE_NAME}}
2
-
3
- | Field | Value |
4
- |-------|-------|
5
- | **ID** | {{FEATURE_NAME}} |
6
- | **Created** | {{DATE}} |
7
- | **Stack** | {{STACK}} |
8
-
9
- > Behavior lives in the use cases (`2-plan/usecases/UC-*.md`). This file says HOW they are realized —
10
- > do not repeat postconditions here.
11
-
12
- ## Architecture
13
-
14
- {Components, how they connect, main data flows. Enough to implement without basic questions.}
15
-
16
- ### Data Model
17
-
18
- | Entity | Field | Type | Notes |
19
- |--------|-------|------|-------|
20
- | {Entity} | {field} | {type} | {constraint, index, relation} |
21
-
22
- ### Contracts
23
-
24
- ```
25
- {METHOD} /api/{route}
26
- Request: { ... }
27
- Response: { ... } | ProblemDetails 400/404/409
28
- ```
29
-
30
- ## Technical edge cases
31
-
32
- - {Edge case} → {how it is handled}
33
-
34
- ## UCs e ADRs que esta feature altera ou revoga
35
-
36
- > Read by `morph-spec finish`: in the archive commit, each row marks the project acervo — a UC turns
37
- > `status: superseded` + `superseded_by` (+ `scope` when partial); an ADR leaves `.morph/specs/adrs/`
38
- > (total) or keeps its file with the scope where it still holds (partial). Columns are positional.
39
- > `morph-spec usecase check {feature}` reports a bad row while this file can still change (it freezes at Gate 2).
40
- > Nothing revoked → replace the table with `Nenhum.`
41
-
42
- | Id | Mudança | Substituto | Escopo em que o antigo ainda vale |
43
- |----|---------|------------|-----------------------------------|
44
- | UC-{nn} | parcial | UC-{nn} | {where the old one still holds} |
45
- | {feature}/ADR-{nnn} | total | — | — |
46
-
47
- ## Contrato de implementação
48
-
49
- - **Standards:** {ids from `morph-spec standards --find`, plus `architecture-code-comments` and the stack's test standard}
50
- - **Proibições desta feature:** {beyond MORPH.md "Stack baked-in", or "nenhuma"}
51
- - **Verificação de runtime:** {how the stack comes up (`morph-spec e2e up {feature}`), which flows the evaluator navigates, which become Playwright specs, auth setup — or why it does not apply}
52
- - **Baseline:** {the COMMAND that measures it — `dotnet test`, `npm test` — never a number}
53
- - **Pré-requisito:** {a PREDICATE — `git merge-base --is-ancestor origin/main HEAD` exits 0 — never a SHA}
54
-
55
- ## Out of Scope
56
-
57
- - {Item}
@@ -1,52 +0,0 @@
1
- # UI Components: {{titleCase FEATURE_NAME}}
2
-
3
- | Field | Value |
4
- |-------|-------|
5
- | **Feature** | {{FEATURE_NAME}} |
6
- | **Created** | {{DATE}} |
7
- | **Stack** | {{STACK}} |
8
-
9
- ---
10
-
11
- {{#if (eq STACK "nextjs-neon")}}
12
- ## Component Library: shadcn/ui
13
-
14
- ### C001: Button
15
-
16
- ```tsx
17
- import { Button } from '@/components/ui/button';
18
-
19
- <Button onClick={handleSave} disabled={!isValid}>
20
- Save
21
- </Button>
22
- ```
23
-
24
- ### C002: Data Table
25
-
26
- ```tsx
27
- import { DataTable } from '@/components/ui/data-table';
28
-
29
- <DataTable columns={columns} data={items} />
30
- ```
31
-
32
- {{/if}}
33
-
34
- ---
35
-
36
- ## Form Validation
37
-
38
- | Field | Rule | Error Message |
39
- |-------|------|---------------|
40
- | **Name** | Required, max 100 | "Name is required" |
41
- | **Email** | Valid email | "Invalid email" |
42
-
43
- ---
44
-
45
- ## Accessibility
46
- - [ ] All inputs have labels
47
- - [ ] Error messages announced
48
- - [ ] Keyboard navigation works
49
-
50
- ---
51
-
52
- *Generated with MORPH Framework*
@@ -1,76 +0,0 @@
1
- # UI Design System: {{titleCase FEATURE_NAME}}
2
-
3
- | Field | Value |
4
- |-------|-------|
5
- | **Feature** | {{FEATURE_NAME}} |
6
- | **Created** | {{DATE}} |
7
- | **Project** | {{PROJECT_NAME}} |
8
-
9
- ---
10
-
11
- ## Color Palette
12
-
13
- ### Primary Colors
14
- | Token | Value | Usage |
15
- |-------|-------|-------|
16
- | `--color-primary` | #0078D4 | Primary actions, links |
17
- | `--color-primary-hover` | #106EBE | Hover states |
18
-
19
- ### Semantic Colors
20
- | Token | Value | Usage |
21
- |-------|-------|-------|
22
- | `--color-success` | #107C10 | Success states |
23
- | `--color-warning` | #F7630C | Warnings |
24
- | `--color-error` | #D13438 | Errors |
25
-
26
- ---
27
-
28
- ## Typography
29
-
30
- | Token | Size | Weight | Usage |
31
- |-------|------|--------|-------|
32
- | `--text-h1` | 24px | 600 | Section headers |
33
- | `--text-body` | 14px | 400 | Body text |
34
- | `--text-caption` | 12px | 400 | Labels |
35
-
36
- ---
37
-
38
- ## Spacing
39
-
40
- | Token | Value | Usage |
41
- |-------|-------|-------|
42
- | `--space-sm` | 8px | Compact spacing |
43
- | `--space-md` | 16px | Standard spacing |
44
- | `--space-lg` | 24px | Wide spacing |
45
-
46
- ---
47
-
48
- ## Components
49
-
50
- ### Buttons
51
- - **Primary**: `--color-primary` background, white text
52
- - **Secondary**: Transparent, `--color-primary` border
53
- - **Sizes**: Small (24px), Medium (32px), Large (40px)
54
-
55
- ### Forms
56
- - **Input height**: 32px
57
- - **Focus**: 2px solid `--color-primary`
58
- - **Error**: 1px solid `--color-error`
59
-
60
- ---
61
-
62
- ## Accessibility
63
- - [ ] 4.5:1 contrast ratio (WCAG AA)
64
- - [ ] Touch targets minimum 44x44px
65
- - [ ] Keyboard navigation supported
66
-
67
- ---
68
-
69
- ## Responsive Breakpoints
70
- - **Mobile**: < 768px
71
- - **Tablet**: 768px - 1199px
72
- - **Desktop**: ≥ 1200px
73
-
74
- ---
75
-
76
- *Generated with MORPH Framework*
@@ -1,167 +0,0 @@
1
- # UI Flows: {{titleCase FEATURE_NAME}}
2
-
3
- | Field | Value |
4
- |-------|-------|
5
- | **Feature** | {{FEATURE_NAME}} |
6
- | **Created** | {{DATE}} |
7
-
8
- ---
9
-
10
- ## User Stories
11
-
12
- ### US001: {Primary User Story}
13
-
14
- **As** a {user type}
15
- **I want** to {capability}
16
- **So that** {benefit}
17
-
18
- **Acceptance Criteria:**
19
- 1. {Criterion 1}
20
- 2. {Criterion 2}
21
-
22
- ---
23
-
24
- ## Flow Inventory
25
-
26
- | Flow ID | Name | Priority |
27
- |---------|------|----------|
28
- | **F001** | Create New Item | High |
29
- | **F002** | Edit Existing Item | High |
30
- | **F003** | Delete Item | Medium |
31
-
32
- ---
33
-
34
- ## F001: Create New Item
35
-
36
- ### Happy Path
37
-
38
- ```
39
- START
40
- ↓
41
- [User clicks "Add New"]
42
- ↓
43
- [Modal opens with form]
44
- ↓
45
- [User fills required fields]
46
- ↓
47
- [User clicks "Submit"]
48
- ↓
49
- [Validation passes] ✓
50
- ↓
51
- [API call: POST /api/items]
52
- ↓
53
- [Success response]
54
- ↓
55
- [Modal closes]
56
- ↓
57
- [Success toast: "Item created"]
58
- ↓
59
- [Table refreshes]
60
- ↓
61
- END
62
- ```
63
-
64
- **Duration:** 15-30 seconds
65
- **Success Rate Target:** 95%
66
-
67
- ---
68
-
69
- ### Alternative Path: Validation Error
70
-
71
- ```
72
- [User clicks "Submit"]
73
- ↓
74
- [Validation fails] ✕
75
- ↓
76
- [Error messages shown inline]
77
- ↓
78
- [User corrects errors]
79
- ↓
80
- [Real-time validation clears errors]
81
- ↓
82
- → Returns to Happy Path
83
- ```
84
-
85
- ---
86
-
87
- ### Edge Cases
88
-
89
- | Scenario | Behavior |
90
- |----------|----------|
91
- | **Duplicate Name** | Show warning, allow submit |
92
- | **Network Error** | Show error toast, preserve data |
93
- | **Session Expired** | Redirect to login |
94
-
95
- ---
96
-
97
- ## F002: Edit Existing Item
98
-
99
- ```
100
- [User clicks "Edit"]
101
- ↓
102
- [Modal opens with pre-filled form]
103
- ↓
104
- [User modifies fields]
105
- ↓
106
- [User clicks "Save"]
107
- ↓
108
- [API call: PUT /api/items/{id}]
109
- ↓
110
- [Success toast]
111
- ↓
112
- [Table refreshes]
113
- END
114
- ```
115
-
116
- ---
117
-
118
- ## F003: Delete Item
119
-
120
- ```
121
- [User clicks "Delete"]
122
- ↓
123
- [Confirmation dialog: "Delete item?"]
124
- ↓
125
- [User confirms]
126
- ↓
127
- [API call: DELETE /api/items/{id}]
128
- ↓
129
- [Success toast]
130
- ↓
131
- [Table refreshes]
132
- END
133
- ```
134
-
135
- ---
136
-
137
- ## Toast Notifications
138
-
139
- | Event | Type | Message | Duration |
140
- |-------|------|---------|----------|
141
- | **Item Created** | Success | "Item created successfully" | 3s |
142
- | **Item Updated** | Success | "Item updated successfully" | 3s |
143
- | **Item Deleted** | Success | "Item deleted successfully" | 3s |
144
- | **Error** | Error | "Something went wrong" | 5s |
145
-
146
- ---
147
-
148
- ## Keyboard Shortcuts
149
-
150
- | Shortcut | Action |
151
- |----------|--------|
152
- | **Ctrl+N** | New Item |
153
- | **Escape** | Close modal |
154
- | **Enter** | Submit form |
155
-
156
- ---
157
-
158
- ## Performance Targets
159
-
160
- | Flow | Target |
161
- |------|--------|
162
- | **Create Item** | < 2s (API response) |
163
- | **Search** | < 500ms |
164
-
165
- ---
166
-
167
- *Generated with MORPH Framework*
@@ -1,91 +0,0 @@
1
- # Spec Template Reference
2
-
3
- > **Layer:** 3 | **Load:** on-demand | **Keywords:** spec, specification, template
4
-
5
- **The canonical template is `docs/spec.md` of the template system** (REGISTRY id `spec`),
6
- resolved from the installed package — see `framework/templates/README.md`.
7
-
8
- This file contains extended examples for each spec section.
9
-
10
- ---
11
-
12
- ## Example: Entity (Pseudo-code)
13
-
14
- ```csharp
15
- class ProcessingJob {
16
- Guid Id
17
- string OriginalPhotoUrl // Azure Blob URL, max 500 chars
18
- string? ProcessedPhotoUrl // Nullable, populated after processing
19
- ProcessingStatus Status // Enum: Pending, Processing, Completed, Failed
20
- DateTime CreatedAt
21
- ICollection<ExecutionLog> Logs // 1:N relationship
22
- }
23
-
24
- enum ProcessingStatus {
25
- Pending = 0, Processing = 1, Completed = 2, // Normal flow
26
- Failed = 100 // Error states (high values)
27
- }
28
- ```
29
-
30
- ## Example: Command (Pseudo-code)
31
-
32
- ```csharp
33
- UploadPhotoCommand {
34
- Input: IFormFile photo, string? email
35
- Output: Guid jobId
36
-
37
- Handler:
38
- 1. Validate file (size <= 10MB, type in [.jpg, .png])
39
- 2. Upload to Azure Blob Storage
40
- 3. Create ProcessingJob entity (status = Pending)
41
- 4. Enqueue Hangfire background job
42
- 5. Return jobId
43
- }
44
- ```
45
-
46
- ## Example: API Endpoints
47
-
48
- ```csharp
49
- PhotoProcessingController {
50
- POST /api/upload → multipart/form-data → { jobId: Guid }
51
- GET /api/status/{id} → jobId → { status, progress, createdAt }
52
- GET /api/download/{id} → jobId → Redirect to Blob URL or 404
53
- }
54
- ```
55
-
56
- ## Example: Flow
57
-
58
- ```
59
- Upload Flow (Actor: User)
60
- 1. User selects photo → System validates (size, type) → If invalid: show error
61
- 2. User sees preview → clicks "Upload"
62
- 3. System creates ProcessingJob → uploads to Blob → enqueues Hangfire job → returns jobId
63
- 4. System navigates to /processing/{jobId} → polls every 5s
64
- End State: User on progress page, job processing in background
65
- ```
66
-
67
- ## Example: ADR
68
-
69
- ### ADR-001: Use Hangfire for Background Jobs
70
- **Status:** Accepted
71
- **Context:** Need background processing for AI photo transformation (30-120s).
72
- **Decision:** Hangfire (self-hosted).
73
- **Alternatives:**
74
- 1. Azure Functions — serverless, auto-scaling, but cold start + $10/mo for 50k jobs
75
- 2. Hangfire — zero cost, simpler, but scales with app
76
- 3. Quartz.NET — more features, but steeper learning curve
77
- **Trade-offs:** Simplicity vs Features (Hangfire sufficient for MVP)
78
-
79
- ## Example: Cost Estimate
80
-
81
- | Resource | SKU | Monthly | Justification |
82
- |----------|-----|---------|---------------|
83
- | Blob Storage | LRS | $0.02 | Store photos, low redundancy OK |
84
- | Azure SQL | Basic | $4.99 | < 100k jobs/month |
85
- | Container App | Consumption | $0.49 | Scale to zero |
86
- | Hangfire | Self-hosted | $0.00 | In-process |
87
- | **Total** | | **~$5.50** | |
88
-
89
- ---
90
-
91
- *MORPH-SPEC by Polymorphism Tech*