# SESSION-0001.0 — ecomm bootstrap

**Date:** 2026-05-30
**Driver:** Ben Stull + Claude (Opus 4.8)
**Repos touched:** wiggleverse-ecomm-meta, wiggleverse-ecomm,
wiggleverse-ecomm-flotilla, wiggleverse-ecomm-prototype, engineering (local
edit, uncommitted)

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

First session of the ecomm project — the **first software built on the OHM
RFCs**. Goal was framing and bootstrap, not building the app: align on the
framework, capture the business context, and get the RFC-consumption flow +
repos set up. Per Ben: "don't worry about exactly what will be built yet."

## What happened, in order

1. **Framework alignment.** Read the canonical sources before answering:
   `engineering/README.md` (the wiggleverse pattern), `ohm-rfc/RFC-0001`
   (Human), `ohm-rfc/CONTRIBUTING.md` (RFC process), and crucially
   `ohm-rfc/OPERATIONAL-MODEL.md` (concept vs operational RFCs; the gate;
   "consume OHM as contracts"). Surfaced three forking questions.

2. **Three framework decisions (settled):**
   - **Everything becomes an OHM RFC** — every load-bearing concept, human
     *and* commerce (Product, Order, Cart, Payment), lands in `ohm-rfc`,
     defined in relation to the Human it serves. *Conscious tension noted:*
     this broadens OHM past its strictly-"Open Human Model" self-description
     (RFC-0001/README) — flagged for an explicit corpus note later.
   - **Prototype-first** (guide §2) — throwaway vibe-code → `SPEC.md` from
     it; binding code inherits nothing.
   - **New standalone product** — own framework repo + own flotilla;
     consumes OHM RFCs as contracts; shares no code with `rfc-app`.

3. **Created the bootstrap ROADMAP** (Waves 0–5: bootstrap → prototype →
   concept RFCs → spec → build → operate), in OHM's roadmap texture, with a
   next-session brief.

4. **Business context (Hasan & Connie).** ecomm is a **multi-tenant Shopify
   alternative** (online storefronts + in-person POS). This *resolved* the
   biggest open shape question — multi-tenant platform, not per-customer
   deployments. Hasan: 3D printing + laser/wood maker goods. Connie:
   miniatures, large Facebook-group following, B&M industry in crisis.
   Revenue: implementation/maintenance via Ben's consultancy "Ben bets on
   us" (hourly, not platform code); no referral/markup/ad revenue; the
   "breakage"/prepaid-balance mechanic funds the platform ethically.

5. **Payment Strategy doc received & integrated** (`load-rail-policy_7.md` →
   `specs/Payment Strategy.md`). This materially sharpened *and corrected*
   the model:
   - **Wrong turn corrected:** earlier we (Ben + assistant) both said
     balances "earn interest" for customers. The doc is explicit — the
     **platform** earns yield on **safeguarded float**, and you **cannot pay
     holders interest or lend the float**. The customer reward is a
     **discount at spend**, funded by avoided card fees + float yield +
     breakage. Roadmap + memory fixed.
   - **Legal gate elevated:** the cross-owner "platform credit" tier is
     **open-loop = money transmission** (trigger is common ownership, not
     cash-out). Needs a licensed program-manager/BIN sponsor and
     **attorney sign-off before building**. Captured as a hard pre-build
     gate. The closed-loop single-owner "shop gift card" tier is the light
     regime. Channel rule ("release only on settled funds") tied to the POS
     requirement.

6. **Repos configured.** Scaffolded four repos under `ecomm/git/`, moved the
   roadmap + renamed the payment spec into `-meta`, added a "standard repo
   set" table to `engineering/README.md` §5, initial-committed each, and
   pushed to Gitea:
   - `wiggleverse/wiggleverse-ecomm-meta` — roadmap, specs, sessions, docs
   - `wiggleverse/wiggleverse-ecomm` — implementation placeholder
   - `wiggleverse/wiggleverse-ecomm-flotilla` — operator-CLI stub
   - `ben.stull/wiggleverse-ecomm-prototype` — throwaway
   - *Wrong turn:* the assistant tried to ask remote-namespace + transcript
     questions via a structured prompt; Ben interrupted/rejected it and
     simply pasted the four created remote URLs — literal
     `wiggleverse-ecomm-*` names, prototype under `ben.stull/`. Faster.
   - Identified there's no `tea`/`gh` CLI on the machine, so remote creation
     was Ben's (operator) gesture; the assistant only wired `origin` +
     pushed (HTTPS creds were cached).

## Decisions citable later

- OHM = single dictionary for all concepts (human + commerce). [framework #1]
- Prototype-first; standalone product. [framework #2, #3]
- Multi-tenant platform; Hasan & Connie are merchants #1 and #2.
- Float yield ≠ holder interest; reward is discount-at-spend. [Payment Strategy §5]
- Platform-credit tier = money transmission → attorney gate before build.
- Standard repo set documented in engineering guide §5.

## Open / carried forward

- **engineering/README.md §5 edit is uncommitted** — left for Ben to land
  (branch+PR per the guide's own rule) or handle in the engineering repo.
- **Pending input:** the broader payments / business-model walkthrough (the
  ethics/economics doc is in hand).
- **Transcript tooling** for ecomm (a `publish-transcript`-equivalent) is
  not built; records are hand-authored for now.
- **OHM self-description broadening** wants an explicit corpus note/RFC.

## Next session

**Wave 1 — vibe-code the throwaway prototype** in
`wiggleverse-ecomm-prototype`. The kickoff prompt below was handed to Ben in
chat at session close (per engineering guide §6 — next-session prompt
delivered before publishing).

```
This is Session 2 of the ecomm project — Wave 1: vibe-code the throwaway prototype.
ecomm is the first software built on the OHM RFCs, following the wiggleverse
engineering pattern. Don't build the "real" software this session — this is
discovery.

READ FIRST (in this order):
- Your memory for this project (ecomm-business-context, ecomm-framework-decisions,
  wiggleverse-engineering-pattern).
- ~/projects/wiggleverse/ecomm/git/wiggleverse-ecomm-meta/ROADMAP.md — especially
  the "Operating instructions for the next session" block at the bottom, and the
  "Payments & credits model" section.
- ~/projects/wiggleverse/ecomm/git/wiggleverse-ecomm-meta/specs/Payment Strategy.md
- ~/projects/wiggleverse/ecomm/git/wiggleverse-ecomm-meta/sessions/SESSION-0001.0-TRANSCRIPT-2026-05-30.md
- ~/projects/wiggleverse/engineering/README.md §2 (prototype-first) and
  ~/projects/wiggleverse/ohm-rfc/OPERATIONAL-MODEL.md (concept→operational RFCs).

TASK: Build a throwaway, vibe-coded prototype of the ecomm platform in the
wiggleverse-ecomm-prototype repo (~/projects/wiggleverse/ecomm/git/wiggleverse-ecomm-prototype).
ecomm is a multi-tenant Shopify alternative: merchants run online storefronts AND
take in-person payment (it replaces their POS register).

DRIVE IT WITH REAL SCENARIOS:
- Hasan — 3D printing + laser cutting/engraving on wood (physical maker goods).
- Connie — miniatures / dollhouse items / knick-knacks; big Facebook-group following.
- The in-person POS flow (a sale at a trade show / in the shared shop).

CONSTRAINTS (this is a prototype, not the product):
- Super wobbly. No spec, no tests, no deploy discipline, no engineering standards.
- Runs locally or on a tiny disposable VM we tear down. Nothing is operated or kept.
- FAKE the credits/load/spend UX freely — mock money, no real ACH, no KYC, no
  licensing. BUT keep two things visible because they drive the real design:
  (1) the two-tier credit structure (platform credit vs. shop gift card), and
  (2) the channel rule "release value only on funds confirmed settled in your own
  account" (in person: refresh YOUR app, never the customer's screen).
- Do NOT write into the real implementation repo (wiggleverse-ecomm), do NOT deploy,
  do NOT touch real money or real customer data.

GOAL: Discover the shape — data model, the hard parts, what feels right. Collect the
load-bearing concepts you surface (Merchant, Storefront, Product, Cart, Order,
Payment, Credit/Balance, etc.) toward a concept inventory for Wave 2 — but do NOT
halt the vibe-code to author RFCs (that's a later wave). Build more than one framing
if the shape is unclear.

DONE WHEN: we can describe the system as contracts and invariants rather than "watch
it run" — that's the signal to stop prototyping and move to SPEC.md (Wave 3). End the
session by listing the concepts that surfaced and any shape questions for the spec.
```

*Session 1 closed here.*
