aios-core 2.2.1 → 2.3.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.
Files changed (108) hide show
  1. package/.aios-core/.session/current-session.json +14 -14
  2. package/.aios-core/cli/commands/migrate/validate.js +1 -1
  3. package/.aios-core/core/docs/session-update-pattern.md +17 -10
  4. package/.aios-core/core/elicitation/elicitation-engine.js +11 -6
  5. package/.aios-core/core/elicitation/session-manager.js +2 -1
  6. package/.aios-core/core/registry/registry-schema.json +166 -166
  7. package/.aios-core/core/registry/service-registry.json +6585 -6585
  8. package/.aios-core/core-config.yaml +12 -1
  9. package/.aios-core/data/agent-config-requirements.yaml +5 -5
  10. package/.aios-core/development/agents/devops.md +12 -0
  11. package/.aios-core/development/scripts/squad/README.md +112 -0
  12. package/.aios-core/development/scripts/squad/index.js +41 -0
  13. package/.aios-core/development/scripts/squad/squad-loader.js +359 -0
  14. package/.aios-core/development/scripts/squad/squad-validator.js +685 -0
  15. package/.aios-core/development/tasks/add-mcp.md +11 -5
  16. package/.aios-core/development/tasks/search-mcp.md +309 -0
  17. package/.aios-core/development/tasks/setup-mcp-docker.md +11 -8
  18. package/.aios-core/development/tasks/squad-creator-validate.md +151 -0
  19. package/.aios-core/docs/standards/AGENT-PERSONALIZATION-STANDARD-V1.md +3 -3
  20. package/.aios-core/index.d.ts +7 -7
  21. package/.aios-core/index.js +1 -1
  22. package/.aios-core/infrastructure/scripts/batch-creator.js +1 -1
  23. package/.aios-core/infrastructure/scripts/component-generator.js +1 -1
  24. package/.aios-core/infrastructure/templates/coderabbit.yaml.template +279 -279
  25. package/.aios-core/infrastructure/templates/github-workflows/ci.yml.template +169 -169
  26. package/.aios-core/infrastructure/templates/github-workflows/pr-automation.yml.template +330 -330
  27. package/.aios-core/infrastructure/templates/github-workflows/release.yml.template +196 -196
  28. package/.aios-core/infrastructure/templates/gitignore/gitignore-aios-base.tmpl +63 -63
  29. package/.aios-core/infrastructure/templates/gitignore/gitignore-brownfield-merge.tmpl +18 -18
  30. package/.aios-core/infrastructure/templates/gitignore/gitignore-node.tmpl +85 -85
  31. package/.aios-core/infrastructure/templates/gitignore/gitignore-python.tmpl +145 -145
  32. package/.aios-core/infrastructure/tests/utilities-audit-results.json +500 -500
  33. package/.aios-core/infrastructure/tools/README.md +1 -1
  34. package/.aios-core/install-manifest.yaml +4 -1
  35. package/.aios-core/manifests/schema/manifest-schema.json +190 -190
  36. package/.aios-core/manifests/workers.csv +203 -203
  37. package/.aios-core/package.json +102 -102
  38. package/.aios-core/product/templates/activation-instructions-template.md +7 -7
  39. package/.aios-core/product/templates/adr.hbs +125 -125
  40. package/.aios-core/product/templates/component-react-tmpl.tsx +98 -98
  41. package/.aios-core/product/templates/dbdr.hbs +241 -241
  42. package/.aios-core/product/templates/engine/schemas/adr.schema.json +102 -102
  43. package/.aios-core/product/templates/engine/schemas/dbdr.schema.json +205 -205
  44. package/.aios-core/product/templates/engine/schemas/epic.schema.json +175 -175
  45. package/.aios-core/product/templates/engine/schemas/pmdr.schema.json +175 -175
  46. package/.aios-core/product/templates/engine/schemas/prd-v2.schema.json +300 -300
  47. package/.aios-core/product/templates/engine/schemas/prd.schema.json +152 -152
  48. package/.aios-core/product/templates/engine/schemas/story.schema.json +222 -222
  49. package/.aios-core/product/templates/engine/schemas/task.schema.json +154 -154
  50. package/.aios-core/product/templates/epic.hbs +212 -212
  51. package/.aios-core/product/templates/eslintrc-security.json +32 -32
  52. package/.aios-core/product/templates/github-actions-cd.yml +212 -212
  53. package/.aios-core/product/templates/github-actions-ci.yml +172 -172
  54. package/.aios-core/product/templates/pmdr.hbs +186 -186
  55. package/.aios-core/product/templates/prd-v2.0.hbs +216 -216
  56. package/.aios-core/product/templates/prd.hbs +201 -201
  57. package/.aios-core/product/templates/shock-report-tmpl.html +502 -502
  58. package/.aios-core/product/templates/story.hbs +263 -263
  59. package/.aios-core/product/templates/task.hbs +170 -170
  60. package/.aios-core/product/templates/tmpl-comment-on-examples.sql +158 -158
  61. package/.aios-core/product/templates/tmpl-migration-script.sql +91 -91
  62. package/.aios-core/product/templates/tmpl-rls-granular-policies.sql +104 -104
  63. package/.aios-core/product/templates/tmpl-rls-kiss-policy.sql +10 -10
  64. package/.aios-core/product/templates/tmpl-rls-roles.sql +135 -135
  65. package/.aios-core/product/templates/tmpl-rls-simple.sql +77 -77
  66. package/.aios-core/product/templates/tmpl-rls-tenant.sql +152 -152
  67. package/.aios-core/product/templates/tmpl-rollback-script.sql +77 -77
  68. package/.aios-core/product/templates/tmpl-seed-data.sql +140 -140
  69. package/.aios-core/product/templates/tmpl-smoke-test.sql +16 -16
  70. package/.aios-core/product/templates/tmpl-staging-copy-merge.sql +139 -139
  71. package/.aios-core/product/templates/tmpl-stored-proc.sql +140 -140
  72. package/.aios-core/product/templates/tmpl-trigger.sql +152 -152
  73. package/.aios-core/product/templates/tmpl-view-materialized.sql +133 -133
  74. package/.aios-core/product/templates/tmpl-view.sql +177 -177
  75. package/.aios-core/product/templates/token-exports-css-tmpl.css +240 -240
  76. package/.aios-core/quality/schemas/quality-metrics.schema.json +233 -233
  77. package/.aios-core/schemas/squad-schema.json +185 -0
  78. package/.aios-core/scripts/README.md +90 -322
  79. package/.aios-core/scripts/migrate-framework-docs.sh +300 -300
  80. package/.claude/rules/mcp-usage.md +116 -100
  81. package/LICENSE +48 -48
  82. package/README.md +3 -4
  83. package/bin/aios-init.js +11 -6
  84. package/bin/aios.js +2 -1
  85. package/package.json +2 -3
  86. package/packages/installer/package.json +39 -39
  87. package/packages/installer/tests/integration/environment-configuration.test.js +2 -2
  88. package/packages/installer/tests/unit/env-template.test.js +4 -3
  89. package/templates/squad/LICENSE +21 -21
  90. package/templates/squad/README.md +37 -37
  91. package/templates/squad/agents/example-agent.yaml +36 -36
  92. package/templates/squad/package.json +19 -19
  93. package/templates/squad/squad.yaml +25 -25
  94. package/templates/squad/tasks/example-task.yaml +46 -46
  95. package/templates/squad/templates/example-template.md +24 -24
  96. package/templates/squad/tests/example-agent.test.js +53 -53
  97. package/templates/squad/workflows/example-workflow.yaml +54 -54
  98. package/tools/diagnose-npx-issue.ps1 +96 -96
  99. package/tools/quick-diagnose.cmd +85 -85
  100. package/tools/quick-diagnose.ps1 +117 -117
  101. package/.aios-core/core/data/agent-config-requirements.yaml +0 -368
  102. package/.aios-core/core/data/aios-kb.md +0 -924
  103. package/.aios-core/core/data/workflow-patterns.yaml +0 -267
  104. package/.aios-core/product/templates/1mcp-config.yaml +0 -225
  105. package/.aios-core/scripts/context-detector.js +0 -226
  106. package/.aios-core/scripts/elicitation-engine.js +0 -385
  107. package/.aios-core/scripts/elicitation-session-manager.js +0 -300
  108. package/.claude/CLAUDE.md +0 -221
@@ -1,98 +1,98 @@
1
- // {{ComponentName}}.tsx
2
- // Generated by Atlas (Design System Builder)
3
- // Atomic level: {{atomic_level}}
4
- // Utility-first Tailwind, zero hardcoded values
5
-
6
- import * as React from 'react';
7
- import { Slot } from '@radix-ui/react-slot';
8
- import { cva, type VariantProps } from 'class-variance-authority';
9
- import { cn } from '{{UtilityImportPath}}';
10
- {{SpinnerImport}}
11
-
12
- /**
13
- * Variant catalogue generated from consolidated tokens.
14
- * Extend with additional groups (state, density, alignment) as needed.
15
- */
16
- export const {{componentName}}Variants = cva(
17
- '{{baseClasses}}',
18
- {
19
- variants: {
20
- variant: {
21
- {{VariantDefinitions}}
22
- },
23
- size: {
24
- {{SizeDefinitions}}
25
- }{{AdditionalVariantGroups}}
26
- },
27
- compoundVariants: [
28
- {{CompoundVariants}}
29
- ],
30
- defaultVariants: {
31
- variant: '{{DefaultVariant}}',
32
- size: '{{DefaultSize}}'{{DefaultVariantOverrides}}
33
- }
34
- }
35
- );
36
-
37
- export interface {{ComponentName}}Props
38
- extends React.{{ElementAttributes}}<{{ElementTag}}>,
39
- VariantProps<typeof {{componentName}}Variants> {
40
- /** Render as child element instead of the default tag */
41
- asChild?: boolean;
42
- /** Display loading UI and disable interactions */
43
- isLoading?: boolean;
44
- /** Optional custom loading indicator */
45
- loadingIcon?: React.ReactNode;
46
- {{AdditionalProps}}
47
- }
48
-
49
- /**
50
- * {{ComponentDescription}}
51
- *
52
- * @example
53
- * ```tsx
54
- * <{{ComponentName}} variant="{{DefaultVariant}}" size="{{DefaultSize}}">
55
- * {{ExampleContent}}
56
- * </{{ComponentName}}>
57
- * ```
58
- */
59
- export const {{ComponentName}} = React.forwardRef<{{ElementTag}}, {{ComponentName}}Props>(
60
- (
61
- {
62
- asChild = false,
63
- className,
64
- variant = '{{DefaultVariant}}',
65
- size = '{{DefaultSize}}',
66
- isLoading = false,
67
- loadingIcon,
68
- children,
69
- ...props
70
- },
71
- ref
72
- ) => {
73
- const Comp = asChild ? Slot : '{{HtmlElement}}';
74
-
75
- return (
76
- <Comp
77
- ref={ref}
78
- className={cn(
79
- {{componentName}}Variants({ variant, size }),
80
- isLoading && 'pointer-events-none opacity-70',
81
- className
82
- )}
83
- data-state={isLoading ? 'loading' : props['data-state']}
84
- {...props}
85
- >
86
- {isLoading &&
87
- (loadingIcon ?? (
88
- <{{SpinnerComponent}} className="mr-2 h-4 w-4 animate-spin" aria-hidden="true" />
89
- ))}
90
- <span className="inline-flex items-center gap-1">{{ChildWrapper}}</span>
91
- </Comp>
92
- );
93
- }
94
- );
95
-
96
- {{ComponentName}}.displayName = '{{ComponentName}}';
97
-
98
- export type {{ComponentName}}Variant = VariantProps<typeof {{componentName}}Variants>;
1
+ // {{ComponentName}}.tsx
2
+ // Generated by Atlas (Design System Builder)
3
+ // Atomic level: {{atomic_level}}
4
+ // Utility-first Tailwind, zero hardcoded values
5
+
6
+ import * as React from 'react';
7
+ import { Slot } from '@radix-ui/react-slot';
8
+ import { cva, type VariantProps } from 'class-variance-authority';
9
+ import { cn } from '{{UtilityImportPath}}';
10
+ {{SpinnerImport}}
11
+
12
+ /**
13
+ * Variant catalogue generated from consolidated tokens.
14
+ * Extend with additional groups (state, density, alignment) as needed.
15
+ */
16
+ export const {{componentName}}Variants = cva(
17
+ '{{baseClasses}}',
18
+ {
19
+ variants: {
20
+ variant: {
21
+ {{VariantDefinitions}}
22
+ },
23
+ size: {
24
+ {{SizeDefinitions}}
25
+ }{{AdditionalVariantGroups}}
26
+ },
27
+ compoundVariants: [
28
+ {{CompoundVariants}}
29
+ ],
30
+ defaultVariants: {
31
+ variant: '{{DefaultVariant}}',
32
+ size: '{{DefaultSize}}'{{DefaultVariantOverrides}}
33
+ }
34
+ }
35
+ );
36
+
37
+ export interface {{ComponentName}}Props
38
+ extends React.{{ElementAttributes}}<{{ElementTag}}>,
39
+ VariantProps<typeof {{componentName}}Variants> {
40
+ /** Render as child element instead of the default tag */
41
+ asChild?: boolean;
42
+ /** Display loading UI and disable interactions */
43
+ isLoading?: boolean;
44
+ /** Optional custom loading indicator */
45
+ loadingIcon?: React.ReactNode;
46
+ {{AdditionalProps}}
47
+ }
48
+
49
+ /**
50
+ * {{ComponentDescription}}
51
+ *
52
+ * @example
53
+ * ```tsx
54
+ * <{{ComponentName}} variant="{{DefaultVariant}}" size="{{DefaultSize}}">
55
+ * {{ExampleContent}}
56
+ * </{{ComponentName}}>
57
+ * ```
58
+ */
59
+ export const {{ComponentName}} = React.forwardRef<{{ElementTag}}, {{ComponentName}}Props>(
60
+ (
61
+ {
62
+ asChild = false,
63
+ className,
64
+ variant = '{{DefaultVariant}}',
65
+ size = '{{DefaultSize}}',
66
+ isLoading = false,
67
+ loadingIcon,
68
+ children,
69
+ ...props
70
+ },
71
+ ref
72
+ ) => {
73
+ const Comp = asChild ? Slot : '{{HtmlElement}}';
74
+
75
+ return (
76
+ <Comp
77
+ ref={ref}
78
+ className={cn(
79
+ {{componentName}}Variants({ variant, size }),
80
+ isLoading && 'pointer-events-none opacity-70',
81
+ className
82
+ )}
83
+ data-state={isLoading ? 'loading' : props['data-state']}
84
+ {...props}
85
+ >
86
+ {isLoading &&
87
+ (loadingIcon ?? (
88
+ <{{SpinnerComponent}} className="mr-2 h-4 w-4 animate-spin" aria-hidden="true" />
89
+ ))}
90
+ <span className="inline-flex items-center gap-1">{{ChildWrapper}}</span>
91
+ </Comp>
92
+ );
93
+ }
94
+ );
95
+
96
+ {{ComponentName}}.displayName = '{{ComponentName}}';
97
+
98
+ export type {{ComponentName}}Variant = VariantProps<typeof {{componentName}}Variants>;
@@ -1,241 +1,241 @@
1
- ---
2
- template_id: dbdr
3
- template_name: Database Decision Record
4
- version: 1.0
5
- variables:
6
- - name: number
7
- type: number
8
- required: true
9
- auto: next_dbdr_number
10
- - name: title
11
- type: string
12
- required: true
13
- prompt: "Title of the database decision:"
14
- - name: status
15
- type: choice
16
- required: true
17
- choices: [Proposed, Approved, Implemented, Rolled Back]
18
- default: Proposed
19
- - name: dbType
20
- type: choice
21
- required: true
22
- choices: [PostgreSQL, MySQL, MongoDB, SQLite, Supabase, Other]
23
- prompt: "Which database?"
24
- - name: owner
25
- type: string
26
- required: true
27
- prompt: "Who is the decision owner?"
28
- - name: context
29
- type: text
30
- required: true
31
- prompt: "What is the context and data problem?"
32
- - name: decision
33
- type: text
34
- required: true
35
- prompt: "What is the decision being made?"
36
- - name: migrationStrategy
37
- type: text
38
- required: true
39
- prompt: "What is the migration strategy?"
40
- - name: rollbackPlan
41
- type: text
42
- required: true
43
- prompt: "What is the rollback plan?"
44
- ---
45
-
46
- # DBDR {{padNumber number 3}}: {{title}}
47
-
48
- **Status:** {{status}}
49
- **Date:** {{formatDate now "YYYY-MM-DD"}}
50
- **Owner:** {{owner}}
51
- **Database:** {{dbType}}
52
-
53
- ---
54
-
55
- ## Context
56
-
57
- {{#if currentState}}
58
- ### Current State
59
- {{currentState}}
60
- {{/if}}
61
-
62
- ### Problem Statement
63
- {{context}}
64
-
65
- {{#if dataVolume}}
66
- ### Data Volume Considerations
67
- - **Current Size:** {{dataVolume.current}}
68
- - **Projected Growth:** {{dataVolume.projected}}
69
- - **Retention Policy:** {{dataVolume.retention}}
70
- {{/if}}
71
-
72
- ---
73
-
74
- ## Decision
75
-
76
- {{decision}}
77
-
78
- {{#if rationale}}
79
- ### Rationale
80
- {{rationale}}
81
- {{/if}}
82
-
83
- ---
84
-
85
- ## Schema Changes
86
-
87
- {{#if schemaChanges}}
88
- ### Tables Affected
89
-
90
- | Table | Change Type | Description |
91
- |-------|-------------|-------------|
92
- {{#each schemaChanges}}
93
- | `{{this.table}}` | {{this.changeType}} | {{this.description}} |
94
- {{/each}}
95
-
96
- ### SQL Migrations
97
-
98
- ```sql
99
- {{#each schemaChanges}}
100
- -- {{this.table}}: {{this.changeType}}
101
- {{this.sql}}
102
-
103
- {{/each}}
104
- ```
105
- {{else}}
106
- _No schema changes required._
107
- {{/if}}
108
-
109
- ---
110
-
111
- ## Migration Strategy
112
-
113
- ### Approach
114
- {{migrationStrategy}}
115
-
116
- {{#if migrationPhases}}
117
- ### Phases
118
-
119
- {{#each migrationPhases}}
120
- 1. **{{this.phase}}** ({{this.duration}})
121
- - {{this.description}}
122
- - Validation: {{this.validation}}
123
- {{/each}}
124
- {{/if}}
125
-
126
- {{#if dataMigrationScripts}}
127
- ### Data Migration Scripts
128
-
129
- ```sql
130
- {{dataMigrationScripts}}
131
- ```
132
- {{/if}}
133
-
134
- ---
135
-
136
- ## Performance Impact
137
-
138
- {{#if performanceMetrics}}
139
- ### Expected Impact
140
-
141
- | Metric | Before | After | Acceptable? |
142
- |--------|--------|-------|-------------|
143
- {{#each performanceMetrics}}
144
- | {{this.metric}} | {{this.before}} | {{this.after}} | {{this.acceptable}} |
145
- {{/each}}
146
- {{/if}}
147
-
148
- {{#if indexes}}
149
- ### Indexing Strategy
150
-
151
- {{#each indexes}}
152
- - `{{this.name}}` on `{{this.table}}({{this.columns}})` - {{this.reason}}
153
- {{/each}}
154
- {{else}}
155
- _No new indexes required._
156
- {{/if}}
157
-
158
- ---
159
-
160
- ## Rollback Plan
161
-
162
- ### Rollback Strategy
163
- {{rollbackPlan}}
164
-
165
- {{#if rollbackScripts}}
166
- ### Rollback Scripts
167
-
168
- ```sql
169
- {{rollbackScripts}}
170
- ```
171
- {{/if}}
172
-
173
- {{#if rollbackTriggers}}
174
- ### Rollback Triggers
175
-
176
- {{#each rollbackTriggers}}
177
- - **{{this.condition}}**: {{this.action}}
178
- {{/each}}
179
- {{/if}}
180
-
181
- ---
182
-
183
- ## Testing
184
-
185
- {{#if preMigrationTests}}
186
- ### Pre-Migration Testing
187
- {{#each preMigrationTests}}
188
- - [ ] {{this}}
189
- {{/each}}
190
- {{/if}}
191
-
192
- {{#if postMigrationValidation}}
193
- ### Post-Migration Validation
194
- {{#each postMigrationValidation}}
195
- - [ ] {{this}}
196
- {{/each}}
197
- {{/if}}
198
-
199
- ---
200
-
201
- ## Consequences
202
-
203
- {{#if positiveConsequences}}
204
- ### Positive
205
- {{#each positiveConsequences}}
206
- - ✅ {{this}}
207
- {{/each}}
208
- {{/if}}
209
-
210
- {{#if negativeConsequences}}
211
- ### Negative (Trade-offs)
212
- {{#each negativeConsequences}}
213
- - ⚠️ {{this}}
214
- {{/each}}
215
- {{else}}
216
- _No significant trade-offs identified._
217
- {{/if}}
218
-
219
- ---
220
-
221
- ## Related Decisions
222
-
223
- {{#if relatedDBDRs}}
224
- {{#each relatedDBDRs}}
225
- - [DBDR {{this.number}}](./dbdr-{{padNumber this.number 3}}.md): {{this.title}}
226
- {{/each}}
227
- {{else}}
228
- _No related decisions._
229
- {{/if}}
230
-
231
- {{#if relatedADRs}}
232
- ### Related ADRs
233
- {{#each relatedADRs}}
234
- - [ADR {{this.number}}](../adr/adr-{{padNumber this.number 3}}.md): {{this.title}}
235
- {{/each}}
236
- {{/if}}
237
-
238
- ---
239
-
240
- **Generated by:** AIOS Template Engine v2.0
241
- **Template Version:** dbdr-1.0
1
+ ---
2
+ template_id: dbdr
3
+ template_name: Database Decision Record
4
+ version: 1.0
5
+ variables:
6
+ - name: number
7
+ type: number
8
+ required: true
9
+ auto: next_dbdr_number
10
+ - name: title
11
+ type: string
12
+ required: true
13
+ prompt: "Title of the database decision:"
14
+ - name: status
15
+ type: choice
16
+ required: true
17
+ choices: [Proposed, Approved, Implemented, Rolled Back]
18
+ default: Proposed
19
+ - name: dbType
20
+ type: choice
21
+ required: true
22
+ choices: [PostgreSQL, MySQL, MongoDB, SQLite, Supabase, Other]
23
+ prompt: "Which database?"
24
+ - name: owner
25
+ type: string
26
+ required: true
27
+ prompt: "Who is the decision owner?"
28
+ - name: context
29
+ type: text
30
+ required: true
31
+ prompt: "What is the context and data problem?"
32
+ - name: decision
33
+ type: text
34
+ required: true
35
+ prompt: "What is the decision being made?"
36
+ - name: migrationStrategy
37
+ type: text
38
+ required: true
39
+ prompt: "What is the migration strategy?"
40
+ - name: rollbackPlan
41
+ type: text
42
+ required: true
43
+ prompt: "What is the rollback plan?"
44
+ ---
45
+
46
+ # DBDR {{padNumber number 3}}: {{title}}
47
+
48
+ **Status:** {{status}}
49
+ **Date:** {{formatDate now "YYYY-MM-DD"}}
50
+ **Owner:** {{owner}}
51
+ **Database:** {{dbType}}
52
+
53
+ ---
54
+
55
+ ## Context
56
+
57
+ {{#if currentState}}
58
+ ### Current State
59
+ {{currentState}}
60
+ {{/if}}
61
+
62
+ ### Problem Statement
63
+ {{context}}
64
+
65
+ {{#if dataVolume}}
66
+ ### Data Volume Considerations
67
+ - **Current Size:** {{dataVolume.current}}
68
+ - **Projected Growth:** {{dataVolume.projected}}
69
+ - **Retention Policy:** {{dataVolume.retention}}
70
+ {{/if}}
71
+
72
+ ---
73
+
74
+ ## Decision
75
+
76
+ {{decision}}
77
+
78
+ {{#if rationale}}
79
+ ### Rationale
80
+ {{rationale}}
81
+ {{/if}}
82
+
83
+ ---
84
+
85
+ ## Schema Changes
86
+
87
+ {{#if schemaChanges}}
88
+ ### Tables Affected
89
+
90
+ | Table | Change Type | Description |
91
+ |-------|-------------|-------------|
92
+ {{#each schemaChanges}}
93
+ | `{{this.table}}` | {{this.changeType}} | {{this.description}} |
94
+ {{/each}}
95
+
96
+ ### SQL Migrations
97
+
98
+ ```sql
99
+ {{#each schemaChanges}}
100
+ -- {{this.table}}: {{this.changeType}}
101
+ {{this.sql}}
102
+
103
+ {{/each}}
104
+ ```
105
+ {{else}}
106
+ _No schema changes required._
107
+ {{/if}}
108
+
109
+ ---
110
+
111
+ ## Migration Strategy
112
+
113
+ ### Approach
114
+ {{migrationStrategy}}
115
+
116
+ {{#if migrationPhases}}
117
+ ### Phases
118
+
119
+ {{#each migrationPhases}}
120
+ 1. **{{this.phase}}** ({{this.duration}})
121
+ - {{this.description}}
122
+ - Validation: {{this.validation}}
123
+ {{/each}}
124
+ {{/if}}
125
+
126
+ {{#if dataMigrationScripts}}
127
+ ### Data Migration Scripts
128
+
129
+ ```sql
130
+ {{dataMigrationScripts}}
131
+ ```
132
+ {{/if}}
133
+
134
+ ---
135
+
136
+ ## Performance Impact
137
+
138
+ {{#if performanceMetrics}}
139
+ ### Expected Impact
140
+
141
+ | Metric | Before | After | Acceptable? |
142
+ |--------|--------|-------|-------------|
143
+ {{#each performanceMetrics}}
144
+ | {{this.metric}} | {{this.before}} | {{this.after}} | {{this.acceptable}} |
145
+ {{/each}}
146
+ {{/if}}
147
+
148
+ {{#if indexes}}
149
+ ### Indexing Strategy
150
+
151
+ {{#each indexes}}
152
+ - `{{this.name}}` on `{{this.table}}({{this.columns}})` - {{this.reason}}
153
+ {{/each}}
154
+ {{else}}
155
+ _No new indexes required._
156
+ {{/if}}
157
+
158
+ ---
159
+
160
+ ## Rollback Plan
161
+
162
+ ### Rollback Strategy
163
+ {{rollbackPlan}}
164
+
165
+ {{#if rollbackScripts}}
166
+ ### Rollback Scripts
167
+
168
+ ```sql
169
+ {{rollbackScripts}}
170
+ ```
171
+ {{/if}}
172
+
173
+ {{#if rollbackTriggers}}
174
+ ### Rollback Triggers
175
+
176
+ {{#each rollbackTriggers}}
177
+ - **{{this.condition}}**: {{this.action}}
178
+ {{/each}}
179
+ {{/if}}
180
+
181
+ ---
182
+
183
+ ## Testing
184
+
185
+ {{#if preMigrationTests}}
186
+ ### Pre-Migration Testing
187
+ {{#each preMigrationTests}}
188
+ - [ ] {{this}}
189
+ {{/each}}
190
+ {{/if}}
191
+
192
+ {{#if postMigrationValidation}}
193
+ ### Post-Migration Validation
194
+ {{#each postMigrationValidation}}
195
+ - [ ] {{this}}
196
+ {{/each}}
197
+ {{/if}}
198
+
199
+ ---
200
+
201
+ ## Consequences
202
+
203
+ {{#if positiveConsequences}}
204
+ ### Positive
205
+ {{#each positiveConsequences}}
206
+ - ✅ {{this}}
207
+ {{/each}}
208
+ {{/if}}
209
+
210
+ {{#if negativeConsequences}}
211
+ ### Negative (Trade-offs)
212
+ {{#each negativeConsequences}}
213
+ - ⚠️ {{this}}
214
+ {{/each}}
215
+ {{else}}
216
+ _No significant trade-offs identified._
217
+ {{/if}}
218
+
219
+ ---
220
+
221
+ ## Related Decisions
222
+
223
+ {{#if relatedDBDRs}}
224
+ {{#each relatedDBDRs}}
225
+ - [DBDR {{this.number}}](./dbdr-{{padNumber this.number 3}}.md): {{this.title}}
226
+ {{/each}}
227
+ {{else}}
228
+ _No related decisions._
229
+ {{/if}}
230
+
231
+ {{#if relatedADRs}}
232
+ ### Related ADRs
233
+ {{#each relatedADRs}}
234
+ - [ADR {{this.number}}](../adr/adr-{{padNumber this.number 3}}.md): {{this.title}}
235
+ {{/each}}
236
+ {{/if}}
237
+
238
+ ---
239
+
240
+ **Generated by:** AIOS Template Engine v2.0
241
+ **Template Version:** dbdr-1.0