The release workflow failed with ModuleNotFoundError because release.py imported classify_changes from scripts.classify_changes but PYTHONPATH=src didn't include the repo root. Also, user-facing dev tools were mixed with CI/CD automation scripts in the same directory.
Solution
Split scripts: Moved 12 CI/CD automation scripts from scripts/ to scripts/ci/. Dev tools (check_test_speed, configure_repo, install_checkmake, setup.sh, molecule_all.sh) stay in scripts/.
Fix PYTHONPATH: All workflow YAMLs now reference scripts/ci/ paths. The import in release.py updated to scripts.ci.classify_changes.
Improve classify_changes.py: Now uses safe-by-default allowlist strategy — any file NOT in the explicit workflow-only list is treated as user-facing. This prevents new file types from accidentally skipping releases.
New tests for safe-by-default classification logic
All imports and patch paths updated
Closes GRM-37
## Problem
The release workflow failed with ModuleNotFoundError because release.py imported classify_changes from scripts.classify_changes but PYTHONPATH=src didn't include the repo root. Also, user-facing dev tools were mixed with CI/CD automation scripts in the same directory.
## Solution
1. **Split scripts**: Moved 12 CI/CD automation scripts from scripts/ to scripts/ci/. Dev tools (check_test_speed, configure_repo, install_checkmake, setup.sh, molecule_all.sh) stay in scripts/.
2. **Fix PYTHONPATH**: All workflow YAMLs now reference scripts/ci/ paths. The import in release.py updated to scripts.ci.classify_changes.
3. **Improve classify_changes.py**: Now uses safe-by-default allowlist strategy — any file NOT in the explicit workflow-only list is treated as user-facing. This prevents new file types from accidentally skipping releases.
4. **Updated all references**: workflow YAMLs, pre-commit config, Makefile, pyproject.toml, tests, AGENTS.md, docs.
### Tests
- 489 tests pass, 100% coverage maintained
- New tests for safe-by-default classification logic
- All imports and patch paths updated
Closes GRM-37
emil
merged commit 780b8e8b39 into master2026-06-21 20:44:40 +00:00
emil
deleted branch GRM-37-fix-script-split2026-06-21 20:44:40 +00:00
emil
changed title from GRM-37: Split CI scripts into scripts/ci/, fix release PYTHONPATH to GRM-37: Smart CI and release skipping: don't release or run molecule when only workflow files change2026-06-21 21:22:04 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Problem
The release workflow failed with ModuleNotFoundError because release.py imported classify_changes from scripts.classify_changes but PYTHONPATH=src didn't include the repo root. Also, user-facing dev tools were mixed with CI/CD automation scripts in the same directory.
Solution
Split scripts: Moved 12 CI/CD automation scripts from scripts/ to scripts/ci/. Dev tools (check_test_speed, configure_repo, install_checkmake, setup.sh, molecule_all.sh) stay in scripts/.
Fix PYTHONPATH: All workflow YAMLs now reference scripts/ci/ paths. The import in release.py updated to scripts.ci.classify_changes.
Improve classify_changes.py: Now uses safe-by-default allowlist strategy — any file NOT in the explicit workflow-only list is treated as user-facing. This prevents new file types from accidentally skipping releases.
Updated all references: workflow YAMLs, pre-commit config, Makefile, pyproject.toml, tests, AGENTS.md, docs.
Tests
Closes GRM-37
GRM-37: Split CI scripts into scripts/ci/, fix release PYTHONPATHto GRM-37: Smart CI and release skipping: don't release or run molecule when only workflow files change