# Field map from authenticated Bubble session (2026-08-13) | Field | Value | |-------|--------| | Workplan | CSOC-WP-0001-T02 | | Session | Playwright storage-state (local only; not in git) | | Export | `~/.config/coulomb-social/auth/exports/20260813-083747/` (local) | | Target SoR | ADR-0003 / ADR-0004 thin dir+git | ## Session validation | Check | Result | |-------|--------| | Probe URL | `https://coulomb.social/vw_pages` (authenticated) | | Page title | Research \| Coulomb | | Network captures | 147 (elasticsearch mget/msearch dominant) | | Public `/api/1.1/meta` types | still empty (schema not public) | ## Live data model (from ES payloads) Primary content type in Research UI is **`custom.article`**, not `custom.page` (page may still exist in static packages as a type; session payloads for `vw_pages` / chunks list are **articles**). ### `custom.space` | Bubble field | Observed | Rebuild (ADR-0003/0004) | |--------------|----------|-------------------------| | `Slug` | yes | space directory slug / frontmatter slug | | `isprivate_boolean` | yes | access / visibility | | `members_list_user` | yes | SpaceMembership | | `crew_list_user` | yes | membership role variant (map later) | | `addnewusersasmember_boolean` / `addnewusersasguest_boolean` | yes | invite defaults | | `locale_option_location` | yes | later | | `funds_number` | yes | later / out of stage-1 | | `gitea_text` | rare | optional repo pointer | | Created By / Date, Modified Date | yes | provenance in backmatter or git | **UI card (SpaceLet):** name + short description (e.g. DeepNews / “Tracking progress”) — name field may be displayed from related article or a space title field not always present under the keys above; confirm on detail view next pass. ### `custom.article` (Research “PageLet” / “ExtendLet”) | Bubble field | Observed | Rebuild | |--------------|----------|---------| | `nomer_text` | **title-like name** (always in sample) | frontmatter `title` | | `abstractor_text` | short description | frontmatter `abstractor` | | `content_text` | body text (often markdown-ish) | markdown **body** | | `logo_image` | image | frontmatter `visual` → `assets/` | | `space_custom_space` | parent space id | path under `spaces//` | | `chunks_list_custom_article` | list (often empty or nested articles) | **do not** store as chunk table; optional live includes / sections (ADR-0003) | | `context_custom_article` | parent/context article | backmatter relation / include parent | | `contents_list_custom_article` | list | later / relations | | `access_option_visibility` | visibility | access policy later | | `archived_boolean` | archive | archive lifecycle | | `taskstate_option_chunktask` | task state on chunk-like items | later (work tracking) | | `canonical_text` | canonical ref | later | | `moders_list_user` | moderators | membership roles later | | `_owner_user` / `_creator_user` | owner | Created By / Member link | | Created/Modified | timestamps | git / backmatter | **UI labels:** **PageLet** (page-like) vs **ExtendLet** (extension/journal under a parent) — both appear as `custom.article` with different presentation; map both to **pages** with optional `kind` or parent relation. ### `user` | Bubble field | Rebuild | |--------------|---------| | `name_first_text`, `name_last_text`, `namenick_text` | Member display profile (not IdP password) | | `avatar_image` | optional profile visual | | `about_text` | later | | `spaceselected_custom_space` | last-selected space (UI state) | | `superadmin_boolean` | later / NK groups | | `userroles_list_option_user_type` | later | | authentication | **do not migrate passwords** — NetKingdom (ADR-0001) | ### Relations (stage-1 optional) | Type | Role | Stage-1 | |------|------|---------| | `custom.rellike` | likes | later | | `custom.relfollow` | follows article | later | ## UI surfaces confirmed live | Route | Title | Notes | |-------|-------|--------| | `/vw_pages` | Research | Article list in current space; copy + favorite actions | | `/vw_spaces` | Research | ~70 spaces listed for session user | | `/vw_chunks` | Research | Same corpus, “chunks” framing (ExtendLet/PageLet) | | `/vw_search` | Research | Space multi-select filter | | `/vw_feed` | Explore | Social feed | | `/vw_new` | Explore | Create/new stream (rich text sample content) | | `/vw_invites` | Explore | Invite player by email | | `/vw_likes` | Explore | Liked PageLets | ## Mapping recipe (export → thin git) For each `custom.space`: ```text spaces// pages/ assets/ ``` For each `custom.article` with `space_custom_space` → that space: ```text spaces//pages/.md ``` ```markdown --- id: bubble: title: "" abstractor: "" visual: "assets/" # after download bubble_type: article bubble_kind: pagelet|extendlet|unknown parent: bubble: # if context_custom_article set archived: false --- ``` **Members:** map `members_list_user` / `crew_list_user` to invitations or NK subjects after identity linking — **not** Bubble passwords. **Chunks list:** if non-empty, either: 1. concatenate into body with headings (simple), or 2. emit child pages + live `mkt:include` (ADR-0003 preferred for reuse). ## What this export does *not* yet give - Stable full field schema for every Bubble type (only keys observed in payloads). - Binary download of all `logo_image` CDN files (next script step). - Complete article dump for all spaces (session shows current space context heavily). - Backend workflow definitions. - Guaranteed coverage of `custom.page` / `custom.chunk` as separate types in ES (names appear in static packages; live Research uses **article**). ## Next actions 1. ~~Extend exporter / sample tree~~ — see `export-progress-2026-08-13.md` + `scripts/export-bubble-corpus.mjs`. 2. Optional: deeper crawl for spaces with only 1 article if more body pages exist. 3. **T04:** import local sample tree via PageOps (CSOC-WP-0006). 4. Keep raw export **only** under XDG auth dir. ## Privacy This note intentionally omits user emails, full article bodies, and raw IDs beyond structure. Raw export stays local.