add 0064/SESSION-0064.0-TRANSCRIPT-2026-06-02T06-00--2026-06-02T06-55.md + replace placeholder/variant SESSION-0064.0-TRANSCRIPT-2026-06-02T06-00--INPROGRESS.md
This commit is contained in:
@@ -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
|
||||
`<PLANNER_TOKEN>` 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 /<PLANNER_TOKEN>/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
|
||||
`<PLANNER_TOKEN>` — 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 /<token>/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.
|
||||
```
|
||||
@@ -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--<end>.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.
|
||||
|
||||
```
|
||||
Reference in New Issue
Block a user