Background
The shared PR-readiness validator currently accepts only lowercase letters,
digits, and hyphens inside each title-prefix segment. Consumer repositories use
stable snake_case module and board identifiers such as zero_esp, so a title
like h106/zero_esp: add the Zero ESP Main App package is rejected even though
it accurately names the owning module and follows the repository naming guide.
Goal
- Allow
_ inside non-empty lowercase PR title-prefix segments while preserving
the existing prefix: Subject structure and lowercase first-character rule.
- Keep malformed titles, empty hierarchy segments, spaces, uppercase prefixes,
and missing subjects rejected.
- Document the accepted prefix characters and cover the consumer regression.
Non-goals
- Do not change Issue Type, closing-Issue, PR body, review-model, or merge
eligibility behavior.
- Do not relax prefix casing, hierarchy, colon-spacing, or subject requirements.
- Do not update consumer workflow pins as part of this repository change.
Code Changes Tree
.github/
└── scripts/
├── issue-review/
│ └── common.mjs # allow underscores inside lowercase title-prefix segments
└── pr-readiness/
└── test.mjs # cover snake_case module acceptance and malformed-prefix rejection
README.md # document the exact accepted prefix characters and hierarchy form
Design
Extend the shared PREFIXED_TITLE expression so every slash-separated prefix
segment still begins with a lowercase ASCII letter and may then contain
lowercase ASCII letters, digits, hyphens, or underscores. Preserve the existing
single : delimiter and non-empty subject requirement.
The PR-readiness validator continues to import this shared expression. Add a
regression case for h106/zero_esp: add the Zero ESP Main App package plus
negative cases that demonstrate uppercase, empty segments, spaces, leading
underscores, and missing subjects remain invalid.
Test And Acceptance Criteria
Acceptance Criteria
h106/zero_esp: add the Zero ESP Main App package has no invalid-title
blocker.
- Existing lowercase and hyphenated prefixes remain accepted.
- Uppercase, space-containing, empty, or underscore-leading segments and empty
subjects remain rejected.
- README wording matches the deterministic validator.
Validation
node .github/scripts/issue-review/test.mjs
node .github/scripts/pr-readiness/test.mjs
node .github/scripts/pr-review/test.mjs
Background
The shared PR-readiness validator currently accepts only lowercase letters,
digits, and hyphens inside each title-prefix segment. Consumer repositories use
stable snake_case module and board identifiers such as
zero_esp, so a titlelike
h106/zero_esp: add the Zero ESP Main App packageis rejected even thoughit accurately names the owning module and follows the repository naming guide.
Goal
_inside non-empty lowercase PR title-prefix segments while preservingthe existing
prefix: Subjectstructure and lowercase first-character rule.and missing subjects rejected.
Non-goals
eligibility behavior.
Code Changes Tree
Design
Extend the shared
PREFIXED_TITLEexpression so every slash-separated prefixsegment still begins with a lowercase ASCII letter and may then contain
lowercase ASCII letters, digits, hyphens, or underscores. Preserve the existing
single
:delimiter and non-empty subject requirement.The PR-readiness validator continues to import this shared expression. Add a
regression case for
h106/zero_esp: add the Zero ESP Main App packageplusnegative cases that demonstrate uppercase, empty segments, spaces, leading
underscores, and missing subjects remain invalid.
Test And Acceptance Criteria
Acceptance Criteria
h106/zero_esp: add the Zero ESP Main App packagehas noinvalid-titleblocker.
subjects remain rejected.
Validation