Skip to content

ci: treat the issue forms as documentation in the PR classifier - #144

Merged
raiseCatError merged 1 commit into
devfrom
infra/ci-issue-forms-docs-only
Nov 3, 2026
Merged

raiseCatError merged 1 commit into
devfrom
infra/ci-issue-forms-docs-only

Conversation

@raiseCatError

Copy link
Copy Markdown
Owner

Issue-form edits such as #140 currently run the full Mac, iPhone Duo and Android builds, because the classifier treats every .github/ file as code.

Change (scripts/ci/classify_pr_paths.py)

  • Adds an ISSUE_FORMS allowlist of exactly six paths: .github/ISSUE_TEMPLATE/{bug_report,config,device_testing,documentation,feature_request,idea}.yml. When a PR changes only these, docs, press-kit or README images, it is docs_media_only.
  • Nothing else under .github/ is exempt: no other YAML file, new or nested form, .yaml variant, workflow, ruleset, FUNDING.yml, release-config.json or PR template.

Why these are safe: these six files are read only by GitHub's "New issue" page. No app target, Gradle build, fastlane lane or release script reads them. The one test that looks at them, AppStoreTests.testUpstreamListingIDAppearsNowhereInTheRepository, scans .github/ for the upstream listing ID. The classifier already sends any changed file containing that ID to full CI, and a new test pins this for forms.

Fail-closed behavior kept

  • Any mixed change (a form plus code, a workflow, pr-title.yml or the classifier or its tests) still runs full CI.
  • So do an unsafe or unreadable .gitignore change, unknown paths and every push except the case ci: skip app builds when a docs-only merge lands on dev #141 adds.
  • The required check names (mac, android, release-tooling, conventional) are unchanged: skipped jobs still report.
  • This PR changes scripts/ci/, so it runs full CI itself, and the base branch's classifier still decides for every PR.
  • tests.yml is deliberately untouched, to avoid conflicting with ci: skip app builds when a docs-only merge lands on dev #141, which edits the same comment block.

Tests: 30 classifier tests pass, 7 of them new:

  • Each form and the issue-template chooser on its own.
  • Forms together with docs.
  • Forms mixed with code, workflow, pr-title.yml and classifier files.
  • Ten other .github and YAML paths that must stay full CI.
  • The upstream ID inside a form.
  • Forms with an unsafe or missing .gitignore diff.
  • Every listed path exists.

Two mutants, the rule removed and the rule broadened to all of .github/, fail 13 and 20 tests respectively. check-release-workflows.rb still reports every workflow fail-closed. Run against #140's diff, the new classifier gives docs_media_only=true; dev's current one gives false.

Once merged, edits to the issue forms alone no longer run the app builds; reviewing the forms remains a manual step.

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
@raiseCatError
raiseCatError marked this pull request as ready for review November 3, 2026 17:01
@raiseCatError
raiseCatError merged commit b12143a into dev Nov 3, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant