v3.5.80
ruvnet/ruflov3.5.80Apr 11, 2026by ruvnet
AI Summary
This is a bug-fix release (v3.5.80) that addresses three critical Tier A blockers affecting CLI command routing, MCP agent_spawn input validation, and Claude Code memory integration. The release fixes issues where the CLI commands failed to parse correctly, agent spawn validation rejected all inputs due to field name mismatch, and the memory curator was overwriting hand-curated MEMORY.md files.
Key Highlights
- Fixed CLI lazy-loaded command routing for `daemon start`, bare `start`, and `doctor` commands (#1596)
- Fixed MCP `agent_spawn` input validation that was rejecting every input due to field name mismatch (`agentType`/`name` vs `type`/`id`) and strict enum (#1567)
- Fixed AutoMemoryBridge destroying hand-curated MEMORY.md when no topic files matched the default mapping (#1556)
- Added `lazyCommandNames` registry to Parser for two-pass parsing of lazy-loaded commands
- Memory prebuild now cleans `tsconfig.tsbuildinfo` for fresh incremental builds
New Features
- New `lazyCommandNames` registry in Parser to handle lazy-loaded command routing
- New `index:skipped` event emitted when section map is empty in AutoMemoryBridge
- Relaxed strict 15-value enum in agent spawn validation to accept custom agent types like `memory-specialist`
Full Release Notes
## Highlights
Fixes three Tier A blockers that made the CLI, MCP `agent_spawn` tool, and Claude Code memory integration partially unusable.
### 🐛 Fixed
- **#1596** — CLI lazy-loaded command routing (`daemon start`, bare `start`, `doctor`)
- Two-pass parser was greedy-matching the first positional as a phantom subcommand when the outer command was lazy-loaded
- Added `lazyCommandNames` registry to `Parser` so Pass 1 breaks at the first non-flag positional for known-lazy commands
- **#1567** — MCP `agent_spawn` input validation rejected every input
- `validateAgentSpawn` was passing `{agentType, name}` to `@claude-flow/security`'s `SpawnAgentSchema` which expects `{type, id}`; every call failed with `type: Required`
- Also relaxed the strict 15-value enum so custom agent types (`memory-specialist`, etc.) are accepted
- **#1556** — `AutoMemoryBridge.curateIndex()` destroyed hand-curated `MEMORY.md`
- On every Stop-hook tick when no topic files matched the hardcoded `DEFAULT_TOPIC_MAPPING`, the curator overwrote `MEMORY.md` with a stub
- Now exits early with an `index:skipped` event when section map is empty
### 🔧 Also
- `@claude-flow/memory`'s `prebuild` now cleans `tsconfig.tsbuildinfo` so `tsc --incremental` produces fresh output after `rm -rf dist`
### 📦 Published packages
| Package | Version |
|---------|---------|
| `@claude-flow/cli` | `3.5.80` |
| `@claude-flow/memory` | `3.0.0-alpha.14` |
| `claude-flow` | `3.5.80` |
| `ruflo` | `3.5.80` |
### ✅ Regression tests
- `parser.test.ts` — 52/52 (includes 4 new `lazy command routing (#1596)` cases)
- `validate-input-agent-spawn.test.ts` — 4/4
- `auto-memory-bridge.test.ts` — 74/74 (includes new #1556 preservation test)
### 🚀 Upgrade
```bash
npx @claude-flow/cli@latest --version # 3.5.80
npx ruflo@latest --version # 3.5.80
```
**Full Changelog**: https://github.com/ruvnet/ruflo/compare/v3.5.78...v3.5.80