@polymorphism-tech/morph-spec 4.3.1 → 4.3.2

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 (192) hide show
  1. package/bin/morph-spec.js +1 -1
  2. package/package.json +2 -1
  3. package/src/commands/project/doctor.js +24 -18
  4. package/src/commands/project/init.js +1 -1
  5. package/src/commands/state/state.js +24 -2
  6. package/src/core/templates/template-registry.js +1 -1
  7. package/src/core/workflows/workflow-detector.js +2 -2
  8. package/stacks/blazor-azure/.claude/commands/morph-apply.md +221 -0
  9. package/stacks/blazor-azure/.claude/commands/morph-archive.md +79 -0
  10. package/stacks/blazor-azure/.claude/commands/morph-deploy.md +529 -0
  11. package/stacks/blazor-azure/.claude/commands/morph-infra.md +209 -0
  12. package/stacks/blazor-azure/.claude/commands/morph-preflight.md +227 -0
  13. package/stacks/blazor-azure/.claude/commands/morph-proposal.md +122 -0
  14. package/stacks/blazor-azure/.claude/commands/morph-status.md +86 -0
  15. package/stacks/blazor-azure/.claude/commands/morph-troubleshoot.md +122 -0
  16. package/stacks/blazor-azure/.morph/.morphversion +5 -5
  17. package/stacks/blazor-azure/.morph/archive/.gitkeep +25 -0
  18. package/stacks/blazor-azure/.morph/config/config.json +9 -0
  19. package/stacks/blazor-azure/.morph/features/.gitkeep +25 -0
  20. package/stacks/blazor-azure/.morph/project/context/README.md +17 -0
  21. package/stacks/blazor-azure/.morph/schemas/agent.schema.json +296 -0
  22. package/stacks/blazor-azure/.morph/schemas/tasks.schema.json +220 -0
  23. package/stacks/blazor-azure/.morph/specs/.gitkeep +20 -0
  24. package/stacks/blazor-azure/.morph/standards/ai-agents/blazor-ui.md +364 -0
  25. package/stacks/blazor-azure/.morph/standards/ai-agents/production.md +415 -0
  26. package/stacks/blazor-azure/.morph/standards/ai-agents/setup.md +418 -0
  27. package/stacks/blazor-azure/.morph/standards/ai-agents/team-orchestration.md +479 -0
  28. package/stacks/blazor-azure/.morph/standards/ai-agents/workflows.md +354 -0
  29. package/stacks/blazor-azure/.morph/standards/architecture/ddd/aggregates.md +120 -0
  30. package/stacks/blazor-azure/.morph/standards/architecture/ddd/entities.md +99 -0
  31. package/stacks/blazor-azure/.morph/standards/architecture/ddd/value-objects.md +124 -0
  32. package/stacks/blazor-azure/.morph/standards/backend/api/minimal-api.md +494 -0
  33. package/stacks/blazor-azure/.morph/standards/backend/api/rest.md +492 -0
  34. package/stacks/blazor-azure/.morph/standards/backend/api/validation.md +88 -0
  35. package/stacks/blazor-azure/.morph/standards/backend/authentication/passkeys.md +428 -0
  36. package/stacks/blazor-azure/.morph/standards/backend/database/ef-core.md +199 -0
  37. package/stacks/blazor-azure/.morph/standards/backend/database/migrations.md +393 -0
  38. package/stacks/blazor-azure/.morph/standards/backend/database/postgresql/database.md +352 -0
  39. package/stacks/blazor-azure/.morph/standards/backend/database/repository-patterns.md +528 -0
  40. package/stacks/blazor-azure/.morph/standards/backend/database/vector-search-rag.md +541 -0
  41. package/stacks/blazor-azure/.morph/standards/backend/dotnet/async.md +366 -0
  42. package/stacks/blazor-azure/.morph/standards/backend/dotnet/core.md +117 -0
  43. package/stacks/blazor-azure/.morph/standards/backend/dotnet/di.md +439 -0
  44. package/stacks/blazor-azure/.morph/standards/backend/dotnet/program-cs-checklist.md +92 -0
  45. package/stacks/blazor-azure/.morph/standards/backend/integrations/asaas/asaas-api.md +216 -0
  46. package/stacks/blazor-azure/.morph/standards/backend/integrations/clerk/clerk-auth.md +290 -0
  47. package/stacks/blazor-azure/.morph/standards/backend/integrations/hangfire/hangfire-jobs.md +350 -0
  48. package/stacks/blazor-azure/.morph/standards/backend/integrations/resend/resend-email.md +385 -0
  49. package/stacks/blazor-azure/.morph/standards/context/analytics.md +96 -0
  50. package/stacks/blazor-azure/.morph/standards/context/bundles.md +110 -0
  51. package/stacks/blazor-azure/.morph/standards/context/priming.md +78 -0
  52. package/stacks/blazor-azure/.morph/standards/core/architecture.md +185 -0
  53. package/stacks/blazor-azure/.morph/standards/core/coding.md +214 -0
  54. package/stacks/blazor-azure/.morph/standards/core/git-branching-strategy.md +403 -0
  55. package/stacks/blazor-azure/.morph/standards/core/git.md +185 -0
  56. package/stacks/blazor-azure/.morph/standards/core/testing.md +295 -0
  57. package/stacks/blazor-azure/.morph/standards/data/nosql/blob-storage.md +102 -0
  58. package/stacks/blazor-azure/.morph/standards/data/nosql/cache/redis.md +97 -0
  59. package/stacks/blazor-azure/.morph/standards/data/nosql/cosmos-db.md +118 -0
  60. package/stacks/blazor-azure/.morph/standards/data/vector-search/azure-ai-search.md +121 -0
  61. package/stacks/blazor-azure/.morph/standards/data/vector-search/rag-chunking.md +104 -0
  62. package/stacks/blazor-azure/.morph/standards/frontend/blazor/design-checklist.md +222 -0
  63. package/stacks/blazor-azure/.morph/standards/frontend/blazor/fluent-ui-setup.md +595 -0
  64. package/stacks/blazor-azure/.morph/standards/frontend/blazor/fluent-ui.md +137 -0
  65. package/stacks/blazor-azure/.morph/standards/frontend/blazor/html-conversion.md +184 -0
  66. package/stacks/blazor-azure/.morph/standards/frontend/blazor/lifecycle.md +195 -0
  67. package/stacks/blazor-azure/.morph/standards/frontend/blazor/pitfalls.md +198 -0
  68. package/stacks/blazor-azure/.morph/standards/frontend/blazor/state.md +191 -0
  69. package/stacks/blazor-azure/.morph/standards/frontend/design-system/animations.md +151 -0
  70. package/stacks/blazor-azure/.morph/standards/frontend/design-system/naming.md +64 -0
  71. package/stacks/blazor-azure/.morph/standards/frontend/nextjs/nextjs-patterns.md +198 -0
  72. package/stacks/blazor-azure/.morph/standards/infrastructure/azure/azure.md +624 -0
  73. package/stacks/blazor-azure/.morph/standards/infrastructure/azure/bicep/bicep-patterns.md +422 -0
  74. package/stacks/blazor-azure/.morph/standards/infrastructure/azure/devops/azure-devops-setup.md +516 -0
  75. package/stacks/blazor-azure/.morph/standards/infrastructure/azure/devops/local-development.md +520 -0
  76. package/stacks/blazor-azure/.morph/standards/infrastructure/azure/services/functions.md +486 -0
  77. package/stacks/blazor-azure/.morph/standards/infrastructure/azure/services/service-bus.md +459 -0
  78. package/stacks/blazor-azure/.morph/standards/infrastructure/azure/services/storage.md +407 -0
  79. package/stacks/blazor-azure/.morph/standards/infrastructure/docker/easypanel-deploy.md +196 -0
  80. package/stacks/blazor-azure/.morph/standards/infrastructure/supabase/mcp-setup.md +252 -0
  81. package/stacks/blazor-azure/.morph/standards/infrastructure/supabase/supabase-auth.md +176 -0
  82. package/stacks/blazor-azure/.morph/standards/infrastructure/supabase/supabase-pgvector.md +169 -0
  83. package/stacks/blazor-azure/.morph/standards/infrastructure/supabase/supabase-rls.md +184 -0
  84. package/stacks/blazor-azure/.morph/standards/infrastructure/supabase/supabase-storage.md +153 -0
  85. package/stacks/blazor-azure/.morph/standards/integration/api/graphql.md +91 -0
  86. package/stacks/blazor-azure/.morph/standards/integration/api/grpc.md +114 -0
  87. package/stacks/blazor-azure/.morph/standards/integration/api/rest-design.md +95 -0
  88. package/stacks/blazor-azure/.morph/standards/integration/event-driven/cqrs.md +101 -0
  89. package/stacks/blazor-azure/.morph/standards/integration/event-driven/event-sourcing.md +124 -0
  90. package/stacks/blazor-azure/.morph/standards/integration/event-driven/service-bus.md +95 -0
  91. package/stacks/blazor-azure/.morph/standards/observability/logging.md +131 -0
  92. package/stacks/blazor-azure/.morph/standards/observability/metrics.md +121 -0
  93. package/stacks/blazor-azure/.morph/standards/observability/monitoring.md +114 -0
  94. package/stacks/blazor-azure/.morph/standards/observability/tracing.md +132 -0
  95. package/stacks/blazor-azure/.morph/standards/workflows/parallel-execution.md +112 -0
  96. package/stacks/blazor-azure/.morph/standards/workflows/thread-management.md +113 -0
  97. package/stacks/blazor-azure/.morph/test-infra/example.bicep +59 -0
  98. package/stacks/blazor-azure/CLAUDE.md +106 -101
  99. package/stacks/nextjs-supabase/.claude/commands/morph-apply.md +221 -0
  100. package/stacks/nextjs-supabase/.claude/commands/morph-archive.md +79 -0
  101. package/stacks/nextjs-supabase/.claude/commands/morph-deploy.md +529 -0
  102. package/stacks/nextjs-supabase/.claude/commands/morph-infra.md +209 -0
  103. package/stacks/nextjs-supabase/.claude/commands/morph-preflight.md +227 -0
  104. package/stacks/nextjs-supabase/.claude/commands/morph-proposal.md +122 -0
  105. package/stacks/nextjs-supabase/.claude/commands/morph-status.md +86 -0
  106. package/stacks/nextjs-supabase/.claude/commands/morph-troubleshoot.md +122 -0
  107. package/stacks/nextjs-supabase/.morph/.morphversion +5 -0
  108. package/stacks/nextjs-supabase/.morph/config/agents.json +730 -127
  109. package/stacks/nextjs-supabase/.morph/config/config.json +9 -0
  110. package/stacks/nextjs-supabase/.morph/project/context/README.md +17 -0
  111. package/stacks/nextjs-supabase/.morph/standards/ai-agents/blazor-ui.md +364 -0
  112. package/stacks/nextjs-supabase/.morph/standards/ai-agents/production.md +415 -0
  113. package/stacks/nextjs-supabase/.morph/standards/ai-agents/setup.md +418 -0
  114. package/stacks/nextjs-supabase/.morph/standards/ai-agents/team-orchestration.md +479 -0
  115. package/stacks/nextjs-supabase/.morph/standards/ai-agents/workflows.md +354 -0
  116. package/stacks/nextjs-supabase/.morph/standards/architecture/ddd/aggregates.md +120 -0
  117. package/stacks/nextjs-supabase/.morph/standards/architecture/ddd/entities.md +99 -0
  118. package/stacks/nextjs-supabase/.morph/standards/architecture/ddd/value-objects.md +124 -0
  119. package/stacks/nextjs-supabase/.morph/standards/backend/api/minimal-api.md +494 -0
  120. package/stacks/nextjs-supabase/.morph/standards/backend/api/rest.md +492 -0
  121. package/stacks/nextjs-supabase/.morph/standards/backend/api/validation.md +88 -0
  122. package/stacks/nextjs-supabase/.morph/standards/backend/authentication/passkeys.md +428 -0
  123. package/stacks/nextjs-supabase/.morph/standards/backend/database/ef-core.md +199 -0
  124. package/stacks/nextjs-supabase/.morph/standards/backend/database/migrations.md +393 -0
  125. package/stacks/nextjs-supabase/.morph/standards/backend/database/postgresql/database.md +352 -0
  126. package/stacks/nextjs-supabase/.morph/standards/backend/database/repository-patterns.md +528 -0
  127. package/stacks/nextjs-supabase/.morph/standards/backend/database/vector-search-rag.md +541 -0
  128. package/stacks/nextjs-supabase/.morph/standards/backend/dotnet/async.md +366 -0
  129. package/stacks/nextjs-supabase/.morph/standards/backend/dotnet/core.md +117 -0
  130. package/stacks/nextjs-supabase/.morph/standards/backend/dotnet/di.md +439 -0
  131. package/stacks/nextjs-supabase/.morph/standards/backend/dotnet/program-cs-checklist.md +92 -0
  132. package/stacks/nextjs-supabase/.morph/standards/backend/integrations/asaas/asaas-api.md +216 -0
  133. package/stacks/nextjs-supabase/.morph/standards/backend/integrations/clerk/clerk-auth.md +290 -0
  134. package/stacks/nextjs-supabase/.morph/standards/backend/integrations/hangfire/hangfire-jobs.md +350 -0
  135. package/stacks/nextjs-supabase/.morph/standards/backend/integrations/resend/resend-email.md +385 -0
  136. package/stacks/nextjs-supabase/.morph/standards/context/analytics.md +96 -0
  137. package/stacks/nextjs-supabase/.morph/standards/context/bundles.md +110 -0
  138. package/stacks/nextjs-supabase/.morph/standards/context/priming.md +78 -0
  139. package/stacks/nextjs-supabase/.morph/standards/core/architecture.md +185 -0
  140. package/stacks/nextjs-supabase/.morph/standards/core/coding.md +214 -0
  141. package/stacks/nextjs-supabase/.morph/standards/core/git-branching-strategy.md +403 -0
  142. package/stacks/nextjs-supabase/.morph/standards/core/git.md +185 -0
  143. package/stacks/nextjs-supabase/.morph/standards/core/testing.md +295 -0
  144. package/stacks/nextjs-supabase/.morph/standards/data/nosql/blob-storage.md +102 -0
  145. package/stacks/nextjs-supabase/.morph/standards/data/nosql/cache/redis.md +97 -0
  146. package/stacks/nextjs-supabase/.morph/standards/data/nosql/cosmos-db.md +118 -0
  147. package/stacks/nextjs-supabase/.morph/standards/data/vector-search/azure-ai-search.md +121 -0
  148. package/stacks/nextjs-supabase/.morph/standards/data/vector-search/rag-chunking.md +104 -0
  149. package/stacks/nextjs-supabase/.morph/standards/frontend/blazor/design-checklist.md +222 -0
  150. package/stacks/nextjs-supabase/.morph/standards/frontend/blazor/fluent-ui-setup.md +595 -0
  151. package/stacks/nextjs-supabase/.morph/standards/frontend/blazor/fluent-ui.md +137 -0
  152. package/stacks/nextjs-supabase/.morph/standards/frontend/blazor/html-conversion.md +184 -0
  153. package/stacks/nextjs-supabase/.morph/standards/frontend/blazor/lifecycle.md +195 -0
  154. package/stacks/nextjs-supabase/.morph/standards/frontend/blazor/pitfalls.md +198 -0
  155. package/stacks/nextjs-supabase/.morph/standards/frontend/blazor/state.md +191 -0
  156. package/stacks/nextjs-supabase/.morph/standards/frontend/design-system/animations.md +151 -0
  157. package/stacks/nextjs-supabase/.morph/standards/frontend/design-system/naming.md +64 -0
  158. package/stacks/nextjs-supabase/.morph/standards/frontend/nextjs/nextjs-patterns.md +198 -0
  159. package/stacks/nextjs-supabase/.morph/standards/infrastructure/azure/azure.md +624 -0
  160. package/stacks/nextjs-supabase/.morph/standards/infrastructure/azure/bicep/bicep-patterns.md +422 -0
  161. package/stacks/nextjs-supabase/.morph/standards/infrastructure/azure/devops/azure-devops-setup.md +516 -0
  162. package/stacks/nextjs-supabase/.morph/standards/infrastructure/azure/devops/local-development.md +520 -0
  163. package/stacks/nextjs-supabase/.morph/standards/infrastructure/azure/services/functions.md +486 -0
  164. package/stacks/nextjs-supabase/.morph/standards/infrastructure/azure/services/service-bus.md +459 -0
  165. package/stacks/nextjs-supabase/.morph/standards/infrastructure/azure/services/storage.md +407 -0
  166. package/stacks/nextjs-supabase/.morph/standards/infrastructure/docker/easypanel-deploy.md +196 -0
  167. package/stacks/nextjs-supabase/.morph/standards/infrastructure/supabase/mcp-setup.md +252 -0
  168. package/stacks/nextjs-supabase/.morph/standards/infrastructure/supabase/supabase-auth.md +176 -0
  169. package/stacks/nextjs-supabase/.morph/standards/infrastructure/supabase/supabase-pgvector.md +169 -0
  170. package/stacks/nextjs-supabase/.morph/standards/infrastructure/supabase/supabase-rls.md +184 -0
  171. package/stacks/nextjs-supabase/.morph/standards/infrastructure/supabase/supabase-storage.md +153 -0
  172. package/stacks/nextjs-supabase/.morph/standards/integration/api/graphql.md +91 -0
  173. package/stacks/nextjs-supabase/.morph/standards/integration/api/grpc.md +114 -0
  174. package/stacks/nextjs-supabase/.morph/standards/integration/api/rest-design.md +95 -0
  175. package/stacks/nextjs-supabase/.morph/standards/integration/event-driven/cqrs.md +101 -0
  176. package/stacks/nextjs-supabase/.morph/standards/integration/event-driven/event-sourcing.md +124 -0
  177. package/stacks/nextjs-supabase/.morph/standards/integration/event-driven/service-bus.md +95 -0
  178. package/stacks/nextjs-supabase/.morph/standards/observability/logging.md +131 -0
  179. package/stacks/nextjs-supabase/.morph/standards/observability/metrics.md +121 -0
  180. package/stacks/nextjs-supabase/.morph/standards/observability/monitoring.md +114 -0
  181. package/stacks/nextjs-supabase/.morph/standards/observability/tracing.md +132 -0
  182. package/stacks/nextjs-supabase/.morph/standards/workflows/parallel-execution.md +112 -0
  183. package/stacks/nextjs-supabase/.morph/standards/workflows/thread-management.md +113 -0
  184. package/stacks/nextjs-supabase/CLAUDE.md +69 -63
  185. package/stacks/blazor-azure/.morph/templates/.gitkeep +0 -0
  186. package/stacks/blazor-azure/.morph/templates/infrastructure/github/workflows/cd-prod.yml.hbs +0 -41
  187. package/stacks/blazor-azure/.morph/templates/infrastructure/github/workflows/cd-staging.yml.hbs +0 -24
  188. package/stacks/blazor-azure/.morph/templates/infrastructure/github/workflows/ci-build.yml.hbs +0 -23
  189. package/stacks/nextjs-supabase/.morph/templates/.gitkeep +0 -0
  190. package/stacks/nextjs-supabase/.morph/templates/infrastructure/github/workflows/cd-prod.yml.hbs +0 -22
  191. package/stacks/nextjs-supabase/.morph/templates/infrastructure/github/workflows/cd-staging.yml.hbs +0 -22
  192. package/stacks/nextjs-supabase/.morph/templates/infrastructure/github/workflows/ci-build.yml.hbs +0 -35
@@ -0,0 +1,132 @@
1
+ # Observability Standard: Distributed Tracing
2
+
3
+ ## Overview
4
+ OpenTelemetry distributed tracing for cross-service correlation and performance analysis.
5
+
6
+ ## OpenTelemetry Setup
7
+
8
+ ### Packages
9
+ ```xml
10
+ <PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.*" />
11
+ <PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.*" />
12
+ <PackageReference Include="OpenTelemetry.Instrumentation.Http" Version="1.*" />
13
+ <PackageReference Include="OpenTelemetry.Instrumentation.SqlClient" Version="1.*" />
14
+ <PackageReference Include="Azure.Monitor.OpenTelemetry.AspNetCore" Version="1.*" />
15
+ ```
16
+
17
+ ### Program.cs Configuration
18
+ ```csharp
19
+ builder.Services.AddOpenTelemetry()
20
+ .WithTracing(tracing =>
21
+ {
22
+ tracing
23
+ .AddAspNetCoreInstrumentation(opts =>
24
+ {
25
+ opts.RecordException = true;
26
+ opts.Filter = ctx => !ctx.Request.Path.StartsWithSegments("/health");
27
+ })
28
+ .AddHttpClientInstrumentation()
29
+ .AddSqlClientInstrumentation(opts => opts.SetDbStatementForText = true)
30
+ .AddSource(ActivitySource.Name) // Custom activities
31
+ .AddAzureMonitorTraceExporter(opts =>
32
+ {
33
+ opts.ConnectionString = config["ApplicationInsights:ConnectionString"];
34
+ });
35
+ });
36
+
37
+ // Custom ActivitySource for domain operations
38
+ public static class Telemetry
39
+ {
40
+ public static readonly ActivitySource ActivitySource = new("MyApp", "1.0.0");
41
+ }
42
+ ```
43
+
44
+ ## Custom Span Creation
45
+
46
+ ### Service Method Tracing
47
+ ```csharp
48
+ public async Task<Order> ProcessOrderAsync(CreateOrderCommand command)
49
+ {
50
+ using var activity = Telemetry.ActivitySource.StartActivity("ProcessOrder");
51
+ activity?.SetTag("order.userId", command.UserId.ToString());
52
+ activity?.SetTag("order.itemCount", command.Items.Count.ToString());
53
+
54
+ try
55
+ {
56
+ var order = await _repository.CreateAsync(command);
57
+ activity?.SetTag("order.id", order.Id.ToString());
58
+ activity?.SetStatus(ActivityStatusCode.Ok);
59
+ return order;
60
+ }
61
+ catch (Exception ex)
62
+ {
63
+ activity?.SetStatus(ActivityStatusCode.Error, ex.Message);
64
+ activity?.RecordException(ex);
65
+ throw;
66
+ }
67
+ }
68
+ ```
69
+
70
+ ### Baggage (Cross-Service Context)
71
+ ```csharp
72
+ // Set correlation ID in baggage (propagates across HTTP calls)
73
+ Activity.Current?.SetBaggage("correlationId", correlationId);
74
+ Activity.Current?.SetBaggage("userId", userId.ToString());
75
+
76
+ // Read baggage downstream
77
+ var correlationId = Activity.Current?.GetBaggageItem("correlationId");
78
+ ```
79
+
80
+ ## Trace Context Propagation
81
+
82
+ ### HTTP Client (auto-propagated)
83
+ ```csharp
84
+ // HttpClient automatically propagates W3C trace context
85
+ // Configure in DI:
86
+ builder.Services.AddHttpClient("ExternalApi")
87
+ .AddOpenTelemetryInstrumentation();
88
+ ```
89
+
90
+ ### Service Bus (manual propagation)
91
+ ```csharp
92
+ // Sender: inject trace context into message properties
93
+ var message = new ServiceBusMessage(body);
94
+ var activity = Activity.Current;
95
+ if (activity != null)
96
+ {
97
+ message.ApplicationProperties["traceparent"] = activity.Id;
98
+ message.ApplicationProperties["tracestate"] = activity.TraceStateString;
99
+ }
100
+
101
+ // Receiver: restore trace context from message
102
+ if (message.ApplicationProperties.TryGetValue("traceparent", out var traceparent))
103
+ {
104
+ using var linkedActivity = Telemetry.ActivitySource.StartActivity(
105
+ "ProcessMessage",
106
+ ActivityKind.Consumer,
107
+ parentId: traceparent.ToString()!);
108
+ await ProcessAsync(message);
109
+ }
110
+ ```
111
+
112
+ ## Trace Sampling Strategy
113
+
114
+ | Environment | Strategy | Rate |
115
+ |-------------|----------|------|
116
+ | Development | Always | 100% |
117
+ | Staging | Adaptive | 10% + errors |
118
+ | Production | Adaptive | 5% + errors |
119
+
120
+ ```csharp
121
+ // Production adaptive sampling (errors always sampled)
122
+ .AddAspNetCoreInstrumentation(opts =>
123
+ {
124
+ opts.Enrich = (activity, eventName, obj) =>
125
+ {
126
+ if (obj is HttpResponse response && response.StatusCode >= 400)
127
+ {
128
+ activity.SetSampled(true); // Always sample errors
129
+ }
130
+ };
131
+ })
132
+ ```
@@ -0,0 +1,112 @@
1
+ # Workflow Standard: Parallel Execution
2
+
3
+ ## When to Use Parallel Execution
4
+
5
+ | Condition | Decision |
6
+ |-----------|----------|
7
+ | 5+ independent tasks | Use P-Threads |
8
+ | Multi-domain (backend + frontend + infra) | Use P-Threads with squad templates |
9
+ | 15+ files to create | Use P-Threads |
10
+ | Tasks have zero dependency overlap | Use P-Threads |
11
+ | Tasks share file scope | Do NOT parallelize |
12
+ | Sequential data flow required | Do NOT parallelize |
13
+
14
+ ## Parallelization Planning
15
+
16
+ ### Step 1: Dependency Analysis
17
+ ```bash
18
+ morph-spec detect-workflow user-auth
19
+
20
+ # Identifies: parallelizable tasks, sequential chains, waves
21
+ ```
22
+
23
+ ### Step 2: File Scope Assignment
24
+ Assign exclusive file ownership to each parallel worker:
25
+
26
+ ```
27
+ Worker A (Backend): Entities/, Services/, Controllers/, DTOs/
28
+ Worker B (Frontend): Pages/, Components/, CSS/
29
+ Worker C (Infra): infra/bicep/, .github/workflows/
30
+ ```
31
+
32
+ No overlap allowed. If overlap is unavoidable, make it sequential.
33
+
34
+ ### Step 3: Choose Squad Template
35
+ ```bash
36
+ morph-spec squad-template use full-stack --feature=user-auth
37
+
38
+ # Creates execution plan based on full-stack.json template:
39
+ # - dotnet-senior (backend lead)
40
+ # - blazor-builder (frontend lead)
41
+ # - bicep-architect (infra lead)
42
+ # - thread-orchestrator (coordinator)
43
+ ```
44
+
45
+ ## Execution Flow
46
+
47
+ ```
48
+ Orchestrator
49
+
50
+ ├── spawn parallel: Worker A (files: Entities/, Services/)
51
+ ├── spawn parallel: Worker B (files: Pages/, Components/)
52
+ └── spawn parallel: Worker C (files: infra/)
53
+
54
+ │ [Workers execute concurrently — no interaction]
55
+
56
+ ├── wait-all (poll or explicit sync)
57
+
58
+ ├── merge results (check for conflicts)
59
+ ├── run integration validation
60
+ └── report consolidated output
61
+ ```
62
+
63
+ ## Conflict Resolution
64
+
65
+ ### File Conflicts (two workers wrote same file)
66
+ ```bash
67
+ # This should NOT happen if scopes are properly defined
68
+ # If it does:
69
+ morph-spec agents review aggregate user-auth \
70
+ --agents=dotnet-senior,blazor-builder \
71
+ --strategy=best-of-n
72
+ ```
73
+
74
+ ### Interface Mismatches (A expects contract B didn't fulfill)
75
+ - Document the mismatch in the coordinator report
76
+ - Fix in post-merge sequential step
77
+ - Update contracts.cs to reflect actual implementation
78
+
79
+ ## Fusion vs Parallel
80
+
81
+ | Aspect | Parallel (P-Thread) | Fusion (F-Thread) |
82
+ |--------|--------------------|--------------------|
83
+ | Goal | Divide scope | Compete on same scope |
84
+ | Output | Different files | Same files, best one wins |
85
+ | Workers collaborate? | No | No |
86
+ | Merge | Combine all files | Select best implementation |
87
+ | Use case | Large features | Design decisions, quality optimization |
88
+
89
+ ## Configuration
90
+ ```json
91
+ // llm-interaction.json
92
+ {
93
+ "parallelExecution": {
94
+ "enabled": true,
95
+ "maxConcurrent": 3,
96
+ "defaultStrategy": "best-of-n"
97
+ }
98
+ }
99
+ ```
100
+
101
+ ## Squad Templates
102
+
103
+ Pre-defined squad configurations in `framework/squad-templates/`:
104
+ - `full-stack.json` — Backend + Frontend + Infra (6 agents)
105
+ - `backend-only.json` — Backend specialists only (4 agents)
106
+ - `frontend-only.json` — Frontend specialists only (3 agents)
107
+
108
+ ```bash
109
+ morph-spec squad-template list
110
+ morph-spec squad-template show full-stack
111
+ morph-spec squad-template use full-stack --feature=user-auth
112
+ ```
@@ -0,0 +1,113 @@
1
+ # Workflow Standard: Thread Management
2
+
3
+ ## Thread Types
4
+
5
+ | Type | Code | Purpose | Lifecycle |
6
+ |------|------|---------|-----------|
7
+ | Base | B-Thread | Default implementation thread | Bounded by feature phase |
8
+ | Parallel | P-Thread | Concurrent isolated execution | Short (1 task scope) |
9
+ | Fusion | F-Thread | Best-of-N competing implementations | Short (1 prompt scope) |
10
+ | Long-Running | L-Thread | Multi-session persistent work | Days/weeks |
11
+ | Zero-Touch | Z-Thread | Fully autonomous execution | Bounded by trust level |
12
+
13
+ ## Thread Lifecycle
14
+
15
+ ```
16
+ pending → running → completed
17
+ → failed → (retry) → running
18
+ → killed
19
+ ```
20
+
21
+ ## Creating Threads
22
+ ```bash
23
+ # Create a base thread (default)
24
+ morph-spec threads status morph-next-gen
25
+
26
+ # Create parallel threads for feature
27
+ morph-spec spawn-team morph-next-gen --parallel backend,frontend,infra
28
+
29
+ # Create fusion thread
30
+ morph-spec agents fuse \
31
+ --prompt "Implement caching strategy for UserService" \
32
+ --count=3 \
33
+ --strategy=best-of-n \
34
+ --feature=morph-next-gen
35
+ ```
36
+
37
+ ## Thread State in state.json
38
+ ```json
39
+ {
40
+ "threads": {
41
+ "thread-abc12345": {
42
+ "id": "thread-abc12345",
43
+ "type": "parallel",
44
+ "agent": "dotnet-senior",
45
+ "feature": "user-auth",
46
+ "status": "running",
47
+ "startedAt": "2026-02-19T00:00:00Z",
48
+ "events": [
49
+ { "type": "started", "timestamp": "..." },
50
+ { "type": "checkpoint_passed", "timestamp": "...", "checkpointNum": 1 }
51
+ ],
52
+ "metrics": {
53
+ "tasksCompleted": 3,
54
+ "checkpointsPassed": 1,
55
+ "errors": 0
56
+ }
57
+ }
58
+ }
59
+ }
60
+ ```
61
+
62
+ ## Parallel Execution Rules (P-Threads)
63
+
64
+ 1. **File scope isolation**: Each P-Thread has exclusive write access to its files
65
+ 2. **No cross-thread dependencies**: P-Thread tasks are self-contained
66
+ 3. **Shared read access**: All P-Threads can read spec.md, standards, contracts
67
+ 4. **Merge on completion**: Coordinator merges results after all P-Threads complete
68
+ 5. **Max concurrent**: Default 3, max 5 (configurable in llm-interaction.json)
69
+
70
+ ## Dependency Analysis
71
+ ```bash
72
+ # Analyze task dependencies for parallel opportunities
73
+ morph-spec detect-workflow morph-next-gen
74
+
75
+ # Output:
76
+ # Parallelizable tasks: T001, T002, T003 (no dependencies)
77
+ # Sequential: T004 (depends on T001), T005 (depends on T002)
78
+ # Execution plan:
79
+ # Wave 1: [T001, T002, T003] (parallel)
80
+ # Wave 2: [T004, T005] (parallel, after wave 1)
81
+ # Wave 3: [T006] (sequential)
82
+ ```
83
+
84
+ ## Long-Running Threads (L-Threads)
85
+
86
+ ### Stop Hooks
87
+ L-Threads run periodic stop hooks every 30 minutes:
88
+ ```json
89
+ // llm-interaction.json
90
+ {
91
+ "stopHooks": {
92
+ "enabled": true,
93
+ "interval": 30,
94
+ "maxRetries": 5,
95
+ "hooks": ["validate-and-continue", "validate-checkpoints"]
96
+ }
97
+ }
98
+ ```
99
+
100
+ ### Resume Pattern
101
+ ```bash
102
+ # Resume L-Thread from bundle
103
+ morph-spec bundle load morph-next-gen
104
+ # Load resume context, continue from checkpoint
105
+ ```
106
+
107
+ ## Monitoring
108
+ ```bash
109
+ morph-spec threads list morph-next-gen
110
+ morph-spec threads analytics morph-next-gen
111
+ morph-spec threads wait-all morph-next-gen
112
+ morph-spec threads wait-any morph-next-gen
113
+ ```
@@ -1,8 +1,8 @@
1
- # MORPH-SPEC - Next.js + Supabase Stack
1
+ # MORPH-SPEC - Claude Code Instructions
2
2
 
3
3
  > by Polymorphism Tech
4
4
 
5
- Spec-driven development system. Specialized agent hub for .NET 10 Minimal API + Next.js 15 + Supabase Cloud, deployed via Docker on EasyPanel.
5
+ Spec-driven development system. Specialized agent hub for multi-stack projects with Infrastructure as Code.
6
6
 
7
7
  ---
8
8
 
@@ -12,15 +12,15 @@ Spec-driven development system. Specialized agent hub for .NET 10 Minimal API +
12
12
  - Skip to code without a specification
13
13
  - Implement without design approval
14
14
  - Ignore standards in `.morph/standards/`
15
- - Create infrastructure manually (use Docker Compose + EasyPanel)
15
+ - Create infrastructure manually
16
16
  - Generate code without defined contracts
17
17
 
18
18
  ### ALWAYS:
19
19
  - Follow the 5 mandatory phases
20
- - Generate outputs in `.morph/features/{feature}/`
20
+ - Generate outputs in `.morph/project/outputs/{feature}/`
21
21
  - Document decisions in `decisions.md`
22
22
  - Checkpoint every 3 implemented tasks
23
- - Use Infrastructure as Code (Docker Compose, Dockerfiles)
23
+ - Use Infrastructure as Code
24
24
 
25
25
  ---
26
26
 
@@ -28,8 +28,8 @@ Spec-driven development system. Specialized agent hub for .NET 10 Minimal API +
28
28
 
29
29
  | Phase | Trigger | Actions | Output | Pause? |
30
30
  |-------|---------|---------|--------|--------|
31
- | **1. SETUP** | Feature request | Read project.md, identify stack, activate agents, create folder | proposal.md | No |
32
- | **2. DESIGN** | Setup done | Spec + contracts + decisions + costs + Docker | spec.md, contracts.cs, contracts.ts, decisions.md | **Yes** |
31
+ | **1. SETUP** | Feature request | Read project context, identify stack, activate agents, create folder | proposal.md | No |
32
+ | **2. DESIGN** | Setup done | Spec + contracts + decisions + costs | spec.md, contracts, decisions.md | **Yes** |
33
33
  | **3. CLARIFY** | Design approved | Ambiguities, questions, edge cases | Updated spec | No |
34
34
  | **4. TASKS** | Clarifications resolved | Break into tasks, ordering, checkpoints, dependencies | tasks.md | **Yes** |
35
35
  | **5. IMPLEMENT** | Tasks approved | Task by task, checkpoint every 3, recap | Code + recap.md | No |
@@ -42,68 +42,79 @@ Spec-driven development system. Specialized agent hub for .NET 10 Minimal API +
42
42
  project/
43
43
  ├── CLAUDE.md
44
44
  ├── .morph/
45
- │ ├── project.md # Context
46
45
  │ ├── config/ # config.json, agents.json
47
- │ ├── standards/ # supabase-*, nextjs-patterns, easypanel-deploy
46
+ │ ├── standards/ # coding, architecture, stack-specific
48
47
  │ ├── templates/ # Output templates
49
- │ ├── specs/ # ACTIVE specs
50
- │ ├── features/{feature-name}/ # Features IN DEVELOPMENT
51
- │ │ ├── proposal.md, spec.md, tasks.md
52
- │ │ ├── contracts.cs, contracts.ts, decisions.md, recap.md
53
- └── archive/ # COMPLETED features
54
- ├── .claude/skills/ # Agent skills
55
- ├── src/
56
- │ ├── api/ # .NET 10 Minimal API
57
- │ └── web/ # Next.js 15 App Router
58
- ├── supabase/ # Migrations, seeds, RLS policies
59
- ├── docker-compose.yml # Local dev environment
60
- └── Dockerfile.* # Production builds
48
+ │ ├── project/
49
+ ├── context/ # detection-log.md, project.md
50
+ │ │ ├── standards/ # inferred.md, overrides.md
51
+ │ │ └── outputs/{feature}/ # Features in development
52
+ │ ├── proposal.md, spec.md, tasks.md
53
+ │ │ ├── contracts, decisions.md, recap.md
54
+ └── .claude/commands/ # Slash commands
61
55
  ```
62
56
 
63
57
  ---
64
58
 
65
59
  ## AGENTS
66
60
 
67
- ### Core (Always Active)
61
+ ### Tier 1 — Orchestrators (Always Active)
68
62
 
69
63
  | Agent | Responsibilities |
70
64
  |-------|-----------------|
71
- | **Standards Architect** | Standards, naming, review |
72
- | **Supabase Expert** | DB design, RLS, Auth, Storage, Realtime, pgvector |
73
- | **Container Specialist** | Docker builds, EasyPanel config, health checks |
65
+ | **Standards Architect** | Standards, naming, review, cross-cutting concerns |
66
+ | **AI System Architect** | Agent systems, AI integrations, LLM orchestration |
67
+ | **Thread Orchestrator** | Parallel execution, thread management, context optimization |
74
68
 
75
- ### Stack, Specialist, Integration, Infra
69
+ ### Tier 2 Domain Leaders
76
70
 
77
- > **Ref:** `.morph/config/agents.json` for full agent table and keywords.
78
-
79
- ---
80
-
81
- ## COST LIMITS
82
-
83
- | Level | Limit | Requirement |
84
- |-------|-------|-------------|
85
- | No approval | Free tier | None |
86
- | With approval | Up to $25/month | Confirmation |
87
- | Above $25 | Justification | ADR |
88
-
89
- ---
90
-
91
- ## INFRASTRUCTURE AS CODE
92
-
93
- > NEVER create infrastructure manually. Everything via Docker Compose + EasyPanel.
71
+ | Agent | Responsibilities |
72
+ |-------|-----------------|
73
+ | **Tech Lead** | Architecture decisions, code quality, task breakdown |
74
+ | **DevOps Engineer** | CI/CD, deployment pipelines, infrastructure |
75
+ | **QA Lead** | Test strategies, validation, quality gates |
76
+
77
+ ### Tier 3 Specialists (Activated by keywords)
78
+
79
+ | Agent | Keywords |
80
+ |-------|---------|
81
+ | **Next.js Expert** | nextjs, react, frontend, app router, pages |
82
+ | **Blazor Builder** | blazor, razor, mudblazor, fluent ui |
83
+ | **API Designer** | api, endpoint, rest, openapi, swagger |
84
+ | **.NET Senior** | dotnet, csharp, minimal api, ef core |
85
+ | **EF Modeler** | entity framework, migrations, dbcontext |
86
+ | **Azure Architect** | azure, container apps, bicep, app service |
87
+ | **Bicep Architect** | bicep, iac, arm template, azure resources |
88
+ | **Azure Deploy Specialist** | deploy, ci/cd, github actions, azure devops |
89
+ | **Container Specialist** | docker, dockerfile, compose, kubernetes |
90
+ | **Supabase Expert** | supabase, postgresql, rls, realtime, pgvector |
91
+ | **Azure Identity** | auth, authentication, entra id, jwt, oauth |
92
+ | **Clerk Auth** | clerk, auth0, authentication, social login |
93
+ | **Asaas Financial** | payment, billing, subscription, asaas |
94
+ | **Resend Email** | email, resend, smtp, notifications |
95
+ | **Hangfire Orchestrator** | background jobs, queue, scheduling, hangfire |
96
+ | **MS Agent Expert** | semantic kernel, microsoft agents, ai pipeline |
97
+ | **UI/UX Designer** | design, ux, wireframe, mockup, figma |
98
+ | **SEO Growth Hacker** | seo, performance, analytics, lighthouse |
99
+ | **PO/PM Advisor** | product, roadmap, requirements, user stories |
100
+ | **Prompt Engineer** | prompts, system prompts, llm, few-shot |
101
+ | **Context Optimizer** | context window, token optimization, chunking |
102
+ | **Vector Search Expert** | vector db, embeddings, semantic search, rag |
103
+ | **Observability Expert** | logging, tracing, metrics, opentelemetry |
104
+ | **Code Analyzer** | refactor, analysis, code review, complexity |
105
+ | **Testing Specialist** | tests, coverage, tdd, bdd, vitest, jest, xunit |
106
+
107
+ ### Tier 4 — Validators
94
108
 
95
- | Resource | Approach |
96
- |----------|----------|
97
- | Local dev (DB, API, Web) | Docker Compose |
98
- | Production containers | Dockerfiles + EasyPanel |
99
- | Supabase (DB, Auth, Storage) | Supabase Cloud (managed) |
100
- | CI/CD | GitHub Actions + EasyPanel auto-deploy |
109
+ | Agent | Responsibilities |
110
+ |-------|-----------------|
111
+ | **Contract Compliance Validator** | Ensures implementation matches spec contracts |
101
112
 
102
113
  ---
103
114
 
104
115
  ## TEMPLATES
105
116
 
106
- > ALWAYS use `bin/render-template.js` to render. NEVER fill placeholders manually.
117
+ > ALWAYS use `morph-spec template render` to render. NEVER fill placeholders manually.
107
118
 
108
119
  ### Placeholders: `{{PLACEHOLDER}}`
109
120
 
@@ -112,15 +123,9 @@ project/
112
123
  | `{{FEATURE_NAME}}` | `scheduled-reports` |
113
124
  | `{{FEATURE_NAME_PASCAL}}` | `ScheduledReports` |
114
125
  | `{{FEATURE_NAME_CAMEL}}` | `scheduledReports` |
115
- | `{{STACK}}` | `NextjsSupabase` |
126
+ | `{{STACK}}` | `blazor-azure` or `nextjs-supabase` |
116
127
  | `{{DATE}}`, `{{AUTHOR}}`, `{{NAMESPACE}}` | Auto from config.json |
117
128
 
118
- ### Available Templates
119
-
120
- **MORPH outputs:** proposal, spec, contracts.cs, contracts.ts, decisions, tasks, recap
121
-
122
- **Code:** service.cs, repository.cs, endpoint.cs
123
-
124
129
  ---
125
130
 
126
131
  ## COMMANDS
@@ -131,7 +136,7 @@ project/
131
136
  | `/morph-apply {feature}` | Implement feature (phase 5) |
132
137
  | `/morph-status` | Dashboard |
133
138
  | `/morph-archive {feature}` | Archive completed feature |
134
- | `/morph-infra {action}` | Manage Docker/EasyPanel infra |
139
+ | `/morph-infra {action}` | Manage infrastructure |
135
140
  | `/morph-preflight` | Pre-deploy validation |
136
141
  | `/morph-troubleshoot {error}` | Error troubleshooting |
137
142
 
@@ -139,11 +144,12 @@ project/
139
144
 
140
145
  ## REFERENCES
141
146
 
142
- - `.morph/project.md` -- Project context
143
- - `.morph/standards/` -- supabase-auth, supabase-rls, supabase-storage, supabase-pgvector, easypanel-deploy, nextjs-patterns, coding, architecture
144
- - `.morph/templates/` -- Output templates
145
- - `.morph/config/agents.json` -- Agents
147
+ - `.morph/config/config.json` Project configuration
148
+ - `.morph/config/agents.json` Full agent definitions
149
+ - `.morph/standards/` Coding, architecture, stack-specific standards
150
+ - `.morph/project/context/` Detection log, project context
151
+ - `.morph/project/standards/inferred.md` — Auto-detected project standards
146
152
 
147
153
  ---
148
154
 
149
- *MORPH-SPEC by Polymorphism Tech*
155
+ *MORPH-SPEC v4.3.0 by Polymorphism Tech*
File without changes
@@ -1,41 +0,0 @@
1
- name: Deploy to Production
2
-
3
- on:
4
- push:
5
- branches: [main]
6
-
7
- jobs:
8
- build:
9
- uses: ./.github/workflows/dotnet-build.yml
10
- with:
11
- dotnet-version: '{{DOTNET_VERSION}}'
12
- build-configuration: 'Release'
13
- run-tests: true
14
- secrets: inherit
15
-
16
- security-scan:
17
- needs: build
18
- runs-on: ubuntu-latest
19
- steps:
20
- - uses: actions/checkout@v4
21
-
22
- - name: Check vulnerable packages
23
- run: dotnet list package --vulnerable --include-transitive
24
-
25
- deploy:
26
- needs: [build, security-scan]
27
- uses: ./.github/workflows/deploy-azure-app-service.yml
28
- with:
29
- environment: 'production'
30
- resource-group: 'rg-{{kebabCase APP_NAME}}-prod'
31
- app-service-name: 'app-{{kebabCase APP_NAME}}-prod'
32
- package-path: './publish'
33
- secrets: inherit
34
-
35
- smoke-tests:
36
- needs: deploy
37
- runs-on: ubuntu-latest
38
- steps:
39
- - name: Critical endpoint check
40
- run: |
41
- curl -f https://app-{{kebabCase APP_NAME}}-prod.azurewebsites.net/api/health
@@ -1,24 +0,0 @@
1
- name: Deploy to Staging
2
-
3
- on:
4
- push:
5
- branches: [staging]
6
-
7
- jobs:
8
- build:
9
- uses: ./.github/workflows/dotnet-build.yml
10
- with:
11
- dotnet-version: '{{DOTNET_VERSION}}'
12
- build-configuration: 'Release'
13
- run-tests: true
14
- secrets: inherit
15
-
16
- deploy:
17
- needs: build
18
- uses: ./.github/workflows/deploy-azure-app-service.yml
19
- with:
20
- environment: 'staging'
21
- resource-group: 'rg-{{kebabCase APP_NAME}}-staging'
22
- app-service-name: 'app-{{kebabCase APP_NAME}}-staging'
23
- package-path: './publish'
24
- secrets: inherit
@@ -1,23 +0,0 @@
1
- name: CI Build
2
-
3
- on:
4
- pull_request:
5
- branches: [main, staging]
6
- push:
7
- branches: [main, staging]
8
-
9
- jobs:
10
- build:
11
- uses: ./.github/workflows/dotnet-build.yml
12
- with:
13
- dotnet-version: '{{DOTNET_VERSION}}'
14
- build-configuration: 'Release'
15
- run-tests: true
16
-
17
- security:
18
- runs-on: ubuntu-latest
19
- steps:
20
- - uses: actions/checkout@v4
21
-
22
- - name: Check vulnerable packages
23
- run: dotnet list package --vulnerable --include-transitive
File without changes
@@ -1,22 +0,0 @@
1
- name: Deploy to Production
2
-
3
- on:
4
- push:
5
- branches: [main]
6
-
7
- jobs:
8
- build-docker:
9
- uses: ./.github/workflows/docker-build-push.yml
10
- with:
11
- registry: 'ghcr.io'
12
- image-name: '{{GITHUB_OWNER}}/{{kebabCase APP_NAME}}'
13
- dockerfile-path: 'Dockerfile'
14
- secrets: inherit
15
-
16
- deploy:
17
- needs: build-docker
18
- uses: ./.github/workflows/deploy-easypanel.yml
19
- with:
20
- environment: 'production'
21
- image: ${{{{ needs.build-docker.outputs.image-tag }}}}
22
- secrets: inherit