docs(gap): scope Actions fan-out evidence and capacity conclusions - #1905
docs(gap): scope Actions fan-out evidence and capacity conclusions#1905seonghobae wants to merge 6 commits into
Conversation
…te hypothesis Static analysis of all 35 workflows (matrix expansion + three-valued if: evaluation, evaluator checked against 7 real conditions first): one PR synchronize dispatches 33 job slots, not the 36 a naive count reports. Every candidate reduction was checked and rejected on evidence: 12 slots are required status-check contexts (live branch protection), all 12 push triggers are already restricted to main/master/develop so no PR-branch duplication exists, every small quality-CI workflow already carries paths filters, and adding paths-ignore to sast-semgrep/python-security is explicitly forbidden by tests/test_docs_only_pr_runner_admission.py. The changed-scope gate jobs are documented deliberate design, not waste. Conclusion: queue depth is 76-repo ruleset fan-out (where on: filters are discarded) against a shared concurrency ceiling -- observed in_progress 0-1 for 3+ hours while queued climbed 372->424 with GitHub reporting all systems operational. Further .github YAML optimisation is not a productive lever; the open question is org-level Actions capacity, readable only with admin:org. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Team Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
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 |
…odex-found exception An independent Codex audit, run against the same repo under the same constraints but without knowledge of the first pass's conclusion, found one genuine redundant slot the first pass missed: opencode-review.yml's coverage-source-tree is a full runner slot whose whole body is one echo, and which exists only to carry needs/if: into the required coverage-evidence context (itself another echo-only job). Recorded, not shipped: it is 1 slot of 33 (3%) in a queue measured 424 deep against near-zero execution, and collapsing it edits the job graph of a required review workflow the ruleset injects into 76 repositories. The capacity-bound conclusion is unchanged. The first pass classified both jobs as load-bearing gate jobs by pattern- matching the documented changed-scope design without opening them to confirm they do any work -- kept as a method note, since two agents re-reading one agent's evidence is not corroboration. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
… dimension This entry counted runner slots and concluded reclaiming 1 of 33 could not matter in a capacity-bound queue. Wrong. The two echo-only jobs sit in series on the review critical path, and a job is not created until its needs: complete, so each link waits out the whole queue again. Measured on naruon#1528: 9h40m and 13h01m of queue wait for 4s and 5s of runtime, ~22h41m total holding the real review behind it, on every PR across 76 repositories. Slot count made that look like 3%; critical-path latency is the dimension that governs how long a PR actually takes to clear. Fix shipped as #1910 (serial depth 5 -> 3, queue waits 4 -> 2). Also records the two non-obvious safety conditions: coverage-evidence had no if: of its own and relied on transitive skipping, and opencode-review-dispatch .yml has same-named jobs whose edge is a real artifact dependency -- job names are unique only within a workflow file. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
[P2] 확인된 낭비와 모순되는 최종 감사 결론을 수정해 주세요검토 HEAD는 직접 확인한 반례는 다음과 같습니다.
최소 수정은 기존 관측표를 유지하면서 제목·첫 문단·마지막 결론을 “관측한 trigger 범위와 남은 구조 감사”로 좁히는 것입니다. runner 용량 확인과 workflow 낭비 제거는 병행할 수 있습니다. 정적 분석기와 실행 명령이 PR에 없으므로 33이라는 수치는 재현 가능한 산출물을 연결하기 전에는 독립 검증된 하한으로 쓰지 말아 주세요. 현재 #1899의 이는 사용자 요청을 더 작은 목표로 바꾸지 않기 위한 문서 정확성 finding입니다. org 설정·보안 gate 변경이나 추가 모델 timeout을 요청하지 않습니다. 2026-09-07 추가 근거 — 같은 HEAD 재확인현재 #1905는 여전히 이는 해당 경로의 불필요한 대기 제거 근거이며 실제 조직 적체 감소·모든 경로 56초 단축·보호 병합을 증명하지는 않습니다. #1900의 현재 hosted 검사는 아직 대기 중입니다. 기존 분석 수치와 capacity 미확인 상태는 보존하되 추가 구조 수리가 무의미하다는 일반화는 수정해야 합니다. |
There was a problem hiding this comment.
Pull request overview
OpenCode could not approve from deterministic current-head evidence because GitHub Checks have failed.
Findings
1. HIGH Current-head GitHub Checks - Fix failed required checks before approval
- Problem: Failed same-head checks remain for
f7f480a820b1a8278eb4537943b0fcf830b9e97c. - Root cause: The model-unavailable evidence fallback is allowed only when peer GitHub Checks are complete and clean.
- Fix: Read and fix the failed check logs below, then rerun the current-head checks.
- Regression test: Keep the model-unavailable fallback gated on an empty failed-check rollup.
Failed checks:
- Required Noema Review/noema-review: FAILURE (https://github.com/ContextualWisdomLab/.github/actions/runs/33955810883/job/101306378575)
- noema-review check run: failure (https://github.com/ContextualWisdomLab/.github/actions/runs/33955810883/job/101306378575)
Changed-File Evidence Map
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Docs: product-technical-gap-baseline.md"]
S1 --> I1["operator or user guidance"]
I1 --> R1["Review risk: Docs: product-technical-gap-baseline.md"]
R1 --> V1["docs review"]
OpenCode Review Overview
|
|
Classification for the two failing checks on |
|
추가 실측 후보를 공유합니다. YAML 최적화가 더는 유효하지 않다는 결론은 범위를 좁혀야 합니다. 기존 #1962는 Strix의 read-only changed-scope/admit 작업을 하나의 runner로 합쳐 metadata job 수를 2→1로 줄입니다(로컬 검증 완료, 아직 미병합이며 org queue 감소 실증은 아님). 현재 c31aa0234dcae6bf1b7e27c55be7bdc87d4fe507의 security-scan.yml:97–102, sast-semgrep.yml:74–79, strix.yml:179–184에는 3회 파일목록 조회가 모두 실패하면 마지막 시도 뒤에도 sleep 9초가 실행됩니다. 세 번째 뒤에는 추가 조회가 없으므로 그 대기는 재시도에 기여하지 않습니다. 앞선 3초/6초 backoff와 불완전 목록일 때 전체 스캔 정책은 보존해야 합니다. 이는 해당 실패 경로에서 작업당 9초 절감 후보이지, 조직 60-job ceiling의 주원인이나 정상 경로의 절감 증거가 아닙니다. required context를 삭제하거나 보안 gate를 약화하지 않고도 가능한 국소 개선과 조직 capacity 문제를 구분해 주세요. |
|
기존 원장/분석을 보존한 채 결론 범위만 좁히는 owner coordination입니다. 새 baseline/원장 PR을 만들지 않습니다. Fresh live state:
수정 원칙:
같은 |
|
Exact-head conclusion repair — A concurrent writer first advanced the branch to Current source no longer contains The PR remains a Ready stacked documentation PR on #1903. Prior-head CHANGES_REQUESTED and checks are not approval for this head; qualifying independent review and protected integration remain pending. |
|
Exact-head handoff after non-force push guard stopped a duplicate local write.
Reusable verification receipt from the unpublished local tree, provided as non-authoritative supporting evidence only: full repository suite Current API head observed during this handoff: |
|
Exact-head stacked reconciliation —
New exact-head hosted runs are queued, not GREEN:
No auto-merge, approval, bypass, empty push, manual rerun, force push, or review dismissal was performed. |
|
Ready-for-review admission restored on unchanged exact head Fresh final audit immediately before the transition found the PR had been converted back to Draft even though:
Ready event: The Ready event cancelled the earlier queued runs and registered new same-head runs, all still queued:
No auto-merge, approval, bypass, empty push, manual rerun, force push, or review dismissal was performed. |
There was a problem hiding this comment.
Pull request overview
OpenCode could not approve from deterministic current-head evidence because GitHub Checks have failed.
Findings
1. HIGH Current-head GitHub Checks - Fix failed required checks before approval
- Problem: Failed same-head checks remain for
fcdb8dfe6951704cce688ec2e3756837b04bd71c. - Root cause: The model-unavailable evidence fallback is allowed only when peer GitHub Checks are complete and clean.
- Fix: Read and fix the failed check logs below, then rerun the current-head checks.
- Regression test: Keep the model-unavailable fallback gated on an empty failed-check rollup.
Failed checks:
- Required Noema Review/noema-review: FAILURE (https://github.com/ContextualWisdomLab/.github/actions/runs/34079112045/job/101622342955)
- noema-review check run: failure (https://github.com/ContextualWisdomLab/.github/actions/runs/34079112045/job/101622342955)
Changed-File Evidence Map
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Docs: product-technical-gap-baseline.md"]
S1 --> I1["operator or user guidance"]
I1 --> R1["Review risk: Docs: product-technical-gap-baseline.md"]
R1 --> V1["docs review"]
The failing check is not in this PR's diff — and a rerun is not currently justifiedThe review asks to "read and fix the failed check logs, then rerun the current-head checks." I read them. There is nothing in this PR to fix, and I am deliberately not rerunning yet. Evidence for both halves: 1. The diff cannot cause this failureThis PR changes one file, docs-only: The failing job ( A 502 from the gateway after a 22.6-minute wait, on 2. Why I am not rerunning right now
No successful Noema review in 5.7 hours. Both decisive observations since are failures, and a rerun I triggered on I will rerun as soon as there is evidence the gateway serves again — a single Context: this lane's failures are expensiveMeasured across 66 repositories, 503 completed runs (jobs that actually held a runner): Failures are 52% of completions but 69% of the lane's runner time — a failing job holds a runner ~2.28× as long as a passing one, because the 502 arrives only after the full wait. That is why blind reruns here are costly rather than free, and why route-health evidence is worth checking first. Ratio and share are window-independent; the absolute minutes are not comparable across repos, since each contributed its newest page. 🤖 Generated with Claude Code |
|
Canonical baseline handoff for user-requested review/agent skill adoption: #2012, exact head Please append the following bounded entry through this existing baseline owner (not a duplicate baseline PR):
The root baseline, AGENTS/CLAUDE and CHANGELOG source have not been updated by this child. Its new procedure is Unreleased. Preserve all other lane deltas, controls and evidence distinctions. |
There was a problem hiding this comment.
Pull request overview
OpenCode could not approve from deterministic current-head evidence because GitHub Checks have failed.
Findings
1. HIGH Current-head GitHub Checks - Fix failed required checks before approval
- Problem: Failed same-head checks remain for
fcdb8dfe6951704cce688ec2e3756837b04bd71c. - Root cause: The model-unavailable evidence fallback is allowed only when peer GitHub Checks are complete and clean.
- Fix: Read and fix the failed check logs below, then rerun the current-head checks.
- Regression test: Keep the model-unavailable fallback gated on an empty failed-check rollup.
Failed checks:
- Required Noema Review/noema-review: FAILURE (https://github.com/ContextualWisdomLab/.github/actions/runs/34079112045/job/101622342955)
- noema-review check run: failure (https://github.com/ContextualWisdomLab/.github/actions/runs/34079112045/job/101622342955)
Changed-File Evidence Map
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Docs: product-technical-gap-baseline.md"]
S1 --> I1["operator or user guidance"]
I1 --> R1["Review risk: Docs: product-technical-gap-baseline.md"]
R1 --> V1["docs review"]
Summary
Stacked on #1903 because both PRs update
docs/product-technical-gap-baseline.md; this remains the existing canonical ledger lane rather than a duplicate PR.The 35-workflow static analysis and its trigger/matrix/required-context observations are preserved, but the conclusion is scoped to what the method can establish:
33is a conservative static admission ceiling/estimate for the modeled synchronize event, not observed concurrent runner occupancy and not a measured lower bound.17eb37df91c4c5ce5beaeb2f243f79af45d17150removed a verified 56-second runner-held wait and 105 lines from one workflow path. Its branch evidence reports 470 CI tests, 3 behavior tests, and officialactionlintpassing, but fix(scheduler): reject commented reviews before runner admission #1900 is not yet protected-main evidence.This PR only updates the product/technical gap ledger. It does not weaken required checks, claim an organization-wide queue reduction, or treat approval, permissions, local tests, or an open successor as protected integration.
Current stacked authority
fcdb8dfe6951704cce688ec2e3756837b04bd71cf4ff7f8c025c4d0a15145c3cd634d96c92326ec3behind_by=0Test plan
tests/test_product_technical_gap_baseline.py: 5 passedgit diff --check: cleanjob\\namongformatting defect replaced with a real Markdown line break