Importance: High. Tasks: Pending (needs Sam's OAuth action).
Sam asked to (1) negate both 'find legal help' and 'doran law', and (2) pull more served-search-term negatives across competitors, out-of-practice-area, too-generic, and out-of-geo. I could not execute live: every Google Ads auth lane is down this session.
Lane diagnosis (per Sam's 'try alternate lanes before reporting blocked'):
deleted_client.deleted_client.deleted_client.Root cause: the OAuth clients were DELETED in Google Cloud, not just expired tokens. Refresh can never succeed until a new OAuth client is created and a new refresh token is minted. googleads.googleapis.com itself is reachable from the sandbox, so the direct REST lane works the moment creds are valid.
Repos/sail-googleads/negatives_audit.py: pulls 90 days of served search terms (impressions > 0), buckets into competitor / out_of_practice_area / too_generic / out_of_geo, prints a review table, and with --apply pushes PHRASE negatives to the correct shared lists. Seeded with the two approved terms.Documents/Codex/Google-Ads-Negative-Candidates_2026-06-13.md: human-readable status, criteria, list routing, run steps, unblock path.Shared-list routing: competitor -> 12074205339; out-of-practice-area -> 12060898974 (Universal Negatives); too-generic + out-of-geo -> 12074205336 (General Negatives). Service area KY/IN only. ('richardson law group' already added 2026-06-09, changeId 191445.)
python3 negatives_audit.py --apply (or --seed-only --apply for just the two approved). Dry-run first to review buckets.