feat(signals): slop signal — generic/empty commit message (#564) - #938
Conversation
) Adds the low-quality-commit-message deterministic slop signal (epic JSONbored#530). Fires when commit-message data is supplied and the primary subject is empty/whitespace or is entirely a generic low-effort word (wip / fix / update / "." ...). - Reuses the JSONbored#549 lint tool's GENERIC_COMMIT_PATTERN (now exported from engine) so the gate and the lint advisory agree on what counts as "generic" — one source of truth, no drift. - High-precision / false-positive-averse (this score can gate): a specific subject never trips it, even one that isn't a Conventional Commit; only a bare generic word that IS the whole subject does. No commit data → no signal. - Weighted 15 (a secondary weak-effort signal, like empty-description); static, public-safe detail text. - Exposed on the two lint self-check surfaces that already mirror each other: POST /v1/lint/slop-risk (slopRiskSchema) and the gittensory_check_slop_risk MCP tool (checkSlopRiskShape), via an optional `commitMessages` field. Tests cover generic → fires, specific/none → clean, all-blank → empty, and first-non-blank primary selection. Full test:coverage green (branches 97.03%). Closes JSONbored#564 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
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. |
|
|
🔍 Maintainer reviewReviewed 5 file(s) — ✅ all CI green. Suggested action: ✅ Safe to merge — both reviewers found no blocking issues. Reviewer A · Suggestions
Worth double-checking
Reviewer B · No blocking issues spotted. |
|
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 #938 +/- ##
=======================================
Coverage 96.62% 96.62%
=======================================
Files 110 110
Lines 14988 14997 +9
Branches 5414 5419 +5
=======================================
+ Hits 14482 14491 +9
Misses 104 104
Partials 402 402 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Closes #564 (epic #530 deterministic slop signals).
What
Adds the low-quality-commit-message slop signal. It fires when commit-message data is supplied and the primary subject is empty/whitespace, or is entirely a generic low-effort word (wip / fix / update / "." …).
How (high-precision, reuses #549)
GENERIC_COMMIT_PATTERN— now exported fromengine.tsso the gate and the lint advisory share one definition of "generic" (no drift, per the issue's "shared with feat(mcp): gittensory_lint_pr_text (commit/PR-body rubric linter) #549 lint tool").POST /v1/lint/slop-riskand thegittensory_check_slop_riskMCP tool — via an optionalcommitMessagesfield. (The PR-gate path is unchanged; it has no commit-message data without an extra fetch.)Tests
test/unit/slop.test.ts: generic → fires (bandlow, weight 15); specific / no-data → clean; supplied-but-all-blank → empty; first-non-blank is the judged primary. Fullnpm run test:coveragegreen (branches 97.03%); new lines fully covered; output stays public-safe.Files:
engine.ts(1-line export),slop.ts(signal),routes.ts+server.ts(1-line schema each), slop test.🤖 Generated with Claude Code