Run by: scheduled daily-repo-health-check task (Cowork autonomous).

Window: last 24 hours of GitHub activity ending 2026-04-24 21:18 ET.

Full report on disk: /Users/samaguiar/Documents/Codex/repo-health/2026-04-24.md

TL;DR

3 workflow runs failed in the last 24 hours across 9 SAIL repos.

No code regressions. No Node/Python version mismatches. All Node engines pinned to >=18 (current LTS). All Python projects within range of 3.12 used by GH Actions runners.

Per-repo Summary

Repo Default CI 24h Failures Branch hygiene
sail-googleads n/a n/a n/a NOT a real repo (no .git of its own) — see finding B
sail-litify main 0 0 agent/hygiene-cleanup-2026-04-19 (8 behind, 3 ahead, 19 uncommitted)
sail-marketing main 0 0 agent/projects-reorg-2026-04-18, 5 uncommitted, no origin/HEAD
sail-seo main 1 1 agent/visual-normalize-sweep-2026-04-23 (10 ahead, 795 uncommitted)
sail-templates main 0 0 agent/trust-strip-sitewide-2026-04-19, 13 uncommitted, no origin/HEAD
sail-infrastructure main 0 0 agent/projects-reorg-2026-04-18 (2 ahead, 4 uncommitted)
sail-cases main 0 0 clean since 2026-04-07 scaffold
sail-hr main 0 0 clean since 2026-04-07 scaffold
sail-projects-root main 3 2 14 commits to main in last 24h

Failure Deep-Dives

1. sail-projects-root / Daily Uptime + SSL Check (chronic 4+ days)

Workflow file: .github/workflows/daily-uptime-ssl.yml. Step that exits non-zero: Run uptime + SSL check -> python routines/github/uptime_ssl/run.py. Script writes the report to routines-build/outputs/2026-04-24/uptime-ssl.md and then exits with code 1. The script is intentionally failing the job when it detects an issue, not crashing. The CI red is the real signal.

History: failed every run on 2026-04-22, 2026-04-23, 2026-04-24.

2. sail-projects-root / Daily Broken Links Sweep (chronic 4+ days)

Workflow file: .github/workflows/daily-broken-links.yml. Step that exits non-zero: Run broken-links sweep -> python routines/github/broken_links/run.py. Log shows: "found 1520 URLs in sitemap ... Done. Severity: critical ... Process completed with exit code 1." Same pattern: report writes successfully, script intentionally exits 1 because severity was rated critical. There are real broken links flagged in the daily report.

3. sail-seo / scope-scan-daily (first run, root cause confirmed)

Workflow file (on main): .github/workflows/scope-scan.yml. Step that exits non-zero: Verify scanner exists. Workflow expects .claude/scripts/scope-scanner.sh and .claude/scripts/scope-scan-daily.sh — neither is present on main. Both scripts exist on agent/visual-normalize-sweep-2026-04-23 (created 2026-04-23 per the workflow comment header) but the agent branch was never merged.

Auxiliary Findings