By: Tom Sydney Kerckhove <syd@cs-syd.eu>
Treat the output file as the source of truth, and never book an unfinished month The importer only ever adds months the file has no transaction dated in. It never rewrites a month that is already there, so a hand edit sticks. Filtering after emitting rather than before also stops the opening balance transaction being re-emitted with a new date on every run that adds a month. A month that has not ended is not booked at all, because Stripe is still collecting it and, given the above, half a month written now would stay half a month forever. It still counts towards the balance checked against Stripe. Listings are conduit sources, so a page is fetched only once downstream has asked for something past the previous one.