Tick Data Downloader v4.1 - catalog update validation, 2026-10-11

17 regression/integration tests passed with the bundled Python runtime.
- New catalog creation; duplicate-free resume and unchanged-file preservation.
- Existing dates, symbols, partial recovery entries and extra columns retained.
- Revised complete entries updated without adding a duplicate key.
- Byte-exact backup before an existing catalog is replaced.
- Simulated catalog replacement failure leaves the original intact.
- Missing/corrupt/wrong-row-count/unverified outputs are not newly indexed.
- Invalid existing CSV and duplicate keys fail without overwriting the CSV.
- Invalid checkpoint and out-of-dataset path handling.
- Offline conversion of two actual bundled VIX dates: incremental merge/resume.
- Catalog-only backfill of existing v4 checkpoints, with no network calls.
- Safe Stop and later download failure still index finished data.
- Catalog failure changes the run outcome to failed.
- Masters-only mode does not create a misleading empty tick catalog.
- Legacy daily command also creates a catalog in its individual run directory.

Compiled C# desktop executable: self-check passed.
GUI download smoke test: actual bundled VIX conversion + bundled masters
completed and automatically created a catalog with the verified row count.
No live network downloads or full-history data refresh were run for this patch.
Existing source decoder, source configuration, bundled data and runtime unchanged.

Re-run tests:
  runtime\python.exe -B -m unittest discover -s tests -v
Re-check distributed files:
  CHECK_PACKAGE.cmd

New catalog entries rely on completed export checkpoints (roundtrip/hash checked
when exported) plus current Parquet size/footer/schema/row-count checks. Catalog
generation is not a fresh SHA256 scan of every historical tick file and does not
verify that a mounted cloud drive has finished uploading.
