Repository navigation
fix(pre-merge): judge whole PR; don't fail unverifiable checks - #184
Conversation
… see their files - Run pre-merge checks against the full PR file set (same as walkthrough and drift), not the incremental slice, and name the files the model can't see. - Add an "inconclusive" outcome: a check that applies but whose evidence isn't visible no longer fails the `DiffSentry / Pre-Merge` status. Checks that don't apply pass as "Not applicable". Unreadable model answers are inconclusive instead of a silent pass. - Status description names the failing checks; ship check shows each failing status's description. - Escape table cells; run custom checks concurrently.
|
📝 WalkthroughWalkthroughPre-merge checks were updated to evaluate the full PR and distinguish evidenced failures from inconclusive evaluations. Status and ship-check output now identify the specific checks responsible for warnings or blockers. ChangesPre-merge evaluation
Status reporting
Sequence Diagram(s)sequenceDiagram
participant Reviewer
participant AI
participant GitHub
Reviewer->>AI: Send full PR context and check prompt
AI-->>Reviewer: pass fail or inconclusive JSON
Reviewer->>Reviewer: Render results and derive status
Reviewer->>GitHub: Publish named pre-merge status
sequenceDiagram
participant Ship
participant GitHub
participant Author
Ship->>GitHub: Read commit statuses
GitHub-->>Ship: Context and description
Ship-->>Author: Show blocker with check details
Change: Bug fix Estimated code review effort: 🎯 3 (Moderate) | ⏱️ ~30 minutes Suggested labels: Risk factors — 10/100, 🟢 Low
Test coverage signal 🟢 183 prod / 128 test lines added.
✍️ Commit message coach 1 of 3 commit messages could be stronger.
Tip: imperative mood ( 📊 Confidence breakdown 1 finding — 🟢 0 high · 🟡 1 medium · 🔴 0 low. Treat the medium / low ones as hypotheses to verify. Merge Risk: 🟢 Low · 10/100 · up to Driven by Major findings (+5) and Moderate change (+5). Full breakdown in the walkthrough. 🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (2 warnings)
✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in your ✨ Finishing Touches🧪 Generate unit tests (beta)
📝 Generate docstrings (beta)
🧹 Simplify (beta)
🪄 Autofix unresolved comments (beta)
Comment |
📌 Status — last updated
|
| Risk score | 10/100 (Low) ▁█▄ |
| Unresolved threads | 1 (1 blocking) |
| Failing checks | 0 |
| Pending checks | 1 |
| Files reviewed | 2 (3 skipped) |
| Updated | 2026-10-08 23:31Z |
Live-updated by DiffSentry on every push. Use @diffsentry ship for a verdict, @diffsentry timeline for full history.
cell() escaped `|` but not `\`, so an input `\|` rendered as `\|` — an escaped backslash followed by a bare pipe, which still split the cell (CodeQL js/incomplete-sanitization). Escape backslashes first. Check names come from repo config and went into the tables raw; a name with `|` or a newline broke the row. Run them through cell() too.
|
Title coach (walkthrough, no fingerprint): the PR title was 85 characters. Fixed: shortened to The commit-message coach flagged the same 85-char subject on |
A fail with an empty message cites no evidence; treat it (and a bare legacy
{"passed": false}) as inconclusive so it can't turn the status red on
nothing. Also pin that title/description checks set to `off` emit no result.
There was a problem hiding this comment.
Actionable comments posted: 1
🪄 Autofix (Beta)
Fix all unresolved DiffSentry comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: .diffsentry.yaml
Review profile: ASSERTIVE
Run ID: b88e3400-528c-408e-b25d-ad1edfe7eea4
📥 Commits
Reviewing files that changed from b35c21c to 77ee277. Previously-reviewed commits are not re-reviewed.
📒 Files selected for processing (2)
src/pre-merge.tstests/unit/pre-merge.test.ts
🚧 Files skipped from review as they are similar to previous changes (3)
src/reviewer.tssrc/ship-check.tssrc/types.ts
Release NotesNew features
Improvements
Bug fixes
Drafted automatically once the review of |
What
DiffSentry / Pre-Mergewas turning red on PRs because of checks that had nothing to evaluate. One example is Interact-Event-Productions/atlas#361. Its twoerror-mode custom checks reported "Cannot verify — files not shown", and that counted as a failure. The ship check then reported the PR as blocked by DiffSentry's own status.Why it happened
Changes
walkthroughContext). The model is told which files are in the PR but not shown to it: ignored, over the file cap, path-filtered, or omitted by the size budget.Failed: alembic-revision-id-length, orPassed with 1 warning: PR Title. Capped at 140 characters.Verification
tsc --noEmitis clean.tests/unit/pre-merge.test.tscovers the #361 case, along with parsing, the status description, and rendering.ship-check.test.tsstill passes: 49/49 across both files.parity-corpus,parity-fixture,learnings-provenanceandthread-resolved-note. The same 7 fail on unmodifiedmainon Windows, so this change didn't cause them.Summary
Pre-merge checks were updated to evaluate the full PR and distinguish evidenced failures from inconclusive evaluations. Status and ship-check output now identify the specific checks responsible for warnings or blockers.
Changes
src/pre-merge.tssrc/reviewer.tssrc/ship-check.tssrc/types.tstests/unit/pre-merge.test.ts