Skip to content

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.md in 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

cd templates/client-repo
  • .github/CODEOWNERS exists with placeholder {{ORG}} and {{REPO}}.
  • .github/PULL_REQUEST_TEMPLATE.md matches the one at .github/PULL_REQUEST_TEMPLATE.md (repo root).
  • .github/workflows/pr-template-check.yml parses (is valid YAML).
  • .github/workflows/quality-gates.yml exists with proper checkov/tfsec/gitleaks stubs.
  • .github/workflows/terraform-plan-apply.yml caller exists with placeholders for {{ENV}}, {{STATE_RG}}, {{STATE_SA}}.
  • .pre-commit-config.yaml pins versions matching the snowops-automation source.
  • .gitignore covers 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.md exists at repo root.
  • Mirrors templates/client-repo/.github/PULL_REQUEST_TEMPLATE.md exactly.
  • .github/workflows/pr-template-check.yml exists 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-check workflow 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.md is readable and comprehensive.
  • Client-repo template has all 8 files, no typos in placeholders.
  • .github/PULL_REQUEST_TEMPLATE.md at repo root matches template.
  • pr-template-check.yml validates 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: