# SESSION-0005.0 — Shopify BDD analysis: final domains + library complete **Date:** 2026-05-31 **Driver:** Ben Stull + Claude (Sonnet 4.6) **Repos touched:** wiggleverse-ecomm-meta (session record), Shopify Analysis workspace (`~/projects/wiggleverse/ecomm/Claude/Shopify Analysis/` — not a git repo; flat file workspace) > **Honesty note on this artifact.** This is a *session record* authored by > the assistant from the conversation — faithful and uncurated as to > decisions, sequence, and wrong turns, but **not** the raw byte-for-byte > transcript. OHM publishes raw transcripts via `ohm-infra`'s > `publish-transcript.sh`; ecomm has no such tooling yet. Building a > transcript-dump path is a future roadmap item. Until then, records like > this stand in — labeled as what they are. --- ## Purpose Complete the Shopify BDD scenario library. Session 4 left four domains in the queue (`analytics/`, `finance/`, `markets/`, `sales-channels/`) and marked `apps/` as lower-priority / deferred. This session targeted those four, then Ben extended scope to include `apps/` — bringing the entire library to completion in a single session. ## What happened, in order 1. **Session opened; memory loaded.** Ben said "Continue the Shopify BDD work." Memory was read (`project-shopify-bdd.md`) — confirmed 4 remaining domains, locked style rules, and running totals (44 files, ~960 scenarios at session open). No realignment needed. 2. **Task list created.** Five tasks scaffolded upfront: one per domain plus an update task for memory and the domain map. `apps/` was not yet on the list — it was still marked deferred in memory. 3. **analytics/ — 3 files written.** `dashboard.md` (overview metrics — today's KPIs, period comparison, date-range switching, sales by channel, top products, returning vs. new customer split, widget drill-through, zero- state for new store; sessions and traffic — time-series chart, source breakdown, top landing pages, engagement metric, device-type filter), `reports.md` (sales — over time, by product, by traffic referrer, by billing location, by discount code, export, date-range change, channel filter; customers — over time, returning, first-time vs. returning split, by location, predicted spend tier; inventory — snapshot, sell-through rate, ABC analysis, days remaining; behaviour/conversion — online store conversion funnel, drop-off identification, top referrers, sessions by device type, sessions by landing page), `live-view.md` (real-time monitoring — current visitor count, geographic map, top active pages, recent completed orders, add-to-cart events, source filter, flash-sale monitoring, zero-activity state; activity feed detail — event-type distinction, add-to-cart frequency read, order value visibility). ~65 scenarios. Memory updated. 4. **finance/ — 3 files written.** `balance.md` (account overview — current balance, pending vs. available distinction, transaction history, date-range filter, payout deposit identification, transaction detail, CSV export; card and rewards — card details, fund transfer to card, cashback view, cashback redemption), `payouts.md` (schedule and history — next payout amount/date, history list, payout detail breakdown, processing fees identification, bank account on file, bank account change, instant payout, schedule frequency view and change; holds and reserve — hold with reason, reserve amount, failed payout notification), `bills.md` (bill history — current cycle charges, history list, invoice detail, plan subscription line item, app charges, transaction fees, download/print invoice; payment method — card on file, card update, billing failure notice; credits and adjustments — credit line item, pro-rated upgrade charge). ~65 scenarios. Memory updated. 5. **markets/ — 3 files written.** `international-markets.md` (creating and configuring — view all markets, single-country market, multi-country grouping, activate, deactivate without deleting, delete, unassigned countries, set primary market; per-market settings — currency, customer access toggle, dedicated domain/subdomain, language assignment, shipping rates, product availability restriction), `localized-pricing.md` (currency and exchange rates — automatic rate, manual/fixed rate, percentage-based price adjustment, negative adjustment for discounting, price rounding, pricing preview, variant-level fixed override, removing an override; duties and import fees — enable duty collection, duty-inclusive pricing, DDP shipping terms, duty collection disabled), `market-domains.md` (domain and subdomain assignment — assign existing domain, assign subdomain, assign subfolder path, view domain per market, remove domain assignment, conflict warning; geolocation and redirection — automatic country-based redirect, selector banner vs. auto-redirect, customer override preference, wrong-market browsing behaviour). ~70 scenarios. Memory updated. 6. **sales-channels/ — 5 files written.** `online-store.md` (channel management — confirm active, product availability toggle, password protection on/off, storefront preview, channel performance metrics; customization entrypoints — themes, navigation, preferences navigation shortcuts), `pos.md` (setup — add channel, view locations, activate at location, staff access, hardware setup, receipt configuration; selling and checkout — add by search/scan, apply discount, split payment methods, card reader payment, refund, offline cash sale, orders in admin view; inventory and cash management — inventory deduction on sale, cash drawer open/close session, shift cash flow summary), `shop-app.md` (channel overview — enable, eligibility requirements, store profile customization, product availability, performance metrics; Shop Pay and post-purchase — accelerated checkout, order tracking, post-purchase offers, follower count, Shop campaign to followers), `social.md` (Facebook & Instagram — connect Business account, catalog sync, Facebook Shop setup, Instagram Shopping tags, sync status and errors, channel orders, Meta Pixel configuration; Google & YouTube — connect Merchant Center, product sync, Smart Shopping campaigns, free listings, resolve disapproval; TikTok — connect for Business, catalog sync, ad campaign), `headless.md` (Hydrogen — create storefront, view connected storefronts, Storefront API credentials, deploy via Oxygen, rollback deployment, performance metrics, custom domain, delete storefront; Storefront API — product catalog retrieval, cart management, checkout redirect, customer account data, metafield exposure). ~85 scenarios. Memory updated. 7. **Memory and domain map updated — four-domain run complete.** Running total at this point: 12 domains, 61 files, ~1,215 scenarios. Domain map (`shopify-domain-map.md`) updated with Status column for all rows. 8. **Ben extended scope to apps/.** After completing the four queued domains, Ben said "Go ahead and tackle that, too." `apps/` had been flagged in memory as deferred/lower-priority. Two new tasks created on the spot. 9. **apps/ — 4 files written.** `app-store.md` (discovery — browse App Store, keyword search, category filter, app detail page, pricing preview, reviews, Shopify-built indicator; installation — free app install, permissions review and accept, decline and abort, paid app plan selection, free trial install, external-account setup redirect), `installed-apps.md` (list management — view all installed, open embedded app, billing status identification, last- used date, uninstall with confirmation, data retention post-uninstall, reinstall; permission review — view granted scopes, write-access risk understanding, permission upgrade prompt, revoke without uninstalling), `custom-apps.md` (custom app creation — navigate to section, enable custom app development, create app, configure Admin API scopes, generate access token, regenerate token, view API key and secret, delete custom app; collaborator access — approve collaborator request, grant section-level access, remove collaborator, seat-limit non-consumption, view all collaborators), `webhooks.md` (subscription management — view all, create, test, available topics, orders/create, products/update, update endpoint, delete, delivery failure retry, reactivate paused; security — HMAC verification, reject invalid HMAC, shop-domain header for multi-store routing). ~70 scenarios. Memory updated to final state. 10. **Session record requested.** Ben issued the record request with the exact filename pre-assigned (`SESSION-0005.0-TRANSCRIPT-2026-05-31.md`), target path, and format instructions matching SESSION-0001.0 house style. 11. **Sessions folder not mounted; access requested and approved.** Same pattern as Session 4 — the sessions directory is not a pre-connected workspace folder. `request_cowork_directory` called with explicit path; Ben approved it. SESSION-0001.0 and SESSION-0004.0 read for house style before writing. 12. **Session record written (this file).** Serial from main agent context; no subagents. ## Decisions citable later - **apps/ included in the BDD library.** Originally deferred as lower-priority; Ben extended scope in-session. The library now covers all 13 domains in `shopify-domain-map.md` (all rows marked ✅). - **Webhook HMAC verification captured as a scenario.** The security contract (verify `X-Shopify-Hmac-Sha256`, reject non-2xx on mismatch, use `X-Shopify-Shop-Domain` for multi-store routing) is documented in `apps/webhooks.md` — relevant to any integration layer we build. - **Custom app token is one-time visible.** The Admin API access token is revealed and copyable exactly once after install; navigating away loses it. Captured in `apps/custom-apps.md`; our platform must decide whether to adopt the same security posture or offer re-display with re-auth. - **Collaborator access does not consume a staff seat.** Shopify's carve-out for Partner/collaborator access is documented. Our platform will need a similar concept (agency/developer access without burning a plan-tier seat). - **Shopify-built apps are labeled distinctly in the App Store.** Trust signal in the discovery flow — our platform's equivalent marketplace should consider the same first-party provenance marker. - **POS offline cash sales sync on reconnect; card payments require connectivity.** Captured in `sales-channels/pos.md`. Fundamental constraint for the POS design (Hasan and Connie are both in-person sellers). ## Open / carried forward - **`general.md` first-person inconsistency** — carried from Sessions 2 and 3, still unresolved. Ben to decide. - **No git history on Shopify Analysis workspace** — still a flat folder with no version control. If the library is a reference artifact for the build phase, this is worth addressing. - **Sessions folder must be re-approved each session** — not a pre-connected workspace folder; `request_cowork_directory` will be needed again. - **Shopify BDD library is now complete.** The analysis phase is done. Next natural step is to consume the ~1,285 scenarios to drive platform design — either synthesising them into a capability map / requirements doc, or moving directly into the prototype (Wave 1 of the ROADMAP). ## Next session ``` This is the next session of the ecomm project. The Shopify BDD analysis phase is complete. READ FIRST: - Your memory for this project (project-shopify-bdd.md and any other loaded memories via MEMORY.md). - ~/projects/wiggleverse/ecomm/git/wiggleverse-ecomm-meta/ROADMAP.md — confirm where we are in the wave plan and what Wave 1 says. - ~/projects/wiggleverse/ecomm/git/wiggleverse-ecomm-meta/sessions/SESSION-0005.0-TRANSCRIPT-2026-05-31.md — especially "Decisions citable later" and "Open / carried forward." - ~/projects/wiggleverse/ecomm/Claude/Shopify Analysis/shopify-domain-map.md — the full domain list; all 13 domains are now marked ✅. CONTEXT: The Shopify BDD library is complete: 13 domains, 65 files, ~1,285 Gherkin scenarios covering every significant slice of Shopify admin functionality. It lives at ~/projects/wiggleverse/ecomm/Claude/Shopify Analysis/. The library was built to answer: "what does Shopify do, so we can decide what to rebuild?" That question is now answered in scenario form. The next phase is to act on it. TASK OPTIONS — Ben to choose or direct at session open: A) Synthesis pass — read across the 65 files and produce a platform capability map: which Shopify features are must-have for Hasan & Connie on day one, which are nice-to-have, and which we intentionally skip or do differently (our wedge). Output: a CAPABILITY-MAP.md in wiggleverse-ecomm-meta/. B) Wave 1 — vibe-code the throwaway prototype in wiggleverse-ecomm-prototype, driven by the Hasan & Connie scenarios from the BDD library (POS sale, storefront browse + checkout, discount at spend). Per the ROADMAP: super wobbly, local-only, fake money, no engineering standards. C) Wave 2 — OHM concept RFCs for the core commerce entities surfaced by the BDD analysis (Product, Order, Cart, Payment, Merchant, Storefront, Credit). These need to land in ohm-rfc/ before binding code can be written. Ben to decide direction. If unclear, do Option A first — the capability map is a fast session and sharpens scope for whichever wave comes next. NOTE: The sessions folder is not pre-connected — call request_cowork_directory for ~/projects/wiggleverse/ecomm/git/wiggleverse-ecomm-meta/sessions before writing the next record. ``` *Session 5 closed here.*