v3/implementation/adrs/ADR-060-remaining-bugs-2026-03.md
Status: Accepted — Sprint 1+2 Verified Date: 2026-03-05 (updated 2026-03-05) Author: claude-flow Supersedes: Remaining items from ADR-059
ADR-059 triaged 30 open issues and 11 were fixed in v3.5.3 (PR #1297, #1298). This ADR covers the 19 remaining open issues plus 5 additional issues discovered during the fix cycle that were not in the original triage. Total: 24 open items.
| Level | Meaning | SLA |
|---|---|---|
| P0 — Critical | Security risk, data loss, or blocks all users | Fix within 24h |
| P1 — High | Core functionality broken for a platform or major feature | Fix within 1 week |
| P2 — Medium | Incorrect behavior, cosmetic UX bugs, missing config | Fix within 2 weeks |
| P3 — Low | Enhancements, polish, feature requests | Next release cycle |
init --start-all reports success but creates nothing on Windows. Zero functionality for Windows users.child_process.spawn uses POSIX-only flags (detached, stdio: 'ignore'). Windows needs shell: true and windowsHide: true.windowsHide: true + shell: true on Windows, no detached on Windows. Verified 10/10 tests pass on Windows.process.argv but never process.stdin.let data = ''; process.stdin.on('data', c => data += c); process.stdin.on('end', () => { /* parse JSON, dispatch */ }).readStdin() async function with !process.stdin.isTTY detection, JSON parsing, and merged hookInput into prompt resolution. Updated in v3.5.7: replaced for await with event-based + 500ms timeout to prevent hanging when Claude Code leaves stdin in an ambiguous state.nohup wrapper or launchd plist support. Write PID file after fork, not before.process.on('SIGHUP', () => {})) in foreground daemon mode. PID file now written after child.unref() + 100ms delay to prevent race condition.createRequire(import.meta.url) for CommonJS-style resolution, or bundle the memory module inline.loadMemoryPackage() with 4-strategy resolution: local dev path, createRequire, ESM import, walk-up search. Template in helpers-generator.ts also updated.settings-generator.ts against the actual hooks registry in hooks.ts. Add missing hook entries and env var documentation.PostToolUse:Bash (post-command tracking), PreToolUse:Write|Edit|MultiEdit (pre-edit validation), SubagentEnd (agent completion metrics), Notification (event logging). Total: 8 hook event types with 12 matchers.recordFeedback() calls into post-task and post-edit hooks when --success flag is provided.bridgeRecordFeedback() into post-edit handler in hooks-tools.ts, completing the JUDGE step.memoryGraph: true to controllers config in memory-bridge.ts getRegistry().workflow run and task assign call missing MCP tools (#1281)workflow_run and task_assign MCP tools that aren't registered.workflow_run in workflow-tools.ts, task_assign in task-tools.ts, task_summary and mcp_status in system-tools.ts..unref() to all setInterval timers in CacheManager..unref() to 6 setInterval calls across mcp-server.ts, output.ts, worker-queue.ts, container-worker-pool.ts.ruflo spawn hive-mind --claude (#1279)status command shows STOPPED for a correctly-running stdio-mode MCP server.getStatus() in mcp-server.ts now detects stdio mode via !process.stdin.isTTY, env var, or options. CLI displays "Running (stdio mode)".df -h to df -Ph for POSIX single-line output; added NaN guard for percentage parsing.@ruvector/sona package methods.npx ruflo. Related to the removed preinstall script.npm cache clean --force. The preinstall removal in v3.5.3 should prevent new occurrences.init.dsp as bin entry (#1236)| Priority | Count | Fixed | Remaining | Key Themes |
|---|---|---|---|---|
| P0 | 1 | 1 | 0 | Windows platform support (fixed v3.5.6) |
| P1 | 6 | 6 | 0 | All fixed: hook stdin, memory resolution, learning loop, macOS daemon, settings-generator |
| P2 | 10 | 5 | 5 | MCP tools, .unref(), stdio status, doctor disk, rollback stubs (fixed); SONA, scope, bandit, hive-mind, ECOMPROMISED (remaining) |
| P3 | 7 | 1 | 6 | Rollback stubs closed; feature requests remain |
| Total | 24 | 13 | 11 |
| # | Issue | Fix Summary |
|---|---|---|
| 2 | #1211 (update) | Replaced for await stdin with event-based + 500ms timeout in hook-handler.cjs and template |
| # | Issue | Fix Summary |
|---|---|---|
| 1 | #1282 — Windows daemon | Platform-aware spawn: windowsHide, shell: true on Win; no detached on Win |
| 3 | #1283 — macOS daemon | SIGHUP handler ignores terminal close; PID written after unref() + 100ms delay |
| 5 | #1291 — Settings-generator | Added PostToolUse:Bash, PreToolUse:Write|Edit, SubagentEnd, Notification hooks |
| — | Daemon branding | "Worker Daemon" → "RuFlo Daemon" in 3 status displays |
All "Claude Flow V3" → "RuFlo V3" across 30+ files (CLI source, helpers, statusline).
Fixes delivered in PR #1300, merged to main on 2026-03-05.
| # | Issue | Fix Summary |
|---|---|---|
| 2 | #1211 — Hook stdin | readStdin() with !process.stdin.isTTY detection in hook-handler.cjs |
| 4 | #1287 — auto-memory-hook | 4-strategy resolution: local dev, createRequire, ESM import, walk-up |
| 6 | #1209 — recordFeedback() | Wired bridgeRecordFeedback() into post-edit in hooks-tools.ts |
| 7 | #1214 — MemoryGraph | memoryGraph: true in memory-bridge.ts getRegistry() |
| 8 | #1281 — Missing MCP tools | Registered workflow_run, task_assign, task_summary, mcp_status |
| 9 | #1256 — CacheManager .unref() | 6 setInterval calls across 4 files |
| 11 | #1289 — MCP stdio status | Stdio mode detection via !process.stdin.isTTY |
| 12 | #1288 — Doctor disk space | df -Ph + NaN guard |
| 19 | #1238, #1262, #1267, #1268 — Rollback stubs | All 4 closed as housekeeping |
tsc --noEmit)npm run build)process.argv still works when no stdinrm -rf / blockedP0 (0): All critical issues resolved. P1 (0): All high-priority issues resolved. P2 (5): #1279 zero swarms, #1243 SONA wiring, #1227 AgentMemoryScope, #1217 SolverBandit, #1231 ECOMPROMISED docs, #1207 AgentDB migration P3 (6): #1276 Edge Functions, #1273 context optimization, #1272 multilingual, #1236 dsp bin, #1245 ADR-058, #1242 ADR-057