Cycle-1 cascade · spec-complete, not launched · v1.20 · Calum envelope 2026-05-19 banked + arch-v4.20 drift fixed + Active-Subs exclusion resolved via Shopify-native filter (Seal-API path retired)
created 2026-05-17 · updated 2026-05-19 v1.18 (session 32 Seal Subscriptions API probe — Active-Subscribers SoT card updated with confirmed feasibility block: all 4 markets reachable via SEAL_API_KEY_* tokens, 3,443 active subs total, email field in subscription record, no new Shopify scope required) · prior v1.17 2026-05-18 session 30 (6 new decision cards) · slug go-live-buckets · sources: commit 16ab405 + 6323ebb, cascade-2026-05-13 specs, live GAQL user_list check 2026-05-17, cascade-execution-plan.md, session-32 bank 2026-05-18+19, session-30 bank 2026-05-18 19:30, GATE-A-STATUS-2026-05-18.md, t-adhd-{de,fr,us}-2026-05-18/ + section-c-revival-2026-05-18/ brief sets, reference/data-contracts/discount-codes.md, config/campaign-architecture.json v4.20, seal_mrr_2026-05-19.json, Codex+Gemini QC 2026-05-18+19
Calum's go-live decision envelope landed at 20:29 UTC. All 6 cards banked below + downstream surfaces updated in v1.20.
Still open from session 30: Cycle-1 Gate A canonical-fact BLOCK (8 violations) · Gate A test-ID collisions · Section-C budget mutations · Section-C UK Smartpill refresh. Still open from earlier: Card G image library · MASTER-CASCADE-PLAN row sign-offs · 8 v4.20 session-32 cards. T2 video pick + 36-row audit: answered with options below, awaiting Calum follow-up.
Customer Match is cleared — GAQL-verified 2026-05-17, not a blocker. DE/FR CM lists have a low addressable rate (~12% / ~19%) — investigation found this is structural (low Google-account penetration), not a quick fix. DE/FR Customer Match is deferred to cycle-2 (Calum 2026-05-17) — not a cycle-1 gate.
Per the audience-segments reference panel: PMax cannot hard-fence to a Customer Match list — the list is signal only, the algorithm expands to similar converters. For narrow retargeting cohorts (lapsed buyers, cart abandoners, subscribers) this dilutes the audience. Demand Gen / Display / Search-Targeting hard-fence; PMax does not.
7 PMax campaigns in the architecture carry this mismatch — £209/day total. Two are in cycle-1 right now (T3 + T5). Per Calum's analysis, these should be re-channelled to DG / Display / Search before launch. The arch row for T5 already admits the issue: “PMax audience signal only — PMax has no hard audience fence; T5 runs as directional remarketing weighted toward this segment.” The other 6 share the same flaw.
v1.14 refinement (Codex 5.5 + Gemini 3.1 Pro QC, 2026-05-18): blanket "DG-only for all 7" was naive — Gemini flagged DG's ~1,000 active-matched-user serve minimum kills DE/FR/US lapsed; Codex flagged DG's "hard-fence" only holds if Optimized Targeting is OFF + no Lookalike expansion. Plus both reviewers flagged the lost RLSA Search-retargeting inventory PMax was capturing. Refined per-campaign plan below.
| Arch ID | Market | Members | £/d | Primary channel | Secondary | Critical knobs |
|---|---|---|---|---|---|---|
pmax_uk_t5_sub_upsell cycle-1 T5 | UK | 15,361 | £143 | DG | RLSA on UK brand-Search | OT off, no Lookalikes, 7-day freq check |
pmax_uk_lapsed | UK | ~3,300 | £30 | DG | RLSA on UK brand-Search | OT off, no Lookalikes |
pmax_global_subscription_reminder | ALL | ~18,000 | £6 | DG | — | OT off |
pmax_global_cart_abandoner | ALL | ~1,300 | £8 | Display | DG fallback if eligible (Codex) | Dynamic product banners |
pmax_de_lapsed | DE | ~860 | £10 | Display | RLSA on DE brand-Search | Below DG 1k floor |
pmax_fr_lapsed | FR | ~700 | £7 | Display | RLSA on FR brand-Search | Below DG 1k floor |
pmax_us_lapsed_standalone (new v4.19) | US | ~400 | £5 | DISPLAY (US) | RLSA on US brand-Search 13522300536 in Observation | v4.19 (Calum 2026-05-18): US-pool absorption REMOVED (geo contradiction). New standalone US-store Display campaign. Replaces retired pmax_us_lapsed POOLED_INTO_UK approach. |
Codex 5.5 — REFINE. HIGH: DG "hard-fence" only true if Optimized Targeting OFF + no Lookalikes + Targeting (not Observation). Raw list sizes ≠ active eligible users; Google recommends 5,000+ for Customer Match. MEDIUM: DG channel controls (specify ALL_CHANNELS); cart abandoner DG-first if eligible with 7-day underdelivery trigger; Search-Targeting as small adjunct via RLSA; T5 £143/d freq check; image-first DG OK; downstream config/architecture/UTM/GA4 updates. LOW: rephrase as "DG-first with eligibility + underdelivery fallbacks".
Gemini 3.1 Pro — RETHINK. HIGH: DG requires ~1,000 active-matched-user minimum; DE/FR/US lapsed below threshold → won't serve. Loss of RLSA (PMax included Search, DG does not). MEDIUM: cart abandoner → Display (cheap dynamic product banners); T5 frequency fatigue at £143/d on 15k list. LOW: PMax not "broken", just diluted.
Reconciliation: Both converge on "DG-first IS right but the blanket plan misses small lists + RLSA cost." The refined per-campaign table above bakes in both findings.
The 4 legacy brand PMax campaigns keep running untouched. Cycle-1 adds 5 tests — 2 net-new + 2 revive-existing + 1 reinstated DG. v1.20 reconcile (2026-05-19): rows below now reflect arch v4.20 (channel + revive-vs-net-new corrected per the 36-row audit answered above).
| Campaign | Market | Channel | Net-new vs revive | Status under cycle-1 |
|---|---|---|---|---|
| Legacy brand PMax | UK | PMax | 17485671252 existing | untouched — runs in parallel |
| Legacy brand PMax | DE | PMax | 21771203454 existing | untouched — runs in parallel |
| Legacy brand PMax | FR | PMax | 21787222699 existing | untouched — runs in parallel |
| Legacy brand PMax | US | PMax | 17882283348 existing | untouched — runs in parallel |
| T1 — uk-student T1 | UK | PMax | REVIVE existing 23723509436 (arch.deploy_as_new=false) | not built · refresh assets, not new create |
| T2 — uk-dg-parent-light T2 | UK | DG_VIDEO | REINSTATED 2026-05-16 (single-arm DG) dg_uk_parents | not built · awaiting video pick (0 parent-for-child in stock) |
| T3 — uk-welcome-back T3 arch v4.20: DG_VIDEO | UK | DG_VIDEO (was PMax) | NET-NEW standalone · pmax_uk_lapsed | not built · channel set to DG in arch v4.20 |
| T4 — fr-student T4 | FR | PMax | REVIVE existing 23728118086 (arch.deploy_as_new=false) | not built · refresh assets, not new create |
| T5 — uk-subscribe-save T5 arch v4.20: DG_VIDEO | UK | DG_VIDEO (was PMax A/B) | NET-NEW standalone · pmax_uk_t5_sub_upsell | not built · channel set to DG in arch v4.20 · SLA hook DROPPED 2026-05-19 |
Highlighted rows = pre-existing legacy campaigns — not modified by cycle-1. Amber-left = v4.20 channel reroute (PMax→DG). v1.20 reconciliation notes: T1+T4 revive existing live PMax (no create_campaign — asset refresh only). T3+T5 are net-new but as DG, not PMax (v4.20 reroute per session 32 Codex+Gemini QC). T2 reinstated as single-arm DG (Calum 2026-05-16) — needs video pick (no parent-for-child in stock; pivot to Mum Life or commission new). Legacy brand-campaign asset refresh is scoped separately as the T-Zero project.
All decision cards (C, H–R) and wave-2 QC findings actioned into the T1/T3/T4/T5 spec files.
16ab405 (2026-05-17 00:58, 29 files, +1149/−249). All four tests' spec-actioning landed; cascade working tree is clean.
Residuals only: the go-live dashboard (v1.17) is ~28 min stale — it still shows cards C/H–R as "action pending in specs"; they were actioned 28 min after its last refresh — a dashboard refresh is wanted. Minor T4 spec items: verify "Pack Découverte" label vs product-labels.md; add non-ROAS leading indicators to strategy-search-pmax.md.
Two landing pages and all creative assets — most of it gated on the image library (Bucket 3, Card G).
| Item | Test | Owner | Status |
|---|---|---|---|
Build bz-welcomeback.liquid welcome-back v4.0 LP + template + assets + live PUT · audit 2026-05-18: specs complete (cascade-2026-05-13/uk-welcomeback-v4/ has 8 spec files); no Liquid snippet/section/template file yet on UK theme | T3 | Claude | specs only |
Build subscribe-and-save v4.0 B-variant LP + live PUT · audit 2026-05-18: A-variant page.bz-subscribe-save-v4.json + bz-subscribe-save-v4.liquid exist on UK theme; B-variant LP not yet built. Specs in cascade-2026-05-13/uk-subscribe-save-t5-newbuyer-ab/ (11 spec files incl. ab-test-binding) | T5 | Claude | A exists, B not built |
11-LP "no synthetic stimulants" template fix · audit 2026-05-18: only bz-exam-city.liquid still contains the phrase on UK theme — sweep appears already done or much narrower than originally scoped (confirm scope) | T1multi | Claude | likely >90% done — confirm scope |
| Image generation — T1 campaign images, T3 (7 briefs), T5 LP (~30 slots) | all | Claude | blocked — Card G |
| Source verbatim Judge.me testimonials — T3 (3), T5 (6–8 long-tenure) | T3T5 | Claude | not started |
| T4 UGC clips A3/B5 re-edit (trim TDAH/Ritaline mentions) | T4 | creative | advisory |
All 6 still-open rows are now interactive feedback cards at the bottom of this page — pick a preset option, add freetext, or expand the 📖 Full background details. Submit the lot via the inbox to come back to Claude.
| Item | Test | Status |
|---|---|---|
| Card G — finalise image library (brand_context/style-references + product-labels) card below | all | open · upstream blocker |
| Card A — ASA fix on 4 evergreen product pages (neurodivergent testimonial outside Schema Review wrapper) card below | site | open · pick approach |
| T2 DG-Parent video pick (#109) card below | T2 | open · share candidates |
| 36 go-live campaign-row verdicts (#113) card below | all | open · pick workflow |
| T3 "what's-new strip" card 2 — one verifiable new finding card below | T3 | decided · pair provided in notes (ELITE SynbAEctive + PRO press) |
| T5 — accept as directional PMax remarketing (cannot hard-fence) card below | T5 | decided · RESTRUCTURE test before launch |
| T5 — authorise PageFly A-page dataLayer injection card below | T5 | parked · no GTM at Brainzyme |
| T5 — "Forever" hero wording sign-off card below | T5 | decided · DROP the line |
| T5 — confirm "first delivery within 48hrs" SLA with fulfilment card below | T5 | open · reword recommended |
| T4 — confirm "Médecins"→"Pros Santé" swap; FR DG hook 3 wording cards below | T4 | decided · keep Pros Santé + "Pas de Ritaline" (FR territorial) |
| Per-test MASTER-CASCADE-PLAN row sign-off card below | all | open · final pre-build gate |
Google Ads UI / Shopify admin / GAQL work — cannot be done from spec files.
| Item | Test | Surface | Status |
|---|---|---|---|
Customer Match import — VERIFIED WORKING — live GAQL on user_list (acct 6195443501, 2026-05-17) shows all 57 bz_* lists OPEN + populated. UK addressable: bz_2plus ~5,500 · bz_lapsed_calm ~4,400 · bz_lapsed_dopamine ~7,600. DE/FR low addressable rate (~12% / ~19%) is structural (Google-account penetration) — DE/FR Customer Match deferred to cycle-2. | T3T5 | Google Ads | resolved |
Create WELCOMEBACK10 discount code in UK Shopify · RE-VERIFIED 2026-05-18 against the correct registry (reference/data-contracts/discount-codes.md): ALL 4 MARKET CODES ALREADY EXIST, created 2026-05-13 — UK WELCOMEBACK10 (price_rule 2461700751741), US WELCOMEBACK10 (1284849565888), DE WILLKOMMENZURUECK10 (2144041926920), FR RETOUR10 (1893251613014). All -10%, once_per_customer=TRUE, no expiry, customer_selection=all — exact match to Calum's freetext spec. T3 LP no longer blocked on the discount code. | T3 | Shopify (4 stores) | already created 2026-05-13 |
Build Shopify segments — bz_new_60d, bz_lapsed_180d, bz_lapsed_180_365d, bz_sub_active, bz_2plus_purchases_18mo_no_sub · audit 2026-05-18: 4 of 5 already exist in config/audience-segments-registry.json. Decision banked 2026-05-18 (Calum): Claude builds bz_2plus_purchases_18mo_no_sub via Shopify Admin API; Calum does the Customer Match import in Google Ads GUI (last-mile). | T1T5 | Claude (Shopify API) → Calum (GAds GUI) | claude · 1 segment to build |
Fix broken FR audience ID 272052698 — GAQL lookup + replacement | T4 | GAQL | ACUTE — blocks T4 build |
T1 audience IDs — 30014 "Parents of Teens" confirmed VALID (the earlier "broken" flag was a misdiagnosis, Card N); 30032 "College Students" added to AG2 | T1 | GAQL | resolved |
| T5 Customer Match chain — filter → export → eligible → attach (both arms) | T5 | Shopify + Google Ads | pre-enable |
| FUE = OFF + screenshots logged | T1T3T5 | Google Ads UI | pre-enable |
| GA4 custom dimensions — ag_variant (T3), test_id + ab_variant (T5) | T3T5 | GA4 admin | HARD pre-enable |
| Seal Subscriptions admin config — T3 stack mechanic, T5 config | T3T5 | Shopify admin | pre-enable |
| Conversion-goal GAQL audits | T1T4 | GAQL | pre-enable |
| Create the 4 campaigns PAUSED | all | Google Ads MCP | after specs + approval |
| UTM Sheet logging + pages_registry updates | all | Sheets | at build |
Mandatory gates before any PAUSED→ENABLED transition.
| Gate | Test | Status |
|---|---|---|
FR canonical messaging gate (check_copy_against_canonical.py --market fr) | T4 | HARD — not run |
| Codex QC — T1 (tactics + campaign-spec), T5 (tactics + strategy + ab-binding) | T1T5 | not run |
| T3 — codex_qc on copy-draft + humanizer pass + re-run canonical gate | T3 | queued |
Shopify Dev MCP validate_theme — bz-welcomeback.liquid | T3 | after build |
| Lighthouse gate — T3 + T5 landing pages | T3T5 | after build |
| Browserbase desktop QC + Playwright mobile QC — post-PUT | T3T5 | post-PUT |
| ops-targeting-qc 49-check (Phase 5.5) — PASS per test | all | per test |
| CEP protocol → PAUSED→ENABLED (cascade-qc-gate Gate B) | all | CEP / Calum |
Session 25 · 2026-05-18 — the T-Zero + T-ADHD + Section-C revival cascade (20 campaigns — not cycle-1). The architecture reconcile is done + verified (drift-validator GREEN; the session-30 gap-fix carried the arch to v4.13). The cascade is scoped + QC'd, and all 5 of its decisions are now answered (Calum 2026-05-18) — recorded as banked decision cards at the foot of this page. Full plan: projects/briefs/campaign-allowlist-drift-validator-2026-05-17/_master/cascade-execution-plan.md.
| Decision | Workstream | Status |
|---|---|---|
| Creative Production Tracker — who writes the cascade rows | T-Zero | answered — session 30 writes |
| T-ADHD — 4 scope questions + scope.md correction | T-ADHD | answered |
| Section-C revival — strategy approach | Revival | answered — full strategy |
| AMBER/RED compliance — the position to take | all | answered — adjunct, not treatment |
| T-ADHD US — net-new campaign creation under CEP | T-ADHD | answered — Claude creates, CEP |
With the Creative Production Tracker question answered, T-Zero is unblocked — ~1.5–2h of autonomous work to its creative-approval checkpoint. T-ADHD + revival run after their /campaign-strategy pre-flights (full per market, per the answered scope decision).
projects/briefs/t-zero-brand-pmax-refresh-2026-05-17/scope.md.banned-copy-gate.js market-awareness — RESOLVED 2026-05-18. UK/US neurodivergent+functional hard-ban preserved; FR/DE permitted on confirmed market surfaces. 5/5 hook tests pass; unidentified-market writes still fail strict. Session 32 bank.bz-evidence-data-range registered on all 4 stores, synced to Master Sheet). Pages Registry backfill still pending — 23 exam-season-* rows need components_used[] flip from bz-evidence-data-bundle → bz-evidence-data-range. Self-contained, not a cycle-1 gate.session-38-shopify.md NEXT-SESSION RESUME — RESOLVED 2026-05-18. File is current: last_updated: 2026-05-18, last_touch: 2026-05-18 — bank-full run. Session-38 go-live-unblock work shipped... The "stale 2026-05-09" claim was itself stale.Decision cards — 6 NEW (session-30 run, top) · 6 OPEN (Bucket 3) · 14 BANKED (below) — the 6 NEW cards (red 🆕 badge in titles) come from the 2026-05-18 19:30 autonomous run: Gate A canonical-fact BLOCK + test-ID collisions, Section-C budgets + UK Smartpill, T-ADHD US PMax-vs-Search override, T-ADHD DE+FR LP builds. They render first. The 6 OPEN Bucket-3 cards follow them. Each has preset options + freetext notes + a 📖 Full background expandable section. Pick options, add notes, hit Submit decisions — routes to Claude's inbox.