Files
session-history/ecomm/0007/SESSION-0007.0-TRANSCRIPT-2026-06-01.md
T

123 lines
6.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# SESSION-0007.0 — Money-rails / Load & Reward spec → BDDs (new credits/ domain)
**Date:** 2026-06-01
**Driver:** Ben Stull + Claude (Opus 4.8)
**Repos touched:** wiggleverse-ecomm-meta (spec + corpus + release plan + session record)
> **Honesty note on this artifact.** This is a *session record* authored by
> the assistant from the conversation — faithful as to decisions, sequence,
> and wrong turns, but **not** the raw byte-for-byte transcript.
---
## Purpose
Bring the **Load & Reward Policy** (ecosystem-credits / money-rails spec) into
the BDD corpus, keep the canonical spec doc in sync, and re-cluster the release
plan to match. Two iterations of the source doc arrived mid-session (v8 then v9),
so the work happened in passes. Standing rule honored throughout: **"update the
release clusters any time we add a new BDD."**
## What happened, in order
1. **Oriented in the corpus + tooling.** Re-read the memory, the corpus layout,
the id machinery (`assign_ids.py`, `gherkin_corpus.py` — four scenario shapes),
the `pre-commit` id-gate, and `release_plan.py` (the RELEASE-PLAN parser
contract). Baseline: 1162 scenarios, 14 domains, parse clean.
2. **Decided placement (via AskUserQuestion + Ben's correction).** Asked where
the money-rails scenarios should live. Ben's call: **direct order payment goes
into the existing payments feature** (`settings/payments.md`, `13.10`); **the
credit/stored-value spec gets its own new `credits` domain.** That split tracks
the spec's own §3 "two separate paths" framing exactly.
3. **First spec version in play was the stale `specs/Payment Strategy.md`.** Ben
then supplied `load-rail-policy_8.md` (newer — it has the §3a ACH-only-credit
vs. §3b vendor-handled-direct-payment split). Built the BDDs from v8.
4. **Wrote the `credits` domain** (4 feature files, shape B / raw-Gherkin like
`flows/`): `credit-instruments.md` (§12 tiers + closed-vs-open-loop on common
ownership), `funding-and-loads.md` (§3a/4/5 ACH-only minting, $50 floor,
discount-at-spend), `settlement-and-clearing.md` (§6/7 pending-vs-available
hold, KYC/velocity/risk, virtual value release), `credit-tax.md` (§8).
Every file carries a **GATED — do-not-build** banner in its prose.
5. **Added direct order payment to `settings/payments.md`** (shape C, matching
the file): vendor card / Venmo business / manual order-ID lane + the §7
"shown ≠ received ≠ settled" receipt-verification rule.
6. **Assigned ids.** `--dry-run` then real run. New `credits` domain = **15**
(append-only `max+1`); features alphabetical (`credit-instruments`=01,
`credit-tax`=02, `funding-and-loads`=03, `settlement-and-clearing`=04). Froze
53 credit scenarios + 11 payment scenarios (`13.10.0010-0020`). Corpus 1162 →
1226.
7. **Updated RELEASE-PLAN (pass 1).** Direct payment → **R14** (9 → 20). Credits
domain → the existing **GATED bucket** by feature-count (no ids enumerated, per
the parser contract). Footer recount 369/1226. Verified: zero `15.*` leaked
into any buildable release.
8. **Spec rename.** On Ben's instruction, replaced `specs/Payment Strategy.md`
content with v8 and renamed it `specs/PaymentStrategy.md` (no space). Rewrote
every in-repo reference; left the historical SESSION-0001 transcript untouched.
**Caught a gotcha:** one reference in `settlement-and-clearing.md` was wrapped
across a line break (`specs/Payment` / `Strategy.md`), so the `sed` missed it —
fixed by hand.
9. **v9 arrived.** Ben supplied `load-rail-policy_9.md`. Diffed v9 vs v8 and added
only the genuinely new behavior:
- **`settings/payments.md`** `13.10.0021-0026`: PayPal goods&services (API +
protection but priciest), PayPal sweep/freeze risk, Zelle (free/final/no-API),
Zelle-is-strongest-in-person, Cash/Other off-platform, Cash/Other-still-taxable.
- **`credits/funding-and-loads.md`** `15.03.0016-0020`: PayPal/Zelle/cash each
can't mint credit, "ACH is the only rail with both low cost + a confirmation
API," and the §5 "when the avoided alternative is free, the discount leans on
float/breakage/lock-in."
- **`credits/settlement-and-clearing.md`** `15.04.0014`: the hold exists only
because ACH is reversible; final rails like Zelle wouldn't need one but don't
fund credit.
Replaced `PaymentStrategy.md` with full v9. Corpus 1226 → **1238**.
10. **Updated RELEASE-PLAN (pass 2).** R14 20 → **26**; GATED bucket counts bumped
(`15.03` 15→20, `15.04` 13→14; credits domain now **59**); footer **375/1238**.
Re-verified zero gated leakage, R14 parses to 26 members, 0 scenarios without ids.
11. **Committed + pushed.** One commit `2952261` (12 files, +1756/58; the rename
detected at 56% similarity), pushed `949c92f..2952261` to `origin/main` over
SSH. Pre-commit id-gate passed. Push fires the gitea webhook → VM re-ingest.
## Decisions citable later
- **`credits/` is corpus domain 15** — the full ecosystem-credit / Load & Reward
spec as BDDs. 59 scenarios across 4 features. **GATED in perpetuity** until a
payments attorney confirms the licensing path AND the OHM concept→operational
RFCs exist. Do NOT pull any `15.*` into a build session.
- **The §3 two-path split is the organizing principle.** Funding *credit* = ACH
only (the regulated, money-transmission tier → `credits` domain, gated).
*Direct order payment* = vendor-handled, non-custodial, never mints credit
(→ `settings/payments.md` `13.10`, buildable in R14). "Software, not facilitator."
- **Direct order payment is buildable; it's the safe side of the line.** R14 holds
it (now 26 scenarios) precisely because the platform records the order but the
vendor collects/confirms out-of-band — no custody, no money transmission.
- **Rails, ranked (v9):** ACH = only credit funder (cheap+flat AND confirmable).
PayPal = has API+protection but priciest → direct-only, disqualified on cost.
Zelle = free+final but no merchant API → direct-only, disqualified on
confirmability; **strongest in-person rail**. Venmo business = ~1.9%+$0.10 to
shopper. Cash/Other = off-platform catch-all, still a taxable sale.
- **Spec file is `specs/PaymentStrategy.md`** (renamed from `Payment Strategy.md`,
no space), tracking **load-rail-policy v9**. The BDDs cite it by that path.
## Open / carried forward
- **Money-rails stays GATED.** Nothing in `credits/` ships ahead of its RFCs +
counsel. R14's direct-payment block is the only buildable money-in path for now.
- **Placeholder numbers** in the spec (card ~2.9%+$0.30, ACH ~$0.30, discount
2.53%, $50 floor) — swap for real processor rates before any build.
- **Zelle revisit hook** — if a bank/processor ever exposes a Zelle confirmation
API, reconsider it as a credit funder (its finality would beat ACH); spec §3b
notes this explicitly.
- **OHM RFCs for the credit mechanic** — still the gating prerequisite (Agency /
Consent / Epistemic Authority / Dignity). Out of scope this session.
*Session 7 closed here.*