Prints Phase 1 shadow backfill added for one-to-one card coverage
v0.6.244Phase 1 prints rollout now includes a dedicated shadow backfill that hydrates one print record for each existing active card without changing any live read paths, API payloads, ingestion identity semantics, or card canonical IDs. The backfill runs in bounded batches with per-batch transactions so it can be rerun safely, resumed predictably, and executed with low operational risk while preserving existing user-facing behavior. Contract coverage was expanded to validate core safety guarantees: cards missing prints are hydrated correctly, reruns remain idempotent, pre-existing print rows are preserved without duplication, and card rows are not mutated by the hydration process. This completes the baseline shadow-data layer needed for future print-aware read evolution while keeping current production behavior stable and fully backward compatible.
Changes:
- Added a chunked shadow backfill flow that creates exactly one print per active card when missing and skips existing mappings
- Ensured backfill idempotency and transaction-safe execution so repeated runs do not create duplicate print rows
- Added focused backfill contract tests for creation, idempotency, existing-row preservation, and card non-mutation guarantees
- Preserved current behavior boundaries by keeping ingestion, APIs, canonical card identity, and sales attachments unchanged