FICTIONAL CALLBACK RECONCILIATION — 2026-11-06 These files teach set reconciliation. They are not VICIdial imports, database exports, a production report, or an agent-visible queue. Open both CSVs in a spreadsheet. Do not upload them to VICIdial. All records are invented. Scope: campaign LAB01; callback_at_utc >= 2026-11-06T00:00:00Z and < 2026-11-07T00:00:00Z. Include all states and recipients. Timestamps are explicit UTC. Both files are fixed teaching snapshots. Identity: callback_key is a synthetic, guaranteed stable identity across these two fixtures. It is NOT a recommendation to use lead_id, callback date, or a presumed database key on a real installation. CB001 and CB005 intentionally share a lead_alias but represent different callbacks. CB003 has different state between snapshots; state is not identity. Expected result: Current: 7 physical rows; 1 outside window; 6 in-scope rows; 1 repeated identity; 5 distinct callbacks. Archive: 6 physical rows; 1 outside window; 1 wrong campaign; 4 in-scope rows and 4 distinct callbacks. Shared: CB003, CB004 (2). Current-only: CB001, CB002, CB005 (3). Archive-only: CB007, CB008 (2). Union: 5 + 4 - 2 = 7. Current-to-archive bridge: 5 - 3 + 2 = 4; archive minus current = -1. The union is a historical set, not seven callbacks due or visible to an agent. Every physical row is classified in expected-row-classification.csv. Compare your answer only after classifying both inputs. reconciliation-worksheet.csv opens in a spreadsheet: enter 5, 4, 2 in B2:B4. English-locale spreadsheet formulas produce 3, 2, 7, -1 and 4. If your spreadsheet does not recognize formulas, use the printed arithmetic. Empty inputs show Unknown. Enter nonnegative integers; the shared count cannot exceed either population. The sheet does not validate your identity rule or operational scope. For real reports, record exact query/report filters and the installed version. A missing archive, uncertain key, changed snapshot, or unexplained row is a reason to investigate rather than publish the union.