ci(cmux-next): add advisory split-plan guard

Merged
TE
19d ago
+373-0

Summary

Adds an advisory split-plan guard for pull requests targeting feat-cmux-next. The portable Python classifier reports the exact merge base and head, changed-file and commit counts, detected product surfaces, and paths it cannot classify. It emits a stable SPLIT_GUARD_JSON receipt and GitHub warning annotations without starting a native or web build.

The guard is advisory-only in this rollout. --mode required is available for a later promotion after review against historical pull requests, including #21200.

Testing

  • python3 -m unittest scripts/cmux-next/tests/test_check_pr_split.py — 4 passed.
  • python3 -m py_compile scripts/cmux-next/check-pr-split.py scripts/cmux-next/tests/test_check_pr_split.py — passed.
  • /Users/leoli/go/bin/actionlint .github/workflows/cmux-next-split-guard.yml — passed.
  • git diff --check bdce169c4b8af88023e0c5d21ca9502bdfe4f583..72d9dbac056171c6987ed7148bbdb2e66ff30d7f — passed.
  • Advisory replay for #21200 (51b8f7a9f0b9118bcb5bd291f4044959770f21ec..c23c728479c293abccc6a4aa55a074b62379fd70) reported 88 changed files, 137 commits, six product surfaces plus CI, mixed native settings/webview changes, and 50 unclassified paths.

Changelog

none


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.


Summary by cubic

Adds an advisory split-plan guard for pull requests targeting feat-cmux-next. A portable Python classifier reports changed-file and commit counts, detected product surfaces, and unclassified paths, then emits a stable SPLIT_GUARD_JSON receipt and GitHub warning annotations without starting a native or web build.

  • The guard is advisory-only; --mode required is available for later promotion after review against historical PRs.
  • The workflow unshallows the full history with a blob-less filter so merge-base and commit counts are computed correctly.
  • Adds a GitHub Actions workflow, the classifier script, and unit tests.