|
| 1 | +# Main Branch Ruleset Evidence |
| 2 | + |
| 3 | +Date: 2026-06-13 |
| 4 | +Scope: repository governance evidence |
| 5 | +Mode: defensive, audit-ready documentation |
| 6 | + |
| 7 | +## Purpose |
| 8 | + |
| 9 | +This document records the repository governance state after the static defensive validation workflow was added and the main branch ruleset was manually configured in GitHub. |
| 10 | + |
| 11 | +Rulesets are repository settings and are not stored directly as versioned source files. This document provides a public sanitized evidence record for reviewers. |
| 12 | + |
| 13 | +## Repository Control Objective |
| 14 | + |
| 15 | +The `main` branch should only change through a controlled review path: |
| 16 | + |
| 17 | +1. A pull request is opened against `main`. |
| 18 | +2. The static defensive validation workflow runs. |
| 19 | +3. Required checks pass. |
| 20 | +4. Review conversations are resolved. |
| 21 | +5. The change is merged through the GitHub pull request flow. |
| 22 | + |
| 23 | +## Ruleset Configuration Recorded |
| 24 | + |
| 25 | +Ruleset name: |
| 26 | + |
| 27 | +```text |
| 28 | +main-defensive-ci-protection |
| 29 | +``` |
| 30 | + |
| 31 | +Target branch: |
| 32 | + |
| 33 | +```text |
| 34 | +main |
| 35 | +``` |
| 36 | + |
| 37 | +Observed intended controls: |
| 38 | + |
| 39 | +| Control | Expected state | Reason | |
| 40 | +| --- | --- | --- | |
| 41 | +| Enforcement status | Active | The rule must apply to `main`. | |
| 42 | +| Bypass list | Empty | Avoid silent exceptions in the public lab. | |
| 43 | +| Restrict creations | Off | Branch creation does not need to be blocked for this lab. | |
| 44 | +| Restrict updates | Off | Normal pull request merges must be allowed. | |
| 45 | +| Restrict deletions | On | Prevent accidental or unauthorized deletion of `main`. | |
| 46 | +| Require linear history | On | Keep history clean and easier to audit. | |
| 47 | +| Require pull request before merging | On | Prevent direct changes to `main`. | |
| 48 | +| Required approvals | 0 | Single-maintainer lab; evidence is in PR trail and CI. | |
| 49 | +| Require conversation resolution | On | Ensure review comments are resolved before merge. | |
| 50 | +| Require status checks to pass | On | Require automated validation before merge. | |
| 51 | +| Required status check | `Static Defensive Validation` | Bind branch protection to the repository CI workflow. | |
| 52 | +| Require deployments to succeed | Off | No deployment environment is part of this lab yet. | |
| 53 | +| Require signed commits | Off | Deferred until signing is configured consistently. | |
| 54 | + |
| 55 | +## Required Workflow Evidence |
| 56 | + |
| 57 | +The required workflow is defined at: |
| 58 | + |
| 59 | +```text |
| 60 | +.github/workflows/static-validation.yml |
| 61 | +``` |
| 62 | + |
| 63 | +The workflow name is: |
| 64 | + |
| 65 | +```text |
| 66 | +Static Defensive Validation |
| 67 | +``` |
| 68 | + |
| 69 | +It runs on: |
| 70 | + |
| 71 | +- pull requests targeting `main` |
| 72 | +- pushes to `main` |
| 73 | +- manual workflow dispatch |
| 74 | + |
| 75 | +## Workflow Checks |
| 76 | + |
| 77 | +The workflow validates: |
| 78 | + |
| 79 | +- required repository files exist |
| 80 | +- `app.js` passes `node --check app.js` |
| 81 | +- runtime files do not contain unsafe rendering or dynamic execution patterns |
| 82 | +- runtime files do not contain obvious secret patterns |
| 83 | +- local state and generated archive artifacts are not committed |
| 84 | +- bounded public-claim language remains present |
| 85 | + |
| 86 | +## Security Boundary |
| 87 | + |
| 88 | +This governance setup does not perform offensive testing. It does not scan external targets, install application dependencies, probe third-party systems, or claim production security coverage. |
| 89 | + |
| 90 | +The value of the setup is repeatability: every future PR can produce automatic validation evidence before reaching `main`. |
| 91 | + |
| 92 | +## Review Notes |
| 93 | + |
| 94 | +This document is an evidence record based on manual GitHub settings configuration plus repository workflow state. If the ruleset is changed in the GitHub UI, this document should be updated in the same pull request cycle. |
| 95 | + |
| 96 | +## Current Follow-Up |
| 97 | + |
| 98 | +Recommended next hardening steps: |
| 99 | + |
| 100 | +1. Verify that future PRs are blocked until `Static Defensive Validation` succeeds. |
| 101 | +2. Remove or disable redundant rulesets after confirming there is no loss of control. |
| 102 | +3. Add release notes after the governance evidence is merged. |
0 commit comments