ci / build-test (push) Successful in 1m15s
Mapping two Reading columns onto one meter staged two readings per row at the same timestamp. (meter_id, time) is the reading key, so the commit failed with a raw EF change-tracker error that named neither the column nor the meter. - Wizard Validate() rejects duplicate Reading targets, naming the columns and the meter. Reading-only: Delivery/TankLevel stage events, not readings. - CommitAsync() re-validates. Previously only Preview did, so a mapping edited after a dry run reached the database unchecked. - ImportService.GuardDuplicateReadings() backstops the same case for the API and any other non-wizard caller, reporting meter + date. Claude-Session: https://claude.ai/code/session_01V6joyergfvVLFEizH1hJLd