Changelog
Phase-by-phase shipping log. Most-recent first.
Phase 47: Imported campaign lifecycle (May 11 2026)
Closed the gap where the bidding ladder assumed every campaign started at Stage 1 Manual CPC. Imported campaigns can now arrive at any rung and the agent picks up management from where they are. 5-component architecture:
- Stage classifier (pure function, no I/O)
- Configuration audit with health classifications
- New campaigns_stage_history table with append-only transitions
- Diagnostic rules that ladder-gate on agent_managed_since
- BiddingLifecyclePanel UI on every campaign detail page
Sub-phases shipped same week:
- 47.1: google_ads_started_at column, ready_for_target_roas fallback for imports, external_change capture pre-approval, pending-state UI, history backfill
- 47.2: MAX hands-free auto-approves imported audits (except misconfigured)
- 47.3: Manual "Optimize Now" button respects MAX hands-free, auto-executes on click
- 47.4: Learning-phase respects google_ads_started_at, real-time notifications on auto-execute + auto-rollback
- 47.5: Onboarding updates to surface hands-free in plan + welcome + import banner
- 47.6: Public docs site (you are reading it)
Phase 46: Conversion optimization sweep (May 2026)
- Marketing site conversion-rate overhaul (15 items)
- Per-user call-minute usage tracking + Pro 100min/mo visibility + overage cents tracking
- Cannibalization ownership direction fix
- UI dedup feedback consumer
- pause_campaign + enable_campaign executors with rollback support
Phase 45: GA4 Key Events + funnel attribution (May 2026)
- signup_completed event fires from onboarding welcome page
- GA4 Key Events registered via Admin API (8 events)
- Funnel events tagged with campaign_id + ad_group_id meta
- Per-campaign GA4 attribution replaces fragile pagePath matching
Phase 44: Continuous RSA headline refresh (May 2026)
- Two-tier swap priority: impression-starved (primary) vs CTR-laggard (fallback)
- Character-bigram cosine similarity rejects near-duplicates
- Gemini generates 10 candidates, Claude Haiku picks the best
- Single-swap-per-cycle for clean outcome attribution
- Tier 1 auto-eligible when impressions ≥ 2000 + share < 1%
Phase 43: Agent knowledge cache layer (May 2026)
- 3-layer expert-knowledge markdown playbook injected into every agent-reason call
- Anthropic prompt caching with 1h TTL (extended-cache-ttl beta header)
- ~50KB universal knowledge + ~2KB per-trigger system prompt
- Hit ratio + USD-saved telemetry per session
Phase 42: Bandit Lab + hierarchical priors (May 2026)
- Thompson sampling on per-element funnel arms (sticky CTA, hero image, step copy)
- Beta posteriors at the edge worker (Cloudflare)
- Hierarchical priors (λ=0.2) seed new arms with fleet-wide category evidence
- Bandit Lab read-only UI on the Tracking tab
Phase 40: Per-campaign landing page analytics (April 2026)
- Funnel events tagged with campaign_id + ad_group_id at dataLayer
- GA4 custom dimensions auto-registered
- Scroll-depth (25/50/75/100%) + time-on-step tracking
- PageSpeed multi-category audit (perf + a11y + best-practices)
- 3 new LP-health diagnostic rules in agent-optimize
- Analytics tab on campaign detail (MAX tier)
Phase 38: Hands-free + blast radius + auto-rollback (April 2026)
The phase that made "done-for-you" real:
- Blast-radius classifier (surgical / meaningful / large / legally_dicey)
- Per-rec auto-execute gate with rate limits + circuit breakers + kill switch
- measure-outcomes cron with tiered T+24h/T+7d/T+14d windows
- Auto-rollback on worsened verdict
- User-level circuit breaker after 3 rollbacks in 30 days
- Rule-level success rate monitor (fleet-wide aggregation)
- Weekly digest email with signed rollback links
Phase 36: ROI closed loop (April 2026)
- 4-action conversion split per campaign
- UPLOAD_CLICKS_REVENUE starts secondary, promotes to primary on 30 paid invoices/30d
- Jobber paid invoice → Google Ads offline conversion upload
- Predictive LTV multipliers for recurring categories
- GCLID 85-day expiration handling
- Bidding ladder auto-promotion via agent-optimize