# Session 0017.0 — Transcript

> App: ecomm
> Start: 2026-06-09T04-01 (PST) · End: 2026-06-09T10-03 (PST)
> Type: **brainstorming** (as stamped) — in practice the **first *capture* session** (no capture session-type exists yet; that's what this session designed)
> Goal: opened to explore the admin MVP for ecomm #8; became — capture a stakeholder transcript into Gitea issues, then design the whole **Capture phase / Gitea-native delivery** model and ship it as an RFC.
> Outcome: RFC merged to `engineering` `main` (PRs #21/#22/#23); plugin **Capture backlog** created (Epic #24 → Features #25 MVP, #26 quality); ecomm asks captured as issues #7–#22; engineering #19 closed. **No ecomm spec** produced (capture session — confirmed intentional at finalize).

## Launch prompt

```
Let's talk about what the MVP is from an admin perspective to get to #8. We're going to do #8 before anything else.
```
(Opened against ecomm #8 = "Adult-toys: SKU creation + image/item import from existing data".)

## Plan

1. (Pre) Analyze a pasted stakeholder transcript; break into asks; file as priority-labelled Gitea issues. → ecomm #7–#14.
2. Brainstorm the admin MVP for #8 (greenfield — "assume nothing done"). → admin-import MVP design, decomposed into Gitea Epic #8 + units #15–#22 + milestone.
3. Pivot: generalize what we did into a process — a **Capture phase** feeding specs (instead of "BDD corpus is the input"). Iterate the model with the operator across many turns.
4. Write the consolidated **RFC**; settle 4 open decisions; merge to engineering. Refine the template (business BDDs; non-binding Solution notes; scope-control motivation).
5. Create the **wgl-capture** Epic + MVP Feature on the plugin repo; close engineering #19 pointing at it.
6. Finalize.

## Pre-session state

ecomm on clean `main` (R01–R07 merged, 189 tests green). The session gate classified the opener; routed first to `wgl-session-none` (the initial ask was just "analyze this transcript"), then — when the work became session-worthy — re-gated mid-session to `wgl-brainstorming`, claiming **0017**. No `capture` session type existed (this session is why it's now proposed).

## Turn-by-turn arc

- **Analyze the transcript → issues.** Operator pasted a long recorded conversation (Ben/Hassan/Laura re: a thrift+adult-toys shop, Facebook-album commerce, an e-com migration). Broke it into 8 prioritised asks. Filing needed the Gitea **issue scope** on the admin token — the keychain token was `write:repository` only → labels/issues 403'd. Operator re-scoped the PAT (issue scope) over `wgl-gitea-token-git.wiggleverse.org`. Then created labels `priority/P0..P3` + issues **#7–#14**.
- **Admin MVP for #8 (greenfield).** Operator: "assume nothing done; map the user journey, smallest surface area." Q&A settled: flat one-product=one-SKU (kits = a SKU with a BOM, deferred); images via **URL-in-CSV** (importer fetches → stores → attaches); **upsert by SKU** + per-row report; **full web admin slice**; **async job + status page**. Built the journey + capability units → Gitea **Epic #8** + units **#15–#22**, milestone "Admin Import MVP (#8)", textual dependency cross-refs (native Gitea dependency API 404'd — repo "Enable dependencies" setting is off, not API-togglable).
- **Pivot to process.** Operator: this issue-granularity is the right capture unit; add a **Capture phase** to the plugin mapping to our eng process; **issues become the input to specs** (not BDD objects). Long collaborative design across many turns:
  - Issue template = the **business lens** of the Solution Design.
  - Agile size taxonomy **Epic/Feature/Story/Task**; **Feature = the unit = smallest vertical valuable increment = one spec**; standalone Story/Task issues are one-offs.
  - **Rolling-wave JIT decomposition**: Epic→next Feature carved at triage, one at a time.
  - **Acceptance gate**: only `triaged:accepted` issues feed brainstorming.
  - **WSJF** (rejected RICE — Reach meaningless at our scale), in-body + coarse P0–P3 labels.
  - Confirmed against superpowers: it has **no roadmap concept** — tracks next-step via plan-doc checkboxes; "roadmap" was our invention. → **remove the roadmap**; Gitea board + per-Feature **slice checklists** are the tracker. **slice ↔ superpowers plan = 1-1; spec ↔ plans = N-1.**
  - **Gitea-native loop**: "start the next coding session for Feature #xyz" → init reads next unchecked slice; finalize ticks it + files gaps as new issues + closes the Feature. Bookends become Gitea-aware.
- **RFC.** Wrote `engineering/proposals/capture-phase-and-gitea-native-flow.md`. Settled 4 open decisions (AskUserQuestion): §2.5 placement · WSJF in-body+P0–P3 · `wgl-capture` tracked-lite · render roadmap on demand. Shipped via worktree-from-`origin/main` → PR **#21** (merge `cbf6a4f`). Engineering checkout was parked on an unrelated feature branch — used a worktree to branch cleanly from `origin/main`, never touched it.
- **Template refinements (operator caught real gaps):**
  - `Summary` → **Business Use Case(s) — BDD + acceptance** (gherkin, solution-agnostic, unhappy paths; folded the standalone Acceptance field in; business-vs-product-BDD note). + `Solution notes — prior thinking (non-binding)` + the brainstorming non-canon rule. → PR **#22** (merge `f279137`).
  - `Problem/pain` must state **current cost**, not "it isn't built yet"; captured the systemic fix as a Feature. + **scope-control** motivation (sprawling specs / no dev control over the autonomous build — the dev-facing headline paired with radical transparency). → PR **#23**.
- **Plugin Capture backlog.** Found plugin repo = `wiggleverse/wiggleverse-dev-claude-plugin` (reuses `triaged:accepted`; legacy feedback `type:*` colon axis is separate from capture `type/*` slash axis). Created **Epic #24** (wgl-capture) + **Feature #25** (MVP: signal-in-session → typed, source-linked issues) + **Feature #26** (capture quality — high-value tickets). Created labels `type/epic|feature`, `priority/P0|P1`.
- **Closed engineering #19** (the original dogfood seed "wgl-capture gesture + brainstorming/roadmap integration") with a comment pointing to plugin #24/#25 and noting the roadmap-integration half resolved to *removing* the roadmap.

### Wrong turns / friction (uncurated)
- Admin token lacked the issue scope → 403 on first label/issue attempts; operator re-scoped the PAT.
- First `#8` modelling was **wrong**: created it as an Epic with #15–#22 as eight standalone issues. The "Feature = smallest valuable increment" principle later showed these are *slices* of one Feature, not separate issues → flagged for restructure (NOT yet done).
- Native Gitea dependency links 404 (repo dependencies setting off) → fell back to textual Blocked-by/Blocks.
- A compound bash with a heredoc + `rm -rf` was denied → split into a Write-the-script + run pattern, and avoided `rm -rf`.
- Milestone-create script aborted on a `KeyError: 'number'` (Gitea milestone has `id`, not `number`) → made milestone lookup idempotent and re-ran.

## Cut state (end of session)

**engineering** (`wiggleverse/engineering`, `main`):
- `proposals/capture-phase-and-gitea-native-flow.md` — RFC, **merged**. PR #21 (commit `f03abc4`, merge `cbf6a4f`), PR #22 (commit `ff77d92`, merge `f279137`), PR #23 (branch `proposals/scope-control-motivation`, merged). Worktrees removed; parked feature branch untouched.
- Issue **#19 closed** (pointer to plugin #24/#25).

**plugin** (`wiggleverse/wiggleverse-dev-claude-plugin`):
- **Epic #24** `type/epic`,`triaged:accepted` — wgl-capture, the Capture phase skill.
- **Feature #25** `type/feature`,`triaged:accepted`,`priority/P0` — wgl-capture MVP.
- **Feature #26** `type/feature`,`triaged:accepted`,`priority/P1` — Capture quality.
- New labels: `type/epic`(34), `type/feature`(35), `priority/P0`(36), `priority/P1`(37).

**ecomm** (`wiggleverse/wiggleverse-ecomm`): working tree **clean** (no code change). Gitea: issues **#7–#14** (the asks, `priority/P0..P3`), **#8 Epic** + **#15–#22** units, milestone "Admin Import MVP (#8)", labels `type/*`,`triaged:accepted`,`priority/*`. **No spec** produced.

**memory:** `capture_phase_gitea_native_flow.md` (new, with `**Next /goal:**`), `project_ecomm_build.md` (process-shift note), `MEMORY.md` index — all updated.

## What lands on the operator's plate

- **ecomm #8 + #15–#22 still mis-modelled** — to be restructured into one admin-import **Feature** + slice checklist (drop the standalone unit issues). This is the next ecomm move.
- **wgl-capture is ready to build** — plugin Feature #25 is an accepted Feature; seed a **brainstorming session on the plugin repo** to spec it. #26 (quality) follows.
- **Gitea "Enable dependencies for issues"** is off on both ecomm and plugin repos — flip it in repo Settings → Issues to get native blocked-by links; provisioning should default it on (RFC §11.8).
- Implementing the **handbook §-edits** (RFC §10) and the **plugin skills** (`wgl-capture`, `wgl-triage-captures`, the bookend updates) is separate, sequenced work.

## Prompt the operator can paste into the next session

```
/goal Restructure ecomm #8 + #15–#22 into the capture model — recast #8 as the admin-import Feature with a slice checklist, drop the standalone unit issues — so it's an accepted Feature ready to brainstorm into a spec. See memory: capture_phase_gitea_native_flow.md, project_ecomm_build.md.
```

(Or, to build the skill instead — a **plugin**-repo session: `/goal Brainstorm plugin Feature #25 (wgl-capture MVP) into a Solution Design spec`.)

## Deferred decisions

_None._ This was a highly collaborative session — every modelling call (taxonomy, WSJF-over-RICE, no-roadmap, slice↔plan 1-1, the 4 settled RFC decisions) was made with the operator in the loop. No autonomous low-confidence calls to surface.
