diff --git a/wiggleverse-www/0004/SESSION-0004.0-TRANSCRIPT-2026-06-08T11-46--2026-06-08T16-56.md b/wiggleverse-www/0004/SESSION-0004.0-TRANSCRIPT-2026-06-08T11-46--2026-06-08T16-56.md
new file mode 100644
index 0000000..af41f66
--- /dev/null
+++ b/wiggleverse-www/0004/SESSION-0004.0-TRANSCRIPT-2026-06-08T11-46--2026-06-08T16-56.md
@@ -0,0 +1,135 @@
+# Session 0004.0 — Transcript
+
+> App: wiggleverse-www
+> Start: 2026-06-08T11-46 (PST)
+> End: 2026-06-08T16-56 (PST)
+> Type: planning-and-executing
+> Status: **FINALIZED**
+
+## Launch prompt
+
+> Let's add that this is an Open Core model with a partner ecosystem. Add
+> "Partner" as one of the cards on the front page as well as nav. Then have a page
+> that talks about custom software on open platforms being the future because
+> software is not commoditized.
+
+## Pre-state
+
+`wiggleverse-www` content-complete, in pre-prod on `wiggleverse-www.pages.dev`,
+apex deliberately held (operator's call, 2026-06-05). Baseline `main` at `b8a2fd0`
+(session 0003). Nav was About · Build · Learn · Give. Static site, no build step,
+benbetson pattern. Worked on branch `claude/jolly-wiles-8b577d` in a git worktree.
+
+## The arc
+
+**Session open.** Classified the opening prompt as planning-and-executing; ran
+`wgl-planning-and-executing`, claimed session **0004** (clean push at `ff2b896`),
+verified a clean pushed `main` baseline.
+
+**Brainstorm + structural decisions.** Ran `superpowers:brainstorming`. Explored
+the two home card grids and the existing `/the-model/` (OHM) page to avoid a
+naming collision. Via `AskUserQuestion`, the operator chose: a **new 3rd home
+section** for the Partner card; nav order **About · Build · Partner · Learn ·
+Give**; a **new `/partner/` page** (OHM stays "the model"). Operator approved the
+design with "Great, let's preview."
+
+**Build (Partner).** Scripted the nav `
` + footer insertion across all 8 nav
+pages (first attempt's regex matched the 10-space footer `` as an 8-space
+substring → double-inserted; reverted with `git checkout` and redid line-anchored
+— correct). Added the Home "Open Core · a partner ecosystem" section + Partner
+card; wrote `/partner/`; added to sitemap. Started a localhost `http.server`.
+
+**Spacing bug (caught on preview).** Operator: "the spacing is all off." Diagnosed
+via screenshot/zoom: `.wrap.prose` (one element is both `.wrap` and `.prose`) let
+`max-width:68ch` shrink the wrap and `margin-inline:auto` re-center it as a narrow
+column, while hero/footer hugged the gutter. Fixed sitewide:
+`.wrap.prose{max-width:min(1080px,92vw)}` + `.wrap.prose > *{max-width:68ch}`.
+The browser kept serving cached CSS (Python `http.server` sends no cache headers),
+so restarted the dev server with a `Cache-Control: no-store` handler to make the
+preview loop reliable. Confirmed the fix renders (prose left-aligns to gutter).
+
+**Copy rework.** Operator disliked "software was never a commodity" (it also
+repeated across 3 spots, and *clashed* with the About page's "every era
+commoditizes something / commoditized custom software" thesis). Chose a **"fit
+you"** direction; reworded hero/heading/home-lead distinctly, scrubbed the phrase
+incl. meta/OG tags.
+
+**Migration section + word choice.** Operator added the "Switch to an alternative
+any time" content (APIs expose *everything* → cheap to migrate off *and* on; an
+"army" of "trust-but-verify" consultants). Operator: use **"network"** not "army"
+(fits the no-center motif).
+
+**Ecomm.** Operator supplied a "why ecomm first" transcript. Chose (via
+`AskUserQuestion`) a **dedicated `/ecomm/`** page (parallel to `/partner/`).
+Built it: why commerce first, non-extraction "only what it takes," fee
+commitments; linked from the Home Ecomm card + Building page; sitemap.
+
+**Finances open book.** Built `/finances/` (referenced by `/ecomm/`). Refused to
+fabricate figures (the whole point of an open book). Added a ledger table style.
+Operator gave numbers piecewise: Anthropic = one Max plan $100 (+tax on total),
+Workspace $7/mo (→$14/seat after Aug), GCP $0-on-credits → then "call GCP
+$32/month now, anticipating $75/month in July." Restructured the ledger to two
+columns (**Current / Anticipated per month**) per operator request, moved "+ tax"
+to the Total, and **removed** the now-redundant "after the credits" component
+breakdown (its premise — "the number we still owe you" — was satisfied by the $75
+forecast). Cadence set to **monthly, hand-kept** (operator: "update monthly for
+now"), automation as the goal — corrected the earlier "daily automated job"
+claim for honesty. Team **unpaid**; revenue **$0**.
+
+**Automation question.** Operator asked about a regular billing-export → automated
+job → website pipeline, and "best way to find my GCP bill." Answered (Billing →
+Reports grouped by Service; Pricing Calculator; BigQuery export). Operator chose
+to **spec it as its own slice** with **client-side-JS, build-free** rendering —
+wrote `docs/specs/2026-06-08-finances-open-book-automation.md` (excluded from the
+deployed site by `deploy-site.sh`).
+
+**Stale-screenshot friction.** Recurring: operator added new content before
+reloading, so several screenshots showed pre-edit renders. Verified final states
+via `curl` against the served HTML throughout.
+
+**Checkpoint → ship.** Committed all work (`d8cf9ca`), pushed the branch. Operator
+then: "merge to main, deploy, finalize." Merged `--no-ff` to `main` (`3362a5c`),
+pushed. **Deploy handed off** — `CLOUDFLARE_API_TOKEN` not in the agent env and
+won't be pasted into chat (secrets rule); gave the operator the
+`SKIP_DOMAINS=1 ./infra/deploy-site.sh` command. Apex untouched. Then this
+finalize.
+
+## Cut state (what landed)
+
+- `main` at **`3362a5c`** (merge of `d8cf9ca`), pushed to origin. Branch
+ `claude/jolly-wiles-8b577d` merged + pushed.
+- New pages: `/partner/`, `/ecomm/`, `/finances/`. New section on Home. Partner in
+ nav + footer; Finances in footer "The org". Sitewide `.wrap.prose` spacing fix.
+ Sitemap updated. Spec doc under `docs/specs/`.
+- **Pre-prod deploy NOT yet run** (operator gesture, pending). Apex still held.
+- No formal `writing-plans` artifact this session (design developed inline) → no
+ plan to archive. Content target resolves to the repo itself; no separate
+ content/roadmap repo registered (roadmap lives in corp).
+- No automated E2E/PPE harness exists for this marketing site (§9 pipeline named,
+ not automated): localhost previewed ✓ → pre-prod = operator gesture → apex held.
+
+## Deferred decisions (low-confidence / autonomous calls)
+
+- **Spacing fix applied sitewide** (all `.wrap.prose` sub-pages), not just the new
+ pages — operator later confirmed Give had the same issue, so this was right.
+- **Removed the `/finances/` "after the credits" component-breakdown table** once
+ the lump $75 forecast arrived. Operator may want the per-component breakdown
+ back (noted in memory + Next /goal).
+- **Spec doc placed in this repo's `docs/specs/`** rather than corp's canonical
+ spec home — flagged in the doc to promote on build.
+- **Skipped the formal spec-doc/writing-plans step** for the content work itself,
+ building directly after the brainstorm approval given the operator's rapid
+ preview-loop cadence.
+
+## Next-session prompt
+
+```
+/goal Build the finances open-book automation slice per
+docs/specs/2026-06-08-finances-open-book-automation.md — BigQuery billing export →
+monthly Cloud Run job → commit data/finances.json → client-side-JS render
+(build-free); provision the GCP pieces via flotilla, repo token in Secret Manager.
+```
+
+Also open: verify the 0004 pre-prod deploy once the operator runs it; soften the
+"software that runs your life / preys on you" copy on Give + About; optionally
+re-add the GCP per-component breakdown on `/finances/`.
diff --git a/wiggleverse-www/0004/SESSION-0004.0-TRANSCRIPT-2026-06-08T11-46--INPROGRESS.md b/wiggleverse-www/0004/SESSION-0004.0-TRANSCRIPT-2026-06-08T11-46--INPROGRESS.md
deleted file mode 100644
index 32e3cde..0000000
--- a/wiggleverse-www/0004/SESSION-0004.0-TRANSCRIPT-2026-06-08T11-46--INPROGRESS.md
+++ /dev/null
@@ -1,20 +0,0 @@
-# Session 0004.0 — Transcript
-
-> App: wiggleverse-www
-> Start: 2026-06-08T11-46 (PST)
-> Type: planning-and-executing
-> Status: **PLACEHOLDER — claimed at session start; finalized at session end.**
->
-> This file reserves session ID 0004 for wiggleverse-www. The driver replaces this
-> body with the full transcript and renames the file to its final
-> SESSION-0004.0-TRANSCRIPT-2026-06-08T11-46--.md form at session end.
-
-## Launch prompt
-
-_(launch prompt not captured at claim time)_
-
-## 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._