Session 9 May 2026 — Tooling & Tactics Rollout

← Command Centre · GSD: session-2026-05-09-tooling-and-tactics · Branch: feature/v4-migration

⚡ Ops infrastructure overhaul + 10 articles published

What started as Phase 5 publish work expanded into a full ops-infrastructure rollout: tactics-first publish gate, browser-tools 3-way routing matrix, Agentic-OS root policy, YouTube routing fix, retro-tactics backfill of 10 published articles, plus Shopify Dev MCP + Browser Harness install. 4 pending decisions for Calum below — these are the only blockers left for live deploys.

9
Commits shipped (Agentic-OS) + 4 theme repo commits
10
Articles published live (UK/US/DE/FR)
5
New canonical rules in AGENTS.md
8
Memory feedback files banked

Pending decisions (1 resolved · 3 flagged for review)

These are the only blockers. Each below: the question, my recommendation with reasoning, what it unblocks, and effort to execute once approved.

v2.24 three-state decisions: Each verdict button cycles through 3 states. State 0 — Suggested (dashed outline, dimmed) = recommendation, not counted. State 1 — Selected (filled tint) = intent registered, still not counted. State 2 — Confirmed (solid + check) = double-tap to confirm; this is what gets pushed to Inbox. Click a different verdict to switch; click a confirmed verdict to de-confirm. Feedback textareas auto-save on every keystroke.

D1 · Discount-code strategy — Strategy A (full canonical migration) DONE

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.

Resolved 2026-05-09: Strategy A approved — full canonical migration to WELCOME family (UK/US WELCOME10, DE WILLKOMMEN10, FR BIENVENUE10). Per-page codes (BF15, STUDENT15, etc.) deprecated. Canonical doc: reference/data-contracts/discount-codes.md.

D2 · FAQ canonical wording (UK/US Dopamine contradiction) PENDING REVIEW

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.

D3 · Illustration commission gate (one-frame-first approach) PENDING REVIEW

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.

D4 · Soften retro_derived guard — switch to git-history check PENDING (cheap improvement) REVIEW

Question: 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.

Today's shipped work (commit chain)

29eb9f1Verifier remediation — 4 HIGH + 3 MED + 1 LOW gaps closed. Tactics gate extracted to 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.
f84cb14STATE.md update — verified Shopify Admin discount-code state across 4 stores, paid-traffic GAQL sweep (0 ENABLED campaigns hit any of the 10 published URLs), 3 NEW criticals (NC1/NC2/NC3 dead-code references) added to triage.
25cc521Browser-tools routing canonical + GSD project for the session. AGENTS.md §"Before browser/page automation (MANDATORY)" + CLAUDE.md mirror. 3 service contracts: 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."
104234dRouting rollout final pass — connections-registry validator now exits 0 (was failing on 14 pre-existing env-var drift issues; fixed via .env.example additions + IGNORE_ENV allowlist).
e27081f10 retro tactics docs backfilled for Phase 5 published articles. 5 Sonnet sub-agents in parallel produced one tactics doc per published page (UK/US/DE/FR Dopamine + GABA + DE/FR Ritalin COMP). Each carries retro_derived: true as a one-time pre-gate exception.
33a6e7bTactics-first hard-gate added to AGENTS.md §"Before building Shopify pages" — every new page now requires 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.
f66215aAgentic-OS as project root policy locked in. 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.
f7dbd1cYouTube routing fix — Gemini hallucinated YouTube content with high confidence (claimed video was about Ollama/Open WebUI; actually about Browser Harness from BrowserUse). YouTube URLs now route to tool-youtube skill (yt-dlp under the hood). Memory: feedback_youtube_route_to_tool_youtube.md.
3e745edShopify Dev MCP gate added as mandatory pre-deploy gate. Every .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).

Verified state (cleared from triage)

ItemVerified stateStatus
US GABA10 active in Shopify adminACTIVE -10% never expires; 0 redemptions everCLEARED
US DOPAMINE10 active in Shopify adminACTIVE -10% never expires; 0 redemptions everCLEARED
US GABA hardcoded variant 48197708710080VALID — Brainzyme FOCUS ELITE 1-month, $65, SKU 0712038530496-2CLEARED
FR GABA10, DE DOPAMIN10, DE GABA10All ACTIVE -10%CLEARED
Paid-traffic freeze on RED COMP pagesMOOT — GAQL sweep on customer 6195443501 (881 ENABLED ad_group_ads) found 0 hits against any of the 10 just-published URLsCLEARED
FR Ritaline external legal reviewCalum confirmed: disclaimer present on page → fine to proceedCLEARED
Shopify auth (4 stores)All authenticate after shopify_get_token.py from Agentic-OS path (Claude Root copy writes to wrong .env)RESTORED

3 NEW critical issues surfaced today

IDIssueSeverity
NC1UK 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
NC2BF15 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
NC3BULL10 + 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).

5 new canonical AGENTS.md rules

  1. Project root mandatory: all new tools/repos/installs go inside F:/Agentic-OS/. F:/Claude Root/ is read-only legacy.
  2. Tactics-first publish gate: no Shopify Admin POST without projects/briefs/{slug}/tactics.md. Both publishers enforce.
  3. Browser-tools routing matrix: Browserbase parallel desktop / Browser Harness logged-in / Playwright clean mobile + console.
  4. Shopify Dev MCP validation: every .liquid file passes mcp__shopify-dev-mcp__validate_theme before live PUT.
  5. YouTube → tool-youtube only: Gemini hallucinates YouTube content. Negative routing rule in CLAUDE.md.

Where to dig in

Last commit: 29eb9f1 · Branch feature/v4-migration · Updated 2026-05-09

Confirmed: 0 · Feedback: 0 · double-tap a verdict to confirm