7.4 KiB
Session 0071.0 — Transcript
App: ohm Start: 2026-06-04T05-24 (PST) End: 2026-06-04T06-15 (PST) Type: coding Mode: autonomous (yolo, default)
Launch prompt
/goal get to the point where the RFC app supports multiple projects and we can migrate the ecomm bdd app to natively run on the rfc and retire the planner app
Plan
Goal (operator): rfc-app supports multiple projects → migrate the ecomm BDD corpus to run natively as a project on rfc-app → retire the standalone BDD Release Planner app.
Discovery finding: this is an already-architected program — rfc-app's
§22 multi-project track (rfc-app/docs/design/multi-project-spec.md, Part C
7-slice plan). M1 (spine, migration 026), M2 (project-scoped authz), M3-backend
Plan A (registry mirror, /api/deployment, /api/projects/:id; META_REPO
retired) already shipped (rfc-app ≤ v0.33.0). rfc-app origin/main was v0.34.0.
Goal → slices: (1) "supports multiple projects" → M3-frontend + M4;
(2) "migrate ecomm BDD natively" → M5 (bdd type surface) + stand up ecomm
as a bdd project (corpus = 1,238 Gherkin scenarios in
wiggleverse-ecomm-meta/research/shopify; app.json already declares
projectSlug: ecomm); (3) "retire planner" → after M5 + onboarding, retire
wiggleverse-ecomm-bdd-release-planner-app. The slices are a dependency chain →
multi-session program.
This session's target: implement + ship M3-frontend (the design-merged, now-unblocked frontier).
Pre-state
- ohm-rfc: clean
main, pinned rfc-app0.31.5. No OHM session in flight (claim peeked clean). CLAUDE.md missing the org-context import stub. - rfc-app:
origin/mainv0.34.0; M3-frontend design merged (#10) but unimplemented; M3-backend Plan A (registry, the two runtime-config APIs) shipped v0.33.0 → M3-frontend's only dependency satisfied.
Session arc (turn-by-turn)
- Init. Claimed session ID 0071 (race-free push). Verified clean
mainbaseline. Added the@~/.claude/wiggleverse.mdstub to CLAUDE.md. No memory resume pointer (first session tracking this program). - Discovery (parallel Explore agents + reads). Mapped the three pillars:
rfc-app §22 state (v0.33.0, M1/M2/M3-backend done; design docs +
docs/superpowers/specs/2026-06-03-m3-frontend-design.md), the planner app (FastAPI+React+SQLite multi-project Gherkin clustering/release-planning tool, deployed at rfc.wiggleverse.org), and the ecomm corpus (wiggleverse-ecomm-meta/research/shopify). Resolved a worktree version discrepancy: canonicalrfc-apporigin/main = v0.34.0. Frontier = M3-frontend. - M3-frontend implementation (worktree
rfc-app-m3-frontend, fresh branchfeat/m3-frontend-imploff origin/main):- Backend (TDD):
/api/deploymentgainsdefault_project_id(the guard contract); server-side 308s/rfc/<slug>,/rfc/<slug>/pr/<n>,/proposals/<n>→/p/<default>/…(api_deployment.make_router(config)). nginx (testing/web.nginx.conf+deploy/nginx/*.conf) routes/rfc/and/proposals/to the backend. 3 new tests; 438 backend pass. - Frontend:
DeploymentProvider(boot/api/deployment),ProjectLayout(+ProjectContext, per-project theme apply/reset, the §4 guard),Directory,ProjectSwitcher,NotServedPlaceholder,lib/entryPaths.js. App.jsx route table →/p/:projectId/*+/e/<slug>,DeploymentLanding(N=1 redirect / directory), header brand + switcher. VITE_APP_NAME hard cut (vite.config, index.html, 6 brand reads → runtime config). A subagent converted ~30 internal/rfc·/proposalslinks across 9 components to project-scoped paths. 11 Vitest tests (incl. a vitest config fix:esbuild.jsx automatic). Clean build with no VITE_APP_NAME.
- Backend (TDD):
- Ship rfc-app v0.35.0: VERSION + package.json bump, CHANGELOG entry with
RFC-2119 upgrade steps, PR #12 → merged to main, tagged
v0.35.0, pushed origin +benstullmirror. - Recorded the program: ohm-rfc ROADMAP Phase G (slice status + the OHM cutover milestone) + CLAUDE.md stub committed/pushed.
- Designed the next slice: authored + merged (PR #13) the M3-backend
Plan B design spec (
docs/superpowers/specs/2026-06-04-m3-backend-planb-design.md). - Stopped before hand-rolling the 12-table PK-rebuild migration —
delicate (migration runner can't toggle
PRAGMA foreign_keysmid-txn; needs an isolated migration test), best executed fresh from its design doc.
Cut state
- rfc-app
main= v0.35.0 (origin + benstull), tag pushed. M3-frontend shipped + tested (438 backend, 11 Vitest, clean build). PR #12 merged. - rfc-app M3-backend Plan B design merged (PR #13).
- ohm-rfc
main: ROADMAP Phase G + CLAUDE.md stub pushed. Pin unchanged at 0.31.5 (OHM not deployed on the multi-project stack — see below). - No open PRs; both repos in sync with origin.
Deferred decisions
- Did NOT deploy 0.35.0 to OHM this session. OHM is pinned
0.31.5; the whole §22 stack (0.32 test-foundation, 0.33 breaking registry cutover, 0.34 containerize, 0.35 M3-frontend) is undeployed, and no OHM registry repo exists. Deploying means a breaking, multi-version live cutover requiring net-new infra (registry repo +projects.yaml+REGISTRY_REPOoverlay + Gitea webhook + nginx routes) onohm.wiggleverse.org; withMETA_REPOretired the app refuses to start ifREGISTRY_REPOis wrong → outage risk. Judged a deliberate operator-gated milestone. Next deploy step needs operator go-ahead (ROADMAP Phase G has the runbook). rfc-app v0.35.0 itself is shipped. - ecomm-meta's "no code-sharing with rfc-app" decision (its ROADMAP) is
treated as superseded by the §22 design (
bddproject type) + the goal. Worth an explicit operator confirm. - M5 open Q (future):
bddscenarios free-form markdown vs parsed Given/When/Then — shapes how much planner logic moves into rfc-app. - Playwright e2e for M3-frontend deferred — Tier-1
REGISTRY_REPOunset; the dockerized backend can't boot post-0.33.0 without a seeded registry. Covered this slice by Vitest (11) + backend redirect tests. Plan B's design names the Tier-1 registry seed as its first task (unblocks both e2e gaps).
Next-session prompt
/executing-plans Execute M3-backend Plan B per rfc-app/docs/superpowers/specs/2026-06-04-m3-backend-planb-design.md — make a 2nd project's corpus serve+render. First task: seed a Tier-1 registry repo + projects.yaml and set REGISTRY_REPO in testing/.env.tier1 (unblocks M3-frontend + Plan B e2e). Then: default-project-id re-stamp (§22.13 step 1) + the 12-table slug-keyed PK-rebuild migration (migration 026 header — isolated migration test, two-project same-slug coexistence; note the runner can't toggle PRAGMA foreign_keys mid-txn) + per-project RFC serving (path-scoped endpoints, per-project cache/bot/webhook dispatch, scoped frontend calls, guard removal). Ship rfc-app v0.36.0. Read memory multi-project-program.md + ohm-rfc ROADMAP Phase G first. Do NOT do the OHM live cutover without operator go-ahead.
Operator plate (needs you)
- Go/no-go on the OHM multi-version cutover (ROADMAP Phase G runbook) — it
needs a registry repo,
projects.yaml,REGISTRY_REPOoverlay, a webhook, and nginx routes on the live site; it's breaking and outage-sensitive. - Confirm the direction overrides ecomm-meta's "no code-sharing" note
(ecomm BDDs as a
bddproject on rfc-app; retire the planner).