Skip to content

Change Management Policy

Defines requirements for managing changes to Meridian Seven production systems to minimize service disruption and maintain system integrity.

All changes to:

  • Application source code (frontend, backend, agent services)
  • Database schemas and migrations
  • Infrastructure configuration (GCP Cloud Run, Supabase, Cloudflare)
  • CI/CD pipelines and deployment workflows
  • Environment variables and secrets (Doppler)
  • Third-party integrations and dependencies
  • Monitoring and alerting configurations
EnvironmentBranchPurposeURL
DevelopmentdevIntegration testing, feature developmentdev-navi.meridian7.io
StagingstagingPre-production validation, QAstaging-navi.meridian7.io
ProductionmainLive customer-facing environmentnavi.meridian7.io

Promotion chain: devstagingmain

Changes must not skip environments. Direct pushes to production are prohibited except under the Emergency Change Process (Section 7).

RequirementDetail
DescriptionClear summary of what changed and why
GitHub issue linkEvery change must reference a tracked GitHub issue
Code reviewAt least one approved review from a qualified reviewer
CI checks passAll required status checks must pass before merge
CheckToolScope
LintingESLint (TypeScript), Ruff (Python)Code style and quality
Type checkingTypeScript compiler, mypyType safety
Unit testsVitest (TypeScript), pytest (Python)Functional correctness
Security scanningDependabot, Claude Security ReviewVulnerabilities and committed secrets
Build verificationTurborepo buildCompilation and bundling
Migration checkdrizzle-kit checkDatabase migration chain integrity

All checks must pass before merge. No bypassing of required checks is permitted.

StageApproverMethod
PR merge to devCode reviewer (engineer)GitHub PR approval
Promote devstagingCTO or designated leadManual after local verification
Promote stagingmainCTOManual after staging validation
  • GCP Cloud Run deployments trigger automatically via Cloud Build on branch push
  • Database migrations run as part of CI/CD gated by workflow_run
  • All deployments logged with commit SHA, timestamp, and deployer
  1. GCP Console → Cloud Run → select service → Revisions → identify last known-good revision
  2. Edit service → set traffic to 100% on the known-good revision
  3. Verify via smoke tests and monitoring
  1. GCP Console → Cloud Run → select agent service → Revisions → rollback to previous revision
  2. Verify via health check endpoint and monitoring

Database migrations are forward-only. Rollback requires a new reverse migration. Supabase PITR is available as last resort.

All rollbacks must record: reason, timestamp, affected systems, person who initiated, and a follow-up GitHub issue for root cause analysis.

Every change must have:

  1. GitHub issue — Purpose, scope, and acceptance criteria
  2. Pull Request — Description, linked issue, and review history
  3. Commit messages — Imperative subject lines referencing the GitHub issue
  4. Deployment record — Automated via CI/CD (commit SHA, timestamp, environment)

Permitted when an active SEV-1 or SEV-2 incident requires an immediate fix that cannot wait for the standard process.

  • Active production incident (SEV-1 or SEV-2) requiring immediate resolution
  • Security vulnerability under active exploitation
  • Data integrity issue requiring immediate correction
  1. Incident commander (CISO or CTO) authorizes the emergency change
  2. Minimum requirements before deploying:
    • Automated CI checks pass (lint, type-check, build)
    • At least one other engineer reviews (synchronous/verbal acceptable)
  3. Create a GitHub issue immediately if one does not exist

Within 24 hours of the emergency change, document:

  • Justification for bypassing standard process
  • The change made (PR link or commit SHA)
  • Testing performed before and after deployment
  • Any follow-up work needed

Attach to the incident postmortem if applicable.

  • Declared by CTO during critical business periods
  • Only emergency changes (Section 7) are permitted during a freeze
  • Communicated at least 48 hours in advance via Slack #engineering

9. Automated Evidence Collection Exception

Section titled “9. Automated Evidence Collection Exception”

Automated evidence collection workflows commit directly to main without a pull request. This is an intentional exception to the standard change process because:

  • Evidence workflows are read-only collectors — they query APIs and write JSON artifacts to evidence/ paths only
  • Workflows use SHA-pinned GitHub Actions — no mutable version tags, preventing supply chain compromise
  • All commits are made by github-actions[bot] — identifiable and auditable in git history
  • Evidence artifacts include SHA-256 integrity manifests for tamper detection
  • Evidence changes are reviewed during weekly security reviews (Risk Management Policy §6.2)
  • Branch protection remains enforced for all other paths — only evidence workflows authenticate with GH_PAT_ADMIN

This exception is documented as a compensating control and reviewed annually.

Changes that bypass this policy without emergency authorization are policy violations subject to the disciplinary process in the Information Security Policy. CI/CD branch protection prevents most unauthorized changes automatically.

  • Information Security Policy
  • Incident Response Plan
  • Backup and Recovery Policy

Meridian Seven — Confidential