docs(doctoring): verify item 13's stale-head-cancellation hypothesis is refuted - #1760
Conversation
…is refuted Investigated with a 9-agent workflow (4 independent audits of strix.yml, opencode-review.yml, noema-review.yml, pr-review-merge-scheduler.yml + 1 direct pull of the item's own cited naruon PR#1528 evidence + 4 adversarial re-verification passes, all refuted:false). All four central workflows already reliably cancel a stale prior-head run on a new push, via correctly scoped native concurrency or purpose-built same-file API-driven cancellation jobs. The cited evidence instead shows pure queue starvation on a single unchanged SHA (23h22m queue wait before a Strix run even started; a paired OpenCode Review run still queued 24+ hours later) -- corroborating the already-recorded plan-level concurrency ceiling with a concrete example rather than a cancellation bug. No fix applied; the standing chicken-and-egg bypass-merge authorization was not used since no fixable bug was found -- forcing one would mean inventing a problem the evidence doesn't support. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
📝 WalkthroughWalkthrough두 문서가 stale-head 취소 가설에 대한 감사 결과를 기록합니다. 네 개 워크플로는 이미 이전 실행을 폐기하는 경로를 사용합니다. PR ChangesStale-head 취소 감사
Estimated code review effort: 2 (Simple) | ~10 minutes Merge Risk: 🔵 Low · up to The audit correctly documents a queue-starvation finding overall, but two documents inaccurately describe queued workflow runs as absent. Update the wording to distinguish an existing queued run from a job that never started before merging. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Full details: Docstring CoverageExplanation No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0 files. (2 skipped: 2 unsupported.) ✨ Finishing Touches🧪 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 |
A peer session's check_run-based waste claim missed that the job's own if: already restricts that trigger path to CodeRabbit checks -- GitHub Actions requests no runner for a skipped job, so that vector isn't job-slot waste. Read pr_governance_gate.sh in full: it evaluates live required-check/ review-thread/CodeRabbit state on every run, not a pure function of head SHA, so a same-head debounce (the natural reading of the proposed fix) would be unsafe -- it could leave the gate reporting a stale blocker list after a check finishes or a review lands. No fix implemented; recorded as still open rather than forced. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…13 audit - CodeRabbit: "with no run at all" contradicted the same sentence's own status: queued evidence -- a run existed, its job just never started. Reworded to "with no job started" in both the doctoring record and the gap-baseline entry. - Devin (analysis): qualify the bare naruon PR #1528 references with the ContextualWisdomLab/ owner prefix so they resolve as cross-repo links from this repo, consistent with this cycle's established convention. - Devin (bug): soften the unverified claim that the five pull_request_target firings on one unchanged SHA were "near-certainly labeled/unlabeled" -- only synchronize was ruled out; the specific event types were not actually checked. Say so. - Devin (bug, most substantive): the audit's noema-review.yml row claimed unconditional reliability for native cancel-in-progress, but that mechanism cancels whichever run most recently entered the concurrency group -- keyed on run-creation order, not head-SHA recency. An older push's synchronize event processed after a newer one's could in principle cancel the current run instead of the stale one; existing tests (tests/test_noema_review_gate.py) prove the *explicit* cancellation step can't do this, but don't cover native cancel-in-progress itself. No evidence this has ever happened, and no workflow change is made here -- recorded as an open, unverified risk (footnoted in the table, and as a new bullet in "What this resolves, and what it does not") rather than silently dismissed or asserted as a confirmed bug, consistent with this record's own practice for its other open leads. Grepped tests/ for the exact strings touched here; only tests/test_product_technical_gap_baseline.py pins this file's content, and it still passes. Full suite: 2630 passed, 1 skipped (two pre-existing Python-3.12-only test files not collectible under this sandbox's 3.11). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BV96rXhqoR3tYZ9AeAVur4
|
Pushed
Verified: grepped Generated by Claude Code |
…r audit Three fixes: (1) two naruon#1741 references were missing the ContextualWisdomLab/ owner prefix, breaking GitHub's cross-repo timeline backlink; (2) the item13-stale-head-cancellation-audit doc this record cross-references lives in a separate, not-yet-merged PR (#1760) -- noted explicitly so a reader on this branch alone isn't confused by a missing file; (3) the coalescer fix this record cites as "found and fixing" didn't name a traceable PR -- it's #1661, commit c0dc46b, confirmed via the commit-to-PR API, now cited with both. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Three fixes: (1) the naruon PR reference lacked the ContextualWisdomLab/ owner prefix, breaking the cross-repo timeline backlink; (2) the labeled/unlabeled attribution for the five non-synchronize pull_request_target firings was speculation presented as near-certain -- softened to state plainly that the specific event types were not verified; (3) "with no run at all" imprecisely described a workflow run that existed (status: queued) but whose job never started -- corrected to "no job started" in both this record and the gap-baseline entry it feeds. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…rreach Devin Review correctly noted the 23h22m/24+ hour waits prove queueing occurred, not exclusively that a plan-level ceiling is the cause. Added a precision paragraph: what actually narrows the explanation here is that Result 1 already ruled out a workflow-configuration bug in this PR's own review pipeline, not elimination of every other conceivable cause. Does not change the conclusion, states its actual evidentiary basis correctly. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
A dedicated 4-agent follow-up (2 investigate + 2 adversarial verify, wf_68f78449-bb6) re-examined the two substantive Devin Review claims with fresh rigor. Result: the noema-review.yml concurrency-ordering hazard is a CONFIRMED real bug, not the "open, unverified risk" a concurrent edit had already merged in -- both the investigation and a dedicated refutation attempt found no flaw in the mechanism (GitHub cancels the currently-active run in a group unconditionally when a new run enters it, before any of the new run's own steps execute; noema-review.yml's group has no head-SHA component, so an out-of-order synchronize event can kill a valid current-head review before its own stale-check step ever runs). Strong corroborating evidence: strix.yml and opencode-review.yml both deliberately avoid this exact pattern already, for exactly this reason. The strix.yml paths-ignore claim was also fully re-verified: real internal gap in that file alone, but pr-review-merge-scheduler.yml's scan-pr-queue (no paths-ignore, same-event trigger) closes it in practice -- confirmed not a real bug via full adversarial re-check. Updated the doctoring record's table, caveat, conclusion, and "what this resolves" section, plus the gap-baseline summary, to state the confirmed bug plainly rather than hedge it. Not fixing the noema-review.yml bug in this PR -- a live CI concurrency change deserves its own dedicated PR with a regression test, not a same-breath edit to documentation. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…dict contradiction - Cite ContextualWisdomLab/naruon#1528 with owner prefix in both remaining spots (Devin Review: cross-repo reference format violation) - Fix the self-contradiction Devin caught: "Result 1 verified all four central workflows' cancellation logic is correct" directly contradicted the same document's confirmed noema-review.yml bug finding above it. Corrected to: three of four are fully correct; the fourth's confirmed bug has a different failure signature (wrongful cancellation of a live run) than what Result 2's evidence shows (runs stuck queued for 23h22m/24+ hours with no cancellation at all) -- so the bug still doesn't explain this specific wait, without overstating the workflows' correctness. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…merged A peer session pushed 31e46db on #1661 porting opencode-review.yml's SHA-scoping pattern to noema-review.yml, closing the confirmed bug this record documents. Independently verified the fix itself is correct. But their own gap-baseline.md entry (e2869c3) marked item 13 "fully resolved" -- the same premature-credit pattern Devin caught once already on bebd7c7 (PR #1765): 31e46db is unreachable from main (diverged, #1661 still open), and main's live noema-review.yml still has the pre-fix group with no head-SHA component. Recorded the fix's real status here (proposed, not yet merged) so this record doesn't imply main is safe when it isn't yet. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ctions The earlier "item 13 confirmed resolved" section (from an early #1760 draft) claimed Noema's native cancel-in-progress correctly retires a superseded head's run -- directly contradicted by this same file's own later, more thorough section documenting the confirmed bug that same mechanism has (cancels by run-creation order, not head-SHA recency). Added a correction note pointing to the accurate finding rather than leaving both conclusions standing unreconciled. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Pure append-only conflict: this branch's item 13 section and main's independently-landed codeql-pr.yml required-workflow-hard-limit section were both appended at the same location. Kept both, item 13 first. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…vidence Devin Review caught it: wf_eb15dd2b-ad1 and wf_68f78449-bb6 are internal Claude Code orchestration run identifiers with no repository path or public URL -- a future reader has no way to open and inspect them, so citing them as "the evidence" for this record's findings was misleading. Added an explicit caveat: they document how the investigation was structured (agent counts, investigate-vs-verify split), not the evidence itself -- the actual checkable evidence is what each finding cites inline (exact file paths/line ranges, raw.githubusercontent.com fetches, gh api calls, named PR/commit references), which any future reader can independently re-run. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Summary
refuted: false).strix.yml,opencode-review.yml, andpr-review-merge-scheduler.ymlalready reliably cancel a stale prior-head run, via correctly-scoped nativeconcurrency:(fixed after a real prior incident,#1568, for OpenCode Review) or purpose-built same-file jobs that call the GitHub Actions API directly (Strix'scancel-superseded-pr-runs, the merge scheduler's hourlyorg-queue-sweep). The item's own cited evidence (naruonPR fix(ci): correct required-workflow-bootstrap job-scope check boundary #1528) shows pure queue starvation on one unchanged SHA instead — a Strix run waited 23h22m before starting, a paired OpenCode Review run was still queued 24+ hours later — corroborating the already-recorded plan-level concurrency ceiling (docs/doctoring/actions-plan-concurrency-ceiling-20260903.md) with a concrete example rather than a cancellation bug.noema-review.ymlhas no head-SHA component in its concurrency group. GitHub does not guarantee webhook/dispatch delivery order; if an older push'ssynchronizeevent is processed after a newer one's, the older run's mere entry into the shared group cancels the newer, still-valid, in-flight review — before the older run's own stale-trigger check ever runs. Confirmed via two independent adversarial re-verification passes that found no refutation. Not fixed in this PR — a change to live, security-critical CI concurrency configuration deserves its own dedicated PR with a regression test, not a same-breath edit to documentation. A fix (SHA-scoping the group, mirroring OpenCode Review's own#1568fix) has since been developed onContextualWisdomLab/.github#1661, independently re-verified, and is pending merge.Test plan
raw.githubusercontent.comand re-verified by a separate adversarial pass before being accepted.🤖 Generated with Claude Code