What landed
- 10 GitHub Actions workflows relocated from routines-build/.github/workflows/ to repo-root .github/workflows/ with defaults.run.working-directory: routines-build
- GitHub Secrets populated from .credentials/vault.env: WP creds, GSC service account, PSI key, SEMrush key, Notion token + KB DB ID
- Repository workflow permissions set to write (default was read, blocking commits back from actions)
- 11 domain SKILL.md files authored under routines-build/skills/: broken-link-sweep, cannibalization-audit, orphan-page-scan, non-indexed-page-check, cwv-pulse, gsc-ranking-movement, internal-link-opportunity, competitor-content-scrape, schema-validator, backlink-monitor, folder-hygiene-guardian
- scripts/notion_logger.py rewritten to match SAIL Knowledge Base schema: Name (title), Type=Workflow, Status=Active/Needs Follow-up, Priority=High/Medium/Low, Tags=[routine, severity], Summary
- NOTION_KB_DATABASE_ID secret corrected to 5d558b97-8085-4626-a8b6-589ac7e5bce5 (was pointing at a stale UUID the Claude Code integration could not reach)
Current run state (last manual trigger)
- Broken Links: 7 newly broken (logged)
- Redirect Chains: 1 broken (logged)
- Uptime+SSL: 1 site down flagged (logged)
- Cannibalization: 336 queries, 174 critical (logged)
- Orphan Pages: 607 orphans, 198 thin-linked (logged)
- Schema Validator: 559 pages with issues, 1 parse error (logged)
- CWV Pulse: 0 regressions (logged, exit 0)
- GSC Rankings: 141 up, 100 down, 89 new, 92 dropped (logged)
- Non-Indexed: hit 15min timeout; bumped to 30 min; re-triggered
- Backlinks (SEMrush): 403 Forbidden - API key or plan issue, external, needs Sam
How the "failures" are expected
Each routine returns exit code 1 when it finds critical-severity issues so GitHub Actions sends Sam an email. Exit 1 does NOT mean the routine is broken. Only cases where the script crashed before writing the report are true failures (currently: backlinks, SEMrush auth).