chore(ci): bootstrap Product pull-request workflow - #35
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Team Run ID: 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthrough
ChangesProduct CI 워크플로
Estimated code review effort: 2 (Simple) | ~10 minutes Merge Risk: ⚪ Minimal · up to This change adjusts Product pull-request workflow triggers and draft-job behavior while retaining the stated validation steps. No concrete merge-blocking risk is identified. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
seonghobae
left a comment
There was a problem hiding this comment.
현재 bootstrap workflow가 converted_to_draft와 closed에도 기동하지만 유일한 rust-quality job은 조건식에서 두 상태를 실행하지 않습니다. 즉 해당 이벤트는 의미 있는 검증 없이 workflow run만 생성합니다. 현재 중앙 runner admission이 장시간 queued인 상황에서는 불필요한 run 생성 자체가 비용입니다. pull_request.types는 opened, synchronize, reopened, ready_for_review로 좁히고 job 조건은 draft 여부만 검사하는 것이 기존 bootstrap 목적을 보존하는 최소 수리입니다. 이 finding은 기존 queued check를 GREEN으로 대체하지 않습니다.
|
Fresh control-plane correction (2026-09-05): protected |
There was a problem hiding this comment.
Noema LLM review
The new Product pull-request workflow is generally well-structured with pinned action SHAs, minimal permissions, and a concurrency guard. However, the 'Lockfile freshness' step invokes cargo generate-lockfile --locked, which is an invalid flag combination for that subcommand and will cause the step to fail on every run, blocking the entire workflow. This must be fixed before approval.
Reviewed changed lines
.github/workflows/product.yml:25 (RIGHT): Checkout action is pinned to a known immutable SHA for actions/checkout v7.0.0 and uses fetch-depth 0 with persist-credentials false, which is correct for CI..github/workflows/product.yml:63 (RIGHT): The pinned nightly-2026-08-20 toolchain exists and is installed via rustup, which is reproducible and matches the coverage workflow intent..github/workflows/product.yml:89 (RIGHT):cargo generate-lockfile --lockedis not a valid invocation:--lockedis not accepted by thegenerate-lockfilesubcommand. This will always fail, breaking the workflow.
Adversarial validation
.github/workflows/product.yml:89 (RIGHT)confirmed:cargo generate-lockfile --lockedwill fail because--lockedis not a valid flag for thegenerate-lockfilesubcommand. — Cargo's CLI documentation and runtime behavior confirm that--lockedis only supported by build/check/test commands, notgenerate-lockfile. The command produces an error about an unexpected argument..github/workflows/product.yml:25 (RIGHT)falsified: The pinned checkout SHA might be stale or invalid, causing workflow resolution to fail. — The SHA matches the published immutable ref for actions/checkout v7.0.0, so runtime resolution is safe.- Residual risk: The blocker at line 89 prevents the workflow from ever completing successfully. Once fixed (e.g., remove
--lockedand rely on the subsequent git status check), the workflow should be re-verified; no other residual risks were identified.
Findings
- [high] .github/workflows/product.yml:89 (RIGHT):
cargo generate-lockfile --lockedis an invalid command;--lockedis not supported by thegenerate-lockfilesubcommand. This will cause the 'Lockfile freshness' step to fail on every run, rendering the workflow non-functional. Usecargo generate-lockfile(without--locked) to generate the lockfile, and then verify freshness with agit statuscheck as currently done.
- Result: REQUEST_CHANGES
- Head SHA:
a31ae0c2df920f2794f7ddb456795b04797ab472 - Reviewer credential:
noema-review-github-app-refresh - Actor:
cwl-noema-review[bot]
|
Rechecking Noema review 5120903874 on exact head
Please reassess this finding against the toolchain-specific evidence. I have not removed the guard, dismissed the review, resolved a reviewer thread, or treated a successful Noema execution check as approval. This validates flag availability, not a hosted Product run or all dependency-freshness behavior. Exact-head checks and independent approval remain required. |
seonghobae
left a comment
There was a problem hiding this comment.
Current-head finding verification: the Noema CHANGES_REQUESTED claim that cargo generate-lockfile --locked is an invalid flag combination is false against the current official Cargo reference. cargo-generate-lockfile(1) explicitly lists --locked under Manifest Options and specifies that it asserts the existing Cargo.lock can be reused without dependency-resolution changes, which is exactly the intended CI freshness contract here. The current workflow line is therefore retained. This COMMENT does not approve the PR, dismiss the Noema review, or convert the still-failing/pending CodeQL evidence into GREEN. Current authoritative blockers remain the authenticated terminal CodeQL outcome and qualifying independent approval. Primary reference verified 2026-09-05: https://doc.rust-lang.org/cargo/commands/cargo-generate-lockfile.html
|
Central-head correction after the prior authority refresh: protected |
|
Fresh Strix RCA on unchanged head Downloaded immutable artifact This is a gateway/provider-failover owner defect, not evidence for changing the Product workflow diff and not a successful security verdict. The exact specimen is handed to |
|
Fresh owner-state correction for the unchanged
Keep #35 source stable. The next useful evidence is a newly emitted current-workflow exact-head dispatch after owner-plane authorization convergence; old-handle replay would not test the repaired owner source. |
|
Fresh owner-plane reconciliation, 2026-09-06: central The dispatcher authorization owner issue No newer #35 PR-triggered run is visible on unchanged #35 head Strix catalog diversity and CO runtime failover remain distinct: #1939 closes the account-selection bias, while |
|
2026-09-06 fresh central-owner evidence strengthens the existing #1929 blocker without changing this ConceptWeave head. Post-#1932 runtime logs now directly show the effective dispatch allowlist at execution time: Keep |
Problem
main@f4f440dd58c77d7cd90dff8a1eb2eeb9a9940425has no.github/workflows/product.yml. Foundation #1 defines Product CI only on its feature head, so GitHub cannot start the repository-ownedpull_requestProduct workflow from the protected base. Exact-head Product evidence therefore cannot exist before the workflow is first integrated; this is a bootstrap dependency, not a product-code failure.Minimal causal repair
Add only the pull-request form of the current Foundation Product workflow to
main. It checks out the event's exact PR head, verifies the SHA, runs the repository CI-contract checker, Rust format/Clippy/tests/rustdoc, exact owned coverage, Draft 2020-12 fixtures, lockfile freshness, and clean-tree checks. Checkout credentials remain disabled and action revisions remain pinned.Queue-conservation successor
a31ae0c2df920f2794f7ddb456795b04797ab472removesconverted_to_draftandclosed, which created runs whose only Rust job was guaranteed not to execute.opened,synchronize,reopened, andready_for_reviewremain.Current exact-head evidence — 2026-09-06
The head remains
a31ae0c2df920f2794f7ddb456795b04797ab472, open/non-Draft/mergeable on basemain@f4f440dd58c77d7cd90dff8a1eb2eeb9a9940425.Repository workflow evidence on this unchanged head remains mixed: Security Scan
33938445660and SAST Semgrep33938445673are terminal success; CodeQL PR33938445642, Required OpenCode Review33938445067, and Strix33938445050are terminal failure. Required Noema workflow33938445009completed, but its submitted review remains a blockingCHANGES_REQUESTED. Required PR Review Merge Scheduler33938445033succeeded. No qualifying independent APPROVE has been established.CodeQL/OpenCode owner admission remains central
The old CodeQL dispatch
.githubrun33961083940failed after acquiringubuntu-24.04and exchanging the app token becauseclient_payload.matrixwas bound directly toenv:as an array..github#1926repaired that owner defect normally as merge3f88e13af9dcde4b9da6958c02a78ce3b5c85800by serializing the matrix before existing JSON validation. The old #35 failure is not retroactively GREEN; fresh authenticated exact-head CodeQL evidence is still required.Required leaf run
33938445067had already validated the exact #35 head, obtained OIDC/repository-scoped app credentials, and dispatched owner-controlled execution before failing closed because no current-head verdict existed. Its corresponding central OpenCode run.github33977685099acquiredubuntu-24.04, completed app-token exchange, then failedBind workflow inputs to live organization pull request metadata; downstream coverage/substantive review work was skipped.Central #1932 is merged and supports a comma-separated trusted-identity list. Current
.github#1929remains open. Fresh owner evidence distinguishes three observed producer identities: OpenCode/CodeQL app-token dispatches useopencode-agent[bot]; a legacy/scheduler path has emittedgithub-actions[bot]; and measured review-fix dispatches used the human accountseonghobae. The least-widening repair is not to add the human account to a machine-dispatch allowlist. Migrate the review-fix producer off the user PAT identity onto the repository-scoped GitHub App identity (or another dedicated machine principal), then reconcileOPENCODE_REPOSITORY_DISPATCH_ACTORonly to machine identities fresh producer inventory proves are intentionally retained. Preserveactor == senderplus exact repository/PR/base/head/wake binding. Acceptance requires fresh current-central-head canaries from OpenCode, CodeQL, and review-fix to reach substantive jobs while an otherwise identical human-account dispatch remains rejected.Protected central
.github/mainisfb2ae81dbeaacb0c630e51e9d772c6919fa220cfafter #1949 merged. #1949 is a real review-sidecar reliability repair: it treats the model catalog as candidates, lazily fills toward eight ready routes within a bounded probe budget, skips an account after repeated 429s, and no longer lets known-dead catalog entries permanently occupy served slots. This helps the historical Strix/Noema reliability lane but does not establish machine-principal dispatch authorization.Fresh current-central-head CodeQL specimen
34013909079is now terminal failure, not queued. It was dispatched byopencode-agent[bot], obtained anubuntu-24.04runner, successfully exchanged the OpenCode app token, then failedBind workflow inputs to live organization pull request metadata; the substantive CodeQL dispatch scan was skipped. The specimen targetspg-erd-cloud#1089, so it is owner-plane evidence rather than #35 exact-head evidence, but it proves the current central head still has the same admission-class failure and that #1929 cannot be treated as repaired. Do not replay the old ConceptWeave handles or no-op push #35 merely to consume this owner evidence.Base-drift semantics remain separate
.github#1931separately tracks queue-timebase_shadrift. Exacthead_shabinding remains mandatory. The original #35 OpenCode specimen did not drift because ConceptWeave protectedmainand #35 head remain unchanged, so #1931 is not its explanation.Noema finding remains unresolved at owner
Noema review
5120903874requested changes because it assertedcargo generate-lockfile --lockedis unsupported. Official Cargo documentation and the recorded Cargo 1.98.0 help output contradict that premise; verification COMMENT5120921180records the evidence. The review is retained rather than dismissed..github#1924remains open and owns the generic contradicted-external-capability contract. Merged.github#1944improves failed Noema artifact capture but does not repair the false-capability adjudication semantics.Strix routing reliability advanced, but this exact #35 evidence remains failed
Strix
33938445050reached trusted gateway execution but its substantive session failed after repeated gateway HTTP 500s. Since that historical run,contextual-orchestrator#1081merged as protectedmain@414f22973658c4ddc3d4320fcf7acd9b4e8ba991, removing multiplicative transport retries beneath_invoke's own retry-then-failover loop. Central review-sidecar successors, including #1949, now also improve catalog readiness selection. These are real owner-path repairs, not retroactive #35 GREEN.contextual-orchestrator#1049remains open at87612a68b3af1f305bb7b09bd0be860bad1b7fd6for passthrough retryable 502/network failover and typed attempt evidence. A fresh Strix execution using the current central trusted workflow and pinned owner code is required before deciding whether the historical #35 HTTP-500 failure class is closed or whether a narrower status-classification/attempt-evidence defect remains. ConceptWeave does not hard-code providers/models or add a leaf fallback.Safety / merge gate
Keep exact #35 head stable unless a real leaf defect requires a causal source change. No no-op push, blind rerun, self-approval, review dismissal, force push/rebase, protection weakening, provider bypass, or admin merge.
Required before normal merge: central machine-principal dispatch reconciliation plus authenticated current-head OpenCode execution; fresh terminal CodeQL evidence through the repaired current central path; correction/re-evaluation of the contradicted Noema finding; a fresh current-owner Strix result after the CO and central review-sidecar reliability repairs; and one qualifying independent approval. After #35 integrates, Foundation #1 can receive real protected-base Product evidence and then advance Client/Source Observation normally.