Problem
A contributor can currently slice one tracked issue across several small, unlinked PRs to avoid the
scrutiny a linked issue invites (issue-scope review, duplicate-PR detection), while still accumulating
merge-ratio credibility upstream in entrius/gittensor. This repo has no visibility into "this PR
silently solves an existing open issue that was never linked."
Proposal
Add an opt-in, off-by-default guardrail:
- A cheap deterministic pre-filter over the repo's open issues (title/body/changed-path token overlap)
narrows to a handful of plausible candidates.
- The free/self-host AI reviewer (never BYOK, matching
ai-review.ts's existing block-mode rule)
verifies whether the PR actually, substantively solves one of those candidates.
- A first confirmed match holds the PR for manual review — informational only, never auto-closes.
- A confirmed repeat by the same contributor (tracked via the existing
audit_events ledger, 90-day
window, scoped across all repos) escalates to an actual close, since a repeated pattern is no longer a
coincidence.
- New
.gittensory.yml knob: settings.unlinkedIssueGuardrail: { mode: off|hold, minConfidence },
defaulting fully off so no existing repo's behavior changes until a maintainer opts in.
This does not touch upstream scoring — it only gives a maintainer visibility into this specific,
narrow pattern before merge, without penalizing the common case of a standalone fix with nothing to
link, and without treating one coincidental match as grounds for a close.
Problem
A contributor can currently slice one tracked issue across several small, unlinked PRs to avoid the
scrutiny a linked issue invites (issue-scope review, duplicate-PR detection), while still accumulating
merge-ratio credibility upstream in
entrius/gittensor. This repo has no visibility into "this PRsilently solves an existing open issue that was never linked."
Proposal
Add an opt-in, off-by-default guardrail:
narrows to a handful of plausible candidates.
ai-review.ts's existing block-mode rule)verifies whether the PR actually, substantively solves one of those candidates.
audit_eventsledger, 90-daywindow, scoped across all repos) escalates to an actual close, since a repeated pattern is no longer a
coincidence.
.gittensory.ymlknob:settings.unlinkedIssueGuardrail: { mode: off|hold, minConfidence },defaulting fully off so no existing repo's behavior changes until a maintainer opts in.
This does not touch upstream scoring — it only gives a maintainer visibility into this specific,
narrow pattern before merge, without penalizing the common case of a standalone fix with nothing to
link, and without treating one coincidental match as grounds for a close.