# Impact Analysis Template

Use this template before making changes to document what will be affected. Impact analysis prevents accidental regressions by forcing explicit consideration of downstream effects.

## How to Use

1. Complete this analysis before implementing changes
2. Review against invariants and golden examples
3. Get sign-off if impact is significant
4. Store with the change (commit message, PR description, or dedicated file)

## Template

```markdown
# Impact Analysis: [Brief description of change]

**Date:** YYYY-MM-DD
**Proposed By:** [Who]

## What Will Change

[Specific, observable differences after the change]

- [Change 1]
- [Change 2]

## What Could Degrade

[Potential negative effects - be honest about risks]

- [Risk 1]: [Likelihood and severity]
- [Risk 2]: [Likelihood and severity]

## Invariants Affected

| Invariant | Status | Notes |
|-----------|--------|-------|
| [Invariant text] | preserved / violated / modified | [Explanation] |

## Golden Examples Affected

| Example | Status | Notes |
|---------|--------|-------|
| [Example name] | passes / fails / needs update | [Explanation] |

## Recommendation

[ ] Proceed - changes are safe
[ ] Proceed with monitoring - watch for [specific signals]
[ ] Defer - needs [what's missing]
[ ] Reject - violates [what constraint]

**Rationale:** [Why this recommendation]
```

## Field Definitions

**What Will Change**: Observable differences. Focus on behavior, not implementation. Users should be able to notice these changes.

**What Could Degrade**: Honest risk assessment. Include low-probability high-impact risks. "Nothing could go wrong" is almost never true.

**Invariants Affected**: Check each documented invariant. "Preserved" means behavior unchanged. "Modified" means the invariant itself needs updating (rare and significant).

**Golden Examples Affected**: Run each golden example mentally or actually. "Needs update" means the example is wrong, not the change.

**Recommendation**: Clear action with justification. Defer and Reject are valid outcomes - not every change should proceed.

## Example: Filled-in Template

```markdown
# Impact Analysis: Add caching to skill-architect subagent spawn

**Date:** 2026-01-20
**Proposed By:** Developer

## What Will Change

- Subagent instructions cached for 5 minutes after first read
- Subsequent skill creations in same session use cached instructions
- Cache invalidated on any file change in skill-architect directory

## What Could Degrade

- Stale instructions if files change during session: Low likelihood, medium severity
- Memory usage from cache: Low likelihood, low severity
- Debugging difficulty if cache behavior unexpected: Medium likelihood, low severity

## Invariants Affected

| Invariant | Status | Notes |
|-----------|--------|-------|
| Always uses subagent for creation work | preserved | Cache is for instructions, not execution |
| Never creates files without reading existing patterns | preserved | Patterns still read, just cached |
| Always runs description-architect for frontmatter | preserved | Unaffected |

## Golden Examples Affected

| Example | Status | Notes |
|---------|--------|-------|
| Simple skill creation | passes | Behavior identical, just faster on repeat |
| Error handling | passes | Errors still propagate correctly |

## Recommendation

[x] Proceed with monitoring - watch for stale instruction complaints

**Rationale:** Performance improvement with low risk. Cache invalidation on file change handles the main failure mode. Monitor for user reports of unexpected behavior in first week.
```

## When to Create Impact Analysis

**Always create for:**
- Changes to documented invariants
- Changes affecting multiple tools
- Performance optimizations (often have subtle behavior changes)
- Removing or deprecating features

**Consider creating for:**
- Adding new features (may affect existing behavior)
- Refactoring (should be behavior-preserving but verify)
- Dependency updates

**Skip for:**
- Documentation-only changes
- Adding tests without behavior changes
- Fixing bugs to match documented behavior

## Using Impact Analysis Results

- **Proceed**: Implement, commit, done
- **Proceed with monitoring**: Implement, set reminder to check signals, document what to watch
- **Defer**: Document what's needed, create task to revisit
- **Reject**: Document in decision record why this change was rejected
