Status: SHELL-BLOCKED (Path B, no live data)
Streak: 9th consecutive blocked Google Ads scheduled run since 2026-04-20
Run mode: fail-fast per feedback_fail_fast_when_blocked.md
No mutations. The Cowork Bash sandbox failed with ENOSPC: no space left on device before any command could run, on two consecutive attempts. OAuth itself is healthy — token was rotated 2026-05-01 by Claude, signed by aguiarlawmarketing@gmail.com, verified live against SAIL CID 381-391-6687, mirrored across all 6 local credential locations. The blocker is purely the execution surface.
| Check | Result |
|---|---|
Bash sandbox mkdir /tmp/preflight-test |
FAIL (ENOSPC), 2 attempts |
| Notion OAuth state | OK (rotated 2026-05-01) |
Local .env sync |
Cannot verify without bash; expected in sync |
| Live API canary | BLOCKED (no execution surface) |
| google-ads-mcp loaded | NO |
| Pipedream Google Ads | NO (app authorization pending in Pipedream Connect) |
| Adspirer MCP | NO (not installed) |
This is the 9th identical block in a row. Per Sam's standing instruction (feedback_fail_fast_when_blocked.md), the value at run 9 is escalation, not a 9th identical failure log. Skipped exhaustive backend retries.
GAQL pulls search_term_view for last 7 days, ENABLED campaigns, ordered by cost. Decision rules:
free, pro bono, cheap, pay only if you win, attorney near me jobs, paralegal, salary, out-of-state geos (verify against campaign geo), non-PI verticals (divorce, criminal, dui, bankruptcy, immigration, traffic ticket, expungement)slip and fall, dog bite, dog attack and close variants as negatives in motor-vehicle campaigns (per 2026-04-14 standing instruction)Brand-voice/banned-words rules do NOT apply to negatives (per feedback_google_ads_brand_rules.md).
For any keyword bid on in Campaign A but not Campaign B, add as negative in Campaign B if Campaign B is broader. Reference hierarchy: Car Accidents 2026 (most specific) → Truck/Commercial → Motorcycle → Brand (only firm-name) → Spanish (separate keyword universe).