# Common Version Bump Scenarios

Real-world examples of version bumps with decision rationale.

## Scenario 1: Bug Fix After Testing

**User request:**
> "Fixed the memory leak in the search function"

**Analysis:**
- What changed: Bug fix
- Breaking changes: No
- New features: No
- **Decision: PATCH**

**Workflow:**
```
Current: 4.2.8
New: 4.2.9 (PATCH)

Steps:
1. Update all three files to 4.2.9
2. npm run build
3. git commit -m "Release v4.2.9: Fixed memory leak in search"
4. git tag v4.2.9 -m "Release v4.2.9: Fixed memory leak in search"
5. git push && git push --tags
6. gh release create v4.2.9 --title "v4.2.9" --notes "Fixed memory leak in search function"
```

## Scenario 2: New Feature Added

**User request:**
> "Added web search MCP integration"

**Analysis:**
- What changed: New feature (MCP integration)
- Breaking changes: No
- Backward compatible: Yes
- **Decision: MINOR**

**Workflow:**
```
Current: 4.2.8
New: 4.3.0 (MINOR - reset patch to 0)

Steps:
1. Update all three files to 4.3.0
2. npm run build
3. git commit -m "Release v4.3.0: Added web search MCP integration"
4. git tag v4.3.0 -m "Release v4.3.0: Added web search MCP integration"
5. git push && git push --tags
6. gh release create v4.3.0 --title "v4.3.0" --generate-notes
```

## Scenario 3: Database Schema Redesign

**User request:**
> "Rewrote storage layer, old data needs migration"

**Analysis:**
- What changed: Storage layer rewrite
- Breaking changes: Yes (requires migration)
- Backward compatible: No
- **Decision: MAJOR**

**Workflow:**
```
Current: 4.2.8
New: 5.0.0 (MAJOR - reset minor and patch to 0)

Steps:
1. Update all three files to 5.0.0
2. npm run build
3. git commit -m "Release v5.0.0: Storage layer redesign with migration required"
4. git tag v5.0.0 -m "Release v5.0.0: Storage layer redesign"
5. git push && git push --tags
6. gh release create v5.0.0 --title "v5.0.0" --notes "⚠️ Breaking change: Storage layer redesigned. Migration required."
```

## Scenario 4: Multiple Small Bug Fixes

**User request:**
> "Fixed three bugs: observer crash, viewer pagination, and date formatting"

**Analysis:**
- What changed: Multiple bug fixes
- Breaking changes: No
- New features: No
- **Decision: PATCH** (one patch covers all fixes)

**Workflow:**
```
Current: 4.2.8
New: 4.2.9 (PATCH)

Steps:
1. Update all three files to 4.2.9
2. npm run build
3. git commit -m "Release v4.2.9: Multiple bug fixes

- Fixed observer crash on empty content
- Fixed viewer pagination edge case
- Fixed date formatting in timeline"
4. git tag v4.2.9 -m "Release v4.2.9: Multiple bug fixes"
5. git push && git push --tags
6. gh release create v4.2.9 --title "v4.2.9" --generate-notes
```

## Scenario 5: Feature + Bug Fix

**User request:**
> "Added dark mode support and fixed the viewer crash bug"

**Analysis:**
- What changed: New feature + bug fix
- Breaking changes: No
- **Decision: MINOR** (feature trumps bug fix)

**Workflow:**
```
Current: 5.1.0
New: 5.2.0 (MINOR)

Steps:
1. Update all three files to 5.2.0
2. npm run build
3. git commit -m "Release v5.2.0: Dark mode support + bug fixes

Features:
- Added dark mode toggle to viewer UI

Bug fixes:
- Fixed viewer crash on empty database"
4. git tag v5.2.0 -m "Release v5.2.0: Dark mode support"
5. git push && git push --tags
6. gh release create v5.2.0 --title "v5.2.0" --generate-notes
```

## Scenario 6: Documentation Only

**User request:**
> "Updated README with new installation instructions"

**Analysis:**
- What changed: Documentation only
- Breaking changes: No
- Code changes: No
- **Decision: PATCH** (or skip version bump if no code changes)

**Workflow:**
```
Option 1: PATCH (if you want to tag doc improvements)
Current: 4.2.8
New: 4.2.9

Option 2: No version bump (documentation-only changes don't require versioning)
Just commit without bumping version
```

**Recommendation:** Skip version bump for documentation-only changes unless it's a significant documentation overhaul.

## Scenario 7: Configuration Change

**User request:**
> "Changed default observation count from 50 to 30"

**Analysis:**
- What changed: Default configuration
- Breaking changes: Yes (behavior changes)
- Users might notice different context size
- **Decision: MINOR or MAJOR** (ask user)

**Workflow:**
```
Ask user:
"This changes default behavior (context size). Users will see different results.
Is this:
- MINOR (acceptable behavior change): 4.2.8 → 4.3.0
- MAJOR (breaking change): 4.2.8 → 5.0.0

Which should I use?"
```

## Scenario 8: Dependency Update

**User request:**
> "Updated Claude SDK from 1.2.0 to 1.3.0"

**Analysis:**
- What changed: Dependency version
- Breaking changes: Depends on SDK changes
- **Decision: Ask user or check SDK changelog**

**Workflow:**
```
1. Check SDK changelog for breaking changes
2. If SDK has breaking changes → MAJOR
3. If SDK adds features → MINOR
4. If SDK only fixes bugs → PATCH

Typical: PATCH (unless SDK breaks compatibility)
```

## Decision Tree

```
Is there a breaking change?
├─ Yes → MAJOR (X.0.0)
└─ No
   ├─ Is there a new feature?
   │  ├─ Yes → MINOR (x.Y.0)
   │  └─ No
   │     ├─ Is there a bug fix?
   │     │  ├─ Yes → PATCH (x.y.Z)
   │     │  └─ No → Don't bump version (docs only, etc.)
   │     └─ Configuration change? → Ask user (MINOR or MAJOR)
   └─ Multiple changes? → Use highest level (MAJOR > MINOR > PATCH)
```
