feat(signals): slop signal — no linked issue without rationale (#562)#962
Conversation
…ored#562) Adds the deterministic no-linked-issue-without-rationale slop signal, the remaining sibling of the JSONbored#563/JSONbored#564 deterministic slop signals. Fires only when the caller reports no linked issue (hasLinkedIssue: false), the PR body carries no clear no-issue rationale, and the repo is not in the issue-discovery lane — high-precision and false-positive-averse like the other deterministic signals. Reuses the engine's hasClearNoIssueRationale so this signal and the public PR-panel traceability check share one definition of a rationale. Exposed through the /v1/lint/slop-risk route and the check_slop_risk MCP tool; deterministic, metadata-only, public-safe output preserved. Closes JSONbored#562.
🔍 Maintainer reviewReviewed 5 file(s) — ✅ all CI green. Suggested action: ✅ Safe to merge — both reviewers found no blocking issues. Reviewer A · Suggestions
Reviewer B · No blocking issues spotted. |
|
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. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #962 +/- ##
=======================================
Coverage 96.63% 96.63%
=======================================
Files 110 110
Lines 15028 15036 +8
Branches 5428 5433 +5
=======================================
+ Hits 14522 14530 +8
Misses 104 104
Partials 402 402 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
ghost
left a comment
There was a problem hiding this comment.
Held for maintainer (guardrail_area) — correct + CI green
Summary
Implements the no-linked-issue-without-rationale deterministic slop signal (#562) — the remaining sibling of the #563 (duplicate-cluster) and #564 (generic/empty commit) deterministic signals.
Behaviour
buildNoLinkedIssueRationaleFindingfires only when all hold (high-precision, false-positive-averse like the other deterministic signals):hasLinkedIssue: false— absent/undefineddata is never a signal),issueDiscoveryLane !== true), where unlinked PRs are expected.Weighted 15 — a traceability/weak-effort signal, consistent with
emptyDescription/lowQualityCommitMessage.Reuse
Reuses
hasClearNoIssueRationale(now exported fromsignals/engine.ts) so this signal and the public PR-panel traceability check share one definition of a rationale (maintenance / docs-only / "no issue: …").Surface
Threaded through the
/v1/lint/slop-riskroute and thecheck_slop_riskMCP tool via two new optional inputs (hasLinkedIssue,issueDiscoveryLane); deterministic, metadata-only, public-safe output preserved.Testing
npx vitest run test/unit/slop.test.ts→ 34 passed (3 new feat(signals): slop signal — no linked issue without rationale #562 cases)npx tsc --noEmit→ cleangit diff --check→ cleanCloses #562.