Skip to content

feat(governance): require central Noema review - #613

Merged
seonghobae merged 7 commits into
mainfrom
fix/central-noema-required-workflow
Jul 29, 2026
Merged

feat(governance): require central Noema review#613
seonghobae merged 7 commits into
mainfrom
fix/central-noema-required-workflow

Conversation

@seonghobae

@seonghobae seonghobae commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Summary

  • register the existing fail-closed noema-review.yml as the seventh organization required workflow
  • audit the exact two-approval policy and align exclusions with the live .github, noema, and IRT-bibliography-set scope
  • restore Argos inheritance and expand the scheduled repository audit from public-only to all repositories visible to the organization credential
  • document current-head external Noema proof and the live rollout evidence

Live evidence

  • organization ruleset 18156473 is active with exactly seven required workflows and exactly two approving reviews; stale-review dismissal, last-push approval, and thread resolution remain enforced
  • a type=all audit covered 41 accessible repositories: only the three intended exclusions are not inherited, while all other 38 repositories inherit the ruleset
  • ContextualWisdomLab/argos#299 now inherits the central ruleset; its already-open PR needs a new natural PR event before the newly required workflow is scheduled
  • ContextualWisdomLab/clearfolio#161 has an exact-current-head Noema App approval on 4512fb9e9b56ab95df3acd85ebec2e6b849335a7

Validation

  • actionlint
  • python3 -m pytest -q — 635 passed
  • live organization ruleset audit — PASS
  • full 41-repository inherited-scope recreation — PASS

Summary by CodeRabbit

  • 변경 사항
    • 중앙 필수 워크플로 감사 범위가 공개 저장소에서 조직 내 전체 저장소로 확대되었습니다.
    • 중앙 필수 워크플로에 Noema 리뷰 단계가 추가되었습니다.
    • 병합 조건이 정확히 2개의 승인 리뷰를 요구하도록 변경되었습니다.
    • 저장소 예외 및 워크플로 드리프트 검증 기준이 최신 정책에 맞게 조정되었습니다.
    • 관련 운영 문서와 자동화 검증이 새로운 감사 범위와 승인 정책을 반영하도록 업데이트되었습니다.

Copilot AI review requested due to automatic review settings July 22, 2026 21:44
@seonghobae seonghobae moved this from Todo to In Progress in naruon Platform Roadmap Jul 22, 2026

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the org-wide governance contract around the “CWL Central required workflows” ruleset by making the existing fail-closed Noema review workflow a required check, tightening the audit to enforce an exact two-approval policy, and expanding the scheduled audit to cover all repositories visible to the audit credential (not public-only). This keeps the repo’s ruleset-audit code/tests/docs aligned with the live organization ruleset configuration.

Changes:

  • Add .github/workflows/noema-review.yml to the central required workflow list and extend audit tests to detect drift for the Noema workflow.
  • Update ruleset audit expectations: enforce exactly two approving reviews; align repository exclusions and inherited-scope probes (including IRT-bibliography-set, restoring Argos inheritance).
  • Expand the scheduled ruleset audit repository enumeration from type=public to type=all and update rollout documentation accordingly.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

File Description
tests/test_central_required_workflow_ruleset_audit.py Updates expected ruleset payload, exclusions, inherited-scope probes, and adds a targeted drift test for the Noema required workflow.
scripts/ci/audit_central_required_workflows.py Aligns the live-audit contract with the updated ruleset: adds Noema workflow requirement, updates exclusions, and requires exactly two approvals.
docs/org-required-workflow-rollout.md Documents Noema as an active required workflow, two-approval policy, all-repo scope, and current rollout evidence.
.github/workflows/audit-central-ruleset.yml Updates scheduled audit to enumerate org-visible repositories (type=all) and adjusts messaging to “organization” scope.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread .github/workflows/audit-central-ruleset.yml
Copilot AI review requested due to automatic review settings July 22, 2026 21:49

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated no new comments.

Copilot AI review requested due to automatic review settings July 22, 2026 21:59

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.

Comment thread docs/org-required-workflow-rollout.md Outdated
Copilot AI review requested due to automatic review settings July 22, 2026 22:08

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 5 out of 5 changed files in this pull request and generated no new comments.

@opencode-agent opencode-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

OpenCode reviewed the current-head mergeability evidence and changed-file flow before approval, then found merge conflicts on the affected path.

Findings

1. HIGH Merge Conflict Guidance - Resolve the PR branch against the latest base branch

  • Problem: GitHub reports mergeStateStatus DIRTY for this pull request.
  • Root cause: Branch fix/central-noema-required-workflow cannot be merged cleanly into main; the changed-file flow below shows which review/runtime path is blocked by the conflict.
  • Fix: Merge or rebase the latest main into fix/central-noema-required-workflow, resolve conflict markers in the PR branch, rerun the focused checks, and push the same branch.
  • Repair commands:
gh pr checkout 613 --repo ContextualWisdomLab/.github
git fetch origin main
git merge --no-ff origin/main  # or: git rebase origin/main
git status --short
# resolve files, then git add <resolved-files>
# merge path: git commit
# rebase path: git rebase --continue
git push origin HEAD:fix/central-noema-required-workflow
# rebase path only: git push --force-with-lease origin HEAD:fix/central-noema-required-workflow
  • Regression test: Keep OpenCode approval gated on mergeability so model-output failures cannot approve a conflicted PR.

Merge Conflict Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Workflow: audit-central-ruleset.yml"]
  S1 --> I1["GitHub Actions review job"]
  I1 --> Conflict["Merge conflict blocks this path"]
  Conflict --> V1["actionlint plus required checks"]
  Evidence --> S2["Docs: org-required-workflow-rollout.md"]
  S2 --> I2["operator or user guidance"]
  I2 --> Conflict["Merge conflict blocks this path"]
  Conflict --> V2["docs review"]
  Evidence --> S3["Changed file: requirements-strix-ci-hashes.txt"]
  S3 --> I3["repository behavior"]
  I3 --> Conflict["Merge conflict blocks this path"]
  Conflict --> V3["required checks"]
  Evidence --> S4["CI script: audit_central_required_workflows.py"]
  S4 --> I4["review and security gate shell path"]
  I4 --> Conflict["Merge conflict blocks this path"]
  Conflict --> V4["bash -n plus Strix self-test"]
  Evidence --> S5["Test: test_central_required_workflow_ruleset_audit.py"]
  S5 --> I5["regression suite"]
  I5 --> Conflict["Merge conflict blocks this path"]
  Conflict --> V5["targeted test run"]
Loading
  • Result: REQUEST_CHANGES
  • Reason: mergeStateStatus is DIRTY; mergeable is CONFLICTING.
  • Head SHA: d5138ead01c23d06600298e3089d656dcddda6ae
  • Workflow run: 29962146730
  • Workflow attempt: 1

Changed-File Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Workflow: audit-central-ruleset.yml"]
  S1 --> I1["GitHub Actions review job"]
  I1 --> Conflict["Merge conflict blocks this path"]
  Conflict --> V1["actionlint plus required checks"]
  Evidence --> S2["Docs: org-required-workflow-rollout.md"]
  S2 --> I2["operator or user guidance"]
  I2 --> Conflict["Merge conflict blocks this path"]
  Conflict --> V2["docs review"]
  Evidence --> S3["Changed file: requirements-strix-ci-hashes.txt"]
  S3 --> I3["repository behavior"]
  I3 --> Conflict["Merge conflict blocks this path"]
  Conflict --> V3["required checks"]
  Evidence --> S4["CI script: audit_central_required_workflows.py"]
  S4 --> I4["review and security gate shell path"]
  I4 --> Conflict["Merge conflict blocks this path"]
  Conflict --> V4["bash -n plus Strix self-test"]
  Evidence --> S5["Test: test_central_required_workflow_ruleset_audit.py"]
  S5 --> I5["regression suite"]
  I5 --> Conflict["Merge conflict blocks this path"]
  Conflict --> V5["targeted test run"]
Loading

@opencode-agent

Copy link
Copy Markdown
Contributor

OpenCode Review Overview

  • Head SHA: d5138ead01c23d06600298e3089d656dcddda6ae
  • Workflow run: 29962146730
  • Workflow attempt: 1
  • Gate result: REQUEST_CHANGES (approval step)

Pull request overview

OpenCode reviewed the current-head mergeability evidence and changed-file flow before approval, then found merge conflicts on the affected path.

Findings

1. HIGH Merge Conflict Guidance - Resolve the PR branch against the latest base branch

  • Problem: GitHub reports mergeStateStatus DIRTY for this pull request.
  • Root cause: Branch fix/central-noema-required-workflow cannot be merged cleanly into main; the changed-file flow below shows which review/runtime path is blocked by the conflict.
  • Fix: Merge or rebase the latest main into fix/central-noema-required-workflow, resolve conflict markers in the PR branch, rerun the focused checks, and push the same branch.
  • Repair commands:
gh pr checkout 613 --repo ContextualWisdomLab/.github
git fetch origin main
git merge --no-ff origin/main  # or: git rebase origin/main
git status --short
# resolve files, then git add <resolved-files>
# merge path: git commit
# rebase path: git rebase --continue
git push origin HEAD:fix/central-noema-required-workflow
# rebase path only: git push --force-with-lease origin HEAD:fix/central-noema-required-workflow
  • Regression test: Keep OpenCode approval gated on mergeability so model-output failures cannot approve a conflicted PR.

Merge Conflict Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Workflow: audit-central-ruleset.yml"]
  S1 --> I1["GitHub Actions review job"]
  I1 --> Conflict["Merge conflict blocks this path"]
  Conflict --> V1["actionlint plus required checks"]
  Evidence --> S2["Docs: org-required-workflow-rollout.md"]
  S2 --> I2["operator or user guidance"]
  I2 --> Conflict["Merge conflict blocks this path"]
  Conflict --> V2["docs review"]
  Evidence --> S3["Changed file: requirements-strix-ci-hashes.txt"]
  S3 --> I3["repository behavior"]
  I3 --> Conflict["Merge conflict blocks this path"]
  Conflict --> V3["required checks"]
  Evidence --> S4["CI script: audit_central_required_workflows.py"]
  S4 --> I4["review and security gate shell path"]
  I4 --> Conflict["Merge conflict blocks this path"]
  Conflict --> V4["bash -n plus Strix self-test"]
  Evidence --> S5["Test: test_central_required_workflow_ruleset_audit.py"]
  S5 --> I5["regression suite"]
  I5 --> Conflict["Merge conflict blocks this path"]
  Conflict --> V5["targeted test run"]
Loading
  • Result: REQUEST_CHANGES
  • Reason: mergeStateStatus is DIRTY; mergeable is CONFLICTING.
  • Head SHA: d5138ead01c23d06600298e3089d656dcddda6ae
  • Workflow run: 29962146730
  • Workflow attempt: 1

Changed-File Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Workflow: audit-central-ruleset.yml"]
  S1 --> I1["GitHub Actions review job"]
  I1 --> Conflict["Merge conflict blocks this path"]
  Conflict --> V1["actionlint plus required checks"]
  Evidence --> S2["Docs: org-required-workflow-rollout.md"]
  S2 --> I2["operator or user guidance"]
  I2 --> Conflict["Merge conflict blocks this path"]
  Conflict --> V2["docs review"]
  Evidence --> S3["Changed file: requirements-strix-ci-hashes.txt"]
  S3 --> I3["repository behavior"]
  I3 --> Conflict["Merge conflict blocks this path"]
  Conflict --> V3["required checks"]
  Evidence --> S4["CI script: audit_central_required_workflows.py"]
  S4 --> I4["review and security gate shell path"]
  I4 --> Conflict["Merge conflict blocks this path"]
  Conflict --> V4["bash -n plus Strix self-test"]
  Evidence --> S5["Test: test_central_required_workflow_ruleset_audit.py"]
  S5 --> I5["regression suite"]
  I5 --> Conflict["Merge conflict blocks this path"]
  Conflict --> V5["targeted test run"]
Loading

Merge Conflict Guidance

  • Current merge state: DIRTY
  • Base branch: main
  • Head branch: fix/central-noema-required-workflow
  • Fix direction: merge or rebase origin/main into fix/central-noema-required-workflow, resolve conflict markers in the changed files, rerun the focused checks, then push the same branch.
  • Repair commands:
gh pr checkout 613 --repo ContextualWisdomLab/.github
git fetch origin main
git merge --no-ff origin/main  # or: git rebase origin/main
git status --short
# resolve files, then git add <resolved-files>
# merge path: git commit
# rebase path: git rebase --continue
git push origin HEAD:fix/central-noema-required-workflow
# rebase path only: git push --force-with-lease origin HEAD:fix/central-noema-required-workflow

…uired-workflow

# Conflicts:
#	requirements-strix-ci-hashes.txt
Copilot AI review requested due to automatic review settings July 26, 2026 12:14
@coderabbitai

coderabbitai Bot commented Jul 26, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@seonghobae, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 26 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 44a04ee0-d4f1-40f6-9b3b-10102e1a68f1

📥 Commits

Reviewing files that changed from the base of the PR and between 437fa49 and a11b998.

📒 Files selected for processing (3)
  • scripts/ci/pr_review_merge_scheduler.py
  • tests/test_central_required_workflow_ruleset_audit.py
  • tests/test_pr_review_merge_scheduler.py
📝 Walkthrough

Walkthrough

중앙 required workflow 감사가 public 저장소 기준에서 조직 저장소 기준으로 확장되었습니다. Noema workflow와 정확히 두 개의 승인 리뷰가 필수 정책에 추가되었고, 감사 스크립트·CI 워크플로·테스트·롤아웃 문서가 새 기준에 맞게 갱신되었습니다.

Changes

중앙 required workflow 감사

Layer / File(s) Summary
감사 정책과 규칙셋 검증
scripts/ci/audit_central_required_workflows.py
required workflow 목록에 noema-review.yml을 추가하고, 저장소 제외 목록과 상속 탐사 메시지 및 승인 리뷰 검증을 갱신했습니다.
조직 저장소 열거 범위
.github/workflows/audit-central-ruleset.yml
조직 저장소 API 필터를 type=all로 변경하고, 저장소 범위 단계명·중간 파일명·오류 메시지를 갱신했습니다.
감사 계약 테스트
tests/test_central_required_workflow_ruleset_audit.py
새 workflow 누락, 상속 범위, 구조적 드리프트와 정확히 두 개의 승인 리뷰 정책에 대한 테스트 기대값을 갱신했습니다.
롤아웃 기준 문서
docs/org-required-workflow-rollout.md
중앙 workflow 목록, 기준 ref, Noema 승인 조건, 상속 범위와 감사 증거를 최신 기준으로 정리했습니다.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Suggested reviewers: copilot

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 중앙 Noema 리뷰를 필수 워크플로로 요구하는 핵심 변경을 정확히 요약합니다.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/central-noema-required-workflow

Comment @coderabbitai help to get the list of available commands.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

Comment thread tests/test_central_required_workflow_ruleset_audit.py
Copilot AI review requested due to automatic review settings July 26, 2026 12:24

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated no new comments.

@seonghobae
seonghobae enabled auto-merge July 29, 2026 00:06
@seonghobae
seonghobae dismissed opencode-agent[bot]’s stale review July 29, 2026 00:44

Superseded: merge-conflict review targeted d5138ea; current head a11b998 is mergeable, fully retested, and has zero open current-head review threads.

@opencode-agent
opencode-agent Bot disabled auto-merge July 29, 2026 00:44
@seonghobae
seonghobae merged commit 34d7487 into main Jul 29, 2026
51 of 52 checks passed
@seonghobae
seonghobae deleted the fix/central-noema-required-workflow branch July 29, 2026 00:47
@github-project-automation github-project-automation Bot moved this from In Progress to Done in naruon Platform Roadmap Jul 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants