Repository navigation
Skip a Blockquoted List Marker in the Prose Gate's Semicolon Rule - #2128
Conversation
The semicolon rule read a blockquoted bullet's `**Label**:` opener as a colon announcing a list, since LABEL_COLON is anchored at the line start and does not see a marker after `>`. The quote prefix is now blanked once, before both prose rules, so a quoted line is judged as the same line unquoted. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository: ptr727/ProjectTemplate/.coderabbit.yaml Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (2)
Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthroughThe prose linter now removes blockquote prefixes before semicolon and dash checks. Added tests cover label-colon constructs, comma-separated list exemptions, and semicolon handling in blockquoted table cells. ChangesProse lint behavior
Priority: ⬇️ Low Estimated code review effort: 2 (Simple) | ~8 minutes Merge Risk: ⚪ Minimal · up to The change narrowly adjusts prose checks for blockquotes, with tests covering the stated semicolon cases. No merge-blocking behavior or integration risk is evident. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #2128 +/- ##
==========================================
Coverage ? 56.47%
==========================================
Files ? 16
Lines ? 7455
Branches ? 0
==========================================
Hits ? 4210
Misses ? 3245
Partials ? 0
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Copilot review overview
🟢 Approval recommended
The two-line behavioral change is narrowly scoped, leaves the dash rule provably identical, and is fully covered by new tests whose expected outcomes I independently verified.
Review effort: Balanced
Findings: None
What changed in this PR
This PR fixes a false negative in the prose gate's semicolon rule (.github/actions/prose-gate/prose_lint.py). The rule previously read a blockquoted bullet's **Label**: opener as announcing a list, so a spliced semicolon on a > - **Label**: ... line was wrongly excused. The root cause is the same one the dash rule already handles: LABEL_COLON (and the table-cell split in list_spans) is anchored at line start and cannot see a list marker that follows a > blockquote prefix. The fix hoists the existing QUOTE_PREFIX blanking so it runs once before both Markdown prose rules, and feeds the blanked line into list_spans for the semicolon rule.
Changes:
- Compute
unquoted(blockquote prefix blanked) once before both thesemicolonanddashrules, and pass it tolist_spansin the semicolon path so blockquoted bullets and table rows are judged as if unquoted. - Leave the
dashrule reading the identicalunquotedvalue it computed before, so its behavior is unchanged. - Add tests covering each reproduction row, nested/ordered quoted bullets, a quoted list that keeps its exemption, and quoted vs unquoted table rows.
| File | Description |
|---|---|
.github/actions/prose-gate/prose_lint.py |
Moves QUOTE_PREFIX blanking ahead of both prose rules and switches the semicolon rule's list_spans input from prose to unquoted, fixing the blockquoted-label false negative without changing the dash rule. |
tests/test_prose_lint.py |
Adds three test methods asserting blockquoted label bullets are flagged, blockquoted non-list lines keep their exemptions, and blockquoted table rows are judged per cell. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
@coderabbitai review |
✅ Action performedReview finished.
|
… a Second Site's Verify Token Pair, With Fifteen More (#2175) ## Summary Promotes develop to main, carrying these pull requests: - [#2172](#2172) Accept Letters in Recorded Names in the Charset Rule and Prose Gate - [#2173](#2173) Forward a Second Site's Token Pair to the Deploy-Site Verify Hook - [#2169](#2169) Record HomeAutomation-Config's Merge-Bot and Gate Adoption in the Rollout Tracking - [#2164](#2164) Pass --no-project to the Pre-Commit Snippet's uv run Hooks - [#2161](#2161) Stop Crediting an until read Loop as Bounded in the Guard - [#2158](#2158) Drop the Path Argument From the Pre-Commit Snippet's Mypy Swap - [#2155](#2155) Reword the Canonical CRLF-Exception Comments for a Carrier's Own Pin - [#2153](#2153) End the Guard's Stdin Redirect Scan at a Reserved Word - [#2150](#2150) Describe the Pip Form Consistently Across python-codestyle - [#2144](#2144) Read the Run Id From the Runner's Environment in the Artifact-Cleanup Steps - [#2142](#2142) Diff a Merge Commit's Prose Against Its Merged-In Parent in the Pre-Commit Hook - [#2136](#2136) Qualify the Local Review Skill's Merge-Base Command to Match the Engine - [#2134](#2134) Quote the Bare Placeholder in skills_install.py's Usage Block - [#2132](#2132) Write the Hub-Checkout Reach Into the session-handoff Chain Commands - [#2130](#2130) Name the Missing build-system Condition in the Lint-Only Profile Bullet - [#2128](#2128) Skip a Blockquoted List Marker in the Prose Gate's Semicolon Rule - [#2119](#2119) State the Three Gaps D4.7's Supersede-and-Dispatch Step Leaves Open ## Closes Closes #2100 Closes #2031 Closes #1779 Closes #2148 Closes #1633 Closes #1188 Closes #1992 Closes #2032 Closes #2052 Closes #1481 Closes #2116 Closes #2107 Closes #2097 Closes #1512 Closes #2026 Closes #2101 Closes #2009 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Deployment verification can now check a second site using its own optional authentication token. * **Documentation** * Updated writing guidance to preserve the spelling and diacritics of recorded names. * Clarified Python project setup, formatting and testing guidance, and line-ending rules. * Expanded deployment and publishing guidance, including scenarios where publishing runs overlap. * **Bug Fixes** * Prose checks now handle quoted lists and tables more accurately, and merge checks avoid flagging comments brought in from the merged branch. * Improved checks for shell loops that read redirected input. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
Summary
The prose gate's
semicolonrule read a blockquoted bullet's**Label**:opener as a colon announcing a list, so a spliced semicolon on that bullet passed.LABEL_COLONis anchored at the line start and does not see a list marker after a>prefix, the root cause the dash rule'sQUOTE_PREFIXblanking already handles.check_filenow blanks the quote prefix once, before both Markdown prose rules, and the semicolon rule'slist_spansreads that unquoted line. The dash rule reads the same value it did before.list_spansreads the same unquoted line.Closes on promotion: #2101
Verification
python3 -m unittest discover -s tests: 1859 tests pass.spec/validate.py: pass.local-strict-review: one pass over the full diff, 0 findings.🤖 Generated with Claude Code
Summary by CodeRabbit