coulomb-social/docs/capability/model-v0.yaml
tegwick e2aa4045f4 Design dual authoring modes and lazy projection fields
Document top-down and bottom-up writing, lazy title/abstractor/visual that
persist after generation, and per-field regenerate plus lock. Wire into
capability model and stage-1 notes.
2026-08-13 00:07:32 +02:00

207 lines
6.9 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-12"
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: partial
notes: "Model + admin/seed; member-facing CRUD todo"
- id: feat.space-title
title: Space Title field
status: partial
notes: "DB title exists; member edit UI todo"
- id: feat.space-abstract
title: Space Abstract field
status: partial
notes: "Maps to Space.description until product rename"
- id: feat.space-visual
title: Space Visual (cover/image)
status: todo
- id: feat.page-list
title: List pages in a space
status: partial
- id: feat.page-crud
title: Page create / update / delete (product path)
status: partial
notes: "Git/Forgejo only today; product path todo"
- id: feat.page-title
title: Page Title (structured)
status: partial
notes: "Inferred from H1/filename; frontmatter/UI todo"
- id: feat.page-abstract
title: Page Abstractor
status: todo
- id: feat.page-visual
title: Page Visual
status: todo
- 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.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: todo
- id: feat.page-move-authz
title: Authz for source and destination spaces
status: todo
- 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: todo
- id: feat.page-duplicate-assets
title: Copy or re-link page assets
status: todo
# --- 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