Re-baseline to ruflo 3.28.0 / aqe 3.12.2: daemon default-on, MCP family picker, prune superseded patches, archive stale docs, heal #2670 - #12
Merged
Conversation
…ly picker, prune superseded patches - ruflo-setup-project now starts a local-only daemon by default (AI workers stay opt-in behind RUFLO_DAEMON_AI_WORKERS=1 + upstream global budget, #2661) - ruflo-setup-machine: user-scope MCP registration under the claude-flow key (#2206) with a tool-family picker; exclusions enforced via permissions.deny; ruflo-remove-mcp handles both keys and cleans kit deny rules; onboard offers it - drop bin/ruflo-patch-route-learning (fixed upstream 3.10.6 #2222) + legacy cleanup - statusline: drop global version-probe injection (upstream #2221 ships it); footer security probe follows @claude-flow/security (aidefence absorbed in 3.28); ⚙ alarm recalibrated for default-on (yellow at >=4) - security-verify: aidefence optional; detect 3.28 defend banner-only regression - repair-rvf: quarantine FLVR-magic .rvf.lock + truncated sibling (FsyncFailed fix) - uninstall: daemon stop --all before --remove-ruflo; remove stale ruflo@3.5.18 pin
…date-prefix)
Move docs/{superpowers,upstream,usage} (11 files) into a flat docs/archive/ with
date+origin names, add an index README explaining each file's purpose and which
upstream release superseded it, rewrite internal cross-links to same-dir targets,
and repoint inbound links from README/BACKGROUND.
…28 / aqe 3.12.2 - README: MCP default-on with family picker, daemon default-on local-only, fixed-upstream bugs moved to past tense, statusline sample refreshed, target line now 3.28.x/3.12.x; drop patch-route-learning from the tree - TROUBLESHOOTING: new MCP family/opt-out section, daemon section rewritten around upstream budget controls, FLVR corrupt-lock FsyncFailed mode, aqe 3.12.1 merge behavior, 3.28.0 defend regression, billing-aware QE knobs - BACKGROUND: dateline (all root causes fixed upstream), security package reality on 3.28, MCP cost framing marked historical - templates: ruflo-reference(-full) MCP/daemon rewrites + daemon budget commands + defend regression; aqe-reference 3.12.x deltas; preamble stamp - root CLAUDE.md: real test command, max-agents consistency
…ion over a stale alias)
…correct the aidefence story Root cause established while filing upstream: ruflo 3.28 DROPPED @claude-flow/aidefence from its dependency tree (not absorbed — @claude-flow/security has no detection API) while 'security defend' still imports it, and the import-failure message is swallowed → silent banner-only no-op. Filed as ruvnet/ruflo#2670 with a verified workaround; commented our 3.28 data point + client-side deny workaround on the existing tool-group feature request ruvnet/ruflo#952 instead of filing a duplicate. - new _ruflo_ensure_aidefence heal in ruflo-resync: installs the package --no-save into the global ruflo tree; verified to restore exit 1=threat / 0=clean (fs-existence probe — the package exports map blocks require.resolve of ./package.json) - statusline 🛡 segment reverted to aidefence-only probe (honest: no shield on a bare 3.28 install until healed) - ruflo-security-verify: aidefence required again, failure points at resync + #2670; banner-only signature diagnosed with the fix - README/BACKGROUND/TROUBLESHOOTING/full-reference: 'absorbed' claim corrected everywhere; heal + issue links documented
pacphi
added a commit
that referenced
this pull request
Jul 14, 2026
…itignore RVF caches (#13) agentdb.rvf (162 bytes) + agentdb.rvf.lock (FLVR-content, i.e. corrupt interrupted write) were runtime droppings from 'ruflo mcp start' running in the repo cwd during MCP registration, swept in by git add -A. RVF stores are derived caches — never repo content.
pacphi
added a commit
that referenced
this pull request
Aug 7, 2026
…reclaimables
The collectors from the previous run were built and tested but never called —
index.mjs had no owner, so nothing composed them into the payload. Wiring them
up is most of this change; the rest is what wiring them exposed.
Now live (verified against GET /api/system, not asserted):
- projects: 50 ever seen / 25 on disk / 21 git repos, de-duped across hosts by
resolved real path. Was 4, because discovery reused discoverRuvfloProjects()
— which requires .claude-flow/neural/ state and answers a different question
that Intelligence still depends on, so it is left alone.
- consumers: 80 roots, top 20 ranked, grouped by ecosystem. The panel called
npx cache the #1 consumer at 6 GB; it is #12. The real leaders were entirely
unscanned — Ollama 141 GB, LM Studio 49 GB, Hugging Face 36 GB, npm's
_cacache 22 GB. Overlapping roots collapse by path so the list cannot go
self-similar (~/.npm never appears beside its own _cacache).
- snapshot persists consumers; runtime is still absent, and that allow-list is
what structurally enforces the ephemeral-census invariant.
- refreshDeep finally takes includeProjectTrees, which the caller was already
passing into a zero-arity function. Sticky across rescans; default off,
because one repository here is 175 GB and flattens every other row.
A HARD HANG, found only because the wider discovery reached it: the deep scan
parked forever at 0% CPU inside a Dropbox tree. Cloud providers leave evicted
placeholders — stat returns instantly, read blocks in the kernel until the
provider materializes the bytes, which never happens while it is signed out.
There is no timeout, so the scan never completed and the dashboard served a
17-hour-old snapshot. Worse, reading them silently pulls the file down. Guarded
by the allocated-blocks basis the DDD already names (blocks === 0 && size > 0):
placeholders are stat-ed, never opened. Zero false positives across 3,667 files
here, including sub-2KB files that APFS stores inline. The tree that hung
forever now returns in 50ms; a full scan takes 204s.
Also: Playwright was invisible on macOS (the scan looked only at the XDG and
Windows paths, so 1.86 GB read as a measured zero), and the RuvNet Brain was
under-reported by 85% because only kb/ was measured — the other 11 GB is five
dated kb.bak snapshots, now broken out rather than silently folded in.
Reclaimables grew from two detectors to cover those backups, npm's regenerable
cache, orphaned transcripts, and browser downloads — split into two safety
tiers that never sum: 'regenerable' for caches a tool refetches on demand, and
'review' for things like mise's 8 node versions, where recommending deletion of
a live runtime would be worse than saying nothing.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Re-baselines the kit from ruflo 3.10.x-era assumptions to ruflo 3.28.0 / agentic-qe 3.12.2, prunes everything upstream has absorbed, flips the daemon and MCP posture now that upstream governance makes them safe, archives completed investigations, and heals a new 3.28 security regression found (and filed) during verification.
Upgrade & policy changes
ruflo-setup-projectnow starts a daemon; token-spending AI workers stay opt-in (RUFLO_DAEMON_AI_WORKERS=1) behind ruflo 3.27/3.28's machine-wide launch budget (#2661:daemon budget show|pause|resume,daemon stop --all, native 12h TTL #2356). Kit reapers (ruflo-daemon-gc, shell auto-reap, ⚙ statusline count — yellow now at ≥4) remain as an independent backstop.ruflo-setup-machineregistersclaude-flowonce at user scope (#2206) with a tool-family picker — the inventory (276 tools / 35 families on 3.28) is enumerated live from the installed package, and excluded families become exactpermissions.denyrules (proven end-to-end). Rationale: Claude Code now defers MCP tool schemas, so the historical ~84k-token argument for MCP-off no longer holds.ruflo-remove-mcphandles both keys and cleans deny rules;ruflo-onboardoffers the step.bin/ruflo-patch-route-learning(F2 fixed in 3.10.6 #2222; legacy cleanup kept in uninstall.sh); the statusline global-version-probe injection (3.28 ships it, #2221 — only the kit-unique Δ‖W‖/RL/QE footer remains); the staleruflo@3.5.18MCP pin.New failure modes found & fixed
security defendsilently non-functional on 3.28.0 — 3.28 dropped@claude-flow/aidefencefrom its tree whiledefendstill imports it, and the error is swallowed. Filed upstream as security defend non-functional on 3.28.0: @claude-flow/aidefence dropped from the dependency tree but still imported — banner-only output, error silently swallowed ruvnet/ruflo#2670 with a verified workaround;ruflo-resyncnow auto-heals it (_ruflo_ensure_aidefence, restores exit 1=threat / 0=clean), the 🛡 statusline segment honestly disappears until healed, andruflo-security-verifydiagnoses the exact signature. (Commented our tool-gating data point on existing feature request Segment MCP tools into workflow-based groups with selective enablement ruvnet/ruflo#952 rather than duplicating it.).rvf.lockcontaining RVF magic bytes (interrupted write; seen live with a 162-bytebrain.rvf) knocks agentic-qe off ruvector and aqe does not self-heal it;_ruflo_aqe_repair_rvfnow quarantines the pair.unaliasguard so a stale pre-pickerruflo-setup-machinealias in a user rc can't break sourcing.Docs & templates
docs/archive/with an index README explaining what each was and which upstream release superseded it; all inbound/internal links repointed.aqe quality-gate,AQE_LLM_PROVIDER/AQE_MAX_BUDGET_USDbilling knobs), target line now 3.28.x/3.12.x.Verification (all on ruflo 3.28.0 / aqe 3.12.2, Node 26, macOS)
ruflo-parity-test20/20 (twice — including the new daemon-started-by-setup behavior)ruflo-learning-verify✓ (patterns 0→7 on disk);ruflo-patch-native --checkall nativeruflo-verify-aqe✓ (after live FLVR repair);ruflo-security-verify5/5 post-healclaude-flowregistered user-scope and connected; family-exclusion deny rules exercised and revertedruflo daemon status: AI Workersoff (local-only, default);daemon budget show0/2 hourly, 0/12 daily🤖 Generated with Claude Code