Skip to content

fix(runtime): gate Draft admission and sandbox evidence - #2109

Draft
seonghobae wants to merge 40 commits into
codex/strix-trusted-binder-rootfrom
fix/draft-required-workflow-admission
Draft

seonghobae wants to merge 40 commits into
codex/strix-trusted-binder-rootfrom
fix/draft-required-workflow-admission

Conversation

@seonghobae

@seonghobae seonghobae commented Sep 12, 2026 •

Copy link
Copy Markdown
Contributor

Current authority — 2026-09-24 KST

Exact head 42e3f7a8cbb03b117c898d3e125af87a5c6ce86b; OPEN / Draft / mergeable. Base branch is codex/strix-trusted-binder-root, whose live owner #2291 remains Draft at exact 1794626af3473ef23b9c2e678c3f06fd6c11636f. This lane is intentionally not reconciled again until the foundation chain below reaches protected authority.

This PR had drifted to Ready while its own authority still required parent integration and ordinary reconciliation first, so it was converted back to Draft. That lifecycle change is not source progress or merge acceptance.

#2291 has repaired the trusted Strix binder/source-fixture defect, but its current exact head inherits protected-main AnyIO 4.14.0 and therefore fails Python Security. Canonical dependency owner #2278 exact 8a5251bf409fe84b3dd0cba1e48992f5b8d9eda5 supplies the 4.14.2 repair; however #2278 cannot obtain a valid Required OpenCode coverage receipt while protected main lacks canonical coverage build-context repair #2286.

#2286 now breaks that cycle at Draft exact 42e4198fa012eb24596e7984d77e27f0905348d6 by ordinary two-parent ancestry: it retains the five canonical coverage-owner paths and adopts #2278 exact head as an ancestor, so its protected-main diff also carries the exact one-file AnyIO repair. Fresh exact-head hosted runs exist on #2286 and are still nonterminal.

Required parent order is therefore #2286 exact-head acceptance/protected integration → ordinary/non-force #2291 reconciliation and fresh acceptance → protected #2291 integration → ordinary/non-force #2109 parent reconciliation. #2109 must not copy the dependency, coverage, or Strix binder repairs.

This lane owns Draft/Ready and stacked-base admission for the five heavy required workflows, including runner-free Draft behavior, ready_for_review admission, converted_to_draft withdrawal, stacked-base PR admission, and non-vacuous sandbox/queue contract selection. Exact-head predecessor cleanup and OpenCode scheduler serialization are owned elsewhere and are not duplicated here.

Current Draft lifecycle evidence

The 2026-09-24 conversion back to Draft produced a fresh same-head generation without any source commit or synthetic wake activity. All five heavy workflows terminated SKIPPED as intended:

  • Agent Review Runtime Quality CI 35933884621: SKIPPED
  • Security Scan 35933884620: SKIPPED
  • SAST Semgrep 35933884668: SKIPPED
  • CodeQL PR 35933884737: SKIPPED
  • Python Security 35933884739: SKIPPED

This proves only the Draft withdrawal contract. It is not source GREEN, independent review acceptance, or merge authority. Retained local evidence remains focused queue/Gap 80 passed and full suite 3,413 passed / 5 skipped / 40 subtests, plus compileall and git diff --check PASS; those receipts do not transfer to a future reconciled head.

Completion requires the canonical parent chain above to become protected, then ordinary/non-force reconciliation of this lane, policy-consistent Ready re-entry, terminal exact-head hosted acceptance, zero actionable review, qualifying independent current-head approval, and normal protected-main integration.

No self-approval, source-neutral wake/no-op commit, blind rerun, force push, destructive rebase, duplicate scheduler/runtime owner, review dismissal, gate weakening, or predecessor-evidence transfer is authorized.

Preserve an existing command, timeout, or copy-rejection exit code when trusted evidence publication fails. A successful command whose evidence cannot be written still returns 125.

Adds RED/GREEN coverage for child exit 2, explicit exit 124, and timeout 124 collisions.
@coderabbitai

coderabbitai Bot commented Sep 12, 2026 •

Copy link
Copy Markdown
Contributor

Review Change StackReview Change Stack

📝 Walkthrough

Walkthrough

샌드박스 검증 도구가 바이너리 출력과 결과 envelope을 별도 파일로 기록합니다. 관련 CI 계약을 추가합니다. Draft PR의 주요 보안·품질 작업을 건너뛰고 ready_for_review에서 재실행하도록 워크플로 조건과 트리거를 변경합니다.

Changes

샌드박스 증거 및 Draft PR 입장 제어

Layer / File(s) Summary
샌드박스 결과 번들 구현
scripts/ci/sandboxed_verify.py
--result-file을 추가했습니다. stdout과 stderr를 바이트 단위로 별도 저장합니다. 결과 envelope에 상태, 타임아웃, 런타임, 환경, 크기, SHA-256을 기록합니다. 심볼릭 링크, 기존 파일, 경로 경합을 검사하고 원자적으로 게시합니다.
샌드박스 계약 검증 및 CI 게이트
tests/test_sandboxed_verify.py, .github/workflows/agent-review-runtime-quality-ci.yml, CHANGELOG.md, docs/pr-review-and-merge-procedure.md
출력 보존, 결과 파일 경합, 경로 보호, 타임아웃 구분, 실패 코드 보존, 복사 거부 상태를 테스트합니다. Runtime Quality가 샌드박스 변경 시 전용 테스트와 100% 커버리지·인터로그 검사를 실행하도록 변경합니다.
Draft PR 실행 및 재진입 제어
.github/workflows/*.yml, tests/test_required_workflow_queue_contract.py, tests/test_docs_only_pr_runner_admission.py, docs/doctoring/draft-required-workflow-admission-20260912.md, docs/product-technical-gap-baseline.md, CHANGELOG.md
주요 작업이 Draft PR에서 실행되지 않도록 조건을 추가합니다. Runtime Quality에 ready_for_review 트리거를 추가합니다. 변경 경로 분류기가 샌드박스 계약 스위트를 선택하도록 변경합니다. 워크플로 조건과 재진입 계약을 테스트합니다.

Priority: ➖ Normal

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

Change: Bug fix

Merge Risk: 🟡 Moderate · up to 813aa

The new workflow contract test fails due to an incorrect job name, so this should be corrected before merge.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 77.27% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 66 functions across 4 files. (9 skipped: … 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 PR 제목은 Draft PR 실행 차단과 샌드박스 증거 검증이라는 주요 변경 사항을 간결하고 정확하게 설명합니다.
Full details: Docstring Coverage

Explanation

Docstring coverage is 77.27% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 66 functions across 4 files. (9 skipped: 9 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

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

Exact-head review for 2df3dbbd4c2a59046da961f2c4d5f95f9331b063 (ce065f879d1d1b34b087bc9ae6f51dc9cae0cbbe): reviewed the nine-file delta and the Draft canary follow-up. The independent Security Scan gitleaks admission is now covered by RED de7c1ca99b399e50fa98af81467f2765902eb9c2 and guarded at GREEN head. Focused security/queue contracts: 9 passed; full suite: 3040 passed, 1 skipped, 36 subtests; compileall and diff check clean. All five exact-head Draft workflow runs completed skipped, including Security Scan 34689809757. No additional substantive finding in this pass. This COMMENT is not approval or merge authority.

Copy link
Copy Markdown
Contributor Author

@opencode-agent Review exact head 2df3dbbd4c2a59046da961f2c4d5f95f9331b063 through the contextual-orchestrator gateway using fixed model orchestrator/free. Verify the complete nine-file delta, both RED→GREEN pairs, the independent Security Scan gitleaks Draft guard, exact-head hosted canary receipts, security boundary preservation, and the non-force transport recovery. Do not use a provider/model override, provider group, or paid fallback; fail closed if the free gateway capability is unavailable.

@seonghobae
seonghobae marked this pull request as ready for review September 12, 2026 11:01
@seonghobae
seonghobae marked this pull request as draft September 12, 2026 11:01
@seonghobae seonghobae added bug Something isn't working priority: high High-priority or P1 work labels Sep 12, 2026 — with ChatGPT Codex Connector

Copy link
Copy Markdown
Contributor Author

P1 lifecycle repair integrated at exact head 719af9378566e24ae8cb0a8e202599c559ce23d8 without rewriting history.

Root cause: .github/workflows/agent-review-runtime-quality-ci.yml added a Draft job guard but did not declare pull_request.types. GitHub's default pull-request activity set does not include ready_for_review, so an unchanged Draft head could become Ready without any replacement Runtime Quality run. That contradicted this PR's stated recovery contract.

RED fdf85554 adds the exact trigger contract; the predecessor workflow assertion exits 1. GREEN 719af937 adds only types: [opened, synchronize, reopened, ready_for_review]. The current Draft generation is terminal skipped for all five workflows, as intended. Keep Draft until source review is current, then use one unchanged-head Ready transition to prove Runtime Quality and the other four required workflows create fresh evidence.

Flush wrapper-owned text diagnostics before writing command bytes through the binary buffer. Clarify that all command bytes are preserved, document internal_error, and bound cleanup guarantees to the absence of --keep-sandbox.

Adds a RED/GREEN ordering contract for redirected streams.

Copy link
Copy Markdown
Contributor Author

Successor carryover verified at exact head 863c2143599081800857bb4fceea2016699fe015. Compare from 719af937… is ahead 1 / behind 0 and changes only CHANGELOG, doctoring, and docs/product-technical-gap-baseline.md. The repaired Runtime Quality workflow blob remains 858967b0ed3871c66ceaed85598e926648c53283; the Ready re-entry contract-test blob remains 4e8eebb41d82c857960d37cb2e87d06c203b033f. All five current Draft workflow generations are terminal skipped. Keep Draft until an independent current-head review and one unchanged-head Ready canary produce fresh hosted evidence.

@seonghobae
seonghobae marked this pull request as ready for review September 12, 2026 11:11

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

Exact-head review for 0c0e73d9ea8aaa80cfe5addee6dd6f2d397d3660 / tree 15c4d1d7a0bcfad86290af1dc1d5dc44b974ef2a: reviewed the complete nine-file delta and non-force concurrent integration. RED→GREEN now covers the independent Gitleaks Draft path and Runtime Quality ready_for_review re-entry. Exact-tree focused contracts: 10 passed; full suite: 3041 passed, 1 skipped, 36 subtests; compileall and diff check clean. Hosted lifecycle canary shows five Draft runs skipped and five Ready runs created at the unchanged head. No additional substantive finding in this pass. This COMMENT is not approval or merge authority.

Copy link
Copy Markdown
Contributor Author

@opencode-agent Review current exact head 0c0e73d9ea8aaa80cfe5addee6dd6f2d397d3660 through the contextual-orchestrator gateway using fixed model orchestrator/free. Verify the full nine-file delta, Gitleaks Draft guard, Runtime Quality ready_for_review trigger, both halves of the hosted Draft→Ready canary, exact-tree tests, and non-force concurrent integration. Do not use a provider/model override, provider group, or paid fallback; fail closed if free gateway capability is unavailable.

Copy link
Copy Markdown
Contributor Author

Exact-head hosted canary update for 0c0e73d9ea8aaa80cfe5addee6dd6f2d397d3660 (2026-09-12 UTC):

The Draft-generation canary remains five completed skipped runs, while the unchanged-head Ready transition created all five fresh workflow runs. No unresolved review thread exists and the PR remains mergeable, but there is still no qualifying independent current-head approval and CodeQL has not reached a terminal success. This is state-bound evidence only, not approval, bypass rationale, or merge authorization.

Copy link
Copy Markdown
Contributor Author

Ready review admission is now open at unchanged exact head f62172a424a2f86d14790459c149fe9762746453 after the current #2291 parent was integrated.

The lifecycle proof is exact-head and same-SHA:

Ready means review/check admission, not approval or merge readiness. All five runs are queued/pending and there is no qualifying independent current-head approval; no rerun, bypass, self-approval, Force Push, or merge was used.

Copy link
Copy Markdown
Contributor Author

Exact-head admission audit — f62172a424a2f86d14790459c149fe9762746453.

Ready 상태와 충돌하는 실질 blocker를 확인했습니다: latest opencode-agent state is CHANGES_REQUESTED.

Commit, review, thread와 유효 delta를 보존하며 이 PR을 Draft/Proposed로 전환합니다. blocker가 exact current head에서 해소되고 hosted evidence가 terminal-valid해지면 Ready review admission을 재평가합니다. 이는 Close, review dismissal, synthetic status/approval, manual rerun, bypass, Force Push 또는 history rewrite가 아닙니다.

@seonghobae
seonghobae marked this pull request as draft September 20, 2026 00:57

Copy link
Copy Markdown
Contributor Author

New required-workflow concurrency finding from #2278

This lane already owns the five heavy required workflows' PR lifecycle/admission and explicitly preserves PR-keyed concurrency. Fresh #2278 evidence shows that preservation is incomplete under runner backlog, so this belongs here rather than in the dependency PR or OriginWeave.

Exact specimen:

  • chore(deps): bump anyio from 4.14.0 to 4.14.2 #2278 current head 8a5251bf409fe84b3dd0cba1e48992f5b8d9eda5, tree 6e35263ab701952822c37946a62637e170af9698;
  • Python Security 35480337856, SAST 35480337863, Security Scan 35480337869: attempt 1 cancelled before execution; a bounded unchanged-head rerun produced attempt 2 and all three again ended completed/cancelled with zero steps around 02:09Z;
  • current CodeQL 35480337885 remains nonterminal;
  • predecessor-head CodeQL 35448089220 for c51c8d23... is still queued after the PR head advanced to 8a5251bf... and was updated as late as 02:57Z;
  • branch history contains multiple predecessor run generations, including earlier cancellations followed by later GREEN generations.

Protected python-security.yml currently groups by repository + PR number with cancel-in-progress: true. Protected codeql-pr.yml intentionally uses the same PR-wide shape and already documents the residual case where a delayed older-head dispatch can evict a newer-head in-flight dispatch before the older run self-aborts. Under the observed multi-hour admission backlog, that residual risk is now a buyer-visible acceptance defect, not merely a theoretical comment.

The REST evidence does not expose the actor/reason for each exact cancellation, so do not encode a test that assumes 35448089220 specifically cancelled the three attempt-2 runs. The contract should reproduce the platform-independent causal class: an older queued generation becomes runnable/active after a successor head exists and must be unable to cancel or replace the successor head's sole evidence.

Please extend the #2109 RED/GREEN contract rather than preserving PR-keyed cancel-in-progress unchanged. Do not solve it with a bare ${{ head.sha }} group change: that would let predecessor heads leak indefinitely unless close/synchronize cleanup is explicit. #2289 now has the safer pattern to reuse at the architecture level: exact-head admission (queue: max where same-head serialization is needed) plus metadata-only predecessor cleanup, live PR-head revalidation immediately before mutation, and bounded proof that each accepted cancellation reaches completed/cancelled.

Acceptance for this owner delta should include all five required workflows: delayed predecessor cannot evict current-head evidence; same-head lifecycle cancellation (Ready→Draft) still works; closed/superseded heads are retired; the sole current-head run is never selected for cleanup; malformed/missing run-to-PR head identity fails closed; and no leaf repo needs a no-op wake commit, runner-label change, blind rerun, or protection bypass.

Canonical queue-health issue #712 has the same exact specimen. #2278 is now frozen against further blind reruns pending this owner repair.

Copy link
Copy Markdown
Contributor Author

Fresh stacked-base canary from the live CodeQL owner chain

Current protected .github/main@e6334e229581a918e2f22de18733b76fa65d7e71 still scopes python-security.yml pull-request admission to branches: [main, master, develop]. The live canonical GHAS descendant now gives a direct current consumer specimen for the omission this PR already repairs:

This is not a new #2275 source defect and does not justify a leaf workflow copy, base retarget, no-op wake commit, or manual rerun. It is live confirmation that the protected Python Security base-name filter still suppresses required evidence on an ordinary stacked owner branch. #2109 already owns the causal removal of that PR base-name filter while preserving push policy, so keep the repair single-writer here.

Acceptance implication: after the #2109 prerequisite chain is accepted into protected main, a fresh unchanged-or-validly-reconciled stacked canary must actually materialize Python Security on the non-main PR base before this admission slice is called GREEN. The separate current-head cancellations in SAST/Security remain #712 queue/lifecycle evidence, not proof that the missing Python generation is runner starvation.

seonghobae commented Sep 20, 2026 •

Copy link
Copy Markdown
Contributor Author

Correction — withdrawn RED after reading live protected authority

The earlier version of this comment incorrectly treated tests/test_required_workflow_stale_generation_red.py@ef0304bead9e47728fc866360091df79c807f8a7 as an owner-valid RED requiring github.event.pull_request.head.sha in each workflow-level concurrency group. After reading the live protected .github/AGENTS.md, that assertion conflicts with current repository authority: the documented procedure explicitly requires PR-triggered workflow concurrency to group by workflow/repository/PR with cancel-in-progress: true and says not to include the head SHA.

I therefore withdrew the invalid oracle by ordinary forward commit 42e3f7a8cbb03b117c898d3e125af87a5c6ce86b. No force update or history rewrite was used; the test file is absent from the current tree. Treat ef0304be... as a historical invalid experiment, not current RED or acceptance evidence.

The remaining valid finding is now a governance/source contradiction, not permission to patch #2109 against AGENTS. Protected AGENTS.md requires PR-wide native cancellation, while this PR's current codeql-pr.yml already documents the residual case where a delayed predecessor dispatch can evict a newer head before a live-head check runs. Current owner PRs #2283 and #2289 implement a different layered pattern: exact-head workflow admission with queue: max, plus a separately bounded PR-level cancellation/metadata cleanup boundary. GitHub's current concurrency contract also distinguishes queue: max from cancel-in-progress: true and forbids combining them.

Per docs/product-goal-directive.md, conflicts between the standing directive and AGENTS/current implementation must be reconciled rather than silently choosing one. I am therefore not modifying the five required workflows on #2109 further until the canonical AGENTS/queue policy owner is reconciled. #1885 is the existing AGENTS-only Actions-procedure lane and #712 remains the queue/admission operational owner. No consumer copy, leaf wake commit, blind rerun, self-approval, or gate weakening is requested.

Copy link
Copy Markdown
Contributor Author

Current exact authority correction — 2026-09-20 KST

The top-of-body f62172a424a2f86d14790459c149fe9762746453 record is now predecessor identity, not the live PR head.

  • GitHub currently reports this PR OPEN / Draft / mergeable at exact 42e3f7a8cbb03b117c898d3e125af87a5c6ce86b, tree 0dcd95f1838f68d677249284e240caf3fc63849d, still stacked on canonical Strix owner fix(strix): resolve evidence binder from trusted source #2291 782d67b433aa71cf2c81b2a81f55ae192a317f3b.
  • Compare f62172a... -> 42e3f7a... is 2 ahead / 0 behind / zero changed files, with merge base exactly f62172a.... The two later commits are a temporary stale-generation RED followed by chore(actions): withdraw authority-conflicting stale-head oracle; the current tree is therefore byte-identical to the previously verified f62172a... tree.
  • The withdrawn oracle tried to make this lifecycle owner assert a separate exact-head stale-generation concurrency architecture. That responsibility is not fix(runtime): gate Draft admission and sandbox evidence #2109's bounded owner surface. Review/scheduler exact-head admission and live-revalidated predecessor cleanup are represented by the canonical fix(opencode): skip duplicate same-head review dispatch while in flight #2283 → fix(scheduler): do not cancel same-SHA scan-pr-queue on review #2289 lineage; organization queue/cancellation RCA remains ops: diagnose and bound organization GitHub Actions queue starvation #712. fix(runtime): gate Draft admission and sandbox evidence #2109 continues to own Draft/Ready admission, stacked-base admission for Python Security/Runtime Quality, converted_to_draft, and non-vacuous sandbox/runtime evidence.
  • The current exact Draft canary is useful and current-head-specific: Python Security 35490837682, SAST 35490837549, Runtime Quality 35490837616, and Security Scan 35490837568 completed skipped; CodeQL 35490837629 has zero jobs. This is evidence that the current-tree Draft guard keeps these heavy lanes runner-free. It is not Ready-path acceptance and does not settle the organization runner/cancellation problem.
  • Because commit identity moved, predecessor Checks/reviews do not transfer merely because the tree is identical. A future Ready transition must naturally generate the required current-head lanes, including Python Security/Runtime Quality on this stacked base, and those lanes must reach authentic terminal acceptance before ordinary protected integration.

Keep Draft. No source-neutral wake commit, blind rerun, self-approval, force update, destructive rebase, duplicate stale-head cleanup owner, or gate weakening is authorized.

Copy link
Copy Markdown
Contributor Author

Current-head correction — 2026-09-20 KST

The live PR head is 42e3f7a8cbb03b117c898d3e125af87a5c6ce86b, not the older f62172a4... named in the top status block. 42e3f7a8... is the ordinary-forward withdrawal of the authority-conflicting experimental head-SHA oracle; its tree is back to 0dcd95f1838f68d677249284e240caf3fc63849d, i.e. the prior effective #2109 source tree is restored without force-push/rebase.

Fresh exact-head workflow inventory is now terminal for this Draft generation: Runtime Quality 35490837616 skipped, Python Security 35490837682 skipped, SAST 35490837549 skipped, Security Scan 35490837568 skipped, and CodeQL 35490837629 skipped. This supersedes earlier wording that CodeQL was still pending. Skipped Draft receipts are lifecycle evidence only; they are not hosted GREEN or merge acceptance.

The owned source contract remains stacked-base/Draft/Ready admission, including removal of the Python Security and Runtime Quality PR base-name filters. Do not add a third concurrency architecture here while protected AGENTS.md policy lane #1885 and executable scheduler owners #2283/#2289 are still being reconciled. Next valid promotion evidence requires a policy-consistent Ready generation on an unchanged exact tree plus current-head review/required checks; no source-neutral wake commit or blind rerun.

@seonghobae
seonghobae marked this pull request as ready for review September 20, 2026 06:38

Copy link
Copy Markdown
Contributor Author

2026-09-20 exact-head Ready admission evidence

Current exact head is 42e3f7a8cbb03b117c898d3e125af87a5c6ce86b (tree-equivalent to the prior f62172a… generation). This PR has now been restored to Ready for review without changing the source tree.

The current-head Draft canary had already terminated runner-heavy work as expected. The Ready transition on the unchanged stacked head has now generated all five owned required workflows:

  • CodeQL PR 35494752040 — queued
  • Python Security 35494752070 — queued
  • Agent Review Runtime Quality CI 35494752102 — queued
  • SAST Semgrep 35494752067 — queued
  • Security Scan 35494752139 — queued

This closes the admission-generation question for the current stacked head: Python Security and Runtime Quality are no longer omitted when Ready. It does not constitute hosted acceptance while the runs remain nonterminal, and no predecessor success, self-approval, wake commit, or blind rerun is transferable. Keep the PR open/Ready until these exact-head runs settle and a qualifying independent current-head review exists.

Ownership remains bounded: #2109 owns Draft/Ready lifecycle admission, stacked-base admission, converted_to_draft, and sandbox/runtime evidence. Exact-head review scheduling / predecessor cleanup remains with the #2283/#2289 scheduler lineage, not this PR.

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

Current-head reconciliation review for 42e3f7a8cbb03b117c898d3e125af87a5c6ce86b / tree 0dcd95f1838f68d677249284e240caf3fc63849d. This is evidence review, not approval.

The branch advanced two ordinary commits from the body-recorded f62172a...: ef0304be... added a structural stale-head cancellation RED, then 42e3f7a... withdrew that oracle because exact-head admission plus predecessor retirement belongs to the queue/scheduler owner rather than this Draft/Ready admission lane. The final tree is byte-identical to f62172a...; no #2109 production/workflow delta was changed by that detour.

The current Ready event has naturally admitted all five required workflows on the unchanged final tree: CodeQL 35494752040, Python Security 35494752070, Runtime Quality 35494752102, SAST 35494752067, and Security Scan 35494752139 are all queued/nonterminal. The preceding Draft generation on the same exact head completed skipped for all five lanes. That is the intended lifecycle shape, but queued work is not acceptance and the old 0c0e73d... Noema approval does not bind this head.

No additional source-backed finding survives this pass. The remaining order is canonical base #2291 acceptance, terminal exact-head hosted checks here, and qualifying independent current-head approval before ordinary integration. No source-neutral wake commit, blind rerun, self-approval, bypass, force push, or predecessor-check transfer is justified.

Copy link
Copy Markdown
Contributor Author

Fresh live-authority correction — 2026-09-20 KST

PR metadata and the branch ref both identify the current head as 42e3f7a8cbb03b117c898d3e125af87a5c6ce86b, base codex/strix-trusted-binder-root@782d67b433aa71cf2c81b2a81f55ae192a317f3b, tree 0dcd95f1838f68d677249284e240caf3fc63849d. The first body block currently calls f62172a424a2f86d14790459c149fe9762746453 the current exact head; that commit is an ancestor, not the live PR head. 42e3f7a… is two ordinary commits ahead of f62172a… (ef0304be… structural oracle, then ordinary-forward withdrawal 42e3f7a…) and restores the same tree, so no effective owner delta was lost.

The current Ready generation on exact 42e3f7a… has naturally materialized all five required workflows and all are still nonterminal/queued: CodeQL 35494752040, Python Security 35494752070, Runtime Quality 35494752102, SAST 35494752067, Security Scan 35494752139. The preceding same-head Draft generation is terminal skipped and remains lifecycle evidence only.

Direct source prerequisite is now #2291 exact 782d67b433aa71cf2c81b2a81f55ae192a317f3b; #2291 itself is Ready/mergeable but its five hosted runs are queued and it has no qualifying independent current-head approval. Therefore the safe order is #2291 hosted/review acceptance + normal landing → ordinary/non-force #2109 parent adoption/reconciliation if needed → fresh exact-head terminal hosted checks + qualifying current-head approval → normal integration. No blind rerun, no source-neutral wake commit, no self-approval, no bypass, and no predecessor-check transfer.

@seonghobae
seonghobae marked this pull request as draft September 20, 2026 07:38

Copy link
Copy Markdown
Contributor Author

2026-09-20 lifecycle authority update — exact head 42e3f7a8cbb03b117c898d3e125af87a5c6ce86b remains source/tree unchanged.

The Ready canary admitted all five required heavy workflows on this stacked base: CodeQL 35494752040, Python Security 35494752070, SAST Semgrep 35494752067, Agent Review Runtime Quality CI 35494752102, Security Scan 35494752139. With central runner capacity still severely constrained and prerequisite #2291 not yet accepted, this PR has now been converted back to Draft to exercise the owned converted_to_draft lifecycle rather than leave scarce queued capacity occupied.

All five Ready-generation runs above are now terminal cancelled. The new converted_to_draft generation is being admitted on the same exact source head; e.g. CodeQL run 35497422505 completed skipped. This is positive evidence for the bounded lifecycle contract: Ready stacked-base admission occurs, and Draft conversion withdraws queued heavy work without a source-neutral wake commit.

This is not merge acceptance. #2109 remains Draft until #2291 is accepted and runner capacity is healthy enough to re-enter Ready and obtain terminal current-head GREEN plus independent review. Exact-head review scheduling / predecessor-cleanup ownership remains with #2283→#2289; do not expand #2109 into that lane.

Copy link
Copy Markdown
Contributor Author

Fresh exact-head lifecycle correction (2026-09-20): PR metadata is Draft again at 42e3f7a8cbb03b117c898d3e125af87a5c6ce86b (tree 0dcd95f1838f68d677249284e240caf3fc63849d), stacked on #2291 782d67b433aa71cf2c81b2a81f55ae192a317f3b. The Ready generation created at 06:38Z ended cancelled when the PR returned to Draft: Runtime 35494752102, Python Security 35494752070, SAST 35494752067, Security Scan 35494752139, CodeQL 35494752040. The replacement Draft generation created at 07:38Z is runner-free terminal skipped across all five: Runtime 35497429888, Python Security 35497429907, SAST 35497429917, Security Scan 35497429937, CodeQL 35497429910. This is valid same-head Draft lifecycle/admission evidence only; it is not source/security GREEN or merge authority. The body’s older “Ready / Proposed … at f62172a…” snapshot is superseded by this live state; f62172a… remains a valid ancestor/effective-tree predecessor, while the actual branch/ref head is 42e3f7a…. #2291 remains the direct source parent and must earn exact-head hosted/review acceptance first. No rerun, wake commit, retarget, or bypass requested.

Copy link
Copy Markdown
Contributor Author

Parent-owner handoff correction: canonical #2291 exact 782d67b433aa71cf2c81b2a81f55ae192a317f3b is Draft and has a newly accepted current-head P1 in the Strix executable fixture matrix. The generic split-root path is correct, but 24 specialized call sites still co-locate strix_evidence_binding.py with the consumer root and can mask consumer-binder resolution regressions. #2291 body/comment 5748561183 now owns the complete repair contract; owner execution request is 5749186217.

Keep #2109 Draft at exact 42e3f7a8cbb03b117c898d3e125af87a5c6ce86b and do not copy or independently repair the Strix binder/runtime boundary here. After #2291 completes RED→GREEN, fresh independent review/hosted acceptance, and normal protected integration, adopt/reconcile the parent by ordinary/non-force history and then reacquire #2109 exact-head Draft/Ready + stacked-base admission evidence. Existing same-tree Ready-cancelled/Draft-skipped generations remain lifecycle evidence only.

@opencode-agent opencode-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

OpenCode reviewed the current-head product diff. Coverage is a separate gate.

Changed files

  • .github/workflows/agent-review-runtime-quality-ci.yml — GitHub Actions review job
  • .github/workflows/codeql-pr.yml — GitHub Actions review job
  • .github/workflows/python-security.yml — GitHub Actions review job
  • .github/workflows/sast-semgrep.yml — GitHub Actions review job
  • .github/workflows/security-scan.yml — GitHub Actions review job
  • CHANGELOG.d/20260920-draft-transition-cancels-ready-runs.md — repository behavior
  • CHANGELOG.md — repository behavior
  • docs/doctoring/draft-required-workflow-admission-20260912.md — operator or user guidance
  • docs/pr-review-and-merge-procedure.md — operator or user guidance
  • docs/product-technical-gap-baseline.md — operator or user guidance
  • scripts/ci/sandboxed_verify.py — review and security gate shell path
  • tests/test_docs_only_pr_runner_admission.py — regression suite
  • tests/test_required_workflow_queue_contract.py — regression suite
  • tests/test_sandboxed_verify.py — regression suite

Changed behavior

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Workflow: agent-review-runtime-quality-ci.yml"]
  S1 --> I1["GitHub Actions review job"]
  I1 --> R1["Review risk: Workflow: agent-review-runtime-quality-ci.yml"]
  R1 --> V1["actionlint plus required checks"]
  Evidence --> S2["Workflow: codeql-pr.yml"]
  S2 --> I2["GitHub Actions review job"]
  I2 --> R2["Review risk: Workflow: codeql-pr.yml"]
  R2 --> V2["actionlint plus required checks"]
  Evidence --> S3["Workflow: python-security.yml"]
  S3 --> I3["GitHub Actions review job"]
  I3 --> R3["Review risk: Workflow: python-security.yml"]
  R3 --> V3["actionlint plus required checks"]
  Evidence --> S4["Workflow: sast-semgrep.yml"]
  S4 --> I4["GitHub Actions review job"]
  I4 --> R4["Review risk: Workflow: sast-semgrep.yml"]
  R4 --> V4["actionlint plus required checks"]
  Evidence --> S5["Workflow: security-scan.yml"]
  S5 --> I5["GitHub Actions review job"]
  I5 --> R5["Review risk: Workflow: security-scan.yml"]
  R5 --> V5["actionlint plus required checks"]
  Evidence --> S6["Repository file: 20260920-draft-transition-cancels-ready-runs.md"]
  S6 --> I6["repository behavior"]
  I6 --> R6["Review risk: Repository file: 20260920-draft-transition-cancels-ready-runs.md"]
  R6 --> V6["required checks"]
  Evidence --> S7["Repository file: CHANGELOG.md"]
  S7 --> I7["repository behavior"]
  I7 --> R7["Review risk: Repository file: CHANGELOG.md"]
  R7 --> V7["required checks"]
  Evidence --> S8["Docs: draft-required-workflow-admission-20260912.md (3 files)"]
  S8 --> I8["operator or user guidance"]
  I8 --> R8["Review risk: Docs: draft-required-workflow-admission-20260912.md (3 files)"]
  R8 --> V8["docs review"]
  Evidence --> S9["CI script: sandboxed_verify.py"]
  S9 --> I9["review and security gate shell path"]
  I9 --> R9["Review risk: CI script: sandboxed_verify.py"]
  R9 --> V9["bash -n plus Strix self-test"]
  Evidence --> S10["Test: test_docs_only_pr_runner_admission.py (3 files)"]
  S10 --> I10["regression suite"]
  I10 --> R10["Review risk: Test: test_docs_only_pr_runner_admission.py (3 files)"]
  R10 --> V10["targeted test run"]
Loading

Findings

No source-backed product finding is synthesized from the coverage gate. A coverage miss belongs in the status comment.

  • Head SHA: 42e3f7a8cbb03b117c898d3e125af87a5c6ce86b
  • Workflow run: 35743808312
  • 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: agent-review-runtime-quality-ci.yml"]
  S1 --> I1["GitHub Actions review job"]
  I1 --> R1["Review risk: Workflow: agent-review-runtime-quality-ci.yml"]
  R1 --> V1["actionlint plus required checks"]
  Evidence --> S2["Workflow: codeql-pr.yml"]
  S2 --> I2["GitHub Actions review job"]
  I2 --> R2["Review risk: Workflow: codeql-pr.yml"]
  R2 --> V2["actionlint plus required checks"]
  Evidence --> S3["Workflow: python-security.yml"]
  S3 --> I3["GitHub Actions review job"]
  I3 --> R3["Review risk: Workflow: python-security.yml"]
  R3 --> V3["actionlint plus required checks"]
  Evidence --> S4["Workflow: sast-semgrep.yml"]
  S4 --> I4["GitHub Actions review job"]
  I4 --> R4["Review risk: Workflow: sast-semgrep.yml"]
  R4 --> V4["actionlint plus required checks"]
  Evidence --> S5["Workflow: security-scan.yml"]
  S5 --> I5["GitHub Actions review job"]
  I5 --> R5["Review risk: Workflow: security-scan.yml"]
  R5 --> V5["actionlint plus required checks"]
  Evidence --> S6["Repository file: 20260920-draft-transition-cancels-ready-runs.md"]
  S6 --> I6["repository behavior"]
  I6 --> R6["Review risk: Repository file: 20260920-draft-transition-cancels-ready-runs.md"]
  R6 --> V6["required checks"]
  Evidence --> S7["Repository file: CHANGELOG.md"]
  S7 --> I7["repository behavior"]
  I7 --> R7["Review risk: Repository file: CHANGELOG.md"]
  R7 --> V7["required checks"]
  Evidence --> S8["Docs: draft-required-workflow-admission-20260912.md (3 files)"]
  S8 --> I8["operator or user guidance"]
  I8 --> R8["Review risk: Docs: draft-required-workflow-admission-20260912.md (3 files)"]
  R8 --> V8["docs review"]
  Evidence --> S9["CI script: sandboxed_verify.py"]
  S9 --> I9["review and security gate shell path"]
  I9 --> R9["Review risk: CI script: sandboxed_verify.py"]
  R9 --> V9["bash -n plus Strix self-test"]
  Evidence --> S10["Test: test_docs_only_pr_runner_admission.py (3 files)"]
  S10 --> I10["regression suite"]
  I10 --> R10["Review risk: Test: test_docs_only_pr_runner_admission.py (3 files)"]
  R10 --> V10["targeted test run"]
Loading

@opencode-agent opencode-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

OpenCode reviewed the current-head product diff. Coverage is a separate gate.

Changed files

  • .github/workflows/agent-review-runtime-quality-ci.yml — GitHub Actions review job
  • .github/workflows/codeql-pr.yml — GitHub Actions review job
  • .github/workflows/python-security.yml — GitHub Actions review job
  • .github/workflows/sast-semgrep.yml — GitHub Actions review job
  • .github/workflows/security-scan.yml — GitHub Actions review job
  • CHANGELOG.d/20260920-draft-transition-cancels-ready-runs.md — repository behavior
  • CHANGELOG.md — repository behavior
  • docs/doctoring/draft-required-workflow-admission-20260912.md — operator or user guidance
  • docs/pr-review-and-merge-procedure.md — operator or user guidance
  • docs/product-technical-gap-baseline.md — operator or user guidance
  • scripts/ci/sandboxed_verify.py — review and security gate shell path
  • tests/test_docs_only_pr_runner_admission.py — regression suite
  • tests/test_required_workflow_queue_contract.py — regression suite
  • tests/test_sandboxed_verify.py — regression suite

Changed behavior

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Workflow: agent-review-runtime-quality-ci.yml"]
  S1 --> I1["GitHub Actions review job"]
  I1 --> R1["Review risk: Workflow: agent-review-runtime-quality-ci.yml"]
  R1 --> V1["actionlint plus required checks"]
  Evidence --> S2["Workflow: codeql-pr.yml"]
  S2 --> I2["GitHub Actions review job"]
  I2 --> R2["Review risk: Workflow: codeql-pr.yml"]
  R2 --> V2["actionlint plus required checks"]
  Evidence --> S3["Workflow: python-security.yml"]
  S3 --> I3["GitHub Actions review job"]
  I3 --> R3["Review risk: Workflow: python-security.yml"]
  R3 --> V3["actionlint plus required checks"]
  Evidence --> S4["Workflow: sast-semgrep.yml"]
  S4 --> I4["GitHub Actions review job"]
  I4 --> R4["Review risk: Workflow: sast-semgrep.yml"]
  R4 --> V4["actionlint plus required checks"]
  Evidence --> S5["Workflow: security-scan.yml"]
  S5 --> I5["GitHub Actions review job"]
  I5 --> R5["Review risk: Workflow: security-scan.yml"]
  R5 --> V5["actionlint plus required checks"]
  Evidence --> S6["Repository file: 20260920-draft-transition-cancels-ready-runs.md"]
  S6 --> I6["repository behavior"]
  I6 --> R6["Review risk: Repository file: 20260920-draft-transition-cancels-ready-runs.md"]
  R6 --> V6["required checks"]
  Evidence --> S7["Repository file: CHANGELOG.md"]
  S7 --> I7["repository behavior"]
  I7 --> R7["Review risk: Repository file: CHANGELOG.md"]
  R7 --> V7["required checks"]
  Evidence --> S8["Docs: draft-required-workflow-admission-20260912.md (3 files)"]
  S8 --> I8["operator or user guidance"]
  I8 --> R8["Review risk: Docs: draft-required-workflow-admission-20260912.md (3 files)"]
  R8 --> V8["docs review"]
  Evidence --> S9["CI script: sandboxed_verify.py"]
  S9 --> I9["review and security gate shell path"]
  I9 --> R9["Review risk: CI script: sandboxed_verify.py"]
  R9 --> V9["bash -n plus Strix self-test"]
  Evidence --> S10["Test: test_docs_only_pr_runner_admission.py (3 files)"]
  S10 --> I10["regression suite"]
  I10 --> R10["Review risk: Test: test_docs_only_pr_runner_admission.py (3 files)"]
  R10 --> V10["targeted test run"]
Loading

Findings

No source-backed product finding is synthesized from the coverage gate. A coverage miss belongs in the status comment.

  • Head SHA: 42e3f7a8cbb03b117c898d3e125af87a5c6ce86b
  • Workflow run: 35799035407
  • 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: agent-review-runtime-quality-ci.yml"]
  S1 --> I1["GitHub Actions review job"]
  I1 --> R1["Review risk: Workflow: agent-review-runtime-quality-ci.yml"]
  R1 --> V1["actionlint plus required checks"]
  Evidence --> S2["Workflow: codeql-pr.yml"]
  S2 --> I2["GitHub Actions review job"]
  I2 --> R2["Review risk: Workflow: codeql-pr.yml"]
  R2 --> V2["actionlint plus required checks"]
  Evidence --> S3["Workflow: python-security.yml"]
  S3 --> I3["GitHub Actions review job"]
  I3 --> R3["Review risk: Workflow: python-security.yml"]
  R3 --> V3["actionlint plus required checks"]
  Evidence --> S4["Workflow: sast-semgrep.yml"]
  S4 --> I4["GitHub Actions review job"]
  I4 --> R4["Review risk: Workflow: sast-semgrep.yml"]
  R4 --> V4["actionlint plus required checks"]
  Evidence --> S5["Workflow: security-scan.yml"]
  S5 --> I5["GitHub Actions review job"]
  I5 --> R5["Review risk: Workflow: security-scan.yml"]
  R5 --> V5["actionlint plus required checks"]
  Evidence --> S6["Repository file: 20260920-draft-transition-cancels-ready-runs.md"]
  S6 --> I6["repository behavior"]
  I6 --> R6["Review risk: Repository file: 20260920-draft-transition-cancels-ready-runs.md"]
  R6 --> V6["required checks"]
  Evidence --> S7["Repository file: CHANGELOG.md"]
  S7 --> I7["repository behavior"]
  I7 --> R7["Review risk: Repository file: CHANGELOG.md"]
  R7 --> V7["required checks"]
  Evidence --> S8["Docs: draft-required-workflow-admission-20260912.md (3 files)"]
  S8 --> I8["operator or user guidance"]
  I8 --> R8["Review risk: Docs: draft-required-workflow-admission-20260912.md (3 files)"]
  R8 --> V8["docs review"]
  Evidence --> S9["CI script: sandboxed_verify.py"]
  S9 --> I9["review and security gate shell path"]
  I9 --> R9["Review risk: CI script: sandboxed_verify.py"]
  R9 --> V9["bash -n plus Strix self-test"]
  Evidence --> S10["Test: test_docs_only_pr_runner_admission.py (3 files)"]
  S10 --> I10["regression suite"]
  I10 --> R10["Review risk: Test: test_docs_only_pr_runner_admission.py (3 files)"]
  R10 --> V10["targeted test run"]
Loading

@opencode-agent opencode-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

OpenCode reviewed the current-head product diff. Coverage is a separate gate.

Changed files

  • .github/workflows/agent-review-runtime-quality-ci.yml — GitHub Actions review job
  • .github/workflows/codeql-pr.yml — GitHub Actions review job
  • .github/workflows/python-security.yml — GitHub Actions review job
  • .github/workflows/sast-semgrep.yml — GitHub Actions review job
  • .github/workflows/security-scan.yml — GitHub Actions review job
  • CHANGELOG.d/20260920-draft-transition-cancels-ready-runs.md — repository behavior
  • CHANGELOG.md — repository behavior
  • docs/doctoring/draft-required-workflow-admission-20260912.md — operator or user guidance
  • docs/pr-review-and-merge-procedure.md — operator or user guidance
  • docs/product-technical-gap-baseline.md — operator or user guidance
  • scripts/ci/sandboxed_verify.py — review and security gate shell path
  • tests/test_docs_only_pr_runner_admission.py — regression suite
  • tests/test_required_workflow_queue_contract.py — regression suite
  • tests/test_sandboxed_verify.py — regression suite

Changed behavior

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Workflow: agent-review-runtime-quality-ci.yml"]
  S1 --> I1["GitHub Actions review job"]
  I1 --> R1["Review risk: Workflow: agent-review-runtime-quality-ci.yml"]
  R1 --> V1["actionlint plus required checks"]
  Evidence --> S2["Workflow: codeql-pr.yml"]
  S2 --> I2["GitHub Actions review job"]
  I2 --> R2["Review risk: Workflow: codeql-pr.yml"]
  R2 --> V2["actionlint plus required checks"]
  Evidence --> S3["Workflow: python-security.yml"]
  S3 --> I3["GitHub Actions review job"]
  I3 --> R3["Review risk: Workflow: python-security.yml"]
  R3 --> V3["actionlint plus required checks"]
  Evidence --> S4["Workflow: sast-semgrep.yml"]
  S4 --> I4["GitHub Actions review job"]
  I4 --> R4["Review risk: Workflow: sast-semgrep.yml"]
  R4 --> V4["actionlint plus required checks"]
  Evidence --> S5["Workflow: security-scan.yml"]
  S5 --> I5["GitHub Actions review job"]
  I5 --> R5["Review risk: Workflow: security-scan.yml"]
  R5 --> V5["actionlint plus required checks"]
  Evidence --> S6["Repository file: 20260920-draft-transition-cancels-ready-runs.md"]
  S6 --> I6["repository behavior"]
  I6 --> R6["Review risk: Repository file: 20260920-draft-transition-cancels-ready-runs.md"]
  R6 --> V6["required checks"]
  Evidence --> S7["Repository file: CHANGELOG.md"]
  S7 --> I7["repository behavior"]
  I7 --> R7["Review risk: Repository file: CHANGELOG.md"]
  R7 --> V7["required checks"]
  Evidence --> S8["Docs: draft-required-workflow-admission-20260912.md (3 files)"]
  S8 --> I8["operator or user guidance"]
  I8 --> R8["Review risk: Docs: draft-required-workflow-admission-20260912.md (3 files)"]
  R8 --> V8["docs review"]
  Evidence --> S9["CI script: sandboxed_verify.py"]
  S9 --> I9["review and security gate shell path"]
  I9 --> R9["Review risk: CI script: sandboxed_verify.py"]
  R9 --> V9["bash -n plus Strix self-test"]
  Evidence --> S10["Test: test_docs_only_pr_runner_admission.py (3 files)"]
  S10 --> I10["regression suite"]
  I10 --> R10["Review risk: Test: test_docs_only_pr_runner_admission.py (3 files)"]
  R10 --> V10["targeted test run"]
Loading

Findings

No source-backed product finding is synthesized from the coverage gate. A coverage miss belongs in the status comment.

  • Head SHA: 42e3f7a8cbb03b117c898d3e125af87a5c6ce86b
  • Workflow run: 35848994274
  • 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: agent-review-runtime-quality-ci.yml"]
  S1 --> I1["GitHub Actions review job"]
  I1 --> R1["Review risk: Workflow: agent-review-runtime-quality-ci.yml"]
  R1 --> V1["actionlint plus required checks"]
  Evidence --> S2["Workflow: codeql-pr.yml"]
  S2 --> I2["GitHub Actions review job"]
  I2 --> R2["Review risk: Workflow: codeql-pr.yml"]
  R2 --> V2["actionlint plus required checks"]
  Evidence --> S3["Workflow: python-security.yml"]
  S3 --> I3["GitHub Actions review job"]
  I3 --> R3["Review risk: Workflow: python-security.yml"]
  R3 --> V3["actionlint plus required checks"]
  Evidence --> S4["Workflow: sast-semgrep.yml"]
  S4 --> I4["GitHub Actions review job"]
  I4 --> R4["Review risk: Workflow: sast-semgrep.yml"]
  R4 --> V4["actionlint plus required checks"]
  Evidence --> S5["Workflow: security-scan.yml"]
  S5 --> I5["GitHub Actions review job"]
  I5 --> R5["Review risk: Workflow: security-scan.yml"]
  R5 --> V5["actionlint plus required checks"]
  Evidence --> S6["Repository file: 20260920-draft-transition-cancels-ready-runs.md"]
  S6 --> I6["repository behavior"]
  I6 --> R6["Review risk: Repository file: 20260920-draft-transition-cancels-ready-runs.md"]
  R6 --> V6["required checks"]
  Evidence --> S7["Repository file: CHANGELOG.md"]
  S7 --> I7["repository behavior"]
  I7 --> R7["Review risk: Repository file: CHANGELOG.md"]
  R7 --> V7["required checks"]
  Evidence --> S8["Docs: draft-required-workflow-admission-20260912.md (3 files)"]
  S8 --> I8["operator or user guidance"]
  I8 --> R8["Review risk: Docs: draft-required-workflow-admission-20260912.md (3 files)"]
  R8 --> V8["docs review"]
  Evidence --> S9["CI script: sandboxed_verify.py"]
  S9 --> I9["review and security gate shell path"]
  I9 --> R9["Review risk: CI script: sandboxed_verify.py"]
  R9 --> V9["bash -n plus Strix self-test"]
  Evidence --> S10["Test: test_docs_only_pr_runner_admission.py (3 files)"]
  S10 --> I10["regression suite"]
  I10 --> R10["Review risk: Test: test_docs_only_pr_runner_admission.py (3 files)"]
  R10 --> V10["targeted test run"]
Loading

This branch has not been deployed

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

Labels

bug Something isn't working priority: high High-priority or P1 work

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant