v3.13.3 β #2448 stale npx @latest statusLine/hooks migration (kernel-panic class)
π§ Critical fix β #2448
Affected user reported load average 49 / jetsam / kernel watchdog panic on macOS. Pre-#2337 init wrote `npx @claude-flow/cli@latest hooks ` into the statusLine + per-action hooks. Each invocation cold-spawns ~130 MB Node + npm registry round-trip; statusLine refires every few hundred ms.
The current init source already emits the local-helper form β but `executor.ts:362` preserved the user's existing command on re-init, so anyone who installed pre-#2337 and upgraded never received the fix.
Two changes
- init migration: detect the broken `npx @latest hooks ` pattern in `existing.statusLine.command` AND every `hooks.[].hooks[].command`. Regenerate to local-helper form. Idempotent on already-correct settings. Captures the subcommand from the broken string so intent is preserved.
- doctor check: new `checkStaleSettingsNpx` reports `fail` if the broken pattern is detected anywhere in project-local or `$HOME/.claude/settings.json`. Run `ruflo doctor --component stale-settings` to check directly.
How to recover if you're affected
```bash
Detect (no changes)
npx ruflo@latest doctor --component stale-settings
Migrate (re-runs init merge logic, regenerates the broken commands)
npx ruflo@latest init
Verify
npx ruflo@latest doctor --component stale-settings # should now β
```
Distribution
| Package | latest | alpha | v3alpha |
|---|---|---|---|
| `@claude-flow/cli` | 3.13.3 | 3.13.3 | 3.13.3 |
| `claude-flow` | 3.13.3 | 3.13.3 | 3.13.3 |
| `ruflo` | 3.13.3 | 3.13.3 | 3.13.3 |
Cross-references
- π Issue: #2448 (CRITICAL, closed)
- π Prior partial fix: #2337 (statusline storm) β fixed the generator but not the upgrade path
- π Companion: #2443 (doctor MetaHarness locator), #2444 (sql.js MEMFS leak)
π€ Generated with RuFlo