Skip to content

ci: review status를 필수 체크로 기록하고 baseline을 다시 적용한다 - #390

Closed
minjunkim-dev wants to merge 1 commit into
mainfrom
cursor/reapply-baseline-review-status-8d8e
Closed

minjunkim-dev wants to merge 1 commit into
mainfrom
cursor/reapply-baseline-review-status-8d8e

Conversation

@minjunkim-dev

@minjunkim-dev minjunkim-dev commented Nov 6, 2026 •

Copy link
Copy Markdown
Owner

Author: Cursor 클라우드 에이전트 / Grok 4.7

Summary

repo-baseline main 9a3920b942695257772f25083e8a4fde5d4e3208(PR #35: status 작성자 확인, 편집된 승인 댓글 거절, diff identity)을 mobile-runtime에 다시 적용하고, Review status를 main 필수 체크 기대값으로 기록한다.

repo-baseline 9a3920b
        |
        +--> apply_baseline.py --> scripts + .github/repo-baseline.json
        |
        +--> templates/review-status.yml --> .github/workflows/review-status.yml
        |
        +--> repository-settings.json checks += Review status
        |
        v
기대값만 기록. branch protection은 쓰지 않음
        |
        v
병합 뒤 소유자가 Mac에서 적용

바꾸기 전: 적용 원본은 c6405a09a7d06af943cb08db5b600fe0f655b0a2다. 필수 체크 기대값은 CI뿐이다. Review status workflow는 기본 브랜치에 있고, 필수 체크로 기록되지 않는다.

바꾸기 후: 적용 원본은 9a3920b942695257772f25083e8a4fde5d4e3208다. 1인 프로필에서 review/independent와 review/security는 creator.login이 저장소 소유자이거나 STATUS_ACTORS(비어 있음)일 때만 success다. 편집한 승인 댓글은 무효다. .github/repository-settings.json의 checks는 CI와 {"context": "Review status", "app_id": 15368}다. strict는 true다. context는 .github/workflows/review-status.yml의 job name인 Review status와 같다. 이 파일은 기대값이다. 이 PR은 branch protection을 쓰지 않는다. 병합 뒤 소유자가 Mac에서 적용한다. 적용되면 Dependabot 버전 전용 PR을 뺀 모든 PR(되돌리기 쉬움 포함)에 소유자가 올리는 review/independent가 필요하다. 신뢰 경계에 걸리면 review/security도 필요하다. status는 소유자만 올린다는 규칙이다. 에이전트가 status를 올리는 것은 금지지만 GitHub가 기술적으로 막지는 않는다.

Evidence

  • 원본: minjunkim-dev/repo-baseline 9a3920b942695257772f25083e8a4fde5d4e3208. 카나리 기록은 repo-baseline #32 댓글에 있다.
  • python3 tools/apply_baseline.py /agent/repos/mobile-runtime --check → SAME: project copies match repo-baseline
  • python3 -B scripts/check_repo_baseline.py → repo-baseline PASS: copied files match the recorded hashes
  • python3 -B -m unittest discover -s scripts/source-only -p 'test_*.py' → 115 tests OK
  • python3 -B -m unittest discover -s scripts -p 'test_workflow_policy.py' → 21 tests OK
  • python3 -B scripts/test-release-input.py → 16 tests OK
  • job 이름 확인: .github/workflows/review-status.yml의 jobs.review-status.name은 Review status다. 기본 브랜치 workflow의 그 job은 run 42016041442에서 success다.
  • head SHA: 52896cd1f76f4a43aaedcbd04b4a7f307b70000d
  • 확인하지 않은 범위: macOS Swift 빌드, branch protection 쓰기, tools/apply_github_settings.py --apply, commit status, 승인 댓글, 병합. 이 PR은 그 넷을 하지 않는다.
  • Standards·Spec은 Composer 2.5로 이 head에서 돌렸다. effort 칸은 설정 없음이다. slug composer-2.5에 effort 단계가 없다. 작성 패밀리는 Grok이다.
  • 버그 찾기와 Security는 미실행이다. 소유자가 Opus로 실행한다.
  • Spec P2(run id, 병합 절차 문장)와 Standards P2(세 문서의 같은 설명)는 유지한다. 문서는 적용 전 강제 체크와 적용 후 규칙을 현재 사실로 적는다.

sha256 대조

apply_baseline.py --check는 SAME이다. 프로젝트 바이트와 repo-baseline 9a3920b 원본 바이트의 sha256이 같다. scripts/source-only/test_*.py 세 파일의 원본 경로는 scripts/test_*.py다. workflow 둘은 manifest 해시 대상이 아니고 템플릿과 바이트가 같다.

path sha256 대조
scripts/check_repo_baseline.py 5681aba08de95a795d7330fbdafe2e1925067aabec3f94327aa074dc34714c96 SAME
scripts/check_github_settings.py 690cb4ba69529eca80ba3e84de03ce0670de49861a8f5d40bc1067033bd2b4d5 SAME
scripts/source-only/test_github_settings.py fbf6239243b13dcf6c94f143985cb89458a74000066ef83ea609c38900a39153 SAME
scripts/source-only/test_repo_baseline.py 463b77ecb045e6cfce374e94ef645de202021cb90a41bfcfaa7db82e4f03c2d2 SAME
.github/dependabot.yml e1b6c7b540b054d03ccb37472c7d0799c54fae3b6b4276b4a371b002e393b7e7 SAME
scripts/check_review_status.py 256b28db2301b4e8e92a7eda812f498425a5a6b080ac6c941dbb69dd98ccc5eb SAME
scripts/source-only/test_review_status.py 703cc77fb484402df8522b68f54317f660163029838e5b5f744b94a4b713453b SAME
scripts/rerun_review_status.py f72be336e122e2cea6d0c3325afb6e8baf90d7b0799bea5b0f7465a5333814d1 SAME
scripts/workflow_policy.py ff639ed8b97da6a0f309c47cb07103da662ef216bc1c78b63ee2f3599f90c73a SAME
scripts/pr_author.py 96b3d830b30c98b6e4897a1fec852d660b3fcb9a62da52aada4864dc5dd4ef49 SAME
scripts/test_workflow_policy.py f1bcdc258454a86ede491f1c104b451627648a73acc23de02083cdf3a5ece3c7 SAME
.github/pull_request_template.md 16899cd107ac71b4bc4ba9c2f3a6738bb5d0dff619b23f1d8b7f57a1dc070af6 SAME
.agents/skills/matt-code-review/SKILL.md 6b1d85f6f33b83f2015f8b67f8816f9f3f53e7bba29cfb25a64673bc9e8d11cc SAME
.agents/skills/matt-code-review/agents/openai.yaml 8229ca854e11dc8e6aef2131ee03f31fb1561cf905fab9ccc325180cf3331352 SAME
.agents/skills/matt-code-review/LICENSE 0e7ac423bf2c6e223b7c5b156f8cf72da49d748e56a1641402c31f22ad07dbb5 SAME
.claude/skills/matt-code-review/SKILL.md 6b1d85f6f33b83f2015f8b67f8816f9f3f53e7bba29cfb25a64673bc9e8d11cc SAME
.claude/skills/matt-code-review/agents/openai.yaml 8229ca854e11dc8e6aef2131ee03f31fb1561cf905fab9ccc325180cf3331352 SAME
.claude/skills/matt-code-review/LICENSE 0e7ac423bf2c6e223b7c5b156f8cf72da49d748e56a1641402c31f22ad07dbb5 SAME
.github/workflows/review-status.yml 5cefdd63a2927ac7cc925a5ba17f5729c5c6cc0cf4e8ea5c84d3f473aa51dfdc SAME (templates/review-status.yml)
.github/workflows/pr-policy.yml 39390f74e23535ae46f6efbf833825ae588b79dbb8390a4261fba51fd50f2bc8 SAME (templates/pr-policy.yml)

Merge Danger

Door: 되돌리기 어려움

영향 범위: .github/repository-settings.json, .github/workflows/review-status.yml, scripts/check_review_status.py, scripts/rerun_review_status.py는 POLICY.md §10 게이트 경로다. 기대값에 Review status가 더해진다. 서버의 branch protection은 이 PR이 바꾸지 않는다. 소유자가 병합 뒤 Mac에서 적용하면 Review status가 필수 체크가 된다. 그때 Dependabot 버전 전용 PR을 뺀 모든 PR에 소유자가 올리는 review/independent가 필요하다.

복구: 적용 전이면 이 커밋을 revert하는 PR로 기대값과 복사본을 되돌린다. 적용 뒤라면 소유자가 Mac에서 보호의 checks에서 Review status를 빼고, 기준선 파일도 같은 내용으로 맞춘다.

신뢰 경계 기준: .github/workflows/**, .github/repository-settings.json, scripts/check_*.py, scripts/rerun_review_status.py (POLICY.md §5)

Review evidence

axis model effort head SHA P0 P1 P2 result
Standards Composer 2.5 설정 없음 52896cd 0 0 3 P2 유지. 같은 게이트 설명이 AGENTS.md, review.md, REPOSITORY_SETUP.md에 있다
Spec Composer 2.5 설정 없음 52896cd 0 0 2 P2 유지. run 42016041442와 적용 후 병합 문장은 현재 사실이다
버그 찾기 미실행 미실행 52896cd 미실행 미실행 미실행 미실행. 소유자가 Opus로 실행
Security 미실행 미실행 52896cd 미실행 미실행 미실행 미실행. 소유자가 Opus로 실행
Open in Web Open in Cursor 

Summary by CodeRabbit

  • Bug Fixes
    • Review status checks now verify that approvals come from trusted sources and match the current, unchanged review content. Missing or incomplete check data no longer allows prior approval evidence to pass.
    • Editing an owner comment reruns the review status check, but edited comments do not count as approval.
  • Documentation
    • Updated guidance to clarify review requirements, status checks, and when automatic merging is available.

검사기 복사본을 원본과 같게 두고, 필수 체크 기대값에 Review status를 더한다. branch protection은 쓰지 않는다.

Co-authored-by: MINJUN KIM <minjunkim.dev@gmail.com>
@coderabbitai

coderabbitai Bot commented Nov 6, 2026 •

Copy link
Copy Markdown

Explain Change →

Caution

Review failed

The pull request is closed.

Walkthrough

The review-status checker now validates status creators, compares diff content with changed-file blob identifiers when carrying prior status, and rejects edited owner approval comments. Comment events can trigger reruns. Repository settings and guidance now include the Review status check and related policy.

Changes: Review status validation and policy

Layer / File(s) Summary
Status creator validation
scripts/check_review_status.py, scripts/source-only/test_review_status.py
The checker reads paginated individual status lists and uses the newest status for each context. Solo-profile checks reject statuses from untrusted creators; team-profile checks do not check creators. Tests cover current and carried statuses.
Diff and blob identity
scripts/check_review_status.py, scripts/source-only/test_review_status.py
Status carry compares normalized diff content and changed-path blob IDs. The checker resolves changed paths through Git trees and rejects malformed or incomplete identity data. Tests cover renames, deletions, tree traversal, gitlinks, and changed file content.
Owner comments and reruns
scripts/check_review_status.py, scripts/rerun_review_status.py, .github/workflows/review-status.yml, scripts/source-only/test_review_status.py
Owner approval comments must match the current head and have unedited metadata. The workflow passes COMMENT_ACTION; the rerun script supports created, edited, and deleted actions, and treats run-list read failures as incomplete.
Required check settings and guidance
.github/repository-settings.json, .github/repo-baseline.json, AGENTS.md, docs/REPOSITORY_SETUP.md, docs/agents/review.md
Repository settings add Review status as a required check. Guidance records status and approval-comment requirements, baseline updates, and the fact that settings-file changes do not change server-side branch protection.

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

Change: Feature

Sequence Diagram(s)

sequenceDiagram
  participant GitHub
  participant ReviewStatusWorkflow
  participant rerun_review_status.py
  participant check_review_status.py
  GitHub->>ReviewStatusWorkflow: owner comment event
  ReviewStatusWorkflow->>rerun_review_status.py: pass COMMENT_ACTION
  rerun_review_status.py->>check_review_status.py: rerun review-status check
  check_review_status.py->>GitHub: read statuses, changed paths, and owner comments
Loading

Possibly related issues

  • Issue 388 specifies current and deprecated owner approval comment formats. This change adds validation that rejects edited approval comments.

Possibly related PRs

Merge Risk: Moderate · up to 52896

The new guidance would let an agent schedule auto-merge before server-side branch protection requires the Review status check. A later push to a pending auto-merge PR could then merge without owner-posted review status. Restore the branch-protection prerequisite in the auto-merge guidance before merging.

- [ ] Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

@cursor

cursor Bot commented Nov 6, 2026

Copy link
Copy Markdown

브랜치 이름 cursor/reapply-baseline-review-status-8d8e가 PR policy에 걸려 이 PR을 닫습니다. 같은 커밋 52896cd1f76f4a43aaedcbd04b4a7f307b70000d는 ci/reapply-baseline-review-status로 옮겼습니다.

#391

@cursor
cursor Bot deleted the cursor/reapply-baseline-review-status-8d8e branch November 6, 2026 00:27
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.

2 participants