coulomb-social/workplans/CSOC-WP-0001-bubble-io-exit-assessment.md
tegwick 8447943dc0 Import Bubble export trees into PageOps and finish CSOC-WP-0001
Add import_content_tree management command and import_tree helper for
ADR-0004 sample trees. Document reichelag rehearsal lossiness; mark T02/T04
and the bubble exit workplan finished.
2026-08-13 12:48:55 +02:00

138 lines
5 KiB
Markdown

---
id: CSOC-WP-0001
type: workplan
title: "bubble.io exit assessment"
domain: communication
repo: coulomb-social
status: finished
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: done
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** on the thin content plane
(ADR-0003/0004; Forgejo optional).
Document mapping and export under `docs/migration/`.
2026-08-12: Provisional mapping sketch —
`docs/migration/schema-mapping-sketch-2026-08-12.md`.
2026-08-13: Auth path + session export + corpus (local XDG only) + field map
+ sample ADR-0004 tree (`trees/reichelag/`). See
`docs/migration/export-progress-2026-08-13.md`,
`docs/migration/field-map-from-session-2026-08-13.md`,
`docs/migration/bubble-auth-and-export.md`. Residual: deeper crawl for
thin spaces; multi-space bulk trees.
## 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: done
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
(local CONTENT_ROOT / later app host). Record lossiness and residuals.
2026-08-13: **Single-space rehearsal** of local `trees/reichelag/` via
`manage.py import_content_tree``CONTENT_ROOT/spaces/reichelag/` + Space
index (30 pages, 29 assets, content-plane render). Lossiness + residuals:
`docs/migration/rehearsal-reichelag-2026-08-13.md`. Code:
`coulomb_social/apps/spaces/import_tree.py`. Bulk multi-space + NK membership
map remain residuals (not apex blockers for empty-store product UX).
## Acceptance
- [x] Inventory and mapping docs are committed and reviewable.
- [x] Feature-cut decision is recorded with owner and date.
- [x] 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`