diff --git a/ecomm/0028/SESSION-0028.0-TRANSCRIPT-2026-06-11T01-07--2026-06-11T07-21.md b/ecomm/0028/SESSION-0028.0-TRANSCRIPT-2026-06-11T01-07--2026-06-11T07-21.md
new file mode 100644
index 0000000..3710acc
--- /dev/null
+++ b/ecomm/0028/SESSION-0028.0-TRANSCRIPT-2026-06-11T01-07--2026-06-11T07-21.md
@@ -0,0 +1,137 @@
+# Session 0028.0 — Transcript
+
+> App: ecomm
+> Date: 2026-06-11 (01:07 → 07:21 PST)
+> Type: capture (tracked-lite)
+> Claude-Session: bae0bf40-c6c8-4bbc-840d-e9ff3f55b146
+> Goal: Capture the operator's brand decision — rebrand `ecomm` customer-facing
+> surfaces and domain as **Wiggleverse Market** — as typed, source-linked Gitea
+> issues; plus the follow-on shopper-first/seller-URL marketplace IA ask.
+> Outcome: **Two features filed** — ecomm **#23** (Wiggleverse Market rebrand,
+> P1) and ecomm **#24** (shopper-first default + seller URL split, P2). Drafts
+> deleted after filing (INV-8); both repos clean; no code changes.
+
+## Plan
+
+Capture session per `wgl-capture` (MVP design, INV-1–8): claim tracked-lite
+transcript → resolve app/content repo → assemble context from the operator's
+ask → size-challenge into `type/*` → draft each issue in reviewable blocks in
+`wiggleverse-ecomm-content/issues/` → file on approval via `capture-issues.sh`
+→ delete drafts → finalize tracked-lite (no artifact submission).
+
+## Pre-session state
+
+- `wiggleverse-ecomm` main @ 11acb3a; SLICE-1/2/3 shipped; SLICE-4 PPE half
+ shipped: v0.4.0 LIVE at `https://ecomm-ppe.wiggleverse.org`, PUC-11 rehearsal
+ green (PR #17). Prod not yet stood up — the recorded next goal.
+- Customer-visible branding = the internal codename: `frontend/index.html:9`
+ `
ecomm`; `frontend/src/ui/kit.tsx` wordmark "ecomm" / footer
+ "ecomm · a Wiggleverse line"; landing hero "Sell online, honestly" with sole
+ CTA "Create your storefront"; sign-in emails speak as "ecomm" (open issue
+ #16, email branding).
+- Two concurrent `--INPROGRESS` sessions surfaced at claim (0026, 0027), both
+ running in their own worktrees under `.claude/worktrees/`.
+
+## Turn-by-turn arc
+
+1. **Open + claim.** Operator opened with `/wgl-capture`: "rebrand 'ecomm' as
+ 'marketplace' on the front-end and domain… repo names stay 'ecomm'; the
+ official brand is 'Wiggleverse Market'." Claimed session 0028
+ (tracked-lite). Concurrency: skipped worktree isolation — capture writes
+ only uniquely-slugged content-repo draft files, no session-repo writes
+ (logged as deferred decision D1).
+2. **Resolve + ground.** App `ecomm`; content repo
+ `wiggleverse-ecomm-content` (drafts under `issues/`); tracker
+ `wiggleverse/wiggleverse-ecomm`. No unfiled drafts to adopt. Grepped the
+ shipped frontend/mailer to ground the pain in real strings (see pre-state).
+3. **Ask 1 sized → feature/P1.** One increment: brand the customer surface +
+ domain, internal names stay. Time-criticality driven by the prod stand-up
+ being next (mint the brand domain once, not migrate later). Drafted
+ `issues/rebrand-wiggleverse-market.md` in blocks (business → structural →
+ solution notes after discussion, per the type's batching profile).
+4. **Domain fixed.** Operator: "It's market.wiggleverse.org" — acceptance
+ pinned to it. Open calls deferred: short brand form → SD; #16 linked as
+ related/likely-satisfied (D3, D4).
+5. **Approach validated + PPE rename confirmed.** Proposed: single
+ brand-strings source; email identity via deployment record (also resolves
+ #16); domain cutover via DNS + deployment record. Operator confirmed **PPE
+ renamed → market-ppe.wiggleverse.org** ("…, yes" — read as approval to
+ file, D2). Solution notes written; labels ensured; **filed #23**
+ (`type/feature` / `priority/P1`):
+ https://git.wiggleverse.org/wiggleverse/wiggleverse-ecomm/issues/23
+ Draft deleted (INV-8).
+6. **Ask 2.** Operator: the marketplace's default experience must be customer
+ sign-up, not seller; seller experience on a different URL, Etsy-style
+ ("become a seller" from the signed-in profile menu). Noted the
+ `marketplace.wigglevese.org` typo → used the decided
+ `market.wiggleverse.org`. Grounded the pain: today's landing is 100%
+ seller-pitched (SD-0001 §5.1), no shopper path at all.
+7. **Ask 2 sized → feature/P2.** Drafted
+ `issues/shopper-first-seller-split.md` (business block); flagged the three
+ open calls (seller URL shape, priority, dependency framing). Operator:
+ "File it and all implementation decisions will happen in the solution
+ design." Structural block + minimal Solution notes (Etsy reference +
+ candidate URLs, explicitly non-binding/deferred) written; **filed #24**
+ (`type/feature` / `priority/P2`, depends #23):
+ https://git.wiggleverse.org/wiggleverse/wiggleverse-ecomm/issues/24
+ Draft deleted. (#24 priority P2 self-assigned — D5.)
+8. **Finalize.** Operator invoked `/wgl-session-finalize`. Base survey: both
+ repos clean on main, nothing unpushed, no PRs, no worktree, drafts already
+ dispositioned (`list-unfiled-drafts.sh --all` empty). Memory updated
+ (`project_ecomm_clean.md` + MEMORY.md): session 0028 block; next /goal
+ amended to mint `market.wiggleverse.org` at prod stand-up (D6). Transcript
+ published (this file).
+
+## Deferred decisions
+
+Autonomous-mode low-confidence calls, surfaced at closeout:
+
+- **D1 — no worktree isolation** despite live concurrent sessions 0026/0027.
+ Rationale: capture writes only the content repo's working tree with a unique
+ slug; zero session-repo writes. Alternative: full Step-6b worktree isolation.
+- **D2 — read "ppe should be renamed to market-ppe.wiggleverse.org, yes" as
+ approval to file #23** (INV-1) rather than re-asking for an explicit "file
+ it" — it answered the message that ended "say the word and I'll file".
+- **D3 — ecomm#16 (email branding) linked as related/likely-satisfied by #23**,
+ not closed or folded in. Reconcile at #23's Solution Design.
+- **D4 — short brand form** ("Market" vs full "Wiggleverse Market") deferred to
+ the Solution Design (acceptance allows "an agreed short form").
+- **D5 — #24 priority P2** (Value 6 · TC 4 · Opp 2 ÷ Size 4 ≈ 3): must precede
+ public launch but doesn't gate prod stand-up. Operator didn't explicitly
+ confirm; bump to P1 if shopper-first is part of the launch definition.
+- **D6 — next /goal amended, not resequenced**: prod stand-up proceeds and
+ mints `market.wiggleverse.org` (the hostname decision is made in #23); the
+ rest of the rebrand (UI strings, email identity, PPE rename) ships as #23's
+ own feature work after its SD. Alternative: run #23's brainstorming/SD
+ before prod stand-up.
+
+## Cut state (end of session)
+
+| Repo | State |
+| --- | --- |
+| `wiggleverse-ecomm` | main @ 11acb3a, clean — no changes this session |
+| `wiggleverse-ecomm-content` | main, clean — drafts created then deleted post-filing (INV-8) |
+| Tracker `wiggleverse/wiggleverse-ecomm` | **+#23** (feature/P1, rebrand → Wiggleverse Market @ market.wiggleverse.org, PPE → market-ppe) · **+#24** (feature/P2, shopper-first default + seller URL split, depends #23) |
+
+Both #23 and #24 are `type/feature` → each requires a brainstorming session →
+Solution Design before any plan/code (§4.3 gate). #23 first; #24 hangs off it.
+
+## What lands on the operator's plate
+
+- **Skim #23 and #24** — both were filed under autonomous posture (D2); the
+ bodies are canonical.
+- **React to D5/D6 if wrong:** #24's P2, and prod-stand-up-before-#23's-SD
+ (prod mints `market.wiggleverse.org` either way).
+- Cloudflare DNS for `market.wiggleverse.org` / `market-ppe.wiggleverse.org`
+ will be operator-adjacent gestures when #23/prod stand-up execute (CF token
+ in Keychain).
+
+## Prompt the operator can paste into the next session
+
+```
+/goal Complete SLICE-4 of SD-0001 v0.3.0 by standing up ecomm prod and rehearsing its bootstrap — define the prod deployment record (a second flotilla deployment per launch-app §5.1), run the suite provisioning gestures with the operator (project/env split decision, provision-datastore Cloud SQL w/ backups+PITR per D-8, provision-vm, prod domain DNS = market.wiggleverse.org per ecomm#23 — the brand decided in capture 0028), bind secrets (session secret, DATABASE_URL, SMTP ref), flotilla-core deploy, then the operator walks the PUC-11 prod rehearsal (real sign-up → storefront → admin with a real emailed code) recorded in docs/BOOTSTRAP.md — per wiggleverse-ecomm-content/specs/SD-0001-mvp-sign-up-and-single-storefront.md §7.2 (SLICE-4); DoD: prod rehearsal recorded; Feature #1 acceptance fully met and Feature #1 closed.
+```
+
+(Or `/goal next` — the field is persisted in `project_ecomm_clean.md`.
+Alternative first move if D6 is wrong: `/wgl-brainstorming` the Solution Design
+for ecomm#23 before prod stand-up.)
diff --git a/ecomm/0028/SESSION-0028.0-TRANSCRIPT-2026-06-11T01-07--INPROGRESS.md b/ecomm/0028/SESSION-0028.0-TRANSCRIPT-2026-06-11T01-07--INPROGRESS.md
deleted file mode 100644
index d69b790..0000000
--- a/ecomm/0028/SESSION-0028.0-TRANSCRIPT-2026-06-11T01-07--INPROGRESS.md
+++ /dev/null
@@ -1,21 +0,0 @@
-# Session 0028.0 — Transcript
-
-> App: ecomm
-> Start: 2026-06-11T01-07 (PST)
-> Type: capture
-> Claude-Session: bae0bf40-c6c8-4bbc-840d-e9ff3f55b146
-> Status: **PLACEHOLDER — claimed at session start; finalized at session end.**
->
-> This file reserves session ID 0028 for ecomm. The driver replaces this
-> body with the full transcript and renames the file to its final
-> SESSION-0028.0-TRANSCRIPT-2026-06-11T01-07--.md form at session end.
-
-## Launch prompt
-
-_(launch prompt not captured at claim time)_
-
-## Deferred decisions
-
-_Autonomous-mode low-confidence calls the driver made and would have
-liked operator input on. Appended as the session runs; surfaced at
-finalize. Empty if none._