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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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