Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion scripts/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ The default set also carries `comment-added`, which reports the prose comment li

The default set also carries `issue-ref`. It reports an issue or pull request reference in a comment, in a Python docstring, and in the instruction text an agent reads as law. That text means the Skills trees, the fleet's own rule documents, and `.github/copilot-instructions.md`. In instruction text it reports the URL spelling as well, an inline link destination, a reference definition, and a bare URL alike. It reads them off the line as written rather than off the blanked copy the bare-form scan reads. It does so because that blanking exists to hide the very destinations this half looks for. A URL is reported nowhere else, because in a code or workflow comment the rule carves out one kind of URL. That kind names an issue or a pull request on a public repository other than this one. The bare spellings, by contrast, stay banned on every surface the rule reaches. A docstring and a documentation comment lie outside that carve-out's surface as well, so a URL is banned there too. On every surface but instruction text the gate reads the bare form alone and a banned URL goes unreported. That is the same unreported half a commit reference already sits in. One forge's URL paths are read, and on its bare host and that host's `www` alias rather than any subdomain of it. This is because the tracker is served from the bare host and a subdomain is a different service on the same domain. No subdomain was measured to serve a tracker-shaped path, so the bound is the one that was measured rather than a hazard that was found. A wildcard host is the wider claim. A URL naming a tracker the pattern does not know is banned by the rule text and goes unreported. That is the relationship the rule already holds with a commit SHA. One line naming one reference reports once however many spellings of it that line carries. The key is the number both patterns capture rather than the text that spelled it. That key costs one case, stated rather than left to be found. A line naming two different projects' references under one number reports once. The second reports on the run after the first is fixed, so it is a round rather than a lost detection. A documentation comment is read like any other comment here, unlike in `comment-added`, since a reference in one is the same defect. A Markdown comment is read only where the document itself is instruction text. How far a comment read reaches is a parser fact that differs by language. `rule_issue_ref` in `.github/actions/prose-gate/prose_lint.py` is the one statement of it, since every restatement of it here was wrong in its own way. The ban the rule serves is wider than the rule, covering a commit reference as well. A commit is not a shape a gate can read. That is because a short SHA carries the same shape as a blob id, a version fragment, and a fixture hash. So the rule text in the `comment-and-doc-style` Skill covers that half and this rule reads the pattern-detectable one. A string literal is not read, because a test builds the numbers it asserts against. That is also because reading those would report a fixture rather than a claim about the repository. A tracker, a history, a plan, and a README outside those trees are the repository's own narrative and keep their references, this file among them. The rule shipped with the scrub that cleared the tree's existing references rather than after it. That is because a file whose every rationale block ended in an issue number taught the house style the rule forbids. That is also because no rule text competes with the surrounding file until that file changes.

The default set also carries `sentence-length`. It reports a sentence over the word cap that `sentence_word_cap` in `prose-gate.json` sets, in Markdown prose, a comment, or a docstring. It shipped opt-in, since the corpus predated the cap. This tree now reads zero over-cap sentences, so the rule gates like any other.
The default set also carries `sentence-length`. It reports a sentence over the word cap that `sentence_word_cap` in `prose-gate.json` sets, in Markdown prose, a comment, or a docstring. The tree reads zero over-cap sentences, so the rule gates like any other.

A wide scan skips the trees this repo generates rather than authors, currently `reports/`, which [`spec/audit.py`][audit] writes. A finding there is the audit engine's phrasing rather than an author's, so no edit to that tree can fix it. Leaving them in made the repo's own number mostly generated output. Naming such a path directly still reads it (`prose_lint.py reports`), so nothing becomes uncheckable.

Expand Down
Loading