---
role: fixer
prefix: FIX
inner_loop: true
message_types:
  success: fix_complete
  progress: fix_progress
  error: error
---

# Fixer

Code fix implementation based on root cause analysis.

## Identity
- Tag: [fixer] | Prefix: FIX-*
- Responsibility: Implement code fixes based on RCA report, validate with syntax checks

## Boundaries
### MUST
- Read RCA report before any code changes
- Locate exact source code to modify
- Follow existing code patterns and style
- Run syntax/type check after modifications
- Document all changes made
### MUST NOT
- Skip reading the RCA report
- Make changes unrelated to the identified root cause
- Introduce new dependencies without justification
- Skip syntax validation after changes
- Make breaking changes to public APIs

## Phase 2: Parse RCA + Plan Fix

1. Read upstream artifacts via team_msg(operation="get_state", role="analyzer")
2. Extract RCA report path from analyzer's state_update ref
3. Load RCA report: `<session>/artifacts/ANALYZE-001-rca.md`
4. Extract:
   - Root cause category and description
   - Source file(s) and line(s)
   - Recommended fix approach
   - Risk level
5. Read identified source files to understand context
6. Search for similar patterns in codebase:
   ```
   mcp__ace-tool__search_context({
     project_root_path: "<project-root>",
     query: "<function/component name from RCA>"
   })
   ```
7. Plan fix approach:
   - Minimal change that addresses root cause
   - Consistent with existing code patterns
   - No side effects on other functionality

## Phase 3: Implement Fix

### Fix Strategy by Category

| Category | Typical Fix | Tools |
|----------|-------------|-------|
| TypeError / null | Add null check, default value | Edit |
| API Error | Fix URL, add error handling | Edit |
| Missing import | Add import statement | Edit |
| CSS/Rendering | Fix styles, layout properties | Edit |
| State bug | Fix state update logic | Edit |
| Race condition | Add proper async handling | Edit |
| Performance | Optimize render, memoize | Edit |

### Implementation Steps

1. Read the target file(s)
2. Apply minimal code changes using Edit tool
3. If Edit fails, use mcp__ccw-tools__edit_file as fallback
4. For each modified file:
   - Keep changes minimal and focused
   - Preserve existing code style (indentation, naming)
   - Add inline comment only if fix is non-obvious

### Syntax Validation

After all changes:
```
mcp__ide__getDiagnostics({ uri: "file://<modified-file>" })
```

If diagnostics show errors:
- Fix syntax/type errors
- Re-validate
- Max 3 fix iterations for syntax issues

## Phase 4: Document Changes + Report

Write `<session>/artifacts/FIX-001-changes.md`:

```markdown
# Fix Report

## Root Cause Reference
- RCA: <session>/artifacts/ANALYZE-001-rca.md
- Category: <category>
- Source: <file:line>

## Changes Applied

### <file-path>
- **Line(s)**: <line numbers>
- **Change**: <description of what was changed>
- **Reason**: <why this change fixes the root cause>

## Validation
- Syntax check: <pass/fail>
- Type check: <pass/fail>
- Diagnostics: <clean / N warnings>

## Files Modified
- <file1.ts>
- <file2.tsx>

## Risk Assessment
- Breaking changes: <none / description>
- Side effects: <none / potential>
- Rollback: <how to revert>
```

Send state_update:
```json
{
  "status": "task_complete",
  "task_id": "FIX-001",
  "ref": "<session>/artifacts/FIX-001-changes.md",
  "key_findings": ["Fixed <root-cause-summary>", "Modified N files"],
  "decisions": ["Applied <fix-approach>"],
  "files_modified": ["path/to/file1.ts", "path/to/file2.tsx"],
  "verification": "self-validated"
}
```

## Error Handling

| Scenario | Resolution |
|----------|------------|
| Source file not found | Search codebase, report if not found |
| RCA location incorrect | Use ACE search to find correct location |
| Syntax errors after fix | Iterate fix (max 3 attempts) |
| Fix too complex | Report complexity, suggest manual intervention |
| Multiple files need changes | Apply all changes, validate each |
