"매 두 source 의 truth 의 align". Reconciliation 의 financial (ledger ↔ bank statement match), data (master ↔ replica), distributed (CRDT conflict-free merge), AI (multi-agent state sync) 의 cross-domain pattern. 2026 의 local-first software 의 CRDT renaissance.
매 핵심
매 Financial reconciliation
3-way match: PO ↔ receipt ↔ invoice.
Bank rec: GL ↔ bank statement 의 daily.
Sub-ledger to GL: AR/AP detail 의 control account match.
import*asYfrom"yjs";import{WebsocketProvider}from"y-websocket";constdoc=newY.Doc();constprovider=newWebsocketProvider("wss://sync.example.com","room-1",doc);consttext=doc.getText("content");text.observe(event=>console.log("delta:",event.delta));text.insert(0,"Hello ");// 매 다른 client 의 concurrent insert 의 auto-merge
Automerge JSON CRDT
import*asAutomergefrom"@automerge/automerge";letdoc1=Automerge.from({tasks:[]asstring[]});letdoc2=Automerge.clone(doc1);doc1=Automerge.change(doc1,d=>d.tasks.push("write spec"));doc2=Automerge.change(doc2,d=>d.tasks.push("review code"));constmerged=Automerge.merge(doc1,doc2);// merged.tasks == ["write spec", "review code"] — 매 conflict X
언제: 매 reconciliation rule 의 fuzzy match (description, amount tolerance), exception explanation, audit trail summary.
언제 X: deterministic match (use SQL JOIN), regulated final attestation (human sign-off).
❌ 안티패턴
OT 의 P2P 의 force: 매 OT 의 server 의 require — P2P 의 CRDT 의 use.
LWW 의 collab text: 매 char-level loss — RGA / Yjs 의 use.
No vector clock 의 causal: 매 wall-clock skew → wrong order.
No idempotency key: retry 의 duplicate → double charge.
Reconcile manually 매 day: automate w/ exception queue.