CSV delivery contract guide

How to Switch a CSV Delivery Contract: Old Rules, New Rules, and Output Differences

Apply old and new rules to the same input, separating column changes, newly rejected rows, and missing-value provenance. This page uses synthetic data only and sends nothing.

1. Freeze the old result first

Apply old revision rev1 under contractID=demo-v24 to the same input. Keep the old result and revision available so it remains reproducible.

RevisionRuleResult
rev1Output code and qty; region is optional.Both rows accepted. Output is code,qty.
rev2Rename code to sku; require region.Before confirmation, only 001 is accepted. 002 is newly rejected.

2. Keep changes separate from missing values

The column rename is a contract change. The empty region on row 002 is missing provenance. Do not silently reuse an old value or a default; record a separate confirmation.

Rowrev1rev2 before confirmationDecision
001AcceptedAccepted (column is sku)Rule change only
002AcceptedRejected: region-requiredWait for source

source-confirmation.csv explicitly confirms 002,west. This is an explicit source confirmation, not automatic filling.

3. Approve and save the new revision

After confirmation, the rev2 output has two rows with sku,qty,region. Keep the change list, both rule revisions, and the unresolved count together for delivery discussions.

rev2 final
sku,qty,region
001,2,east
002,3,west

unresolved: 0
old rev1: reproducible

Where not to convert automatically

Unknown engines or operations, semantic column changes, and values without source confirmation must remain incomparable or unresolved. Similar names are not proof that two contracts are interchangeable.

For a real local comparison, open CSV cleanup, choose old and new recipes in “Compare delivery rules before and after,” review the table, then approve.