From abaecc13c7c955e722bc1a544b0164a3073ee119 Mon Sep 17 00:00:00 2001 From: Lucas Winther Date: Sat, 15 Aug 2026 01:28:44 +0200 Subject: [PATCH] fix: lowercase the GHCR image name github.repository preserves the owner's casing and GHCR rejects any uppercase in a repository name, so the image job failed on tag validation before it built anything. Also drops the review-quarantine skill's references to evidence spans and the extraction-evaluator agent, both of which went away with the LLM layer. Co-Authored-By: Claude Opus 5 (1M context) --- .claude/skills/review-quarantine/SKILL.md | 19 +++++++------------ .github/workflows/ci.yml | 10 ++++++++-- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/.claude/skills/review-quarantine/SKILL.md b/.claude/skills/review-quarantine/SKILL.md index 3ee633c..d9700ec 100644 --- a/.claude/skills/review-quarantine/SKILL.md +++ b/.claude/skills/review-quarantine/SKILL.md @@ -39,21 +39,18 @@ through the queue. ## Reviewing one event -For each held event the UI shows the parsed fields, the reason and detail, the source link, and the -cleaned text excerpt the extraction came from. Work in this order: +For each held event the UI shows the parsed fields, the reason and detail, and the source link. Work +in this order: -1. **Read the evidence span.** Does it actually contain the dates claimed? If the quoted text does - not support the extracted dates, reject — and note it, because that is a hallucination and the - extraction prompt needs evaluating. -2. **Open the source.** Confirm the dates against the live page, not just the excerpt. +1. **Open the source.** Confirm the dates against the live page. 3. **Check the timezone.** Most gacha sources publish in UTC+8. Confirm the conversion. A silently wrong timezone is the most common real error here, and it is 8 hours of wrongness that looks plausible. -4. **Check `regionScoped`.** Is this a global banner end or a per-region reset? Getting this wrong +3. **Check `regionScoped`.** Is this a global banner end or a per-region reset? Getting this wrong makes the countdown wrong for two thirds of users. -5. **Check for a guessed end date.** If the source says TBD or gives no end and the candidate has a - concrete `endsAt`, that is a fabrication. Correct it to `null` with `endPrecision: "unknown"` - before approving, and flag the extraction. +4. **Check for a guessed end date.** If the source says TBD or gives no end and the candidate has a + concrete `endsAt`, that is a parser bug. Correct it to `null` with `endPrecision: "unknown"` + before approving, and open the adapter. For `date_conflict` specifically: the UI shows the published event beside the candidate. Determine which is right by going to the source. If the source genuinely changed, approve the correction. If @@ -77,8 +74,6 @@ The queue is a signal. After working it, report what caused it: - Repeated `sanity_failed` from one source → the adapter needs repair. Use the **adapter-author** agent. -- Hallucinated dates or fabricated evidence → the prompt regressed. Use the **extraction-evaluator** - agent before changing anything. - Many `low_confidence` items that all turn out correct → the threshold may be too high, or the source needs a second corroborating source. Do not just lower `CONFIDENCE_THRESHOLD` to make the queue shorter; that trades a visible queue for invisible wrong dates. diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 24e7560..0af1b66 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -92,6 +92,12 @@ jobs: - uses: docker/setup-buildx-action@v3 + - name: Lowercase image name + id: img + # GHCR rejects any uppercase in a repository name, and + # github.repository preserves the owner's casing verbatim. + run: echo "name=ghcr.io/${GITHUB_REPOSITORY,,}" >> "$GITHUB_OUTPUT" + - uses: docker/login-action@v3 with: registry: ghcr.io @@ -103,8 +109,8 @@ jobs: context: . push: true tags: | - ghcr.io/${{ github.repository }}:latest - ghcr.io/${{ github.repository }}:${{ github.sha }} + ${{ steps.img.outputs.name }}:latest + ${{ steps.img.outputs.name }}:${{ github.sha }} cache-from: type=gha cache-to: type=gha,mode=max