# SESSION-0004.0 — Shopify BDD analysis: content and online-store

**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

Continue the Shopify BDD scenario library. Eight domains were already complete
after Sessions 2–3 (settings, products, orders, customers, marketing,
discounts — 36 files, ~730 scenarios). Session 3's kickoff prompt put
`content/` first in the queue. This session targeted the next two domains:
`content/` and `online-store/`.

## What happened, in order

1. **Session opened; memory loaded.** Ben said "Continue the Shopify BDD
   work." Memory was read (`project-shopify-bdd.md`) — confirmed the domain
   queue, locked style rules, and running totals (36 files, ~730 scenarios at
   session open). No realignment needed; picked up directly at `content/`.

2. **Stale memory entry noticed and cleaned.** The remaining-domains list in
   `project-shopify-bdd.md` contained `content/` listed twice (lines 1 and 4)
   and `discounts/` listed again (line 3), despite discounts already being
   marked complete. These were artefacts of a prior-session edit. The memory
   was corrected when the first domain completed.

3. **content/ — 4 files written serially.** `files.md` (uploading — size
   limits, type restrictions, video, PDF; browsing — filter, search, sort,
   pagination, file detail; managing — delete, bulk delete, rename, in-use
   guard, re-upload same name; using — rich-text insertion, PDF link, file
   metafield, product gallery video), `metaobjects.md` (defining types —
   create, field types, required flag, display name, deletion with and without
   data; managing entries — CRUD, validation, search, pagination, duplicate;
   storefront capabilities — access toggle, URL/handle, template assignment;
   type administration — rename, API identifier, delete empty vs. with
   entries), `pages.md` (create/edit — rich text, images, publish, hide, edit
   live, delete, duplicate; SEO and URL — custom title/description, handle,
   auto-generate, view URL, canonical; templates — assign, revert, no-options
   case; list management — search, filter, sort, bulk publish, bulk delete,
   count), `blogs.md` (managing blogs — create, rename, handle, delete empty,
   delete with posts, comment moderation modes; posts — create, rich text,
   images, featured image, publish immediately, schedule, unpublish, edit
   live, delete; post SEO and metadata — SEO fields, handle, auto-generate,
   author, tags; comments — approve, reject, delete, reply, bulk moderate;
   RSS feed — availability, post appears after publish, unpublished excluded).
   ~110 scenarios. Memory updated; running total 40 files / ~840 scenarios.

4. **online-store/ — 4 files written serially.** `themes.md` (browsing —
   view installed, browse free and paid, filter by industry, preview;
   install/publish — add free, purchase paid, publish with confirmation,
   upload ZIP, invalid ZIP guard; duplicate/rename; download and delete —
   download ZIP, delete unpublished, block delete-live-theme, confirmation;
   updates — available badge, apply update, review changelog), `theme-editor.md`
   (open — live and unpublished theme, page-type navigation, device viewport
   toggle; sections — add, reorder by drag, remove, hide, page scoping;
   blocks — add, reorder, remove, configure; settings — edit text, background,
   theme-wide colors/typography, featured collection, item count limit, preview
   live changes, save, discard-with-confirm; code editor — open, edit Liquid,
   create file, delete file, invalid syntax guard, asset files, locale files;
   versioning — view file history, restore version, revert to snapshot),
   `navigation.md` (menus — view, create, rename, delete, view handle; adding
   items — collection, product, page, blog, post, custom URL, home, search,
   custom label; reorder and nest — drag top-level, create dropdown by indent,
   multiple children, un-nest, reorder within sub-menu; edit and remove items —
   label, destination, remove with children, save; linking to theme regions —
   header, footer, handle-based reference), `preferences.md` (store identity —
   title, meta description, favicon, remove favicon, social sharing image;
   analytics — GA4 add/remove, Facebook Pixel add/remove, GDPR note;
   password protection — enable with password, custom message, disable,
   correct/incorrect password, staff bypass; spam protection — enable/disable
   reCAPTCHA; store status notices — trial banner, paused store, custom domain
   visible). ~120 scenarios. Memory updated; running total 44 files / ~960 scenarios.

5. **Session record requested.** Ben issued the record request with the exact
   filename pre-assigned (`SESSION-0004.0-TRANSCRIPT-2026-05-31.md`), the
   target path, and explicit format instructions. He referenced SESSION-0001.0
   as the house-style exemplar and named SESSION-0003.0 as the "latest
   existing" to check.

6. **Sessions folder not mounted; access requested and approved.** The
   sessions directory (`~/projects/wiggleverse/ecomm/git/wiggleverse-ecomm-meta/sessions`)
   is not one of the two pre-connected workspace folders. `request_cowork_directory`
   was called with the explicit path; Ben approved it. Read SESSION-0001.0 and
   SESSION-0003.0 for house style before writing.

7. **Minor bash mount confusion.** When verifying the mounted shopify path
   (`/sessions/adoring-eager-bardeen/mnt/shopify/`) it appeared empty — the
   mount is `research/shopify`, not the entire `wiggleverse-ecomm-meta` tree.
   This was a quick dead-end; the correct approach was using file tools with
   the host path once the sessions folder was approved.

8. **Session record written (this file).** Serial from main agent context; no
   subagents. Matches SESSION-0001.0 / SESSION-0003.0 house style.

## Decisions citable later

- **Memory stale-entry cleanup is part of the update step.** When a domain-
  done edit reveals leftover cruft (duplicate entries, already-completed items
  in the remaining list), fix it in the same edit — don't leave it for the
  next session.
- **`online-store/` navigation.md records the menu-handle contract explicitly.**
  Handle is set at creation, is not auto-updated on rename, and is how Liquid
  references menus — this is a meaningful design constraint for the platform.
- **Theme editor versioning is file-level, not whole-theme snapshot (outside
  the explicit restore-snapshot case).** Captured in `theme-editor.md`;
  relevant for how we design theme management in the platform.
- **Serial single-agent approach continues to hold quality.** Two domains × 4
  files each, no style drift observed across 8 files written in a single
  context.

## Open / carried forward

- **`general.md` first-person inconsistency** — carried from Session 2,
  still unresolved. Ben to decide.
- **4 domains remaining** (in queue order):
  `analytics/`, `finance/`, `markets/`, `sales-channels/`.
- **Running total: 44 files, ~960 scenarios** (well above the original ~525+
  estimate; final count will likely reach ~1 200+).
- **No git history on Shopify Analysis workspace** — still a flat folder.
- **Sessions folder must be re-approved each session** — it is not a
  pre-connected workspace folder; `request_cowork_directory` will be needed
  again to write the next record.

## Next session

```
This is the next session of the ecomm Shopify BDD analysis project.

READ FIRST:
- Your memory for this project (project-shopify-bdd.md via MEMORY.md).
- ~/projects/wiggleverse/ecomm/Claude/Shopify Analysis/shopify-domain-map.md
  — the full domain list and session breakdown.
- ~/projects/wiggleverse/ecomm/git/wiggleverse-ecomm-meta/sessions/SESSION-0004.0-TRANSCRIPT-2026-05-31.md
  — especially "Decisions citable later" and "Open / carried forward."

CONTEXT:
Eight domains are complete: settings/ (15 files), products/ (6 files),
orders/ (5 files), customers/ (3 files), marketing/ (4 files),
discounts/ (3 files), content/ (4 files), online-store/ (4 files).
Running total: 44 files, ~960 scenarios.

TASK: Continue writing Gherkin BDD scenarios for the remaining four domains,
in this order:

  1. analytics/     — dashboard, reports (sales/customer/acquisition/behavior/
                       inventory/finance/custom), live view
  2. finance/       — Shopify Balance, payouts, bills, tax reports
  3. markets/       — market list, create market, market pricing, currency,
                       language/translation, domain/subfolder, product
                       availability, duty/tax rules per market
  4. sales-channels/ — Online Store channel, POS, Shop app, Buy Button,
                        Facebook & Instagram, Google, TikTok, headless/Hydrogen

For each domain:
- Create a new folder under ~/projects/wiggleverse/ecomm/Claude/Shopify Analysis/
- Write one .md file per sub-section (match the Shopify admin nav labels,
  kebab-case filenames)
- Follow the locked style rules exactly (business-behavior altitude,
  first-person steps, Background block per page context, But for negatives,
  H2 headers for groups within a file, no Scenario Outlines unless a table
  genuinely adds clarity)
- After each domain, update project-shopify-bdd.md in memory

DONE WHEN: all four remaining domains are written, memory is updated, and the
session record is written to:
~/projects/wiggleverse/ecomm/git/wiggleverse-ecomm-meta/sessions/SESSION-0005.0-TRANSCRIPT-<date>.md

NOTE: The sessions folder is not pre-connected — call request_cowork_directory
for ~/projects/wiggleverse/ecomm/git/wiggleverse-ecomm-meta/sessions before
writing the record.
```

*Session 4 closed here.*
