Skip to content

feat(signals): slop signal — generic/empty commit message (#564) - #938

Merged
JSONbored merged 1 commit into
JSONbored:mainfrom
oktofeesh1:feat/issue-564-commit-message-slop
Jun 20, 2026
Merged

feat(signals): slop signal — generic/empty commit message (#564)#938
JSONbored merged 1 commit into
JSONbored:mainfrom
oktofeesh1:feat/issue-564-commit-message-slop

Conversation

@oktofeesh1

Copy link
Copy Markdown
Contributor

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)

  • Reuses the feat(mcp): gittensory_lint_pr_text (commit/PR-body rubric linter) #549 lint tool's GENERIC_COMMIT_PATTERN — now exported from engine.ts so 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").
  • 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.
  • Surfaced on the two lint self-check entry points that already mirror each other — POST /v1/lint/slop-risk and the gittensory_check_slop_risk MCP tool — via an optional commitMessages field. (The PR-gate path is unchanged; it has no commit-message data without an extra fetch.)

Tests

test/unit/slop.test.ts: generic → fires (band low, weight 15); specific / no-data → clean; supplied-but-all-blank → empty; first-non-blank is the judged primary. Full npm run test:coverage green (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

)

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>
@oktofeesh1
oktofeesh1 requested a review from JSONbored as a code owner June 20, 2026 16:20
@dosubot dosubot Bot added the size:M 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 #938 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

⚠️ Contributor trust inconclusive. Click here for more info: Superagent Dashboard

@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 PR adds a new slop signal for generic/empty commit messages. It correctly exports the shared regex, updates the assessment input type, schema definitions, and risk calculation, and includes comprehensive unit tests. No security concerns, no forbidden public terms, and no external fetches are introduced. The change is functionally sound and maintains existing behavior when commit data is absent.

Suggestions

  • Update API documentation/OpenAPI spec to include the new commitMessages field.
  • Consider adding a migration note if any persisted data structures rely on the slop request shape.
  • Verify that the band classification thresholds still meet product expectations after the added weight.

Worth double-checking

  • The added 15‑point weight may shift PRs into a lower slop band, potentially increasing false‑positive warnings.
  • Clients that construct slop risk requests must now optionally include commitMessages; missing this field is safe but may affect downstream tooling.

Reviewer B · nemotron-3-120b-a12b — recommends ✅ merge
The PR adds a new 'slop' signal for low-quality commit messages (generic/empty). Changes are localized: updated SlopAssessmentInput type, added buildLowQualityCommitMessageFinding function, updated weights/rubric, exported GENERIC_COMMIT_PATTERN for sharing, and added optional commitMessages field to API/MCP schemas. Tests cover new behavior including edge cases. Implementation correctly handles public/private boundary: publicText uses static/detail strings without interpolating commit messages, avoiding forbidden terms. No external fetches or security risks observed. Weight assignment (15) consistent with existing signals. All changes appear correct and well-tested.

No blocking issues spotted.

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

Copy link
Copy Markdown
Contributor

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

@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.62%. Comparing base (8d4d356) to head (055e1f6).
⚠️ Report is 1 commits behind head on main.

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

@dosubot dosubot Bot added the lgtm label Jun 20, 2026
@JSONbored
JSONbored merged commit ec0b69b into JSONbored:main Jun 20, 2026
17 checks passed
@github-actions github-actions Bot mentioned this pull request Jun 20, 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 — low-quality commit messages

2 participants