7.6 KiB
ADR-024: Independent Workspace Platform Service (Torbat Workspace)
| Field | Value |
|---|---|
| Status | Accepted |
| Date | 2026-09-12 |
| Deciders | Platform Architecture |
| Supersedes | — |
| Superseded by | — |
Context
Organizations on TorbatYar need an enterprise work-management center: projects, tasks, content operations, editorial calendars, creative review, collaboration, files/assets, OKR/KPI, resource planning, time tracking, and reporting.
Those capabilities must not be absorbed into:
- Core Platform — owns the SaaS Tenant Workspace (onboarding, membership, entitlement), not work-management aggregates
- CRM — owns sales tasks, sales comments/mentions, and sales notes on leads/opportunities
- Experience (Torbat Pages) — owns public sites, page resources, themes, and publish surfaces
- File Storage — owns binary blobs and signed-URL storage
- Accounting — owns journals and the Posting Engine; “Project” there is an analytical dimension
- Payment — owns a tenant Payment Workspace (enablement/mode), not work items
- AI Assistant (Torbat AI) — owns the product AI platform; Workspace may consume it
The word Workspace is already used for the operational Tenant after onboarding, for Experience workspace shells, and for Payment workspace shells. A new independent service requires an explicit naming rule.
TorbatYar already isolates shared platforms as independent services (Loyalty ADR-011, Communication ADR-012, Sports Center ADR-014, Delivery ADR-015, Experience ADR-016, Hospitality ADR-017, Payment ADR-020). Work management follows the same pattern.
Commercial product name: Torbat Workspace. Category: Platform Product. Purpose: Enterprise Work Management Platform.
Commercial packaging is already extensible (ADR-023): registration + capability declaration + documentation is sufficient. This ADR does not implement Commercial Runtime rows, bundles, subscriptions, licenses, or trials.
Decision
-
Introduce
workspaceas an independent Workspace Platform service (deployable nameworkspace-service) with sole ownership ofworkspace_db(ADR-001). -
Permission prefix:
workspace.*. Publish-only domain events:workspace.*. -
Row-level multi-tenancy via
tenant_id(ADR-003). The product is always scoped to a Core Tenant. -
Naming disambiguation (normative):
Term Owner Meaning Tenant Workspace / Core Workspace Core Operational Tenant after onboarding Experience Workspace Experience Experience-owned site/workspace shell ( experience.workspace.*)Payment Workspace Payment Payment enablement unit ( payment.workspace.*)Torbat Workspace this service Enterprise work-management product Work Hub this service Tenant-scoped root aggregate inside Torbat Workspace (teams, spaces, settings) Event namespace
workspace.*is reserved for Torbat Workspace only. Core, Experience, and Payment keep their existing prefixes. -
Consume Core, Identity, CRM, Accounting, File Storage, Communication, Experience, and AI Assistant only via REST API and Events — never shared tables or foreign model imports.
-
Financial journals only through Accounting Posting Engine (ADR-010). Workspace emits project-cost / time-cost intents; Accounting posts externally.
-
Sales CRM aggregates remain in CRM. Workspace tasks, notes, comments, and mentions are work-management records and may hold opaque
crm_*_refvalues only. -
Public pages, themes, and
publish_idsurfaces remain in Experience (ADR-016, ADR-022). Content Studio is editorial/operations, not a page builder. -
Binary storage remains in File Storage. Workspace owns folders, asset catalog metadata, and
file_refpointers. -
Product AI remains optional and external (ai-architecture.md). Workspace
ai-assistantis a capability that calls AI Assistant contracts; core work-management works when AI is off. -
Messaging / notifications only through Communication (ADR-012).
-
Implementation phases registered as
workspace-15.0–workspace-15.11in phase-manifest.yaml; roadmap in workspace-roadmap.md. Registration phase:workspace-reg. -
API port 8013 reserved; service path
backend/services/workspace. -
UI lives in
frontend/only (ADR-002); this service exposes APIs and events. -
Commercial compatibility (architecture only): Torbat Workspace is a Platform Product compatible with Commercial Runtime, Business Bundles, Capability Registry, Subscription, License, and Trial contracts (ADR-023). No commercial implementation, catalog seed, or runtime rows are authorized by this ADR.
-
Planned L1 entitlement key:
workspace.module.enabled. Service-local L2 capability packs / L3 toggles (when implemented) live inworkspace_dband must not recompute Core plan entitlements.
Consequences
Positive
- One reusable work-management platform for all tenant organizations
- Clear boundary with Core tenancy, CRM sales work, Experience publishing, File Storage binaries, and Accounting books
- Commercial Runtime can package Torbat Workspace later as registry rows only (zero Core architecture change)
- Event/permission prefix
workspace.*is unambiguous once Core/Experience/Payment keep their existing namespaces
Negative
- Additional deployable service and database
- The everyday word “workspace” now has four documented meanings and must be qualified in docs and APIs
- Eventual consistency between Workspace cost/time intents and Accounting journals, and between Workspace collaboration refs and CRM
Neutral
- Registration (this ADR + manifests + roadmap) precedes business code;
workspace-15.0implements the scaffold - CRM collaboration (sales comments/tasks) and Workspace collaboration remain sibling domains
- No change to Commercial Runtime engines, seeds, or frontend catalogs
Alternatives Considered
- Expand Core Tenant Workspace into work management — rejected (violates business-module boundaries; couples tenancy with projects/tasks/content).
- Expand CRM tasks/comments into a full PM suite — rejected (CRM is Sales CRM; work management is a different product).
- Expand Experience into content operations / creative studio — rejected (Experience owns published pages, not editorial/project operations).
- Embed files/assets as the File Storage product — rejected (storage owns blobs; Workspace owns work-management asset catalogs).
- Defer as an unnamed future service — rejected (product, phases, commercial compatibility, and naming collisions must be registered first).