The production container has ambiguous timezone config — /etc/localtime
points to Etc/UTC but date reports CST. The transaction freeze/thaw task
used datetime.now() (naive, relying on OS timezone), causing scheduling
to fire at unpredictable wall-clock times.
- Add utils/timezone.py with centralized Chicago timezone helpers
- Fix tasks/transaction_freeze.py to use now_chicago() for scheduling
- Fix utils/logging.py timestamp to use proper UTC-aware datetime
- Add 14 timezone utility tests
- Update freeze task tests to mock now_chicago instead of datetime
Closes#43
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Documents the next-release staging branch pattern used for
batching changes before merging to main.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>