docs(std): Create FFG-STD-001 Revision Control Standard

Establishes version control practices for all Firefrost repositories:
- Conventional Commits format (feat, fix, docs, etc.)
- Commit message structure (type, scope, subject, body, footer)
- Chronicler attribution requirements
- Git identity configuration
- When to commit guidelines
- Versioning practices for standards and code
- Commit checklist

This standard was referenced in Project Instructions but never
existed until now. Fills the gap in our standards library.

Chronicler: #68
This commit is contained in:
Claude
2026-04-08 06:25:46 +00:00
parent 5deece3936
commit b81a006164

View File

@@ -0,0 +1,366 @@
# 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**