Skip to content

Collaboration & Workflow

The dashboard lets teams collaborate directly on platform entities: comment with @-mentions, follow an entity's activity trail, and share a time-frozen view via a scoped, expiring link. Everything is tenant-scoped, sanitized, and audited.

  • Feature: F22 · Design: ADR 0073 (design/adr/0073-dashboard-collaboration-workflow.md) · Spec: design/vision/specs/F22-collaboration-workflow.md
  • Backend: platform/services/dashboard/backend/collab.py + routers/collab.py
  • Frontend: lib/collab.ts + components/{CommentThread,ShareSnapshotButton}.tsx (adopted on ModelDetail)

Comments & @-mentions

Open a model (e.g. /models/jpcp) and scroll to Discussion. Comments attach to the entity and are tenant-scoped — you only see your tenant's threads. Mention a teammate with @name; they are notified over the realtime channel (F12). The composer previews who a draft will notify.

Comments are sanitized server-side (HTML tags and javascript: URIs stripped) and rendered inertly, so a comment can never inject script into the dashboard.

Activity trail

GET /api/v1/collab/{type}/{id}/activity merges an entity's comments with its audit events into one chronological trail — so a promotion, a drift event, and the discussion around them read as a single story. Every collaborative action is itself audited (source=dashboard-collab).

Shareable snapshots

Use Share snapshot to freeze the current view (path + filters) and copy a shareable link. The snapshot is stored behind a scoped, read-only, expiring token (default 7 days) bound to your tenant — the recipient sees the exact frozen view and cannot write or reach another tenant's data.

POST /api/v1/collab/snapshot        { "view": { "path": "/models/jpcp", "search": "?range=24h" } }
 { "token": "…", "expires_at": "…" }
GET  /api/v1/collab/snapshot/{token}  { "found": true, "view": {}, "read_only": true }   // or { "found": false }

Notes & limits

Shipped: entity comments with @-mentions + notifications, the activity trail, and shareable read-only snapshots — all tenant-scoped, sanitized, and audited. Deferred (tracked in the plan): the collaboration store graduating to cross-device sync, standalone external share pages that render a snapshot token, approval discussion threads captured with the decision (extends the F14 approval gate), and external push to Notion / issue trackers behind a feature flag (F25).

See docs/dashboard/architecture.md for the design diagram and docs/reference/api.md for endpoint shapes.