Skip to content

Branch Enforcement ​

Policy-as-code for branch protection, naming conventions, and configuration drift detection.

Overview ​

GitWire lets you define enforcement policies that declare the desired state of branch protection rules. The reconciler compares desired vs. actual state and detects violations.

mermaid
graph LR
    POL[Policy Definition] --> REC[Reconciler]
    REC -->|Compare| GH[GitHub API]
    GH -->|Actual State| REC
    REC -->|Drift?| VIOL[Violation Record]
    REC -->|Fix?| GH

Policy Model ​

Each policy defines:

FieldTypeDescription
nameTEXTUnique policy name
branch_patternTEXTBranch pattern to match (e.g. main, release/*)
repo_filterTEXTOptional glob to limit to specific repos
min_reviewsINTRequired approving reviews
require_signed_commitsBOOLEANGPG signature required
require_linear_historyBOOLEANNo merge commits
block_force_pushesBOOLEANPrevent force pushes
block_deletionsBOOLEANPrevent branch deletion
enforce_adminsBOOLEANRules apply to admins too
require_status_checksBOOLEANRequired CI checks
required_status_check_contextsTEXT[]Specific check names
modeTEXTenforce or audit

Enforcement Modes ​

ModeBehavior
enforceCreate/update GitHub branch protection rules to match the policy
auditOnly record violations, don't change GitHub settings

Violations ​

When the reconciler detects drift between policy and reality, it creates a violation record:

FieldDescription
policy_idWhich policy was violated
repo_idWhich repo
branchWhich branch
violationsJSONB array of specific violations
statusopen, remediated

Config Validation ​

On every push, GitWire can validate repository configuration files:

  • Detects misformatted .github/ config files
  • Checks for common misconfigurations
  • Creates config_validation_results entries

API Endpoints (11 total) ​

MethodPathDescription
GET/api/enforcement/statsEnforcement statistics
GET/api/enforcement/policiesList all policies
POST/api/enforcement/policiesCreate a policy
PUT/api/enforcement/policies/:idUpdate a policy
DELETE/api/enforcement/policies/:idDelete a policy
GET/api/enforcement/violationsList all violations
GET/api/enforcement/violations/:owner/:repoRepo violations
POST/api/enforcement/violations/:id/suppressSuppress a violation
POST/api/enforcement/runTrigger reconciliation run
GET/api/enforcement/config-resultsConfig validation results
GET/api/enforcement/config-results/:owner/:repoRepo config results

In This Section ​

Released under the MIT License.