Skip to content

feat(automation): coordinate hourly organization readiness - #832

Open
seonghobae wants to merge 36 commits into
mainfrom
feat/organization-commercial-readiness-coordinator
Open

feat(automation): coordinate hourly organization readiness#832
seonghobae wants to merge 36 commits into
mainfrom
feat/organization-commercial-readiness-coordinator

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Purpose

Add one organization-central hourly coordinator for the complete ContextualWisdomLab repository fleet without creating a second merge engine or competing with repositories that already own an enabled dedicated writer loop.

Live-state rationale

Protected central main already runs an organization-wide review/merge sweep every 15 minutes. Duplicating that implementation would increase Actions load and create conflicting merge decisions. The missing boundary is a bounded hourly coordinator that can:

  1. discover every organization-owned, non-fork, enabled, non-archived repository the authenticated maintainer installation can write;
  2. treat enabled scheduled commercial/development/maintenance/review-repair workflows and fully paginated queued/running writer executions as repository-writer leases;
  3. dispatch at most one central review-repair target per hour from direct, non-draft pull requests;
  4. independently dispatch at most one zero-PR product-development target in another repository when that repository explicitly exposes a safe manual entrypoint; and
  5. refetch exact repository, workflow, run, and PR state immediately before every dispatch.

This PR deliberately does not modify pr-review-merge-scheduler.yml, pr-review-fix-scheduler.yml, or the autofix worker currently changed by other central PRs.

Safety and authority boundary

  • exact schedule: minute 7 of every hour, away from the minute-zero load spike;
  • schedule-only central entrypoint; no branch-selected workflow_dispatch path;
  • organization-level single flight with no cancellation of an active pass;
  • one review-repair dispatch and one product-development dispatch maximum per run;
  • no github.token or reviewer-token fallback for cross-repository work;
  • requires only the established maintainer-scoped PR_REVIEW_MERGE_TOKEN, scoped to the final dispatch shell step;
  • OPENCODE_APPROVE_TOKEN remains isolated to the reviewer credential chain;
  • coordinator receives neither NVIDIA_NIM_API_KEY nor COPILOT_GITHUB_TOKEN;
  • checkout uses persist-credentials: false;
  • disabled workflows do not hold leases;
  • unreadable active high-signal workflows fail closed as leased;
  • the organization-required merge scheduler is excluded from writer classification;
  • drafts and stacked non-default-base PRs are not generic repair targets;
  • any default SHA, workflow source/state, active run, PR head/base/draft/update, or newly appearing writer movement invalidates predecessor selection evidence;
  • product development requires zero open PRs and an active manual-only workflow marked # cwl-org-commercial-entrypoint: v1, with concurrency, NVIDIA_NIM_API_KEY, no schedule, and no COPILOT_GITHUB_TOKEN.

A missing compliant product entrypoint is a no-op, not permission for the central workflow to inject a writer into an arbitrary repository. Existing scheduled repository loops retain their leases and continue operating independently.

Operability and evidence

  • workflow source is fetched only for high-signal writer candidates, avoiding one contents request for every ordinary CI/security workflow;
  • active-run and pull-request inventories are paginated beyond the first 100 records;
  • a fleet-wide inspection outage and a run in which every selected dispatch fails return a nonzero conclusion;
  • partial independent failures remain recorded without discarding successful work;
  • the exact JSON receipt is uploaded with a SHA-pinned artifact action and retained for three days;
  • artifact upload receives no maintainer or model credential.

TDD and hosted repair evidence

The first branch commit 60f6f2c5d91cfb0dc66c78b4f6d93cff69881f31 added the writer-lease contract before the coordinator module existed, so collection failed on the intentionally absent import.

Hosted run 31258006346 exposed a test-packaging defect: split test modules imported a helper from tests/ as though it were a top-level module. A permanent import contract was added first; the helper now has an import-stable repository-root identity and the focused gate uses pytest --import-mode=importlib.

Exact head 03a9124322c4f80d91eb4ccc4742821fcf11c304 passed the focused quality gate, but Strix run 31258235842 correctly rejected the central workflow_dispatch entrypoint under the repository-wide no-branch-selected-manual-dispatch policy. The entrypoint was removed and reviewer/maintainer credentials were separated.

Later RED heads captured active-run pagination, fixed organization scope, step-scoped maintainer credentials, fleet-wide operational failures, writer-source API-call bounds, strict NVIDIA/manual product opt-in, and durable JSON receipt requirements before their implementations.

Exact-current-head state

  • protected base: main at 6eb06cdd08c79a06f7b390069d4ffa49e2eb7dba;
  • exact current head: 9f46ea9dd067d2b30a042710ab0ce022513b13f6;
  • GitHub mergeability: clean/mergeable;
  • unresolved inline review threads: zero;
  • exact-head focused quality run 31260065881: success;
  • Python: 3.14.6;
  • tests: 31 passed;
  • production coverage: 358/358 statements and 82/82 branches, 100%;
  • exact-head checkout, compileall, and clean-worktree verification: success;
  • Scorecard PR, SBOM Generation, OSV-Scanner PR, Secret Scan, SAST Semgrep, Security Scan, CodeQL PR, Python Security, and Strix Changed Path Quality CI: success;
  • CodeRabbit commit status: success, but the current-head full review attempt remains rate-limited and status-only evidence is not a formal review;
  • qualifying independent non-author approval: absent. The independent-reviewers team request is not currently resolvable for this repository.

The only submitted formal review is a predecessor-head CodeRabbit COMMENTED review. Its valid findings were implemented test-first and all inline threads are resolved, but that review does not transfer to the current head. Exact current-head @opencode-agent and @cwl-noema-review invocations were submitted through the supported comment path; no qualifying formal current-head approval has yet been recorded.

Activation and merge gate

Scheduled workflows execute only from protected main; this loop is not active while this PR is unmerged. Every exact-head quality, security, and supply-chain check currently passes. Merge remains prohibited until current-head automated review requirements are satisfied, a qualifying independent non-author approval exists, and branch protection/repository policy accept the unchanged head without bypass.

No queued, pending, skipped-required, cancelled, absent, neutral-required, stale-head, predecessor-head, status-only, author-only, synthetic-merge-only, or failed evidence is accepted as success.

@coderabbitai

coderabbitai Bot commented Aug 8, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

시간별 중앙 워크플로와 상업 준비성 코디네이터를 추가했습니다. 코디네이터는 저장소 상태와 writer lease를 검증하고, 제한된 리뷰 복구 및 제품 개발 작업을 디스패치합니다. Python 테스트와 품질 CI가 정책, 오류 처리, 출력 형식, 커버리지를 검증합니다.

Changes

조직 상업 준비성 코디네이터

Layer / File(s) Summary
코디네이터 정책 및 실행
scripts/ci/organization_commercial_readiness_loop.py, docs/doctoring/..., CHANGELOG.md
GitHub 인벤토리 수집, writer 및 제품 진입점 판별, 회전 계획, 디스패치 직전 재검증, 오류 처리, JSON·Markdown 보고서를 추가했습니다. 운영 정책과 롤백 절차도 문서화했습니다.
워크플로 실행 및 품질 게이트
.github/workflows/organization-commercial-readiness-loop.yml, .github/workflows/organization-commercial-readiness-loop-quality-ci.yml
시간별 중앙 실행, 토큰 검증, 정확한 커밋 체크아웃, 제한된 권한, 해시 고정 의존성, 100% 브랜치 커버리지 및 작업 트리 검증을 구성했습니다.
인벤토리 및 정책 검증
organization_commercial_readiness_fixtures.py, tests/test_organization_commercial_readiness_loop*.py
저장소·워크플로·실행·PR 판별, 페이지네이션, snapshot fingerprint, 회전 계획, dispatch payload 및 보고서 직렬화를 검증했습니다.
코디네이터 및 계약 검증
tests/test_organization_commercial_readiness_loop_coordinator.py, tests/test_organization_commercial_readiness_loop_credential_contract.py, tests/test_organization_commercial_readiness_loop_import_contract.py
정상 디스패치, 상태 변경, lease, API 오류, dry-run, CLI 출력, 인증 계약 및 품질 CI import 계약을 검증했습니다.

Estimated code review effort: 4 (Complex) | ~60 minutes

Sequence Diagram(s)

sequenceDiagram
  participant HourlyWorkflow
  participant Coordinator
  participant GitHubAPI
  participant RepositoryWorkflow
  HourlyWorkflow->>Coordinator: 예약 실행
  Coordinator->>GitHubAPI: 저장소, 워크플로, 실행, PR 조회
  Coordinator->>GitHubAPI: 디스패치 직전 상태 재조회
  Coordinator->>RepositoryWorkflow: 리뷰 복구 또는 제품 개발 디스패치
  Coordinator->>HourlyWorkflow: 실행 보고서 생성
Loading

Possibly related issues

Possibly related PRs

Suggested reviewers: opencode-agent

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed Docstring coverage is 88.33% which is sufficient. The required threshold is 80.00%.
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.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목은 조직 상용 준비성 코디네이터의 시간별 자동화라는 주요 변경 사항을 간결하고 정확하게 설명합니다.
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/organization-commercial-readiness-coordinator

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

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@opencode-agent review

@cwl-noema-review

Please review exact current head cdc30199947186c5e72550dcd98fdbaf07d28d0d only. Treat all predecessor-head checks, statuses, comments, and conclusions as historical evidence.

@coderabbitai

coderabbitai Bot commented Aug 8, 2026

Copy link
Copy Markdown

@seonghobae I will review only commit cdc30199947186c5e72550dcd98fdbaf07d28d0d. I will treat all predecessor-head evidence as historical context.

⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@seonghobae
seonghobae marked this pull request as ready for review August 8, 2026 13:06

@coderabbitai coderabbitai Bot 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.

Actionable comments posted: 7

🧹 Nitpick comments (6)
scripts/ci/organization_commercial_readiness_loop.py (3)

726-731: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

함수 이름이 동작과 일치하지 않습니다.

_positive_int는 0을 허용합니다. 오류 문구도 "value must be zero or greater"입니다. _non_negative_int로 이름을 바꾸면 의도가 명확해집니다.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/ci/organization_commercial_readiness_loop.py` around lines 726 - 731,
Rename the _positive_int argument parser helper to _non_negative_int so its name
reflects that zero is valid, and update every reference to the helper
accordingly. Preserve its current validation and error message behavior.

762-786: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick win

모든 저장소 검사가 실패해도 종료 코드가 0입니다.

run_onceinspection_errorsdispatch_failed를 보고서에만 기록합니다. main은 항상 0을 반환합니다. 토큰이 만료되거나 조직 전체 API가 실패하면 매시간 실행이 성공으로 표시됩니다. 운영자는 실패를 인지하지 못합니다.

선택된 저장소가 있는데 스냅샷이 하나도 성공하지 않은 경우, 또는 계획된 모든 디스패치가 dispatch_failed인 경우에 비영(非零) 종료 코드를 반환하십시오. 부분 실패는 현재대로 0을 유지해도 됩니다.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/ci/organization_commercial_readiness_loop.py` around lines 762 - 786,
Update main’s result handling after run_once to return a nonzero exit code when
repositories were selected but none produced a successful snapshot, or when
every planned dispatch is marked dispatch_failed. Preserve exit code 0 for
successful runs and partial failures, and use the report fields populated by
run_once rather than changing its reporting behavior.

315-363: 🚀 Performance & Scalability | 🔵 Trivial | 🏗️ Heavy lift

API 호출량과 rate limit을 확인하십시오.

이 메서드는 워크플로 1개마다 contents 요청을 1회 추가합니다. snapshot()은 대상 저장소마다 이 목록을 조회하고, 계획된 대상은 디스패치 직전에 다시 조회합니다. MAX_REPOSITORIES가 200이고 저장소당 워크플로가 10개이면 한 번의 패스에서 수천 건의 REST 호출이 발생합니다. 사용자 토큰의 시간당 5,000건 한도에 근접합니다. 한도를 초과하면 snapshot()GitHubError를 발생시키고, 모든 저장소가 inspection error로 기록됩니다.

writer 신호 이름/경로가 일치하는 워크플로에 대해서만 소스를 가져오면 호출량을 크게 줄일 수 있습니다. is_dedicated_writer_workflowis_manual_product_entrypoint는 모두 _writer_signal을 요구하므로, 그 외 워크플로의 본문은 정책 판단에 사용되지 않습니다. 다만 이 변경은 fingerprintcontent_sha 의미를 바꾸므로 테스트 갱신이 필요합니다.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/ci/organization_commercial_readiness_loop.py` around lines 315 - 363,
Update list_workflows to fetch content only for workflows whose name or path
matches the existing writer-signal criteria, reusing
is_dedicated_writer_workflow and is_manual_product_entrypoint or the shared
_writer_signal logic. Keep metadata collection for all workflows, but leave
content and content_sha empty for non-matching workflows; update
fingerprint-related tests and expectations to reflect the narrower content_sha
coverage.
.github/workflows/organization-commercial-readiness-loop.yml (1)

61-68: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

JSON 보고서가 실행 종료와 함께 사라집니다.

--json-output$RUNNER_TEMP에 기록합니다. 러너는 작업 종료 시 이 디렉터리를 삭제합니다. 스크립트 docstring은 "auditable receipts"를 남긴다고 서술합니다. 남는 증적은 job summary 마크다운뿐입니다.

JSON을 보존하려면 actions/upload-artifact로 업로드하십시오. 보존 기간을 짧게 설정하면 저장 비용도 제한됩니다.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/organization-commercial-readiness-loop.yml around lines 61
- 68, Preserve the JSON report generated by the organization commercial
readiness loop by adding an actions/upload-artifact step after validation with
python -m json.tool. Upload the file from
organization-commercial-readiness-loop.json and configure a short retention
period so the auditable receipt survives runner cleanup without unnecessary
storage.
tests/test_organization_commercial_readiness_loop_policy.py (1)

56-62: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

정책 부정 케이스 두 개가 빠졌습니다.

is_manual_product_entrypointNVIDIA_NIM_API_KEY 존재와 workflow_dispatch 트리거를 함께 요구합니다(scripts/ci/organization_commercial_readiness_loop.py:478-493). 현재 변형 목록은 schedule 추가, COPILOT_GITHUB_TOKEN 추가, 마커 제거, concurrency 제거만 다룹니다. 두 필수 조건이 회귀로 삭제되어도 테스트는 통과합니다.

변형 목록에 두 케이스를 추가하십시오.

♻️ 변형 추가 제안
     for changed in (
         (safe.content or "") + 'schedule:\n  - cron: "1 * * * *"\n',
         (safe.content or "") + "COPILOT_GITHUB_TOKEN: forbidden\n",
         (safe.content or "").replace("# cwl-org-commercial-entrypoint: v1\n", ""),
         (safe.content or "").replace("concurrency:\n", ""),
+        (safe.content or "").replace("NVIDIA_NIM_API_KEY", "OTHER_API_KEY"),
+        (safe.content or "").replace("on:\n  workflow_dispatch:\n", "on:\n  push:\n"),
     ):
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/test_organization_commercial_readiness_loop_policy.py` around lines 56
- 62, Extend the negative-case variants in the test around
is_manual_product_entrypoint by adding cases that remove the NVIDIA_NIM_API_KEY
and remove the workflow_dispatch trigger from the workflow content. Keep the
existing variants unchanged and assert both new mutations are still rejected.
tests/test_organization_commercial_readiness_loop.py (1)

9-20: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

중복 검증을 정리하면 좋습니다.

이 테스트는 tests/test_organization_commercial_readiness_loop_policy.pytest_static_and_live_writer_lease_policy 첫 단언(Line 38)과 동일한 조건을 확인합니다. 또한 다른 테스트는 organization_commercial_readiness_fixtures.workflow로 레코드를 만들지만, 이 파일만 WorkflowRecord를 직접 생성합니다. 필드가 바뀌면 두 곳을 따로 고쳐야 합니다.

이 파일을 제거하고 정책 테스트로 통합하거나, 최소한 공용 fixture 헬퍼를 사용하십시오.

♻️ fixture 헬퍼 사용 예시
-from scripts.ci.organization_commercial_readiness_loop import (
-    WorkflowRecord,
-    is_dedicated_writer_workflow,
-)
+from organization_commercial_readiness_fixtures import workflow
+from scripts.ci.organization_commercial_readiness_loop import (
+    is_dedicated_writer_workflow,
+)
 
 
 def test_active_scheduled_writer_claims_the_repository_lease() -> None:
     """An enabled scheduled product writer excludes the generic coordinator."""
-    workflow = WorkflowRecord(
-        workflow_id=1,
-        name="Hourly Product Development",
-        path=".github/workflows/hourly-product-development.yml",
-        state="active",
-        content_sha="sha-1",
-        content='on:\n  schedule:\n    - cron: "37 * * * *"\n',
-    )
-
-    assert is_dedicated_writer_workflow(workflow)
+    record = workflow(content='on:\n  schedule:\n    - cron: "37 * * * *"\n')
+
+    assert is_dedicated_writer_workflow(record)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/test_organization_commercial_readiness_loop.py` around lines 9 - 20,
Remove the duplicate test_active_scheduled_writer_claims_the_repository_lease
test and rely on the existing test_static_and_live_writer_lease_policy coverage,
or refactor it to use the shared
organization_commercial_readiness_fixtures.workflow helper instead of
constructing WorkflowRecord directly. Keep the lease-policy assertion covered
without maintaining duplicate workflow data.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@scripts/ci/organization_commercial_readiness_loop.py`:
- Around line 496-511: Use one organization-derived central repository
identifier consistently: update repository_is_eligible and build_plan to exclude
the same derived name, and pass that organization-specific value through
dispatch_review_repair instead of using a hardcoded ContextualWisdomLab/.github
target. Preserve --organization as a variable CLI parameter and ensure all
central-repository checks and dispatches use it.
- Around line 365-382: Update
OrganizationCommercialReadinessLoop.list_active_runs to paginate each status
query until a page returns fewer than 100 workflow runs, placing the page
parameter after per_page in the URL as `...&page={page}`. Preserve collection of
all returned RunRecord entries and stop paging only when the current page is
incomplete.

In `@tests/test_organization_commercial_readiness_loop_credential_contract.py`:
- Around line 16-20: Extend the assertions in the credential contract test to
verify that the workflow checkout step includes persist-credentials: false. Keep
the existing GH_TOKEN and forbidden-setting checks unchanged, and ensure the
test fails if this checkout credential-isolation setting is removed.

In `@tests/test_organization_commercial_readiness_loop_github.py`:
- Line 37: 테스트 더미 토큰을 검증하는 assert 문에 Ruff S105 억제를 추가하십시오.
`kwargs["env"]["GH_TOKEN"]` 검증은 그대로 유지하고, 해당 줄에 S105 전용 `noqa` 주석을 붙여 린트 경고만
억제하십시오.
- Around line 146-174: Update the fake request handler in the test around fake
and its actions/runs branch to parse the page query parameter and return the
existing workflow run only for page 1, then return an empty workflow_runs list
from page 2 onward. Preserve the current status-based response and assertions so
list_active_runs can exercise pagination and terminate.

In `@tests/test_organization_commercial_readiness_loop_run_pagination.py`:
- Around line 20-21: Update the page parsing in the test to split on the exact
query parameter delimiter "&page=" so per_page cannot be matched, while
preserving integer conversion of the actual page value.
- Around line 51-55: Update list_active_runs to iterate through pagination for
each run status, requesting subsequent pages whenever a page returns 100 records
or otherwise indicates more results. Aggregate all pages into the returned
records so 101 active runs are included and the page=2 request is generated,
while preserving the existing status filtering behavior.

---

Nitpick comments:
In @.github/workflows/organization-commercial-readiness-loop.yml:
- Around line 61-68: Preserve the JSON report generated by the organization
commercial readiness loop by adding an actions/upload-artifact step after
validation with python -m json.tool. Upload the file from
organization-commercial-readiness-loop.json and configure a short retention
period so the auditable receipt survives runner cleanup without unnecessary
storage.

In `@scripts/ci/organization_commercial_readiness_loop.py`:
- Around line 726-731: Rename the _positive_int argument parser helper to
_non_negative_int so its name reflects that zero is valid, and update every
reference to the helper accordingly. Preserve its current validation and error
message behavior.
- Around line 762-786: Update main’s result handling after run_once to return a
nonzero exit code when repositories were selected but none produced a successful
snapshot, or when every planned dispatch is marked dispatch_failed. Preserve
exit code 0 for successful runs and partial failures, and use the report fields
populated by run_once rather than changing its reporting behavior.
- Around line 315-363: Update list_workflows to fetch content only for workflows
whose name or path matches the existing writer-signal criteria, reusing
is_dedicated_writer_workflow and is_manual_product_entrypoint or the shared
_writer_signal logic. Keep metadata collection for all workflows, but leave
content and content_sha empty for non-matching workflows; update
fingerprint-related tests and expectations to reflect the narrower content_sha
coverage.

In `@tests/test_organization_commercial_readiness_loop_policy.py`:
- Around line 56-62: Extend the negative-case variants in the test around
is_manual_product_entrypoint by adding cases that remove the NVIDIA_NIM_API_KEY
and remove the workflow_dispatch trigger from the workflow content. Keep the
existing variants unchanged and assert both new mutations are still rejected.

In `@tests/test_organization_commercial_readiness_loop.py`:
- Around line 9-20: Remove the duplicate
test_active_scheduled_writer_claims_the_repository_lease test and rely on the
existing test_static_and_live_writer_lease_policy coverage, or refactor it to
use the shared organization_commercial_readiness_fixtures.workflow helper
instead of constructing WorkflowRecord directly. Keep the lease-policy assertion
covered without maintaining duplicate workflow data.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 6c199a4e-ccf2-4788-bf96-9b7d5e355157

📥 Commits

Reviewing files that changed from the base of the PR and between 6eb06cd and 6647b23.

📒 Files selected for processing (13)
  • .github/workflows/organization-commercial-readiness-loop-quality-ci.yml
  • .github/workflows/organization-commercial-readiness-loop.yml
  • CHANGELOG.md
  • docs/doctoring/organization-commercial-readiness-loop.md
  • organization_commercial_readiness_fixtures.py
  • scripts/ci/organization_commercial_readiness_loop.py
  • tests/test_organization_commercial_readiness_loop.py
  • tests/test_organization_commercial_readiness_loop_coordinator.py
  • tests/test_organization_commercial_readiness_loop_credential_contract.py
  • tests/test_organization_commercial_readiness_loop_github.py
  • tests/test_organization_commercial_readiness_loop_import_contract.py
  • tests/test_organization_commercial_readiness_loop_policy.py
  • tests/test_organization_commercial_readiness_loop_run_pagination.py

Comment thread scripts/ci/organization_commercial_readiness_loop.py
Comment thread scripts/ci/organization_commercial_readiness_loop.py
Comment thread tests/test_organization_commercial_readiness_loop_github.py Outdated
Comment thread tests/test_organization_commercial_readiness_loop_github.py
Comment thread tests/test_organization_commercial_readiness_loop_run_pagination.py Outdated
Comment thread tests/test_organization_commercial_readiness_loop_run_pagination.py

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@opencode-agent review

@cwl-noema-review

Please review exact current head 9f46ea9dd067d2b30a042710ab0ce022513b13f6 only. Earlier reviews and check results are historical after the operational-failure, API-call-bound, and durable-receipt changes.

@coderabbitai

coderabbitai Bot commented Aug 8, 2026

Copy link
Copy Markdown

@seonghobae I will review only commit 9f46ea9dd067d2b30a042710ab0ce022513b13f6. I will treat all earlier reviews and check results as historical context.

⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown
Contributor Author

@opencode-agent

@cwl-noema-review

Exact current head: 9f46ea9dd067d2b30a042710ab0ce022513b13f6.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant