<!-- Add the related story/sub-task/bug number, like Resolves #123, or remove if NA --> **Related issue:** Related to #47981 ## What this does (dogfood GitOps unblock — step 1 of 2, workstations) Follow-up to #47984. The mobile fleets are fixed (their stale rows were purged and categories re-added), but GitOps still fails on the **workstations** fleet with the same `software_categories` duplicate-key error: ``` Error 1062 (23000): Duplicate entry '<team>-?️ Productivity' for key 'software_categories.idx_software_categories_team_id_name' ``` **Root cause (same as #47981):** the `software_categories.(team_id, name)` unique index uses `utf8mb4_unicode_ci`, which treats the variation selector `U+FE0F` as ignorable. A stale stored category row (e.g. `🖥 Productivity` without the selector, from an earlier build) is *equal* to today's canonical `🖥️ Productivity` per the index but *distinct* to Go's `strings.EqualFold`, so the existence check misses it and the insert collides. **This PR (step 1):** removes the `categories:` blocks from `workstations.yml`. With nothing to insert, the software batch applies cleanly, and Fleet's `deleteUnusedSelfServiceCategories` cleanup then purges the stale rows for that team. Software still installs; it's just uncategorized until step 2. **Step 2 (follow-up):** once this is applied, revert this PR to re-add the categories. The team will have no stale rows by then, so canonical categories get created fresh and software is categorized again. This is the **last** fleet that needed it — `servers.yml`, `testing-and-qa.yml`, and `unassigned.yml` define no categories. The permanent fix (idempotent category insert) is tracked under #47981. ### Scope of the change - Only `categories:` blocks removed: **109 lines deleted, 0 added.** - All 109 package references and the 1 app store app are preserved; the two commented-out `# categories:` examples are left untouched; file remains valid YAML. # Checklist for submitter - [x] Changes file: N/A — dogfood GitOps config only, no product code or user-visible product change. ## Testing - [x] Verified `workstations.yml` remains valid YAML with all software items intact (only `categories:` blocks removed). - [ ] Confirm a GitOps dry run passes before merge. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Chores** * Streamlined software package and application configurations by removing unused metadata fields from multiple application entries across packages and fleet-maintained apps. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
Fleet
These files allow you to configure, patch, and secure computing devices for your organization.
Whether you're making changes by hand or spinning them up from Slack or Teams using a tool like Claude or Kilo Code (e.g. "Make our endpoints compliant with ISO 27001" or "Fix CVE-2026-XXXX"), your team reviews, merges, and it deploys to thousands of endpoints in seconds. This makes it straightforward to instantly rollback a change, and history is fully tracked.
You can read more about the anatomy of these files and what they do in Fleet's documentation. You can also opt to manage particular aspects of Fleet in the graphical user interface instead, such as software or labels.
Unsure? Talk to a human at fleetdm.com/support
What is Fleet?
Fleet is high-agency device management software. It is especially popular with IT and security teams who manage lots of endpoints.
All source code is public and the product is supported by a company called Fleet Device Management that enrolls millions of laptops, tablets, phones, servers, and other computing devices in 90+ countries.