Versioning, Changelog, and Release Management SOP
Purpose
Enforces a strict, uniform workflow for versioning, tracking modifications, writing git history, and pushing code across all workspace projects. Every agent modifying any repository MUST strictly adhere to this protocol to prevent chaotic git history and untracked changes.
Core Conventions
1. Semantic Versioning (SemVer)
Format: MAJOR.MINOR.PATCH (e.g., 5.3.0)
- PATCH (
0.0.1 increment): Used for bug fixes, documentation syncs, formatting, raw text cleanups, or minor tool polishing.
- MINOR (
0.1.0 increment): Used for new agent skills, new stack templates, adding major sub-components, or non-breaking architectural upgrades.
- MAJOR (
1.0.0 increment): Used for complete system prompt rewrites, breaking API contract changes, or protocol schema modifications.
2. Changelog Management (Keep a Changelog)
Every project MUST maintain a CHANGELOG.md file at the root. Modifications must be logged under the appropriate version header using these exact categories:
Added — for new features, skills, or blueprints.
Changed — for changes in existing functionality.
Deprecated — for soon-to-be-removed features.
Removed — for now-removed features.
Fixed — for any bug fixes.
Security — in case of vulnerabilities or security updates.
Parse-Then-Append Protocol
Before inserting any entry into CHANGELOG.md:
- Read the entire file.
- Search for the target version header (e.g.,
## [7.1.0]).
- If the version header exists, search for the target category (e.g.,
### Changed) under it.
- If the category exists, append the new entry as a bullet under it.
- If the category does NOT exist, create it under the version header in the canonical order: Added, Changed, Deprecated, Removed, Fixed, Security.
- If the version header does NOT exist, create it at the top (below
## [Unreleased] if present) with the required category.
- NEVER create a duplicate category header under the same version.
3. Conventional Commits
All git commit messages MUST use lowercase prefixes followed by a colon and a space, describing the change concisely (maximum 72 characters):
feat: [description] — for new features, skills, or blueprints.
fix: [description] — for bug fixes, syntax corrections, or logical repairs.
docs: [description] — for markdown, documentation, or README edits.
refactor: [description] — for restructuring code without changing behavior.
chore: [description] — for configurations, package updates, or tooling configs (e.g., opencode.json).
Detailed Workflow
Phase 1: Pre-Commit Quality Checks
- Before completing any task, ensure the local test suite and type-checkers have passed successfully (maximum of 3 consecutive repair attempts per strict guardrails).
- Ensure
AGENTS.md and DESIGN.md conventions are fully respected.
- Pre-Commit Verification Gate (Environment Verification, DevOps/Infra tasks only): If the task involves deployment, Docker, CI/CD, or infrastructure changes, run ALL environment-specific verification commands (e.g.,
docker login, token scope validation, registry access checks) BEFORE proceeding to staging. If ANY check fails, HALT and output a failure report. Do NOT stage partial work.
Phase 2: Metadata Synchronization
- If
system-prompt.md was edited, verify that <system_version> at the top is bumped according to SemVer rules.
- Open
CHANGELOG.md and insert a formal release entry under the new version header, categorizing your modifications correctly.
- Open the active task file in
tasks/ and ensure your final reasoning and files modified are accurately logged under the "Execution Log & Reasoning" section.
- If a release includes changes to system behavior, skills, MCP servers, task templates, or workflow rules,
system-prompt.md version MUST be bumped.
- If a release is metadata-only (e.g., LICENSE addition), the CHANGELOG MUST explicitly state: "system-prompt.md version unchanged."
- The
[Unreleased] section MUST be empty after a release. All entries MUST be moved under the new version header.
Phase 3: Staging & Factual Diff Injection
- Call the
custom_context_stage_and_inject_diff MCP tool, providing the exact path to your active task file.
- This stages your modified codebase files and automatically injects the factual diff into your task file, ensuring the Code Reviewer has a grounded reference.
Phase 4: Git Commit & Secure Push Protocol
- Run the non-interactive commit command with a Conventional Commit message.
Example:
git commit -m "docs: finalize versioning skill template"
- Before pushing to the remote repository, check if the working tree is clean (
git status).
- Run the secure, non-interactive push command:
git push origin main (or the active branch).
- If the push fails due to remote updates, run
git pull --rebase first, verify tests pass again, and then push.
1---2name: versioning-and-release3description: Standardizes Semantic Versioning (SemVer), Keep a Changelog formats, Conventional Commits, and Safe Push Protocols across all repositories.4---56# Versioning, Changelog, and Release Management SOP78## Purpose910Enforces a strict, uniform workflow for versioning, tracking modifications, writing git history, and pushing code across all workspace projects. Every agent modifying any repository MUST strictly adhere to this protocol to prevent chaotic git history and untracked changes.1112## Core Conventions1314### 1. Semantic Versioning (SemVer)1516Format: `MAJOR.MINOR.PATCH` (e.g., `5.3.0`)1718- **PATCH (`0.0.1` increment):** Used for bug fixes, documentation syncs, formatting, raw text cleanups, or minor tool polishing.19- **MINOR (`0.1.0` increment):** Used for new agent skills, new stack templates, adding major sub-components, or non-breaking architectural upgrades.20- **MAJOR (`1.0.0` increment):** Used for complete system prompt rewrites, breaking API contract changes, or protocol schema modifications.2122### 2. Changelog Management (Keep a Changelog)2324Every project MUST maintain a `CHANGELOG.md` file at the root. Modifications must be logged under the appropriate version header using these exact categories:2526- `Added` — for new features, skills, or blueprints.27- `Changed` — for changes in existing functionality.28- `Deprecated` — for soon-to-be-removed features.29- `Removed` — for now-removed features.30- `Fixed` — for any bug fixes.31- `Security` — in case of vulnerabilities or security updates.3233### Parse-Then-Append Protocol3435Before inserting any entry into CHANGELOG.md:36371. Read the entire file.382. Search for the target version header (e.g., `## [7.1.0]`).393. If the version header exists, search for the target category (e.g., `### Changed`) under it.404. If the category exists, append the new entry as a bullet under it.415. If the category does NOT exist, create it under the version header in the canonical order: Added, Changed, Deprecated, Removed, Fixed, Security.426. If the version header does NOT exist, create it at the top (below `## [Unreleased]` if present) with the required category.437. NEVER create a duplicate category header under the same version.4445### 3. Conventional Commits4647All git commit messages MUST use lowercase prefixes followed by a colon and a space, describing the change concisely (maximum 72 characters):4849- `feat: [description]` — for new features, skills, or blueprints.50- `fix: [description]` — for bug fixes, syntax corrections, or logical repairs.51- `docs: [description]` — for markdown, documentation, or README edits.52- `refactor: [description]` — for restructuring code without changing behavior.53- `chore: [description]` — for configurations, package updates, or tooling configs (e.g., `opencode.json`).5455## Detailed Workflow5657### Phase 1: Pre-Commit Quality Checks58591. Before completing any task, ensure the local test suite and type-checkers have passed successfully (maximum of 3 consecutive repair attempts per strict guardrails).602. Ensure `AGENTS.md` and `DESIGN.md` conventions are fully respected.613. **Pre-Commit Verification Gate (Environment Verification, DevOps/Infra tasks only):** If the task involves deployment, Docker, CI/CD, or infrastructure changes, run ALL environment-specific verification commands (e.g., `docker login`, token scope validation, registry access checks) BEFORE proceeding to staging. If ANY check fails, HALT and output a failure report. Do NOT stage partial work.6263### Phase 2: Metadata Synchronization64651. If `system-prompt.md` was edited, verify that `<system_version>` at the top is bumped according to SemVer rules.662. Open `CHANGELOG.md` and insert a formal release entry under the new version header, categorizing your modifications correctly.673. Open the active task file in `tasks/` and ensure your final reasoning and files modified are accurately logged under the "Execution Log & Reasoning" section.684. If a release includes changes to system behavior, skills, MCP servers, task templates, or workflow rules, `system-prompt.md` version MUST be bumped.695. If a release is metadata-only (e.g., LICENSE addition), the CHANGELOG MUST explicitly state: "system-prompt.md version unchanged."706. The `[Unreleased]` section MUST be empty after a release. All entries MUST be moved under the new version header.7172### Phase 3: Staging & Factual Diff Injection73741. Call the `custom_context_stage_and_inject_diff` MCP tool, providing the exact path to your active task file.752. This stages your modified codebase files and automatically injects the factual diff into your task file, ensuring the Code Reviewer has a grounded reference.7677### Phase 4: Git Commit & Secure Push Protocol78791. Run the non-interactive commit command with a Conventional Commit message.80 _Example:_ `git commit -m "docs: finalize versioning skill template"`812. Before pushing to the remote repository, check if the working tree is clean (`git status`).823. Run the secure, non-interactive push command:83 `git push origin main` (or the active branch).844. If the push fails due to remote updates, run `git pull --rebase` first, verify tests pass again, and then push.