Skip to content

CAP-CRM-ACT-005Read past interactions and upcoming work on a record timeline

Markdown

CAP-CRM-ACT-005

Read past interactions and upcoming work on a record timeline

Markdown
  • DocumentDraft
  • Product intentProposed
  • ImplementationObserved

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
Past and future context in one placeTask visibility aligned with read authorityA summary independent of pagination
Surfaces
consoleapi
Preconditions
The caller holds activity read and related-record read authority.
Intent sources
services-crm:docs/milestones/CRM-M4-duplicates-and-merge.md#D-20

Controls

16 controls apply, from the corpus control catalogue.

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

Permissions

KeyChecked atScope
crm.activities.readapitenant
crm.contacts.readapitenant
crm.organizations.readapitenant
crm.tasks.readservicetenant
crm.activities.updateservicetenant
crm.tasks.updateservicetenant

Business Rules

14 rules, 12 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
Opening a record timeline requires activity read permission and read permission for that contact or organization.
no proof recorded yet
permissionapitest
services-crm:modules/activities/tests/e2e/activities.e2e.spec.js#refuses a timeline to a caller who may not read the contact: 403
02must prove
Proposed
Upcoming orders scheduled activities and open tasks from earliest to latest, while History orders completed or cancelled activities and closed tasks from latest to earliest.
no proof recorded yet
policyservicetest
services-crm:modules/activities/tests/integration/services/persistence/activities.queries.integration.spec.js#lists the upcoming soonest first: the overdue scheduled activity, then open tasks and scheduled activities in time order
03must prove
Proposed
An open task uses its due day or, without one, its task date; a closed task uses its task date, positioned at workspace midnight.
no proof recorded yet
calculationservicetest
services-crm:modules/activities/tests/integration/services/persistence/activities.queries.integration.spec.js#answers a task item whole: its envelope at the start of its day in the tenant’s zone, and the task
04must prove
Proposed
Task rows and task summary counts are omitted when the caller lacks task read permission.
no proof recorded yet
permissionservicetest
services-crm:modules/activities/tests/e2e/activities.e2e.spec.js#leaves the tasks out for a caller who may not read tasks
05must prove
Proposed
Each shared activity appears once on each linked record’s timeline and contributes once to that record’s summary.
no proof recorded yet
invariantservice, databasetest
services-crm:modules/activities/tests/integration/services/persistence/activities.queries.integration.spec.js#shows the activity linked to three contacts and an organization once on each of the four timelines
06
Proposed
Timeline filters support type, owner or assignee, outcome, status and time range; selecting an outcome excludes tasks, and selecting the task kind includes them.
policyapi, servicetest
07must prove
Proposed
Text search matches activity subjects and notes and task titles and descriptions without distinguishing accents or letter case.
no proof recorded yet
calculationservicetest
08must prove
Proposed
Timeline pages contain 25 items by default and at most 100, continuing across both sources without repeated or skipped items.
no proof recorded yet
policyapi, servicetest
services-crm:modules/activities/tests/integration/services/persistence/activities.queries.integration.spec.js#answers every item exactly once, in order, across pages of 25 that interleave the two sources
09must prove
Proposed
Past scheduled activities and open tasks due before today carry an overdue flag.
no proof recorded yet
calculationservicetest
10
Proposed
An item’s editable flag reflects the caller’s update permission for its record kind.
permissionservicetest
11must prove
Proposed
The summary aggregates the entire timeline by type and status, lists no more than 200 owners and assignees, and counts upcoming work independently of pagination.
no proof recorded yet
calculationservicetest
services-crm:modules/activities/tests/integration/services/persistence/timelines.queries.integration.spec.js#counts a contact’s mix by type, by status, its owners and assignees, its upcoming items and its tasks
12must prove
Confirmed
A missing workspace record produces a not-found response; a merged record produces a gone response identifying the survivor.
no proof recorded yet
validationapi, servicetest
services-crm:modules/activities/tests/e2e/activities.e2e.spec.js#answers 404 for a contact the tenant does not have
13must prove
Proposed
Unknown query parameters and invalid page cursors cause a refusal rather than being ignored.
no proof recorded yet
validationapitest
services-crm:modules/activities/tests/e2e/activities.e2e.spec.js#refuses a timeline query parameter it does not know: 400
14must prove
Proposed
Both contact and organization activity tabs load their own timelines, and task entries navigate to the task drawer on the Tasks screen.
no proof recorded yet
policyconsoleobserved

Scenarios

IdGivenWhenThenProvenance
01A contact has a timeline containing 5,000 activities.Read its opening page and summary.Indexed record reads satisfy the benchmark’s response budget.test
02A contact has many timeline entries.Apply owner and text filters, then request another page.Results match the filters and pagination introduces no duplicates.test

Edge Cases

IdGivenWhenThenProvenance
03A scheduled activity and task share a calendar day.Read the Upcoming section.Each uses its timeline position, with undated-due tasks positioned by task date.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.