-- Media jobs run on whichever process claims them first: a fenced lease keeps two processes from -- running one job, deferrals bound how long a job waits for the GPU, an operation key makes a -- replayed tool call return the job it started, and continueAfter wakes the bot when it ends. ALTER TABLE "media_jobs" ADD COLUMN "deferrals" INTEGER NOT NULL DEFAULT 0; ALTER TABLE "media_jobs" ADD COLUMN "continueAfter" BOOLEAN NOT NULL DEFAULT false; ALTER TABLE "media_jobs" ADD COLUMN "operationKey" TEXT; ALTER TABLE "media_jobs" ADD COLUMN "leaseToken" TEXT; ALTER TABLE "media_jobs" ADD COLUMN "leaseExpiresAt" TIMESTAMP(3); ALTER TABLE "media_jobs" ADD COLUMN "nextAttemptAt" TIMESTAMP(3); CREATE UNIQUE INDEX "media_jobs_operationKey_key" ON "media_jobs"("operationKey"); CREATE INDEX "media_jobs_status_updatedAt_idx" ON "media_jobs"("status", "updatedAt");