Skip to content

CAP-CRM-ACT-019Apply workspace access and maintenance permissions

Markdown

CAP-CRM-ACT-019

Apply workspace access and maintenance permissions

Markdown
  • DocumentDraft
  • Product intentProposed
  • ImplementationInconsistent

KindCapabilityProduct areaCRMModuleActivities, Follow-ups and Task WorkRevision2

Read atservices-crm a8d1364freact-console baf6dae3

The Formal Contract

The narrative above explains; the sections below are authoritative — the rules, scenarios and tests this document binds.

Outcomes
Workspace boundaries on local recordsActions aligned with declared permissionsPermission-aware console controls
Surfaces
consoleapi
Intent sources
services-crm:docs/milestones/CRM-M8-activities-and-tasks.md#D-08services-crm:docs/migrations/activities/README.md#D9

Controls

21 controls apply, from the corpus control catalogue.

TC-AZ-001 TC-AZ-002 TC-AZ-003 TC-AZ-004 TC-AZ-005 TC-AZ-006 TC-DAT-001 TC-DAT-002 TC-DAT-003 TC-LOG-001 TC-LOG-002 TC-LOG-003 TC-LOG-004 TC-LOG-005 TC-PI-001 TC-PI-005 TC-PRV-001 TC-PRV-002 TC-TEN-001 TC-TEN-002 TC-TEN-003

Permissions

KeyChecked atScope
crm.activities.readapitenant
crm.activities.createapitenant
crm.activities.updateapitenant
crm.activities.deleteapitenant
crm.activities.bulkapitenant
crm.activities.queryapitenant
crm.activities.historyapitenant
crm.tasks.readapitenant
crm.tasks.createapitenant
crm.tasks.updateapitenant
crm.tasks.deleteapitenant
crm.tasks.bulkapitenant
crm.tasks.queryapitenant

Business Rules

10 rules, 9 to be proved before approval. A rule's product intent is derived from its origin: 1 confirmed by a product decision, the rest inheriting this capability's proposed.

IdRuleKindEnforced atProvenance
01must prove
Proposed
Local records and foreign keys are workspace-scoped, while external user and role references need separate validation rather than local foreign keys.
no proof recorded yet
invariantdatabaseobserved
02must prove
Proposed
Another workspace’s activity or task appears absent, and attempted writes to it are refused without changes.
no proof recorded yet
validationapi, service, databasetest
services-crm:modules/tasks/tests/integration/services/persistence/tasks.integration.spec.js#is left exactly as the other tenant had it, every refusal above having written nothing
03must prove
Proposed
A signed workspace context cannot be used against another workspace’s address.
no proof recorded yet
permissionapitest
services-crm:modules/activities/tests/e2e/activities.e2e.spec.js#refuses a context for tenant B on tenant A’s path: 403
04must prove
Proposed
Activity read, query and history are reader-tier permissions, creation, editing and deletion are user-tier permissions, and bulk operations are administrator-tier permissions.
no proof recorded yet
permissionapitest
services-crm:modules/activities/tests/e2e/activities.e2e.spec.js#refuses a create to a caller who may only read activities: 403
05must prove
Proposed
Task read and query are reader-tier permissions, task work and lifecycle actions are user-tier permissions, and deletion and bulk are administrator-tier permissions.
no proof recorded yet
permissionapitest
services-crm:modules/tasks/tests/e2e/tasks.e2e.spec.js#answers 403 to a caller who may only read tasks claiming one
06must prove
Proposed
Activity types, task types and queues are readable by readers and maintained by administrators.
no proof recorded yet
permissionapitest
services-crm:modules/activities/tests/e2e/activities.e2e.spec.js#refuses a type’s create to a caller who may only read types: 403
07must prove
Proposed
A request with no signed execution context is rejected as unauthenticated.
no proof recorded yet
permissionapitest
08must prove
Confirmed
Ordinary saves can set deletion or full locks on module records, but no supported action can clear a full lock afterward.
no proof recorded yet
policyapi, servicetest
09
Proposed
Task, task-type and task-queue bulk permissions are declared without operations that consume them.
permissionapiobserved
10must prove
Proposed
Console activity and task controls are hidden or disabled according to the user’s relevant permissions.
no proof recorded yet
permissionconsoletest

Scenarios

IdGivenWhenThenProvenance
01Callers have administrator, read-only, absent-role and non-CRM authority.Attempt activity reading, creation, correction, deletion and configuration.Each request follows its declared permission boundary.test
02An administrator belongs to another customer workspace.Target this workspace’s activity and task references.Requests are rejected at the context boundary or treated as absent records.test

The Markdown files under specs/ in rhythmsoftware/rhythm-v2-docs are the canonical source of truth. This reader is a generated, read-only projection of them.