Files
timmy-config/scripts/ci-cron-validate.py
Alexander Whitestone 1c82a2a560
Some checks failed
Architecture Lint / Linter Tests (pull_request) Successful in 23s
Smoke Test / smoke (pull_request) Failing after 15s
Validate Config / YAML Lint (pull_request) Failing after 15s
Validate Config / JSON Validate (pull_request) Successful in 17s
Validate Config / Python Syntax & Import Check (pull_request) Failing after 37s
Validate Config / Python Test Suite (pull_request) Has been skipped
Validate Config / Cron Syntax Check (pull_request) Successful in 11s
Validate Config / Shell Script Lint (pull_request) Failing after 49s
Validate Config / Deploy Script Dry Run (pull_request) Successful in 11s
Validate Config / Playbook Schema Validation (pull_request) Successful in 20s
Validate Training Data / validate (pull_request) Failing after 15s
Architecture Lint / Lint Repository (pull_request) Failing after 17s
PR Checklist / pr-checklist (pull_request) Failing after 2m53s
fix: add python3 shebangs to all Python scripts (#681)
Added #!/usr/bin/env python3 to 74 Python scripts across:
- bin/ (16 scripts)
- scripts/ (48 scripts)
- pipeline/ (3 scripts)
- training/scripts/ (3 scripts)
- hermes-sovereign/ (1 script)

Also added executable permissions to fixed scripts.
Test files excluded (run by pytest, not directly).

Closes #681
2026-04-20 19:17:19 -04:00

24 lines
856 B
Python
Executable File

#!/usr/bin/env python3
#!/usr/bin/env python3
"""CI: Validate cron fleet health. Exit 1 on systemic failures."""
import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).parent))
from cron_audit_662 import audit_fleet, load_cron_state, load_crontab_backups
def main():
hermes = load_cron_state()
crontabs = load_crontab_backups(Path(__file__).parent.parent / "cron" / "vps")
report = audit_fleet(hermes, crontabs)
print(f"Cron Audit CI: {report['total_jobs']} jobs — H:{report['summary']['healthy']} T:{report['summary']['transient_errors']} S:{report['summary']['systemic_failures']}")
if report["systemic_jobs"]:
for j in report["systemic_jobs"]:
print(f" FAIL: {j['name']}{j['reason']}")
sys.exit(1)
print("CI PASSED")
sys.exit(0)
if __name__ == "__main__":
main()