From ea15134f700b6b6dcc3120374c65cb5f7ed0c5a4 Mon Sep 17 00:00:00 2001 From: Ben Stull Date: Wed, 10 Jun 2026 08:49:10 -0700 Subject: [PATCH] update ecomm/0021/SESSION-0021.0-TRANSCRIPT-2026-06-10T08-20--INPROGRESS.md --- ...TRANSCRIPT-2026-06-10T08-20--INPROGRESS.md | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/ecomm/0021/SESSION-0021.0-TRANSCRIPT-2026-06-10T08-20--INPROGRESS.md b/ecomm/0021/SESSION-0021.0-TRANSCRIPT-2026-06-10T08-20--INPROGRESS.md index 0724932..42f81c0 100644 --- a/ecomm/0021/SESSION-0021.0-TRANSCRIPT-2026-06-10T08-20--INPROGRESS.md +++ b/ecomm/0021/SESSION-0021.0-TRANSCRIPT-2026-06-10T08-20--INPROGRESS.md @@ -24,8 +24,57 @@ gate green in CI. ``` +## Plan + +> Anchor: design `wiggleverse-ecomm-content/specs/SD-0001-mvp-sign-up-and-single-storefront.md` (v0.3.0, graduated) — plan-eligibility ELIGIBLE (R2a). + +**Goal:** Implement SLICE-1 (walking skeleton) of SD-0001 §7.2 — the localhost +half of BUC-5 (PUC-10). + +**Ships:** repo scaffold (4-layer Python backend `main > domains > platform` + +import-linter contract; Vite/React shell; `scripts/check.sh`; Gitea CI); dev +Postgres compose (single pinned service, named volume, healthcheck); `platform/db` +(psycopg + small pool) with the forward-only migration runner (INV-7, advisory-lock ++ fail-stop) and migration `0001` (the §6.3 schema: account, auth_code, storefront, +storefront_membership); `/healthz` (process up + DB reachable + migrations current); +`scripts/dev.sh` (owns the container lifecycle); `docs/BOOTSTRAP.md` (localhost +section, Docker prerequisite). + +**DoD:** clean checkout → `scripts/dev.sh` → app up on an empty, self-migrated +Postgres; `/healthz` green; `scripts/check.sh` gate green in CI; bootstrap test +skeleton runs migrate-from-empty + idempotent re-migrate (INV-1 partial). + +Work on branch `claude/agitated-heyrovsky-1a1f47` (this worktree) → PR → merge to +`main`. Plan archived to the content repo `plans/` at finalize. + +**Status: COMPLETE.** All 11 plan tasks done; 13 commits on the branch. DoD verified: +clean-checkout simulation (`.venv` + `node_modules` moved aside, `compose down -v`) → +`scripts/dev.sh` → `/healthz` 200 `{"status":"ok"}` on an empty self-migrated Postgres +(0 accounts, migration 0001 applied); `scripts/check.sh` green (lint-imports kept, 7 +pytest passed, frontend tsc+build); CI workflow written (inert until a Gitea runner). + +**Plan deviations (all green, recorded for the archived plan):** +1. **`app/main.py` stub added in Task 1** (not Task 5): import-linter's `layers` + contract requires every named layer module to exist, so the top layer needed a stub + from the start; Task 5 fleshed it into the real factory. +2. **Frontend tsconfig simplified**: the planned `tsconfig.node.json` project-reference + tripped `tsc` error TS6310 (composite project may not disable emit). Dropped the + split for a single `tsconfig.json` that typechecks `src`; Vite loads its own config + via esbuild (no tsc needed). One file, same gate. +3. **`scripts/dev.sh` portability fixes** (post-first-run): macOS ships bash 3.2 which + lacks `wait -n` → replaced with a `kill -0` poll loop; and `npm` spawns `vite` as a + grandchild, so cleanup now recurses `pgrep -P` to reap the whole subtree (Ctrl-C now + frees both :8000 and :5173). Both verified. + ## 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._ + +- **Postgres major version pin = 16.** Spec §6.7/D-7 says the dev container is + "pinned to the Cloud SQL major version" but the eventual Cloud SQL instance major + isn't fixed yet (SLICE-4 provisioning, Q-1-adjacent). Chose `postgres:16` — + mature, widely available, a safe Cloud SQL default. If the operator wants 17 (or to + match a specific Cloud SQL choice) it's a one-line change in `compose.yaml` + + `.gitea/workflows/ci.yml`. Low blast radius pre-data.