← Command Centre · GSD: session-2026-05-09-tooling-and-tactics · Branch: feature/v4-migration
These are the only blockers. Each below: the question, my recommendation with reasoning, what it unblocks, and effort to execute once approved.
Question: Migrate all per-page discount codes (DOPAMINE10, GABA10, KONZ10, PERI10, BF10, FATIGUE10, DOPAMIN10, STUDENT15/EN15, BF15, BULL10/15) to the canonical WELCOME family (UK WELCOME10, US WELCOME10, DE WILLKOMMEN10, FR BIENVENUE10) — or keep the per-page codes for "attribution" purposes?
Recommendation: Strategy A (full canonical migration).
Why (data-backed via Shopify Admin API verification 2026-05-09):
The "per-page attribution" rationale for branded codes is empirically dead — 0 redemptions = nothing to attribute. The codes are maintenance debt with no upside, AND the 15%-codes are actively showing customers dead codes.
Unblocks: Cleanup of ~324 references in code + 159 dead-code references. Fixes 3 NEW critical bugs (NC1/NC2/NC3 below). Fixes the 2 bundle drift bugs (UK + DE) committed earlier today.
Effort once approved: ~2-3 hours autonomous (code refactor + 4 store deploys + Browserbase QC sweep). PageFly snippets need Calum-side edits via the PageFly UI (~15 min).
If you want to keep per-page codes for any future attribution work — say so explicitly and I'll just fix the 15%-codes (Strategy C, the tactical hybrid). Status quo is the only thing the data argues against.
Question: UK Dopamine guide FAQ says "Is Brainzyme a dopamine supplement? Yes." US Dopamine guide FAQ says "No, Brainzyme is a food supplement...". One is wrong for cross-market brand consistency. Which wording should be canonical?
Recommendation: US "No" wording wins. Update UK FAQ to: "No — it is a food supplement that provides nutritional support for the dopamine synthesis pathway."
Why: FDA structure-function compliance is the stronger constraint (you can't say "is a dopamine supplement" anywhere — it implies a drug claim). EFSA/UK ASA framing aligns with this. The US wording is the safer, exportable answer.
Unblocks: 5 commits/edits to UK Dopamine guide Liquid + run copy_preflight.py + push + live deploy. About 45 min total.
Surfaced by retro tactics audit on UK + US Dopamine guides 2026-05-09. Bug existed before today's work — pages have been live with contradicting answers since session 38.
Question: The 2 RED COMP pages (DE Ritalin alternative + FR Ritaline alternative) are LIVE with all 8 illustrations as PLACEHOLDERS (using onerror display:none graceful degradation). Need to commission 17 illustrations total (8 DE + 8 FR + 1 hero variant) via viz-nano-banana / Flux. How aggressively to gate the commission?
Recommendation: Commission ONE approved style frame first (probably the COMP-page hero) → your visual sign-off → batch the remaining 16. Stop the run if first frame doesn't land your style brief.
Why: Per Codex 5.5 review of the Phase 5 next-steps triage — bulk-commissioning 17 frames before any human-in-loop visual approval risks 17× wasted runs if the style needs iteration. One-frame-first is cheap insurance.
Unblocks: Closes Phase 5 Batch 1 critical item C4 (the highest-intent regulatory pages live with zero visual proof). Each frame ~3-5 min via viz-nano-banana once style is approved.
DE Ritalin and FR Ritaline are the highest-intent, most sceptical audience in the entire catalogue (people researching prescription stimulant alternatives). Pages with zero visuals = credibility catastrophe for that persona.
retro_derived guard — switch to git-history check PENDING (cheap improvement) REVIEWQuestion: The new tactics gate (added today) checks if retro_derived: true is being abused on a new doc by querying Shopify Admin API to verify the article exists. Brittle — any 401 fails the gate closed (even legit retro docs). Should we replace the API check with a git-history-based check?
Recommendation: Yes, switch to git history. Use git log --diff-filter=A --format=%ai -- {path} to read the tactics doc's first-commit date. If ≤ 2026-05-09 → legitimate retro; if > 2026-05-09 → abuse. Pure-local check, no network dependency, no auth state.
Why: When Shopify tokens went stale earlier today, the gate falsely failed-closed on ALL 10 retro pages even though they're legitimate. Git history is always available locally and immune to API auth churn.
Unblocks: Nothing critical — gate works correctly when auth is live. But this is a low-effort hardening that prevents future false-negatives.
Effort: ~10 lines in tools/lib/tactics_gate.py. About 20 min.
tools/lib/tactics_gate.py shared module; both publishers (publish_planned_articles.py + shopify_publish_page.py) now enforce. retro_derived: true abuse guard added. ops-shopify-page-builder + ops-go-live SKILL.md updated with the 3 new mandatory gates. connections.yaml Playwright consuming_skills populated. Per Codex 5.5 + Sonnet verifier sub-agent.browserbase-mcp.md, browser-harness.md, playwright.md. Connections registry updated. Tweet version: "Browserbase for parallel desktop sweeps, Browser Harness for logged-in user context, Playwright for clean-state mobile or console testing."retro_derived: true as a one-time pre-gate exception.projects/briefs/{slug}/tactics.md before any Shopify Admin POST. Template at projects/briefs/_tactics-template.md. Memory: feedback_tactics_first_pre_publish_gate.md.F:/Agentic-OS/ is canonical for all new tools/repos/installs. F:/Claude Root/ is v3.x legacy read-only. Browser Harness moved to canonical location.tool-youtube skill (yt-dlp under the hood). Memory: feedback_youtube_route_to_tool_youtube.md..liquid edit MUST pass mcp__shopify-dev-mcp__validate_theme before live PUT. Server registered in .mcp.json.Plus 4 theme-repo commits today (UK/US/DE/FR) carrying D1+D3+D4 Liquid plumbing for discount_code render-param + bundle drift fixes (UK + DE bundle subscribe URLs corrected against canonical Products Catalogue Sheet).
| Item | Verified state | Status |
|---|---|---|
US GABA10 active in Shopify admin | ACTIVE -10% never expires; 0 redemptions ever | CLEARED |
US DOPAMINE10 active in Shopify admin | ACTIVE -10% never expires; 0 redemptions ever | CLEARED |
US GABA hardcoded variant 48197708710080 | VALID — Brainzyme FOCUS ELITE 1-month, $65, SKU 0712038530496-2 | CLEARED |
FR GABA10, DE DOPAMIN10, DE GABA10 | All ACTIVE -10% | CLEARED |
| Paid-traffic freeze on RED COMP pages | MOOT — GAQL sweep on customer 6195443501 (881 ENABLED ad_group_ads) found 0 hits against any of the 10 just-published URLs | CLEARED |
| FR Ritaline external legal review | Calum confirmed: disclaimer present on page → fine to proceed | CLEARED |
| Shopify auth (4 stores) | All authenticate after shopify_get_token.py from Agentic-OS path (Claude Root copy writes to wrong .env) | RESTORED |
| ID | Issue | Severity |
|---|---|---|
| NC1 | UK STUDENT15 EXPIRED 2021-03-30 (4 years dead) but still referenced in bz-exam-city.js MESSAGES + bz-shelf-data.liquid. UK exam-city page is showing customers a dead 15%-off code right now. | CRITICAL |
| NC2 | BF15 EXPIRED 2025-12-01 across all 4 stores but referenced in 155 PageFly snippet locations. Brain Fog landing pages on every market show customers a dead 15%-off code. | CRITICAL |
| NC3 | BULL10 + BULL15 NEVER existed in UK admin but referenced 4× in pf-253985d1.liquid. Customer sees an invalid code. | HIGH |
All three resolve as a side-effect of approving D1 (Strategy A migration).
F:/Agentic-OS/. F:/Claude Root/ is read-only legacy.projects/briefs/{slug}/tactics.md. Both publishers enforce..liquid file passes mcp__shopify-dev-mcp__validate_theme before live PUT.F:/Agentic-OS/projects/briefs/session-2026-05-09-tooling-and-tactics/ — full PROJECT.md / REQUIREMENTS.md / ROADMAP.md / STATE.md + 6 decision files in .planning/decisions/projects/briefs/shopify-modularization/.planning/phase-5-next-steps-triage.md — see §0 update bannerprojects/briefs/shopify-modularization/.planning/phase-5-discount-code-audit.mdreference/browser-tools-routing.mdprojects/briefs/session-2026-05-09-tooling-and-tactics/.planning/verification-report.mdprojects/briefs/v4.0-published/{handle}/tactics.md × 10Last commit: 29eb9f1 · Branch feature/v4-migration · Updated 2026-05-09