mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-08 04:32:42 +00:00
Migration 0276 reverses the rows that reached EXPIRED only through the post-opening clock on a container that never had one. It moves a row back to IN_USE when an opening date is recorded and ACTIVE when none is, and sets `expires_at` from the printed expiry — which for these rows is usually nothing at all, because they recorded none. The predicate is exact rather than approximate: nothing but the printed expiry and the in-use clock can write EXPIRED, so a clock-less container whose printed expiry is absent or still ahead can only have got there through the clock. Pens and ampoules keep their EXPIRED, so does anything whose printed date genuinely lapsed, and so does a drained container. No date is invented and no printed expiry is fabricated. The integration test seeds the before-state, applies the migration SQL from disk, and asserts both what moves and what stays — the testcontainer starts empty, so the migration running at boot proves nothing on its own.