chore(ci): keep PR #827 repair workflow (still reopenable); fix exact-head-path-policy CI gate - #1488
chore(ci): keep PR #827 repair workflow (still reopenable); fix exact-head-path-policy CI gate#1488seonghobae wants to merge 6 commits into
Conversation
.github/workflows/repair-pr827-coderabbit-comments.yml gated on github.event.pull_request.number == 827 plus an exact head ref/repo/actor check. PR #827 is closed (merged: false) and GitHub never reuses PR numbers, so the condition can never fire again. Its only real-world caller was this workflow. Delete the workflow and its driver script (scripts/ci/repair_pr827_coderabbit_comments.py, 460 lines), whose only remaining reference was a synthetic-fixture test in tests/test_materialize_base_python_requirements.py kept alive purely to satisfy the 100%-coverage gate rather than for any live purpose. Remove that fixture test and the ast/shutil imports it alone needed. Verified via `coverage run -m pytest tests` (2104 passed, 100% coverage) and `interrogate` (100% docstring coverage) after the change. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015Gs7KmNvH75nxz1sL8mKjw
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 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 |
# Conflicts: # CHANGELOG.md
This reverts commit 285672f. Devin Review flagged the removal's core safety argument as wrong: PR #827 is closed and merged: false, but that does not make it unreachable. "GitHub never reuses PR numbers" only prevents a *new* PR from claiming #827 — it says nothing about the *existing* closed PR being reopened, which keeps its original number. Independently re-verified against live GitHub state: - PR #827: state=closed, merged=false, locked=false — reopenable by anyone with write access, or by its author, with no lock blocking it. - Its head branch, fix/opencode-rust-coverage-runtime-boundary-main, still exists on origin at the same SHA (48603e8). Both preconditions Devin named for a reachable repair path are true, so restore the workflow, its driver script (scripts/ci/repair_pr827_coderabbit_comments.py), and the test_bounded_repair_driver_runs_against_a_staged_fixture coverage fixture exactly as they were, and reframe the CHANGELOG entry as 'kept', not 'removed'. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015Gs7KmNvH75nxz1sL8mKjw
Ports the identical fix from #1506 into this branch. This PR's exact-head-path-policy check runs its own head-branch copy of scripts/ci/test_strix_quick_gate.sh (plain `pull_request` trigger in strix-changed-path-quality-ci.yml, not pull_request_target), so the pre-existing main-branch bug is not fixed here just by #1506 merging into main -- it needs porting into this branch directly. Root cause: assert_opencode_review_uses_codegraph_and_contextual_orchestrator extracted the required-workflow-bootstrap job block from opencode-review.yml with awk '/^ required-workflow-bootstrap:$/,/^[^ ]/'. Every job key in that workflow is indented 2 spaces (never column 0), so the end pattern never matched until EOF, sweeping an unrelated `if:` line from a later job (added by already-merged PR #1497) into the "block" and failing the assertion on unrelated content. Fixed by using an explicit state flag so the end pattern (`^ [A-Za-z0-9_-]+:`) is only tested starting on the line after the start match, correctly bounding the block to just its own lines. See #1506 for the full root-cause writeup and validation against origin/main. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015Gs7KmNvH75nxz1sL8mKjw
|
grep -q exits on first match and closes its end of the pipe; if the upstream awk is still writing a large block, it gets SIGPIPE (141). Under `set -o pipefail` that non-zero awk status wins over grep's real 0, so `if pipeline; then` sees the pipeline as failed even though grep found a genuine match — silently missing e.g. a forbidden `if:` key or a fenced-diff marker that should have failed the check. Ports the same-file fix from PR #1506 to this branch's two call sites (required-workflow-bootstrap job-block check; opencode review REQUEST_CHANGES fenced-diff check). This branch already carried #1506's awk job-block-boundary correction, so only the grep -q removal was needed here. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015Gs7KmNvH75nxz1sL8mKjw
|
Contextual-Orchestrator를 같이 손보든 어쩌든 해결하세요. Bypass merge 필요하면 가능 (chicken and eggs 상황이라면) + NVIDIA NIM 만 쓰는 건 허용하지 않아요. Contextual-Orchestrator를 쓰세요. Timeout은 적어도 3시간으로 잡으세요. 120초 같은 건 당황스럽군요. |
|
On the NIM/Contextual-Orchestrator/timeout note above: doesn't apply to this PR's scope — this PR only keeps the reopenable PR #827 repair workflow (reverting an incorrect removal) and ports a one-line Generated by Claude Code |
Ports the identical fix already applied to this session's #1476 and #1488 (commit 4323e27 pattern; root-caused in .github#1506, which targets main but has not merged there yet). This PR's exact-head-path-policy check runs its own head-branch copy of scripts/ci/test_strix_quick_gate.sh (plain pull_request trigger, not pull_request_target), and the merge commit onto this branch carried forward the pre-existing bug from both sides (neither main nor this branch's own prior head had the fix), so it needs porting here directly -- confirmed live: run 33455130248/job 99693376191 failed with exactly this assertion. Root cause: assert_opencode_review_uses_codegraph_and_contextual_orchestrator extracted the required-workflow-bootstrap job block from opencode-review.yml with awk '/^ required-workflow-bootstrap:$/,/^[^ ]/'. Every job key in that workflow is indented 2 spaces (never column 0), so the end pattern never matched until EOF, sweeping an unrelated if: line from a later job into the "block" and failing the assertion on unrelated content. Fixed by using an explicit state flag so the end pattern (^ [A-Za-z0-9_-]+:) is only tested starting on the line after the start match, correctly bounding the block to just its own lines. Verified directly: the old awk swept in line 219's `if: github.event.action != 'closed'` from a later job; the new awk captures zero if: lines. Full local run: bash scripts/ci/test_strix_quick_gate.sh -> PASS, exit 0 (was FAIL/exit 1 before this commit). coverage run -m pytest tests -q -> 2126 passed, 1 skipped, 21 subtests. coverage report -> 100%. interrogate -> 100%. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015Gs7KmNvH75nxz1sL8mKjw
|
Contextual-Orchestrator와 관계한 것들을 같이 손보든 어쩌든 해결하세요. Bypass merge 필요하면 가능 (chicken and eggs 상황이라면) + NVIDIA NIM 만 쓰는 건 허용하지 않아요. Contextual-Orchestrator를 쓰세요. Timeout은 적어도 3시간으로 잡으세요. 120초 같은 건 당황스럽군요. Opencode와 Noema 는 Coderabbitai 및 Devin 수준으로 실제로 리뷰를 하게 하시오. Strix도 보안 리뷰를 꼼꼼하게 하도록 하시오. 특히 보안 리뷰는 전체 코드로 수행하는 것입니다. Contextual-Orchestrator는 실시간으로 빠르면서 능력이 좋은 모델에 요청을 보내어 시간을 당기시오. |
|
Superseded after fresh 2026-09-01 control-plane revalidation. The current code delta in this PR is the same |
Update (2026-08-31): original removal reverted
This PR no longer removes the PR #827 repair workflow. Devin Review flagged that PR #827 remains reopenable — it is
closed/merged: falseandlocked: false, and its head branchfix/opencode-rust-coverage-runtime-boundary-mainstill exists on origin. Reopening keeps the original PR number, sogithub.event.pull_request.number == 827could fire again. The original "GitHub never reuses PR numbers" reasoning below only covers new PRs, not reopening an existing closed one — so the removal was incorrect and has been reverted (byte-identical to pre-removal). See the review-thread discussion on this PR for the full evidence chain.This PR now carries two small, unrelated fixes instead:
CHANGELOG.md/gap-baseline entries documenting why the workflow is being kept, not removed.exact-head-path-policyroot-cause fix (scripts/ci/test_strix_quick_gate.sh's awk job-block-boundary bug, tracked in fix(ci): bound required-workflow-bootstrap awk extraction to its own job #1506) onto this branch, needed because that CI check runs per-PR-head rather than from the base branch.Net diff against
mainis now small (+14/-1) — see the PR's Files Changed tab for the actual current contents rather than the original description below, which is retained for historical context.Original PR description (historical — see update above)
Hollow-path finding
Org-wide audit finding (responding to "빈 깡통 경로 너무 많다.." — too many empty-can/hollow-shell code paths):
.github/workflows/repair-pr827-coderabbit-comments.ymlis gated on:Independently re-verified against live GitHub state before touching anything: PR #827 is
state: closed,merged: false(confirmed viapull_request_read). GitHub never reuses PR numbers, sogithub.event.pull_request.number == 827can never be true again for any future event — the condition is permanently false and the job is dead code.scripts/ci/repair_pr827_coderabbit_comments.py(460 lines) had exactly one real-world caller: this workflow. Its only other reference in the repo wastest_bounded_repair_driver_runs_against_a_staged_fixtureintests/test_materialize_base_python_requirements.py— a synthetic fixture that copies the script into a tmp dir and exercises its internal helper functions purely to keepscripts/ci's coverage number at the required 100%, not because anything live calls it.Confirmed no other file in the repo references either path (workflow-glob contract tests,
PR_GOVERNANCE_AUDIT.md,docs/org-required-workflow-rollout.md, and the doctoring doc it wrote to were all checked — none mention it), and no hardcoded workflow-file-count assertion exists that this deletion would break. This repo already has precedent for banning this exact category of dead PR-specific writer workflow (test_no_pr_specific_writer_workflow_remainsforbidsrepair-pr787*.ymletc.), so removing rather than special-casing this one is consistent with existing convention.Fix (superseded — see update above)
Delete(reverted — kept).github/workflows/repair-pr827-coderabbit-comments.ymlDelete(reverted — kept)scripts/ci/repair_pr827_coderabbit_comments.pyRemove the now-purposeless(reverted — kept)test_bounded_repair_driver_runs_against_a_staged_fixturefixture testCHANGELOG.mdentry under## [Unreleased]🤖 Generated with Claude Code