What: routes/trash.py reaches into tombstones._DEFAULT_PURGE_AGE_DAYS and tombstones._parse.
Why: Leaky abstraction — the leading-underscore convention says "private" but consumers depend on them.
Approach: Promote both to the module's public API (drop the underscore, document them). Or keep them private and add explicit public wrappers in tombstones.
What:
routes/trash.pyreaches intotombstones._DEFAULT_PURGE_AGE_DAYSandtombstones._parse.Why: Leaky abstraction — the leading-underscore convention says "private" but consumers depend on them.
Approach: Promote both to the module's public API (drop the underscore, document them). Or keep them private and add explicit public wrappers in
tombstones.