Thin CONTENT_ROOT content plane (ADR-0003/0004) with space visual field, product UI for Title/Abstract/Visual, page list sidebar, and tests. Update capability model and smoke checklist; mark WP-0006 finished.
230 lines
8.2 KiB
YAML
230 lines
8.2 KiB
YAML
# 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
|