feat: add read-only Actions queue health evidence - #1150
80 commits merged into
Conversation
|
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: 📝 WalkthroughWalkthrough시간별 GitHub Actions 큐 상태 수집 기능을 추가했습니다. 허용 저장소의 실행과 작업을 읽기 전용으로 조회하고, 실행 상태와 queue-age SLO를 분류합니다. 결과를 JSON·HTML 아티팩트로 저장하며, 워크플로 계약과 처리 경로를 테스트합니다. ChangesActions Queue Health
Estimated code review effort: 4 (Complex) | ~45 minutes Merge Risk: 🟡 Moderate · up to The new scheduled read-only queue-health collector can remain stuck on an unresponsive GitHub API call and occupy the workflow for up to its platform limit, delaying later runs; bounded API and job timeouts should be added before merge, with several smaller validation and robustness follow-ups remaining. Sequence Diagram(s)sequenceDiagram
participant Scheduler as GitHub Actions scheduler
participant Workflow as actions-queue-health.yml
participant Script as actions_queue_health.py
participant GitHub as GitHub API
participant Artifact as Actions artifacts
Scheduler->>Workflow: 매시간 collect 작업 실행
Workflow->>Script: allowlist와 토큰으로 수집 시작
Script->>GitHub: 저장소·PR·실행·작업 읽기 요청
GitHub-->>Script: 큐 및 runner 상태 반환
Script-->>Workflow: JSON·HTML 보고서 생성
Workflow->>Artifact: 실행별 보고서 업로드
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 1📝 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 |
|
Current-main successor for #1142: head |
|
Current-head review request for PR #1150:
Please provide a fresh independent review for this exact head. Protected current-head checks and qualifying approval remain required before merge. |
|
Current-head verification for |
|
@opencode-agent Review exact current head |
c3697b6 to
f92f08e
Compare
|
@opencode-agent Review exact current head f92f08e against main@2cce96f8. Rebased the read-only Actions queue-health evidence onto current main; allowlisted repositories, bounded pagination/identity retries, named read credentials, and no write/dispatch/merge permissions are preserved. Verified: 76 queue-health/commercial-readiness tests, actionlint, compileall, interrogate, ruff, and git diff --check passed. |
|
Exact-head ecosystem review requested. Verify the current source and checks only; preserve protected gates and read-only credential boundaries. @opencode-agent review |
|
@opencode-agent Review the current exact head of the read-only Actions queue-health successor. Verify complete bounded pagination, exact pull-request/head identity, transient incomplete-response retry, runner-assignment and queue-age classification, deterministic JSON/accessible HTML, and the absence of cancellation, dispatch, branch, merge, or credential-expansion authority. Reacquire exact-head quality, security, CodeQL, SAST, dependency/SBOM, and formal review evidence. Do not alter the branch. |
|
Current exact head The read-only queue-health collector bounds Actions workflow-run responses to 50 records per page, rejects path-traversal repository segments, retries one transient incomplete PR identity response after a bounded delay, records repository-scoped collection failures as explicit incomplete evidence, rejects duplicate repositories, applies a 30-second API subprocess timeout, and has a 30-minute workflow ceiling. It never cancels runs, changes branches, dispatches workflows, or mutates merge state. Systematic RED → GREEN:
Exact-head hosted evidence:
The eight security/SBOM/CodeQL runs and a qualifying exact-head formal Reviews API verdict remain non-passing prerequisites. |
|
Exact current head evidence for
Please review and evaluate Checks against this exact SHA only. No self-approval or predecessor-head evidence transfer. |
|
Final exact current head is now |
|
Correction to my immediately preceding comment: the exact final HEAD is |
|
@opencode-agent Please perform the independent review on exact current head |
|
#2213 current exact is now Re-review found no different causal defect: failure diagnostics survive collection, only zero-step/no-runner failed jobs become |
|
Fresh TEPP Ready-state canary on unchanged exact head: |
|
Fresh queue-health canaries extend the same pre-checkout class without touching leaf workflows:
|
|
Fresh child-owner settlement specimen on #2213 exact |
|
Fresh TEPP canary after successor consolidation: |
|
Fresh TEPP queue-health canary on the current main-target successor: This supersedes the older #538 |
|
Fresh read-only canary from |
|
Fresh TEPP queue canary after causal coverage repair: |
|
Fresh TEPP canary for the queue-health owner path: |
|
A benign reproducer of this owner's third incident class, plus a correction to my own disclosure above. The PR body enumerates "a job can be cancelled after materialization but before runner assignment."
concurrency:
group: fuzz-${{ github.ref }}
cancel-in-progress: trueI pushed the next documentation commit to the same ref at 03:53:23Z and that cancelled the waiting run. No cancellation campaign, no runner-selector change, no attempt to influence a conclusion — just an author committing again while a run sat in the queue. Why this matters to the collector. A cancelled-pre-runner job is indistinguishable at read time from the incident class unless the cause is checked. Any repository with Correction to my earlier comments. I wrote that no cancellation was used. That was true of the runs I reported, which all completed and were left alone until they scheduled themselves. It is not true of the repository as a whole: this run was cancelled, by me, in the way described. I would rather state that than leave the earlier wording implying otherwise. It also censors the dwell figures I gave you. Those nine waits are only the runs that got a runner before my next push. Longer waits are likelier to be cut short by a subsequent commit, so the sample is biased toward shorter values, and the 3h16m–6h01m interval should be read as a floor on the spread rather than its true extent. This strengthens rather than weakens the earlier point: a dwell threshold is not a sound discriminator, and here even the observed distribution is not trustworthy as a distribution. If the collector computes any duration statistic from terminal runs, it will need to account for supersede-cancelled runs or it will systematically under-measure the wait. Generated by Claude Code |
|
Fresh TEPP downstream specimen after Evidence #527 advanced ordinary-forward to exact |
|
TEPP canary update: the previously pre-checkout Ready-head Rust Foundation specimen has now recovered on unchanged |
|
TEPP queue canary refinement on unchanged |
|
TEPP canary refinement on unchanged |
|
TEPP queue-health refinement on unchanged |
|
Fresh TEPP canary update for queue-health classification: |
|
Follow-up after the supported failed-job rerun on the same TEPP #538 exact head: CodeQL run |
|
Fresh TEPP consumer evidence changes the CodeQL specimen classification for PR #538 exact CodeQL attempt 2 compatibility jobs are no longer pre-runner queue specimens: Python job So the current queue-health specimen is the dispatch job only. The two compatibility failures are a separate orchestration/order evidence path and should not be counted as runner-admission failures. No leaf rerun/no-op push/gate weakening was performed. TEPP #538 remains fail-closed pending a terminal current-head dispatch verdict. |
|
Fresh TEPP canary adds a distinct partial matrix-admission specimen on one unchanged exact head. This is not a Draft-guard specimen and not a source-test failure classification for the queued Actions shard: the sibling Python shard was admitted and executed while Actions remained pre-checkout. Please preserve the matrix/job identity distinction in queue-health evidence rather than collapsing the whole workflow into one queue state. No rerun, no-op commit, runner-selector change, cancellation, or synthesized status was used. |
|
Fresh TEPP #538 exact-head queue evidence (2026-09-17): CodeQL PR run |
|
Fresh TEPP leaf evidence on unchanged foundation #538 exact |
|
Fresh TEPP downstream queue evidence on unchanged PR #538 exact |
Canonical read-only Actions queue-health owner lane and current-main successor for #1142. It classifies Actions admission states without cancelling/rerunning observed workflows, mutating leaf branches, synthesizing success, weakening required checks, or merging repositories under observation.
Current protected-base reconciliation — 2026-09-17 KST
Protected
.github/mainis now exact8c77327a52883cbb7a9a698a67c20b3c2bec6700, the signed merge commit that brought canonical #2234 CodeQL endpoint/parser/wake-verdict repair into main. Prior queue-health owner exact was42bb922f03bf75aed1bc1931d9fbaf04a5433e20.Fresh comparison showed protected main had advanced by 26 commits while none of the queue-health owner paths had conflicting content. I therefore reconciled this lane by ordinary non-force two-parent ancestry, not by source copy or destructive rebase. Current exact is
6f9f2b4d9d1223355a417ba48d8a11500f267986with parents42bb922f...(owner) and8c77327...(protected main). Its tree is protected-main tree plus the prior queue-health owner blobs. Comparison to both parents is ahead-only / behind 0. Effective delta against current main is 12 paths; two historical owner paths (docs/doctoring/actions-queue-saturation-hourly-sweep.mdandtests/test_actions_queue_saturation_scheduler_cadence.py) are no longer effective diffs because identical content is already present on current main.No old checks or reviews transfer. Fresh exact-head generation on
6f9f2b4...is nonterminal: Security Scan35214786186queued, Python Security35214786233queued, SAST Semgrep35214786215queued, and CodeQL PR35214786187pending.Owner-side incident contract
Independent ContextualWisdomLab repositories reproduce distinct pre-source-execution states:
startup_failurebefore any job exists;The collector keeps those states distinct and fail closed. Ordinary head-bound evidence uses bounded supported workflow-run queries and local classification.
pull_request_targetcancellation candidates are accepted only after linked current-open-PR number/head identity is proven. PR identity is re-read after terminal/job evidence; transient incomplete reads receive bounded retry while persistent incompleteness or identity drift remains a hard evidence failure.Downstream ordering
#2201 remains a dependent queue-health enrollment/integration lane and still carries historical terminal CodeQL RED provenance from inherited pre-#2234 source. Because #2234 is now canonical protected-main ancestry, the correct sequence is: #1150
6f9f2b4...terminal exact-head acceptance → normal/non-force #2201 reconciliation/restack → fresh #2201 evidence. Do not blind-rerun the old #2201 head or copy #2234 source into it.RED / GREEN closure criterion
RED is either an exact-current required workflow terminating before jobs exist or an exact-current materialized required job with no runner assignment, checkout identity, or steps. GREEN requires unchanged exact owner/leaf heads to obtain actual runner assignment, checkout identity and terminal required conclusions under the current ruleset while the collector continues to distinguish pre-job and pre-checkout cases fail closed.
Keep Draft until this unchanged exact has terminal applicable protected checks, all valid findings are resolved, and live review policy is satisfied. No self-approval, administrator bypass, force update, destructive rebase, no-op freshness commit, blind rerun, runner-selector churn, cancellation campaign, source copy, gate weakening, predecessor-evidence transfer, or synthetic success.