1 Commits

Author SHA1 Message Date
59c0bbde0c fix(tracker): is_processed now checks expires_at, not just file existence 🐛
Some checks failed
create-release / build (push) Successful in 35s
CI / release (release) Failing after 1m31s
Previously is_processed() returned True for any record file that existed,
relying entirely on cleanup_expired() (called at __init__) to delete stale
files. Because cleanup runs at container startup — before Akahu transactions
are fetched — any record that expired exactly on that startup would be deleted
and then immediately missed, letting the duplicate through.

Fix: is_processed() reads the expires_at field from the JSON and returns False
if the record has expired, regardless of whether cleanup has run.

Also adds migrate_ttl.py script to retroactively extend expires_at on existing
records that were written under a shorter TTL, and bumps version to 0.1.3.
2026-06-15 22:20:47 +12:00