#5 root cause (reproduced): getTask — the shared load for the entire per-task API — plus the mutation helpers updateTaskUnlocked, updateStep, readPromptForArchive, and resetPromptCheckboxes all read PROMPT.md unguarded. An unreadable PROMPT.md (root-owned from a prior `sudo` run -> EACCES, PROMPT.md being a directory -> EISDIR, transient FS error) threw and 500'd every per-task operation (GET/DELETE/PATCH/retry/reset/archive) for every task, while the PROMPT.md-free board list and create kept working. These reads are now best-effort: degrade (empty prompt / unsynced steps / skipped cosmetic sync) and log, so a PROMPT.md hiccup can never brick task management. Added a symptom- verification test that forces EISDIR and asserts getTask/updateTask/archiveTask still succeed. #10c: the dashboard badge-snapshot cache only evicted on hard-delete, so archived tasks were re-cached via task:updated and retained for the daemon's lifetime — a slow memory leak. New isBadgeEligibleTask predicate gates the create/update listeners so archived tasks are evicted (matching the startup prime's includeArchived:false). Added a unit test for the invariant. Updates the #5 changeset to cover the real fix; adds a badge-eviction changeset. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Changeset Format Guide
Each changeset file in this directory describes one user-facing change for release notes.
Required body format
---
"@runfusion/fusion": minor
---
summary: Add a Command Center productivity control for LOC backfills.
category: feature
dev: Uses the new `fn_backfill_loc` tool; settings key `commandCenter.locBackfill`.
Fields
| Field | Required | Description |
|---|---|---|
summary |
Yes | One line, user-facing, max 120 chars. Describe what changed for the operator. |
category |
Yes | One of: feature, fix, breaking, security, performance, internal. |
dev |
No | Developer or migration detail. Preserved in per-package CHANGELOGs but excluded from distilled release notes. |
Audience
The summary is the only content that appears in end-user release notes by default. Write for Fusion operators — describe behavior, fixes, and what changed. Avoid internal class names, file paths, and implementation detail.
Bump types
patch— bug fixes, internal changesminor— new features, CLI additions, toolsmajor— breaking changes
Validation
Run pnpm check:changesets to validate. The linter runs in the PR-check gate and test:gate. Legacy freeform changesets pass with a warning during the transition period.