Skip to content

feat(review): add review.min_finding_severity display floor for inline findings - #3718

Merged
loopover-orb[bot] merged 1 commit into
JSONbored:mainfrom
luciferlive112116:feat/review-min-finding-severity-2048
Jul 6, 2026
Merged

feat(review): add review.min_finding_severity display floor for inline findings#3718
loopover-orb[bot] merged 1 commit into
JSONbored:mainfrom
luciferlive112116:feat/review-min-finding-severity-2048

Conversation

@luciferlive112116

Copy link
Copy Markdown
Contributor

Closes #2048

Summary

  • Parse review.min_finding_severity (critical | major | minor | nitpick) from the focus manifest with round-trip support.
  • Add a pure severity-floor helper and apply it when selecting inline PR comments (display-only — gate blockers are unaffected).
  • Document the knob in gittensory.full.yml and keep .gittensory.yml.example in sync.

Validation

  • npm run typecheck
  • npx vitest run test/unit/finding-severity-filter.test.ts test/unit/inline-comments.test.ts test/unit/focus-manifest.test.ts test/unit/config-templates.test.ts

UI Evidence

N/A

…e findings

Co-authored-by: Cursor <cursoragent@cursor.com>
@superagent-security

Copy link
Copy Markdown
Contributor

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

@loopover-orb loopover-orb Bot added the gittensor:feature Gittensor-scored feature linked to a feature issue — scores a 0.25x multiplier. label Jul 6, 2026
@loopover-orb

loopover-orb Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Warning

🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨

⏸️ Gittensory review result - manual review recommended

Review updated: 2026-07-06 06:12:19 UTC

11 files · 1 AI reviewer · no blockers · readiness 62/100 · CI green · clean

⏸️ Suggested Action - Manual Review

Review summary
This PR adds a display-only `review.min_finding_severity` floor: a new pure helper module maps inline finding severities onto a 4-tier ladder, `selectInlineComments`/`postInlineReviewComments`/`maybePostInlineComments` thread the resolved floor through, and `processors.ts` wires the manifest value end-to-end without touching gate-blocker logic. The manifest parse/serialize/resolve path follows the exact existing pattern used for `findingCategories` (parse → default-null → JSON round-trip → resolveReviewPromptOverrides), and tests cover parsing, invalid-value warnings, round-trip, and the inline-comment filtering behavior. One real design gap: `InlineFinding.severity` is only `blocker`/`nit`, and `inlineFindingSeverityTier` maps those onto the ladder's two extremes (critical/nitpick), so for inline comments a floor of `major` and `critical` behave identically, and `minor` and `nitpick` behave identically — the 4-value config exposes granularity the inline path can't actually honor.

Nits — 4 non-blocking
  • src/review/finding-severity-filter.ts:24 `inlineFindingSeverityTier` collapses the 4-level `min_finding_severity` ladder onto just two effective thresholds for inline comments (blocker→critical, nit→nitpick), so `major`/`critical` and `minor`/`nitpick` produce identical filtering — worth a one-line doc callout in `.gittensory.yml.example`/`gittensory.full.yml` so operators aren't surprised picking `minor` vs `nitpick` does nothing differently.
  • test/unit/focus-manifest.test.ts references `normalizeOptionalEnum` for parsing `min_finding_severity` but its definition isn't shown in this diff — worth confirming it already exists with the same `(value, field, allowedValues, warnings)` signature used here (the file wasn't fully visible to check).
  • Consider a short note in the config comment blocks (`.gittensory.yml.example:400`, `gittensory.full.yml:413`) clarifying that inline comments currently only distinguish two severity buckets (blocker vs. nit), so `major` and `minor` settings only matter once other finding types with real major/minor granularity are wired to this floor.
  • Readiness score is below the configured threshold — Use the readiness panel as advisory maintainer context; the score does not block this PR.
Signal Result Evidence
Code review ✅ No blockers 1 reviewer
Linked issue ✅ Linked #2048
Related work ⚠️ 3 scoped overlaps Top overlaps are listed below; lower-confidence bulk is hidden.
Change scope ❌ 8/20 High review scope from cached public metadata (1 linked issue).
Validation posture ❌ 5/25 Preflight is holding this PR: the review lane is unavailable, so it is not ready for automated review.
Contributor workload ✅ 10/10 Author activity: 180 registered-repo PR(s), 94 merged, 18 issue(s).
Contributor context ✅ Confirmed Gittensor contributor luciferlive112116; Gittensor profile; 180 PR(s), 18 issue(s).
Gate result ✅ Passing No configured blocker found.
Review context
  • Author: luciferlive112116
  • Role context: outside_contributor
  • Public audience mode: oss maintainer
  • Lane context: Repository registration is not available in the local Gittensory cache.
  • Public profile languages: JavaScript, MDX, Python, Rust, TypeScript
  • Official Gittensor activity: 180 PR(s), 18 issue(s).
  • Related work: Titles/paths share 7 meaningful terms. (issue #2051, issue #2048)
  • Related work: Titles/paths share 7 meaningful terms. (issue #2049, issue #2048)
  • Related work: Titles/paths share 8 meaningful terms. (issue #2047, issue #2048)
Contributor next steps
  • Review top overlaps.
  • Add a concise scope and risk note.
  • Await review-lane availability.
  • Refresh registry data or choose a registered active repo.
  • Check active issues and PRs before submitting.
Signal definitions
  • Related work = same linked issue, overlapping active PRs, or title/path similarity.
  • Change scope = cached public metadata such as size labels, draft state, and review-burden hints.
  • Validation posture = whether the PR provides enough public validation/test evidence for maintainer review.
  • Contributor workload = public contributor activity and cleanup pressure, not a repo-wide quality failure.
  • Contributor context = public GitHub/Gittensor identity context; non-Gittensor status is not a blocker.

🟩 Safe / merged · 🟦 Advisory · 🟨 Held for review · 🟥 Blocked / closed


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

  • Re-run Gittensory review

@codecov

codecov Bot commented Jul 6, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 93.38%. Comparing base (51569e4) to head (562d795).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #3718   +/-   ##
=======================================
  Coverage   93.37%   93.38%           
=======================================
  Files         316      317    +1     
  Lines       32296    32309   +13     
  Branches    11841    11848    +7     
=======================================
+ Hits        30158    30171   +13     
  Misses       1507     1507           
  Partials      631      631           
Files with missing lines Coverage Δ
src/queue/processors.ts 94.07% <100.00%> (+<0.01%) ⬆️
src/review/finding-severity-filter.ts 100.00% <100.00%> (ø)
src/review/inline-comments.ts 100.00% <100.00%> (ø)
src/signals/focus-manifest.ts 99.09% <100.00%> (+<0.01%) ⬆️
🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@loopover-orb loopover-orb Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Gittensory approves — the gate is satisfied and CI is green.

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(config): add review.min_finding_severity threshold knob

1 participant