fix(github): block only confirmed Gittensor contributors in the PR Gate - #644
Conversation
The Gittensory Gate blocked PRs from non-confirmed contributors (e.g. awesome-claude #2125, authored by a non-gittensor contributor, was failed with "No linked issue detected"). Root cause: the gate conclusion was computed without consulting contributor confirmation, and it also blocked on missing linked issues and on the app's own sync state. - Confirmed-contributor-only blocking: thread `official.status === "confirmed"` into the gate policy; force a neutral (non-blocking) conclusion for any non-confirmed author, regardless of which blockers fired. - Never block on app/infra state: repo-not-synced / PR-not-cached now resolve to a neutral "not evaluated yet" gate that re-runs automatically, instead of action_required. - Drop missing-linked-issue blocking by default: linkedIssueGateMode now defaults to advisory (issues aren't always available); duplicates still block by default. - Crystal-clear messaging: the Gate title names the exact blocker (or blocker count) and the summary enumerates every active blocker with its fix. Tests: gate is neutral for non-confirmed authors regardless of blockers; failure only for a confirmed author with an opted-in blocker; app-state neutral; plus an end-to-end confirmed-contributor block through the queue.
|
Note Gittensory Gate skippedPR closed before full evaluation. No late first comment was created.
💰 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. |
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
|
gittensory · advisory review Reviewed 10 changed file(s) — two independent AI reviewers. Suggested action: 🛠️ Request changes. Address the suggestions below before merging. Reviewer A · Suggestions
Worth double-checking
Reviewer B · Suggestions
Worth double-checking
|
…onfirmed contributors (#5732) The confirmedContributor gate on AI review (originally #644, about not applying miner-specific gate rules to non-miner PRs) had been reused to skip the AI-driven defect scan entirely for unconfirmed/new contributors by default -- leaving a new contributor's PR with LESS scrutiny than an established one's, backwards from the intended security posture. AI review now runs for every author once a repo has opted into aiReviewMode, with an explicit opt-in aiReviewConfirmedContributorsOnly setting for self-hosters who deliberately want to bound AI spend to registered miners (aiReviewAllAuthors still widens back out within that narrowed mode).
Problem
The Gittensory Gate check was blocking PRs from contributors it should never block. On awesome-claude #2125, a non-gittensor contributor was failed with "No linked issue detected."
Root cause: the gate conclusion (
evaluateGateCheck) was computed without consulting contributor confirmation — the confirmed-contributor check only gated the public comment, never the Gate. It also blocked on missing linked issues (issues aren't always available) and on the app's own sync state (repo_not_cached/pr_not_cached→action_required).All installed repos are gittensor-registered, so the only axis that matters is the contributor: confirmed gittensor miner vs. not.
Changes (Phase A)
official.status === "confirmed"into the gate policy (gateCheckPolicy→evaluateGateCheck). Any non-confirmed author gets a neutral, non-blocking gate + the existing minimal advisory comment, regardless of which blockers fired.repo_not_registered/repo_not_seen/pr_not_cachednow resolve to a neutral "not evaluated yet" gate that re-runs automatically, instead ofaction_required.linkedIssueGateModedefaults toadvisory(opt-in to block). Duplicates still block by default.The PR readiness panel mirrors the same confirmed-gated conclusion (it already receives the real gate evaluation), and app-state renders as non-blocking "Not blocking / Advisory" instead of "App action required".
Behavior matrix
Validation (from repo root)
npm run typecheck— cleannpx vitest run— 1571 passed, 1 skippednpm run test:coverage— statements 99.0% / branches 97.0% / functions 98.5% / lines 99.7% (≥97% gate)npm run test:workers— passnpm run ui:openapi:check— no driftgit diff --check— cleanNew/updated tests: gate neutral for non-confirmed authors regardless of blockers; failure only for a confirmed author + opted-in blocker; app-state neutral; clear single/multi blocker titles; end-to-end confirmed-contributor block through the queue.
Notes
gittensory-apiWorkers Builds connection on merge to main..gittensory.ymlauthoritative config + deterministic opt-in blockers) and Phase C (dual-AI review) follow separately.