Skip to content

DOM-CRM-DQ-001Possible Duplicate

Markdown

DOM-CRM-DQ-001

Possible Duplicate

Markdown
  • DocumentDraft
  • ImplementationObserved

Planning

Specified by
CON-CRM-DQ-001

Design

Owned by
SVC-CRM-DQ-duplicates

KindDomain objectProduct areaCRMModuleDuplicate Review and Record MergingRevision1

Read atservices-crm a8d1364freact-console baf6dae3

Relationships

ToCardinalityOwnershipCrosses a serviceOn archive or delete
DOM-CRM-ENT-001A contact pair references two contacts; each contact can participate in many pairs.Entities owns contacts. Data Quality owns pair and key links that cascade on deletion and group state repaired by regrouping.no
DOM-CRM-ENT-002An organization pair references two organizations; each organization can participate in many pairs.Entities owns organizations. Data Quality owns their comparisons and repairs grouping when they disappear.no
DOM-CRM-DQ-003A group or record selection can start multiple plans without a persisted association.Plans retain selected record identities without storing the originating review group.no
DOM-CRM-DQ-004A merge can move outside dismissals and remove other participant pairs.Duplicate persistence owns pair updates even when called inside a merge transaction.no

Invariants

InvariantProtectsEnforced atProvenance
INV-DOM-CRM-DQ-001-01
Canonical record ordering and pair uniqueness permit only one row for each comparison, with a band consistent with its score.
databaseobserved
INV-DOM-CRM-DQ-001-02
Stored scores start at thirty-five; confidence floors are thirty-five, fifty, seventy and ninety.
service, databasetest
services-crm:modules/duplicates/tests/unit/services/matching/bands.spec.js#gives 34 no band at all, so the pair is not stored
INV-DOM-CRM-DQ-001-03
Dismissed standing requires both a dismissal instant and author; restoration removes both.
databaseobserved
INV-DOM-CRM-DQ-001-04
Rescoring retains pair identity, origin and first detection, and preserves standing and dismissal unless a separate reopening changes them.
serviceobserved
INV-DOM-CRM-DQ-001-05
Detection removes only open detected pairs that no longer qualify, leaving reviewed and non-detected origins stored.
servicetest
INV-DOM-CRM-DQ-001-06
Database record links prevent pairs and keys from surviving record deletion; regrouping repairs the remaining membership.
databasetest
services-crm:modules/merges/tests/integration/services/merges/duplicate-groups-after-merge.integration.spec.js#leaves the group holding the two records that are left, counted as it now stands
INV-DOM-CRM-DQ-001-07
Pair changes and their affected group recomputation share the same transaction.
service, databasetest
services-crm:modules/duplicates/tests/integration/services/detection/duplicate-detection.integration.spec.js#grouped every pair it stored, the groups of a batch being written in the pass’s own transaction (§14)
INV-DOM-CRM-DQ-001-08
Groups contain two to ten records connected at one standing, excluding confirmed pairs.
service, databasetest
services-crm:modules/duplicates/tests/unit/services/groups/group-components.spec.js#says the group it cut short is bounded, so a reader knows there may be more of it
INV-DOM-CRM-DQ-001-09
Draft matching does not create records, keys or pairs.
servicetest
services-crm:modules/duplicates/tests/e2e/duplicates.e2e.spec.js#writes nothing: the draft is not a record, so the queue is as it was
INV-DOM-CRM-DQ-001-10
An authorized creation exception is written atomically with its new record, is unique for that record and cannot be updated by the application.
service, databasetest
INV-DOM-CRM-DQ-001-11
Rule replacement requires the current version, a nonblank trimmed label and a unique integer position between one and one hundred.
api, service, databasetest
INV-DOM-CRM-DQ-001-12
Guarded run creation permits only one queued or running re-check for each workspace record type.
servicetest
services-crm:modules/duplicates/tests/integration/services/persistence/duplicate-rescans.integration.spec.js#refuses a second rescan of that record type, so two passes never rescore the same records at once
INV-DOM-CRM-DQ-001-13
Conditional batch completion adds that batch to progress at most once.
service, databasetest
services-crm:modules/duplicates/tests/integration/services/queue/rescan-queue.integration.spec.js#counts the batch once, so a redelivery never moves the progress past the end
INV-DOM-CRM-DQ-001-14
Comparison operates within the execution workspace for both reads and writes.
service, databasetest
services-crm:modules/duplicates/tests/integration/services/detection/duplicate-detection.integration.spec.js#answers a pass over a record of ANOTHER tenant with nothing, the tenant being the execution’s
INV-DOM-CRM-DQ-001-15
No duplicate-processing record declares custom-field capability or custom-value storage.
serviceinferred
services-crm:modules/duplicates (no metadata object registration; db/*.table.ts declares no custom-value table)

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.