import type { Kysely } from 'kysely'; /** * Cache purges that failed, so the five-minute sweep can try them again. * * Purging is fire-and-forget by design — `purgeInvalidated` never throws, because the write it * describes has already happened and has already been reported successful to the editor. Turning a * cache-maintenance problem into a 500 would tell somebody their save failed when it did not, and * they would do it again. * * That was a cheap promise while the TTL was sixty seconds: a dropped purge cost a minute of * staleness. It stops being cheap at a long TTL, where the same dropped purge costs a day — and the * failure is silent, because "never throws" also means "never tells anybody". A row here is what * turns that back into minutes. * * **Created empty, and nothing needs backfilling.** Unlike `0019` and `0021` there is no * `npm run db:reindex` step: those tables were derived from content that already existed, and this * one only ever holds work that failed after the migration ran. * * **Not a general job queue, deliberately.** It holds one kind of work, retried by a sweep that * already runs, with no ordering guarantee and no fan-out — because the alternative is a scheduler * abstraction that a CMS shipping zero native dependencies should not be growing. If a second kind * of deferred work ever appears, that is the moment to reconsider, not now. */ export declare function up(db: Kysely): Promise; export declare function down(db: Kysely): Promise;