Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
234 commits
Select commit Hold shift + click to select a range
c11fb65
fix(governance): require central reviews for stacked prs
seonghobae Aug 20, 2026
ab65fcc
docs(governance): record restored approval contract
seonghobae Aug 20, 2026
bc2c93a
docs(governance): refresh stacked review rollout ledger
seonghobae Aug 20, 2026
501fe54
fix(router): permit exact-head dispatch enqueue
seonghobae Aug 20, 2026
aa63517
fix(router): preserve every trusted mention with least privilege
seonghobae Aug 20, 2026
a7aeb56
fix(workflows): remove unsupported concurrency queue
seonghobae Aug 20, 2026
c18d8c0
Merge remote-tracking branch 'refs/remotes/origin/main' into fix/stac…
seonghobae Aug 20, 2026
158f090
fix(governance): enforce exact central ref scope
seonghobae Aug 20, 2026
b873e71
fix(router): use reviewer token for sibling acknowledgements
seonghobae Aug 20, 2026
a56bf7f
fix(strix): classify caido sandbox startup failure
seonghobae Aug 20, 2026
33b85a8
fix(strix): require trusted caido traceback marker
seonghobae Aug 20, 2026
08f0f04
Merge main into stacked PR governance fix
seonghobae Aug 21, 2026
b628e88
fix(governance): preserve proposal branch create transition
seonghobae Aug 21, 2026
cf94d18
chore(governance): synchronize protected main
seonghobae Aug 21, 2026
f0bef61
Merge branch 'main' into fix/stacked-pr-central-required-workflows
opencode-agent[bot] Aug 21, 2026
8923bad
fix(ci): refresh audit lock and scheduler assertion
seonghobae Aug 21, 2026
d6be648
Merge branch 'main' into fix/stacked-pr-central-required-workflows
opencode-agent[bot] Aug 21, 2026
c6e1ba3
chore(governance): restore canonical pip lock ownership
seonghobae Aug 21, 2026
6bf0447
fix(governance): avoid misleading multi-rule drift
seonghobae Aug 21, 2026
5d64102
ci: refresh dependency and scheduler contracts
seonghobae Aug 21, 2026
4eedfa4
Merge remote-tracking branch 'origin/main' into codex/pr1176-restack
seonghobae Aug 21, 2026
5b2a216
Merge branch 'main' into fix/stacked-pr-central-required-workflows
opencode-agent[bot] Aug 21, 2026
49f6988
merge(main): retain only proposal-branch governance repair
seonghobae Aug 23, 2026
2f16ea9
merge(main): refresh proposal-branch governance repair
seonghobae Aug 24, 2026
cc941b2
merge(main): refresh create-transition audit after Strix hotfix
seonghobae Aug 24, 2026
55a6a79
Merge branch 'main' into fix/stacked-pr-central-required-workflows
opencode-agent[bot] Aug 24, 2026
27a686b
Merge protected main into fix/stacked-pr-central-required-workflows
seonghobae Aug 25, 2026
366fe2f
merge: converge governance create-transition owner with protected main
seonghobae Aug 25, 2026
437ea84
Merge branch 'main' into fix/stacked-pr-central-required-workflows
opencode-agent[bot] Aug 26, 2026
d6bb951
Merge branch 'main' into fix/stacked-pr-central-required-workflows
opencode-agent[bot] Aug 26, 2026
5486790
Merge branch 'main' into fix/stacked-pr-central-required-workflows
opencode-agent[bot] Aug 26, 2026
2701cf9
Merge branch 'main' into fix/stacked-pr-central-required-workflows
opencode-agent[bot] Aug 26, 2026
8664a7c
Merge branch 'main' into fix/stacked-pr-central-required-workflows
opencode-agent[bot] Aug 26, 2026
36d4fec
Merge branch 'main' into fix/stacked-pr-central-required-workflows
seonghobae Aug 26, 2026
6b09d65
Merge branch 'main' into fix/stacked-pr-central-required-workflows
seonghobae Aug 27, 2026
31e00c1
Merge branch 'main' into fix/stacked-pr-central-required-workflows
seonghobae Aug 28, 2026
940511d
Merge branch 'main' into fix/stacked-pr-central-required-workflows
opencode-agent[bot] Aug 28, 2026
f94292a
Merge branch 'main' into fix/stacked-pr-central-required-workflows
opencode-agent[bot] Aug 28, 2026
482d4c0
Merge protected main into proposal-branch governance repair
seonghobae Aug 28, 2026
2a9d115
fix(governance): audit owner repository review ruleset
seonghobae Aug 30, 2026
4ae3c61
fix(governance): reject hidden ruleset drift
seonghobae Aug 30, 2026
d222401
fix(governance): audit organization bypass actors
seonghobae Aug 30, 2026
0b0a45b
fix(governance): fail closed on missing bypass evidence
seonghobae Aug 30, 2026
63ca5e7
Merge branch 'main' into fix/stacked-pr-central-required-workflows
opencode-agent[bot] Aug 30, 2026
8ea2ec5
Retrigger required checks against refreshed main (no new main commits…
claude Aug 30, 2026
8dea465
Merge branch 'main' into fix/stacked-pr-central-required-workflows
opencode-agent[bot] Aug 30, 2026
ce108e7
Merge branch 'main' into fix/stacked-pr-central-required-workflows
opencode-agent[bot] Aug 30, 2026
8a7c5b1
Merge branch 'main' into fix/stacked-pr-central-required-workflows
opencode-agent[bot] Aug 30, 2026
faf1dd6
Merge branch 'main' into fix/stacked-pr-central-required-workflows
opencode-agent[bot] Aug 30, 2026
36ade87
Merge branch 'main' into fix/stacked-pr-central-required-workflows
opencode-agent[bot] Aug 30, 2026
53f99d7
Merge branch 'main' into fix/stacked-pr-central-required-workflows
seonghobae Aug 30, 2026
dc8d7d9
Merge branch 'main' into fix/stacked-pr-central-required-workflows
seonghobae Aug 30, 2026
718ae19
Merge protected main into fix/stacked-pr-central-required-workflows
seonghobae Aug 30, 2026
c1b31b2
Merge branch 'main' into fix/stacked-pr-central-required-workflows
opencode-agent[bot] Aug 31, 2026
2bc22cc
Merge branch 'main' into fix/stacked-pr-central-required-workflows
opencode-agent[bot] Aug 31, 2026
73b5b28
Merge branch 'main' into fix/stacked-pr-central-required-workflows
opencode-agent[bot] Aug 31, 2026
135f16f
Merge branch 'main' into fix/stacked-pr-central-required-workflows
opencode-agent[bot] Aug 31, 2026
5acc547
Merge branch 'main' into fix/stacked-pr-central-required-workflows
opencode-agent[bot] Aug 31, 2026
a14822c
Merge branch 'main' into fix/stacked-pr-central-required-workflows
opencode-agent[bot] Aug 31, 2026
3407ca6
Merge branch 'main' into fix/stacked-pr-central-required-workflows
opencode-agent[bot] Aug 31, 2026
df92a2e
Merge branch 'main' into fix/stacked-pr-central-required-workflows
opencode-agent[bot] Aug 31, 2026
d33dd13
Merge branch 'main' into fix/stacked-pr-central-required-workflows
opencode-agent[bot] Aug 31, 2026
d435f88
Merge protected main into fix/stacked-pr-central-required-workflows
seonghobae Aug 31, 2026
4d88d45
Merge branch 'main' into fix/stacked-pr-central-required-workflows
opencode-agent[bot] Sep 1, 2026
1141b31
Merge branch 'main' into fix/stacked-pr-central-required-workflows
opencode-agent[bot] Sep 1, 2026
ed314f6
test(governance): define solo-maintainer ruleset RED
seonghobae Sep 1, 2026
a815b54
ci(governance): run focused solo-maintainer contract
seonghobae Sep 1, 2026
3830a7d
fix(governance): align ruleset audit to solo maintainer
seonghobae Sep 1, 2026
f01d2cb
test(governance): rebaseline solo-maintainer ruleset policy
seonghobae Sep 1, 2026
260705b
test(governance): reject synthetic required reviewers
seonghobae Sep 1, 2026
1f0d0e8
ci(governance): exercise synthetic-reviewer RED
seonghobae Sep 1, 2026
033d6ec
fix(governance): reject synthetic required reviewers
seonghobae Sep 1, 2026
1c9c831
test(governance): require executable ruleset regressions
seonghobae Sep 1, 2026
06e1ba2
fix(governance): execute full focused ruleset suite
seonghobae Sep 1, 2026
c3a0571
test(governance): detach temporary proof from permanent suite
seonghobae Sep 1, 2026
2b381e1
fix(governance): pin focused contract Python
seonghobae Sep 1, 2026
3ec4abf
ci(governance): move focused ruleset contract off saturated latest queue
seonghobae Sep 1, 2026
81a7afb
ci(governance): retire proven focused ruleset contract lane
seonghobae Sep 1, 2026
29f004d
Merge branch 'main' into fix/stacked-pr-central-required-workflows
opencode-agent[bot] Sep 1, 2026
66757ec
ci(governance): restore unproven focused contract lane
seonghobae Sep 1, 2026
c52470b
test(governance): cover complete ruleset drift evidence
seonghobae Sep 1, 2026
a9505c3
fix(governance): reject undeclared ruleset controls
seonghobae Sep 1, 2026
c3ec79a
fix(governance): report all fetched ruleset drift
seonghobae Sep 1, 2026
d1c0b7c
ci(governance): execute completeness regressions
seonghobae Sep 1, 2026
c2ab699
docs(governance): align rollout with solo-maintainer policy
seonghobae Sep 1, 2026
49ebfae
test(governance): pin focused proof interpreter
seonghobae Sep 1, 2026
1bd407d
fix(governance): restore Python 3.14 proof runtime
seonghobae Sep 1, 2026
76516f4
fix(governance): run focused contract on explicit runner
seonghobae Sep 1, 2026
af04bac
docs(governance): preserve regression fixture history
seonghobae Sep 1, 2026
63609f2
Merge branch 'main' into fix/stacked-pr-central-required-workflows
opencode-agent[bot] Sep 1, 2026
3156622
ci(governance): allow exact-head focused redispatch
seonghobae Sep 1, 2026
74c0148
test(governance): reproduce malformed merge-method audit crash
seonghobae Sep 1, 2026
9b5d822
test(governance): reject malformed merge methods
seonghobae Sep 1, 2026
b3c2f6d
ci(governance): repair malformed merge-method finding on exact head
seonghobae Sep 1, 2026
ce752a4
fix(governance): reject malformed merge-method payloads
seonghobae Sep 1, 2026
7e82462
chore(governance): retire source-fix helper
seonghobae Sep 1, 2026
2fb3a48
chore(governance): retire focused proof workflow
seonghobae Sep 1, 2026
a4b817b
chore(governance): integrate current main into ruleset writer
seonghobae Sep 1, 2026
5d1e416
fix(governance): retire stale temporary-workflow regression
seonghobae Sep 1, 2026
ed3b562
chore(governance): integrate current main after queue repair
seonghobae Sep 1, 2026
5c46858
chore(governance): integrate hourly queue-pressure repair
seonghobae Sep 1, 2026
15ce91c
chore(governance): integrate required-review runner pin
seonghobae Sep 1, 2026
214b0bd
fix(governance): preserve protected-main review runner repair
seonghobae Sep 1, 2026
a53b008
Merge branch 'main' into fix/stacked-pr-central-required-workflows
opencode-agent[bot] Sep 1, 2026
8977092
Merge branch 'main' into fix/stacked-pr-central-required-workflows
opencode-agent[bot] Sep 1, 2026
2bbdcaa
Merge branch 'main' into fix/stacked-pr-central-required-workflows
opencode-agent[bot] Sep 1, 2026
6455ecd
Merge branch 'main' into fix/stacked-pr-central-required-workflows
opencode-agent[bot] Sep 1, 2026
f77890e
Merge branch 'main' into fix/stacked-pr-central-required-workflows
opencode-agent[bot] Sep 1, 2026
0852bc5
Merge current main into solo-maintainer governance writer
seonghobae Sep 1, 2026
a6d169d
Merge current main into solo-maintainer governance writer
seonghobae Sep 1, 2026
9a33ecc
chore: preserve current label taxonomy
seonghobae Sep 1, 2026
37f7f77
chore: preserve current repository metadata
seonghobae Sep 1, 2026
8f66c9a
docs: preserve current public-surface reconciliation
seonghobae Sep 1, 2026
c69b254
test: preserve current label taxonomy contract
seonghobae Sep 1, 2026
a001ec2
test: preserve current repository metadata contract
seonghobae Sep 1, 2026
48d9772
chore: restore exact protected-main metadata blobs
seonghobae Sep 1, 2026
8339b9b
test: reject code-owner review in solo-maintainer rulesets
seonghobae Sep 1, 2026
2887bb6
fix: reject code-owner approval deadlocks
seonghobae Sep 1, 2026
fbc90b3
Merge dedicated metadata credential into governance writer
seonghobae Sep 1, 2026
0097f93
Merge current protected main into governance writer
seonghobae Sep 1, 2026
9457e66
fix(governance): preserve current-main Pingora evidence
seonghobae Sep 1, 2026
5c684d8
Merge current protected main into governance writer
seonghobae Sep 1, 2026
65be10b
fix(governance): preserve current-main NIM retirement
seonghobae Sep 1, 2026
12076f9
Merge protected main into solo-maintainer ruleset writer
seonghobae Sep 1, 2026
74166cf
test(governance): define owner-plane reconciliation contract
seonghobae Sep 1, 2026
946e15c
feat(governance): add fail-closed ruleset reconciler
seonghobae Sep 1, 2026
1966b12
config(governance): bind exact ruleset targets
seonghobae Sep 1, 2026
fc95c34
ci(governance): gate ruleset reconciliation in owner plane
seonghobae Sep 1, 2026
4e3f6ae
docs(governance): record owner-plane reconciliation evidence
seonghobae Sep 1, 2026
b77dd53
test(governance): reproduce stale-main and non-CAS review findings
seonghobae Sep 1, 2026
ca8a42c
fix(governance): bind reconciliation to current protected main
seonghobae Sep 1, 2026
de0e338
fix(governance): supersede stale owner-plane apply runs
seonghobae Sep 1, 2026
10381a6
docs(governance): record ruleset PUT race boundary
seonghobae Sep 1, 2026
f7c5537
test(governance): cover protected-main reconciliation guard
seonghobae Sep 1, 2026
019ff9f
test(governance): cover guarded multi-target forwarding
seonghobae Sep 1, 2026
61e4587
test(governance): reproduce hidden ruleset history collision
seonghobae Sep 1, 2026
8699add
fix(governance): recover hidden ruleset write collisions
seonghobae Sep 1, 2026
2865291
test(governance): close history collision coverage
seonghobae Sep 1, 2026
1811a7e
docs(governance): trace ruleset history collision recovery
seonghobae Sep 1, 2026
c4f1ec1
merge(governance): stack canonical solo-maintainer audit
seonghobae Sep 1, 2026
b1b3c14
fix(governance): serialize privileged ruleset writes
seonghobae Sep 1, 2026
98ae2ed
test(governance): cover identity-edit recovery and critical section
seonghobae Sep 1, 2026
744e1bb
chore(governance): stage exact PR1644 round-two repair
seonghobae Sep 1, 2026
5b9609b
chore(governance): add one-shot PR1644 round-two repair
seonghobae Sep 1, 2026
3042234
chore(governance): trigger PR1644 round-two repair
seonghobae Sep 1, 2026
b033af4
fix(governance): recover concurrent ruleset identity races
seonghobae Sep 1, 2026
e0a1548
test(governance): cover second collision-recovery race
seonghobae Sep 1, 2026
570b5a7
ci(governance): validate collision recovery without idle hourly satur…
seonghobae Sep 1, 2026
41b0c97
test(governance): make code-owner policy explicit in passing fixture
seonghobae Sep 1, 2026
1469070
test(governance): align stacked audit fixture with canonical policy
seonghobae Sep 1, 2026
2403654
test(governance): retire disabled hourly validation contract
seonghobae Sep 1, 2026
6b07d32
docs(governance): record collision-chain and queue-safe owner-plane c…
seonghobae Sep 1, 2026
a62f5fc
chore(governance): remove completed round-two writer workflow
seonghobae Sep 1, 2026
83dbf5a
chore(governance): remove completed round-two trigger
seonghobae Sep 1, 2026
85c5832
chore(governance): remove completed round-two repair helper
seonghobae Sep 1, 2026
437a782
merge(governance): integrate current protected main without losing ru…
seonghobae Sep 1, 2026
0dea7d1
test(governance): pin unresolved owner-plane review regressions
seonghobae Sep 1, 2026
8273fb5
fix(governance): close owner-plane review gaps
seonghobae Sep 1, 2026
4beeb69
merge(governance): restack owner-plane reconciler on canonical audit
seonghobae Sep 1, 2026
bf1fe97
test(governance): keep main-guard mock aligned with recovery contract
seonghobae Sep 1, 2026
44b4ea4
merge(governance): integrate current protected main without losing ru…
seonghobae Sep 2, 2026
f66d8d3
test(governance): cover ambiguous ruleset PUT timeouts
seonghobae Sep 2, 2026
b3b095e
fix(governance): reconcile ambiguous ruleset timeouts
seonghobae Sep 2, 2026
a0cda3c
test(governance): require guarded manual mutation
seonghobae Sep 2, 2026
5e74e14
ci(governance): execute timeout regression suite
seonghobae Sep 2, 2026
1400920
docs(governance): record timeout and manual guard contract
seonghobae Sep 2, 2026
07df033
test(governance): cover timeout recovery edges
seonghobae Sep 2, 2026
ed0069c
merge: integrate current protected main into ruleset reconciler
seonghobae Sep 2, 2026
24802de
merge: refresh canonical solo-maintainer audit stack
seonghobae Sep 2, 2026
3aaa635
test(governance): cover ambiguous failures and runtime budget
seonghobae Sep 2, 2026
b70315e
test(governance): require ambiguous failure confirmation path
seonghobae Sep 2, 2026
5d5562e
fix(governance): settle ambiguous writes fail-closed
seonghobae Sep 2, 2026
f1c190a
ci(governance): budget and observe owner-plane recovery
seonghobae Sep 2, 2026
ae7d98e
docs(governance): close third-round owner-plane findings
seonghobae Sep 2, 2026
25fa97d
test(governance): include code-owner false in merge-method fixtures
seonghobae Sep 2, 2026
92049ab
test(governance): repair Python 3.12 loader and workflow parsing
seonghobae Sep 2, 2026
efe18ae
test(governance): align history fixtures with editable PUT contract
seonghobae Sep 2, 2026
0494f5a
test(governance): expect code-owner drift on malformed review settings
seonghobae Sep 2, 2026
e639e61
test(governance): project live state before recovery guard
seonghobae Sep 2, 2026
71bdea2
test(governance): cover fail-closed owner-plane edges
seonghobae Sep 2, 2026
7508c39
test(governance): cover empty settlement fail-closed path
seonghobae Sep 2, 2026
b6c64db
test(governance): make ambiguous live state genuinely drift
seonghobae Sep 2, 2026
d0ac1c9
merge(main): preserve current control-plane repairs in ruleset reconc…
seonghobae Sep 2, 2026
40fe499
fix(governance): project required review safety controls
seonghobae Sep 2, 2026
c61d9de
test(governance): reproduce delayed recovery duplicate PUT
seonghobae Sep 2, 2026
40a9ce7
test(governance): forbid blind recovery PUT retry
seonghobae Sep 2, 2026
e9260c1
fix(governance): enforce review controls and main guard
seonghobae Sep 2, 2026
b26e0ba
fix(governance): settle ambiguous recovery before retry
seonghobae Sep 2, 2026
c4b52e5
fix(governance): budget ambiguous recovery settlement
seonghobae Sep 2, 2026
eb74eef
fix(governance): budget full recovery settlement window
seonghobae Sep 2, 2026
663ccfc
docs(governance): record bounded recovery settlement budget
seonghobae Sep 2, 2026
c49aae1
test(governance): cover bounded recovery and verify-only path
seonghobae Sep 2, 2026
45990e9
test(governance): preserve provenance in collision harness
seonghobae Sep 2, 2026
876697f
test(governance): reproduce intervening-version settlement race
seonghobae Sep 2, 2026
1486443
chore(governance): run one-shot intervening-settlement repair
seonghobae Sep 2, 2026
978c9f0
chore(governance): retire failed one-shot settlement repair
seonghobae Sep 2, 2026
de0b577
chore(governance): stage one-shot settlement source repair
seonghobae Sep 2, 2026
131832d
chore(governance): execute one-shot settlement source repair
seonghobae Sep 2, 2026
d840bc9
chore(governance): retire unusable one-shot workflow
seonghobae Sep 2, 2026
e370c03
chore(governance): remove staged one-shot repair helper
seonghobae Sep 2, 2026
e833930
fix(governance): settle delayed writes across intervening versions
seonghobae Sep 2, 2026
48b20bd
test(governance): regress ambiguous recovery runtime budget
seonghobae Sep 2, 2026
63534b3
fix(governance): cover full recovery settlement runtime
seonghobae Sep 2, 2026
bfd8293
fix(governance): count recovery history reads in runtime budget
seonghobae Sep 2, 2026
563691f
merge: preserve current protected main in governance writer
seonghobae Sep 2, 2026
1924225
test(governance): require full hosted-job recovery headroom
seonghobae Sep 2, 2026
2895cf9
fix(governance): reserve full hosted-runner recovery window
seonghobae Sep 2, 2026
60bf2cb
docs(governance): align runtime record with hosted limit
seonghobae Sep 2, 2026
7350611
fix(governance): preserve fail-closed settlement diagnostics
seonghobae Sep 2, 2026
fd8a315
test(governance): regress post-PUT stale-main cleanup
seonghobae Sep 2, 2026
f0abca0
test(governance): gate post-PUT cleanup regression
seonghobae Sep 2, 2026
bc8f758
fix(governance): finish post-PUT collision cleanup
seonghobae Sep 2, 2026
cf61c75
test(governance): cover successful post-PUT cleanup
seonghobae Sep 2, 2026
1ca11b4
docs(governance): record post-PUT compensation boundary
seonghobae Sep 2, 2026
cd0a299
chore(governance): stage timeout-fixture source fix
seonghobae Sep 2, 2026
9509748
test(governance): align ambiguous PUT settlement fixture
github-actions[bot] Sep 2, 2026
6e92cf9
ci(governance): run one-shot review regression repair
seonghobae Sep 2, 2026
ff5fc4f
chore(governance): remove blocked one-shot repair workflow
seonghobae Sep 2, 2026
061a239
test(governance): prove timeout settlement contract
seonghobae Sep 2, 2026
d5142b9
test(governance): align history settlement diagnostic
seonghobae Sep 2, 2026
ef634b3
test(governance): prove delayed recovery settlement interval
seonghobae Sep 2, 2026
cb27beb
test(governance): cover every permanent focused suite
seonghobae Sep 2, 2026
0f3530c
test(governance): align current collision diagnostics
seonghobae Sep 2, 2026
93a9b95
test(governance): distinguish newer recovery history
seonghobae Sep 2, 2026
4b0b1e3
test(governance): cover post-settlement recovery race
seonghobae Sep 2, 2026
f43ea2a
merge(main): incorporate protected queue-hygiene changes into ruleset…
seonghobae Sep 2, 2026
25ef945
merge(main): preserve completed registry-retirement cleanup
seonghobae Sep 2, 2026
8539892
merge(main): preserve current OpenCode stale-dispatch repair
seonghobae Sep 2, 2026
7698f40
merge(main): preserve current scheduler cadence on governance writer
seonghobae Sep 2, 2026
d0eecd6
merge(main): preserve current scheduler repairs on ruleset writer
seonghobae Sep 2, 2026
8f95e06
merge(main): preserve current scheduler head guard on ruleset writer
seonghobae Sep 2, 2026
fac1e32
merge(main): preserve current control-plane repairs on ruleset writer
seonghobae Sep 2, 2026
545f315
merge(main): preserve latest control-plane integrations on ruleset wr…
seonghobae Sep 2, 2026
528139f
merge(main): preserve latest OpenCode control-plane repair on ruleset…
seonghobae Sep 2, 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
27 changes: 25 additions & 2 deletions .github/workflows/audit-central-ruleset.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,11 @@ jobs:
ORG_LOGIN: ContextualWisdomLab
RULESET_ID: "18156473"
STACKED_RULESET_ID: "21732164"
REPOSITORY_RULESET_ID: "17921150"
RULESET_SENTINEL_REPOSITORY: naruon
run: |
set -euo pipefail
audit_status=0
ruleset_json="$RUNNER_TEMP/central-required-workflow-ruleset.json"
ruleset_with_scope_json="$RUNNER_TEMP/central-required-workflow-ruleset-with-scope.json"
ruleset_error="$RUNNER_TEMP/central-required-workflow-ruleset.error"
Expand Down Expand Up @@ -89,7 +91,21 @@ jobs:
jq --slurpfile scope "$scope_json" \
'. + {"_audit_repository_scope": $scope[0]}' \
"$ruleset_json" >"$ruleset_with_scope_json"
python3 scripts/ci/audit_central_required_workflows.py "$ruleset_with_scope_json"
if ! python3 scripts/ci/audit_central_required_workflows.py "$ruleset_with_scope_json"; then
audit_status=1
fi

repository_ruleset_json="$RUNNER_TEMP/owner-repository-ruleset.json"
repository_ruleset_error="$RUNNER_TEMP/owner-repository-ruleset.error"
repository_ruleset_endpoint="repos/${ORG_LOGIN}/.github/rulesets/${REPOSITORY_RULESET_ID}?includes_parents=true"
if ! gh api "$repository_ruleset_endpoint" >"$repository_ruleset_json" 2>"$repository_ruleset_error"; then
echo "::error::Ruleset audit could not read owner repository ruleset ${REPOSITORY_RULESET_ID}."
sed 's/^/ /' "$repository_ruleset_error"
exit 1
fi
if ! python3 scripts/ci/audit_central_required_workflows.py --repository "$repository_ruleset_json"; then
audit_status=1
fi

stacked_ruleset_json="$RUNNER_TEMP/stacked-opencode-ruleset.json"
stacked_ruleset_error="$RUNNER_TEMP/stacked-opencode-ruleset.error"
Expand All @@ -99,4 +115,11 @@ jobs:
sed 's/^/ /' "$stacked_ruleset_error"
exit 1
fi
python3 scripts/ci/audit_central_required_workflows.py --stacked "$stacked_ruleset_json"
if ! python3 scripts/ci/audit_central_required_workflows.py --stacked "$stacked_ruleset_json"; then
audit_status=1
fi

if [[ "$audit_status" -ne 0 ]]; then
echo "::error::One or more fetched rulesets drift from the declared governance contract."
exit "$audit_status"
Comment thread
seonghobae marked this conversation as resolved.
fi
182 changes: 182 additions & 0 deletions .github/workflows/ruleset-governance-reconcile.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,182 @@
name: Ruleset Governance Reconcile

on:
pull_request:
paths:
- "config/ruleset-governance.json"
- "scripts/ci/audit_central_required_workflows.py"
- "scripts/ci/reconcile_ruleset_governance.py"
- "tests/test_ruleset_governance_reconciliation.py"
- "tests/test_ruleset_governance_review_regressions.py"
- "tests/test_ruleset_governance_review_round2.py"
- "tests/test_ruleset_governance_review_round3.py"
- "tests/test_ruleset_governance_timeout_regression.py"
- "tests/test_ruleset_governance_delayed_recovery_regression.py"
- "tests/test_ruleset_governance_runtime_budget_regression.py"
- "tests/test_ruleset_governance_post_put_cleanup_regression.py"
- "tests/test_central_required_workflow_ruleset_audit.py"
- "tests/test_ruleset_audit_completeness_regression.py"
- "tests/test_ruleset_merge_method_shape_regression.py"
- "tests/test_solo_maintainer_ruleset_policy.py"
- "docs/doctoring/ruleset-owner-plane-reconciliation.md"
- ".github/workflows/ruleset-governance-reconcile.yml"
push:
branches:
- main
paths:
- "config/ruleset-governance.json"
- "scripts/ci/audit_central_required_workflows.py"
- "scripts/ci/reconcile_ruleset_governance.py"
- "tests/test_ruleset_governance_reconciliation.py"
- "tests/test_ruleset_governance_review_regressions.py"
- "tests/test_ruleset_governance_review_round2.py"
- "tests/test_ruleset_governance_review_round3.py"
- "tests/test_ruleset_governance_timeout_regression.py"
- "tests/test_ruleset_governance_delayed_recovery_regression.py"
- "tests/test_ruleset_governance_runtime_budget_regression.py"
- "tests/test_ruleset_governance_post_put_cleanup_regression.py"
- "tests/test_central_required_workflow_ruleset_audit.py"
- "tests/test_ruleset_audit_completeness_regression.py"
- "tests/test_ruleset_merge_method_shape_regression.py"
- "tests/test_solo_maintainer_ruleset_policy.py"
Comment thread
seonghobae marked this conversation as resolved.
- "docs/doctoring/ruleset-owner-plane-reconciliation.md"
- ".github/workflows/ruleset-governance-reconcile.yml"
Comment thread
seonghobae marked this conversation as resolved.
Comment thread
devin-ai-integration[bot] marked this conversation as resolved.
Comment thread
devin-ai-integration[bot] marked this conversation as resolved.
Comment thread
devin-ai-integration[bot] marked this conversation as resolved.
workflow_dispatch:
schedule:
- cron: "31 * * * *"

permissions:
contents: read

concurrency:
group: ruleset-governance-reconcile-${{ github.event_name == 'pull_request' && github.event.pull_request.number || 'owner-plane' }}
# PR validation may safely supersede itself. Privileged owner-plane runs must
# finish their PUT + immutable-history verification/recovery critical section;
# cancelling them after PUT can strand an unverified overwrite.
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
Comment thread
seonghobae marked this conversation as resolved.

jobs:
report-disabled:
if: >-
github.event_name == 'schedule' &&
vars.CWL_RULESET_RECONCILE_ENABLED != 'true'
runs-on: ubuntu-slim
timeout-minutes: 2
steps:
- name: Report disabled owner-plane state
shell: bash
run: >-
echo "Ruleset reconciliation is disabled; provision the protected owner-plane credential and enable variable before live mutation." >> "$GITHUB_STEP_SUMMARY"

validate:
# Source/regression drift is already validated on PR, push, and manual runs.
# A disabled schedule emits only the cheap report-disabled signal above.
if: >-
github.event_name != 'schedule' ||
vars.CWL_RULESET_RECONCILE_ENABLED == 'true'
Comment thread
devin-ai-integration[bot] marked this conversation as resolved.
runs-on: ubuntu-slim
timeout-minutes: 20
steps:
- name: Harden runner
uses: step-security/harden-runner@bf7454d06d71f1098171f2acdf0cd4708d7b5920 # v2.20.0
with:
egress-policy: audit
- name: Check out exact revision
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
persist-credentials: false
- name: Verify exact revision
shell: bash
run: test "$(git rev-parse HEAD)" = "${{ github.event.pull_request.head.sha || github.sha }}"
- name: Set up Python
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: "3.12"
- name: Install hash-locked test tooling
run: >-
python -m pip install --disable-pip-version-check --require-hashes
--only-binary=:all: -r requirements-opencode-review-ci-hashes.txt
- name: Validate reviewed target manifest
run: >-
python scripts/ci/reconcile_ruleset_governance.py
--manifest config/ruleset-governance.json
--validate-only
- name: Prove reconciliation contract at repository quality gates
env:
COVERAGE_RCFILE: /dev/null
run: |
set -euo pipefail
python -m coverage run \
--branch \
--include=scripts/ci/reconcile_ruleset_governance.py \
-m pytest -q \
tests/test_ruleset_governance_reconciliation.py \
tests/test_ruleset_governance_review_regressions.py \
tests/test_ruleset_governance_review_round2.py \
tests/test_ruleset_governance_review_round3.py \
tests/test_ruleset_governance_timeout_regression.py \
tests/test_ruleset_governance_delayed_recovery_regression.py \
tests/test_ruleset_governance_runtime_budget_regression.py \
tests/test_ruleset_governance_post_put_cleanup_regression.py \
tests/test_central_required_workflow_ruleset_audit.py \
tests/test_ruleset_audit_completeness_regression.py \
tests/test_ruleset_merge_method_shape_regression.py \
tests/test_solo_maintainer_ruleset_policy.py
python -m coverage report \
--fail-under=100 \
--show-missing \
--include=scripts/ci/reconcile_ruleset_governance.py
python -m interrogate \
--fail-under 100 \
scripts/ci/reconcile_ruleset_governance.py
git diff --check

apply:
if: >-
github.event_name != 'pull_request' &&
github.ref == 'refs/heads/main' &&
vars.CWL_RULESET_RECONCILE_ENABLED == 'true'
needs: validate
runs-on: ubuntu-24.04
# Use the full documented GitHub-hosted job execution limit so this workflow
# cannot impose an earlier timeout on the 128-minute mutation/recovery bound.
timeout-minutes: 360
environment: ruleset-governance-maintenance
steps:
- name: Harden runner
uses: step-security/harden-runner@bf7454d06d71f1098171f2acdf0cd4708d7b5920 # v2.20.0
with:
egress-policy: audit
- name: Check out trusted default branch
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
ref: ${{ github.sha }}
persist-credentials: false
Comment thread
seonghobae marked this conversation as resolved.
- name: Verify exact trusted revision
shell: bash
run: test "$(git rev-parse HEAD)" = "${GITHUB_SHA}"
- name: Set up Python
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: "3.12"
- name: Require dedicated ruleset administration credential
env:
GH_TOKEN: ${{ secrets.CWL_RULESET_ADMIN_TOKEN }}
shell: bash
run: test -n "${GH_TOKEN}"
- name: Reconcile reviewed ruleset governance
env:
GH_TOKEN: ${{ secrets.CWL_RULESET_ADMIN_TOKEN }}
EXPECTED_MAIN_SHA: ${{ github.sha }}
run: >-
Comment thread
seonghobae marked this conversation as resolved.
python scripts/ci/reconcile_ruleset_governance.py
--manifest config/ruleset-governance.json
--expected-main-sha "$EXPECTED_MAIN_SHA"
- name: Verify post-change convergence from GitHub
env:
GH_TOKEN: ${{ secrets.CWL_RULESET_ADMIN_TOKEN }}
run: >-
python scripts/ci/reconcile_ruleset_governance.py
--manifest config/ruleset-governance.json
--verify-only
20 changes: 20 additions & 0 deletions config/ruleset-governance.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"schema_version": 1,
"organization": "ContextualWisdomLab",
"targets": [
{
"scope": "repository",
"owner": "ContextualWisdomLab",
"repository": ".github",
"ruleset_id": 17921150,
"name": "Lock default branch"
},
{
"scope": "organization",
"owner": "ContextualWisdomLab",
"repository": null,
"ruleset_id": 18156473,
"name": "CWL Central required workflows"
}
]
}
Loading
Loading