Skip to content

feat: add read-only Actions queue health evidence - #1150

Draft
seonghobae wants to merge 79 commits into
mainfrom
codex/pr1142-current-main-successor
Draft

seonghobae wants to merge 79 commits into
mainfrom
codex/pr1142-current-main-successor

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Canonical read-only Actions queue-health owner lane and current-main successor for #1142. It classifies organization 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-14

Protected .github/main is exact 91be6442906c7b6b4f600272c953699708394327. Fresh comparison from prior #1150 exact fbcf718f69a39b4d80dcc3f9d03a04b121d4a171 to protected main showed the branches diverged only because main had one new Pingora/OpenCode merge touching six paths; none overlap the 13 queue-health owner paths.

The owner was therefore reconciled again without force. Current exact 42bb922f03bf75aed1bc1931d9fbaf04a5433e20 is a two-parent descendant of fbcf718... and protected main@91be644.... Its tree preserves the #1150 owner paths and overlays the six current protected-main blobs. Comparison against main@91be644... is ahead-only/behind 0; the effective queue-health delta remains the same bounded owner implementation/config/docs/tests. Predecessor checks/review do not transfer.

Current exact hosted generation remains nonterminal. SAST 34831634664 and Agent Review Runtime Quality CI 34831634694 are now terminal SUCCESS on unchanged exact head 42bb922f...; Python Security 34831634654, Security Scan 34831634718, and CodeQL PR 34831634674 remain queued/nonterminal. These successes are owner-head evidence only and do not transfer to enrollment children such as #2200.

Owner-side incident contract

Independent ContextualWisdomLab repositories reproduce distinct pre-source-execution states:

  • a required workflow can terminate startup_failure before any job exists;
  • a workflow can materialize jobs that remain pre-checkout with no runner assignment/checkout/steps;
  • a job can be cancelled after materialization but before runner assignment.

The collector keeps those states distinct and fail closed. Ordinary head-bound evidence uses bounded supported workflow-run queries and local classification. pull_request_target cancellation 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.

DiskSage enrollment child

Fresh DiskSage evidence now reproduces this incident class, but #1150's explicit bounded repository allowlist did not include ContextualWisdomLab/disksage. Child #2196 owns only that enrollment delta and its exact-equality contract test. After this parent reconciliation, #2196 was itself non-force restacked as exact 401a6ea6def79ecfa79072c8fa5ddf548cc9243d, ahead-only of this owner with exactly two effective changed paths. It remains Draft/nonterminal and must not be treated as incident GREEN.

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.

Merge only when this unchanged exact head has terminal applicable protected checks, all valid findings are resolved, and live review policy is satisfied. Queued, pending, cancelled, startup-failure and predecessor results are incomplete evidence. No self-approval, administrator bypass, force update, destructive rebase, no-op freshness commit, blind rerun, runner-selector churn, cancellation campaign, gate weakening or synthetic success is authorized.

@coderabbitai

coderabbitai Bot commented Aug 19, 2026

Copy link
Copy Markdown

Review Change Stack

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 1ae1f3de-5a46-45ff-b947-18ee3b0e41fb

📝 Walkthrough

Walkthrough

시간별 GitHub Actions 큐 상태 수집 기능을 추가했습니다. 허용 저장소의 실행과 작업을 읽기 전용으로 조회하고, 실행 상태와 queue-age SLO를 분류합니다. 결과를 JSON·HTML 아티팩트로 저장하며, 워크플로 계약과 처리 경로를 테스트합니다.

Changes

Actions Queue Health

Layer / File(s) Summary
입력 계약 및 GitHub API 수집 기반
scripts/ci/actions_queue_health.py, tests/test_actions_queue_health.py
저장소, 타임스탬프, API 응답을 검증합니다. gh api를 읽기 전용으로 호출하고 PR, 작업, workflow run 데이터를 정규화합니다.
허용 저장소 스냅샷 수집
config/actions_queue_health_repositories.json, scripts/ci/actions_queue_health.py, CHANGELOG.md, tests/test_actions_queue_health.py
4개 허용 저장소에서 PR과 queued/in-progress 실행을 수집합니다. 현재 head 실행의 작업을 조회하고, 불완전한 PR 식별 응답은 한 번 재시도합니다.
실행 분류 및 보고서 출력
scripts/ci/actions_queue_health.py, tests/test_actions_queue_health.py
실행을 current-head, obsolete, unlinked로 분류합니다. runner 할당, queue-age SLO, 중복 lane, 차단 사유를 JSON·HTML 보고서에 기록합니다.
워크플로 연결 및 운영 계약 검증
.github/workflows/actions-queue-health.yml, scripts/ci/actions_queue_health.py, tests/test_actions_queue_health.py, tests/test_actions_queue_health_contract.py, docs/doctoring/actions-queue-health.md, CHANGELOG.md, scripts/ci/organization_commercial_readiness_loop.py
시간별 읽기 전용 워크플로가 토큰, allowlist, 스크립트, JSON·HTML 아티팩트를 연결합니다. CLI 오류와 SLO 경고, 워크플로 권한, 고정 액션 버전, 운영 제한을 검증하고 문서화합니다. GitHubClient.__init__ 설명과 모듈 진입점 동작도 갱신합니다.

Estimated code review effort: 4 (Complex) | ~45 minutes

Merge Risk: 🟡 Moderate · up to 47bb2

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: 실행별 보고서 업로드
Loading
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 41.38% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목은 읽기 전용 GitHub Actions 큐 상태 증거를 추가하는 주요 변경 사항을 정확하고 간결하게 설명합니다.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/pr1142-current-main-successor

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@seonghobae

Copy link
Copy Markdown
Contributor Author

Current-main successor for #1142: head 36006cda56f2400f09d30f467a308e74cb42f289 is based on main bbedc1a51ec1a2421f129955c629b3cd0507a4ec. Fresh local evidence: queue-health tests 40 passed; interrogate 100%; compileall, actionlint, and diff-check pass. Project #1 item added; protected current-head checks and review-thread requirements remain authoritative.

@seonghobae

Copy link
Copy Markdown
Contributor Author

Current-head review request for PR #1150:

  • Exact head: 36006cda56f2400f09d30f467a308e74cb42f289.
  • Adds a read-only, explicitly allowlisted Actions queue-health report for .github, TEPP, naruon, and contextual-orchestrator, with exact-head classification, bounded pagination, runner assignment/SLO evidence, deterministic JSON, and accessible HTML.
  • Cross-repository reads use the configured read credential and the workflow has no cancellation, dispatch, merge, or write permissions.
  • Local evidence: queue-health and commercial-readiness tests 54 passed; actionlint .github/workflows/actions-queue-health.yml, Ruff, compileall, and diff-check passed.

Please provide a fresh independent review for this exact head. Protected current-head checks and qualifying approval remain required before merge.

@seonghobae

Copy link
Copy Markdown
Contributor Author

Current-head verification for c3697b63 against live main@c47bee59: Actions queue-health focused tests passed (40 passed); compileall, CLI help, actionlint, and diff checks passed. The read-only credential/config boundary remains intact; review this exact head only.

@seonghobae

Copy link
Copy Markdown
Contributor Author

@opencode-agent Review exact current head c3697b63 against main@c47bee59. Inspect read-only Actions queue-health evidence, cross-repository credential selection, transient PR identity retries, bounded pagination, and hosted checks. Do not reuse predecessor evidence.

@seonghobae
seonghobae force-pushed the codex/pr1142-current-main-successor branch from c3697b6 to f92f08e Compare August 20, 2026 04:09
@seonghobae

Copy link
Copy Markdown
Contributor Author

@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.

@seonghobae

Copy link
Copy Markdown
Contributor Author

Exact-head ecosystem review requested. Verify the current source and checks only; preserve protected gates and read-only credential boundaries.

@opencode-agent review

@seonghobae
seonghobae enabled auto-merge (squash) August 20, 2026 05:34

Copy link
Copy Markdown
Contributor Author

@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.

@opencode-agent
opencode-agent Bot disabled auto-merge August 20, 2026 06:58
@seonghobae

seonghobae commented Aug 20, 2026

Copy link
Copy Markdown
Contributor Author

Current exact head 7bbd13393b7d7bfc7f76b544d4e33fc572ccb471 is based on protected main@6479989bbff475404cc2cccc468d5fb1d6c632e5; all predecessor checks and review evidence are historical and non-passing.

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:

  • RED on predecessor 94e41c6fc3b05cd342fa912586cabebcb9fe5d9e: required interrogate failed at 99.9%, identifying the undocumented FakeClient.__init__.
  • Minimal GREEN: adopted the same compatible constructor docstring already present in the canonical Strix successor instead of creating a competing implementation.
  • local focused queue-health suites: 51 passed
  • local full central suite: 1285 passed, 16 subtests passed
  • local docstring gate: 100.0%
  • local queue collector coverage: 367 statements / 164 branches / 100% across 49 tests
  • Python compile and git diff --check: passed

Exact-head hosted evidence:

  • Organization Commercial Readiness Loop Quality CI run 32378389730, job 96455250457: log proves checkout of 7bbd13393b7d7bfc7f76b544d4e33fc572ccb471; 34 passed; completed success.
  • Strix Changed Path Quality CI run 32378389741, job 96455249166: log proves checkout of 7bbd13393b7d7bfc7f76b544d4e33fc572ccb471; 1285 passed, 16 subtests passed; completed success.

The eight security/SBOM/CodeQL runs and a qualifying exact-head formal Reviews API verdict remain non-passing prerequisites.

coderabbitai[bot]

This comment was marked as resolved.

Copy link
Copy Markdown
Contributor Author

Exact current head evidence for a6ac2620207d419a988a9cfabe8903feb378b542:

  • full suite: 1285 passed, 16 subtests passed
  • production coverage: 8205 statements / 3210 branches, 100%
  • interrogate scripts/ci --fail-under=100: passed
  • Python compileall, git diff --check, and actionlint .github/workflows/actions-queue-health.yml: passed
  • fixed verified review findings: reject ./.. repository segments; typed pull-request identity retry with bounded delay; isolate per-repository API/pagination failures and publish explicit JSON/HTML incomplete-evidence entries

Please review and evaluate Checks against this exact SHA only. No self-approval or predecessor-head evidence transfer.

Copy link
Copy Markdown
Contributor Author

Final exact current head is now 94e41c6f7d6db6f9d1d8c0d4a4d1f2b1eebfbe4c after the doctoring APA 7 references were added (docs-only follow-up to the verified code commit). Prior exact-head evidence remains valid for the code at a6ac2620207d419a988a9cfabe8903feb378b542; please bind any independent review and required Checks to 94e41c6f7d6db6f9d1d8c0d4a4d1f2b1eebfbe4c.

Copy link
Copy Markdown
Contributor Author

Correction to my immediately preceding comment: the exact final HEAD is 94e41c6fc3b05cd342fa912586cabebcb9fe5d9e. The prior SHA text in that comment was incorrect; disregard it. The docs-only follow-up is on top of the verified code commit a6ac2620207d419a988a9cfabe8903feb378b542. Please bind review and Checks only to 94e41c6fc3b05cd342fa912586cabebcb9fe5d9e.

Copy link
Copy Markdown
Contributor Author

@opencode-agent Please perform the independent review on exact current head 94e41c6fc3b05cd342fa912586cabebcb9fe5d9e only. The prior CodeRabbit findings were addressed in the code commit below it; the latest commit only adds APA 7 doctoring references. Bind the verdict to current Checks and do not transfer predecessor-head evidence.

Ordinary non-force reconciliation of main@7f07029381a9ca770d0a68b7f3938dd652799d4d into codex/pr1142-current-main-successor. No predecessor evidence transfers; #1150 must reacquire exact-head gates.

seonghobae commented Sep 14, 2026

Copy link
Copy Markdown
Contributor Author

Current exact-head queue-health authority — 2026-09-14

#1150 remains the read-only queue-health owner on exact fbcf718f69a39b4d80dcc3f9d03a04b121d4a171, directly reconciled to protected main@7f07029381a9ca770d0a68b7f3938dd652799d4d. Its exact-head CodeQL run 34798126634 still exposes the pre-runner class: Detect CodeQL languages is queued with runner_id=0, no runner identity and steps=[].

#712 supplies the causal organization-level diagnosis rather than generic hosted-admission speculation: the observed sample contained 32 in-progress jobs and 113 queued jobs, no self-hosted runners, and 31 in-progress review jobs still bound to current PR heads. Long holders spent roughly 3.5–5+ hours in Provision contextual-orchestrator review sidecar. This followed protected #2163 moving the sidecar to CO 767e67fbc6b881a452761f32abb69b9971b9b03b, whose default model timeout is intentionally None; restoring the historical implicit 90-second total model deadline remains prohibited.

The causal startup/preflight writer is existing .github#1629, now exact 7376d47b22f5592b86424fcbe288cf5fc07c3589. This run repaired the provider-account concurrency fixture so it no longer injects max_tokens=16, changed the reasoning-only regression to require one provider-default request, and corrected the resilience plan to the one-shot contract. More importantly, all purpose-complete self-modifying source-fix machinery has now been deleted from the branch. The predecessor repair workflow run 34801607107 is still queued on obsolete 3100e78b... with runner_id=0/steps=[]; because its workflow checked out the moving branch while the referenced mutation driver has now been removed, it is neither publication authority nor a valid reason to wake/retry the branch.

#1629 is still a real production RED, not GREEN: its launcher retains repository-authored token/sampling constants and 16→4096 semantic escalation, and the shell gateway check retains duplicate inference replay. Those findings stay with #1629 until directly repaired. #2139/#2140 separately own progress/idle runner-occupancy semantics; CO #1106 plus central #1759 remain the final free-pool admission/routing/TTC and immutable-release boundary.

Do not cancel still-current review jobs merely to free capacity, emit no no-op wake commits/manual rerun storm, and do not restore a total elapsed model timeout, hard-code provider/model policy, introduce paid fallback, or weaken required gates.

Copy link
Copy Markdown
Contributor Author

Fresh independent exact-head queue evidence for the canonical read-only owner lane; no leaf rerun/no-op commit/gate mutation performed.

aFIPC #349 — partial admission followed by pre-checkout starvation

  • repo/PR: ContextualWisdomLab/aFIPC#349
  • unchanged exact head: 98932ff38aef2530911ac9127a2352bc047abefd
  • required Security Scan run: 34794759590
  • run created: 2026-09-14T01:05:30Z; still queued at fresh read
  • scope detector job 103825593933 eventually received GitHub-hosted runner 1001971019 at 03:20:13Z and succeeded
  • downstream scorecard job 103847122905 and trivy-fs job 103847122925, both created at 03:20:16Z, remain queued with runner_id=0, empty runner name/group, and steps=[]
  • the same exact head already has terminal GREEN R CMD check / Code Quality / Security Audit / SAST; Required CodeQL 34794759498 is independently queued

This is useful because it distinguishes workflow-wide non-admission from DAG-stage partial admission: one job in the same required Security Scan generation ran to success, then eligible downstream jobs materialized and stalled before runner assignment. The collector/report should preserve that distinction instead of assigning one run-level cause/status to all jobs.

Gyeot #53 — unchanged exact head still pre-checkout

  • repo/PR: ContextualWisdomLab/gyeot#53
  • exact head: b576fcf352a87d2aaa90fe5094e821506daafd0a
  • App CI run 34804782758: server-verify job 103854393184 and verify job 103854393347 are queued before execution
  • SAST job 103854395051 is queued; Security Scan scope job 103854395706 is queued
  • current-head admission/cancellation control jobs are likewise queued
  • required CodeQL has also materialized current-head work; no predecessor result is being promoted

Owner-path acceptance addition: report queue state at the job/DAG stage with {repo, PR, head, base, workflow_run, job_id, needs/dependency stage if available, created_at, runner_assignment, steps_presence}. A run where an upstream job received a runner but downstream jobs remain runner_id=0 must remain a hard non-GREEN state and must not be collapsed into either ‘runner unavailable for whole run’ or ‘workflow started successfully’. GREEN remains unchanged exact head + actual runner assignment/checkout + terminal required conclusions.

Please keep the fix in this owner lane and immutable release path; leaf branches should remain untouched while this control-plane condition persists.

Copy link
Copy Markdown
Contributor Author

Fresh leaf evidence for the canonical queue-health owner; no leaf rerun/commit/gate mutation performed.

Gyeot #55 — new exact-head pre-checkout specimen

  • repo/PR: ContextualWisdomLab/gyeot#55
  • exact head: 4be407556c70c64b0a36664e22e258065aef4121
  • current-head workflow generation: App CI 34808628969, Security Scan 34808628913, CodeQL PR 34808629049, SAST Semgrep 34808629273; all remain queued
  • App CI jobs are already materialized but still pre-execution: verify job 103865359197 and server-verify job 103865359229 are both queued with steps: null in the supported workflow-job response
  • this is a different unchanged leaf head from the previously recorded Gyeot ⚡ Bolt: iter_json_objects JSON 파싱 성능 병목 해결 (O(N^2) 제거) #53 specimen, so it is additional cross-head evidence rather than a predecessor-status transfer

Acceptance for #1150 should continue to classify this as materialized-job/pre-checkout admission failure, not as source/test failure or workflow-wide zero-job startup_failure. GREEN for this specimen requires the unchanged #55 head to obtain actual runner assignment/checkout and terminal required conclusions. Do not answer it with a no-op leaf commit, manual rerun storm, runner-selector churn, synthetic status, or gate weakening.

Copy link
Copy Markdown
Contributor Author

Current-head follow-up for the same leaf after a real test-only descendant; no leaf rerun/no-op/gate mutation was used.

Gyeot #55 — unchanged current-head admission failure

  • repo/PR: ContextualWisdomLab/gyeot#55
  • exact current head: 06e1369073d1098146936fb377a7008147e4580f
  • App CI run 34811954571: queued
    • verify job 103874915900: queued, steps: null
    • server-verify job 103874916057: queued, steps: null
  • CodeQL PR 34811954588: queued
  • Security Scan 34811954560: queued
  • SAST Semgrep 34811954572: queued

The new head changes only the DB integration acceptance so it proves a real pre-existing loneliness_rating=4 row survives the additive NOT VALID tightening migration. The materialized App CI jobs still have no execution steps, so this is again pre-checkout admission evidence on the actual current leaf head, not a test failure and not predecessor-status transfer.

Please keep this specimen tied to the exact head above and classify it separately from zero-job startup_failure. GREEN requires actual runner assignment/checkout plus terminal required conclusions on the unchanged leaf head; do not answer with a no-op commit, rerun storm, runner-selector change, synthetic status, or gate weakening.

Copy link
Copy Markdown
Contributor Author

Fresh read-only leaf canary for the owner lane: ContextualWisdomLab/gyeot#58@5ea543c73861aa85999f27fa720b237bbfb9213b generated App CI run 34819598281. Both materialized jobs are still pre-checkout: server-verify job 103897867720 and verify job 103897867890 are queued, steps=[], runner_id=null, runner_name=null, with the exact same current head SHA. The same head also has Security Scan 34819598294, SAST 34819598298, and CodeQL PR 34819598280 queued.

Please treat this as the materialized-job / pre-runner-assignment class, not a leaf source failure and not evidence to trigger a no-op commit/manual rerun. Owner GREEN remains unchanged-head runner assignment + checkout identity + terminal required conclusions; keep this leaf read-only while the control-plane RCA proceeds.

Copy link
Copy Markdown
Contributor Author

Fresh superseding leaf canary after the Gyeot migration branch advanced by ordinary descendants: ContextualWisdomLab/gyeot#58@2aa0876246f0115c03aa358a1fcc39913ff132de. App CI run 34819886089 has two materialized jobs, server-verify 103898788608 and verify 103898788827; both remain queued with steps=[], runner_id=null, runner_name=null on that exact head. Security Scan 34819885901, SAST 34819886004, and CodeQL PR 34819886054 are also queued. This supersedes my earlier #58 canary comment because the leaf source head changed after additional RED→repair work. Keep classification as materialized/pre-runner-assignment, not leaf failure. No no-op commit/manual rerun/runner-selector churn on the leaf; owner GREEN remains unchanged-head runner assignment + checkout identity + terminal required conclusions.

Copy link
Copy Markdown
Contributor Author

DiskSage is now a live canary for this owner lane and was missing from the current allowlist. I opened stacked Draft #2196 exact 00b40f4dcdabbabba11ee094d1a469169fb1f849, based directly on this PR's current exact fbcf718f69a39b4d80dcc3f9d03a04b121d4a171, changing only config/actions_queue_health_repositories.json to add ContextualWisdomLab/disksage.

Current DiskSage evidence includes #405 Test 34821889477 and #382 Test 34817332809, where Windows/macOS completed while Ubuntu/llama jobs remained unassigned/queued, plus queued exact generations #371 34821213689, #417 34808643283, and #315 34822068896. A repository queue census currently returns 17 queued runs.

This child is not a competing collector writer and does not change workflow/collector logic, cancel/rerun jobs, or synthesize status. Please adopt it by ordinary/non-force succession when this owner next reconciles protected .github/main; note that protected main has since advanced to 91be6442906c7b6b4f600272c953699708394327, so hosted evidence on both the current owner head and the child remains predecessor/nonterminal until the owner itself is current-main reconciled and revalidated.

Ordinary non-force reconciliation of protected main@91be6442906c7b6b4f600272c953699708394327 into the canonical queue-health owner. The six Pingora/OpenCode mainline paths do not overlap the 13 queue-health owner paths; predecessor evidence does not transfer and the resulting exact head must reacquire gates.
seonghobae added a commit that referenced this pull request Sep 14, 2026
Non-force two-parent reconciliation of #2196 with canonical queue-health owner #115042bb922. Preserve the exact two-path DiskSage enrollment delta and current protected-main ancestry; predecessor checks do not transfer.

Copy link
Copy Markdown
Contributor Author

Fresh owner-sweep found a real sibling-overwrite hazard: #2196 (DiskSage) and #2200 (LineageWeave) both modify config/actions_queue_health_repositories.json and tests/test_actions_queue_health_contract.py from this exact owner head. #2201@9a30272ce33566d9a9c781f868443aac7edafed5 is the non-force two-parent integration descendant preserving both child heads and both enrollment contracts. Against this #1150 head it is ahead-only/behind 0 with exactly those two effective paths. Focused contract test is 2/2 GREEN; hosted Security Scan 34836345126, SAST 34836345232, CodeQL 34836345138 are queued, so no merge authorization yet.

Copy link
Copy Markdown
Contributor Author

Fresh TEPP canary for the queue-health owner: ContextualWisdomLab/TEPP#523@b733492c5ff9f108bc8f52e78da53ba7927a575d is Ready/mergeable and 0-behind its protected base. Its Rust Foundation run 34906570499 has four materialized ubuntu-latest jobs, all still queued with runner_id=0, empty runner identity, and steps=[]; Documentation Quality 34906570491 is likewise queued. Repository-wide Actions inventory at the same read reported 159 queued runs and 14 in-progress runs. No rerun, no-op commit, selector change, cancellation campaign, or status synthesis was used. TEPP is already present in #1150's bounded allowlist, so this is new same-owner evidence rather than a request for another enrollment child. Please preserve the exact repository/PR/head/workflow/job identities in the next collector snapshot once the owner lane reaches protected main.

seonghobae commented Sep 15, 2026

Copy link
Copy Markdown
Contributor Author

Pingora queue-health enrollment handoff (read-only owner path; no .github source/ref/PR-state mutation from the Pingora writer).

Fresh exact evidence on ContextualWisdomLab/pingora-gateway continues to reproduce the materialized-pre-runner hosted-admission class across independent owner lanes, but the primary leaf identity has legitimately advanced after a real hosted RED and causal repair. This comment is updated in place so the central observer does not keep stale leaf-head evidence.

  • ContextualWisdomLab/pingora-gateway#15 current exact 153831eac29137e974449a04c7998b2be0098e30: predecessor 5d997ac... did receive a hosted runner and exposed an owned-production coverage RED; subsequent causal repair preserved the denominator and finally tightened graceful-shutdown acceptance so SIGTERM delivery, bounded exit, and successful child status are all required. Current CI 34941325067 has load-contract 104290460254, oci-runtime 104290460498, and test 104290460535, all still status=queued, runner_id=0, empty runner identity, steps=[], label ubuntu-24.04; Supply Chain 34941325040 / candidate-evidence 104290459813 is the same pre-runner state. The current CodeRabbit graceful-exit finding thread is resolved; predecessor GREEN/RED receipts are not transferred to this head.
  • ContextualWisdomLab/pingora-gateway#104 exact 2dc869a21d9bb1392c7497201e130748b399d9f9: CI 34922003264 remains queued with oci-runtime 104231999006, test 104231999177, and load-contract 104231999205 all pre-runner; Supply Chain 34922003263 remains queued. This head follows the earlier 78-finding private-production rustdoc compiler RED and causal repair.
  • ContextualWisdomLab/pingora-gateway#25 exact 32e6f0833ac5800512a2602f16ba49f2712c66ee: CI 34925551926 remains queued with load-contract 104242725227, test 104242725330, and oci-runtime 104242725385 pre-runner; Supply Chain 34925552026 remains queued after current-exact review completed clean.

Current read-only implementation owner ContextualWisdomLab/.github#1150 remains Draft at exact 42bb922f03bf75aed1bc1931d9fbaf04a5433e20. Its bounded repository allowlist still does not include ContextualWisdomLab/pingora-gateway. On this unchanged owner head, SAST, Agent Review Runtime Quality, Python Security, and Security Scan are terminal SUCCESS. CodeQL compatibility receivers are terminal fail-closed because no authenticated current-head verdict existed when they ran; the coordinator later completed SUCCESS and repository-dispatch producer 34925366703 (ContextualWisdomLab/.github#1150@42bb922f...) is still status=queued with no conclusion. This is owner-lifecycle evidence, not Pingora GREEN and not a reason to rerun/cancel leaf jobs.

Please keep Pingora as the next bounded enrollment candidate in the dedicated .github writer stack rather than moving polling/classification logic into the leaf repository. Acceptance remains one allowlist entry plus exact-equality contract test, no collector/runner-selector/rerun/cancellation/check-conclusion changes, Draft until exact-head owner checks/review are terminal, and post-integration evidence binding repository/PR/head/workflow/job identities while distinguishing pre-job from materialized-pre-runner states. Enrollment is observability only; it does not transfer or synthesize GREEN for the three Pingora PRs above.

Copy link
Copy Markdown
Contributor Author

Queue-health evidence from an unenrolled repository, in the resolved form of the materialized-pre-runner class.

ContextualWisdomLab/semantic-data-portal is not in this owner's exact allowlist. config/actions_queue_health_repositories.json at exact 42bb922f03bf75aed1bc1931d9fbaf04a5433e20 lists seven entries — .github, ConceptWeave, ELUNVERA, TEPP, contextual-orchestrator, fast-mlsirm, naruon — and the portal is not among them.

What the portal adds is not another stuck snapshot. Every report on this lane so far captures the class while it is still stuck (runner_id=0, empty runner identity, steps=[], status=queued). The portal captures the same class after it resolved, four consecutive times, with terminal conclusions.

All four are the fuzz workflow on ContextualWisdomLab/semantic-data-portal#102, label ubuntu-latest:

run head created_at job started_at pre-runner dwell conclusion
34835418393 1702e19 2026-09-14T10:53:39Z 2026-09-14T15:14:49Z 4h 21m SUCCESS
34861648311 0941a83 2026-09-14T15:21:48Z 2026-09-14T21:22:24Z 6h 01m SUCCESS
34899987649 e596064 2026-09-14T21:39:08Z 2026-09-15T01:47:28Z 4h 08m SUCCESS
34919145469 297bcac 2026-09-15T01:55:09Z 2026-09-15T07:15:21Z 5h 20m SUCCESS

Exact job identities for the two most recent:

  • 34899987649: 104163367392 (Hypothesis property tests) created_at=2026-09-14T21:39:08Z, started_at=2026-09-15T01:47:28Z, runner_id=1001980356, runner_name="GitHub Actions 1001980356", terminal SUCCESS; 104163367618 (Atheris) same created_at, started_at=2026-09-15T01:49:15Z, runner_id=1001980380, terminal SUCCESS.
  • 34919145469: 104223129388 (Atheris) created_at=2026-09-15T01:55:09Z, started_at=2026-09-15T07:15:21Z, runner_id=1001982227, runner_name="GitHub Actions 1001982227", terminal SUCCESS; 104223129452 (Hypothesis) started_at=2026-09-15T07:15:32Z, terminal SUCCESS.

This bears on the RED/GREEN closure criterion in the PR body. RED is currently defined to include "an exact-current materialized required job with no runner assignment, checkout identity, or steps." During its dwell each of the four jobs above read exactly that way — runner_id=0, no checkout identity, steps=[] — and each then obtained a runner and reached terminal SUCCESS with no intervention. So a point-in-time read of the materialized-pre-runner state does not by itself separate RED from a long wait that is going to recover.

Dwell length does not separate them either. The four waits are 4h 21m, 6h 01m, 4h 08m and 5h 20m: they scatter between four and six hours and do not converge, so no duration threshold learned from this repository would be sound. If the collector is to call RED at read time, the discriminator has to be something other than "materialized and no runner yet" or "queued longer than N" — otherwise recovering waits of this length will be classified RED, and the criterion will report incidents that resolve themselves.

Two further observations from the same window, offered as observation only:

  • The runs are effectively continuous, not episodic. The second, third and fourth each entered the queue within about ten minutes of the previous one being scheduled, so from 2026-09-14T06:54Z to 2026-09-15T07:15Z this repository was essentially always waiting on a runner.
  • The condition is not trigger-specific. A schedule run on the portal's protected main was stuck in the same window as the pull_request runs, which rules out a PR-trigger or bot-author explanation.

Requested handling, matching the pattern used for DiskSage and Pingora: keep any portal enrollment as a bounded child in this .github writer stack — one allowlist entry plus its exact-equality contract test — rather than moving polling or classification into the leaf repository. I am not opening that child; this is a finding for the owner, not a request to merge anything.

Enrollment here would be observability only. It does not transfer or synthesize GREEN for the portal's 36 open PRs, whose blocker is an inherited CVE on its protected main, not this admission class.

Disclosure on head freshness: 297bcac is no longer the portal PR's exact current head. The head moved twice after that run for ordinary documentation commits on my own PR, so these four are resolved historical instances rather than current-exact evidence — which is the point being reported. No rerun, no-op freshness commit, runner-selector change, cancellation, or check-conclusion synthesis was used at any point; every run above was the ordinary pull_request run for its head, left alone until it scheduled itself.


Generated by Claude Code

seonghobae pushed a commit to ContextualWisdomLab/semantic-data-portal that referenced this pull request Sep 15, 2026
… not in it

The stall section has been carrying its four measurements as an unexplained
observation. It does not have to. ContextualWisdomLab/.github#1150 is an open
owner lane for read-only Actions queue-health evidence, and one of the incident
classes it classifies is a job that materializes with no runner assignment —
which is exactly what all four portal instances are.

The portal is not in that lane's allowlist; it names seven repositories and
this is not one. Enrollment there is done as a bounded child PR carrying one
allowlist entry and its contract test, so the note says plainly not to build
polling or classification here instead, and that enrollment would be
observability only — it moves no PR toward GREEN.

The measurements were reported to that lane. What was worth reporting was less
the numbers than what they do to its closure criterion: RED there includes a
materialized job with no runner assignment, checkout identity or steps, and
during their waits all four read exactly that way before recovering on their
own to SUCCESS. A single point-in-time read cannot separate that from a real
incident, and neither can dwell length, which scatters from 4h08m to 6h01m
with no threshold to learn.

Nothing changes operationally here. An empty check list is still a wait, and
there is still nothing to fix in this repository.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QpbqAeggRho3fQA1gn34UY

Copy link
Copy Markdown
Contributor Author

Fresh cross-repository canary from the TEPP provenance owner path: ContextualWisdomLab/mhtml-etl-gateway#95@488ce69863148edd9bafdc54c40a2b2df1c4a8ef reproduces the same pre-checkout admission state.

Current exact-head runs are Repository Quality 34957509223, Security Scan 34957509235, SAST Semgrep 34957509185, and CodeQL PR 34957509212; all remain queued. The preceding exact head's Repository Quality matrix materialized all four Python 3.11–3.14 jobs with runner_id=null, runner_name=null, and steps=[], so this is not a repository-source test failure.

The current #1150 allowlist does not include ContextualWisdomLab/mhtml-etl-gateway; I verified the live config before this handoff. I am not editing that allowlist from the TEPP/extraction owner lane because #1150 already has an active owner branch and an enrollment-child pattern. Please treat #95 as a fresh bounded enrollment/evidence candidate under the canonical queue-health owner rather than fixing the leaf by rerun/no-op/runner-selector churn.

TEPP #527 remains independently queued on exact 8b5462dd547773688eed282a3ff373247778f4a1, so the incident now spans at least these two scientific/ingestion repositories while source changes differ.

Copy link
Copy Markdown
Contributor Author

Fresh enrollment child created for the TEPP provenance canary path: #2212 ops(queue): enroll mhtml-etl-gateway in queue-health evidence, exact 22d6a9679f015cd2571ae859d1925d92c3e0d676, stacked directly on this owner exact 42bb922f03bf75aed1bc1931d9fbaf04a5433e20.

The child preserves a realistic ordinary-history RED ce1c60bb1db1edaec71b55986ba771baae5c303a (config enrollment alone violates the existing exact-equality allowlist test) and causal fix 22d6a967... (update the owner contract test). Fresh compare is ahead 2 / behind 0 with exactly two effective paths: config/actions_queue_health_repositories.json and tests/test_actions_queue_health_contract.py.

Canary evidence is ContextualWisdomLab/mhtml-etl-gateway#95@488ce69863148edd9bafdc54c40a2b2df1c4a8ef: Repository Quality 34957509223 has four Python 3.11–3.14 jobs, all still pre-checkout with runner_id=0, empty runner name, and steps=[]; Security 34957509235, Semgrep 34957509185, and CodeQL 34957509212 are queued. TEPP #527 independently remains queued on exact 8b5462dd547773688eed282a3ff373247778f4a1.

#2212 stays Draft; enrollment is not GREEN and does not authorize leaf reruns/no-op commits/runner churn/cancellation/gate weakening. Normal parent integration plus a collector observation bound to current repo/PR/head/workflow/job identity is still required.

Copy link
Copy Markdown
Contributor Author

Correction to the dwell range I reported above — a fifth portal instance resolved and it falls below the lower bound I quoted.

34941865676 on ContextualWisdomLab/semantic-data-portal#102, head 48c870d, label ubuntu-latest: created_at=2026-09-15T07:28:21Z, Atheris job 104292171134 started_at=2026-09-15T10:45:08Z terminal SUCCESS, Hypothesis job 104292171337 started_at=2026-09-15T10:45:50Z terminal SUCCESS. Pre-runner dwell 3h 16m.

So the interval is 3h 16m – 6h 01m across five instances, not the 4h 08m – 6h 01m I stated. I have no way to edit the earlier comment, so please read the range there as superseded by this one.

The direction matters more than the number. Going from four samples to five did not narrow the interval — it widened it at the bottom. If the collector were to adopt any queued-duration threshold, this repository would have supplied a lower bound that the very next observation violated. That is a stronger version of the point in the previous comment: the discriminator between a real incident and a recovering wait should not be dwell length at all.

Same disclosures as before. No rerun, no-op commit, runner-selector change, cancellation, or status synthesis; this was the ordinary pull_request run for that head, left alone until it scheduled itself. 48c870d is no longer the PR's current head.


Generated by Claude Code

Copy link
Copy Markdown
Contributor Author

Fresh exact-current leaf specimen for the queue-health owner; no leaf rerun/cancel/source mutation performed.

ContextualWisdomLab/contextual-orchestrator#1184 is still exact head 72dff728da9c5a98f8e99e67e295843563423686 against main@767e67fbc6b881a452761f32abb69b9971b9b03b. Security Scan run 34950558237, attempt 1, was created at 2026-09-15T09:05:17Z and is still nonterminal on a fresh read. Its first materialized job 104320238287 (Detect changed scope) is queued with steps=[], runner_id=0, empty runner_name, runner_group_id=0, and label ubuntu-24.04. A second materialized job (gitleaks) is terminal skipped with no runner/steps.

This is an exact instance of #1150's pre-checkout admission class: a required current-head job exists, but there is no runner assignment, checkout identity, or executed step. Treat the leaf source/test state separately from this control-plane state; do not blind-rerun the leaf or synthesize success.

Owner acceptance remains: preserve repository/PR/head/run-attempt/job identity and queue age in collector evidence; classify runner_id=0 + empty runner + steps=[] as pre-runner/pre-checkout rather than leaf test failure; GREEN only when the unchanged leaf exact head receives a real runner, checkout identity, and terminal required conclusions under the current ruleset. If the owner exact head changes before that, re-read and bind the evidence to the new owner SHA rather than transferring predecessor GREEN.

Copy link
Copy Markdown
Contributor Author

Valid current-source finding on exact 42bb922f03bf75aed1bc1931d9fbaf04a5433e20: the read-only collector cannot presently preserve the newly observed terminal pre-execution failure class.

actions_queue_health.py sets TERMINAL_DIAGNOSTIC_STATUSES = ("startup_failure", "cancelled") and filters current-head completed runs against that tuple before fetching jobs. A current-head Actions run ending completed/failure with a materialized failed job that has runner_id=0 and steps=[] is therefore omitted from the diagnostic snapshot. Separately, actions_queue_health_core.py::_job_state maps any terminal status/conclusion to generic terminal; if the failed job is supplied, the distinction is still erased.

This matters because #712 now has an independently observed specimen of completed/failure + steps=[] + no runner while other jobs on the same exact head execute successfully. It must not be presented as an executed product/security failure, and it must not be converted into success or ordinary pending capacity evidence.

Recommended test-first owner repair, without changing workflow triggers, runner selectors, cancellation/rerun behavior, credentials, or leaf repositories:

  1. RED: current-head completed/failure run with a job status=completed, conclusion=failure, runner_id=0, steps=[] must survive collection and report a distinct non-passing terminal-pre-execution execution state.
  2. Negative control: a failed job that has a positive runner identity and execution steps remains ordinary terminal evidence; do not reclassify real source/security failures as scheduler failures.
  3. Negative control: conditional completed/skipped without runner remains a conditional non-execution outcome, not runner starvation.
  4. Minimal collection change: admit failure only to obtain bounded job diagnostics for exact-current-head completed runs; classification remains job-evidence based.
  5. Do not claim no log blob from this collector unless it explicitly performs a bounded log-availability read; current source does not.

The sibling enrollment #2211 also just produced useful same-head evidence: SAST 34945223191/104302900965 waited from 08:07:13Z until runner assignment at 10:56:39Z and then passed, while CodeQL/Security fanout siblings remain runner_id=0/steps=[]. That transition supports keeping admission states evidence-specific rather than inferring a global runner outage.

I am not writing onto this canonical owner branch from the OriginWeave lane; this comment is the repair handoff so the single writer can add the RED/GREEN on the owner tree.

@seonghobae seonghobae left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fresh downstream queue-health specimen for the existing owner contract; no leaf rerun or source churn performed.

Consumer: ContextualWisdomLab/html4tree#703@57303f781c14887b472c609a4814278d1e8bb041, required CodeQL PR run 34916152101.

Observed job sequence on the unchanged head:

  • Detect CodeQL languages job 104214085539: runner assigned, checkout executed, SUCCESS.
  • CodeQL compatibility analysis (actions) 104264425770: runner assigned; current-head verdict polling completed; enforcement step FAILED.
  • CodeQL compatibility analysis (java-kotlin) 104264425989: same pattern, FAILED.
  • Dispatch current-head CodeQL scan 104339783808: still QUEUED with runner_id=0, empty runner identity, steps=[]; materialized at 2026-09-15T10:10:27Z.

The parent run remains queued even though earlier jobs executed. This is not evidence that #703's Kotlin change failed CodeQL; the dispatch job has not obtained a runner or checkout. Keep this in the existing pre-runner/current-head-verdict incident class and fail closed. GREEN remains a real runner assignment + exact-head dispatch/scan + terminal verdict on the unchanged leaf head. Do not blind-rerun #703, add a no-op commit, weaken the required check, or transfer the already-successful CI/SAST/Security results into CodeQL.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: operations Operability, observability, readiness, SLO, backup, or retention enhancement New feature or request priority: medium Normal-priority or P2 work status: blocked Blocked by conflict, dependency, or required prerequisite type: feature New or expanded product capability

Projects

Status: Todo

Development

Successfully merging this pull request may close these issues.

2 participants