Sam selected option A: add a footer watchdog so the standard site footer does not silently disappear again.
routines-build/routines/github/footer_watchdog/run.py, a read-only watchdog that checks public page/post URLs for exactly one canonical #sal-custom-footer.routines-build/routines/github/footer_watchdog/CLAUDE.md with purpose, inputs, outputs, thresholds, and manual run commands..github/workflows/daily-footer-watchdog.yml scheduled for daily 09:45 ET during daylight time, with manual dispatch available.routines-build/README.md to list the footer-watchdog routine in the schedule table.Skills/wp-site-health/SKILL.md so future site-health runs include the footer watchdog after global site chrome, WPCode, Kadence shell, or BSG page work.Skills/pre-publish-qa/SKILL.md so footer, WPCode, Kadence shell, and global page-chrome changes require the footer watchdog.The watchdog uses public WordPress REST pages/posts when available, filters out media and external embeds, and falls back to the latest saved sitemap snapshot if WordPress REST or the live sitemap is temporarily returning 503. This prevents a noisy false failure while still checking the real public page inventory. It exits nonzero only when a footer is missing, duplicated, or malformed.
python3 -m py_compile routines-build/routines/github/footer_watchdog/run.py passed./, /about-us/bigger-share-guarantee/, /contact-us/, and /practice-areas/car-accidents/ passed.Severity: info, Footer issues: 0, Fetch failures: 0, and Newly broken since last run: 0.routines-build/outputs/2026-06-01/footer-watchdog.md; state saved to routines-build/state/footer-watchdog.json.The Projects worktree already had many unrelated dirty and untracked files before this closeout. This session did not revert or clean those unrelated changes. The files touched for this task are the new footer watchdog routine, the new GitHub workflow, the routines README, and the two skill updates above.