v3.27.0 β daemon flywheel fix (cross-worktree dedup + global launch budget)
Highlights
Daemon flywheel fix (#2661) β opt-in AI workers, a global cross-daemon launch budget, cross-worktree job dedup, and daemon stop --all. Fixes the cardinality bug where N git worktrees of one repository scheduled N independent, uncapped AI worker launches.
git-workspace-identity.tsβ resolves a stablerepositoryIdshared across all worktrees of one repo (viagit rev-parse --git-common-dir), separate from the per-worktree path.ai-job-dedup.tsβ cross-worktree job dedup keyed onsha256(repositoryId, head, workerType, configHash), backed by a shared registry at~/.claude-flow/ai-jobs.json.global-ai-budget.tsβ a global launch budget (max concurrent + hourly cap) shared by every daemon on the machine, so the dedup optimization has a hard backstop even when two daemons race the same key.- AI workers are now opt-in rather than auto-launching.
daemon stop --allstops every daemon instance, not just the one bound to the current cwd.
Hook-handler fallback fix β the inline hook-handler.cjs fallback template (used when copying the real package helper fails) now spawns the funnel-refresh helper from session-restore, matching the fix already shipped in the hand-maintained helper.
Verified after publish
- All three packages (
@claude-flow/cli,claude-flow,ruflo) live at 3.27.0 onlatest/alpha/v3alpha. - Confirmed the macOS jetsam-kill/kernel-panic statusline fix (#2448) is intact: a real
npx @claude-flow/cli@3.27.0 initproduces asettings.jsonwith zeronpx @claude-flow/cli@latestinvocations in any hook or the statusline β everything resolves a local binary directly vianode.
Packages
| Package | Version |
|---|---|
@claude-flow/cli |
3.27.0 |
claude-flow |
3.27.0 |
ruflo |
3.27.0 |
Follow-up
- Full technical writeup of the daemon flywheel bug + fix: https://gist.github.com/ruvnet/f4cda824aaf58e1f2dae72368e692220
- Issue thread + implementation-vs-spec gap notes: #2661
- Follow-up fixes landed in v3.27.1βv3.27.4: marketplace-checkout install validation (
dist/src/index.jscheck + npx fallback for the funnel/advisor refresh), version-display max-candidate selection, baked-in version fallback for pure-npx renders, and persistent AgentDB memory on by default atinittime.