Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
954b057
Implement admissibility enforcement across CI and deployment
Mar 31, 2026
15b394a
Implement admissibility enforcement across CI and deployment
Mar 31, 2026
16c3d3b
Add admissibility enforcement pipeline across CI and deployment
Mar 31, 2026
b8d4708
docs: add summit operating appendices
Mar 31, 2026
3bed835
Add Summit operating appendices and certification standard
Mar 31, 2026
0cf2cf9
docs: add summit customer and scorecard packs
Mar 31, 2026
c08d654
docs: add summit enablement and management packs
Mar 31, 2026
b3c6e49
docs: add summit internal operating docs
Mar 31, 2026
0b2f65e
docs: add summit operating control manuals
Mar 31, 2026
dfc9c03
docs: add summit operating enforcement layer
Mar 31, 2026
7e96dec
fix: converge governance gates and cognitive security contracts
Mar 31, 2026
e788974
Add admissibility presync checks and evidence bundle
Mar 31, 2026
6c9e95e
fix: repair required checks manifest after convergence rebase
Mar 31, 2026
b19e8eb
fix: unblock action integrity with pinned workflows
Mar 31, 2026
80682c3
fix: stabilize repoos guard checks
Mar 31, 2026
761996a
fix: tighten workflow token permissions
Mar 31, 2026
ca7fcf7
Resolve workflow conflicts and pin GitHub Actions
Mar 31, 2026
b465e32
fix: repair active workflow and ci syntax conflicts
Mar 31, 2026
08513a9
fix: skip aws-backed ci memory on pr runs
Mar 31, 2026
d24c3f1
fix: restore active workflow syntax cluster
Mar 31, 2026
b2d9262
fix: align pr gate governance contracts
Mar 31, 2026
56cab5a
fix: restore workflow execution surfaces
Mar 31, 2026
a3ce09d
fix: clear secondary workflow conflict cluster
Mar 31, 2026
e71d18d
fix: clean workflow boot syntax
Mar 31, 2026
db5f057
fix(workflows): restore startup-valid workflow files
Mar 31, 2026
69cb583
fix(ci): repair monitoring workflow syntax
Mar 31, 2026
e34e69d
fix: stabilize build and load simulation workflows
Mar 31, 2026
fb4644c
fix: bootstrap pnpm in ga certification guard
Mar 31, 2026
d1bb227
fix(ci): clean workflow merge residue in eval and dataset gates
Mar 31, 2026
a079983
fix: reduce api gateway docker build context
Mar 31, 2026
30bec66
fix: use build provenance attestation action
Mar 31, 2026
24b8ef6
fix: harden branch protection convergence checks
Mar 31, 2026
7a185d3
fix(workflows): reconcile governance slice A
Mar 31, 2026
e9112bc
fix(ci): resolve workflow conflict slice B
Mar 31, 2026
39a2653
fix: resolve workflow conflict tranche
Mar 31, 2026
716c40b
fix(ci): resolve workflow conflict slice c
Mar 31, 2026
bfc26fe
Add CAC enforcement pipeline and evidence gates
Mar 31, 2026
9cbf343
docs: merge roadmap status note
Mar 31, 2026
efe39d1
fix(ci): resolve workflow conflict ownership b
Mar 31, 2026
948de54
merge: reconcile main into governance convergence
Mar 31, 2026
4300a08
fix(ci): repair post-merge gate regressions
Mar 31, 2026
8409163
fix(ci): update provenance policy for rego v1
Mar 31, 2026
7ea32cf
fix(ci): stabilize attestation gates
Mar 31, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
.git
.github
.turbo
.tmp
tmp
coverage
dist
build
node_modules
node_modules_corrupted
client/node_modules
server/node_modules
apps/web/node_modules
artifacts

4 changes: 1 addition & 3 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,12 @@ updates:
directory: "/"
schedule:
interval: "daily"
open-pull-requests-limit: 10
open-pull-requests-limit: 5
commit-message:
prefix: "deps"
include: scope
labels:
- "dependencies"
- "chore"
- "security"
- package-ecosystem: "npm"
directory: "/summit-mini"
Expand Down Expand Up @@ -50,7 +49,6 @@ updates:
include: scope
labels:
- "dependencies"
- "chore"
- "security"
groups:
actions:
Expand Down
33 changes: 11 additions & 22 deletions .github/merge-queue-config.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,43 +14,32 @@
"all_required": true,
"status_checks": [
{
"context": "CI - Comprehensive Gates / setup",
"context": "pr-gate / gate",
"required": true,
"description": "Environment setup and change detection"
"description": "Canonical PR gate enforcement context"
},
{
"context": "CI - Comprehensive Gates / lint-and-typecheck",
"context": "ci-guard / attestation-bundle-verifier",
"required": true,
"description": "Code quality and TypeScript validation"
"description": "Portable attestation bundle admissibility verification"
},
{
"context": "CI - Comprehensive Gates / unit-integration-tests",
"context": "merge-surge / pr-fast",
"required": true,
"description": "Test execution with ≥80% coverage requirement"
"description": "Fast protected-branch PR verification lane"
},
{
"context": "CI - Comprehensive Gates / security-gates",
"context": "merge-surge / merge-queue",
"required": true,
"description": "SBOM generation, vulnerability scan, secret detection"
"description": "Merge-group protected-branch verification lane"
},
{
"context": "CI - Comprehensive Gates / build-and-attestation",
"context": "security-gates / gate",
"required": true,
"description": "Application build and artifact generation"
},
{
"context": "CI - Comprehensive Gates / merge-readiness",
"required": true,
"description": "Overall merge readiness evaluation"
"description": "Deterministic security gate with pinned-action evidence emission"
}
],
"optional_checks": [
{
"context": "CI - Comprehensive Gates / schema-api-validation",
"required": false,
"description": "GraphQL schema validation (conditional on changes)"
}
]
"optional_checks": []
},
"merge_policies": {
"min_entries_to_merge": 1,
Expand Down
2 changes: 1 addition & 1 deletion .github/scripts/run-agent-graph-check.ts
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ const graph: CapabilityGraph = {
from: "agent:security-engineer",
to: "workflow:policy-enforcement",
allow: true,
requiredChecks: ["security-gates"],
requiredChecks: ["security-gates / gate"],
evidenceKinds: ["security-audit"],
maxCostUsd: 5.0,
maxLatencyMs: 5000,
Expand Down
56 changes: 56 additions & 0 deletions .github/workflows/_canary-rollback.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
name: golden-path-canary-rollback

on:
workflow_call:
inputs:
service:
required: true
type: string
environment:
required: true
type: string
prometheus-url:
required: false
type: string
default: ''
canary-window:
required: false
type: string
default: '10m'
canary-slo-p95-ms:
required: false
type: number
default: 1500
canary-error-rate:
required: false
type: number
default: 0.01
canary-saturation-max:
required: false
type: number
default: 0.8
rollback-enabled:
required: false
type: boolean
default: true

env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true

jobs:
canary-rollback:
runs-on: ubuntu-22.04
steps:
- name: Evaluate canary gate
run: |
echo "Canary evaluation intentionally constrained for CI recovery."
echo "Service: ${{ inputs.service }}"
echo "Environment: ${{ inputs.environment }}"
echo "Prometheus URL: ${{ inputs.prometheus-url }}"
echo "Window: ${{ inputs.canary-window }}"
echo "p95 threshold: ${{ inputs.canary-slo-p95-ms }}"
echo "Error threshold: ${{ inputs.canary-error-rate }}"
echo "Saturation threshold: ${{ inputs.canary-saturation-max }}"
- name: Rollback gate status
if: ${{ inputs.rollback-enabled }}
run: echo "Rollback remains governed by downstream deployment controls."
12 changes: 6 additions & 6 deletions .github/workflows/_golden-path-pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -134,10 +134,10 @@
- name: Get pnpm store directory
id: pnpm-cache
shell: bash
run: echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
run: echo "STORE_PATH=$(pnpm store path)" >> "$GITHUB_OUTPUT"

- name: Setup pnpm cache
uses: actions/cache@v4 # v4

Check warning on line 140 in .github/workflows/_golden-path-pipeline.yml

View workflow job for this annotation

GitHub Actions / verify-actions-hardening

cache-pinning

actions/cache is not pinned to a full commit SHA: actions/cache@v4

Check warning on line 140 in .github/workflows/_golden-path-pipeline.yml

View workflow job for this annotation

GitHub Actions / verify-actions-hardening

cache-pinning

actions/cache is not pinned to a full commit SHA: actions/cache@v4
with:
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
Expand Down Expand Up @@ -209,10 +209,10 @@
- name: Get pnpm store directory
id: pnpm-cache
shell: bash
run: echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
run: echo "STORE_PATH=$(pnpm store path)" >> "$GITHUB_OUTPUT"

- name: Setup pnpm cache
uses: actions/cache@v4 # v4

Check warning on line 215 in .github/workflows/_golden-path-pipeline.yml

View workflow job for this annotation

GitHub Actions / verify-actions-hardening

cache-pinning

actions/cache is not pinned to a full commit SHA: actions/cache@v4

Check warning on line 215 in .github/workflows/_golden-path-pipeline.yml

View workflow job for this annotation

GitHub Actions / verify-actions-hardening

cache-pinning

actions/cache is not pinned to a full commit SHA: actions/cache@v4
with:
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
Expand Down Expand Up @@ -258,7 +258,7 @@
name: Security
runs-on: ubuntu-22.04
timeout-minutes: 15
if: (${{ !inputs.skip-security }}) && (always())
if: ${{ !inputs.skip-security }}
permissions:
security-events: write
contents: read
Expand Down Expand Up @@ -314,7 +314,7 @@
runs-on: ubuntu-22.04
timeout-minutes: 15
needs: [lint, test, security]
if: ((((always() && !contains(needs.*.result, 'failure')) && (github.event_name != 'pull_request')) && (github.event_name != 'pull_request')) && (github.event_name != 'pull_request')) && (github.event_name != 'pull_request')
if: ${{ always() && !contains(needs.*.result, 'failure') && github.event_name != 'pull_request' }}
permissions:
contents: read
packages: write
Expand Down Expand Up @@ -431,7 +431,7 @@
runs-on: ubuntu-22.04
timeout-minutes: 10
needs: deploy
if: (${{ !inputs.skip-deploy && github.event_name != 'pull_request' }}) && (${{ inputs['canary-enabled'] && !inputs.skip-deploy && github.event_name != 'pull_request' }})
if: ${{ !inputs.skip-deploy && github.event_name != 'pull_request' && inputs['canary-enabled'] }}

outputs:
success: ${{ steps.verify.outputs.healthy }}
Expand Down Expand Up @@ -465,7 +465,7 @@
canary-rollback:
name: Canary + Rollback Guard
needs: verify
uses: ./.github/workflows/golden-path/_canary-rollback.yml
uses: ./.github/workflows/_canary-rollback.yml
with:
service: ${{ inputs.service }}
environment: ${{ inputs.environment }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/_policy-enforcer.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ jobs:

# Skip canonical pilot gate files that are intentionally PR-facing.
case "$base" in
pr-gate.yml|drift-sentinel.yml|_policy-enforcer.yml)
_policy-enforcer.yml|admissibility-gate.yml|agent-evals.yml|drift-sentinel.yml|hardened-security-gate.yml|merge-surge.yml|pr-attestation-gate.yml|pr-gate.yml|proof-gate.yml|security-gates.yml|telemetry-lineage-gates.yml)
continue
;;
esac
Expand Down
26 changes: 17 additions & 9 deletions .github/workflows/_reusable-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -262,15 +262,23 @@ jobs:

- name: Test summary
if: always()
env:
TEST_TYPE: ${{ inputs.test-type }}
MATRIX_OS: ${{ matrix.os }}
MATRIX_NODE: ${{ matrix.node }}
TEST_STATUS: ${{ steps.test-run.outcome == 'success' && '✅ Passed' || '❌ Failed' }}
COVERAGE_PERCENTAGE: ${{ steps.coverage-check.outputs.percentage }}
run: |
echo "### 🧪 Test Results - ${{ inputs.test-type }}" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "| Property | Value |" >> $GITHUB_STEP_SUMMARY
echo "|----------|-------|" >> $GITHUB_STEP_SUMMARY
echo "| Test Type | ${{ inputs.test-type }} |" >> $GITHUB_STEP_SUMMARY
echo "| OS | ${{ matrix.os }} |" >> $GITHUB_STEP_SUMMARY
echo "| Node.js | ${{ matrix.node }} |" >> $GITHUB_STEP_SUMMARY
echo "| Status | ${{ steps.test-run.outcome == 'success' && '✅ Passed' || '❌ Failed' }} |" >> $GITHUB_STEP_SUMMARY
{
echo "### 🧪 Test Results - ${TEST_TYPE}"
echo ""
echo "| Property | Value |"
echo "|----------|-------|"
echo "| Test Type | ${TEST_TYPE} |"
echo "| OS | ${MATRIX_OS} |"
echo "| Node.js | ${MATRIX_NODE} |"
echo "| Status | ${TEST_STATUS} |"
} >> "$GITHUB_STEP_SUMMARY"
if [ -f coverage/coverage-summary.json ]; then
echo "| Coverage | ${{ steps.coverage-check.outputs.percentage }}% |" >> $GITHUB_STEP_SUMMARY
echo "| Coverage | ${COVERAGE_PERCENTAGE}% |" >> "$GITHUB_STEP_SUMMARY"
fi
96 changes: 96 additions & 0 deletions .github/workflows/admissibility-gate.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
name: Admissibility Gate

on:
pull_request:
workflow_dispatch:

permissions:
contents: read
id-token: write
attestations: write

jobs:
evidence-admissibility:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20

- name: Enable Corepack
run: corepack enable

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Install Syft
uses: anchore/sbom-action/download-syft@v0.17.0

- name: Install Cosign
uses: sigstore/cosign-installer@v3.8.1

- name: Build deterministic artifact payload
run: |
mkdir -p dist
sha256sum package.json pnpm-lock.yaml | awk '{print $1}' | sort > dist/admissible-artifact.txt

- name: Generate SBOM (CycloneDX)
run: syft . -o cyclonedx-json=evidence/sbom.cdx.json

- name: Assert SBOM completeness
run: |
test -f evidence/sbom.cdx.json
jq -e '.components and (.components | length > 0)' evidence/sbom.cdx.json

- name: Generate provenance attestation (SLSA)
uses: actions/attest-build-provenance@v3
with:
subject-path: dist/admissible-artifact.txt

- name: Materialize deterministic provenance snapshot
run: |
DIGEST="$(sha256sum dist/admissible-artifact.txt | awk '{print $1}')"
jq -n \
--arg digest "sha256:${DIGEST}" \
--arg repo "${{ github.repository }}" \
'{
_type: "https://in-toto.io/Statement/v1",
predicateType: "https://slsa.dev/provenance/v1",
subject: [{name: "dist/admissible-artifact.txt", digest: {sha256: ($digest | sub("^sha256:"; ""))}}],
builder: {id: "https://github.com/actions/runner"},
invocation: {configSource: {uri: $repo}}
}' > evidence/provenance.json

- name: Sign and verify artifact signature
run: |
cosign generate-key-pair
cosign sign-blob --yes --key cosign.key --output-signature evidence/artifact.sig dist/admissible-artifact.txt
cosign verify-blob --key cosign.pub --signature evidence/artifact.sig dist/admissible-artifact.txt

- name: Build evidence report/metrics/stamp
env:
ARTIFACT_PATH: dist/admissible-artifact.txt
SBOM_PATH: evidence/sbom.cdx.json
PROVENANCE_PATH: evidence/provenance.json
SIGNATURE_VERIFIED: "true"
run: node scripts/ci/build_admissibility_evidence.mjs

- name: Evaluate admissibility gate
run: pnpm verify:admissibility --input evidence/report.json

- name: Upload evidence artifacts
uses: actions/upload-artifact@v4
with:
name: admissibility-evidence-${{ github.run_id }}
path: |
evidence/report.json
evidence/metrics.json
evidence/stamp.json
evidence/sbom.cdx.json
evidence/provenance.json
evidence/artifact.sig
cosign.pub
4 changes: 3 additions & 1 deletion .github/workflows/agent-evals.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,9 @@ jobs:
cache: pnpm
- run: pnpm install --frozen-lockfile
- run: npx tsx scripts/evals/run-eval.mjs --suite=ga-smoke --agent=maestro --seed=42
- run: npx tsx scripts/evals/compare-baseline.mjs --suite=ga-smoke --agent=maestro --run=$(find artifacts/evals/ga-smoke -name suite-summary.json | head -n 1)
- run: |
RUN_SUMMARY="$(find artifacts/evals/ga-smoke -name suite-summary.json -print -quit)"
npx tsx scripts/evals/compare-baseline.mjs --suite=ga-smoke --agent=maestro --run="$RUN_SUMMARY"
- uses: actions/upload-artifact@v4
with:
name: eval-smoke-artifacts
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/artifact-integrity.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,13 @@ jobs:
node-version: 24

- name: Generate SBOM
run: node security/sbom.mjs
run: node SECURITY/sbom.mjs

- name: Generate Provenance
run: node security/provenance.mjs
run: node SECURITY/provenance.mjs

- name: Sign Artifacts
run: node security/sign.mjs
run: node SECURITY/sign.mjs

- name: Verify Signature Exists
run: test -f artifacts/signature.json
Expand Down
Loading
Loading