-
Notifications
You must be signed in to change notification settings - Fork 1
fix(ci): converge golden-main pilot governance path #22241
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 5 commits
9377367
d9a10e4
bc18bb3
93ab582
e8a7b8a
0b5540d
1e5f77b
4e71bdd
fa22a1a
b940139
f969af5
ac77aa7
833098f
17d05fa
cbcdbe1
31b5259
10375ef
71e33f8
d488de3
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,35 +1,15 @@ | ||
| { | ||
| <<<<<<< HEAD | ||
| "$schema": "https://json-schema.org/draft/2020-12/schema", | ||
| "title": "Summit Required Checks Registry", | ||
| "description": "Single source of truth for branch protection, merge queues, and drift sentinels", | ||
| "version": "1.0.0", | ||
| "required_checks": [ | ||
| "ga-verify", | ||
| "pr-gate", | ||
| "main-validation", | ||
| "drift-sentinel", | ||
| "secret-exposure-gate", | ||
| "dependency-integrity-gate", | ||
| "execution-integrity-gate", | ||
| "artifact-trust-gate", | ||
| "history-sanitization-verify", | ||
| "supply-chain-integrity", | ||
| "reconciliation-gate" | ||
| "pr-gate / gate", | ||
| "drift-sentinel / enforce" | ||
| ], | ||
| "enforcement": { | ||
| "branch_protection": true, | ||
| "merge_queue": true, | ||
| "drift_sentinel": true | ||
| } | ||
| ======= | ||
| "required_checks": [ | ||
| "pr-gate / gate", | ||
| "drift-sentinel / enforce", | ||
| "evidence / validate", | ||
| "Hardening / Failure Domain Check", | ||
| "Hardening / Entropy Budget Check" | ||
| ], | ||
| "version": "1.0.0" | ||
| >>>>>>> pr-21871 | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,26 @@ | ||
| { | ||
| "changeClass": "minor", | ||
| "rationale": "Converges the GA MVP pilot governance path onto a deterministic required-check surface, repairs branch-protection drift handling, and keeps the Cognitive Battlespace baseline mergeable against main.", | ||
| "riskLevel": "medium", | ||
| "rollbackPlan": "Revert the convergence branch commits that alter the required-check registry, drift sentinel, and CI validation scripts, then restore the previous governance files from main if any downstream protected-branch expectation regresses.", | ||
| "effectiveScope": [ | ||
| "ci-governance", | ||
| "required-checks", | ||
| "branch-protection-drift", | ||
| "pilot-proof-pack" | ||
| ], | ||
| "approvalReference": "user-instruction-2026-03-29-golden-main-convergence", | ||
| "incidentReference": "", | ||
| "approvers": [ | ||
| { | ||
| "id": "brianlong-engineering", | ||
| "class": "engineering-build-authority", | ||
| "evidence": "direct-user-authorization-in-codex-session" | ||
| }, | ||
| { | ||
| "id": "brianlong-security", | ||
| "class": "security-governance-authority", | ||
| "evidence": "governance-review-via-convergence-branch" | ||
| } | ||
| ] | ||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,47 +1,25 @@ | ||
| <<<<<<< HEAD | ||
| # Required Status Checks Configuration | ||
| # ===================================== | ||
| # DEPRECATED: This file is maintained for historical reference only. | ||
| # Legacy compatibility file. | ||
| # | ||
| # CANONICAL SOURCE: docs/ci/REQUIRED_CHECKS_POLICY.yml (v2.2.0) | ||
| # Canonical sources: | ||
| # - docs/ci/REQUIRED_CHECKS_POLICY.yml | ||
| # - .github/ci/required-checks.json | ||
| # | ||
| # The authoritative definition of required checks is in: | ||
| # docs/ci/REQUIRED_CHECKS_POLICY.yml | ||
| # | ||
| # That file defines: | ||
| # - always_required: checks that must pass on every commit | ||
| # - conditional_required: checks that run based on changed files | ||
| # - informational: non-blocking checks for observability | ||
| # | ||
| # This file remains for legacy tooling compatibility but should NOT | ||
| # be used as a source of truth for branch protection or merge queue | ||
| # configuration. | ||
| # | ||
| # Last updated: 2026-03-25 | ||
| # Status: ARCHIVED - refer to REQUIRED_CHECKS_POLICY.yml | ||
| ======= | ||
| # Canonical list of required status checks for protected branches | ||
| # Order is stable and intentional (deterministic diffs) | ||
| # NOTE: Canonical policy source is governance/ga/required-checks.yaml. | ||
| # Keep this file in sync for legacy verification consumers. | ||
| >>>>>>> pr-21871 | ||
| # The GA MVP pilot intentionally keeps the required branch-protection | ||
| # surface minimal and deterministic. | ||
|
|
||
| version: 2 | ||
| protected_branches: | ||
| - main | ||
|
|
||
| # DEPRECATED: See docs/ci/REQUIRED_CHECKS_POLICY.yml for current checks | ||
| required_checks: | ||
| - pr-fast | ||
| - merge-queue | ||
| - pr-gate / gate | ||
| - drift-sentinel / enforce | ||
|
|
||
| notes: | ||
| owner: summit-ga | ||
| <<<<<<< HEAD | ||
| canonical_source: docs/ci/REQUIRED_CHECKS_POLICY.yml | ||
| status: archived | ||
| migration_date: 2026-03-25 | ||
| reason: Consolidated to single source of truth to eliminate conflicting definitions | ||
| ======= | ||
| policy: governance/ga/required-checks.yaml | ||
| >>>>>>> pr-21871 | ||
| status: pilot-active | ||
| migration_date: 2026-03-29 | ||
| reason: Reduced merge-eligibility to the governed pilot surface. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -5,6 +5,10 @@ on: | |
| push: | ||
| branches: [main] | ||
|
|
||
| env: | ||
| NODE_VERSION: "24" | ||
| PNPM_VERSION: "9.15.4" | ||
|
Comment on lines
+8
to
+10
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
# Verify which jobs configure actions/setup-node in this workflow.
rg -n -C2 '^( [a-zA-Z0-9_-]+:|\\s+uses: actions/setup-node@v4)' .github/workflows/ci-guard.ymlRepository: BrianCLong/summit Length of output: 501 🏁 Script executed: cat -n .github/workflows/ci-guard.ymlRepository: BrianCLong/summit Length of output: 1413 Add setup-node to The global Add setup-node to drift and checksum drift:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
+ with:
+ node-version: ${{ env.NODE_VERSION }}
- run: node .repoos/scripts/ci/drift_sentinel.mjs
checksum:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
+ with:
+ node-version: ${{ env.NODE_VERSION }}
- run: node .repoos/scripts/ci/compute_control_checksum.mjs > .repoos/control/checksum.txt🤖 Prompt for AI Agents |
||
|
|
||
| jobs: | ||
| drift: | ||
| runs-on: ubuntu-latest | ||
|
|
@@ -16,9 +20,18 @@ jobs: | |
| runs-on: ubuntu-latest | ||
| steps: | ||
| - uses: actions/checkout@v4 | ||
| - name: Setup pnpm | ||
| uses: pnpm/action-setup@v4 | ||
| with: | ||
| version: ${{ env.PNPM_VERSION }} | ||
| - name: Setup Node.js | ||
| uses: actions/setup-node@v4 | ||
| with: | ||
| node-version: ${{ env.NODE_VERSION }} | ||
| cache: "pnpm" | ||
| - run: mkdir -p metrics | ||
| - run: echo '{"pr":0,"ttm_ms":0,"version":"1.0.0"}' > metrics/merge_latency.json | ||
| - run: npm ci || true | ||
| - run: pnpm install --frozen-lockfile | ||
| - run: node .repoos/scripts/ci/validate_schemas.mjs | ||
|
|
||
| checksum: | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,56 +1,33 @@ | ||
| <<<<<<< HEAD | ||
| name: Drift Sentinel | ||
|
|
||
| on: | ||
| pull_request: | ||
| paths: | ||
| - '.github/workflows/**' | ||
| - '.github/CODEOWNERS' | ||
|
|
||
| jobs: | ||
| verify-governance: | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - uses: actions/checkout@v4 | ||
| - name: Verify workflows | ||
| run: | | ||
| echo "Verifying PR gate is strictly enforced." | ||
| grep -q "name: pr-gate" .github/workflows/pr-gate.yml || kill -s TERM $$ | ||
| grep -q "pr-gate/gate" .github/required-checks.manifest.json || kill -s TERM $$ | ||
| echo "Drift Sentinel passed." | ||
| ======= | ||
| name: drift-sentinel | ||
|
|
||
| on: | ||
| pull_request: | ||
| paths: | ||
| - ".github/workflows/**" | ||
| - ".github/ci/**" | ||
| - "docs/ci/**" | ||
| - "scripts/ci/**" | ||
| - ".repoos/**" | ||
| - ".github/required-checks.yml" | ||
| - "docs/roadmap/STATUS.json" | ||
| merge_group: | ||
| workflow_dispatch: | ||
|
|
||
| concurrency: | ||
| group: drift-sentinel-${{ github.ref }} | ||
| cancel-in-progress: true | ||
|
|
||
| jobs: | ||
| drift: | ||
| enforce: | ||
| name: enforce | ||
| runs-on: ubuntu-latest | ||
| timeout-minutes: 10 | ||
|
|
||
| steps: | ||
| - uses: actions/checkout@v4 | ||
|
|
||
| - name: Validate workflow structure | ||
| run: | | ||
| for f in .github/workflows/*.yml; do | ||
| yq e '.' "$f" > /dev/null || exit 1 | ||
| done | ||
|
|
||
| - name: Enforce concurrency | ||
| run: | | ||
| for f in .github/workflows/*.yml; do | ||
| grep -q "concurrency:" "$f" || (echo "Missing concurrency in $f" && exit 1) | ||
| done | ||
|
|
||
| - name: Prevent forbidden patterns | ||
| run: | | ||
| if grep -R "paths-ignore" .github/workflows; then | ||
| echo "paths-ignore not allowed in required workflows" | ||
| exit 1 | ||
| fi | ||
| - name: Validate governed workflow surface | ||
| run: node scripts/ci/validate_workflows.mjs | ||
|
|
||
| - name: Required check alignment (basic) | ||
| run: | | ||
| echo "Ensure pr-gate/gate is the only required check in branch protection" | ||
| >>>>>>> pr-21884 | ||
| - name: Check required-check policy drift | ||
| run: node scripts/ci/check_branch_protection_drift.mjs --offline | ||
|
Comment on lines
26
to
+33
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
# Check if these scripts import any npm packages
echo "=== Checking validate_workflows.mjs imports ==="
rg "^import|require\(" scripts/ci/validate_workflows.mjs 2>/dev/null || echo "File not found"
echo ""
echo "=== Checking check_branch_protection_drift.mjs imports ==="
rg "^import|require\(" scripts/ci/check_branch_protection_drift.mjs 2>/dev/null || echo "File not found"Repository: BrianCLong/summit Length of output: 586 🏁 Script executed: cat -n .github/workflows/drift-sentinel.ymlRepository: BrianCLong/summit Length of output: 1014 Add dependency installation step before running scripts. The Place this after the 🤖 Prompt for AI Agents |
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🏁 Script executed:
Repository: BrianCLong/summit
Length of output: 1877
Remove the single approver or use distinct individuals for each authority class.
Both approvers reference the same individual ("brianlong") with different role suffixes, allowing a single person to approve engineering and security governance changes. This violates separation-of-duties principles and creates unilateral control over branch-protection and CI governance—a risk especially acute for changes affecting trust boundaries and required checks.
Require distinct approvers for
engineering-build-authorityandsecurity-governance-authorityto maintain proper oversight.🤖 Prompt for AI Agents