Parent roadmap: #525
Parent phase: #544
Background
Low-effort / AI-slop PRs often have generic commit messages and empty PR bodies. A deterministic linter can catch this pre-submit and feeds the slop core (#530).
Goal
New MCP tool gittensory_lint_pr_text that scores a commit message + PR body against the gittensor traceability/no-issue-rationale rubric.
Current Behavior
No PR-text linter; the slop core (#530) lists "low-quality commit messages" as a signal but there is no standalone tool.
Desired Behavior
Input { commitMessages, prBody, linkedIssue? }. Returns a quality verdict + specific fixes. Reuses hasClearNoIssueRationale (engine.ts:3895), STOPWORDS (:672), and the traceability component of buildPublicReadinessScore (:3463).
Implementation Requirements
Public/Private Output Boundaries
- Public-safe verdict + fixes only.
Acceptance Criteria
- Generic/empty text → low verdict with specific fixes; descriptive, issue-linked text → high.
Testing Requirements
npm run test:ci, 97%+ coverage. Fixtures across template/generic/descriptive text.
Parent roadmap: #525
Parent phase: #544
Background
Low-effort / AI-slop PRs often have generic commit messages and empty PR bodies. A deterministic linter can catch this pre-submit and feeds the slop core (#530).
Goal
New MCP tool
gittensory_lint_pr_textthat scores a commit message + PR body against the gittensor traceability/no-issue-rationale rubric.Current Behavior
No PR-text linter; the slop core (#530) lists "low-quality commit messages" as a signal but there is no standalone tool.
Desired Behavior
Input
{ commitMessages, prBody, linkedIssue? }. Returns a quality verdict + specific fixes. ReuseshasClearNoIssueRationale(engine.ts:3895),STOPWORDS(:672), and thetraceabilitycomponent ofbuildPublicReadinessScore(:3463).Implementation Requirements
src/mcp/server.ts+ package bin;outputSchema; deterministic. Share helpers with feat(signals): deterministic slop-assessment core #530.Public/Private Output Boundaries
Acceptance Criteria
Testing Requirements
npm run test:ci, 97%+ coverage. Fixtures across template/generic/descriptive text.