---
id: JNY-PFM-TNL-005
title: CRM delivers new defaults to existing workspaces
feature: FEAT-PFM-TNL-03
product_area: platform
module: tenant-lifecycle
revision: 2
status: draft
product_intent: proposed
implementation_evidence: observed
supersedes: []
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  services-crm: a8d1364f1dd44b723bb5f9acba12f983e9ec8d69
actor: ACT-PFM-012
goal: >-
  The current CRM baseline reaches older eligible workspaces without reversing
  customer customization.
capabilities:
  - CAP-PFM-TNL-008
  - CAP-PFM-TNL-007
  - CAP-PFM-TNL-009
  - CAP-PFM-TNL-002
screens: []
steps:
  - 'n': 1
    surface: participant seed set (declaration)
    action: Declare a new task-type seed with a new key and set version.
    capability: CAP-PFM-TNL-008
    expected: The declaration distinguishes the added default from earlier seeds.
    provenance: documented
    source: >-
      services-platform:docs/standards/baseline-configuration.md#§2 How it is
      declared
  - 'n': 2
    surface: 'build: declaration completeness and manifests'
    action: Run CRM’s declaration completeness checks.
    capability: CAP-PFM-TNL-007
    expected: Workspace table ownership remains complete and unique.
    provenance: test
    source: >-
      services-crm:modules/tenant-lifecycle/tests/integration/db/declaration-completeness.integration.spec.js#leaves
      no tenant-keyed table undeclared
  - 'n': 3
    surface: BaselineReconciliationRun (deployment)
    action: Deploy the release and reconcile eligible workspaces.
    capability: CAP-PFM-TNL-009
    expected: >-
      Missing seed applications are recorded and failures identify their
      workspaces.
    provenance: test
    source: >-
      services-crm:modules/tenant-lifecycle/tests/unit/lifecycle/baseline-reconciliation.spec.js#runs
      the reconciliation on every update, which is every deployment
  - 'n': 4
    surface: baseline reconciliation (one workspace)
    action: Reconcile an older uncustomized workspace.
    capability: CAP-PFM-TNL-009
    expected: Its seeded configuration and ledger match the current baseline.
    provenance: test
    source: >-
      services-crm:modules/tenant-lifecycle/tests/integration/services/lifecycle/baseline-reconciliation.integration.spec.js#leaves
      an old tenant with exactly the types a tenant provisioned today holds
  - 'n': 5
    surface: baseline reconciliation (customized workspace)
    action: Reconcile a workspace with a deleted default type.
    capability: CAP-PFM-TNL-008
    expected: The ledger keeps the customer’s deletion in place.
    provenance: test
    source: >-
      services-crm:modules/tenant-lifecycle/tests/integration/services/participants/provisioning.integration.spec.js#does
      not recreate a type the customer deleted
  - 'n': 6
    surface: createTenant
    action: Provision a workspace after the baseline addition.
    capability: CAP-PFM-TNL-002
    expected: The same declared defaults are applied during construction.
    provenance: test
    source: >-
      services-crm:modules/tenant-lifecycle/tests/integration/services/participants/provisioning.integration.spec.js#applies
      every baseline task type the first time
  - 'n': 7
    surface: initializeTenant
    action: Initialize a participant for one workspace on demand.
    capability: CAP-PFM-TNL-009
    expected: The participant applies defaults still missing from its ledger.
    provenance: test
    source: >-
      services-platform:modules/tenants/tests/integration/services/provisioning/initialize-tenant.integration.spec.js#runs
      the participant for the tenant and says what it did
alternates:
  - from_step: 3
    condition: A workspace cannot be reconciled.
    path: Record its explanation while continuing with other workspaces.
    outcome: The deployment response reports failure after the collected work.
    provenance: test
    source: >-
      services-crm:modules/tenant-lifecycle/tests/unit/lifecycle/baseline-reconciliation.spec.js#fails
      the deployment when any tenant failed, naming the tenant and its message
failures:
  - from_step: 2
    condition: A workspace-keyed table lacks a declaration.
    path: Fail the completeness check.
    outcome: The declaration gate is not satisfied.
    provenance: test
    source: >-
      services-crm:modules/tenant-lifecycle/tests/integration/db/declaration-completeness.integration.spec.js#leaves
      no tenant-keyed table undeclared
rules_in_play:
  - BR-CAP-PFM-TNL-008-01
  - BR-CAP-PFM-TNL-008-02
  - BR-CAP-PFM-TNL-008-03
  - BR-CAP-PFM-TNL-009-03
  - BR-CAP-PFM-TNL-009-04
  - BR-CAP-PFM-TNL-009-05
  - BR-CAP-PFM-TNL-007-04
assertions:
  - id: AS-JNY-PFM-TNL-005-01
    statement: >-
      Reconciled older CRM fixtures match current seeded configuration and
      ledger entries.
    provenance: test
    source: >-
      services-crm:modules/tenant-lifecycle/tests/integration/services/lifecycle/baseline-reconciliation.integration.spec.js#leaves
      an old tenant with exactly the seed ledger a tenant provisioned today
      holds
  - id: AS-JNY-PFM-TNL-005-02
    statement: Repeating seed application creates no additional defaults.
    provenance: test
    source: >-
      services-crm:modules/tenant-lifecycle/tests/integration/services/participants/provisioning.integration.spec.js#skips
      every seed on a second provisioning
  - id: AS-JNY-PFM-TNL-005-03
    statement: Reconciliation preserves a renamed or removed ledgered default.
    provenance: test
    source: >-
      services-crm:modules/tenant-lifecycle/tests/integration/services/participants/provisioning.integration.spec.js#leaves
      a type the customer renamed after it was seeded exactly as they left it
e2e_policy: none
e2e_reason: >-
  Deployment and database boundaries supply the relevant evidence; this flow has
  no interactive customer screen.
proved_by: []
---

# CRM delivers new defaults to existing workspaces

## Story

CRM adds a default as a seed rather than a migration-time customer record. Its release reconciles eligible workspaces through their existing ledgers. An uncustomized older workspace receives the current baseline, while deliberate customer edits stay in place. New construction uses that same declaration, and staff retain a one-workspace initialization operation.
