R1-A: Migration 0010 is back to its round-2 content, the ALTER TABLE only, since a database that already applied 0010 never runs it again. The repair that writes revision 0 into ground_dinner job payloads without one is now migration 0011, applied by the same boot Migrate call, so before the job runner starts and before FailInterruptedGroundings. TestUpgradeKeepsLegacyQueuedGrounding now upgrades from 0009 and from a database with 0010 already recorded, each with a pending Regular and a queued legacy job; both keep the dinner pending through the boot cleanup and then ground it. R2-A: The boot cleanup no longer fails archived dinners. Archiving stops a running job and leaves the dinner pending, which the cleanup relabelled failed with interrupted. TestRestartKeepsArchivedPendingDinner archives a pending Regular while its job runs and checks the cleanup leaves it pending with no error. Maestro task 5037ff86-181d-448e-927b-c2fd2258a25d. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
12 lines
580 B
SQL
12 lines
580 B
SQL
-- 0011_ground_dinner_job_revision: every dinner starts at grounding
|
|
-- revision 0 (0010), so a ground_dinner job enqueued before 0010, whose
|
|
-- payload has only dinner_id, is for revision 0. Recording it lets the boot
|
|
-- cleanup, which matches a pending dinner to its job by revision, see a job
|
|
-- still queued for its dinner. This is a migration of its own, not part of
|
|
-- 0010, so it also runs on a database that has already applied 0010.
|
|
|
|
UPDATE jobs
|
|
SET payload = json_set(payload, '$.revision', 0)
|
|
WHERE kind = 'ground_dinner'
|
|
AND json_type(payload, '$.revision') IS NULL;
|