fix(review): preserve gate verdict on auto-review skip - #3910
Conversation
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
|
Warning 🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 ⏸️ Gittensory review result - manual review recommendedReview updated: 2026-07-07 06:51:51 UTC
⏸️ Suggested Action - Manual Review
Review summary Nits — 4 non-blocking
Concerns raised — review before merging
Review context
Contributor next steps
Signal definitions
🟩 Safe / merged · 🟦 Advisory · 🟨 Held for review · 🟥 Blocked / closed 💰 Earn for open-source contributions like this. Gittensor lets GitHub contributors earn for the work they already do — register to start earning →. Checked by Gittensory, a quiet PR intelligence layer for OSS maintainers.
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #3910 +/- ##
=======================================
Coverage 93.57% 93.57%
=======================================
Files 340 340
Lines 33516 33516
Branches 12262 12262
=======================================
Hits 31364 31364
Misses 1528 1528
Partials 624 624
🚀 New features to boost your workflow:
|
…gate the merge (#4171) Content/registry repos (metagraphed today) have no schema/lint/codecov net to catch a semantically-wrong-but-structurally-valid defect -- their own AI reviewer's judgment is the only thing that ever catches it, yet applySurfaceGate's guard #3 lets a decisive deterministic surface merge unconditionally override even a confidently-flagged AI-judgment blocker. Adds gate.aiJudgmentBlockers: "gate" | "advisory" (default "advisory", byte-identical everywhere that doesn't opt in), YML-only config mirroring contentLane's own shape since this only matters for repos already running the registry content lane. When "gate", the AI-judgment-only override is skipped and the finding survives into the deterministic gate's own blockers, demoting the decision away from merge -- reproducing exactly the PR #3910 shape (correct-in-prose, wrong-in-disposition) as structurally impossible once a repo opts in. Setting metagraphed's own .gittensory.yml to gate.aiJudgmentBlockers: "gate" is a separate follow-up PR in that repo, gated on this shipping.
Motivation
autoReviewSkipReasonwas being used to publish a completedskippedGate check unconditionally, which could mask deterministic hard blockers (secret leaks, pre-merge checks, linked-issue failures) and make required status checks non-blocking.Description
createOrUpdateSkippedGateCheckRunis only used whenautoReviewSkipReasonis set and the computedgateEvaluation?.conclusion === "success", preserving the real gate verdict otherwise (src/queue/processors.ts).skippedis set only in the same safe, already-passing case and otherwise the actualgateEvaluationconclusion is stored (src/queue/processors.ts).auto_reviewskipped where the deterministic gate does not pass, asserting the gate check and stored summary keep the non-skipped conclusion while AI review remains skipped (test/unit/queue.test.ts).Testing
git diff --checkto validate whitespace/conflict hygiene, which succeeded.npx vitest run test/unit/queue.test.ts -t "auto-review eligibility" --reporter=verboseandnpx vitest run test/unit/queue.test.ts -t "deterministic gate conclusion" --reporter=verbose, both passing locally.publishes the deterministic gate conclusion when auto-review eligibility is skipped but the gate does not pass) executed and validated that AI review is skipped while the gate publishes its true (non-skipped) conclusion.Codex Task