ci(contributing): enforce scoped PR titles

Merged
VI
25d ago
+177-4

Summary

Enforce the scoped PR-title format already required by CONTRIBUTING.md.

PR opened / edited / updated
  → inline title validation, no checkout
  → required pr-title check

quality CI → 29 cases against the same inline validator
AGENTS.md → CONTRIBUTING.md before creating or updating a PR

The title job uses the runner's Node runtime without installing dependencies or executing repository scripts. The title is environment data. Types and scopes remain open choices. Workflow edits themselves still require review, as with other pull_request workflows.

Evidence

  • Before: PRs #43 and #38 passed code checks with unscoped titles. Unicode line and paragraph separators also passed the initial validator.
    After: The validator rejects those titles and separators, while accepting scoped titles, Unicode text and literal shell syntax.
  • All 29 title and workflow-selection cases, root TypeScript checking, workspace lint and diff checks passed locally. Lint retains existing warnings. Subprocess errors are checked before exit status assertions.
  • Cubic fixes are in aaad876 and c1469a3. Tests parse YAML, select the named validation step and require its marker; regressions cover preceding steps and YAML reformatting. GitHub checks for this revision are running.

Merge Danger

Door: two-way

No application or calculation changes. The pr-title check is required by Protect main. Reverting enforcement requires updating both the workflow and the required-check list.

Blast Radius: contributions

PRs with invalid titles must be renamed before merging. Other open branches will need the new workflow from main after this PR merges.