Verifies the output of Task #3 (scaffold Claude Code Routines entrypoints) against the 2026-04-23 QA decisions. This is the dry-run stage before the first live scheduled run.
Full entrypoint chain is on main in samaguiar1982-cpu/sail-automation under scripts/sail_gads_runner/entrypoints/. Nineteen modules total. Both the healthy path and the blocked path are implemented. The report writes to outputs/reports/campaign-health-YYYY-MM-DD.md with an integrated Run log footer per QA decision #9. The Notion push uses the shared helpers from sail_gads_runner.notion.
Committed at scripts/smoketest.py. Imports all nineteen modules without calling Google Ads or Notion. Catches typos and broken imports before credential work begins.
Run from a fresh clone:
cd /path/to/sail-automation/scripts
python smoketest.py
Exit 0 and all 19 ok on success. Exit 1 and a bad <name> line on any failure.
sail-automation Google account with Read Only MCC access (8676599345). Steps in the Credential Provisioning Guide.vault.env.gads_campaign_health that pip-installs google-ads and puts scripts/ on PYTHONPATH, then invokes python scripts/gads_campaign_health.py.Until all three are in place, the runner will exit 2 (BLOCKED-ENV), write a blocker report, and emit a QA:Open Notion entry naming the missing variables. That is a valid verification of the blocked path.
sail-automation Google account and populate the Routines secret store per the guide.gads_campaign_health.