Skip to content

feat(signals): slop signal — no linked issue without rationale (#562)#962

Merged
JSONbored merged 2 commits into
JSONbored:mainfrom
jaso0n0818:content/slop-562-no-linked-issue-rationale
Jun 21, 2026
Merged

feat(signals): slop signal — no linked issue without rationale (#562)#962
JSONbored merged 2 commits into
JSONbored:mainfrom
jaso0n0818:content/slop-562-no-linked-issue-rationale

Conversation

@jaso0n0818

Copy link
Copy Markdown
Contributor

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

buildNoLinkedIssueRationaleFinding fires only when all hold (high-precision, false-positive-averse like the other deterministic signals):

  • the caller reports no linked issue (hasLinkedIssue: false — absent/undefined data is never a signal),
  • the PR body carries no clear no-issue rationale, and
  • the repo is not in the issue-discovery lane (issueDiscoveryLane !== true), where unlinked PRs are expected.

Weighted 15 — a traceability/weak-effort signal, consistent with emptyDescription / lowQualityCommitMessage.

Reuse

Reuses hasClearNoIssueRationale (now exported from signals/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-risk route and the check_slop_risk MCP tool via two new optional inputs (hasLinkedIssue, issueDiscoveryLane); deterministic, metadata-only, public-safe output preserved.

Testing

Closes #562.

…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.
@jaso0n0818
jaso0n0818 requested a review from JSONbored as a code owner June 20, 2026 21:55
@ghost ghost added the gittensor:feature Gittensor-scored feature linked to a feature issue — scores a 0.25x multiplier. label Jun 20, 2026
@ghost

ghost commented Jun 20, 2026

Copy link
Copy Markdown

🔍 Maintainer review

Reviewed 5 file(s) — ✅ all CI green.

Suggested action:Safe to merge — both reviewers found no blocking issues.

Reviewer A · gpt-oss-120b — recommends ✅ merge
The change adds a well‑scoped slop signal for PRs that lack a linked issue and a clear rationale. Types are extended safely, the new helper is exported for shared use, schemas are updated with optional fields, and comprehensive unit tests cover the new behavior. No security or public‑private boundary violations are introduced, and existing functionality is unaffected. CI failures are not reported. Minor nit: ensure the test file imports FORBIDDEN_PUBLIC_TERMS if not already present.

Suggestions

  • Verify that FORBIDDEN_PUBLIC_TERMS is imported in test/unit/slop.test.ts to avoid test failures.
  • Consider adding documentation/comments about the new Slop signal in the public API docs.
  • Run the full test suite to confirm no unrelated type errors arise from the added optional fields.

Reviewer B · nemotron-3-120b-a12b — recommends ✅ merge
The PR adds a new 'no linked issue without rationale' signal to the slop assessment with appropriate weights, rubric updates, and logic. Changes are localized to signals/engine, use existing helper functions, maintain public/private boundary (publicText uses safe language), and include comprehensive tests. Zod schemas updated backward-compatibly with optional fields. No blockers identified.

No blocking issues spotted.

@ghost ghost added the reviewbot-review label Jun 20, 2026
@ghost

ghost commented Jun 20, 2026

Copy link
Copy Markdown

Note

Gittensory Gate skipped

PR closed before full evaluation. No late first comment was created.

Signal Result Evidence Action
Gate result ⚠️ Skipped #962 is no longer open. No action.

💰 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.

@ghost ghost added the gittensory:reviewed label Jun 20, 2026
@superagent-security

Copy link
Copy Markdown
Contributor

Superagent didn't find any vulnerabilities or security issues in this PR.

@dosubot dosubot Bot added the size:M label Jun 20, 2026
@codecov

codecov Bot commented Jun 20, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 96.63%. Comparing base (3baa00d) to head (e4954e4).
⚠️ Report is 2 commits behind head on main.

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.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@ghost ghost closed this Jun 20, 2026
@ghost ghost removed the reviewbot-review label Jun 20, 2026
@JSONbored JSONbored reopened this Jun 21, 2026
@ghost ghost added the reviewbot-review label Jun 21, 2026

@ghost ghost left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Held for maintainer (guardrail_area) — correct + CI green

@dosubot dosubot Bot added the lgtm label Jun 21, 2026
@JSONbored
JSONbored merged commit 0eee559 into JSONbored:main Jun 21, 2026
17 checks passed
@github-actions github-actions Bot mentioned this pull request Jun 21, 2026
12 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

gittensor:feature Gittensor-scored feature linked to a feature issue — scores a 0.25x multiplier.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(signals): slop signal — no linked issue without rationale

2 participants