Skip to content

Fix Worksheet Crafter homebrew ingestion after upstream cask rename - #51040

Merged
allenhouchins merged 1 commit into
mainfrom
allenhouchins/homebrew-app-ingestion-error-886997
Aug 12, 2026
Merged

Fix Worksheet Crafter homebrew ingestion after upstream cask rename#51040
allenhouchins merged 1 commit into
mainfrom
allenhouchins/homebrew-app-ingestion-error-886997

Conversation

@allenhouchins

@allenhouchins allenhouchins commented Aug 12, 2026

Copy link
Copy Markdown
Member

Related issue: N/A — fixes a failing scheduled workflow (Ingest maintained apps)

What's happening

The Ingest maintained apps workflow panics on every run:

{"level":"INFO","msg":"ingesting homebrew app","name":"Worksheet Crafter"}
panic: ingesting homebrew app: app not found in brew API

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-crafter to worksheetcrafter. The old token now 404s, which fetchCask treats (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 frozenfrozen: true only 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:

-  "token": "worksheet-crafter",
+  "token": "worksheetcrafter",

Deliberately unchanged:

  • slug stays worksheet-crafter/darwin. It is user-facing and already published in apps.json, and the validator derives the input file path from the slug (isFrozen() in app_commander.go:36 reads inputs/homebrew/<slug-name>.json), so the input file keeps its current name too.
  • name stays Worksheet Crafter. The output's name comes from the input, not the cask, so adopting the cask's new WorksheetCrafter spelling would only churn the display name for existing users.
  • frozen: true stays. 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

  • Input data is properly validated, 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

  • QA'd all new/changed functionality manually

The affected slug now ingests cleanly where it previously panicked, and writes nothing (it is frozen and its output already exists):

go run ./cmd/maintained-apps -slug worksheet-crafter/darwin

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:

  1. Every homebrew input token was cross-checked against the full brew cask index (https://formulae.brew.sh/api/cask.json, 7691 casks). worksheet-crafter was the only token missing — no other input is at risk of a 404.
  2. The whole homebrew leg was run end to end (-slug /darwin matches all 962 homebrew inputs and no winget inputs). It completed with exit 0. outputs/worksheet-crafter/darwin.json was 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:

Error enriching app net.whatsapp.WhatsApp: Expected WhatsApp version to start with '2.' but found '26.32.15'

This is pre-existing, not something this PR touches. WhatsApp has moved to a 26.x version scheme, so whats_app_version_shortener.go's 2.-prefix assumption no longer holds. EnrichManifest only prints the error and moves on (main.go:118), so the shortener is skipped and the unshortened version ships — outputs/whatsapp/darwin.json is already on 26.32.12. Worth a follow-up.

Summary by CodeRabbit

  • Bug Fixes
    • Updated the Homebrew app token to use the correct identifier for Worksheet Crafter.

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.
Copilot AI lite review requested due to automatic review settings August 12, 2026 14:21

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 token for Worksheet Crafter from worksheet-crafter to worksheetcrafter to 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.

@coderabbitai

coderabbitai Bot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: f12753b1-c7ca-472b-9474-b1b46f6152a8

📥 Commits

Reviewing files that changed from the base of the PR and between 3e716ee and 3ac8aac.

📒 Files selected for processing (1)
  • ee/maintained-apps/inputs/homebrew/worksheet-crafter.json

Walkthrough

The maintained Homebrew app declaration updates the app token from worksheet-crafter to worksheetcrafter.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely describes the Homebrew token rename that fixes Worksheet Crafter ingestion.
Description check ✅ Passed The description explains the failure, root cause, scoped fix, validation, and checklist status in sufficient detail.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch allenhouchins/homebrew-app-ingestion-error-886997

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@allenhouchins
allenhouchins merged commit d8ea00e into main Aug 12, 2026
19 checks passed
@allenhouchins
allenhouchins deleted the allenhouchins/homebrew-app-ingestion-error-886997 branch August 12, 2026 14:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants