aios-core 4.1.0 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/.aios-core/.session/current-session.json +14 -0
  2. package/.aios-core/core/registry/registry-schema.json +166 -166
  3. package/.aios-core/core/registry/service-registry.json +6585 -6585
  4. package/.aios-core/data/entity-registry.yaml +208 -8
  5. package/.aios-core/data/registry-update-log.jsonl +165 -0
  6. package/.aios-core/development/scripts/approval-workflow.js +642 -642
  7. package/.aios-core/development/scripts/backup-manager.js +606 -606
  8. package/.aios-core/development/scripts/branch-manager.js +389 -389
  9. package/.aios-core/development/scripts/code-quality-improver.js +1311 -1311
  10. package/.aios-core/development/scripts/commit-message-generator.js +849 -849
  11. package/.aios-core/development/scripts/conflict-resolver.js +674 -674
  12. package/.aios-core/development/scripts/dependency-analyzer.js +637 -637
  13. package/.aios-core/development/scripts/diff-generator.js +351 -351
  14. package/.aios-core/development/scripts/elicitation-engine.js +384 -384
  15. package/.aios-core/development/scripts/elicitation-session-manager.js +299 -299
  16. package/.aios-core/development/scripts/git-wrapper.js +461 -461
  17. package/.aios-core/development/scripts/manifest-preview.js +244 -244
  18. package/.aios-core/development/scripts/metrics-tracker.js +775 -775
  19. package/.aios-core/development/scripts/modification-validator.js +554 -554
  20. package/.aios-core/development/scripts/pattern-learner.js +1224 -1224
  21. package/.aios-core/development/scripts/performance-analyzer.js +757 -757
  22. package/.aios-core/development/scripts/refactoring-suggester.js +1138 -1138
  23. package/.aios-core/development/scripts/rollback-handler.js +530 -530
  24. package/.aios-core/development/scripts/security-checker.js +358 -358
  25. package/.aios-core/development/scripts/template-engine.js +239 -239
  26. package/.aios-core/development/scripts/template-validator.js +278 -278
  27. package/.aios-core/development/scripts/test-generator.js +843 -843
  28. package/.aios-core/development/scripts/transaction-manager.js +589 -589
  29. package/.aios-core/development/scripts/usage-tracker.js +673 -673
  30. package/.aios-core/development/scripts/validate-filenames.js +226 -226
  31. package/.aios-core/development/scripts/version-tracker.js +526 -526
  32. package/.aios-core/development/scripts/yaml-validator.js +396 -396
  33. package/.aios-core/development/tasks/validate-next-story.md +99 -2
  34. package/.aios-core/development/templates/service-template/README.md.hbs +158 -158
  35. package/.aios-core/development/templates/service-template/__tests__/index.test.ts.hbs +237 -237
  36. package/.aios-core/development/templates/service-template/client.ts.hbs +403 -403
  37. package/.aios-core/development/templates/service-template/errors.ts.hbs +182 -182
  38. package/.aios-core/development/templates/service-template/index.ts.hbs +120 -120
  39. package/.aios-core/development/templates/service-template/package.json.hbs +87 -87
  40. package/.aios-core/development/templates/service-template/types.ts.hbs +145 -145
  41. package/.aios-core/development/templates/squad-template/LICENSE +21 -21
  42. package/.aios-core/docs/SHARD-TRANSLATION-GUIDE.md +335 -0
  43. package/.aios-core/docs/component-creation-guide.md +458 -0
  44. package/.aios-core/docs/session-update-pattern.md +307 -0
  45. package/.aios-core/docs/standards/AIOS-FRAMEWORK-MASTER.md +1963 -0
  46. package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1-SUMMARY.md +1190 -0
  47. package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1.md +439 -0
  48. package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO.md +5398 -0
  49. package/.aios-core/docs/standards/V3-ARCHITECTURAL-DECISIONS.md +523 -0
  50. package/.aios-core/docs/template-syntax.md +267 -0
  51. package/.aios-core/docs/troubleshooting-guide.md +625 -0
  52. package/.aios-core/infrastructure/templates/aios-sync.yaml.template +193 -193
  53. package/.aios-core/infrastructure/templates/coderabbit.yaml.template +279 -279
  54. package/.aios-core/infrastructure/templates/github-workflows/ci.yml.template +169 -169
  55. package/.aios-core/infrastructure/templates/github-workflows/pr-automation.yml.template +330 -330
  56. package/.aios-core/infrastructure/templates/github-workflows/release.yml.template +196 -196
  57. package/.aios-core/infrastructure/templates/gitignore/gitignore-aios-base.tmpl +63 -63
  58. package/.aios-core/infrastructure/templates/gitignore/gitignore-brownfield-merge.tmpl +18 -18
  59. package/.aios-core/infrastructure/templates/gitignore/gitignore-node.tmpl +85 -85
  60. package/.aios-core/infrastructure/templates/gitignore/gitignore-python.tmpl +145 -145
  61. package/.aios-core/infrastructure/tests/utilities-audit-results.json +501 -0
  62. package/.aios-core/install-manifest.yaml +101 -101
  63. package/.aios-core/local-config.yaml.template +70 -70
  64. package/.aios-core/manifests/agents.csv +29 -0
  65. package/.aios-core/manifests/schema/manifest-schema.json +190 -190
  66. package/.aios-core/manifests/tasks.csv +198 -0
  67. package/.aios-core/manifests/workers.csv +204 -0
  68. package/.aios-core/monitor/hooks/lib/__init__.py +1 -1
  69. package/.aios-core/monitor/hooks/lib/enrich.py +58 -58
  70. package/.aios-core/monitor/hooks/lib/send_event.py +47 -47
  71. package/.aios-core/monitor/hooks/notification.py +29 -29
  72. package/.aios-core/monitor/hooks/post_tool_use.py +45 -45
  73. package/.aios-core/monitor/hooks/pre_compact.py +29 -29
  74. package/.aios-core/monitor/hooks/pre_tool_use.py +40 -40
  75. package/.aios-core/monitor/hooks/stop.py +29 -29
  76. package/.aios-core/monitor/hooks/subagent_stop.py +29 -29
  77. package/.aios-core/monitor/hooks/user_prompt_submit.py +38 -38
  78. package/.aios-core/product/templates/adr.hbs +125 -125
  79. package/.aios-core/product/templates/component-react-tmpl.tsx +98 -98
  80. package/.aios-core/product/templates/dbdr.hbs +241 -241
  81. package/.aios-core/product/templates/engine/schemas/adr.schema.json +102 -102
  82. package/.aios-core/product/templates/engine/schemas/dbdr.schema.json +205 -205
  83. package/.aios-core/product/templates/engine/schemas/epic.schema.json +175 -175
  84. package/.aios-core/product/templates/engine/schemas/pmdr.schema.json +175 -175
  85. package/.aios-core/product/templates/engine/schemas/prd-v2.schema.json +300 -300
  86. package/.aios-core/product/templates/engine/schemas/prd.schema.json +152 -152
  87. package/.aios-core/product/templates/engine/schemas/story.schema.json +222 -222
  88. package/.aios-core/product/templates/engine/schemas/task.schema.json +154 -154
  89. package/.aios-core/product/templates/epic.hbs +212 -212
  90. package/.aios-core/product/templates/eslintrc-security.json +32 -32
  91. package/.aios-core/product/templates/github-actions-cd.yml +212 -212
  92. package/.aios-core/product/templates/github-actions-ci.yml +172 -172
  93. package/.aios-core/product/templates/pmdr.hbs +186 -186
  94. package/.aios-core/product/templates/prd-v2.0.hbs +216 -216
  95. package/.aios-core/product/templates/prd.hbs +201 -201
  96. package/.aios-core/product/templates/shock-report-tmpl.html +502 -502
  97. package/.aios-core/product/templates/story.hbs +263 -263
  98. package/.aios-core/product/templates/task.hbs +170 -170
  99. package/.aios-core/product/templates/tmpl-comment-on-examples.sql +158 -158
  100. package/.aios-core/product/templates/tmpl-migration-script.sql +91 -91
  101. package/.aios-core/product/templates/tmpl-rls-granular-policies.sql +104 -104
  102. package/.aios-core/product/templates/tmpl-rls-kiss-policy.sql +10 -10
  103. package/.aios-core/product/templates/tmpl-rls-roles.sql +135 -135
  104. package/.aios-core/product/templates/tmpl-rls-simple.sql +77 -77
  105. package/.aios-core/product/templates/tmpl-rls-tenant.sql +152 -152
  106. package/.aios-core/product/templates/tmpl-rollback-script.sql +77 -77
  107. package/.aios-core/product/templates/tmpl-seed-data.sql +140 -140
  108. package/.aios-core/product/templates/tmpl-smoke-test.sql +16 -16
  109. package/.aios-core/product/templates/tmpl-staging-copy-merge.sql +139 -139
  110. package/.aios-core/product/templates/tmpl-stored-proc.sql +140 -140
  111. package/.aios-core/product/templates/tmpl-trigger.sql +152 -152
  112. package/.aios-core/product/templates/tmpl-view-materialized.sql +133 -133
  113. package/.aios-core/product/templates/tmpl-view.sql +177 -177
  114. package/.aios-core/product/templates/token-exports-css-tmpl.css +240 -240
  115. package/.aios-core/quality/schemas/quality-metrics.schema.json +233 -233
  116. package/.aios-core/scripts/migrate-framework-docs.sh +300 -300
  117. package/.aios-core/scripts/pm.sh +0 -0
  118. package/.claude/hooks/enforce-architecture-first.py +196 -196
  119. package/.claude/hooks/mind-clone-governance.py +192 -192
  120. package/.claude/hooks/read-protection.py +151 -151
  121. package/.claude/hooks/slug-validation.py +176 -176
  122. package/.claude/hooks/sql-governance.py +182 -182
  123. package/.claude/hooks/write-path-validation.py +194 -194
  124. package/.claude/rules/agent-authority.md +105 -0
  125. package/.claude/rules/coderabbit-integration.md +93 -0
  126. package/.claude/rules/ids-principles.md +112 -0
  127. package/.claude/rules/story-lifecycle.md +139 -0
  128. package/.claude/rules/workflow-execution.md +150 -0
  129. package/LICENSE +48 -48
  130. package/bin/aios-minimal.js +0 -0
  131. package/bin/aios.js +0 -0
  132. package/package.json +1 -1
  133. package/packages/aios-install/bin/aios-install.js +0 -0
  134. package/packages/aios-install/bin/edmcp.js +0 -0
  135. package/packages/aios-pro-cli/bin/aios-pro.js +0 -0
  136. package/packages/installer/src/wizard/pro-setup.js +433 -49
  137. package/scripts/check-markdown-links.py +352 -352
  138. package/scripts/code-intel-health-check.js +343 -0
  139. package/scripts/dashboard-parallel-dev.sh +0 -0
  140. package/scripts/dashboard-parallel-phase3.sh +0 -0
  141. package/scripts/dashboard-parallel-phase4.sh +0 -0
  142. package/scripts/glue/README.md +355 -0
  143. package/scripts/glue/compose-agent-prompt.cjs +362 -0
  144. package/scripts/install-monitor-hooks.sh +0 -0
  145. package/.aios-core/lib/build.json +0 -1
@@ -0,0 +1,523 @@
1
+ # V3.0 Architectural Decisions Summary
2
+
3
+ **Date:** 2025-11-13
4
+ **Version:** 3.0.0
5
+ **Status:** Standard
6
+ **Author:** Brad Frost Cognitive Clone
7
+
8
+ ---
9
+
10
+ ## DECISION A: Naming Conventions
11
+
12
+ ### JSON/JavaScript: camelCase
13
+
14
+ ```javascript
15
+ // ✅ CORRECT
16
+ {
17
+ adAnalysis: { ... },
18
+ formatConfig: { ... },
19
+ brandColors: { ... }
20
+ }
21
+
22
+ // ❌ WRONG
23
+ {
24
+ ad_analysis: { ... },
25
+ format-config: { ... }
26
+ }
27
+ ```
28
+
29
+ ### CSS: kebab-case
30
+
31
+ ```css
32
+ /* ✅ CORRECT */
33
+ .content-area { }
34
+ --content-padding-top: 50px;
35
+ --spacing-md: 200px;
36
+
37
+ /* ❌ WRONG */
38
+ .contentArea { }
39
+ --content_padding_top: 50px;
40
+ ```
41
+
42
+ ### Database: snake_case
43
+
44
+ ```sql
45
+ -- ✅ CORRECT
46
+ tasks.responsavel_type
47
+ workflow_executions.started_at
48
+
49
+ -- ❌ WRONG
50
+ tasks.responsavelType
51
+ workflow_executions.startedAt
52
+ ```
53
+
54
+ ### Filenames: kebab-case
55
+
56
+ ```
57
+ ✅ CORRECT: design-cta-component.md, analyze-ad-brief.md
58
+ ❌ WRONG: designCTAComponent.md, analyze_ad_brief.md
59
+ ```
60
+
61
+ ---
62
+
63
+ ## DECISION B: Phase Reorganization
64
+
65
+ ### v2.0 Structure (7 fases, confusing)
66
+
67
+ ```
68
+ FASE 0: Initialization & Configuration
69
+ FASE 1: Content Analysis & Planning
70
+ FASE 2: Content Creation
71
+ FASE 3: Component Design
72
+ FASE 4: Layout Composition
73
+ FASE 5: Visual Selection & Positioning
74
+ FASE 6: Rendering & Export
75
+ ```
76
+
77
+ ### v3.0 Structure (6 fases, Atomic Design aligned)
78
+
79
+ ```
80
+ FASE 0: Configuration & Initialization (Setup)
81
+ Steps: 0, 1, 2, 12
82
+
83
+ FASE 1: Content Planning (Strategy)
84
+ Steps: 3, 4, 5, 6
85
+
86
+ FASE 2: Atoms Creation (Base Components)
87
+ Steps: 7a, 7b, 7c
88
+
89
+ FASE 3: Molecules & Organisms (Composition)
90
+ Steps: 8a, 8b, 8c
91
+
92
+ FASE 4: Media & Layout (Assets & Positioning)
93
+ Steps: 9, 10, 11
94
+
95
+ FASE 5: Template & Page (Rendering)
96
+ Steps: 13a, 13b, 14
97
+ ```
98
+
99
+ **Rationale:** Each phase maps to Atomic Design layer or functional stage.
100
+
101
+ ---
102
+
103
+ ## DECISION C: Step Renumbering
104
+
105
+ ### v2.0 → v3.0 Mapping
106
+
107
+ | v2.0 | v3.0 | Name | Breaking? |
108
+ |------|------|------|-----------|
109
+ | 0 | 0 | Initialize Orchestrator | ❌ No |
110
+ | 1 | 1 | Load Format Configuration | ❌ No |
111
+ | 2 | 2 | Load Brand Configuration | ❌ No |
112
+ | 3 | 3 | Analyze Brief | ❌ No |
113
+ | 4 | 4 | Select Ad Template | ❌ No |
114
+ | 5 | 5 | Craft Ad Copy | ❌ No |
115
+ | 6 | 6 | Apply Typography | ❌ No |
116
+ | **7** | **7a, 7b, 7c** | **Design CTA, Badge, Validate** | ✅ **YES** |
117
+ | **8** | **8a, 8b, 8c** | **Text Group, Action Group, Content Area** | ✅ **YES** |
118
+ | 9 | 9 | Select Image | ❌ No |
119
+ | 10 | 10 | Detect Faces | ❌ No |
120
+ | 11 | 11 | Determine Optimal Positioning | ❌ No |
121
+ | **12** | **12** | **Load Design Tokens (moved to FASE 0)** | ⚠️ **Phase change** |
122
+ | **13** | **13a, 13b** | **Inject CSS, Render HTML** | ✅ **YES** |
123
+ | 14 | 14 | Export to PNG | ❌ No |
124
+
125
+ **Total: 14 steps → 19 steps** (more granular, more testable)
126
+
127
+ ---
128
+
129
+ ## DECISION D: Executor Mapping per Step
130
+
131
+ | Step | Task | Executor | Conditional? | Rationale |
132
+ |------|------|----------|--------------|-----------|
133
+ | 0 | Initialize | **Worker** | ❌ No | Deterministic validation |
134
+ | 1 | Load Format | **Worker** | ❌ No | File read + calculation |
135
+ | 2 | Load Brand | **Worker** | ❌ No | File read + validation |
136
+ | 3 | Analyze Brief | **Agente** / **Worker** | ✅ Yes (ready_copy) | AI if full gen, skip if ready_copy |
137
+ | 4 | Select Template | **Agente** / **Worker** | ✅ Yes (template_id) | AI if not specified, skip if provided |
138
+ | 5 | Craft Copy | **Agente** / **Worker** | ✅ Yes (ready_copy) | AI if full gen, passthrough if ready_copy |
139
+ | 6 | Apply Typography | **Agente** | ❌ No | AI decides transformations |
140
+ | 7a | Design CTA | **Agente** / **Worker** | ✅ Yes (ready_copy) | AI if full gen, defaults if ready_copy |
141
+ | 7b | Design Badge | **Agente** / **Worker** | ✅ Yes (urgency) | AI if high urgency, skip if low |
142
+ | 7c | Validate Components | **Clone** | ❌ No | Brad Frost validates Atomic Design |
143
+ | 8a | Compose Text Group | **Agente** | ❌ No | AI groups atoms into molecule |
144
+ | 8b | Compose Action Group | **Agente** | ⚠️ Optional | Only if badge exists |
145
+ | 8c | Compose Content Area | **Agente** | ❌ No | AI composes organism |
146
+ | 9 | Select Image | **Agente** | ❌ No | AI semantic search |
147
+ | 10 | Detect Faces | **Agente** | ❌ No | External AI API (Gemini Vision) |
148
+ | 11 | Determine Positioning | **Agente** / **Worker** | ✅ Yes (faces?) | AI if complex, heuristics if simple |
149
+ | 12 | Load Design Tokens | **Worker** | ❌ No | Parse CSS file |
150
+ | 13a | Inject CSS Variables | **Worker** | ❌ No | Template injection |
151
+ | 13b | Render HTML | **Worker** | ❌ No | Handlebars compilation |
152
+ | 14 | Export PNG | **Worker** | ❌ No | Puppeteer screenshot |
153
+
154
+ **Conditional Logic Summary:**
155
+
156
+ ```yaml
157
+ Step 3 (Analyze Brief):
158
+ if ready_copy=true: Worker (skip AI)
159
+ else: Agente (AI analysis)
160
+
161
+ Step 4 (Select Template):
162
+ if template_id provided: Worker (use provided)
163
+ else if ready_copy=true: Agente (AI with ready_copy context)
164
+ else: Agente (AI with brief analysis)
165
+
166
+ Step 5 (Craft Copy):
167
+ if ready_copy=true: Worker (passthrough)
168
+ else: Agente (AI generation)
169
+
170
+ Step 7a (Design CTA):
171
+ if ready_copy=true: Worker (brand colors)
172
+ else: Agente (AI design)
173
+
174
+ Step 7b (Design Badge):
175
+ if urgencyLevel=high: Agente (design badge)
176
+ else: skip (no badge)
177
+
178
+ Step 11 (Positioning):
179
+ if faces.length > 0: Agente (complex positioning)
180
+ else: Worker (default spacing)
181
+ ```
182
+
183
+ ---
184
+
185
+ ## DECISION E: Separation of Concerns Fixes
186
+
187
+ ### Fix 1: Step 7 → 7a, 7b, 7c
188
+
189
+ **Problem:** Step 7 does THREE things (design CTA + design badge + validate)
190
+
191
+ **Solution:**
192
+
193
+ ```
194
+ Step 7a: Design CTA Component (Atom)
195
+ responsavel_type: Agente | Worker
196
+ atomic_layer: Atom
197
+ output: ctaComponent { text, style, colors }
198
+
199
+ Step 7b: Design Badge Component (Atom)
200
+ responsavel_type: Agente | Worker
201
+ atomic_layer: Atom
202
+ output: badgeComponent { text, style, colors } | null
203
+
204
+ Step 7c: Validate Components (Post-condition)
205
+ responsavel_type: Clone (Brad Frost)
206
+ atomic_layer: Atom
207
+ output: validation_result { valid, violations }
208
+ ```
209
+
210
+ ---
211
+
212
+ ### Fix 2: Step 8 → 8a, 8b, 8c
213
+
214
+ **Problem:** Step 8 skips Molecule layer and conflates Organism + Positioning
215
+
216
+ **Solution:**
217
+
218
+ ```
219
+ Step 8a: Compose Text Group (Molecule)
220
+ responsavel_type: Agente
221
+ atomic_layer: Molecule
222
+ input: typography.title, typography.body, ctaComponent
223
+ output: textGroupMolecule { title, body, cta }
224
+
225
+ Step 8b: Compose Action Group (Molecule) (optional)
226
+ responsavel_type: Agente
227
+ atomic_layer: Molecule
228
+ input: ctaComponent, badgeComponent
229
+ output: actionGroupMolecule { cta, badge }
230
+ skippable_when: [badgeComponent=null]
231
+
232
+ Step 8c: Compose Content Area (Organism)
233
+ responsavel_type: Agente
234
+ atomic_layer: Organism
235
+ input: textGroupMolecule, actionGroupMolecule, imageUrl, brand
236
+ output: contentAreaOrganism { structure, alignment }
237
+ # NO positioning data!
238
+ ```
239
+
240
+ ---
241
+
242
+ ### Fix 3: Step 13 → 13a, 13b
243
+
244
+ **Problem:** Step 13 does THREE things (inject CSS + render HTML + populate)
245
+
246
+ **Solution:**
247
+
248
+ ```
249
+ Step 13a: Inject CSS Variables
250
+ responsavel_type: Worker
251
+ atomic_layer: Template
252
+ input: positioning, designTokens, formatConfig
253
+ output: cssVars object
254
+
255
+ Step 13b: Render HTML Template
256
+ responsavel_type: Worker
257
+ atomic_layer: Template
258
+ input: templateId, cssVars, contentAreaOrganism, adSpec
259
+ output: htmlContent (final HTML string)
260
+ # Handlebars compilation includes population
261
+ ```
262
+
263
+ ---
264
+
265
+ ## DECISION F: Parallelization Opportunities
266
+
267
+ ### Parallel Group 1: Configuration (Steps 1 + 2)
268
+
269
+ ```javascript
270
+ const [formatConfig, brand] = await Promise.all([
271
+ loadFormatConfig(format_id), // Step 1
272
+ loadBrand(brand_id) // Step 2
273
+ ]);
274
+ ```
275
+
276
+ **Savings:** ~100ms
277
+
278
+ ---
279
+
280
+ ### Parallel Group 2: Template + Image (Steps 4 + 9)
281
+
282
+ ```javascript
283
+ // After Step 5 (Craft Copy)
284
+ const [selectedTemplate, visualPlan] = await Promise.all([
285
+ selectTemplate(adAnalysis, brand), // Step 4
286
+ selectImage(adAnalysis, adCopy) // Step 9
287
+ ]);
288
+ ```
289
+
290
+ **Savings:** ~2-3 seconds
291
+
292
+ ---
293
+
294
+ ### Parallel Group 3: CTA + Badge (Steps 7a + 7b)
295
+
296
+ ```javascript
297
+ const [ctaComponent, badgeComponent] = await Promise.all([
298
+ designCTAComponent(typography.cta, brand), // Step 7a
299
+ urgencyLevel === 'high'
300
+ ? designBadgeComponent(adAnalysis, brand) // Step 7b
301
+ : Promise.resolve(null)
302
+ ]);
303
+ ```
304
+
305
+ **Savings:** ~1-2 seconds (if both run)
306
+
307
+ ---
308
+
309
+ ### Parallel Group 4: Positioning + Tokens (Steps 11 + 12)
310
+
311
+ **BETTER:** Move Step 12 EARLIER (after Step 1) and cache globally
312
+
313
+ ```javascript
314
+ // Step 1 completion → immediately load tokens
315
+ const formatConfig = await loadFormatConfig(format_id);
316
+ const designTokens = await loadDesignTokens(formatConfig); // Cache!
317
+
318
+ // Later, Step 11 runs alone (no parallelization needed)
319
+ ```
320
+
321
+ **Savings:** ~500ms (one-time load, cached for all subsequent ads)
322
+
323
+ ---
324
+
325
+ ### Total Parallelization Savings
326
+
327
+ - Group 1: ~100ms
328
+ - Group 2: ~2500ms
329
+ - Group 3: ~1500ms (conditional)
330
+ - Group 4: ~500ms (via caching)
331
+
332
+ **Total: ~4.6 seconds (30-40% faster)**
333
+
334
+ ---
335
+
336
+ ## DECISION G: Error Handling Strategy
337
+
338
+ ### Strategy 1: Retry (Transient Errors)
339
+
340
+ ```yaml
341
+ **Error Handling:**
342
+ - strategy: retry
343
+ - retry:
344
+ max_attempts: 3
345
+ backoff: exponential
346
+ backoff_ms: 1000 # 1s, 2s, 4s
347
+ - abort_workflow: false
348
+ - notification: log
349
+
350
+ # Use for: API timeouts, rate limits, network errors
351
+ ```
352
+
353
+ ---
354
+
355
+ ### Strategy 2: Fallback (Recoverable Errors)
356
+
357
+ ```yaml
358
+ **Error Handling:**
359
+ - strategy: fallback
360
+ - fallback: Use default value or skip step
361
+ - retry:
362
+ max_attempts: 1
363
+ backoff: linear
364
+ backoff_ms: 0
365
+ - abort_workflow: false
366
+ - notification: log + warning
367
+
368
+ # Use for: AI failures, optional steps, non-critical tasks
369
+ ```
370
+
371
+ ---
372
+
373
+ ### Strategy 3: Abort (Critical Errors)
374
+
375
+ ```yaml
376
+ **Error Handling:**
377
+ - strategy: abort
378
+ - retry:
379
+ max_attempts: 2
380
+ backoff: linear
381
+ backoff_ms: 500
382
+ - abort_workflow: true
383
+ - notification: log + email + slack
384
+
385
+ # Use for: Missing config, invalid brand_id, template not found
386
+ ```
387
+
388
+ ---
389
+
390
+ ### Error Strategy per Step
391
+
392
+ | Step | Strategy | Fallback/Retry | Abort Workflow? |
393
+ |------|----------|----------------|-----------------|
394
+ | 0 | abort | Retry 2x | ✅ Yes |
395
+ | 1 | abort | Retry 2x | ✅ Yes |
396
+ | 2 | abort | Retry 2x | ✅ Yes |
397
+ | 3 | fallback | Use ready_copy or defaults | ❌ No |
398
+ | 4 | fallback | Use default template | ❌ No |
399
+ | 5 | fallback | Use ready_copy | ❌ No |
400
+ | 6 | retry | Retry 3x | ❌ No |
401
+ | 7a | fallback | Use brand colors | ❌ No |
402
+ | 7b | skip | N/A (optional) | ❌ No |
403
+ | 7c | abort | Retry 1x | ✅ Yes (validation critical) |
404
+ | 8a-8c | retry | Retry 3x | ❌ No |
405
+ | 9 | fallback | Use placeholder image | ❌ No |
406
+ | 10 | retry | Retry 3x | ❌ No |
407
+ | 11 | fallback | Use default spacing | ❌ No |
408
+ | 12 | abort | Retry 2x | ✅ Yes |
409
+ | 13a-13b | abort | Retry 2x | ✅ Yes |
410
+ | 14 | abort | Retry 2x | ✅ Yes |
411
+
412
+ ---
413
+
414
+ ## DECISION H: Performance Optimization
415
+
416
+ ### Cache Strategy
417
+
418
+ | Item | Cache Key | TTL | Rationale |
419
+ |------|-----------|-----|-----------|
420
+ | Format Config | `format_${format_id}_${orientation}` | Infinite | Never changes |
421
+ | Brand Config | `brand_${brand_id}` | 1 hour | Might update |
422
+ | Design Tokens | `tokens_${format_id}` | Infinite | Per format, static |
423
+ | Templates | `template_${template_id}_v${version}` | Infinite | Versioned |
424
+
425
+ ### Early Exit Strategy
426
+
427
+ | Step | Skippable When | Savings |
428
+ |------|----------------|---------|
429
+ | 3 | `ready_copy=true` | ~4s, $0.0025 |
430
+ | 4 | `template_id` provided | ~3s, $0.0003 |
431
+ | 5 | `ready_copy=true` | ~5s, $0.005 |
432
+ | 7a | `ready_copy=true` | ~2s, $0.003 |
433
+ | 7b | `urgencyLevel!='high'` | ~2s, $0.003 |
434
+ | 11 | `faces.length=0` (potential) | ~1s, $0.001 |
435
+
436
+ **Ready Copy Mode Total Savings:** ~16s, $0.0145 per ad
437
+
438
+ ---
439
+
440
+ ## DECISION I: Molecule Layer Addition
441
+
442
+ ### NEW: Step 8a (Text Group Molecule)
443
+
444
+ ```yaml
445
+ #### Step 8a: Compose Text Group (Molecule)
446
+
447
+ task: composeTextGroup()
448
+ responsável: Layout Composer
449
+ responsavel_type: Agente
450
+ atomic_layer: Molecule
451
+
452
+ **Entrada:**
453
+ - campo: typography
454
+ tipo: object { title, body, cta }
455
+ origem: Step 6
456
+ obrigatório: true
457
+
458
+ **Saída:**
459
+ - campo: textGroupMolecule
460
+ tipo: object { title, body, cta, groupType: "vertical_stack" }
461
+ destino: Step 8c
462
+ persistido: true
463
+
464
+ **Rationale:** Text group is reusable across templates. Different templates (hero-overlay, split-screen, minimal) can use SAME text group molecule.
465
+ ```
466
+
467
+ ---
468
+
469
+ ### NEW: Step 8b (Action Group Molecule)
470
+
471
+ ```yaml
472
+ #### Step 8b: Compose Action Group (Molecule)
473
+
474
+ task: composeActionGroup()
475
+ responsável: Layout Composer
476
+ responsavel_type: Agente
477
+ atomic_layer: Molecule
478
+
479
+ **Entrada:**
480
+ - campo: ctaComponent
481
+ tipo: object { text, style, colors }
482
+ origem: Step 7a
483
+ obrigatório: true
484
+
485
+ - campo: badgeComponent
486
+ tipo: object { text, style, colors } | null
487
+ origem: Step 7b
488
+ obrigatório: false
489
+
490
+ **Saída:**
491
+ - campo: actionGroupMolecule
492
+ tipo: object { cta, badge, groupType: "stacked_with_badge" | "cta_only" }
493
+ destino: Step 8c
494
+ persistido: true
495
+
496
+ **Skippable When:** badgeComponent=null (optional molecule)
497
+
498
+ **Rationale:** Action group (CTA + optional Badge) is a common pattern across ad templates.
499
+ ```
500
+
501
+ ---
502
+
503
+ ## Summary: v3.0 vs v2.0
504
+
505
+ | Aspect | v2.0 | v3.0 | Improvement |
506
+ |--------|------|------|-------------|
507
+ | **Steps** | 14 | 19 | +35% granularity |
508
+ | **Atomic Design Layers** | Implicit | Explicit | +100% clarity |
509
+ | **Executor Types Defined** | 0% | 100% | All steps typed |
510
+ | **Checklists Structured** | 0% | 100% | Pre/post/acceptance |
511
+ | **Molecule Layer** | Missing | Added | +Reusability |
512
+ | **Parallelization** | 0 groups | 4 groups | ~4.6s savings |
513
+ | **Error Handling** | Implicit | Explicit | +Robustness |
514
+ | **Performance Tracking** | Missing | Complete | +Observability |
515
+ | **Naming Consistency** | 5/10 | 10/10 | +Clarity |
516
+ | **Testability** | 4/10 | 9/10 | +Isolation |
517
+
518
+ ---
519
+
520
+ **END OF V3 ARCHITECTURAL DECISIONS**
521
+
522
+ **Next:** Generate WORKFLOW-COMPLETE-CONSOLIDATED-V3.md
523
+