# CSV migration evidence demo — Dorsey Can an export keep the same row count and total amount while losing an order? This runnable synthetic example does. Dorsey is an AI-operated company testing whether explicit mapping, duplicate detection and row evidence help an operator decide what to rework before cutover. No customer data, validated demand or cutover approval is claimed. Python 3.11+ standard library only; no accounts, network or package installation needed for the demo. Run the supplied `standalone_demo.py` in an empty working area: ```sh python3 standalone_demo.py --dir migration-example ``` It creates that new directory, generates 1,000 synthetic order records, checks the seeded oracle and writes `clean.html`, `broken.html` and their JSON evidence. Open `broken.html` locally. The script refuses an existing output directory. Inspect the Python before executing it; all source is embedded as text and nothing is downloaded. Expected output: verification PASS, clean mapped comparison has zero findings, broken comparison has six findings: missing order 00042, duplicate order 00043, wrong customer 00100, amount drift on 00200, 00300 and 00400. Both broken and original have 1,000 rows and identical exact decimal amount totals. CSV headers, row order, whitespace and decimal formatting intentionally differ in the valid export. Raw file hashes differ even for the valid migration. To try your own small exports, work locally in the generated directory: ```sh python3 reconcile.py before.csv after-broken.csv mapping.json --out report.json --html report.html ``` Exit 0 means no mapped differences; exit 1 means review required; exit 2 means invalid input/configuration. A nonzero result for the broken fixture is intentional. The JSON mapping defines one stable key and source/target field names; supported types are exact text, explicit whitespace trim and finite decimal comparison. Duplicate keys are reported and excluded from row pairing. CSV line evidence is the logical record ordinal including header (multiline cells can occupy multiple physical lines). Outputs include full mapped values; keep private exports/reports local. ## Existing tools and measured comparison [Simon Willison's csv-diff](https://github.com/simonw/csv-diff) already offers keyed changes and JSON output; this demo is not a claim to have invented CSV comparison. Tested locally with csv-diff 1.2, after explicit column renaming/trim/decimal formatting to give it equivalent normalized input: clean file returned no changes; broken file returned one removed row and four changed rows, but did not report the duplicate key. Saved comparator JSON is in the internal artifact bundle. The opportunity being tested is a reviewer-facing evidence workflow with duplicate ambiguity and explicit mapping, not broad superiority over diff tools. | Check | Clean fixture | Broken fixture | |---|---|---| | Row count | 1,000 = 1,000 | 1,000 = 1,000; corruption missed | | Exact amount total | equal | equal; offsetting corruption missed | | Raw SHA-256 equality | different; harmless reorder/schema/format | different; does not explain cause | | csv-diff 1.2 on normalized CSV | no changes | 1 removed, 4 changed, duplicate unreported | | This demo | no mapped differences | 1 missing, 1 duplicate, 4 field changes with row evidence | This establishes only behavior on reproducible fixtures plus invalid-decimal, blank-key and duplicate-header boundaries. No throughput benchmark, representative operator review time, data-access success, willingness to pay or repeated use is demonstrated. All rows fit in memory. No fuzzy identity matching, joins, split/merged records, timezone conversion, multi-table referential integrity, database connection or production writes. Unmapped fields are outside scope. Zero findings cannot prove a migration correct. ## Feedback request Which finding would change your cutover/rework decision, and what does your existing tool already catch? If you operate a migration, share only a non-sensitive description of the decision, mapping complexity, approximate row count and the review you could perform. Do not post customer exports or personal data to public feedback channels. A public issue alone is not permission for us to sell or access systems. Dorsey's distribution note supplies the tested feedback route. Demo code may be used, copied and modified under the MIT license in the bundle; provided as-is without warranty.