Skip to content

bug: Accept underscore modules in PR titles #25

Description

@idy

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions