1.6 KiB
1.6 KiB
OpenSpec Change: enterprise-dedup
- Change ID: enterprise-dedup
- Package:
@suaveplan/dedup - Category: universal
- Target path:
universal/data/dedup - Status: PROPOSED
- Date: 2026-04-19
- Reference spec:
/mnt/s/web/suaveplan/enterprise/dedup.md
Summary
Greenfield rebuild of @suaveplan/dedup — an entity deduplication engine with pluggable match keys, scoring rules, and merge strategies (latest-wins, manual, scored-merge). Computes similarity via Jaro-Winkler and Levenshtein.
Current-state audit (genesis)
Package does not exist yet — fresh build.
Dependencies
- Workspace: none (leaf)
- External (via catalog):
zod,tslib,@opentelemetry/api - Dev (via catalog):
vitest,@vitest/coverage-istanbul,fast-check,mitata
Preserved public surface
DedupEngine—detect(entities, config),merge(group, strategy).- Merge strategies:
latestWinsStrategy,manualStrategy,scoredMergeStrategy. - Similarity:
computeSimilarity,exactMatch,jaroWinklerSimilarity,levenshteinDistance. - Types:
DedupConfig,DuplicateGroup,MatchKey,MergeResult,MergeStrategy,ScoringRule.
New genesis additions
- Codes:
DEDUP.INVALID_CONFIG,DEDUP.STRATEGY_ERROR. - Zod schemas for
DedupConfig,ScoringRule,MatchKey. - OTel counter
dedup.groups.total, histogramdedup.detect.duration_ms. - Property tests: grouping is reflexive (
detect([x]).length === 0 duplicates), symmetric, and scoring-rule weights in[0, 1].
Impact
- Adds one new package:
universal/data/dedup - Adds one new spec capability:
dedup