aios-core
Version:
Synkra AIOS: AI-Orchestrated System for Full Stack Development - Core Framework
415 lines (315 loc) • 11.3 kB
Markdown
# Consolidate Patterns Using Intelligent Clustering
> Task ID: brad-consolidate-patterns
> Agent: Brad (Design System Architect)
> Version: 1.0.0
## Execution Modes
**Choose your execution mode:**
### 1. YOLO Mode - Fast, Autonomous (0-1 prompts)
- Autonomous decision making with logging
- Minimal user interaction
- **Best for:** Simple, deterministic tasks
### 2. Interactive Mode - Balanced, Educational (5-10 prompts) **[DEFAULT]**
- Explicit decision checkpoints
- Educational explanations
- **Best for:** Learning, complex decisions
### 3. Pre-Flight Planning - Comprehensive Upfront Planning
- Task analysis phase (identify all ambiguities)
- Zero ambiguity execution
- **Best for:** Ambiguous requirements, critical work
**Parameter:** `mode` (optional, default: `interactive`)
## Task Definition (AIOS Task Format V1.0)
```yaml
task: consolidatePatterns()
responsável: Aria (Visionary)
responsavel_type: Agente
atomic_layer: Strategy
**Entrada:**
- campo: task
tipo: string
origem: User Input
obrigatório: true
validação: Must be registered task
- campo: parameters
tipo: object
origem: User Input
obrigatório: false
validação: Valid task parameters
- campo: mode
tipo: string
origem: User Input
obrigatório: false
validação: yolo|interactive|pre-flight
**Saída:**
- campo: execution_result
tipo: object
destino: Memory
persistido: false
- campo: logs
tipo: array
destino: File (.ai/logs/*)
persistido: true
- campo: state
tipo: object
destino: State management
persistido: true
```
## Pre-Conditions
**Purpose:** Validate prerequisites BEFORE task execution (blocking)
**Checklist:**
```yaml
pre-conditions:
- [ ] Task is registered; required parameters provided; dependencies met
tipo: pre-condition
blocker: true
validação: |
Check task is registered; required parameters provided; dependencies met
error_message: "Pre-condition failed: Task is registered; required parameters provided; dependencies met"
```
## Post-Conditions
**Purpose:** Validate execution success AFTER task completes
**Checklist:**
```yaml
post-conditions:
- [ ] Task completed; exit code 0; expected outputs created
tipo: post-condition
blocker: true
validação: |
Verify task completed; exit code 0; expected outputs created
error_message: "Post-condition failed: Task completed; exit code 0; expected outputs created"
```
## Acceptance Criteria
**Purpose:** Definitive pass/fail criteria for task completion
**Checklist:**
```yaml
acceptance-criteria:
- [ ] Task completed as expected; side effects documented
tipo: acceptance-criterion
blocker: true
validação: |
Assert task completed as expected; side effects documented
error_message: "Acceptance criterion not met: Task completed as expected; side effects documented"
```
## Tools
**External/shared resources used by this task:**
- **Tool:** task-runner
- **Purpose:** Task execution and orchestration
- **Source:** .aios-core/core/task-runner.js
- **Tool:** logger
- **Purpose:** Execution logging and error tracking
- **Source:** .aios-core/utils/logger.js
## Scripts
**Agent-specific code for this task:**
- **Script:** execute-task.js
- **Purpose:** Generic task execution wrapper
- **Language:** JavaScript
- **Location:** .aios-core/scripts/execute-task.js
## Error Handling
**Strategy:** retry
**Common Errors:**
1. **Error:** Task Not Found
- **Cause:** Specified task not registered in system
- **Resolution:** Verify task name and registration
- **Recovery:** List available tasks, suggest similar
2. **Error:** Invalid Parameters
- **Cause:** Task parameters do not match expected schema
- **Resolution:** Validate parameters against task definition
- **Recovery:** Provide parameter template, reject execution
3. **Error:** Execution Timeout
- **Cause:** Task exceeds maximum execution time
- **Resolution:** Optimize task or increase timeout
- **Recovery:** Kill task, cleanup resources, log state
## Performance
**Expected Metrics:**
```yaml
duration_expected: 5-20 min (estimated)
cost_estimated: $0.003-0.015
token_usage: ~2,000-8,000 tokens
```
**Optimization Notes:**
- Iterative analysis with depth limits; cache intermediate results; batch similar operations
## Metadata
```yaml
story: N/A
version: 1.0.0
dependencies:
- N/A
tags:
- automation
- workflow
updated_at: 2025-11-17
```
## Description
Reduce UI pattern redundancy by clustering similar patterns using intelligent algorithms (HSL color clustering at 5% threshold, semantic button grouping). Target: >80% reduction.
## Prerequisites
- Audit completed (*audit command run successfully)
- .state.yaml exists with inventory results
- pattern-inventory.json available
## Workflow
### Interactive Elicitation
This task uses interactive elicitation to review consolidation decisions.
1. **Load Audit Results**
- Read .state.yaml to get inventory data
- Display current redundancy metrics
- Confirm user wants to proceed with consolidation
2. **Review Clustering Parameters**
- HSL threshold for colors (default: 5%)
- Ask if user has manual overrides (patterns that shouldn't merge)
- Confirm output directory
3. **Present Consolidation Recommendations**
- Show before/after for each pattern type
- Ask for approval or adjustments
- Allow manual overrides before finalizing
### Steps
1. **Load Audit Data**
- Read .state.yaml for inventory results
- Validate audit phase completed
- Extract pattern counts and scan path
- Validation: State file exists and contains inventory data
2. **Cluster Colors by HSL Similarity**
- Extract all unique colors from codebase
- Convert hex to HSL color space
- Group colors within 5% HSL threshold
- Select most-used color in each cluster as primary
- Identify semantic relationships (primary-dark as hover state)
- Validation: Color clusters created with usage counts
3. **Cluster Button Patterns by Semantic Purpose**
- Extract button class names and patterns
- Analyze naming for semantic meaning (primary, secondary, danger, etc)
- Group functionally equivalent buttons
- Recommend minimal variant set (primary, secondary, destructive)
- Validation: Button consolidation map created
4. **Consolidate Spacing Values**
- Extract all padding and margin values
- Identify base unit (4px or 8px)
- Propose spacing scale (xs, sm, md, lg, xl, 2xl, 3xl)
- Map existing values to scale
- Validation: Spacing scale generated
5. **Consolidate Typography**
- Extract font sizes, weights, families
- Propose type scale (modular scale or fixed intervals)
- Consolidate similar weights (merge 500 and 600 if both exist)
- Recommend minimal font family set
- Validation: Typography scale created
6. **Generate Consolidation Report**
- Create consolidation-report.md with before/after metrics
- Include reduction percentages for each pattern type
- Generate detailed cluster files (color-clusters.txt, button-consolidation.txt)
- Calculate overall reduction percentage
- Validation: Report shows >80% reduction or explain why not
7. **Create Pattern Mapping**
- Generate old-to-new mapping for each pattern type
- Document which old patterns map to which new tokens
- Create migration guide snippets
- Validation: Complete mapping for all patterns
8. **Update State File**
- Add consolidation section to .state.yaml
- Record before/after counts for all pattern types
- Update phase to "consolidation_complete"
- Log Brad's consolidation decisions
- Validation: State updated with consolidation data
## Output
- **consolidation-report.md**: Executive summary with reduction metrics
- **color-clusters.txt**: Detailed color groupings with usage counts
- **button-consolidation.txt**: Button semantic analysis and recommendations
- **spacing-consolidation.txt**: Spacing scale proposal
- **typography-consolidation.txt**: Typography scale proposal
- **pattern-mapping.json**: Old pattern → new token mappings
- **.state.yaml**: Updated with consolidation decisions
### Output Format
```yaml
# .state.yaml consolidation section
consolidation:
completed_at: "2025-10-27T12:30:00Z"
patterns_consolidated:
colors:
before: 89
after: 12
reduction: "86.5%"
clusters: 8
buttons:
before: 47
after: 3
reduction: "93.6%"
variants: ["primary", "secondary", "destructive"]
spacing:
before: 19
after: 7
reduction: "63.2%"
scale: ["xs", "sm", "md", "lg", "xl", "2xl", "3xl"]
typography:
before: 21
after: 10
reduction: "52.4%"
overall_reduction: "81.8%"
target_met: true
```
## Success Criteria
- [ ] >80% overall pattern reduction achieved
- [ ] Color clustering uses HSL similarity (not just hex distance)
- [ ] Button variants identified by semantic purpose
- [ ] Spacing scale based on consistent base unit
- [ ] Most-used patterns preserved as primary tokens
- [ ] All consolidation decisions documented with rationale
- [ ] User can review and override before finalizing
## Error Handling
- **No audit data found**: Exit with message to run *audit first
- **Insufficient patterns to consolidate**: Report that codebase is already clean
- **Cannot achieve 80% reduction**: Explain why and show actual reduction achieved
- **Invalid state file**: Attempt to recover from backup or prompt re-audit
## Security Considerations
- Read-only analysis of patterns (no code modification)
- Validate user overrides to prevent injection
- Handle malformed color values safely
- Backup state file before overwriting
## Examples
### Example 1: Successful Consolidation
```bash
```
Output:
```
🎨 CONSOLIDATING COLORS...
Found 89 unique colors
Clustering with 5% HSL threshold...
CLUSTER 1 - Primary Blues (4 → 1):
#0066CC (234 uses) <- KEEP
#0065CB, #0067CD, #0064CA (merge)
CLUSTER 2 - Error Reds (3 → 1):
#DC2626 (89 uses) <- KEEP
#DB2525, #DD2727 (merge)
📊 CONSOLIDATION SUMMARY:
| Pattern | Before | After | Reduction |
|------------|--------|-------|-----------|
| Colors | 89 | 12 | 86.5% |
| Buttons | 47 | 3 | 93.6% |
| Spacing | 19 | 7 | 63.2% |
| Typography | 21 | 10 | 52.4% |
| TOTAL | 176 | 32 | 81.8% |
✅ TARGET MET: >80% reduction achieved
✅ Report saved: outputs/design-system/my-app/consolidation/consolidation-report.md
```
### Example 2: User Override
```bash
Brad: "Merge #0066CC and #0052A3?"
User: "No, #0052A3 is intentional hover state"
Brad: "Override recorded. Keeping both."
```
## Notes
- HSL color space provides perceptual similarity (better than RGB/hex distance)
- Most-used pattern in each cluster becomes the canonical token
- Semantic button analysis looks for keywords: primary, main, secondary, default, danger, delete, destructive
- Spacing scale should use consistent base unit (4px or 8px)
- Manual overrides are respected and documented
- Run this after every audit to prevent pattern regression
- Brad says: "Numbers don't lie. 82% reduction = real savings."