fix(ci): fail closed on incomplete review evaluation - #147
Conversation
Signed-off-by: Tapish Khandelwal <tapishkhandelwal13@gmail.com>
Signed-off-by: Tapish Khandelwal <tapishkhandelwal13@gmail.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4b9899dbb9
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Signed-off-by: Tapish Khandelwal <tapishkhandelwal13@gmail.com>
Signed-off-by: Tapish Khandelwal <tapishkhandelwal13@gmail.com>
Signed-off-by: Tapish Khandelwal <tapishkhandelwal13@gmail.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 1806e9478b
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Signed-off-by: Tapish Khandelwal <tapishkhandelwal13@gmail.com>
Signed-off-by: Tapish Khandelwal <tapishkhandelwal13@gmail.com>
Signed-off-by: Tapish Khandelwal <tapishkhandelwal13@gmail.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 01d6b2464d
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Signed-off-by: Tapish Khandelwal <tapishkhandelwal13@gmail.com>
Signed-off-by: Tapish Khandelwal <tapishkhandelwal13@gmail.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 598f13e492
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Signed-off-by: Tapish Khandelwal <tapishkhandelwal13@gmail.com>
Summary
minimizedReason === "resolved", author matching, and PR-level finding detection.Review gate; it still checks out the PR head and runs install, workflow preflight, and the review evaluator under pull-request event isolation.Review gate (scheduled)context so it cannot overwrite a preflight failure fromReview gate.workflow_dispatchnow takes the trusted default-branch, API-only reconciliation route and never checks out, installs, caches, or executes PR-authored content.review-gate.ymland trusted schedule/manual triggers intoreview-gate-reconcile.yml, so CodeQL no longer taints the PR-head cache from privileged triggers.Root Cause / Decision Record
The scheduled evaluator checks less than the event-backed job: it cannot honestly attest to PR-tree install or
pnpm workflow:preflightwithout executing PR-authored content. Publishing both verdicts asReview gatelet a scheduled success supersede an event/preflight failure. Round 4 therefore separates the contexts instead of duplicating privileged work.Repository-admin action required: add the exact
Review gate (scheduled)context to branch protection as a required check. Until an administrator does that, scheduled verdicts are advisory only. The existing requiredReview gatecontext remains unchanged.The previous
workflow_dispatchinput selected a PR head and admitted that content to checkout, pnpm caching, install, and preflight. That capability is removed. A manual dispatch now reconciles eligible open same-repository PRs from trusted default-branch code using GitHub APIs only; it cannot manually run PR install/preflight.Schedule:
*/15 * * * *. The reconciler excludes closed PRs, drafts, and forks, logs cap hits, processes at most four eligible PRs per run, and rotates the starting point by the 15-minute slot. Four keeps the worst-case sequence of four three-minute review waits within the 14-minute job limit.Permission and trust boundary:
contents: readandpull-requests: read.scheduled-review-gatereceiveschecks: write.review-gate.ymlhas onlypull_request,pull_request_review, andpull_request_review_comment; it contains the PR-head checkout/install/preflight job and no write permission.review-gate-reconcile.ymlhas onlyscheduleandworkflow_dispatch; it contains the default-branch API-only publisher and the solechecks: writepermission.pull_request_targetorissue_commentpath exists.Deleted-finding persistence remains out of scope. The finding was rejected with reasoning and linked to #148; its thread is resolved without adding durable deleted-comment state.
Scope
src/**, extension behavior, manifest permissions, portal flows, dependencies, release claims, and durable deleted-comment state.Final PR diff against
origin/master: 8 files, +874/−81. The authorized structural follow-up commit2942bb7changes 3 files, +93/−75, moving the existing trusted job rather than adding evaluator machinery.Pack Workflow Preflight
pnpm workflow:preflightpassed from clean head2942bb7e4f1916bd0a628f71ba9d0543793ccc54.origin/masterremains7428f51; no Round 4 merge was needed and no rebase was used.Sanchika Adoption Gate
@sanchika/*packages or copied Sanchika guidance.sanchika/docs/adoption-pack.mdor ComplyEaze and Axal completion evidence.Privacy And Data-Flow Impact
Sensitive Surface Review
checks: write.Chrome Web Store Impact
Verification
Round 4 dispatch guard red before fix — exit 1:
tests/extension/ci-workflow.test.tsexpected the explicit PR-family guard, but the workflow still usedgithub.event_name != 'schedule', leavingworkflow_dispatchadmitted.Final commands exited 0:
pnpm exec vitest runpnpm exec tsc --noEmitpnpm exec eslint . --max-warnings 0pnpm exec prettier --check .pnpm exec actionlintpnpm workflow:preflightgit diff --checkpnpm exec wxt buildnode scripts/verify-extension-package.mjs .output/chrome-mv3pnpm exec wxt zipnode scripts/verify-extension-zip.mjsThe first full-suite run exited 1 because
tests/scripts/export-chrome-web-store-assets.test.tsexceeded its existing 5-second timeout: 104 files / 1706 tests passed and 1 file / 1 test failed. The isolated file then passed 3/3 in 4.25 seconds without a retry/timeout code change. The final clean structural-split head exited 0:Exact PR #144 A/B command with expected head
a89d806224ced0aee9d5f6cd3f36139baf289fb7:7428f51: exit 0,PR review gate passed for lamemustafa/pack#144.2942bb7: exit 1, names PR-level comment5318064584, and prints the next-scheduled-run remedy.Package evidence:
Pack WXT extension package verification passed.6e39feae3a021b05250966e1f30c0f2de98b70fecd8a3672927a65931ac22341.CodeQL after the authorized structural push:
2942bb7:pass.most_recent_instance.state = "fixed"forrefs/pull/147/head; the prior instance was at598f13e.pass.openonly on currentmaster(7428f51) until the fixed workflow is merged; the new PR head introduced no corresponding open instance.Artifact Evidence
2942bb7e4f1916bd0a628f71ba9d0543793ccc54..output/complyeazepack-0.5.1-chrome.zip.PR Review Follow-Up
fixedand its threads auto-resolved.2942bb7after the initial single-push boundary was explicitly lifted.discussion_r3799815762remains open: branch protection still requires onlyReview gate; an administrator must addReview gate (scheduled).a2354c3; separateReview gate (scheduled)context; admin branch-protection action discloseda2354c3; 180000 ms wait and 10000 ms poll preserveda2354c3; stateless slot rotation and bounded cap; regression coverage2942bb7; trusted triggers moved to a separate workflow; PR CodeQL check passes and alert #4 reportsfixedReview gate; add exact contextReview gate (scheduled)before treating scheduled verdicts as blockingThis update does not claim the PR is review-clean; current-head CI and automated review remain authoritative.
Screenshots
Not applicable; no UI changes.
DCO
Signed-off-by:trailers.