Repair PrFixQueueItem rows whose url was flipped to a CI job URL by the pre-#1098 code.
PR #1117 made the item URL write-once (set at first enqueue, backfilled only while empty) and moved CI job links out of the identity field, but it intentionally does not repair rows that were already poisoned: src/lib/pr-fix-queue.ts guards url with !existing.url, so a stored job URL (https://github.com/<repo>/actions/runs/<run>/job/<job>) is never replaced by a later PR-URL re-enqueue. Known-deployed example: item cmujtuwtk05r401sasa4v5ie6 on misospace/pinchflat#113.
Expected work: a targeted one-time normalization (script or backfill on the update path) that rewrites url to the PR URL (https://api.github.com/repos/<repo>/pulls/<pr> is derivable from repo + pr) when the stored value matches the Actions run/job URL shape and leaves every other value untouched, with tests in src/lib/pr-fix-queue.test.ts covering poisoned-row repair and no-touch of legit URLs.
Expected files: src/lib/pr-fix-queue.ts, src/lib/pr-fix-queue.test.ts.
Repair
PrFixQueueItemrows whoseurlwas flipped to a CI job URL by the pre-#1098 code.PR #1117 made the item URL write-once (set at first enqueue, backfilled only while empty) and moved CI job links out of the identity field, but it intentionally does not repair rows that were already poisoned:
src/lib/pr-fix-queue.tsguardsurlwith!existing.url, so a stored job URL (https://github.com/<repo>/actions/runs/<run>/job/<job>) is never replaced by a later PR-URL re-enqueue. Known-deployed example: itemcmujtuwtk05r401sasa4v5ie6on misospace/pinchflat#113.Expected work: a targeted one-time normalization (script or backfill on the update path) that rewrites
urlto the PR URL (https://api.github.com/repos/<repo>/pulls/<pr>is derivable fromrepo+pr) when the stored value matches the Actions run/job URL shape and leaves every other value untouched, with tests insrc/lib/pr-fix-queue.test.tscovering poisoned-row repair and no-touch of legit URLs.Expected files:
src/lib/pr-fix-queue.ts,src/lib/pr-fix-queue.test.ts.