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.
This commit is contained in:
tegwick 2026-08-13 12:48:55 +02:00
parent affed64839
commit 8447943dc0
6 changed files with 523 additions and 35 deletions

View file

@ -4,7 +4,7 @@ type: workplan
title: "bubble.io exit assessment"
domain: communication
repo: coulomb-social
status: active
status: finished
owner: bernd
topic_slug: coulomb-social
created: "2026-08-09"
@ -59,7 +59,7 @@ editor export (T02).
```task
id: CSOC-WP-0001-T02
status: progress
status: done
priority: medium
state_hub_task_id: "0bc6eea3-030d-4987-b203-15ccd4f94fcb"
```
@ -67,33 +67,20 @@ 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).
2. **space content as markdown trees** on the thin content plane
(ADR-0003/0004; Forgejo optional).
Document mapping and export under `docs/migration/`. Depends on CSOC-WP-0004
content layout decisions for lossless mapping of pages/artefacts.
Document mapping and export under `docs/migration/`.
2026-08-12: Provisional mapping sketch without dump
2026-08-12: Provisional mapping sketch —
`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.6MB). 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).
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)
@ -120,22 +107,27 @@ the must-set unless founder revises the decision.
```task
id: CSOC-WP-0001-T04
status: wait
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
(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.
(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
- 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.
- [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