fix(scheduler): 자격 증명 및 Actions 테스트 계약 복구 - #2029
Conversation
Co-Authored-By: Codex <noreply@openai.com> Signed-off-by: Seongho Bae <me@seonghobae.me>
|
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 |
|
Visual Inspection 완료: exact eebcc79a7ff6e099e0c7fd2fbfabbf9908ea80ec의 AGENTS.md를 실제 Edge Preview에서 열고 마지막 Scheduler credential fixtures 문단 전체를 확인했습니다. 1897px desktop 화면에서 3줄 모두 보이며 잘림·겹침이 없습니다. 최초 탭 생성 관찰은 시간 초과됐으나 기존 생성 탭을 재확인해 복구했고 최종 스크린샷은 정상 수신했습니다. 이는 문서 렌더링 검증이며 hosted 검사나 독립 승인을 대체하지 않습니다. |
|
현재 HEAD eebcc79a7ff6e099e0c7fd2fbfabbf9908ea80ec의 hosted 통합 CI가 completed/success로 종료됐습니다. Run 34176884415, job 101907942917: review-repair 단계 2980 passed, 1 skipped, 21 subtests / 91.23s; 대상 coverage 100%, interrogate 100%; workflow 계약 16 passed / 0.20s. 이전 부모의 15개 실패가 있었던 통합 단계가 이번 실제 Actions에서 통과했습니다. skip 1개 및 이 workflow가 선택하지 않은 검사 범위는 완료 주장에 포함하지 않습니다. 독립 리뷰·CodeQL terminal verdict·나머지 필수 검사와 보호 병합은 별도입니다. |
|
후속 CodeQL 범위 확인: 현재 eebcc79a의 codeql-dispatch/actions는 run34177078251에서 success이며 REQUIRED_JOBS에 actions job101908014186만 포함됩니다. Python job101908014233의 실제 로그는 DISPATCH_OUTCOME=success/VERDICT_STATE=pending 후 exit1입니다. 조회한 최신 repository_dispatch 목록에서는 같은 PR의 이전 run34176927124가 cancelled이고 추가 Python 실행은 찾지 못했습니다(최근100개 범위, 전체 부재 단정 아님). 따라서 actions 성공을 Python 완료로 승계할 수 없습니다. 언어별 dispatch가 같은 PR concurrency에서 서로 취소하는지 중앙 source 확인이 필요합니다. 현재 임의 rerun은 하지 않았습니다. |
|
CodeQL 혼합 버전 원인 확인: 이 PR의 codeql-pr.yml은 부모14f7과 동일한 구형 per-language dispatch caller입니다. 반면 실제 receiver78a4937의 codeql-scan-dispatch.yml은 병합된 #2008의 PR 단위 concurrency를 사용하며 legacy scalar payload도 허용합니다. 따라서 구형 caller가 같은 HEAD에 보낸 언어별 dispatch는 서로 독립적이지 않습니다. 실제 관측은 이전 run34176927124 cancelled, 후속34177078251 actions-only success, Python terminal status 부재입니다. #2008의 full-matrix caller와 receiver를 같은 계약으로 맞추는 부모 stack 정상 통합이 필요합니다. language suffix 복원이나 코드 스캔 면제로 우회하지 않으며 #2029 fixture delta는 보존합니다. |
…ntial-fixture-repair
|
main78a4937를 일반 merge로 통합해 구형 CodeQL caller/신형 receiver 혼합을 해소했습니다. 현재 HEAD eb79481. 부모2002/2003/2004 및 fixture 수정 delta는 모두 보존했습니다. 변경 없는 해당 HEAD에서 GITHUB_ACTIONS=true, -W error로 scheduler + CodeQL PR/dispatch + runner-image + docs-only admission 계약 383 passed / 203.87s / exit0를 확인하고 정상 push했습니다. 이전 eebcc79의 hosted2980pass를 새 HEAD의 원격 증거로 승계하지 않습니다. 이제 새 full-matrix dispatch가 모든 언어 terminal verdict와 각 required job wake를 완료하는지 실제 hosted 검증이 필요합니다. |
|
Fresh exact-head CodeQL RCA for Required run 34177963535 dispatched both languages to central child 34178442472. Both scans, SARIF gates, artifact uploads, and terminal status publications succeeded. The actions shard woke the shared required run; the Python shard then failed the second wake with There is also a producer/consumer identity mismatch: each target-app status POST failed Canonical repair remains #190251c9df5. Its run-wide settlement delta addresses the sibling-wake race, but the same-repository producer identity contradiction is now an exact-head P1 finding there. Keep #2029's fixture/source delta intact and out of merge until that owner repair lands on protected main and this unchanged head is revalidated. No status synthesis, broad bot allowlist, permission weakening, head churn, or blind rerun. |
|
Current stacked-base finding on exact Please reconcile the current #2004 parent into this existing writer by ordinary two-parent merge/non-force update, preserving #2029's credential-fixture repair and the parent's seven newer commits. Then reacquire exact-head review and Checks; do not transfer |
There was a problem hiding this comment.
Pull request overview
OpenCode reviewed the current-head product diff. Coverage is a separate gate.
Changed files
.github/workflows/codeql-pr.yml— GitHub Actions review job.github/workflows/codeql-scan-dispatch.yml— GitHub Actions review jobAGENTS.md— repository behaviordocs/adr/0025-codeql-required-workflow-dispatch-architecture.md— operator or user guidancetests/test_codeql_pr_workflow_contract.py— regression suitetests/test_codeql_scan_dispatch_workflow_contract.py— regression suitetests/test_docs_only_pr_runner_admission.py— regression suitetests/test_pr_review_merge_scheduler.py— regression suitetests/test_scheduler_and_codeql_dispatch_runner_image_contract.py— regression suite
Changed behavior
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Workflow: codeql-pr.yml"]
S1 --> I1["GitHub Actions review job"]
I1 --> R1["Review risk: Workflow: codeql-pr.yml"]
R1 --> V1["actionlint plus required checks"]
Evidence --> S2["Workflow: codeql-scan-dispatch.yml"]
S2 --> I2["GitHub Actions review job"]
I2 --> R2["Review risk: Workflow: codeql-scan-dispatch.yml"]
R2 --> V2["actionlint plus required checks"]
Evidence --> S3["Repository file: AGENTS.md"]
S3 --> I3["repository behavior"]
I3 --> R3["Review risk: Repository file: AGENTS.md"]
R3 --> V3["required checks"]
Evidence --> S4["Docs: 0025-codeql-required-workflow-dispatch-architecture.md"]
S4 --> I4["operator or user guidance"]
I4 --> R4["Review risk: Docs: 0025-codeql-required-workflow-dispatch-architecture.md"]
R4 --> V4["docs review"]
Evidence --> S5["Test: test_codeql_pr_workflow_contract.py (5 files)"]
S5 --> I5["regression suite"]
I5 --> R5["Review risk: Test: test_codeql_pr_workflow_contract.py (5 files)"]
R5 --> V5["targeted test run"]
Findings
No source-backed product finding is synthesized from the coverage gate. A coverage miss belongs in the status comment.
- Head SHA:
eb79481bc1696c63273b6c2ca22b5e34f68d0208 - Workflow run: 34178631125
- Workflow attempt: 1
- Coverage gate:
failure
Review outcome
Coverage is a gate, not the review. This body reviews the changed product files.
Changed-File Evidence Map
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Workflow: codeql-pr.yml"]
S1 --> I1["GitHub Actions review job"]
I1 --> Conflict["Merge conflict blocks this path"]
Conflict --> V1["actionlint plus required checks"]
Evidence --> S2["Workflow: codeql-scan-dispatch.yml"]
S2 --> I2["GitHub Actions review job"]
I2 --> Conflict["Merge conflict blocks this path"]
Conflict --> V2["actionlint plus required checks"]
Evidence --> S3["Repository file: AGENTS.md"]
S3 --> I3["repository behavior"]
I3 --> Conflict["Merge conflict blocks this path"]
Conflict --> V3["required checks"]
Evidence --> S4["Docs: 0025-codeql-required-workflow-dispatch-architecture.md"]
S4 --> I4["operator or user guidance"]
I4 --> Conflict["Merge conflict blocks this path"]
Conflict --> V4["docs review"]
Evidence --> S5["Test: test_codeql_pr_workflow_contract.py (5 files)"]
S5 --> I5["regression suite"]
I5 --> Conflict["Merge conflict blocks this path"]
Conflict --> V5["targeted test run"]
OpenCode Review Overview
Coverage evidence did not pass, so approval is blocked. The formal pull-request review is the source-backed diff review, not this status comment. |
Co-Authored-By: Codex <noreply@openai.com> Signed-off-by: Seongho Bae <me@seonghobae.me>
|
충돌 복구 후 현재 ab61ec2 / 부모 9fb02c92를 재조회했습니다. GitHub는 MERGEABLE, mergeStateStatus=UNSTABLE이며 승인·필수 검사 완료를 뜻하지 않습니다. 이전 Noema artifact 10038393258을 직접 확인한 결과 gateway preflight는 ready였고 후보24/ready2/target8/probed16/rejected12/deferred2/skipped4였습니다. NIM 두 계정에서 각각 TimeoutError4 및 HTTP404 2개, OpenRouter HTTP429 2개가 기록됐습니다. 이후 실제 요청은 451.1초 뒤 HTTP502로 실패했습니다. stderr에는 약90초 간격 TimeoutError가 반복되지만 공급자 종료인지 내부 timeout인지 아직 입증하지 못했습니다. 준비 점검 ready를 실제 리뷰 성공으로 해석하지 않습니다. 원본 artifact: https://github.com/ContextualWisdomLab/.github/actions/runs/34177960954/artifacts/10038393258 |
seonghobae
left a comment
There was a problem hiding this comment.
Exact-head restack review: the non-force two-parent reconciliation now preserves both sides of the previously incomplete succession. Relative to current parent #2004@9fb02c92…, #2029 retains the four-line AGENTS recurrence rule and all three callable fixtures assert keyword-only stdin is None, while inheriting the host-scoped distinct-credential repairs. No new substantive finding in this reconciliation delta. This is not approval or merge authority: #2004 and its prerequisites are still Draft, current-head checks are queued, and the protected-main CodeQL provenance defect is being repaired in #1902. Keep #2029 alive and do not merge ahead of its parent stack.
|
90초 제한의 코드 출처를 확인했습니다. 이 Noema job 실제 로그에 CO pin414f22973658c4ddc3d4320fcf7acd9b4e8ba991이 기록돼 있고, 해당 소스 ModelClient 생성자의 timeout 기본값90이 _open_provider의 HTTPConnection/HTTPSConnection 및 _connect_validated의 socket.settimeout으로 전달됩니다. 중앙 launcher의 두 ModelClient 생성자는 timeout을 지정하지 않습니다. 따라서 해당 소비자 실행에 암묵적 내부90초 제한이 존재한다는 점은 확인됐습니다. 마지막 HTTP502의 직접 원인이 이것만이라는 주장은 하지 않습니다. 기존 owner 수정 ContextualWisdomLab/contextual-orchestrator#1053에 실행·artifact·source 근거를 전달했습니다: ContextualWisdomLab/contextual-orchestrator#1053 (comment) . owner 보호 병합·release 후 중앙 pin 채택과 실제 runtime 검증이 남습니다. |
|
Current-head hosted verification refreshed: Agent Review Runtime Quality run 34182594520 / job 101924511318 completed SUCCESS on ab61ec2. Direct job log at 2026-09-08T03:24:51Z reports 2989 passed, 1 skipped, 21 subtests passed in 97.51s; the configured coverage scope reached 100%. The separate consolidated-workflow contract reported 16 passed. This replaces the earlier eb794-only runtime-quality receipt for the current head; it is not a claim that all required security/review checks have converged or that deployment has occurred. Remaining current-head checks were still queued in the latest rollup. |
|
Exact-head CodeQL RCA for
Canonical repair remains .github #1902, currently Draft at |
There was a problem hiding this comment.
Pull request overview
OpenCode reviewed the current-head product diff. Coverage is a separate gate.
Changed files
AGENTS.md— repository behaviortests/test_pr_review_merge_scheduler.py— regression suite
Changed behavior
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Repository file: AGENTS.md"]
S1 --> I1["repository behavior"]
I1 --> R1["Review risk: Repository file: AGENTS.md"]
R1 --> V1["required checks"]
Evidence --> S2["Test: test_pr_review_merge_scheduler.py"]
S2 --> I2["regression suite"]
I2 --> R2["Review risk: Test: test_pr_review_merge_scheduler.py"]
R2 --> V2["targeted test run"]
Findings
No source-backed product finding is synthesized from the coverage gate. A coverage miss belongs in the status comment.
- Head SHA:
ab61ec247ddcbc92aea3116687f4e9d070cbb4a4 - Workflow run: 34183596351
- Workflow attempt: 1
- Coverage gate:
failure
Review outcome
Coverage is a gate, not the review. This body reviews the changed product files.
Changed-File Evidence Map
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Repository file: AGENTS.md"]
S1 --> I1["repository behavior"]
I1 --> R1["Review risk: Repository file: AGENTS.md"]
R1 --> V1["required checks"]
Evidence --> S2["Test: test_pr_review_merge_scheduler.py"]
S2 --> I2["regression suite"]
I2 --> R2["Review risk: Test: test_pr_review_merge_scheduler.py"]
R2 --> V2["targeted test run"]
There was a problem hiding this comment.
Pull request overview
OpenCode reviewed the current-head product diff. Coverage is a separate gate.
Changed files
AGENTS.md— repository behaviortests/test_pr_review_merge_scheduler.py— regression suite
Changed behavior
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Repository file: AGENTS.md"]
S1 --> I1["repository behavior"]
I1 --> R1["Review risk: Repository file: AGENTS.md"]
R1 --> V1["required checks"]
Evidence --> S2["Test: test_pr_review_merge_scheduler.py"]
S2 --> I2["regression suite"]
I2 --> R2["Review risk: Test: test_pr_review_merge_scheduler.py"]
R2 --> V2["targeted test run"]
Findings
No source-backed product finding is synthesized from the coverage gate. A coverage miss belongs in the status comment.
- Head SHA:
ab61ec247ddcbc92aea3116687f4e9d070cbb4a4 - Workflow run: 34187360399
- Workflow attempt: 1
- Coverage gate:
failure
Review outcome
Coverage is a gate, not the review. This body reviews the changed product files.
Changed-File Evidence Map
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Repository file: AGENTS.md"]
S1 --> I1["repository behavior"]
I1 --> R1["Review risk: Repository file: AGENTS.md"]
R1 --> V1["required checks"]
Evidence --> S2["Test: test_pr_review_merge_scheduler.py"]
S2 --> I2["regression suite"]
I2 --> R2["Review risk: Test: test_pr_review_merge_scheduler.py"]
R2 --> V2["targeted test run"]
변경
부모 #2002/#2003/#2004의 안전 계약을 보존한 스케줄러 테스트 수리입니다. 부모가 선택 토큰과 workflow 비교 토큰에 서로 다른 합성 값을 넣는 수정을 승계했습니다. 이 PR에는 취소 테스트 대역의 keyword-only stdin=None 검증 및 반환 계약, AGENTS.md 재발 방지 절차가 남습니다. 운영 코드는 변경하지 않습니다.
현재 검증
현재 HEAD ab61ec2. 부모 9fb02c92ef680710cd4737746b719f77cfd97cd5를 일반 병합하면서 동일 fixture 변경의 충돌을 해결했습니다. 부모의 합성 토큰 값을 받아들이고 이 PR의 엄격한 stdin 검증과 AGENTS.md는 유지했습니다. Actions 환경 및 -W error에서 스케줄러 334 passed / 44.35s, 종료 코드 0입니다. 현재 HEAD의 hosted 검사·리뷰는 별도 확인이 필요합니다.
이전 검증과 시각 검수
최초 부모 14f7c85에서 #2005의 15개 실패를 모두 재현했습니다. 이전 eb79481 HEAD에서는 관련 383개 로컬 검사 및 hosted run 34177963509의 2989 passed, 1 skipped, 21 subtests가 있었습니다. 이는 이전 수정본의 기록이며 새 HEAD의 전체 통과로 주장하지 않습니다.
AGENTS.md 새 문단은 실제 Edge 1897×969 화면에서 잘림과 겹침 없이 확인했습니다. 이번 부모 병합에서 해당 문서는 바뀌지 않았습니다. 근거: #2029 (comment)
실패 원인과 남은 일
이전 eb79481의 CodeQL은 분석 성공 상태 게시 후 exact-job 재시작이 경합했습니다. #2028 및 후속 #2032에서 처리합니다. Noema job 101911618506은 실제 gateway HTTP 502, phase=response_error, served_model=unknown으로 실패했습니다. 공급자 원인은 아직 증명하지 못했습니다. OpenCode job 101912771784는 해당 head의 APPROVED 또는 CHANGES_REQUESTED 리뷰 미도착으로 실패했습니다.
#2005의 inventory 생략 변경을 대체하지 않습니다. 독립 리뷰·필수 검사·보호 병합·배포는 미완료입니다.