Add corpus exporter (session + ES capture), record 71 spaces / 109 articles and local reichelag markdown tree with visuals. Redacted progress only in git.
146 lines
5.5 KiB
Markdown
146 lines
5.5 KiB
Markdown
---
|
||
id: CSOC-WP-0001
|
||
type: workplan
|
||
title: "bubble.io exit assessment"
|
||
domain: communication
|
||
repo: coulomb-social
|
||
status: active
|
||
owner: bernd
|
||
topic_slug: coulomb-social
|
||
created: "2026-08-09"
|
||
updated: "2026-08-13"
|
||
origin: residual
|
||
origin_ref: the-custodian/docs/coulomb-social-rebuild-seed.md
|
||
state_hub_workstream_id: "ecefaeef-908a-4072-ae34-6406862d4cad"
|
||
---
|
||
|
||
# bubble.io exit assessment
|
||
|
||
Assess the live coulomb.social bubble.io product, export its data model, decide
|
||
the v1 feature cut, and rehearse migration into the code-owned stack.
|
||
|
||
## Operating posture (2026-08-10)
|
||
|
||
| Host | Role |
|
||
|------|------|
|
||
| **`https://coulomb.social`** | **Bubble.io** — full product, production members/content |
|
||
| **`https://app.coulomb.social`** | **Railiance rebuild** — identity live; product surfaces under construction |
|
||
|
||
**Strategy:** perfect the rebuild on `app.coulomb.social` **before** migrating all
|
||
spaces/data from Bubble. Do **not** repoint apex DNS until product + content
|
||
persistence + self-registration are ready and a migration rehearsal has passed.
|
||
|
||
Identity shell is done (`CSOC-WP-0002`). Product/content foundation is
|
||
**finished** (`CSOC-WP-0004`). This workplan is the home for **inventory,
|
||
mapping, feature cut, and migration rehearsal**.
|
||
|
||
## Inventory bubble.io app
|
||
|
||
```task
|
||
id: CSOC-WP-0001-T01
|
||
status: done
|
||
priority: medium
|
||
state_hub_task_id: "240a97c5-1f57-4da6-a75b-d7b3416afdd1"
|
||
```
|
||
|
||
Inventory the current bubble.io app: pages, workflows, data types,
|
||
integrations, external services, and content surfaces that must be preserved
|
||
or deliberately dropped. Record findings under `docs/bubble-inventory/` (create
|
||
as needed). Prefer **spaces / pages / markdown-shaped content** first so
|
||
`CSOC-WP-0004` Forgejo persistence can map cleanly.
|
||
|
||
2026-08-12: Surface inventory committed —
|
||
`docs/bubble-inventory/2026-08-12-surface-inventory.md`. Public meta, hosts,
|
||
Research/`vw_pages`/pg_chunk routes, integrations, content hypothesis, gaps.
|
||
**Data types empty** on public API — full type/workflow graph waits on Bubble
|
||
editor export (T02).
|
||
|
||
## Data export and schema mapping
|
||
|
||
```task
|
||
id: CSOC-WP-0001-T02
|
||
status: progress
|
||
priority: medium
|
||
state_hub_task_id: "0bc6eea3-030d-4987-b203-15ccd4f94fcb"
|
||
```
|
||
|
||
Produce a full data dump from bubble.io and map it to:
|
||
|
||
1. tenant-keyed application tables (members, space metadata, …), and
|
||
2. **space content as markdown trees** bound to Forgejo repositories
|
||
(see CSOC-WP-0004 content model).
|
||
|
||
Document mapping and export under `docs/migration/`. Depends on CSOC-WP-0004
|
||
content layout decisions for lossless mapping of pages/artefacts.
|
||
|
||
2026-08-12: Provisional mapping sketch without dump —
|
||
`docs/migration/schema-mapping-sketch-2026-08-12.md`.
|
||
|
||
2026-08-13: **Auth path for automated read access** without secrets in chat:
|
||
`docs/migration/bubble-auth-and-export.md` + `scripts/export-bubble-session.sh`.
|
||
Operator captures Playwright session once (`capture-auth-state.sh`); agents use
|
||
`storage-state.json` under `~/.config/coulomb-social/auth/`. Map target is
|
||
**thin dir+git** (ADR-0003/0004), not Forgejo-only.
|
||
|
||
2026-08-13: **Session export run** (probe `vw_pages`, 147 network captures).
|
||
Research content is primarily **`custom.article`** (nomer/abstractor/content/
|
||
logo + space link), not empty public meta. Field map (redacted):
|
||
`docs/migration/field-map-from-session-2026-08-13.md`.
|
||
|
||
2026-08-13: **Corpus + sample tree** (local only, not git):
|
||
`~/.config/coulomb-social/auth/exports/corpus-202608131015057/` —
|
||
71 spaces, 109 articles; sample ADR-0004 tree `trees/reichelag/` with 30
|
||
pages + 29 visuals (~1.6 MB). Progress note:
|
||
`docs/migration/export-progress-2026-08-13.md`. Script:
|
||
`scripts/export-bubble-corpus.mjs`. **T02** largely unblocked for mapping;
|
||
**T04** next when PageOps thin-git landing pad exists (CSOC-WP-0006).
|
||
|
||
## Feature cut decision (human gate)
|
||
|
||
```task
|
||
id: CSOC-WP-0001-T03
|
||
status: done
|
||
priority: high
|
||
state_hub_task_id: "35a0af87-2f22-4fae-8c82-e3cc4f77f074"
|
||
```
|
||
|
||
Decide rebuild-as-is vs reduced v1 scope. **Human gate — Bernd.** Capture under
|
||
`docs/decisions/`. Gate **apex cutover / bulk migration**, not day-to-day
|
||
rebuild work on `app.coulomb.social`.
|
||
|
||
2026-08-12: **Stage-1 cut accepted** — partial rebuild for productive transfer.
|
||
Must: onboarding; spaces/pages markdown CRUD with Visual, Title, Abstract;
|
||
page transfer; page copy. Later capabilities after Bubble is reference-only.
|
||
Record: `docs/decisions/2026-08-12-feature-cut-stage-1.md`
|
||
Model: `docs/capability/` (vocabulary + `model-v0.yaml` + stage-1 narrative).
|
||
Open product details (visual storage, editor UX, …) refine without reopening
|
||
the must-set unless founder revises the decision.
|
||
|
||
## Migration rehearsal
|
||
|
||
```task
|
||
id: CSOC-WP-0001-T04
|
||
status: wait
|
||
priority: low
|
||
state_hub_task_id: "2e5be321-3d76-4d7a-86b1-cbe4eb554bd7"
|
||
```
|
||
|
||
Import one or more Bubble spaces into the v1 model on a non-production path
|
||
(app host or staging). Record lossiness and residuals. **Blocked until** T02
|
||
has a real export (CSOC-WP-0004 persistence is ready). Explicitly **not** a
|
||
prerequisite for building product UX on the empty/new content store.
|
||
|
||
## Acceptance
|
||
|
||
- Inventory and mapping docs are committed and reviewable.
|
||
- Feature-cut decision is recorded with owner and date.
|
||
- At least one migration rehearsal has been run and residual gaps listed.
|
||
- Apex Bubble retirement is only planned after rehearsal + product parity gate.
|
||
|
||
## Notes
|
||
|
||
- Parallel hosts: `docs/deploy.md`
|
||
- Product foundation: `CSOC-WP-0004` finished; spaces runbook `docs/deploy.md`
|
||
- Inventory: `docs/bubble-inventory/`
|
||
- Mapping sketch: `docs/migration/`
|
||
- Service contract: `the-custodian/canon/standards/business-app-service-contract_v0.1.md`
|