control tower
Campaigns
engine not activated
Brand-defense specsdocs/marketing/campaigns/brand-defense/*.md, read live from GitHub
Engine not reachable
tripshepherd/seesight-tours-web/docs/marketing/campaigns/brand-defense not found on GitHub. Check GITHUB_DOCS_REPO/GITHUB_ADS_REPO and that the path exists.
ActuatorGoogle Ads account state -- no Ads API calls from this tower in v1

Spend changes and campaign mutations run through the gated seesight-ads CLI tools(ops/google-ads/*), never from this tower. Their reads are hard-gated and their mutations require a reviewed ChangeSet and human approval before anything reaches the live account.

Account connectivity, live reads, and ChangeSet review land here in v1.1, once the growth admin API's Ads-reads surface exists. Until then, run ops/google-ads/connectivity_check.py directly in that repo for account truth -- nothing in reports/live-api/ or editor-csv/ there is treated as account truth without a fresh read.

Token rotation required before any relight
The Google Ads developer token committed in that repo's history is compromised by its own code comment and must be rotated in the API Center before any campaign goes live. See docs/marketing/specs/ads-engine-integration.md ("Asks") in the docs repo.