# coulomb-social product capability model v0 # Vocabulary: docs/capability/vocabulary.md # Stage-1 narrative: docs/capability/stage-1-cutover.md schema_version: "0.1" product: coulomb-social resource_id: "resource:tenant:coulomb:coulomb-social" updated: "2026-08-13" stance: | Partial rebuild is intentional. Stage 1 enables user transfer and retires Bubble as productive system; Bubble may remain reference-only. Later stages add use cases on the rebuild. stages: stage_1: id: stage_1_productive_transfer title: "Productive transfer / Bubble reference-only" goal: > Members use app.coulomb.social for onboarding and space/page work with Title, Abstract, Visual; page copy and transfer. Apex productive use leaves Bubble. decision_ref: docs/decisions/2026-08-12-feature-cut-stage-1.md capabilities: - id: cap.member-onboarding title: User onboarding utility: > A person becomes and remains a signed-in member of the rebuild without Bubble for day-to-day authentication. priority: must_stage_1 depends_on_platform: - netkingdom-oidc - user-engine features: - id: feat.oidc-sign-in title: OIDC sign-in (existing users) status: shipped - id: feat.jit-member title: First-login JIT Member + user-engine link status: shipped - id: feat.session-diagnostics title: Session / principal diagnostics status: shipped - id: feat.public-registration title: Public Create account + verified mail status: blocked blocked_on: "NK-WP-0025 / CSOC-IN-0001" toggle: NETKINGDOM_REGISTRATION_URL - id: feat.post-login-app-home title: Post-login app home (Spaces) status: shipped - id: feat.member-transfer-assist title: Assisted transfer of Bubble members (no password import) status: todo - id: cap.space-content title: Spaces with markdown content utility: > Members organize work in spaces and maintain page content as markdown, with first-class Title, Abstract, and Visual metadata and CRUD. priority: must_stage_1 depends_on_platform: - forgejo - apps-pg related: - docs/adr/ADR-0002-space-content-forgejo-markdown.md features: - id: feat.space-list title: List spaces (tenant-scoped) status: shipped - id: feat.space-md-render title: Render space page from Forgejo markdown status: shipped - id: feat.space-edit-forgejo title: Edit body in Forgejo + refresh/webhook status: shipped - id: feat.space-crud title: Space create / read / update / delete-or-archive (member UI) status: shipped notes: "Member UI create/edit/archive; DB index + CONTENT_ROOT tree" - id: feat.space-title title: Space Title field status: shipped - id: feat.space-abstract title: Space Abstract field status: shipped notes: "Maps to Space.description (product label Abstract / Abstractor)" - id: feat.space-visual title: Space Visual (cover/image) status: shipped notes: "Path relative to space tree (e.g. assets/cover.jpg); not app media yet" - id: feat.page-list title: List pages in a space status: shipped notes: "Sidebar from CONTENT_ROOT pages/*.md" - id: feat.page-crud title: Page create / update / delete (product path) status: shipped notes: "PageOps on CONTENT_ROOT; Forgejo optional fallback" - id: feat.page-title title: Page Title (structured) status: shipped notes: "Frontmatter title + form; H1 fallback on render" - id: feat.page-abstract title: Page Abstractor status: shipped - id: feat.page-visual title: Page Visual status: shipped notes: "Frontmatter path; relative assets copied on page copy" - id: feat.authoring-top-down title: Top-down authoring (title → abstractor → outline → body) status: todo notes: "docs/architecture/authoring-modes-and-lazy-projections.md" - id: feat.authoring-bottom-up title: Bottom-up authoring (body first; metadata later) status: todo - id: feat.projection-lazy-fill title: Lazy-generate missing title/abstractor/visual on display status: todo - id: feat.projection-regenerate-lock title: Per-field regenerate and lock for projections status: todo - id: feat.projection-stale-alternative title: Stale badge with generate alternative then replace or keep status: todo notes: "docs/architecture/stale-derived-content.md; markitect derived slots" - id: feat.include-live-default title: Live includes by default (spreadsheet-like up-to-date resolve) status: todo - id: feat.derived-include-pin title: Optional pin; stale badge with generate alternative then replace or keep status: todo - id: feat.outline-explode-implode title: Outline-editor explode into connected docs and implode back status: todo notes: "markitect explode/implode; ArchitectureBlueprint D4" - id: feat.content-plane-thin-git title: Content SoR as directory + markdown files in git status: partial notes: "CONTENT_ROOT PageOps landed (CSOC-WP-0006); git commit/push operator path next" - id: feat.content-fail-closed title: Fail closed on missing binding/fetch status: shipped - id: cap.page-transfer title: Transfer page to another space utility: > A page (and agreed assets) can be moved from one space to another with correct membership checks and stable identity after the move. priority: must_stage_1 features: - id: feat.page-move title: Move page between spaces status: shipped notes: "PageOps transfer; index page cannot move" - id: feat.page-move-authz title: Authz for source and destination spaces status: shipped notes: "spaces_for_member on both ends" - id: cap.page-copy title: Generate copy of page utility: > A member can create an independent copy of a page (optionally into another space) without manual git-only workflow as the sole path. priority: must_stage_1 features: - id: feat.page-duplicate title: Duplicate page (new slug/title) status: shipped - id: feat.page-duplicate-assets title: Copy or re-link page assets status: partial notes: "Relative visual files under assets/ copied; full asset scan deferred" # --- later stage (not transfer blockers) --- - id: cap.social-engagement title: Social engagement (favorites, follows) utility: Members favorite and follow people or content. priority: later features: - id: feat.favorites title: Favorites status: later - id: cap.marketplace title: Marketplace matching utility: Challenges, methods, and solutions discovery/matching. priority: later features: - id: feat.challenges-methods-solutions title: Challenge / method / solution surfaces status: later - id: cap.monetization title: Monetize curiosity / payments utility: Paid offerings or monetization flows. priority: later features: - id: feat.payments title: Payments integration status: later - id: cap.realtime-collab title: Real-time collaborative editing utility: Multiple members edit the same page concurrently in-app. priority: later features: - id: feat.collab-editor title: Collaborative in-app editor status: later - id: cap.bubble-workflow-parity title: Bubble workflow automation parity utility: Like-for-like Bubble backend workflows. priority: out notes: > Rebuild workflows in code only when product need returns; not a parity goal. platform_dependencies: - id: netkingdom-oidc title: NetKingdom OIDC (KeyCape / Authelia) - id: user-engine title: user-engine identity link - id: forgejo title: Forgejo git hosting for space content - id: apps-pg title: Shared application PostgreSQL - id: railiance-runtime title: Railiance deploy of coulomb-social