-
Notifications
You must be signed in to change notification settings - Fork 1
122 lines (112 loc) · 4.21 KB
/
Copy pathaaa-governance.yml
File metadata and controls
122 lines (112 loc) · 4.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
name: AAA Governance Plane
on:
pull_request:
merge_group:
push:
branches: [main]
workflow_dispatch:
permissions:
contents: read
pull-requests: read
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
federation-check:
if: github.actor != 'dependabot[bot]' && github.actor != 'app/dependabot'
name: 🗺️ Federation Check
runs-on: ubuntu-latest
timeout-minutes: 2
steps:
- uses: actions/checkout@v7
- name: Validate FEDERATION.md
run: |
test -f FEDERATION.md || (echo "❌ Missing FEDERATION.md" && exit 1)
grep -q "role: COCKPIT" FEDERATION.md || (echo "❌ FEDERATION.md must declare role: COCKPIT" && exit 1)
grep -q "layer: L3" FEDERATION.md || (echo "❌ FEDERATION.md must declare layer: L3" && exit 1)
grep -q "mcp:" FEDERATION.md || (echo "❌ FEDERATION.md must declare mcp:" && exit 1)
grep -q "SOT:" FEDERATION.md || (echo "❌ FEDERATION.md must declare SOT:" && exit 1)
echo "✅ AAA FEDERATION.md valid — L3 COCKPIT"
protocol-alignment:
if: github.actor != 'dependabot[bot]' && github.actor != 'app/dependabot'
name: 🧭 Protocol Alignment
runs-on: ubuntu-latest
needs: [federation-check]
timeout-minutes: 3
steps:
- uses: actions/checkout@v7
- name: Protocol alignment gate
run: bash scripts/check_protocol_alignment.sh
- name: Validate FEDERATION.md contract
run: |
test -f FEDERATION.md || (echo "❌ Missing FEDERATION.md" && exit 1)
grep -q "role: COCKPIT" FEDERATION.md
grep -q "layer: L3" FEDERATION.md
grep -q "mcp:" FEDERATION.md
grep -q "SOT:" FEDERATION.md
echo "✅ AAA FEDERATION.md contract valid — L3 COCKPIT"
- name: Validate FEDERATION_MAP.md
run: |
test -f docs/FEDERATION_MAP.md || (echo "❌ Missing docs/FEDERATION_MAP.md" && exit 1)
grep -q "FEDERATION MAP" docs/FEDERATION_MAP.md || (echo "❌ Invalid FEDERATION_MAP.md" && exit 1)
echo "✅ FEDERATION_MAP.md valid"
validate:
if: github.actor != 'dependabot[bot]' && github.actor != 'app/dependabot'
name: 🔍 AAA Validate
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@v7
- uses: actions/setup-node@v7
with:
node-version: 22
cache: npm
- run: npm ci --legacy-peer-deps
- name: Validate AAA configs
run: |
npm run validate:aaa 2>&1 || echo "⚠️ Validation warnings (non-blocking — review manually)"
echo "✅ AAA validation run complete"
- name: Export AAA contracts
run: npm run export:aaa
- uses: actions/upload-artifact@v7
with:
name: aaa-contract-export
path: dist/aaa
a2a-conformance:
if: github.actor != 'dependabot[bot]' && github.actor != 'app/dependabot'
name: 🔌 A2A Conformance
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@v7
- uses: actions/setup-node@v7
with:
node-version: 22
cache: npm
- run: npm ci
- name: Run A2A conformance
run: |
npm run a2a:conformance 2>&1 || echo "⚠️ A2A conformance warnings (non-blocking)"
echo "✅ A2A conformance run complete"
- uses: actions/upload-artifact@v7
if: always()
with:
name: a2a-conformance
path: |
dist/aaa/a2a-conformance.json
dist/aaa/a2a-conformance.md
verify-verdicts:
if: github.actor != 'dependabot[bot]' && github.actor != 'app/dependabot'
name: ⚖️ Verdict Classes
runs-on: ubuntu-latest
timeout-minutes: 3
steps:
- uses: actions/checkout@v7
- name: Verify verdict taxonomy
run: |
# SEAL/HOLD/SABAR/VOID must exist as known verdict classes
grep -r "SEAL\|HOLD\|SABAR\|VOID" governance/ docs/ --include="*.md" --include="*.json" --include="*.ts" | head -5
echo "✅ Verdict taxonomy present in AAA governance"
- name: Federation map exists
run: |
test -f docs/FEDERATION_MAP.md || (echo "❌ Missing docs/FEDERATION_MAP.md" && exit 1)