Table of Contents
Team Branching & Release Policy
1. Purpose
This document defines the official branching, promotion, and deployment policy for the engineering team. The objective is to: - Maintain code quality and release stability - Enable controlled promotion across environments - Support commercial/demo-only functionality without impacting core development - Ensure auditability, traceability, and governance
This policy is mandatory for all repositories following this model.
2. Branch Overview & Intent
| Branch | Purpose | Deployment Behavior |
| Dev | Active development & feature integration | Auto deploy to DEV |
| Main | Stable, release-ready code | Auto deploy to TEST |
| Test | Staging / UAT validation | Auto deploy to STAGING |
| Demo | Commercial / pre-sales demo features | Manual deploy to DEMO |
| Production | Live system | Manual approval deploy to PRODUCTION |
3. General Rules (Applies to All Branches)
Direct commits to protected branches are strictly prohibited
All changes must go through Pull Requests (PRs)
CI checks must pass before merge
Forward-only promotion (no reverse merges)
Every deployment must be traceable to a PR and commit
4. Standard Development & Release Flow
The following sections include standard Git commands to be used by the team. These commands are indicative and must be executed only after pulling the latest changes from the remote repository.
4.1 Feature Development
Branch Creation & Development Commands
git checkout Dev
git pull origin Dev
git checkout -b feature/<feature-name>
After development:
git add .
git commit -m “feat: <short description>“
git push origin feature/<feature-name>
Create a Pull Request:
feature/* → Dev
On merge, code is automatically deployed to the DEV environment.
Developers create feature branches from Dev
Feature branches are merged back into Dev via PR
Merge to Dev automatically deploys to DEV environment
4.2 Promotion to Test
Promotion Commands
git checkout Dev
git pull origin Dev
git checkout Main
git pull origin Main
Create a Pull Request:
Dev → Main
On merge to Main: - Artifact is built once - Full test suite runs - Code is deployed automatically to the TEST environment
PR is raised from Dev → Main
On merge, pipeline:
Builds artifact (once)
Runs full test suite
Deploys to TEST environment
4.3 Promotion to Staging (UAT)
Promotion Commands
git checkout Main
git pull origin Main
git checkout Test
git pull origin Test
Create a Pull Request:
Main → Test
On merge: - Same artifact is deployed to STAGING - UAT and integration tests are executed
PR is raised from Main → Test
No new code changes allowed
On merge, pipeline deploys the same artifact to STAGING
UAT and integration tests are executed
4.4 Production Release
Promotion Commands
git checkout Test
git pull origin Test
git checkout Production
git pull origin Production
Create a Pull Request:
Test → Production
After required approvals: - Manual production deployment is triggered - Smoke tests are executed
PR is raised from Test → Production
Requires approvals from authorized reviewers only
Deployment requires manual environment approval
Post-deployment smoke tests are mandatory
5. Demo Branch Policy (Commercial / Pre-Sales Use)
5.1 Purpose of Demo Branch
The Demo branch exists to support: - Commercial discussions - Customer-specific demonstrations - Proof-of-concept features - Business validation prior to development commitment
Demo functionality is not part of the committed product roadmap until approved.
5.2 Demo Branch Creation
Demo Branch Creation Commands
git checkout Main
git pull origin Main
git checkout -b Demo
git push origin Demo
Rules: - Demo branch always originates from Main - No direct commits allowed
Demo branch must always be created from Main
No direct commits are allowed
Only demo-related changes permitted
5.3 Demo Development Rules
Demo Feature Branch Commands
git checkout Demo
git pull origin Demo
git checkout -b demo/<demo-feature-name>
After implementation:
git add .
git commit -m “demo: <short description>“
git push origin demo/<demo-feature-name>
Create a Pull Request:
demo/* → Demo
Rules: - Demo code must be feature-flagged - Configuration-driven - Fully reversible
Demo code must be:
Feature-flagged
Config-driven
Reversible
No permanent database schema changes without architecture approval
Demo code must not block or delay regular releases
5.4 Demo Review & Merge Process
PRs targeting Demo require:
Technical Lead review
Product / Business stakeholder awareness
CI checks include:
Build validation
Basic functional tests
5.5 Demo Deployment
Demo deployments are manual only
Deployed to a dedicated DEMO environment
Access is restricted and monitored
No automatic promotion to other branches
6. Demo Decision Outcomes
Common Commands for Cherry-Picking Approved Demo Code
git checkout Dev
git pull origin Dev
git cherry-pick <commit-sha>
git push origin Dev
7. Hotfix Policy (Production Critical Fixes)
7.1 Purpose of Hotfix
Hotfixes are used only for critical production issues such as: - Production outages - Security vulnerabilities - Data integrity issues
Hotfixes must follow a controlled and traceable path and must not bypass environments.
7.2 Hotfix Branch Creation
Hotfix branches are always created from Production.
Commands
git checkout Production
git pull origin Production
git checkout -b hotfix/<issue-id-or-description>
7.3 Hotfix Development & Validation
After implementing the fix:
git add .
git commit -m “hotfix: <short description>“
git push origin hotfix/<issue-id-or-description>
Create a Pull Request:
hotfix/* → Production
Requirements: - Mandatory senior reviewer approval - CI build and critical tests must pass
On merge: - Hotfix is deployed to PRODUCTION with manual approval - Smoke tests are executed immediately
7.4 Forward-Merge Hotfix to Lower Branches (Mandatory)
After production deployment, the hotfix must be propagated forward to avoid regression.
Step 1: Production → Test
Production → Test
Step 2: Test → Main
Test → Main
Step 3: Main → Dev
Main → Dev
Optional (if relevant):
Main → Demo
This ensures all active branches contain the hotfix.
7.5 Hotfix Restrictions
Hotfix branches must be short-lived
No new features allowed
No refactoring unless required to fix the issue
Demo-only code is not allowed in hotfixes
7.6 Hotfix Summary Flow
hotfix/*
↓
Production ──▶ PROD
↓
Test ──▶ STAGING
↓
Main ──▶ TEST
↓
Dev ──▶ DEV
8. Branch Protection & Approvals
Common Commands for Cherry-Picking Approved Demo Code
git checkout Dev
git pull origin Dev
git cherry-pick <commit-sha>
git push origin Dev
6.1 Demo Approved for Productization
If a demo feature is approved:
Relevant commits are cherry-picked or merged into Dev
Demo-only configuration is removed
Feature flags are reviewed for production readiness
Feature follows standard promotion path:
Dev → Main → Test → Production
6.2 Demo Rejected or Deferred
If a demo feature is rejected: - Demo branch is archived or reset - No merge into Dev/Main/Test - No impact on production code
7. Branch Protection & Approvals
| Branch | Protection Rules |
| Dev | PR required, CI mandatory |
| Main | PR + full test suite |
| Test | PR + UAT approval |
| Demo | PR required, limited reviewers |
| Production | PR + restricted approvers + manual approval |
8. Artifact & Configuration Policy
Artifacts are built once (on Main)
Same artifact is promoted across environments
Environment differences handled via configuration only
Demo uses feature flags, not forked artifacts
9. Compliance, Audit & Risk Management
Every deployment is traceable to:
Commit
PR
Approval
Demo work is isolated from regulated releases
Rollback is possible via artifact redeployment
10. Ownership & Enforcement
Engineering leadership owns this policy
CI/CD pipelines enforce compliance
Exceptions require written approval from Architecture & Product
11. Summary
This branching and demo policy ensures: - Stable and predictable releases - Safe experimentation for commercial needs - Strong governance and audit readiness - Minimal risk to production systems
All team members are expected to understand and follow this policy.
