diff --git a/0064/SESSION-0064.0-TRANSCRIPT-2026-06-02T06-00--2026-06-02T06-55.md b/0064/SESSION-0064.0-TRANSCRIPT-2026-06-02T06-00--2026-06-02T06-55.md new file mode 100644 index 0000000..c80544c --- /dev/null +++ b/0064/SESSION-0064.0-TRANSCRIPT-2026-06-02T06-00--2026-06-02T06-55.md @@ -0,0 +1,167 @@ +# Session 0064.0 — Transcript + +> Date: 2026-06-02 +> Start: 2026-06-02T06-00 (PST implied) +> End: 2026-06-02T06-55 (PST implied) +> Driver: Claude (Opus 4.8) + Ben +> Session type: cross-project — primary work on the **ecomm BDD release planner** +> (`wiggleverse-ecomm-bdd-release-planner-app`, GCP project +> `wiggleverse-ecomm-bdd-app`), with an OHM ramification (OHM added as a project; +> the OHM GCP project's ADC quota pin changed). Session ID claimed **retroactively +> at end** — the start was assessed as ecomm-planner work, so no claim was made at +> launch; published here because OHM is materially involved. + +--- + +## Launch prompt + +``` +Add OHM as a real project in the BDD planner. Read ecomm-bdd-release-planner.md +first. Use the new ⚙ project-management UI at rfc.wiggleverse.org to create the +`ohm` project pointing at its gitea meta repo + corpus subpath; confirm refresh.sh +auto-clones and ingests it (or trigger ingest on planner-vm), and that it appears +in the dropdown with scenarios. Decide how OHM's corpus is populated (paste vs an +existing spec dir). While in that GCP project, fix the ADC quota-project pin: +gcloud auth application-default set-quota-project wiggleverse-ecomm-bdd-app. +``` + +--- + +## Outcome (TL;DR) + +OHM is now a project in the multi-project planner hub at `rfc.wiggleverse.org` — +but **not** a BDD project. Investigation showed OHM has **zero** Gherkin/BDD +content anywhere (it's a body of RFCs, RFC-0001..0032 in `ben.stull/ohm-rfc`; +published content in `wiggleverse/ohm-content`). So rather than seed a fake +corpus, Ben chose to **add a per-project `bdd_enabled` capability flag** to the +planner: BDD projects (ecomm) keep the scenario corpus/releases/paste machinery; +non-BDD projects (OHM) live in the hub as organizational entries with that +machinery turned off. Shipped, deployed, verified live. The ADC quota fix was +applied. No secret bytes published (the planner URL token is scrubbed to +`` throughout; gitea bot tokens were used from Secret Manager and +never printed). + +## What shipped + +**Feature: per-project BDD on/off flag** — planner app repo +`wiggleverse/wiggleverse-ecomm-bdd-release-planner-app`, branch +`project-bdd-toggle` ff-merged to `main` as commit **`e436e19`**, pushed, +deployed. Pieces: + +- **Migration `0005_project_bdd_enabled.sql`**: `project.bdd_enabled INTEGER NOT + NULL DEFAULT 1` (1 = BDD project / ecomm; 0 = non-BDD / OHM). Forward-only, + ingest-applied (NOT web-startup) — same gotcha as 0002/0003/0004. +- **`ingest.py --list-clones`** now filters `status='active' AND bdd_enabled=1`, + so `refresh.sh` never clones/ingests a non-BDD project. (Flip the flag on and + the next refresh clones + ingests its corpus.) +- **Backend** `require_bdd_project` dependency → **409** on the BDD write surface + (releases create/add-scenarios, paste preview/commit, plan import, roadmap + export) for a non-BDD project. `projects.create/update` accept `bdd_enabled` + (ProjectCreate defaults True, ProjectPatch toggles); stored 0/1. +- **Frontend** (`App.tsx`/`api.ts`/`styles.css`): ⚙ create + edit forms get a + "BDD scenarios" checkbox; main view shows a placeholder (no scenario browser / + releases / paste) when `bdd_enabled===0`; manage list shows a "non-BDD" badge. +- **Tests**: +7 → **54 backend pass** (`test_project_crud.py` + default/disable/toggle/list-clones-exclusion + new `test_bdd_guard.py` 409 + endpoint guards). Frontend `tsc --noEmit` + `vite build` clean. + +**Deploy**: flotilla 10-phase green (`/api/health` ok, 1238 scenarios). Then ran +`systemctl start planner-ingest.service` on `planner-vm` (us-central1-a) to apply +0005 — REQUIRED before any project create, because `create_project` now writes +the new column. macOS deploy note still applies (`SSL_CERT_FILE=$(python3 -m +certifi)` for phase 9). The deploy's validate phase emitted the ADC-quota warning +(fixed below). + +**OHM project created** via the hub endpoint `POST //api/projects` +— the exact call the ⚙ "New project" form issues. (The browser UI itself was +**org-policy-blocked** from `rfc.wiggleverse.org` in the agent's Claude-in-Chrome +this session; Ben verified the rendered UI manually.) Project record: +`slug=ohm name=OHM gitea_repo=wiggleverse/ohm-content corpus_path=research/bdd +roadmap_path=roadmap bdd_enabled=0`, status=active. + +## Decisions (Ben) + +1. **Repo + corpus path**: OHM points at **`wiggleverse/ohm-content`** with a new + `research/bdd` subpath. Rationale: planner-bot has admin/push there; the + `research/bdd` subdir is **not served** by the live rfc-app (which renders only + `rfcs/` + PHILOSOPHY/About), so there's no live-site pollution. (`ben.stull/ohm-rfc` + and a brand-new repo were the alternatives.) +2. **Corpus population**: OHM has no existing BDD spec dir and no Gherkin, so + "paste vs existing spec dir" resolved to **neither for now** — OHM is a non-BDD + entry. Turning `bdd_enabled` on later (⚙ modal or PATCH) is the populate path, + after which paste/commit-to-`research/bdd` + ingest would fill it. +3. **Build the flag, don't fake a corpus**: Ben explicitly chose "build a real + BDD on/off flag" over seeding a demo scenario or leaving an empty BDD project. + +## Verification (live, prod) + +- `GET /api/projects` lists both: `ohm` (`bdd_enabled:0`) + `ecomm-specs` + (`bdd_enabled:1`). This list is the dropdown source. +- ecomm intact: 15 domains / 1238 scenarios; OHM domains empty. +- Non-BDD guards: OHM release-create + paste-preview → **409**; ecomm endpoints + still 200. +- On `planner-vm`: `ingest.py --list-clones` returns only `ecomm-specs`; the only + meta clone on disk under `/opt/planner-meta` is `wiggleverse-ecomm-meta`. + **OHM's `ohm-content` repo was never cloned or committed to** — confirming the + non-BDD project leaves the OHM content repo untouched. + +## ADC quota fix + +`gcloud auth application-default set-quota-project wiggleverse-ecomm-bdd-app` +(was pinned to `wiggleverse-ohm`). NOTE: ADC quota project is a **single shared +file**; it now favors ecomm-bdd, so a future OHM deploy will show the inverse +(harmless) warning. Both flotillas pin `--project` explicitly, so this only +affects the ADC billing/quota attribution warning, not correctness. + +## OHM ramifications (cross-reference) + +- No OHM release, no rfc-app deploy, no `ohm-rfc`/`ohm-content` content change, no + §13 deployment-record edit. The only OHM-touching effects: (a) OHM is now a + registered (non-BDD) project in the planner hub; (b) the shared ADC quota pin + moved off `wiggleverse-ohm`. Hence this transcript, claimed retroactively. + +## Files changed (planner app repo) + +``` +A migrations/0005_project_bdd_enabled.sql +A tests/test_bdd_guard.py +M backend/app/main.py (ProjectCreate/Patch + require_bdd_project + guards) +M backend/app/projects.py (MUTABLE + _validate + create_project cols) +M tools/ingest.py (--list-clones bdd_enabled filter) +M frontend/src/App.tsx (checkboxes + non-BDD placeholder view) +M frontend/src/api.ts (Project.bdd_enabled + ProjectInput) +M frontend/src/styles.css (.proj-check, .non-bdd-note) +M tests/test_project_crud.py (+4 flag tests) +``` + +Memory updated: ecomm project memory `ecomm-bdd-release-planner.md` (+ its +`MEMORY.md` index line) carry the full state. (Memory referenced as +`` — the literal URL token is in Secret Manager +`planner-planner-token`, intentionally unrotated low-value path obscurity.) + +## Gotchas captured + +- Migration 0005 is ingest-applied; `create_project` now writes `bdd_enabled`, so + **ingest MUST run after deploy before any project create** or the insert 500s. +- flotilla deploy does not sync nginx (only systemd units) — unchanged here. +- Stale OHM `--INPROGRESS` placeholders linger in `ohm-session-history` (0026, + 0027, 0045, 0063 were active at claim time) — housekeeping debt, not this + session's. + +--- + +## Next-session prompt + +``` +Continue on the ecomm BDD release planner (multi-project hub at rfc.wiggleverse.org). +Read memory first: ecomm-bdd-release-planner.md (esp. the 2026-06-02 "PER-PROJECT +BDD FLAG + OHM ADDED" section). OHM now exists as a non-BDD project (bdd_enabled=0, +empty, pointing at wiggleverse/ohm-content : research/bdd). If you want OHM to +actually hold BDD scenarios: flip its flag on in the ⚙ Manage-projects modal (or +PATCH //api/projects/ohm {"bdd_enabled": true}), then either paste scenarios +or commit Gherkin under research/bdd and let refresh.sh ingest. Url token is in +Secret Manager (planner-planner-token). Deploy = flotilla 10-phase + then +`systemctl start planner-ingest.service` on planner-vm to apply migrations. +Optional cleanup: a stale merged local branch `release-plan-import` in the planner +app repo, and several stale --INPROGRESS placeholders in ohm-session-history. +``` diff --git a/0064/SESSION-0064.0-TRANSCRIPT-2026-06-02T06-00--INPROGRESS.md b/0064/SESSION-0064.0-TRANSCRIPT-2026-06-02T06-00--INPROGRESS.md deleted file mode 100644 index 854bf60..0000000 --- a/0064/SESSION-0064.0-TRANSCRIPT-2026-06-02T06-00--INPROGRESS.md +++ /dev/null @@ -1,24 +0,0 @@ -# Session 0064.0 — Transcript - -> Date: 2026-06-02 -> Start: 2026-06-02T06-00 (PST implied) -> Status: **PLACEHOLDER — claimed at session start; finalized at session end.** -> -> This file reserves session ID 0064. The driver replaces this body -> with the full transcript before publishing, and renames the file to -> its final SESSION-0064.0-TRANSCRIPT-2026-06-02T06-00--.md form. - ---- - -## Launch prompt - -``` -Add OHM as a real project in the BDD planner. Read ecomm-bdd-release-planner.md -first. Use the new ⚙ project-management UI at rfc.wiggleverse.org to create the -`ohm` project pointing at its gitea meta repo + corpus subpath; confirm refresh.sh -auto-clones and ingests it (or trigger ingest on planner-vm), and that it appears -in the dropdown with scenarios. Decide how OHM's corpus is populated (paste vs an -existing spec dir). While in that GCP project, fix the ADC quota-project pin: -gcloud auth application-default set-quota-project wiggleverse-ecomm-bdd-app. - -```