---
id: ADR-CRM-ENT-009
title: Dates Follow the Workspace Calendar
product_area: crm
module: entities
revision: 1
status: proposed
design_intent: confirmed
source_sha:
  services-crm: 7ea48a414c42eade10d60753b8bcc323b1dd726f
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
decision: >-
  Relationship and role dates use the workspace calendar with inclusive end
  days; reads derive future, current and past classification; eligible roles and
  compliance effects follow saves or reconciliation rather than early
  assignment.
constrains:
  - DOM-CRM-ENT-003
  - STATE-CRM-ENT-005
  - WF-CRM-ENT-006
  - WF-CRM-ENT-007
  - STATE-CRM-ENT-003
origin: 'D-10, D-12 and D-46 (Andrew, 2026-10-19); CRM-M2 plan A6 and A7'
alternatives:
  - option: Use the browser or server date.
    why_not: >-
      Near midnight those clocks can classify a relationship differently from
      the workspace. The recorded timezone decision rejects that disagreement.
  - option: Persist a classification and rewrite it nightly.
    why_not: >-
      A stored classification can be stale between the boundary and maintenance,
      and would require needless per-record nightly updates.
consequences:
  - >-
    Calendar classification changes at the workspace day boundary without a
    write.
  - >-
    Effects still need bounded reconciliation or save-time work, and the full
    scheduled date pass is disabled by default in production.
evidence:
  - >-
    services-crm at 7ea48a41:
    modules/entities/services/affiliations/affiliation-date-reconciliation.ts;
    modules/entities/services/contacts/role-assignment/automatic-role-reconciliation.ts;
    docs/affiliations/README.md
---
# Dates Follow the Workspace Calendar

## Context

Dates describe business days rather than universal instants. Inclusive ends make a relationship effective for its whole final workspace day, while reads compute its current classification.

## Decision

Relationship and role dates use the workspace calendar with inclusive end days; reads derive future, current and past classification; eligible roles and compliance effects follow saves or reconciliation rather than early assignment.

## Alternatives Considered

Use the browser or server date. Near midnight those clocks can classify a relationship differently from the workspace. The recorded timezone decision rejects that disagreement.

Persist a classification and rewrite it nightly. A stored classification can be stale between the boundary and maintenance, and would require needless per-record nightly updates.

## Consequences

Pending effects are separate from that classification. Roles, default links and compliance can await a scheduled pass, an unlocked record or a later save. Deployment defaults and backlog limits must therefore remain visible when describing boundary behavior.

Calendar classification changes at the workspace day boundary without a write. Effects still need bounded reconciliation or save-time work, and the full scheduled date pass is disabled by default in production.
