diff --git a/docs/2026-08-15-sales-summary-balance-validation.md b/docs/2026-08-15-sales-summary-balance-validation.md index bc87b993..6c4a5899 100644 --- a/docs/2026-08-15-sales-summary-balance-validation.md +++ b/docs/2026-08-15-sales-summary-balance-validation.md @@ -287,3 +287,27 @@ came to $56.37 across 69 days — identical to the in-memory prediction in Part the job path end to end. The 20 contended clients were re-measured in memory after the charge repair, because a second full pass through the job would have taken hours for the reason in defect 2. The two methods agree exactly where both were run. + +## Ongoing deduplication, with both clients active again + +The re-key is meant to make contention impossible even if a location is configured on two clients +again. To test that rather than assume it, all 10 twins were **re-activated** — every location +shared once more — and the import re-run. + +**Repeated imports are idempotent.** Three consecutive refund imports for both halves of the +Concord pair, with both clients live on location `L43Z5GMW72VMG`: + +| | run 0 | run 1 | run 2 | run 3 | +|---|---|---|---|---| +| NGCC | 127 | 127 | 127 | 127 | +| NGCD | 1,419 | 1,419 | 1,419 | 1,419 | + +Not one entity created or moved. Before the re-key this is the exact configuration that made a +refund's owner flip every ~20 minutes. + +The first import after the migration is the only one that grows anything, and it grows once: NGCD +gained 100 refunds materialising its own copies, while NGCC — whose refunds already carried its +own scoped key — gained only the 2 that were genuinely new. After that, steady state. + +**State the restore was left in:** twins re-activated, i.e. Phase 0 deliberately undone for this +test. Re-applying it is the ten-datom retraction recorded above.