Fix Noema 429 continuation dispatch permissions - #2387
seonghobae wants to merge 1 commit into
Conversation
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (3)
Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthrough리뷰 실패 시 재디스패치하던 단계를 별도 workflow job으로 옮겼습니다. 재시도 관련 출력값을 전달하고, 새 job에서 입력값과 PR 상태 및 head SHA를 확인한 뒤 조건에 맞으면 다음 attempt를 dispatch합니다. Changes리뷰 실패 재디스패치 흐름
Priority: ➖ Normal Estimated code review effort: 3 (Moderate) | ~20 minutes Change: Bug fix Sequence Diagram(s)sequenceDiagram
participant ReviewJob as noema-review
participant RedispatchJob as noema-transport-redispatch
participant PullRequest as PR 상태 및 head SHA
participant Dispatch as Repository dispatch
ReviewJob->>RedispatchJob: 재시도 출력과 실패 상태 전달
RedispatchJob->>PullRequest: 지연 후 PR 상태와 head SHA 확인
PullRequest-->>RedispatchJob: 열린 상태와 현재 head SHA 반환
RedispatchJob->>Dispatch: 조건 충족 시 다음 attempt 전달
Merge Risk: ⚪ Minimal · up to No actionable merge-blocking risk is established. The new dispatch job still needs hosted execution to confirm the permission fix. Security Architecture ReviewSecurity architecture risk: 🟡 Moderate · up to The new dispatch job receives repository write authority, but it is separate from the model-review job and checks retry eligibility, the current repository, and the live PR head before dispatching. No introduced security bypass was established. Hosted execution of the new failure-and-retry path remains unverified. Retained concerns Security review detailsSecurity Blast Radius
Security Findings and Attack Paths
Trust Boundaries and Controls
Resilience and Maintainability Implications
Hardening Proposals
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Pull request was converted to draft
Single-writer lifecycle correction — 2026-09-26Current #2387 head The three #2387 paths are all owned by #2373. Direct exact-blob/contract comparison shows #2373 also preserves the intended least-privilege dispatch split while adding required protections absent here:
Accordingly #2387 is a duplicate writer and is now Draft/Proposed. It is not closed: retirement requires protected integration or independently verified complete successor carryover. Current #2373 hosted checks are still nonterminal and its current-head review is not an approval, so neither PR has merge authority. No Force Push, evidence transfer, self-approval, bypass, or manual rerun was performed. |
|
Canonical consolidation rationale before branch mutation: #2373 exact head To preserve single-writer ancestry without weakening the stronger implementation, I will ordinary-forward #2373 with a two-parent commit whose first parent is #2373 current head, second parent is this exact head, and tree is byte-identical to #2373 current tree |
|
Successor integration completed without closing this PR. #2373@ |
Gap
Noema's bounded continuation after a provider HTTP 429 called
repository_dispatchwith its read-only review token. The contextual-orchestrator #1220 run 36146690612/job/108188118693 reached the retry step and received HTTP 403, so the planned continuation never started. GitHub requires Contents write permission for this endpoint.Change
Move only the re-dispatch step into a dependent job using the repository's
github.tokenwithcontents: write. The model review job keeps its existing read permission. The new job runs only after an admitted head and an eligible failed Noema review, rechecks the exact live PR head, bounds the delay, and restricts dispatch to the current repository.Verification
actionlint .github/workflows/noema-review.ymlpython -m pytest -q tests/test_noema_orchestrator_workflow_contract.py tests/test_noema_reviewer_token_lifetime.py tests/test_required_workflow_queue_contract.py(85 passed)GITHUB_ACTIONS=true(85 passed)Hosted execution of the new retry job is still needed to confirm the fix.
Summary by CodeRabbit