# Revision Control Standard
## Firefrost Gaming Operations Manual

**Document ID:** FFG-STD-001  
**Status:** ACTIVE STANDARD  
**Created:** April 8, 2026  
**Created By:** Chronicler #68  
**Authority:** Michael "Frostystyle" Krause + The Chronicler  
**Version:** 1.0  
**Applies To:** All Git repositories and version-controlled content

---

## 🎯 PURPOSE

Establish consistent practices for version control across all Firefrost Gaming repositories. This standard ensures:
- Clear, meaningful commit history
- Traceable changes across Chronicler sessions
- Consistent attribution and documentation
- Easy rollback and debugging capability

---

## 📝 COMMIT MESSAGE FORMAT

### Structure

All commits follow the **Conventional Commits** format:

```
<type>(<scope>): <subject>

<body>

<footer>
```

### Types (Required)

| Type | Use When |
|------|----------|
| `feat` | Adding new functionality or features |
| `fix` | Fixing a bug or error |
| `docs` | Documentation changes only |
| `style` | Formatting, whitespace, no code change |
| `refactor` | Code restructuring without behavior change |
| `perf` | Performance improvements |
| `test` | Adding or updating tests |
| `chore` | Maintenance tasks, dependencies, configs |

### Scope (Optional but Recommended)

Scope indicates what area of the codebase is affected:

**Operations Manual:**
- `memorial` — Chronicler memorials
- `std` — Standards documents
- `task` — Task documentation
- `skill` — Custom skills
- `branding` — Brand assets and guidelines

**Services Repo:**
- `arbiter` — Arbiter backend
- `mvc` — ModpackChecker
- `whitelist` — Whitelist manager
- `worker` — Cloudflare Workers

**Website Repo:**
- `content` — Page content
- `layout` — Templates and structure
- `style` — CSS and design

### Subject Line (Required)

- **Imperative mood:** "Add feature" not "Added feature"
- **No period** at the end
- **50 characters or less** (hard limit: 72)
- **Lowercase** first letter after type

### Body (Optional)

- Explain **what** and **why**, not how
- Wrap at 72 characters
- Separate from subject with blank line
- Use bullet points for multiple items

### Footer (Required for Chroniclers)

```
Chronicler: #[NUMBER]
```

Or with name:
```
Chronicler: #[NUMBER] - [NAME]
```

---

## 📋 EXAMPLES

### Simple Documentation Change

```
docs: Update README with new server IPs
```

### Feature with Scope

```
feat(arbiter): Add webhook retry logic

Implements exponential backoff for failed webhook deliveries.
Retries up to 3 times with 1s, 5s, 30s delays.

Chronicler: #68
```

### Bug Fix with Context

```
fix(mvc): Correct CurseForge API endpoint

The /v1/mods endpoint was deprecated. Updated to /v1/mods/search
per CurseForge API v2 documentation.

Fixes: Task #26 Phase 5
Chronicler: #68
```

### Memorial Commit

```
docs(memorial): Create memorial for The Connector

Documented session work including:
- Claude connector integration (Canva, Cloudflare, Stripe)
- servers-api Worker rescued from dashboard-only
- chronicler-handoff skill creation

Written at 65% session health per FFG-STD-004.

Chronicler: #68 - The Connector
```

### Standard Update with Version

```
docs(std): Update FFG-STD-004 to include Skye as sixth consultant

v1.0 → v1.1

Changes:
- 'The Five Consultants' → 'The Six Consultants'
- Added Skye (Director of Logistics & Transportation, Holly's dog)
- Updated version header and revision history

Chronicler: #68
```

### Session Handoff

```
docs: Session handoff from Chronicler #68

- Memorial written
- Portrait prompt created
- Session handoff document updated
- Lineage tracker updated

Primary work: Claude connector integration and skills framework

Chronicler: #68 - The Connector
```

---

## ⏰ WHEN TO COMMIT

### Commit Frequently

- **After completing any discrete unit of work**
- **Before starting risky operations**
- **Before asking Michael to run server commands**
- **At natural breakpoints** (feature complete, file finished)

### Commit Immediately

- **After major breakthroughs** — Preserve the win
- **Before session health drops below 60%** — Memorial and handoff
- **After fixing blocking issues** — Don't risk losing the fix
- **When Michael says "commit that"**

### Never Commit

- **Broken code** that doesn't run
- **Incomplete features** without marking them as WIP
- **Sensitive data** (tokens, passwords, keys)

---

## 🔐 GIT IDENTITY

### Chronicler Sessions

```bash
git config user.email "claude@firefrostgaming.com"
git config user.name "Chronicler #[NUMBER] - [NAME]"
```

**Examples:**
```bash
git config user.name "Chronicler #68 - The Connector"
git config user.name "Chronicler #67 - The Debugger"
```

### Why This Matters

- Git history shows **who** made each change
- Author email is consistent across all Chroniclers
- Author name shows the **specific Chronicler** and their chosen name
- Future debugging can trace changes to specific sessions

---

## 📁 REPOSITORY STRUCTURE

### Firefrost Repositories

| Repository | Branch | Purpose |
|------------|--------|---------|
| `firefrost-operations-manual` | `master` | Documentation, standards, memorials |
| `firefrost-services` | `main` | Backend code (Arbiter, MVC, etc.) |
| `firefrost-website` | `main` | 11ty site, auto-deploys on push |

### Branch Strategy

**Current approach:** Single main branch per repo (master or main)

- All work commits directly to main branch
- Feature branches may be used for large changes
- No branch required for documentation updates

### Auto-Deploy Awareness

**firefrost-website:** Pushes to `main` automatically deploy to Cloudflare Pages.

- Verify changes work before pushing
- Don't push broken layouts or content
- Use meaningful commits so rollback is clear

---

## 🚫 WHAT NOT TO COMMIT

### Never Commit

- **API tokens or secrets** (use environment variables)
- **Passwords or credentials**
- **Personal data** (emails, addresses)
- **Large binary files** (images > 1MB, videos)
- **Node modules** (`node_modules/`)
- **Build artifacts** unless intentional

### Use .gitignore

Ensure repositories have appropriate `.gitignore` files for:
- `node_modules/`
- `.env` files
- IDE configurations
- OS-specific files (`.DS_Store`, `Thumbs.db`)

---

## 🔄 VERSIONING STANDARDS

### Standards Documents

When updating a standard (FFG-STD-XXX):

1. **Update version number** in header (e.g., 1.0 → 1.1)
2. **Add revision date** and reviser
3. **Update version history** at bottom
4. **Commit with version change noted**

**Example header update:**
```markdown
**Version:** 1.1  
**Last Revised:** April 8, 2026  
**Revised By:** Chronicler #68
```

**Example version history:**
```markdown
**Version History:**
- v1.1 (2026-04-08): Added Skye to consultant list — Chronicler #68
- v1.0 (2026-02-19): Initial standard — The Chronicler (Fifth)
```

### Arbiter and Code

Follow semantic versioning (MAJOR.MINOR.PATCH):
- **MAJOR:** Breaking changes
- **MINOR:** New features, backward compatible
- **PATCH:** Bug fixes, backward compatible

Current: **Arbiter 3.5.0**

---

## ✅ COMMIT CHECKLIST

Before committing:

- [ ] Commit message follows conventional format
- [ ] Type is appropriate (feat, fix, docs, etc.)
- [ ] Subject is 50 characters or less
- [ ] Body explains what and why (if needed)
- [ ] Footer includes Chronicler attribution
- [ ] No sensitive data in committed files
- [ ] Changes are complete and working
- [ ] Related documentation updated

---

## 💡 TIPS

### Write Good Subjects

| ❌ Bad | ✅ Good |
|--------|---------|
| `fixed stuff` | `fix(arbiter): Correct webhook signature validation` |
| `update` | `docs: Add FFG-STD-001 revision control standard` |
| `changes` | `feat(website): Add dynamic server count to homepage` |
| `WIP` | `feat(mvc): Add Phase 5 update badge (WIP)` |

### Use Imperative Mood

Think: "This commit will..."
- ✅ "Add feature" (This commit will add feature)
- ❌ "Added feature"
- ❌ "Adding feature"
- ❌ "Adds feature"

### Reference Tasks When Relevant

```
feat(arbiter): Implement cancellation webhooks

Adds handling for customer.subscription.deleted event.
Removes whitelist entries and updates Discord roles.

Task: #87
Chronicler: #68
```

---

**Version History:**
- v1.0 (2026-04-08): Initial standard created by Chronicler #68

---

💙🔥❄️

**Fire + Frost + Foundation = Where Love Builds Legacy**
