Run backfill jobs via @adonisjs/queue (SQLite)
Replace the "void runBackfill(did)" fire-and-forget pattern in the web
process with a proper queued BackfillJob handled by @adonisjs/queue using
its database adapter on SQLite. Adds a third Adonis process,
queue-worker, running 'node ace queue:work'.
Web request handler still does the dedup gate (INSERT OR IGNORE on
backfill_jobs, dispatch only if the insert actually happened) since
@adonisjs/queue does not provide dedup-by-key natively. backfill_jobs
remains the loading-page state surface that the queued job updates as
it runs; the queue's internal tables are an implementation detail.
Update the architecture diagram, repo layout, deployment compose file,
migrations notes, and graceful-shutdown notes accordingly.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>