@polymorphism-tech/morph-spec 3.0.0 → 3.0.1
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.
- package/CLAUDE.md +75 -371
- package/LICENSE +72 -72
- package/bin/detect-agents.js +225 -225
- package/bin/render-template.js +302 -302
- package/bin/semantic-detect-agents.js +246 -246
- package/bin/validate-agents-skills.js +251 -251
- package/bin/validate-agents.js +69 -69
- package/bin/validate-phase.js +263 -263
- package/content/.azure/README.md +293 -293
- package/content/.azure/docs/azure-devops-setup.md +454 -454
- package/content/.azure/docs/branch-strategy.md +398 -398
- package/content/.azure/docs/local-development.md +515 -515
- package/content/.azure/pipelines/pipeline-variables.yml +34 -34
- package/content/.azure/pipelines/prod-pipeline.yml +319 -319
- package/content/.azure/pipelines/staging-pipeline.yml +234 -234
- package/content/.azure/pipelines/templates/build-dotnet.yml +75 -75
- package/content/.azure/pipelines/templates/deploy-app-service.yml +94 -94
- package/content/.azure/pipelines/templates/deploy-container-app.yml +120 -120
- package/content/.azure/pipelines/templates/infra-deploy.yml +90 -90
- package/content/.claude/commands/morph-archive.md +79 -79
- package/content/.claude/commands/morph-deploy.md +529 -529
- package/content/.claude/commands/morph-infra.md +209 -209
- package/content/.claude/commands/morph-preflight.md +227 -227
- package/content/.claude/commands/morph-troubleshoot.md +122 -122
- package/content/.claude/settings.local.json +15 -15
- package/content/.claude/skills/{specialists → level-2-domains/architecture}/prompt-engineer.md +189 -189
- package/content/.claude/skills/{specialists → level-2-domains/architecture}/seo-growth-hacker.md +320 -320
- package/content/.claude/skills/{infra → level-2-domains/infrastructure}/azure-deploy-specialist.md +699 -699
- package/content/.morph/.morphversion +5 -5
- package/content/.morph/archive/.gitkeep +25 -25
- package/content/.morph/config/agents.json +7 -5
- package/content/.morph/docs/STORY-DRIVEN-DEVELOPMENT.md +392 -392
- package/content/.morph/examples/api-nextjs/README.md +241 -241
- package/content/.morph/examples/api-nextjs/contracts.ts +307 -307
- package/content/.morph/examples/api-nextjs/spec.md +399 -399
- package/content/.morph/examples/api-nextjs/tasks.md +168 -168
- package/content/.morph/examples/micro-saas/README.md +125 -125
- package/content/.morph/examples/micro-saas/contracts.cs +358 -358
- package/content/.morph/examples/micro-saas/decisions.md +246 -246
- package/content/.morph/examples/micro-saas/spec.md +236 -236
- package/content/.morph/examples/micro-saas/tasks.md +150 -150
- package/content/.morph/examples/multi-agent/README.md +309 -309
- package/content/.morph/examples/multi-agent/contracts.cs +433 -433
- package/content/.morph/examples/multi-agent/spec.md +479 -479
- package/content/.morph/examples/multi-agent/tasks.md +185 -185
- package/content/.morph/examples/state-v3.json +188 -188
- package/content/.morph/features/.gitkeep +25 -25
- package/content/.morph/hooks/pre-commit-all.sh +48 -48
- package/content/.morph/hooks/pre-commit-specs.sh +49 -49
- package/content/.morph/hooks/pre-commit-tests.sh +60 -60
- package/content/.morph/project.md +160 -160
- package/content/.morph/schemas/agent.schema.json +296 -296
- package/content/.morph/specs/.gitkeep +20 -20
- package/content/.morph/standards/coding.md +377 -377
- package/content/.morph/standards/fluent-ui-setup.md +590 -590
- package/content/.morph/standards/migration-guide.md +514 -514
- package/content/.morph/standards/passkeys-auth.md +423 -423
- package/content/.morph/standards/vector-search-rag.md +536 -536
- package/content/.morph/state.json +17 -17
- package/content/.morph/templates/FluentDesignTheme.cs +149 -149
- package/content/.morph/templates/MudTheme.cs +281 -281
- package/content/.morph/templates/component.razor +239 -239
- package/content/.morph/templates/contracts.cs +217 -217
- package/content/.morph/templates/design-system.css +226 -226
- package/content/.morph/templates/infra/.dockerignore.example +89 -89
- package/content/.morph/templates/infra/Dockerfile.example +82 -82
- package/content/.morph/templates/infra/README.md +286 -286
- package/content/.morph/templates/infra/app-insights.bicep +63 -63
- package/content/.morph/templates/infra/app-service.bicep +164 -164
- package/content/.morph/templates/infra/azure-pipelines-deploy.yml +480 -480
- package/content/.morph/templates/infra/container-app-env.bicep +49 -49
- package/content/.morph/templates/infra/container-app.bicep +156 -156
- package/content/.morph/templates/infra/deploy-checklist.md +426 -426
- package/content/.morph/templates/infra/deploy.ps1 +229 -229
- package/content/.morph/templates/infra/deploy.sh +208 -208
- package/content/.morph/templates/infra/key-vault.bicep +91 -91
- package/content/.morph/templates/infra/main.bicep +189 -189
- package/content/.morph/templates/infra/parameters.dev.json +29 -29
- package/content/.morph/templates/infra/parameters.prod.json +29 -29
- package/content/.morph/templates/infra/parameters.staging.json +29 -29
- package/content/.morph/templates/infra/sql-database.bicep +103 -103
- package/content/.morph/templates/infra/storage.bicep +106 -106
- package/content/.morph/templates/integrations/asaas-client.cs +387 -387
- package/content/.morph/templates/integrations/asaas-webhook.cs +351 -351
- package/content/.morph/templates/integrations/azure-identity-config.cs +288 -288
- package/content/.morph/templates/integrations/clerk-config.cs +258 -258
- package/content/.morph/templates/job.cs +171 -171
- package/content/.morph/templates/migration.cs +83 -83
- package/content/.morph/templates/repository.cs +141 -141
- package/content/.morph/templates/saas/subscription.cs +347 -347
- package/content/.morph/templates/saas/tenant.cs +338 -338
- package/content/.morph/templates/service.cs +139 -139
- package/content/.morph/templates/sprint-status.yaml +68 -68
- package/content/.morph/templates/story.md +143 -143
- package/content/.morph/templates/test.cs +239 -239
- package/content/.morph/templates/ui-design-system.md +286 -286
- package/content/.morph/templates/ui-flows.md +336 -336
- package/content/.morph/templates/ui-mockups.md +133 -133
- package/content/.morph/test-infra/example.bicep +59 -59
- package/content/README.md +79 -79
- package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +977 -977
- package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +1048 -1048
- package/docs/api/scripts/collapse.js +38 -38
- package/docs/api/scripts/commonNav.js +28 -28
- package/docs/api/scripts/linenumber.js +25 -25
- package/docs/api/scripts/nav.js +12 -12
- package/docs/api/scripts/polyfill.js +3 -3
- package/docs/api/scripts/prettify/Apache-License-2.0.txt +202 -202
- package/docs/api/scripts/prettify/lang-css.js +2 -2
- package/docs/api/scripts/prettify/prettify.js +28 -28
- package/docs/api/scripts/search.js +98 -98
- package/docs/api/styles/jsdoc.css +776 -776
- package/docs/api/styles/prettify.css +80 -80
- package/docs/examples.md +328 -328
- package/docs/templates.md +418 -418
- package/package.json +1 -2
- package/scripts/postinstall.js +132 -132
- package/scripts/reorganize-skills.cjs +175 -0
- package/scripts/validate-agents-structure.cjs +52 -0
- package/scripts/validate-skills.cjs +180 -0
- package/src/commands/analyze-blazor-concurrency.js +193 -193
- package/src/commands/create-story.js +351 -351
- package/src/commands/deploy.js +780 -780
- package/src/commands/detect-agents.js +9 -0
- package/src/commands/detect.js +104 -104
- package/src/commands/generate.js +149 -149
- package/src/commands/lint-fluent.js +352 -352
- package/src/commands/rollback-phase.js +185 -185
- package/src/commands/session-summary.js +291 -291
- package/src/commands/shard-spec.js +224 -224
- package/src/commands/sprint-status.js +250 -250
- package/src/commands/state.js +334 -333
- package/src/commands/sync.js +167 -167
- package/src/commands/troubleshoot.js +222 -222
- package/src/commands/update.js +13 -1
- package/src/commands/validate-blazor-state.js +210 -210
- package/src/commands/validate-blazor.js +156 -156
- package/src/commands/validate-css.js +84 -84
- package/src/commands/validate-phase.js +221 -221
- package/src/lib/blazor-concurrency-analyzer.js +288 -288
- package/src/lib/blazor-state-validator.js +291 -291
- package/src/lib/blazor-validator.js +374 -374
- package/src/lib/css-validator.js +352 -352
- package/src/lib/design-system-generator.js +298 -298
- package/{detectors → src/lib/detectors}/config-detector.js +223 -223
- package/{detectors → src/lib/detectors}/conversation-analyzer.js +163 -163
- package/{detectors → src/lib/detectors}/index.js +84 -84
- package/{detectors → src/lib/detectors}/standards-generator.js +275 -275
- package/src/lib/learning-system.js +520 -520
- package/src/lib/mockup-generator.js +366 -366
- package/src/lib/state-manager.js +21 -4
- package/src/lib/troubleshoot-grep.js +194 -194
- package/src/lib/troubleshoot-index.js +144 -144
- package/src/lib/ui-detector.js +350 -350
- package/src/lib/validators/architecture-validator.js +387 -387
- package/src/lib/validators/package-validator.js +360 -360
- package/src/lib/validators/ui-contrast-validator.js +422 -422
- package/src/utils/logger.js +32 -32
- package/src/utils/version-checker.js +175 -175
- /package/{detectors → src/lib/detectors}/structure-detector.js +0 -0
|
@@ -1,188 +1,188 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": "3.0.0",
|
|
3
|
-
"project": {
|
|
4
|
-
"name": "FishArt",
|
|
5
|
-
"type": "blazor-server",
|
|
6
|
-
"createdAt": "2024-01-15T10:00:00Z",
|
|
7
|
-
"updatedAt": "2024-01-15T14:30:00Z"
|
|
8
|
-
},
|
|
9
|
-
"features": {
|
|
10
|
-
"scheduled-reports": {
|
|
11
|
-
"status": "in_progress",
|
|
12
|
-
"phase": "implement",
|
|
13
|
-
"activeAgents": [
|
|
14
|
-
"standards-architect",
|
|
15
|
-
"blazor-builder",
|
|
16
|
-
"ef-modeler",
|
|
17
|
-
"hangfire-orchestrator"
|
|
18
|
-
],
|
|
19
|
-
"tasks": [
|
|
20
|
-
{
|
|
21
|
-
"id": "T001",
|
|
22
|
-
"title": "Create ScheduledReport entity",
|
|
23
|
-
"status": "completed",
|
|
24
|
-
"completedAt": "2024-01-15T10:30:00Z",
|
|
25
|
-
"completedBy": "claude",
|
|
26
|
-
"dependencies": [],
|
|
27
|
-
"files": [
|
|
28
|
-
"Domain/Entities/ScheduledReport.cs",
|
|
29
|
-
"Infrastructure/Persistence/Config/ScheduledReportConfig.cs"
|
|
30
|
-
],
|
|
31
|
-
"checkpoint": "CHECKPOINT_001"
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
"id": "T002",
|
|
35
|
-
"title": "Create CreateReportCommand + Handler",
|
|
36
|
-
"status": "completed",
|
|
37
|
-
"completedAt": "2024-01-15T11:15:00Z",
|
|
38
|
-
"completedBy": "claude",
|
|
39
|
-
"dependencies": ["T001"],
|
|
40
|
-
"files": [
|
|
41
|
-
"Application/Commands/CreateReport/CreateReportCommand.cs",
|
|
42
|
-
"Application/Commands/CreateReport/CreateReportHandler.cs"
|
|
43
|
-
]
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
"id": "T003",
|
|
47
|
-
"title": "Create Hangfire job for report generation",
|
|
48
|
-
"status": "completed",
|
|
49
|
-
"completedAt": "2024-01-15T12:00:00Z",
|
|
50
|
-
"completedBy": "claude",
|
|
51
|
-
"dependencies": ["T002"],
|
|
52
|
-
"files": [
|
|
53
|
-
"Infrastructure/Jobs/GenerateReportJob.cs"
|
|
54
|
-
],
|
|
55
|
-
"checkpoint": "CHECKPOINT_002"
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
"id": "T004",
|
|
59
|
-
"title": "Create ReportList component (Blazor)",
|
|
60
|
-
"status": "in_progress",
|
|
61
|
-
"startedAt": "2024-01-15T13:00:00Z",
|
|
62
|
-
"dependencies": ["T001"],
|
|
63
|
-
"files": [
|
|
64
|
-
"Components/Reports/ReportList.razor",
|
|
65
|
-
"Components/Reports/ReportList.razor.cs",
|
|
66
|
-
"Components/Reports/ReportList.razor.css"
|
|
67
|
-
]
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
"id": "T005",
|
|
71
|
-
"title": "Create CreateReportForm component (Blazor)",
|
|
72
|
-
"status": "pending",
|
|
73
|
-
"dependencies": ["T002"],
|
|
74
|
-
"files": [
|
|
75
|
-
"Components/Reports/CreateReportForm.razor",
|
|
76
|
-
"Components/Reports/CreateReportForm.razor.cs",
|
|
77
|
-
"Components/Reports/CreateReportForm.razor.css"
|
|
78
|
-
]
|
|
79
|
-
},
|
|
80
|
-
{
|
|
81
|
-
"id": "T006",
|
|
82
|
-
"title": "Create API controller for reports",
|
|
83
|
-
"status": "pending",
|
|
84
|
-
"dependencies": ["T002"],
|
|
85
|
-
"files": [
|
|
86
|
-
"API/Controllers/ReportsController.cs"
|
|
87
|
-
]
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
"id": "T007",
|
|
91
|
-
"title": "Add Hangfire dashboard configuration",
|
|
92
|
-
"status": "pending",
|
|
93
|
-
"dependencies": ["T003"],
|
|
94
|
-
"files": [
|
|
95
|
-
"Program.cs"
|
|
96
|
-
]
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
"id": "T008",
|
|
100
|
-
"title": "Create unit tests for CreateReportCommand",
|
|
101
|
-
"status": "pending",
|
|
102
|
-
"dependencies": ["T002"],
|
|
103
|
-
"files": [
|
|
104
|
-
"Tests/Application/Commands/CreateReportCommandTests.cs"
|
|
105
|
-
]
|
|
106
|
-
},
|
|
107
|
-
{
|
|
108
|
-
"id": "T009",
|
|
109
|
-
"title": "Create integration tests for report generation",
|
|
110
|
-
"status": "pending",
|
|
111
|
-
"dependencies": ["T003", "T006"],
|
|
112
|
-
"files": [
|
|
113
|
-
"Tests/Integration/ReportGenerationTests.cs"
|
|
114
|
-
],
|
|
115
|
-
"checkpoint": "CHECKPOINT_003"
|
|
116
|
-
}
|
|
117
|
-
],
|
|
118
|
-
"progress": {
|
|
119
|
-
"total": 9,
|
|
120
|
-
"completed": 3,
|
|
121
|
-
"inProgress": 1,
|
|
122
|
-
"pending": 5,
|
|
123
|
-
"percentage": 33
|
|
124
|
-
},
|
|
125
|
-
"checkpoints": [
|
|
126
|
-
{
|
|
127
|
-
"id": "CHECKPOINT_001",
|
|
128
|
-
"timestamp": "2024-01-15T10:30:00Z",
|
|
129
|
-
"tasksCompleted": ["T001"],
|
|
130
|
-
"note": "Checkpoint: Create ScheduledReport entity"
|
|
131
|
-
},
|
|
132
|
-
{
|
|
133
|
-
"id": "CHECKPOINT_002",
|
|
134
|
-
"timestamp": "2024-01-15T12:00:00Z",
|
|
135
|
-
"tasksCompleted": ["T003"],
|
|
136
|
-
"note": "Checkpoint: Create Hangfire job for report generation"
|
|
137
|
-
},
|
|
138
|
-
{
|
|
139
|
-
"id": "CHECKPOINT_AUTO_1705326000000",
|
|
140
|
-
"timestamp": "2024-01-15T12:00:00Z",
|
|
141
|
-
"tasksCompleted": ["T001", "T002", "T003"],
|
|
142
|
-
"note": "Auto-checkpoint: 3 tasks completed"
|
|
143
|
-
}
|
|
144
|
-
],
|
|
145
|
-
"outputs": {
|
|
146
|
-
"proposal": {
|
|
147
|
-
"created": true,
|
|
148
|
-
"path": ".morph/project/outputs/scheduled-reports/proposal.md"
|
|
149
|
-
},
|
|
150
|
-
"spec": {
|
|
151
|
-
"created": true,
|
|
152
|
-
"path": ".morph/project/outputs/scheduled-reports/spec.md"
|
|
153
|
-
},
|
|
154
|
-
"contracts": {
|
|
155
|
-
"created": true,
|
|
156
|
-
"path": ".morph/project/outputs/scheduled-reports/contracts.cs"
|
|
157
|
-
},
|
|
158
|
-
"ui-spec": {
|
|
159
|
-
"created": true,
|
|
160
|
-
"path": ".morph/project/outputs/scheduled-reports/ui-spec.md"
|
|
161
|
-
},
|
|
162
|
-
"tasks": {
|
|
163
|
-
"created": true,
|
|
164
|
-
"note": "Tasks are now inline in state.json (schema 3.0.0)"
|
|
165
|
-
},
|
|
166
|
-
"decisions": {
|
|
167
|
-
"created": true,
|
|
168
|
-
"path": ".morph/project/outputs/scheduled-reports/decisions.md"
|
|
169
|
-
}
|
|
170
|
-
},
|
|
171
|
-
"costs": {
|
|
172
|
-
"estimated": 5.50,
|
|
173
|
-
"approved": true,
|
|
174
|
-
"breakdown": {
|
|
175
|
-
"hangfire": 0,
|
|
176
|
-
"storage": 0.02,
|
|
177
|
-
"sql": 4.99,
|
|
178
|
-
"containerApp": 0.49
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
},
|
|
183
|
-
"metadata": {
|
|
184
|
-
"totalFeatures": 1,
|
|
185
|
-
"completedFeatures": 0,
|
|
186
|
-
"totalCostEstimated": 5.50
|
|
187
|
-
}
|
|
188
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"version": "3.0.0",
|
|
3
|
+
"project": {
|
|
4
|
+
"name": "FishArt",
|
|
5
|
+
"type": "blazor-server",
|
|
6
|
+
"createdAt": "2024-01-15T10:00:00Z",
|
|
7
|
+
"updatedAt": "2024-01-15T14:30:00Z"
|
|
8
|
+
},
|
|
9
|
+
"features": {
|
|
10
|
+
"scheduled-reports": {
|
|
11
|
+
"status": "in_progress",
|
|
12
|
+
"phase": "implement",
|
|
13
|
+
"activeAgents": [
|
|
14
|
+
"standards-architect",
|
|
15
|
+
"blazor-builder",
|
|
16
|
+
"ef-modeler",
|
|
17
|
+
"hangfire-orchestrator"
|
|
18
|
+
],
|
|
19
|
+
"tasks": [
|
|
20
|
+
{
|
|
21
|
+
"id": "T001",
|
|
22
|
+
"title": "Create ScheduledReport entity",
|
|
23
|
+
"status": "completed",
|
|
24
|
+
"completedAt": "2024-01-15T10:30:00Z",
|
|
25
|
+
"completedBy": "claude",
|
|
26
|
+
"dependencies": [],
|
|
27
|
+
"files": [
|
|
28
|
+
"Domain/Entities/ScheduledReport.cs",
|
|
29
|
+
"Infrastructure/Persistence/Config/ScheduledReportConfig.cs"
|
|
30
|
+
],
|
|
31
|
+
"checkpoint": "CHECKPOINT_001"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"id": "T002",
|
|
35
|
+
"title": "Create CreateReportCommand + Handler",
|
|
36
|
+
"status": "completed",
|
|
37
|
+
"completedAt": "2024-01-15T11:15:00Z",
|
|
38
|
+
"completedBy": "claude",
|
|
39
|
+
"dependencies": ["T001"],
|
|
40
|
+
"files": [
|
|
41
|
+
"Application/Commands/CreateReport/CreateReportCommand.cs",
|
|
42
|
+
"Application/Commands/CreateReport/CreateReportHandler.cs"
|
|
43
|
+
]
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"id": "T003",
|
|
47
|
+
"title": "Create Hangfire job for report generation",
|
|
48
|
+
"status": "completed",
|
|
49
|
+
"completedAt": "2024-01-15T12:00:00Z",
|
|
50
|
+
"completedBy": "claude",
|
|
51
|
+
"dependencies": ["T002"],
|
|
52
|
+
"files": [
|
|
53
|
+
"Infrastructure/Jobs/GenerateReportJob.cs"
|
|
54
|
+
],
|
|
55
|
+
"checkpoint": "CHECKPOINT_002"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"id": "T004",
|
|
59
|
+
"title": "Create ReportList component (Blazor)",
|
|
60
|
+
"status": "in_progress",
|
|
61
|
+
"startedAt": "2024-01-15T13:00:00Z",
|
|
62
|
+
"dependencies": ["T001"],
|
|
63
|
+
"files": [
|
|
64
|
+
"Components/Reports/ReportList.razor",
|
|
65
|
+
"Components/Reports/ReportList.razor.cs",
|
|
66
|
+
"Components/Reports/ReportList.razor.css"
|
|
67
|
+
]
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"id": "T005",
|
|
71
|
+
"title": "Create CreateReportForm component (Blazor)",
|
|
72
|
+
"status": "pending",
|
|
73
|
+
"dependencies": ["T002"],
|
|
74
|
+
"files": [
|
|
75
|
+
"Components/Reports/CreateReportForm.razor",
|
|
76
|
+
"Components/Reports/CreateReportForm.razor.cs",
|
|
77
|
+
"Components/Reports/CreateReportForm.razor.css"
|
|
78
|
+
]
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"id": "T006",
|
|
82
|
+
"title": "Create API controller for reports",
|
|
83
|
+
"status": "pending",
|
|
84
|
+
"dependencies": ["T002"],
|
|
85
|
+
"files": [
|
|
86
|
+
"API/Controllers/ReportsController.cs"
|
|
87
|
+
]
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"id": "T007",
|
|
91
|
+
"title": "Add Hangfire dashboard configuration",
|
|
92
|
+
"status": "pending",
|
|
93
|
+
"dependencies": ["T003"],
|
|
94
|
+
"files": [
|
|
95
|
+
"Program.cs"
|
|
96
|
+
]
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"id": "T008",
|
|
100
|
+
"title": "Create unit tests for CreateReportCommand",
|
|
101
|
+
"status": "pending",
|
|
102
|
+
"dependencies": ["T002"],
|
|
103
|
+
"files": [
|
|
104
|
+
"Tests/Application/Commands/CreateReportCommandTests.cs"
|
|
105
|
+
]
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"id": "T009",
|
|
109
|
+
"title": "Create integration tests for report generation",
|
|
110
|
+
"status": "pending",
|
|
111
|
+
"dependencies": ["T003", "T006"],
|
|
112
|
+
"files": [
|
|
113
|
+
"Tests/Integration/ReportGenerationTests.cs"
|
|
114
|
+
],
|
|
115
|
+
"checkpoint": "CHECKPOINT_003"
|
|
116
|
+
}
|
|
117
|
+
],
|
|
118
|
+
"progress": {
|
|
119
|
+
"total": 9,
|
|
120
|
+
"completed": 3,
|
|
121
|
+
"inProgress": 1,
|
|
122
|
+
"pending": 5,
|
|
123
|
+
"percentage": 33
|
|
124
|
+
},
|
|
125
|
+
"checkpoints": [
|
|
126
|
+
{
|
|
127
|
+
"id": "CHECKPOINT_001",
|
|
128
|
+
"timestamp": "2024-01-15T10:30:00Z",
|
|
129
|
+
"tasksCompleted": ["T001"],
|
|
130
|
+
"note": "Checkpoint: Create ScheduledReport entity"
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"id": "CHECKPOINT_002",
|
|
134
|
+
"timestamp": "2024-01-15T12:00:00Z",
|
|
135
|
+
"tasksCompleted": ["T003"],
|
|
136
|
+
"note": "Checkpoint: Create Hangfire job for report generation"
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"id": "CHECKPOINT_AUTO_1705326000000",
|
|
140
|
+
"timestamp": "2024-01-15T12:00:00Z",
|
|
141
|
+
"tasksCompleted": ["T001", "T002", "T003"],
|
|
142
|
+
"note": "Auto-checkpoint: 3 tasks completed"
|
|
143
|
+
}
|
|
144
|
+
],
|
|
145
|
+
"outputs": {
|
|
146
|
+
"proposal": {
|
|
147
|
+
"created": true,
|
|
148
|
+
"path": ".morph/project/outputs/scheduled-reports/proposal.md"
|
|
149
|
+
},
|
|
150
|
+
"spec": {
|
|
151
|
+
"created": true,
|
|
152
|
+
"path": ".morph/project/outputs/scheduled-reports/spec.md"
|
|
153
|
+
},
|
|
154
|
+
"contracts": {
|
|
155
|
+
"created": true,
|
|
156
|
+
"path": ".morph/project/outputs/scheduled-reports/contracts.cs"
|
|
157
|
+
},
|
|
158
|
+
"ui-spec": {
|
|
159
|
+
"created": true,
|
|
160
|
+
"path": ".morph/project/outputs/scheduled-reports/ui-spec.md"
|
|
161
|
+
},
|
|
162
|
+
"tasks": {
|
|
163
|
+
"created": true,
|
|
164
|
+
"note": "Tasks are now inline in state.json (schema 3.0.0)"
|
|
165
|
+
},
|
|
166
|
+
"decisions": {
|
|
167
|
+
"created": true,
|
|
168
|
+
"path": ".morph/project/outputs/scheduled-reports/decisions.md"
|
|
169
|
+
}
|
|
170
|
+
},
|
|
171
|
+
"costs": {
|
|
172
|
+
"estimated": 5.50,
|
|
173
|
+
"approved": true,
|
|
174
|
+
"breakdown": {
|
|
175
|
+
"hangfire": 0,
|
|
176
|
+
"storage": 0.02,
|
|
177
|
+
"sql": 4.99,
|
|
178
|
+
"containerApp": 0.49
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
},
|
|
183
|
+
"metadata": {
|
|
184
|
+
"totalFeatures": 1,
|
|
185
|
+
"completedFeatures": 0,
|
|
186
|
+
"totalCostEstimated": 5.50
|
|
187
|
+
}
|
|
188
|
+
}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
# Features em Desenvolvimento
|
|
2
|
-
|
|
3
|
-
Esta pasta contém as features ATIVAS em desenvolvimento.
|
|
4
|
-
|
|
5
|
-
## Estrutura
|
|
6
|
-
|
|
7
|
-
```
|
|
8
|
-
features/
|
|
9
|
-
└── {feature-name}/
|
|
10
|
-
├── proposal.md # Proposta (por que e o quê)
|
|
11
|
-
├── spec.md # Especificação técnica
|
|
12
|
-
├── tasks.md # Checklist de implementação
|
|
13
|
-
├── contracts.cs # Interfaces e DTOs
|
|
14
|
-
├── decisions.md # ADRs
|
|
15
|
-
└── recap.md # Resumo pós-implementação
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
## Workflow
|
|
19
|
-
|
|
20
|
-
1. `/morph-proposal {feature}` - Criar nova feature
|
|
21
|
-
2. Revisar e aprovar proposal
|
|
22
|
-
3. `/morph-apply {feature}` - Implementar
|
|
23
|
-
4. `/morph-archive {feature}` - Arquivar quando concluída
|
|
24
|
-
|
|
25
|
-
*Gerado pelo MORPH Framework*
|
|
1
|
+
# Features em Desenvolvimento
|
|
2
|
+
|
|
3
|
+
Esta pasta contém as features ATIVAS em desenvolvimento.
|
|
4
|
+
|
|
5
|
+
## Estrutura
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
features/
|
|
9
|
+
└── {feature-name}/
|
|
10
|
+
├── proposal.md # Proposta (por que e o quê)
|
|
11
|
+
├── spec.md # Especificação técnica
|
|
12
|
+
├── tasks.md # Checklist de implementação
|
|
13
|
+
├── contracts.cs # Interfaces e DTOs
|
|
14
|
+
├── decisions.md # ADRs
|
|
15
|
+
└── recap.md # Resumo pós-implementação
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Workflow
|
|
19
|
+
|
|
20
|
+
1. `/morph-proposal {feature}` - Criar nova feature
|
|
21
|
+
2. Revisar e aprovar proposal
|
|
22
|
+
3. `/morph-apply {feature}` - Implementar
|
|
23
|
+
4. `/morph-archive {feature}` - Arquivar quando concluída
|
|
24
|
+
|
|
25
|
+
*Gerado pelo MORPH Framework*
|
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# MORPH-SPEC Master Pre-Commit Hook
|
|
3
|
-
# Runs all validation hooks in sequence
|
|
4
|
-
|
|
5
|
-
echo "╔════════════════════════════════════════════════╗"
|
|
6
|
-
echo "║ MORPH-SPEC PRE-COMMIT VALIDATION ║"
|
|
7
|
-
echo "╚════════════════════════════════════════════════╝"
|
|
8
|
-
echo ""
|
|
9
|
-
|
|
10
|
-
HOOKS_DIR="$(dirname "$0")"
|
|
11
|
-
|
|
12
|
-
# Run all hooks in order
|
|
13
|
-
HOOKS=(
|
|
14
|
-
"pre-commit-agents.sh"
|
|
15
|
-
"pre-commit-costs.sh"
|
|
16
|
-
"pre-commit-specs.sh"
|
|
17
|
-
"pre-commit-tests.sh"
|
|
18
|
-
)
|
|
19
|
-
|
|
20
|
-
HAS_FAILURES=false
|
|
21
|
-
|
|
22
|
-
for hook in "${HOOKS[@]}"; do
|
|
23
|
-
HOOK_PATH="$HOOKS_DIR/$hook"
|
|
24
|
-
|
|
25
|
-
if [ ! -f "$HOOK_PATH" ]; then
|
|
26
|
-
echo "⚠️ Hook not found: $hook (skipping)"
|
|
27
|
-
continue
|
|
28
|
-
fi
|
|
29
|
-
|
|
30
|
-
echo "─────────────────────────────────────────────────"
|
|
31
|
-
if ! bash "$HOOK_PATH"; then
|
|
32
|
-
HAS_FAILURES=true
|
|
33
|
-
echo "❌ Hook failed: $hook"
|
|
34
|
-
fi
|
|
35
|
-
echo ""
|
|
36
|
-
done
|
|
37
|
-
|
|
38
|
-
echo "═════════════════════════════════════════════════"
|
|
39
|
-
|
|
40
|
-
if [ "$HAS_FAILURES" = true ]; then
|
|
41
|
-
echo "❌ PRE-COMMIT VALIDATION FAILED"
|
|
42
|
-
echo " Fix errors above before committing"
|
|
43
|
-
echo " Or use: git commit --no-verify to skip"
|
|
44
|
-
exit 1
|
|
45
|
-
fi
|
|
46
|
-
|
|
47
|
-
echo "✅ ALL PRE-COMMIT VALIDATIONS PASSED"
|
|
48
|
-
exit 0
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# MORPH-SPEC Master Pre-Commit Hook
|
|
3
|
+
# Runs all validation hooks in sequence
|
|
4
|
+
|
|
5
|
+
echo "╔════════════════════════════════════════════════╗"
|
|
6
|
+
echo "║ MORPH-SPEC PRE-COMMIT VALIDATION ║"
|
|
7
|
+
echo "╚════════════════════════════════════════════════╝"
|
|
8
|
+
echo ""
|
|
9
|
+
|
|
10
|
+
HOOKS_DIR="$(dirname "$0")"
|
|
11
|
+
|
|
12
|
+
# Run all hooks in order
|
|
13
|
+
HOOKS=(
|
|
14
|
+
"pre-commit-agents.sh"
|
|
15
|
+
"pre-commit-costs.sh"
|
|
16
|
+
"pre-commit-specs.sh"
|
|
17
|
+
"pre-commit-tests.sh"
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
HAS_FAILURES=false
|
|
21
|
+
|
|
22
|
+
for hook in "${HOOKS[@]}"; do
|
|
23
|
+
HOOK_PATH="$HOOKS_DIR/$hook"
|
|
24
|
+
|
|
25
|
+
if [ ! -f "$HOOK_PATH" ]; then
|
|
26
|
+
echo "⚠️ Hook not found: $hook (skipping)"
|
|
27
|
+
continue
|
|
28
|
+
fi
|
|
29
|
+
|
|
30
|
+
echo "─────────────────────────────────────────────────"
|
|
31
|
+
if ! bash "$HOOK_PATH"; then
|
|
32
|
+
HAS_FAILURES=true
|
|
33
|
+
echo "❌ Hook failed: $hook"
|
|
34
|
+
fi
|
|
35
|
+
echo ""
|
|
36
|
+
done
|
|
37
|
+
|
|
38
|
+
echo "═════════════════════════════════════════════════"
|
|
39
|
+
|
|
40
|
+
if [ "$HAS_FAILURES" = true ]; then
|
|
41
|
+
echo "❌ PRE-COMMIT VALIDATION FAILED"
|
|
42
|
+
echo " Fix errors above before committing"
|
|
43
|
+
echo " Or use: git commit --no-verify to skip"
|
|
44
|
+
exit 1
|
|
45
|
+
fi
|
|
46
|
+
|
|
47
|
+
echo "✅ ALL PRE-COMMIT VALIDATIONS PASSED"
|
|
48
|
+
exit 0
|
|
@@ -1,49 +1,49 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# MORPH-SPEC Pre-Commit Hook: Spec Validation
|
|
3
|
-
# Validates that spec.md files have required sections
|
|
4
|
-
|
|
5
|
-
echo "🔍 Validating spec files..."
|
|
6
|
-
|
|
7
|
-
# Find modified spec.md files
|
|
8
|
-
SPEC_FILES=$(git diff --cached --name-only --diff-filter=ACM | grep 'spec\.md$')
|
|
9
|
-
|
|
10
|
-
if [ -z "$SPEC_FILES" ]; then
|
|
11
|
-
echo "✓ No spec files modified"
|
|
12
|
-
exit 0
|
|
13
|
-
fi
|
|
14
|
-
|
|
15
|
-
HAS_ERRORS=false
|
|
16
|
-
|
|
17
|
-
for spec_file in $SPEC_FILES; do
|
|
18
|
-
echo "Checking: $spec_file"
|
|
19
|
-
|
|
20
|
-
# Required sections
|
|
21
|
-
REQUIRED_SECTIONS=(
|
|
22
|
-
"## 📋 Metadata"
|
|
23
|
-
"## 🎯 Overview"
|
|
24
|
-
"## 🏗️ Technical Design"
|
|
25
|
-
"## ✅ Acceptance Criteria"
|
|
26
|
-
)
|
|
27
|
-
|
|
28
|
-
for section in "${REQUIRED_SECTIONS[@]}"; do
|
|
29
|
-
if ! grep -q "$section" "$spec_file"; then
|
|
30
|
-
echo " ❌ Missing section: $section"
|
|
31
|
-
HAS_ERRORS=true
|
|
32
|
-
fi
|
|
33
|
-
done
|
|
34
|
-
|
|
35
|
-
# Check if has at least one user story or requirement
|
|
36
|
-
if ! grep -qi "user story\|requirement\|acceptance criteria" "$spec_file"; then
|
|
37
|
-
echo " ⚠️ Warning: No user stories or requirements found"
|
|
38
|
-
fi
|
|
39
|
-
done
|
|
40
|
-
|
|
41
|
-
if [ "$HAS_ERRORS" = true ]; then
|
|
42
|
-
echo ""
|
|
43
|
-
echo "❌ COMMIT BLOCKED: spec.md files are incomplete"
|
|
44
|
-
echo " Add missing sections before committing"
|
|
45
|
-
exit 1
|
|
46
|
-
fi
|
|
47
|
-
|
|
48
|
-
echo "✓ All spec files are valid"
|
|
49
|
-
exit 0
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# MORPH-SPEC Pre-Commit Hook: Spec Validation
|
|
3
|
+
# Validates that spec.md files have required sections
|
|
4
|
+
|
|
5
|
+
echo "🔍 Validating spec files..."
|
|
6
|
+
|
|
7
|
+
# Find modified spec.md files
|
|
8
|
+
SPEC_FILES=$(git diff --cached --name-only --diff-filter=ACM | grep 'spec\.md$')
|
|
9
|
+
|
|
10
|
+
if [ -z "$SPEC_FILES" ]; then
|
|
11
|
+
echo "✓ No spec files modified"
|
|
12
|
+
exit 0
|
|
13
|
+
fi
|
|
14
|
+
|
|
15
|
+
HAS_ERRORS=false
|
|
16
|
+
|
|
17
|
+
for spec_file in $SPEC_FILES; do
|
|
18
|
+
echo "Checking: $spec_file"
|
|
19
|
+
|
|
20
|
+
# Required sections
|
|
21
|
+
REQUIRED_SECTIONS=(
|
|
22
|
+
"## 📋 Metadata"
|
|
23
|
+
"## 🎯 Overview"
|
|
24
|
+
"## 🏗️ Technical Design"
|
|
25
|
+
"## ✅ Acceptance Criteria"
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
for section in "${REQUIRED_SECTIONS[@]}"; do
|
|
29
|
+
if ! grep -q "$section" "$spec_file"; then
|
|
30
|
+
echo " ❌ Missing section: $section"
|
|
31
|
+
HAS_ERRORS=true
|
|
32
|
+
fi
|
|
33
|
+
done
|
|
34
|
+
|
|
35
|
+
# Check if has at least one user story or requirement
|
|
36
|
+
if ! grep -qi "user story\|requirement\|acceptance criteria" "$spec_file"; then
|
|
37
|
+
echo " ⚠️ Warning: No user stories or requirements found"
|
|
38
|
+
fi
|
|
39
|
+
done
|
|
40
|
+
|
|
41
|
+
if [ "$HAS_ERRORS" = true ]; then
|
|
42
|
+
echo ""
|
|
43
|
+
echo "❌ COMMIT BLOCKED: spec.md files are incomplete"
|
|
44
|
+
echo " Add missing sections before committing"
|
|
45
|
+
exit 1
|
|
46
|
+
fi
|
|
47
|
+
|
|
48
|
+
echo "✓ All spec files are valid"
|
|
49
|
+
exit 0
|