Manual Test Runbook — C4: GitOps branching standard + repo template
Owner: Sagar | Time: ~15 min | Local only (no cloud required)
Purpose
Verify that: 1. The branching standard doc is clear and accessible. 2. The client-repo template is structurally sound and follows the standard. 3. Branch protection rules can be applied to a test repo.
Prerequisites
- GitHub CLI (
gh) installed and authenticated. - Local git.
Steps
1. Review the branching standard doc
- Open
docs/conventions/branching.mdin the browser or editor. - Spot-check sections 1–7: naming conventions, commits, PRs, protection rules.
- Verify it's linked correctly in both places:
- From
templates/client-repo/README.md - From
templates/client-repo/.github/workflows/pr-template-check.yml
2. Inspect the client-repo template
-
.github/CODEOWNERSexists with placeholder{{ORG}}and{{REPO}}. -
.github/PULL_REQUEST_TEMPLATE.mdmatches the one at.github/PULL_REQUEST_TEMPLATE.md(repo root). -
.github/workflows/pr-template-check.ymlparses (is valid YAML). -
.github/workflows/quality-gates.ymlexists with proper checkov/tfsec/gitleaks stubs. -
.github/workflows/terraform-plan-apply.ymlcaller exists with placeholders for{{ENV}},{{STATE_RG}},{{STATE_SA}}. -
.pre-commit-config.yamlpins versions matching the snowops-automation source. -
.gitignorecovers Terraform, Node, and secrets.
for file in .github/CODEOWNERS .github/PULL_REQUEST_TEMPLATE.md \
.github/workflows/*.yml .pre-commit-config.yaml .gitignore; do
[ -f "$file" ] && echo "✓ $file" || echo "✗ MISSING $file"
done
3. Verify snowops-automation repo PR template
-
.github/PULL_REQUEST_TEMPLATE.mdexists at repo root. - Mirrors
templates/client-repo/.github/PULL_REQUEST_TEMPLATE.mdexactly. -
.github/workflows/pr-template-check.ymlexists and parses.
4. Test pr-template-check on a live PR (optional, if already have an open PR)
If you have an open PR against this repo:
- Fill in all required fields of the PR template.
- The
pr-template-checkworkflow runs in the PR checks. - It passes if all sections are filled and the title matches Conventional Commits.
- Create a throwaway PR to test:
git checkout -b chore/test-pr-template echo "test" >> README.md git add README.md git commit -m "chore: test pr template" git push -u origin chore/test-pr-template # Open PR via gh or GitHub UI # Leave template mostly empty to verify the check fails gh pr create --title "chore: test" --body "test" # Wait for pr-template-check to run; it should fail # Fill in the template and watch it pass on edit # Close the PR without merging
Pass criteria
-
docs/conventions/branching.mdis readable and comprehensive. - Client-repo template has all 8 files, no typos in placeholders.
-
.github/PULL_REQUEST_TEMPLATE.mdat repo root matches template. -
pr-template-check.ymlvalidates PR titles + required sections on open PRs. - All YAML is syntactically valid.
Failure modes & escalation
| Symptom | Action |
|---|---|
| Template file missing | Check git status — did the file get created? |
Placeholder mismatch (e.g., {{ORG}} vs {{ ORG }}) |
Standardise on no-spaces format {{ORG}}. |
| PR template check never runs | Workflow may not be committed. Push and force-refresh PR checks. |
| Bash test script fails | Manually ls the template directory to confirm files exist. |
Sign-off
- Tester: Sagar___ | Date: 26/05/2026 | Result: PASS
- Notes: