Fix Worksheet Crafter homebrew ingestion after upstream cask rename - #51040
Conversation
Homebrew renamed the cask worksheet-crafter -> worksheetcrafter, so the brew API returns 404 for the old token and the ingester panics with "app not found in brew API", aborting the entire Ingest maintained apps run before any app is written. Point the input at the new token. The slug stays worksheet-crafter/darwin so the output path, apps.json entry, and the validator's slug-derived input lookup are unchanged. The app remains frozen, so its output is not regenerated.
There was a problem hiding this comment.
Pull request overview
Updates Fleet-maintained app (FMA) Homebrew input metadata to align with an upstream Homebrew cask rename, preventing the scheduled “Ingest maintained apps” workflow from failing early and blocking all downstream FMA update PR generation.
Changes:
- Updated the Homebrew cask
tokenfor Worksheet Crafter fromworksheet-craftertoworksheetcrafterto match the current Homebrew API token.
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
WalkthroughThe maintained Homebrew app declaration updates the app token from 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Related issue: N/A — fixes a failing scheduled workflow (Ingest maintained apps)
What's happening
The
Ingest maintained appsworkflow panics on every run:The homebrew ingester aborts on the first failing app, so no FMA update PR is generated at all — the failure is not limited to Worksheet Crafter's own data.
Root cause
Homebrew renamed the cask from
worksheet-craftertoworksheetcrafter. The old token now 404s, whichfetchCasktreats (correctly) as a non-transient, fatal error at ingester.go:533.The upstream cask records the rename itself:
{ "token": "worksheetcrafter", "old_tokens": ["worksheet-crafter"], "name": ["WorksheetCrafter"], "version": "2026.2.5" }The app is not gone from Homebrew, and it is unrelated to the app being
frozen—frozen: trueonly gates the output write in main.go:106; the ingester still fetches the cask for every input, so a frozen app with a dead token still takes the whole run down.The fix
Point the input at the new token:
Deliberately unchanged:
slugstaysworksheet-crafter/darwin. It is user-facing and already published inapps.json, and the validator derives the input file path from the slug (isFrozen()in app_commander.go:36 readsinputs/homebrew/<slug-name>.json), so the input file keeps its current name too.namestaysWorksheet Crafter. The output'snamecomes from the input, not the cask, so adopting the cask's newWorksheetCrafterspelling would only churn the display name for existing users.frozen: truestays. The freeze predates this (Update Fleet-maintained apps #49055) and is a separate question; this PR is scoped to unbreaking the workflow. The output stays at 2026.2.4 while upstream is at 2026.2.5.Checklist for submitter
SELECT *is avoided, SQL injection is prevented (using placeholders for values in statements), JS inline code is prevented especially for url redirects, and untrusted data interpolated into shell scripts/commands is validated against shell metacharacters.No changes file: this is FMA manifest data, consistent with previous FMA data fixes (e.g. #51022).
Testing
The affected slug now ingests cleanly where it previously panicked, and writes nothing (it is frozen and its output already exists):
Because the run aborts on the first failure, a fix for one app can just move the panic to the next one. Two checks against that:
https://formulae.brew.sh/api/cask.json, 7691 casks).worksheet-crafterwas the only token missing — no other input is at risk of a 404.-slug /darwinmatches all 962 homebrew inputs and no winget inputs). It completed with exit 0.outputs/worksheet-crafter/darwin.jsonwas untouched, as expected for a frozen app; the other output changes were ordinary upstream version bumps and were reverted rather than included here, since they belong to the automated update PR.Unrelated issue noticed while verifying
The full run logged, without failing:
This is pre-existing, not something this PR touches. WhatsApp has moved to a
26.xversion scheme, sowhats_app_version_shortener.go's2.-prefix assumption no longer holds.EnrichManifestonly prints the error and moves on (main.go:118), so the shortener is skipped and the unshortened version ships —outputs/whatsapp/darwin.jsonis already on26.32.12. Worth a follow-up.Summary by CodeRabbit