Skip to content

Count Sentences in Markdown Table Cells for the Sentence-Length Check - #3654

Merged
ptr727 merged 6 commits into
developfrom
feature/auto-3456
Oct 30, 2026
Merged

ptr727 merged 6 commits into
developfrom
feature/auto-3456

Conversation

@ptr727

@ptr727 ptr727 commented Oct 30, 2026 •

Copy link
Copy Markdown
Owner

Summary

The prose gate's sentence-length rule read only paragraph inline units. So a sentence in a Markdown table cell was never counted. A table cell holds prose as a paragraph does. So each header and body cell is now its own sentence block, held to the same cap. Two short cells on one row never join into one sentence. A blockquoted table stays unread, as a blockquoted paragraph already is.

  • .github/actions/prose-gate/prose_lint.py: extract_markdown builds a paragraph unit for each inline token under th_open or td_open, as it already did under paragraph_open. sentence-length is the only rule reading paragraph units, so no other rule starts reading cells.
  • tests/test_prose_lint.py: new cases cover a body cell, a header cell, and two cells on one row judged apart. The structure test drops its table-row case, the exemption this issue ends.
  • The table cells the stricter check reported in hub-authored content are reworded under the cap. Those cells are in AGENTS.md, WORKFLOW.md section 5, the local-strict-review skill, catalog/snippets/workflows/README.md, docs/host-setup.md, host-setup/windows/README.md, and scripts/README.md. The skill distributions are regenerated with scripts/build_dist.py.

Downstream effect. Carriers fetch the prose gate from the hub's main. Once this is promoted, a change touching a table row whose cell holds an over-cap sentence fails the gate there. The composite action runs diff-scoped, so only touched rows are read. That is the intended effect of the fix.

Closes on promotion: #3456

Verification

  • The issue's repro now reports both probe.md:5 (the cell) and probe.md:7 (the paragraph).
  • python3 scripts/prose_lint.py . over the whole tree reports no violations.
  • python -m unittest discover -s tests passes on the final head. Its one failure on the first commit was the old table-row exemption this change ends.
  • scripts/build_dist.py --check reports the generated distributions current. Docker markdownlint, cspell, and editorconfig-checker pass, and so do ruff check and ruff format.
  • Six local-strict-review passes ran over the whole diff. Each of the first five found meaning drift or an ambiguous pronoun in a reworded cell, fixed in the commit after it. The sixth found no defect in this change.

Pre-existing findings, filed

🤖 Generated with Claude Code

ptr727 and others added 3 commits October 30, 2026 02:55
The prose gate's sentence-length rule read only paragraph inline
units, so a sentence in a Markdown table cell was never counted. Each
header and body cell is now its own sentence block, held to the same
cap as a paragraph, and two short cells on one row never join.

Rewords the table cells in hub-authored content that the stricter
check reports, regenerating the skill distributions from their sources.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Restores the conditional scope of the S14 scenario, the arrow mapping
in S7, the reason the ledger passes precede the commit, and the
restrictive reading of the uv row, and drops a stated count.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Copilot AI lite review requested due to automatic review settings October 30, 2026 10:10
@ptr727

ptr727 commented Oct 30, 2026

Copy link
Copy Markdown
Owner Author

A recorded local strict-review pass covers head 4e9b81947110785788e465d336c125a34885c6a3, the content this pull request carries at that commit against develop, and it recorded 3 findings.

@coderabbitai

coderabbitai Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

Run configuration
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@codecov

codecov Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 81.70%. Comparing base (b38e084) to head (3127f14).
⚠️ Report is 26 commits behind head on develop.

Additional details and impacted files
@@             Coverage Diff             @@
##           develop    #3654      +/-   ##
===========================================
+ Coverage    81.60%   81.70%   +0.09%     
===========================================
  Files           26       26              
  Lines         9070     9119      +49     
===========================================
+ Hits          7402     7451      +49     
  Misses        1668     1668              
Flag Coverage Δ
python-3.13 81.70% <ø> (+0.09%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copilot AI 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.

🟡 Changes recommended

Three active P2 documentation issues remain: the Unit contract omits some paragraph sources, and S1/S7 do not unambiguously state their run-wide artifact guarantees.

3 open issues
What changed in this PR

This pull request extends the prose gate’s sentence-length check to Markdown table header and body cells while preserving the blockquote exclusion. It adds regression coverage, rewords affected documentation, and regenerates distributed skill content and source digests.

Changes:

  • Treats each Markdown table cell as an independent sentence block.
  • Adds coverage for body cells, header cells, separate cells, and preserved blockquote behavior.
  • Updates documentation affected by the stricter check.
  • Regenerates distributed skills and their source digests.
File Description
WORKFLOW.md Updates workflow test-scenario prose.
tests/​test_prose_lint.py Adds table-cell sentence-length tests and updates structure coverage.
scripts/​README.md Rewords review-loop exit-code descriptions.
host-setup/​windows/​README.md Rewords the Windows tooling comparison.
docs/​host-setup.md Rewords the uv tool requirements.
catalog/​snippets/​workflows/​README.md Rewords workflow snippet descriptions.
AGENTS.md Rewords routed-skill descriptions.
.github/​skills/​workflow-ci-contract/​references/​test-methodology.md Updates generated workflow methodology content.
.github/​skills/​local-strict-review/​SKILL.md Updates generated local-review skill content.
.github/​actions/​prose-gate/​prose_lint.py Adds table-cell extraction to sentence-length units and updates the Unit documentation.
.claude-plugin/​fleet-skills/​skills/​workflow-ci-contract/​references/​test-methodology.md Updates distributed Claude workflow methodology content.
.claude-plugin/​fleet-skills/​skills/​local-strict-review/​SKILL.md Updates distributed Claude local-review content.
.claude-plugin/​fleet-skills/​.source-digests/​workflow-ci-contract Refreshes the workflow skill source digest.
.claude-plugin/​fleet-skills/​.source-digests/​local-strict-review Refreshes the local-review skill source digest.
.agents/​skills/​workflow-ci-contract/​references/​test-methodology.md Updates the canonical workflow methodology source.
.agents/​skills/​local-strict-review/​SKILL.md Updates the canonical local-review skill source.

Review effort: Lite

Comment thread WORKFLOW.md Resolved
Comment thread WORKFLOW.md Resolved
ptr727 and others added 2 commits October 30, 2026 03:15
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ptr727

ptr727 commented Oct 30, 2026

Copy link
Copy Markdown
Owner Author

A recorded local strict-review pass covers head 3127f14da92c514da80055132d0d3903c853ee78, the content this pull request carries at that commit against develop, and it recorded 1 finding.

@ptr727
ptr727 merged commit cfe64c5 into develop Oct 30, 2026
13 checks passed
@ptr727
ptr727 deleted the feature/auto-3456 branch October 30, 2026 10:43
ptr727 added a commit that referenced this pull request Oct 30, 2026
…Session Prompt Rules (#3667)

Promotes the changes merged into `develop` since promotion #3636 to
`main`.

- [#3640](#3640) Pins the
validator's `uvx ruff` to a Dependabot-managed manifest.
- [#3642](#3642) Counts
Copilot findings under the unresolved bullet and the file table.
- [#3644](#3644) Aligns
the split comment copies and drops the stale counts.
- [#3646](#3646) Sends a
command meant for the session's input line in a plain message, never in
a blocking prompt.
- [#3648](#3648) Opens the
attended session by cloning a hub checkout of the session's own.
- [#3650](#3650) Reads a
held package as installed in both Linux host scripts.
- [#3652](#3652) States
the PowerShell `-Help` and `-h` form in the command-line argument rules.
- [#3654](#3654) Counts
sentences in Markdown table cells for the sentence-length check.
- [#3658](#3658) Splits a
table row only at an unescaped pipe in the semicolon rule.
- [#3660](#3660) Finds
table cell boundaries before blanking code spans and quotations.
- [#3662](#3662) Names a
stale job record on a completed run in `pr_review.py`.
- [#3665](#3665) Keeps a
line holding code after a block comment's closer out of `comment-added`.
Its squash commit on `develop` carries the pull request's original
title, which names a heredoc reading. That reading was withdrawn before
the merge on decision #3666, so a workflow `run:` heredoc body still
reads as code.
- [#3669](#3669) Counts
each `[Pn]` marker in a Copilot Findings cell, so a second finding in
one cell is no longer dropped from triage. It answers one of the two
findings Copilot raised on this promotion. The other is declined with a
parser probe in its thread.

Closes #3616
Closes #3610
Closes #3622
Closes #3638
Closes #3604
Closes #3511
Closes #3602
Closes #3456
Closes #3655
Closes #3657
Closes #3362
Closes #1664

🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants