mirror of
https://github.com/ruvnet/ruflo.git
synced 2026-09-14 14:01:28 +08:00
docs/chatgpt-plugin-reference
411 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
78f06f6237 |
feat(cost-tracker): P1 — auto-capture token usage from session jsonl (v0.5.0)
Adds the producer side of the cost-tracking namespace. Until now every
skill *read* from cost-tracking, but nothing *wrote* to it — the report
operated on empty data. P1 closes the loop.
What lands:
- skills/cost-track/SKILL.md — agent-facing instructions
- scripts/track.mjs — Node script that:
• discovers ~/.claude/projects/<encoded-cwd>/<session>.jsonl
• sums assistant `usage` per model (input, output, cache_creation,
cache_read tokens)
• computes USD cost using REFERENCE.md pricing (haiku/sonnet/opus
× input/output/cache_write/cache_read)
• writes a structured record to cost-tracking namespace via
`npx @claude-flow/cli memory store` (spawnSync, no shell-escape risks)
- `cost track` subcommand in commands/ruflo-cost.md
- 3 new smoke checks (now 30/30, ~85ms): cost-track skill exists,
track.mjs syntax-checks + uses spawnSync + has PRICING table,
and the command is documented.
Verified live on this session: 1597 assistant messages on Opus 4.7,
$1546.36 total ($1095 of which is cache-read at $1.50/M — heavy
context). Record persisted to cost-tracking namespace; verified with
`memory search --query "session-" --namespace cost-tracking`.
Version bump: 0.4.0 → 0.5.0. Keywords: + telemetry.
Smoke: 30/30 passed (was 27/27).
Co-Authored-By: RuFlo <ruv@ruv.net>
|
||
|
|
0fd61e3e5b |
feat(cost-tracker): ADR-0002 — verified Agent Booster integration (v0.4.0)
Wires `npm agent-booster` (Tier 1, WASM, $0/edit, sub-millisecond) into the cost-tracker plugin and proves the speedup against frontier LLMs running on the deployed GCP endpoints — Gemini 2.0 Flash, Claude Sonnet 4.6, and Claude Opus 4.7. What lands: - ADR-0002 (Accepted): 6 decisions covering booster routing, optimizer bridge, model-outcome feedback loop, loop-worker consumption, tier-aware reporting, and the version+keywords bump. - 4 new skills: cost-booster-route (router-side classifier), cost-booster-edit (direct apply via agent-booster.apply()), cost-benchmark (corpus harness), cost-compact-context (token-optimizer bridge with graceful fallback). - Updates to 2 existing skills: cost-optimize closes the hooks_model-outcome loop; cost-report now reads measured booster data from runs/latest.json and aggregates by tier. - New `cost benchmark [--llm] [--anthropic]` subcommand. - 16-case verification corpus (12 Tier 1 + 4 adversarial), bench.mjs harness with split metrics (winRate / escalationRate / overallCorrect) and gcloud-secret-aware LLM/Anthropic baselines. - Smoke contract grew 10 → 27 checks, ~85 ms wall-time. Verified live (16 cases, 4 endpoints, 2026-05-05): Endpoint Tier 1 Adversarial Avg latency Cost/edit Booster (WASM) 12/12 escalates 4/4 0.50 ms $0 Gemini 2.0 Flash 12/12 3/4 762.13 ms $0.000027 Claude Sonnet 4.6 12/12 3/4 1158.06 ms $0.000982 Claude Opus 4.7 12/12 3/4 1517.94 ms $0.006049 Measured speedups (booster vs LLM): 1524× / 2316× / 3036× — exceed upstream's 350× claim against every endpoint. All three LLMs (including Opus 4.7) failed on the same adversarial case; booster correctly refused all four with min confidence 0.000. Proof: https://github.com/ruvnet/ruflo/issues/1743 https://gist.github.com/ruvnet/15fae7a5495026f025fb3baf721c20ea Co-Authored-By: RuFlo <ruv@ruv.net> |
||
|
|
d9db4e7663 |
feat(ruflo-workflows): v0.2.0 — adopt plugin contract + 10-tool MCP surface + lifecycle state machine (ADR-0001)
This is the FINAL plugin in the ruflo family. ADR-0001 here completes the plugin-contract retrofit across all 33 plugins. Surface: 10 workflow_* MCP tools (create/run/execute/status/list/pause/ resume/cancel/delete/template) backed by full state machine (created → running ↔ paused → completed/cancelled). - ADR-0001 (Proposed) at docs/adrs/0001-workflows-contract.md - README adds Compatibility (pin v3.6), 10-tool MCP surface table, Lifecycle state machine diagram + transition table (5 states + 4 transitions), workflow_execute documented as stateless path, Namespace coordination (claims workflows-state; defers to ruflo-agentdb ADR-0001), Verification + Architecture Decisions - plugin.json bumps 0.1.0 → 0.2.0; description names the 10 tools + state machine; keywords add mcp, workflow-templates, pause-resume, lifecycle - scripts/smoke.sh — 11 structural checks: version + keywords, both skills + agent + command present, all 10 workflow_* tools referenced, v3.6 pin, namespace coordination, workflows-state claimed, 5 lifecycle states + 4 transitions documented, workflow_execute stateless path, ADR Proposed, no wildcard tools Verification: bash plugins/ruflo-workflows/scripts/smoke.sh → 11/11 Co-Authored-By: RuFlo <ruv@ruv.net> |
||
|
|
81ec1af409 |
feat(ruflo-wasm): v0.2.0 — adopt plugin contract + ADR-070 integration cross-reference (ADR-0001)
Plugin had 1 agent + 2 skills + 1 command at v0.1.0. The contract pieces were missing. Surface: 10 wasm_* MCP tools (7 agent lifecycle + 3 gallery) backed by @ruvector/rvagent-wasm + @ruvector/ruvllm-wasm. ADR-0001 cross-references upstream ADR-070 (Implemented) which closed the package.json optionalDependencies gap — without ADR-070's fix, the runtime would always hit graceful-degradation and these MCP tools would no-op. - ADR-0001 (Proposed) at docs/adrs/0001-wasm-contract.md - README adds Compatibility (pin v3.6 + ADR-070 implementation status + graceful-degradation note), 10-tool MCP surface table (split into agent lifecycle 7 + gallery 3), Sandbox isolation block, AIDefence 3-gate cross-reference (sandbox output → host LLM defense), Namespace coordination (claims wasm-gallery; defers to ruflo-agentdb ADR-0001), Verification + Architecture Decisions - plugin.json bumps 0.1.0 → 0.2.0; description names ADR-070; keywords add mcp, rvagent-wasm, ruvllm-wasm - scripts/smoke.sh — 11 structural checks: version + keywords, both skills + agent + command present, all 10 wasm_* tools referenced, v3.6 pin, namespace coordination, wasm-gallery claimed, ADR-070 cross-reference (rvagent/ruvllm/optionalDependencies), sandbox isolation guarantee documented, AIDefence 3-gate cross-reference, ADR Proposed, no wildcard tools Verification: bash plugins/ruflo-wasm/scripts/smoke.sh → 11/11 Co-Authored-By: RuFlo <ruv@ruv.net> |
||
|
|
f457b39185 |
feat(ruflo-testgen): v0.2.0 — adopt plugin contract + SPARC Refinement-phase ownership (ADR-0001)
Plugin already had 1 agent + 2 skills + 1 command at v0.1.0. The contract pieces were missing. Notable cross-references: - testgaps worker (consumed) → ruflo-loop-workers ADR-0001 (canonical definition of the 12 background workers) - SPARC Refinement phase (owned) → ruflo-sparc ADR-0001 §"Phase-to-plugin alignment". This plugin is the canonical handoff for the Refinement phase, paired with ruflo-jujutsu for diff-aware refactor. - 3 coverage CLI commands surfaced: hooks coverage-gaps, coverage-route, coverage-suggest - ADR-0001 (Proposed) at docs/adrs/0001-testgen-contract.md - README adds Compatibility (pin v3.6), testgaps worker + 3 coverage CLI command surface table, SPARC Refinement-phase ownership block, Namespace coordination (claims test-gaps; defers to ruflo-agentdb ADR-0001), Verification + Architecture Decisions - plugin.json bumps 0.1.0 → 0.2.0; description names the testgaps worker + SPARC ownership; keywords add mcp, tdd-london-school, coverage-routing - scripts/smoke.sh — 10 structural checks: version + keywords, both skills + agent + command present, hooks_worker-dispatch + testgaps trigger, 3 coverage CLI commands referenced, v3.6 pin, namespace coordination, test-gaps claimed, SPARC Refinement cross-reference, ADR Proposed, no wildcard tools Verification: bash plugins/ruflo-testgen/scripts/smoke.sh → 10/10 Co-Authored-By: RuFlo <ruv@ruv.net> |
||
|
|
714f501f78 |
feat(ruflo-swarm): v0.2.0 — adopt plugin contract + 12-tool MCP surface (ADR-0001)
Plugin already had 2 agents + 2 skills + 2 commands at v0.1.0. The contract pieces were missing. Surface inventory (now contractually documented): - 4 swarm_* tools: init, status, shutdown, health - 8 agent_* tools: spawn, execute, terminate, status, list, pool, health, update - 6 topologies: hierarchical, mesh, hierarchical-mesh, ring, star, adaptive - Pairs with Claude Code's built-in Task / SendMessage / Monitor / EnterWorktree primitives (not MCP, but documented as the integration surface) Anti-drift defaults from CLAUDE.md are now smoke-checked: hierarchical topology, maxAgents 6-8, specialized strategy, raft consensus. - ADR-0001 (Proposed) at docs/adrs/0001-swarm-contract.md - README adds Compatibility (pin v3.6), 12-tool MCP surface table (4 swarm_* + 8 agent_*), Built-in Claude Code coordination tools table (Task/SendMessage/Monitor/EnterWorktree), Anti-drift defaults table (hierarchical/specialized/raft/6-8), Namespace coordination (claims swarm-state; defers to ruflo-agentdb ADR-0001), Verification + Architecture Decisions - plugin.json bumps 0.1.0 → 0.2.0; description names the 4+8 = 12 tool count + 6 topologies; keywords add mcp, topologies, worktree-isolation, monitor-stream - scripts/smoke.sh — 11 structural checks: version + keywords, both skills + 2 agents + 2 commands present, all 4 swarm_* tools referenced, all 8 agent_* tools referenced, v3.6 pin, namespace coordination, swarm-state claimed, anti-drift defaults present, 6 topologies documented, ADR Proposed, no wildcard tools Verification: bash plugins/ruflo-swarm/scripts/smoke.sh → 11/11 Co-Authored-By: RuFlo <ruv@ruv.net> |
||
|
|
ce37f98c51 |
feat(ruflo-sparc): v0.2.0 — adopt plugin contract + phase-to-plugin alignment table (ADR-0001)
Plugin already at v0.1.0 with 1 agent + 3 skills + 1 command. The contract pieces were missing. Notable: each SPARC phase has a canonical handoff plugin that owns the deeper tooling. ADR-0001 makes this contract explicit: Specification → ruflo-goals (deep-research) Pseudocode → ruflo-sparc (this plugin owns it) Architecture → ruflo-adr + ruflo-ddd Refinement → ruflo-jujutsu + ruflo-testgen Completion → ruflo-docs This plugin orchestrates the lifecycle; sibling plugins do the deep work per phase. - ADR-0001 (Proposed) at docs/adrs/0001-sparc-contract.md - README adds Compatibility (pin v3.6), Phase-to-plugin alignment table (5-phase × sibling-ADR cross-references), Namespace coordination (claims sparc-state/-phases/-gates as 3 kebab-case-compliant namespaces; documents the patterns plural reserved-namespace consumption; defers to ruflo-agentdb ADR-0001), Verification + Architecture Decisions - plugin.json bumps 0.1.0 → 0.2.0; keywords add mcp, phase-gates, quality-gates - scripts/smoke.sh — 11 structural checks: version + keywords, all 3 skills + agent + command present, 5 phase names documented, /sparc command non-empty, v3.6 pin, namespace coordination, sparc-* namespaces claimed, phase-to-plugin alignment cross-references (adr/ddd/jujutsu/docs/goals), ADR Proposed, 5 phase gate criteria, no wildcard tools Verification: bash plugins/ruflo-sparc/scripts/smoke.sh → 11/11 Co-Authored-By: RuFlo <ruv@ruv.net> |
||
|
|
c203bc5d88 |
feat(ruflo-security-audit): adopt plugin contract — AIDefence static/runtime layered integration (ADR-0001)
Plugin already at v0.2.0 with 1 agent + 2 skills + 1 command. The contract pieces were missing. Notable: this plugin's static analysis layer complements ruflo-aidefence's runtime 3-gate pattern. ADR-0001 documents the layered story: | Layer | Owner | What it catches | |------------------|------------------------|------------------------------------------------------------------| | Static analysis | ruflo-security-audit | Shell-injection patterns, CVEs, plaintext secrets, loader-hijack | | Runtime 3-gate | ruflo-aidefence ADR-1 | PII pre-storage, sanitization, prompt-injection | Static analysis finds the patterns; the runtime gates catch what slipped through. The audit_1776853149979 pattern catalog (already in README) is the regression-prevention contract for the shell-injection class the 3.6.25 release closed. - ADR-0001 (Proposed) at docs/adrs/0001-security-audit-contract.md - README adds Compatibility (pin v3.6), AIDefence integration block (static/runtime layered table; cross-reference to ruflo-aidefence ADR-0001), Namespace coordination (claims security-findings; defers to ruflo-agentdb ADR-0001), Verification + Architecture Decisions - plugin.json keywords add mcp, cve-monitoring, policy-gates, shell-injection (already at v0.2.0) - scripts/smoke.sh — 10 structural checks: version + keywords, both skills + agent + command present, v3.6 pin, namespace coordination, security-findings claimed, AIDefence 3-gate cross-reference, audit_1776853149979 pattern catalog intact (execSync, execFileSync, loader-hijack, isSafePackageSpec), ADR-096 encryption cross-reference, ADR Proposed, no wildcard tools Verification: bash plugins/ruflo-security-audit/scripts/smoke.sh → 10/10 Co-Authored-By: RuFlo <ruv@ruv.net> |
||
|
|
414a79d56c |
feat(ruflo-rvf): adopt plugin contract — cross-plugin RVF ownership table (ADR-0001)
Plugin already at v0.2.0 with 1 agent + 2 skills + 1 command. The contract pieces were missing. RVF (RuVector Format) cognitive containers appear in three plugins. ADR-0001 makes the ownership explicit: - Portable memory + session persistence → ruflo-rvf (this plugin) - Browser sessions as RVF → ruflo-browser ADR-0001 (each session is an RVF container with manifest, trajectory, screenshots, snapshots, cookies, findings) - RVF tooling (10 subcommands) → ruflo-ruvector ADR-0001 (ruvector rvf create/ingest/query/status/segments/derive/compact/ export/examples/download) This plugin sits on top of ruvector's tooling and feeds browser's session-as-RVF model. - ADR-0001 (Proposed) at docs/adrs/0001-rvf-contract.md - README adds Compatibility (pin v3.6), Cross-plugin RVF ownership table (3 sibling-ADR cross-references), Namespace coordination (claims rvf-sessions; defers to ruflo-agentdb ADR-0001), Verification + Architecture Decisions - plugin.json keywords add mcp, cognitive-containers, lineage-tracking (already at v0.2.0) - scripts/smoke.sh — 10 structural checks: version + keywords, both skills + agent + command present, v3.6 pin, namespace coordination, rvf-sessions claimed, browser-RVF cross-reference, ruvector RVF tooling cross-reference, encryption-at-rest (ADR-096) block intact, ADR Proposed, no wildcard tools Verification: bash plugins/ruflo-rvf/scripts/smoke.sh → 10/10 Co-Authored-By: RuFlo <ruv@ruv.net> |
||
|
|
1ef889cb3a |
feat(ruflo-ruvllm): v0.2.0 — adopt plugin contract + cross-plugin tool ownership table (ADR-0001)
This plugin shares the ruvllm_* MCP family with two siblings. ADR-0001 makes the canonical ownership explicit so consumers don't reconcile multiple stories about who owns which tool group. Cross-plugin tool ownership: - ruvllm_sona_create / _adapt → ruflo-intelligence ADR-0001 (4-step pipeline DISTILL phase) - ruvllm_microlora_create / _adapt → ruflo-intelligence (DISTILL + CONSOLIDATE via --consolidate) - ruvllm_hnsw_create / _add / _route → ruflo-agentdb ADR-0001 (WASM router, ~11 patterns; distinct from large-corpus embeddings_search) This plugin is the canonical home for the LLM-config + chat-format slice of the ruvllm_* surface. - ADR-0001 (Proposed) at docs/adrs/0001-ruvllm-contract.md - README adds Compatibility (pin v3.6), Cross-plugin tool ownership table (3 sibling-ADR cross-references with file:line citations), Namespace coordination (claims ruvllm-config; defers to ruflo-agentdb ADR-0001), Verification + Architecture Decisions - plugin.json bumps 0.1.0 → 0.2.0; description names the multi-provider chat formats; keywords add mcp, local-inference, chat-templates - scripts/smoke.sh — 10 structural checks: version + keywords, both skills + agent + command present, v3.6 pin, namespace coordination, ruvllm-config claimed, SONA cross-reference, MicroLoRA + DISTILL cross-reference, HNSW WASM router cross-reference, ADR Proposed, no wildcard tools Verification: bash plugins/ruflo-ruvllm/scripts/smoke.sh → 10/10 Co-Authored-By: RuFlo <ruv@ruv.net> |
||
|
|
2b6cefd579 |
feat(ruflo-rag-memory): adopt plugin contract — claude-memories reserved-namespace consumer (ADR-0001)
Plugin already at v0.2.0 with 1 agent + 2 skills + 2 commands. The contract pieces were missing, plus one stale "19 AgentDB controllers" reference in the related-plugins block (same myth ruflo-agentdb ADR-0001 killed). Notable: this plugin is the canonical user-facing consumer of the reserved 'claude-memories' namespace. The auto-import flow: Claude Code SessionStart → memory_import_claude (MCP) → claude-memories namespace (ruflo-agentdb-owned) → memory-bridge skill + memory_search_unified ADR-0001 makes the consumer-of-reserved-namespace relationship explicit so this plugin's writes don't accidentally drift into ownership. - ADR-0001 (Proposed) at docs/adrs/0001-rag-memory-contract.md - README adds Compatibility (pin v3.6), Namespace coordination block (defers to ruflo-agentdb ADR-0001; documents the import flow), Verification + Architecture Decisions - README "19 AgentDB controllers" → "15 agentdb_* MCP tools; namespace convention owner" - plugin.json keywords add mcp, claude-memories, bridged-memory (already at 0.2.0) - scripts/smoke.sh — 10 structural checks: version + keywords, both skills + agent + 2 commands present, v3.6 pin, namespace coordination, claude-memories consumer doc'd, memory_search_unified referenced, encryption-at-rest (ADR-096) block intact, ADR Proposed, no '19 controllers' regression, no wildcard tools Verification: bash plugins/ruflo-rag-memory/scripts/smoke.sh → 10/10 Co-Authored-By: RuFlo <ruv@ruv.net> |
||
|
|
003624f740 |
feat(ruflo-plugin-creator): v0.2.0 — scaffold the canonical contract + MCP-drift warnings (ADR-0001)
The meta-plugin that creates new plugins now (a) follows the same
contract every other plugin adopted, and (b) propagates that contract
to every newly-scaffolded plugin. The retrofit work the loop is doing
right now becomes unnecessary for new plugins.
Drift fixed:
- create-plugin skill claimed "19 AgentDB controllers" (the same myth
ruflo-agentdb ADR-0001 killed). Replaced with "15 controller-bridge
tools; defer to agentdb_controllers runtime for canonical list".
Scaffolder updates (the create-plugin skill now generates):
- docs/adrs/0001-<name>-contract.md (Proposed)
- scripts/smoke.sh (≥8 structural checks)
- README sections: Compatibility (pin v3.6), Namespace coordination
(defers to ruflo-agentdb ADR-0001), Verification, Architecture Decisions
- "MCP-tool drift to avoid" section warning new authors about the four
real bugs found in sibling ADRs:
1. embeddings_embed does not exist (use embeddings_generate)
2. agentdb_hierarchical-* ignores namespace arg (use tier or memory_*)
3. agentdb_pattern-* ignores namespace arg (ReasoningBank routes;
fallback writes to pattern reserved)
4. pattern (singular) ≠ patterns (plural) — different reserved namespaces
Plugin contract additions:
- ADR-0001 (Proposed) at docs/adrs/0001-plugin-creator-contract.md
- README adds Compatibility (pin v3.6), Canonical plugin contract block
showing the scaffolded directory shape, MCP-tool drift table,
Verification + Architecture Decisions
- plugin.json bumps 0.1.0 → 0.2.0; description names the canonical
contract; keywords add mcp, scaffolding, contract-bootstrap
- scripts/smoke.sh — 10 structural checks: version + keywords, both
skills + agent + command, scaffolder generates ADR + smoke + Compat +
Namespace, scaffolder includes MCP-drift warnings, regression check
on "19 controllers", v3.6 pin, Architecture Decisions section,
ADR Proposed, validate-plugin present, no wildcard tools
Verification: bash plugins/ruflo-plugin-creator/scripts/smoke.sh → 10/10
Co-Authored-By: RuFlo <ruv@ruv.net>
|
||
|
|
1c3093d464 |
fix(ruflo-observability): v0.2.0 — namespace-routing fix + adopt plugin contract (ADR-0001)
Same bug class as cost-tracker / market-data / migrations: both skills called agentdb_hierarchical-recall with namespace argument "observability" — that tool family routes by tier, ignores namespace. Skills were silently reading nothing. Functional fixes: - observe-trace: switch span-collection from agentdb_hierarchical-recall to memory_search/_list (namespace-routed) - observe-metrics: switch metric-retrieval to memory_*; document dual pattern-store path (ReasoningBank-typed vs memory_store --namespace observability) Contract additions: - ADR-0001 (Proposed) at docs/adrs/0001-observability-contract.md - README adds Compatibility (pin v3.6), Namespace coordination (claims observability as base-name exception, cf. federation/migrations; routing-note callout), Verification + Architecture Decisions - plugin.json bumps 0.1.0 → 0.2.0; keywords add mcp, distributed-tracing, anomaly-detection - scripts/smoke.sh — 10 structural checks: version + keywords, both skills + agent + command present, both skills use memory_* not hierarchical-* with namespace, dual pattern-store doc'd, 5 subcommands, v3.6 pin, namespace coordination, ADR Proposed, no wildcard tools Verification: bash plugins/ruflo-observability/scripts/smoke.sh → 10/10 Co-Authored-By: RuFlo <ruv@ruv.net> |
||
|
|
e148c56119 |
feat(ruflo-neural-trader): adopt plugin contract — already-compliant namespaces + 4-namespace claim (ADR-0001)
Plugin already at v0.2.0 with 4 agents + 6 skills + 1 command. Namespace audit: all 4 namespaces (trading-strategies, trading-backtests, trading-risk, trading-analysis) already kebab-case compliant and routed through memory_* correctly. No bugs found. Notable design choice: namespace prefix is `trading-` not `neural-trader-`. ADR-0001 documents this as deliberate — `trading` is the load-bearing concern downstream consumers reason about. The <plugin-stem>-<intent> convention is interpreted broadly: when the plugin's primary concern is the cleaner stem, that stem wins. - ADR-0001 (Proposed) at docs/adrs/0001-neural-trader-contract.md - README adds Compatibility (pin v3.6 + npx neural-trader runtime), Namespace coordination block claiming the 4 trading-* namespaces with the prefix-choice rationale, Verification + Architecture Decisions - plugin.json keywords add neural-trader-runtime, walk-forward, monte-carlo (already at 0.2.0) - scripts/smoke.sh — 11 structural checks: version + keywords, all 6 skills + 4 agents + command present, v3.6 pin, neural-trader runtime pin, namespace coordination, 4 namespace claims, backtesting features (walk-forward / Monte Carlo / parameter optimization), ADR Proposed, no wildcard tools Verification: bash plugins/ruflo-neural-trader/scripts/smoke.sh → 11/11 Co-Authored-By: RuFlo <ruv@ruv.net> |
||
|
|
894a199ccb |
fix(ruflo-migrations): v0.2.0 — namespace-routing fix + adopt plugin contract (ADR-0001)
Same bug class as cost-tracker / market-data: both skills passed namespace argument "migrations" to agentdb_hierarchical-* (which routes by tier) and agentdb_pattern-store (which routes through ReasoningBank). Both silently ignored the namespace. Functional fixes: - migrate-create: switch store path from agentdb_hierarchical-store to memory_store (namespace-routed) - migrate-validate: switch load path from agentdb_hierarchical-recall to memory_search; document dual pattern-store path (ReasoningBank-typed vs memory_store --namespace migrations) Contract additions: - ADR-0001 (Proposed) at docs/adrs/0001-migrations-contract.md - README adds Compatibility (pin v3.6), Namespace coordination (claims migrations as base-name exception, cf. federation; routing-note callout; defers to ruflo-agentdb ADR-0001), Verification + Architecture Decisions - plugin.json bumps 0.1.0 → 0.2.0; keywords add mcp, dry-run, up-down-pairs - scripts/smoke.sh — 10 structural checks: version + keywords, both skills + agent + command present, 6 subcommands, skills use memory_* not hierarchical-* with namespace, dual pattern-store doc'd, v3.6 pin, namespace coordination, ADR Proposed, no wildcard tools Verification: bash plugins/ruflo-migrations/scripts/smoke.sh → 10/10 Co-Authored-By: RuFlo <ruv@ruv.net> |
||
|
|
75d57c4ec0 |
fix(ruflo-market-data): v0.2.0 — fix 3 functional bugs (embeddings_embed + namespace-routing) + adopt plugin contract (ADR-0001)
Three real bugs found in the market-data skills + agent: 1. market-ingest skill referenced mcp__claude-flow__embeddings_embed — that tool name does not exist. Real name: embeddings_generate (same bug class as ruflo-knowledge-graph ADR-0001). 2. market-ingest skill called agentdb_hierarchical-store with namespace arg "market-data" — agentdb_hierarchical-* routes by tier, ignores namespace string (per ruflo-agentdb ADR-0001). 3. market-pattern skill had the same hierarchical-recall bug PLUS the same agentdb_pattern-store + namespace bug as ruflo-cost-tracker ADR-0001 (ReasoningBank ignores namespace). 4. data-engineer agent also referenced embeddings_embed. All 4 fixed: switch namespaced reads/writes to memory_* (the namespace-routed family), rename embeddings_embed → embeddings_generate, and document the dual pattern-store path (typed via ReasoningBank vs namespace-routable via memory_store). Contract additions: - ADR-0001 (Proposed) at docs/adrs/0001-market-data-contract.md - README adds Compatibility (pin v3.6), Namespace coordination (claims market-data + market-patterns; routing-note callout; defers to ruflo-agentdb ADR-0001), Verification + Architecture Decisions - plugin.json bumps 0.1.0 → 0.2.0; keywords add mcp, candlestick-patterns, namespace-routing - scripts/smoke.sh — 11 structural checks: version + keywords, both skills + agent + command present, embeddings_embed regression check (excludes ADR + README call-outs), skills use memory_* not hierarchical-* with namespace, dual pattern-store path doc'd, embeddings_generate referenced, v3.6 pin, namespace coordination, market-data + market-patterns claimed, ADR Proposed Verification: bash plugins/ruflo-market-data/scripts/smoke.sh → 11/11 Co-Authored-By: RuFlo <ruv@ruv.net> |
||
|
|
e24481f51e |
feat(ruflo-loop-workers): v0.2.0 — adopt plugin contract + 12-worker trigger map (ADR-0001)
5 hooks_worker-* MCP tools (worker-list, worker-dispatch, worker-status, worker-detect, worker-cancel) plus 12 worker triggers were already wired. The contract pieces were missing. Notable: this ADR maps each of the 12 worker triggers to its consumer plugin so downstream plugins (ruflo-docs/ruflo-security-audit/ruflo-testgen /ruflo-knowledge-graph/etc.) can verify their trigger names against a single canonical source. And the 270s cache-aware ScheduleWakeup heartbeat is now anchored to ruflo-autopilot ADR-0001 which owns that contract. - ADR-0001 (Proposed) at docs/adrs/0001-loop-workers-contract.md - README adds Compatibility (pin v3.6), 5-tool MCP surface table, 12-worker → consumer-plugin attribution table, Cache-aware /loop integration block (270s heartbeat, defers to ruflo-autopilot ADR-0001), Namespace coordination (claims worker-history), Verification + Architecture Decisions sections - plugin.json bumps 0.1.0 → 0.2.0; description names the 5 MCP tools + 12 trigger names; keywords add mcp, background-workers, cache-aware, schedule-wakeup - scripts/smoke.sh — 12 structural checks: version + keywords, both skills + agent + 2 commands present, 5 worker MCP tools referenced, 12 trigger names documented, v3.6 pin, namespace coordination, worker-history claimed, 270s cache-aware note, autopilot cross-reference, attribution table, ADR Proposed, no wildcard tools Verification: bash plugins/ruflo-loop-workers/scripts/smoke.sh → 12/12 Co-Authored-By: RuFlo <ruv@ruv.net> |
||
|
|
0aeb255b8a |
fix(ruflo-knowledge-graph): correct embeddings_embed → embeddings_generate + adopt plugin contract (ADR-0001)
Real bug fix: kg-extract skill and graph-navigator agent referenced mcp__claude-flow__embeddings_embed, but no such MCP tool exists. The correct tool name is embeddings_generate (defined at v3/@claude-flow/cli/src/mcp-tools/embeddings-tools.ts:260). Invocations of the old name would fail silently as "tool not found". Functional fixes: - skills/kg-extract/SKILL.md allowed-tools: embeddings_embed → embeddings_generate - agents/graph-navigator.md tool list: same rename Contract additions: - ADR-0001 (Proposed) at docs/adrs/0001-knowledge-graph-contract.md - README adds Compatibility (pin v3.6), Namespace coordination (claims kg-graph; defers to ruflo-agentdb ADR-0001) with explicit "NOT embeddings_embed" callout, Verification + Architecture Decisions - plugin.json keywords add mcp, pathfinder-traversal, entity-extraction (already at v0.2.0) - scripts/smoke.sh — 10 structural checks: version + keywords, both skills + agent + command present, **regression check** that embeddings_embed is NOT referenced at any tool-call site (ADR + README's "NOT" call-outs are excluded), embeddings_generate referenced, 5 /kg subcommands, v3.6 pin, namespace coordination, ADR Proposed, no wildcard tools Verification: bash plugins/ruflo-knowledge-graph/scripts/smoke.sh → 10/10 Co-Authored-By: RuFlo <ruv@ruv.net> |
||
|
|
312f599430 |
feat(ruflo-jujutsu): v0.2.0 — adopt plugin contract (ADR-0001, ADR-compliance integration, smoke)
6 analyze_* MCP tools (analyze_diff, analyze_diff-risk, analyze_diff-classify, analyze_diff-reviewers, analyze_file-risk, analyze_diff-stats) already correctly referenced. The contract pieces were missing. Notable: this plugin is the diff-analysis substrate that ruflo-adr's /adr check command runs on. ADR-0001 makes that integration contractual: 1. /adr check calls analyze_diff for structured diff 2. analyze_diff-classify determines change type 3. cross-reference adr-patterns namespace for related ADRs 4. flag violations against accepted ADRs - ADR-0001 (Proposed) at docs/adrs/0001-jujutsu-contract.md - README adds 6-tool MCP surface table, Compatibility (pin v3.6), ADR-compliance integration block (ruflo-adr /adr check pipeline), Namespace coordination (claims git-patterns, defers to ruflo-agentdb ADR-0001), Verification + Architecture Decisions - plugin.json bumps 0.1.0 → 0.2.0; description enumerates the 6 tools; keywords add mcp, change-classification, reviewer-recommendation - scripts/smoke.sh — 10 structural checks: version + keywords, all 6 analyze_* tools referenced, both skills with frontmatter, agent + command present, v3.6 pin, namespace coordination, ADR-compliance cross-reference, git-patterns claimed, ADR Proposed, no wildcard tools Verification: bash plugins/ruflo-jujutsu/scripts/smoke.sh → 10/10 Co-Authored-By: RuFlo <ruv@ruv.net> |
||
|
|
4046967c03 |
feat(ruflo-iot-cognitum): v0.2.0 — adopt plugin contract (ADR-0001, federation trust-model parallel, smoke)
Plugin already had 4 agents + 5 skills + /iot with 25 subcommands + REFERENCE.md + 5 already-compliant kebab-case namespaces (iot-devices, iot-telemetry, iot-telemetry-anomalies, iot-anomalies, iot-audit). The contract pieces were missing. Notable: this plugin's 5-tier device trust model (UNKNOWN → REGISTERED → PROVISIONED → CERTIFIED → FLEET_TRUSTED) follows the same shape as ruflo-federation's (UNTRUSTED → VERIFIED → ATTESTED → TRUSTED → PRIVILEGED) but uses distinct naming for a distinct surface. ADR-0001 makes the parallel explicit. - ADR-0001 (Proposed) at docs/adrs/0001-iot-cognitum-contract.md - README adds Compatibility (pin v3.6 + Cognitum Seed hardware + SDK), Namespace coordination (5 namespaces, all already-compliant; defers to ruflo-agentdb ADR-0001), Trust-model parallel block (federation cross-reference noting same shape / distinct naming), Verification + Architecture Decisions - plugin.json bumps 0.1.1 → 0.2.0; keywords add mcp, cognitum-seed, 5-tier-trust - scripts/smoke.sh — 12 structural checks: version + keywords, 5 skills + 4 agents + command present, /iot command non-empty, 6 background workers (HealthProbe/TelemetryIngest/AnomalyScan/MeshSync/FirmwareWatch/ WitnessAudit), 5 trust tiers (cognitum-specific), 6 anomaly types, rollout state machine, v3.6 pin, namespace coordination, federation trust-model cross-reference, ADR Proposed, REFERENCE.md non-empty Verification: bash plugins/ruflo-iot-cognitum/scripts/smoke.sh → 12/12 Co-Authored-By: RuFlo <ruv@ruv.net> |
||
|
|
714cd534c0 |
feat(ruflo-goals): adopt plugin contract — legacy-vs-canonical namespace mapping + ADR-099 anchor (ADR-0001)
Plugin already at v0.2.0 with 4 agents + 5 skills + 1 command. The contract pieces were missing, plus a real namespace audit finding: six namespaces predate ruflo-agentdb ADR-0001's <plugin-stem>-<intent> convention and are not compliant. Renaming risks breaking existing stored data. ADR-0001 documents the legacy-vs-canonical mapping: - adr → defer to canonical adr-patterns (owned by ruflo-adr) - dossier → documented base-name exception (cf. federation) - research → goals-research (legacy reads + new writes pending data portability ADR) - research-sources → goals-research-sources (same) - horizons → goals-horizons (same) - horizon-sessions → goals-horizon-sessions (same) New writes from this plugin SHOULD use the canonical kebab-case form; reads check both for backward compatibility. A future ADR will propose the rename + migration once the data-portability path is designed. - ADR-0001 (Proposed) at docs/adrs/0001-goals-contract.md - README adds Compatibility (pin v3.6), Namespace coordination with the legacy-vs-canonical mapping table, ADR-099 dossier-investigator block (seed-driven, graph output, budget caps, provenance per claim), Verification + Architecture Decisions sections - plugin.json keywords add mcp, evidence-grading, legacy-namespaces - scripts/smoke.sh — 10 structural checks: version + keywords, all 5 skills + 4 agents + command present, 4 task patterns in selection guide, ADR-099 cross-link, v3.6 pin, namespace coordination, legacy mapping entries, ADR Proposed, ADR-099 invariants documented, no wildcard tools Verification: bash plugins/ruflo-goals/scripts/smoke.sh → 10/10 Co-Authored-By: RuFlo <ruv@ruv.net> |
||
|
|
b0168e4a55 |
feat(ruflo-federation): adopt plugin contract — 3-gate alignment + ADR-097 budget integration + smoke (ADR-0001)
Federation already at v0.2.0 with comprehensive ADR-097 budget circuit breaker docs. The contract pieces were missing. The plugin's "PII Pipeline" feature is a richer specialization of the canonical 3-gate pattern owned by ruflo-aidefence ADR-0001: Canonical gate 1 (aidefence_has_pii) ← 14-type PII detection w/ trust-level policies Canonical gate 2 (aidefence_scan) ← outbound HMAC envelope + dual gates Canonical gate 3 (aidefence_is_safe) ← inbound message verification This ADR makes the alignment explicit so implementers reading both plugins don't reconcile two different "gate" stories. - ADR-0001 (Proposed) at docs/adrs/0001-federation-contract.md - README adds Compatibility (pin v3.6 + plugin-agent-federation runtime), 3-gate alignment block (canonical → federation specialization mapping), Namespace coordination (claims `federation` as the documented exception to <plugin-stem>-<intent> rule — when the plugin name is the intent, the namespace can match the plugin stem; defers to ruflo-agentdb ADR-0001), Verification + Architecture Decisions sections - plugin.json keywords add mcp, pii-pipeline, audit-log (already at 0.2.0) - scripts/smoke.sh — 10 structural checks: version + keywords, 3 skills + agent + command with frontmatter, ADR-097 budget block intact, 5-tier trust model documented, compliance modes (HIPAA/SOC2/GDPR), v3.6 pin, namespace coordination, 3-gate alignment cross-reference, ADR Proposed, no wildcard tools Verification: bash plugins/ruflo-federation/scripts/smoke.sh → 10/10 Co-Authored-By: RuFlo <ruv@ruv.net> |
||
|
|
0648218312 |
feat(ruflo-docs): v0.2.0 — adopt plugin contract (ADR-0001, document-worker contract, namespace coordination)
- ADR-0001 (Proposed) at docs/adrs/0001-docs-contract.md - README adds Compatibility (pin v3.6, Haiku agent model), Document-worker contract (trigger:document with optional scope: api or file path), Namespace coordination (claims docs-drift for drift-detection state), Verification + Architecture Decisions sections - plugin.json bumps 0.1.0 → 0.2.0; description names the document worker; keywords add jsdoc, openapi, mcp - scripts/smoke.sh — 10 structural checks: version + keywords, 2 skills with frontmatter, agent + command present, hooks_worker-dispatch referenced, document trigger doc'd, v3.6 pin, namespace coordination, docs-drift claimed, scope table doc'd, ADR Proposed, agent uses Haiku Verification: bash plugins/ruflo-docs/scripts/smoke.sh → 10/10 Co-Authored-By: RuFlo <ruv@ruv.net> |
||
|
|
ab5ec6b882 |
feat(ruflo-ddd): v0.2.0 — adopt plugin contract (ADR-0001, namespace coordination, smoke as contract)
Plugin-internal scaffolding (no MCP tools of its own); REFERENCE.md already follows the ADR-098 Part 2 token-diet pattern. Just needs the contract pieces. - ADR-0001 (Proposed) at docs/adrs/0001-ddd-contract.md - README adds Compatibility (pin v3.6), Namespace coordination (claims ddd-patterns, defers to ruflo-agentdb ADR-0001), Verification + Architecture Decisions sections - plugin.json bumps 0.1.1 → 0.2.0; description expanded; keywords add acl, value-objects, repositories, mcp - scripts/smoke.sh — 10 structural checks: version + keywords, 3 skills with frontmatter, agent + command present, 6 subcommands documented, REFERENCE.md non-empty, v3.6 pin, namespace coordination, ddd-patterns claimed, ADR Proposed, no wildcard tools Verification: bash plugins/ruflo-ddd/scripts/smoke.sh → 10/10 Co-Authored-By: RuFlo <ruv@ruv.net> |
||
|
|
b6d13ae982 |
feat(ruflo-daa): v0.2.0 — adopt plugin contract (ADR-0001, intelligence-pipeline alignment)
8 daa_* MCP tools were already correctly wired across agent + 2 skills + 1 command. The contract pieces were missing. - ADR-0001 (Proposed) at docs/adrs/0001-daa-contract.md - README adds 8-tool MCP surface table, Compatibility (pin v3.6), Intelligence-pipeline alignment (DAA cognitive patterns feed JUDGE phase per ruflo-intelligence ADR-0001; daa_knowledge_share feeds hooks_intelligence_learn during DISTILL), Namespace coordination (claims daa-patterns, defers to ruflo-agentdb ADR-0001), Verification + Architecture Decisions sections - plugin.json bumps 0.1.0 → 0.2.0; description enumerates the 8 tools and pipeline alignment; keywords add cognitive-patterns, workflows, mcp - scripts/smoke.sh — 10 structural checks Verification: bash plugins/ruflo-daa/scripts/smoke.sh → 10/10 Co-Authored-By: RuFlo <ruv@ruv.net> |
||
|
|
9dc248700c |
fix(ruflo-cost-tracker): v0.2.2 — fix namespace-routing bug + adopt plugin contract (ADR-0001)
The cost-report and cost-optimize skills passed namespace arguments to
agentdb_hierarchical-recall and agentdb_pattern-store, but those tool
families route by tier and ReasoningBank respectively — namespace strings
are silently ignored (per ruflo-agentdb ADR-0001 §"Namespace convention").
The skills' CLI examples have always been correct (memory_store/_search
with --namespace cost-tracking / cost-patterns); the MCP tool mapping
was wrong.
Functional fixes:
- cost-report skill: load path switches from agentdb_hierarchical-recall
to memory_search/_list/_retrieve. allowed-tools updated.
- cost-optimize skill: load path switches to memory_search; documents
both write paths explicitly:
1. agentdb_pattern-store (ReasoningBank-routed; no namespace arg;
fallback lands in reserved 'pattern' namespace)
2. memory_store --namespace cost-patterns (namespace-routable; lands
in cost-patterns as the agent file's CLI examples promise)
Contract additions:
- ADR-0001 (Proposed) at docs/adrs/0001-cost-tracker-contract.md
- README adds Compatibility (pin v3.6), Namespace coordination (claims
cost-tracking + cost-patterns; routing-note callout; defers to
ruflo-agentdb ADR-0001), Verification + Architecture Decisions sections
- plugin.json bumps 0.2.1 → 0.2.2 (patch — public command surface
unchanged; skill internals fixed); keywords add namespace-routing, mcp
- scripts/smoke.sh — 10 structural checks: version + keywords, skills
present, skills use memory_* not hierarchical-*, dual pattern-store
paths documented, v3.6 pin, namespace coordination block, federation
budget pairing (ADR-097) block intact, ADR Proposed, REFERENCE.md
non-empty, no wildcard tools
Verification: bash plugins/ruflo-cost-tracker/scripts/smoke.sh → 10/10
Co-Authored-By: RuFlo <ruv@ruv.net>
|
||
|
|
bd384ad5e6 |
feat(ruflo-core): v0.2.0 — adopt foundation plugin contract (ADR-0001, MCP server contract, sibling ADR cross-references)
The foundation plugin now documents its own contract since 30+ plugins depend on the MCP server it registers and the orchestration patterns it documents. - ADR-0001 (Proposed) at docs/adrs/0001-core-contract.md - README adds Compatibility (pin @claude-flow/cli v3.6 — .mcp.json uses @latest dynamic resolver, smoke verifies the resolved CLI), MCP server contract (300+ tools across 11 families with per-plugin attribution table), Sibling contracts cross-reference table (7 ADRs covering namespace convention, session-as-skill, 4-step pipeline, 3-gate AIDefence, 270s cache-aware /loop, ADR token-optimization) - plugin.json bumps 0.1.0 → 0.2.0; description enumerates registered family prefixes; keywords add foundation, mcp-server, plugin-catalog, discovery - scripts/smoke.sh — 10 structural checks: version + keywords, .mcp.json registers ruflo server, 3 agents + 3 skills present with frontmatter, discover-plugins catalog has ≥25 sibling references, v3.6 pin, sibling ADR cross-references (namespace + 3-gate + 4-step), ADR Proposed, /ruflo-status invokes doctor+status, no wildcard tools Verification: bash plugins/ruflo-core/scripts/smoke.sh → 10/10 Co-Authored-By: RuFlo <ruv@ruv.net> |
||
|
|
36a01c4106 |
feat(ruflo-autopilot): v0.2.0 — adopt plugin contract (ADR-0001, namespace coordination, smoke as contract)
10 autopilot_* MCP tools were already wired correctly. The contract pieces were missing. - ADR-0001 (Proposed) at docs/adrs/0001-autopilot-contract.md - README adds full 10-tool MCP surface table, Compatibility (pin v3.6), cache-aware /loop integration (270s ScheduleWakeup heartbeat under the prompt-cache TTL), Namespace coordination (claims autopilot-patterns, defers to ruflo-agentdb ADR-0001), Verification + Architecture Decisions - plugin.json bumps 0.1.0 → 0.2.0; keywords add prediction, progress-tracking, cache-aware, mcp; description enumerates the 10 tools - scripts/smoke.sh — 10 structural checks: version + keywords, all 10 autopilot_* tools referenced, both skills + both commands present, v3.6 pin, namespace coordination, 270s cache-aware note, autopilot-patterns claim, ADR Proposed, no wildcard tools Verification: bash plugins/ruflo-autopilot/scripts/smoke.sh → 10/10 Co-Authored-By: RuFlo <ruv@ruv.net> |
||
|
|
9982c701fa |
feat(ruflo-aidefence): adopt plugin contract + canonicalize 3-gate pattern (ADR-0001)
Joins the cadence: pin → ADR (Proposed) → smoke → namespace coordination. Plus this plugin canonicalizes the 3-gate pattern that ruflo-browser ADR-0001 §4 codified — every consumer plugin handling untrusted content should apply these gates in order: 1. Pre-storage PII (aidefence_has_pii) — before any AgentDB / memory_store 2. Sanitization (aidefence_scan) — for cookies / tokens / high-entropy blobs 3. Prompt-injection (aidefence_is_safe) — for content re-entering an LLM Changes: - ADR-0001 (Proposed) at docs/adrs/0001-aidefence-contract.md - README adds Compatibility (pin v3.6), 3-gate pattern table, Namespace coordination (defers to ruflo-agentdb ADR-0001, claims security-patterns), Verification + Architecture Decisions sections - plugin.json keywords add prompt-injection, defense-in-depth, mcp (already at v0.2.0 — no version bump needed) - scripts/smoke.sh — 10 structural checks: version + keywords, all 6 aidefence_* tools referenced, transfer_detect-pii reference, v3.6 pin, namespace coordination, 3-gate pattern complete, defence-in-depth block intact, ADR Proposed, skill frontmatter valid, no wildcard tools Verification: bash plugins/ruflo-aidefence/scripts/smoke.sh → 10/10 Co-Authored-By: RuFlo <ruv@ruv.net> |
||
|
|
df49b51766 |
feat(ruflo-adr): v0.2.0 — adopt plugin contract (ADR-0001, namespace coordination, smoke as contract)
The plugin that manages ADRs now has its own ADR. Joins the contract established by ruflo-ruvector / agentdb / browser / intelligence: pin → ADR (Proposed) → smoke → namespace coordination. Plugin behavior is unchanged (3 skills + 7 subcommand dispatcher remain intact). What's new is the contract: - ADR-0001 (Proposed): documents the cadence join, deferral to ruflo-agentdb namespace convention, REFERENCE.md token-optimization pattern (per ADR-098 Part 2) - README adds Compatibility (pin @claude-flow/cli v3.6), Namespace coordination (defers to ruflo-agentdb ADR-0001, claims adr-patterns as the owned kebab-case namespace), Verification + Architecture Decisions sections - plugin.json bumps 0.1.1 → 0.2.0 with keywords (lifecycle, compliance, causal-graph, mcp) - scripts/smoke.sh — 10 structural checks: version + keywords, all 3 skills with valid frontmatter, all 7 subcommands documented, REFERENCE.md cross-reference, adr-patterns namespace consistency, v3.6 pin, namespace coordination block, ADR Proposed, REFERENCE non-empty, no wildcard tools Verification: bash plugins/ruflo-adr/scripts/smoke.sh → 10 passed, 0 failed Co-Authored-By: RuFlo <ruv@ruv.net> |
||
|
|
78e5658dfd |
feat(ruflo-intelligence): v0.3.0 — surface completeness, 4-step pipeline, IPFS transfer, namespace coordination
Implements ADR-0001 for ruflo-intelligence. Plugin previously documented ~14 of 29 intelligence-related MCP tools and never operationalized the 4-step pipeline (RETRIEVE → JUDGE → DISTILL → CONSOLIDATE) that CLAUDE.md treats as the V3 framing. IPFS-based cross-project pattern transfer (hooks_transfer) was completely invisible despite being a real differentiator. Verified surface (29 tools across 5 families): - 6 neural_* (incl. neural_compress, previously undocumented) - 10 hooks_intelligence_*-family (incl. _attention, _learn, _stats, -reset — all previously undocumented) - 6 routing/meta hooks (hooks_route, hooks_explain, hooks_pretrain, hooks_build-agents, hooks_metrics, hooks_transfer — last 5 previously undocumented) - 3 hooks_model-* (Tier 1/2/3 routing) - 4 ruvllm_sona_* + ruvllm_microlora_* (MicroLoRA previously undocumented) Changes: - bump 0.1.0 → 0.3.0; new keywords (microlora, ewc, attention, moe, pattern-transfer, model-routing, mcp) - ADR-0001 (Proposed): documents drift, decisions, smoke contract, namespace coordination with ruflo-agentdb - README: full rewrite with tool inventory + 4-step pipeline (each phase mapped to specific tool calls) + cross-project IPFS transfer + hook integration table + namespace coordination (defers to ruflo-agentdb ADR-0001) + EWC++ explanation (no longer phantom feature) + MoE mode enumeration + Compatibility section - intelligence-specialist agent: tool routing matrix (29 entries), pipeline responsibility table, namespace contract, MoE mode selection, EWC++ in practice, cross-project transfer flow - /intelligence command: real dashboard (stats + metrics + model-stats + neural-status + hooks_explain on --why) - /neural command: adds neural_compress dispatch - intelligence-route skill: adds hooks_explain rationale step - neural-train skill: adds MicroLoRA section, EWC++ via consolidate flag, hooks_pretrain + hooks_build-agents bootstrap, hooks_intelligence-reset for testing - NEW intelligence-transfer skill: walks the IPFS workflow end-to-end (store / load / from-project), Pinata prerequisite documented - scripts/smoke.sh: 16 structural checks (3 doc invariants + 13 contract) Verification: bash plugins/ruflo-intelligence/scripts/smoke.sh → 16 passed, 0 failed Coordinates with prior ADRs: - ruflo-agentdb ADR-0001 §"Namespace convention" — pattern (singular) vs patterns (plural) gotcha referenced inline - ruflo-ruvector ADR-0001 — trajectory hooks land in ruvector substrate - ruflo-browser ADR-0001 — consumes trajectory hooks for replay Co-Authored-By: RuFlo <ruv@ruv.net> |
||
|
|
6324f5ae07 |
feat(ruflo-agentdb): v0.3.0 — accurate surface, RaBitQ workflow, namespace contract, hook integration
Implements ADR-0001 for ruflo-agentdb: ends the "19 controllers" myth, surfaces the RaBitQ 32× quantization path that was buried in the substrate, documents three HNSW operating profiles, owns the namespace convention that downstream plugins (ruflo-browser, ruflo-rag-memory, ruflo-intelligence) have been re-inventing, and adds a 16-check smoke contract. Changes: - bump 0.2.0 → 0.3.0; new keywords (rabitq, quantization, namespace-convention, controller-bridge, mcp) - README: real INIT_LEVELS table from controller-registry.ts:160-174 (no more "19 controllers" magic number); namespace convention contract (reserved list, controller-routing rules, GC posture, naming guardrails); operational fallback table (pattern-store fallback, graph-node backend, bridge unavailable); compatibility section pinning to @claude-flow/cli v3.6 - ADR-0001: surface accuracy, RaBitQ, HNSW tuning, namespace convention, fallback docs, smoke as contract, pinning posture (200 lines, status Proposed, file-and-line-cited) - agentdb-specialist agent: replaces "19 Controllers" header with the real 3-family count table (15+10+3); routing matrix; fallback response branching - /agentdb command: defers controller count to runtime tool - /embeddings command: adds RaBitQ 5-step recipe + hyperbolic + neural notes - agentdb-query skill: drops "19 Controllers", adds namespace-routing warnings and fallback branching guide - vector-search skill: splits @claude-flow/memory HNSW (large-scale, 150– 12,500×) from WASM ruvllm_hnsw_* router (~11 patterns); adds RaBitQ quantized-search section with rerank caveat; documents 3 tuning profiles (recall-first/balanced/latency-first) Claude Code surface (added per follow-up): - README "How Claude Code populates AgentDB" section: memory_import_claude (manual + .claude/helpers/auto-memory-hook.mjs SessionStart=import, SessionEnd=sync), memory_bridge_status, memory_search_unified default namespace list, plus the pattern-vs-patterns pluralization gotcha - README "Hook integration convention" table: SessionStart→claude-memories, post-task --train-neural→pattern (ReasoningBank), pretrain→patterns, ruvector trajectory hooks→ruvector substrate. Implication: don't double- write, don't manually refresh claude-memories, surface fallback responses Verification: - bash plugins/ruflo-agentdb/scripts/smoke.sh → 16 passed, 0 failed (3 doc invariants + 10 ADR contract checks + 3 Claude Code surface checks) - Smoke checks #7-#9 are source-inspection on agentdb-tools.ts (no env-var gate exists to force the bridge-unavailable path live, as flagged in ADR Verification caveat) Pre-existing unrelated edits (v3/@claude-flow/cli/src/commands/performance.ts, neural-tools.ts, embedding-service.ts) and untracked files left out of this commit — they predate this session. Co-Authored-By: RuFlo <ruv@ruv.net> |
||
|
|
82cfc9a7b2 | merge: integrate origin/main (#1719 #1726) into local 81-commit train | ||
|
|
b5b6fb3fbe |
feat(ruflo-browser): v0.2.0 session-as-skill architecture + ADR-0001
Refactors ruflo-browser around recordable, replayable RVF cognitive containers. Implements ADR-0001 (Proposed). Pre-Accept gate is a 10-site replay-fidelity spike (≥80% pass) — harness shipped, run pending. Plugin (plugins/ruflo-browser/): - bump 0.1.0 → 0.2.0; new keywords (rvf, replay, trajectory, agentdb, aidefence) - ADR-0001: session-as-skill architecture, 4 AgentDB namespaces, 3 AIDefence gates, 7 verb dispatcher, 5 new MCP lifecycle tools, 7+1 skill catalog, load-bearing replay-fidelity assumption flagged in Verification §4 - agent: rewritten with session contract, RVF allocation, ruvector trajectory-begin/step/end hooks, 4 namespaced AgentDB writes, 3 mandatory AIDefence gates - /ruflo-browser command: verb dispatcher (ls/show/replay/export/fork/purge/doctor) - 7 new skills: browser-record (primitive), browser-replay, browser-extract, browser-login, browser-form-fill, browser-screenshot-diff, browser-auth-flow - browser-test kept; rewritten to compose record+replay - browser-scrape becomes a deprecation shim (removed in v0.3.0) - scripts/smoke.sh: 13 structural checks; scripts/replay-spike.sh + SITES.txt: 10-site interactive harness writing STATUS.md per run CLI (v3/@claude-flow/cli/): - src/mcp-tools/browser-session-tools.ts: 5 new lifecycle tools (browser_session_record / _end / _replay / browser_template_apply / browser_cookie_use). Each shells out to pinned ruvector@0.2.25 + the existing agent-browser CLI + bridged claude-flow memory; missing deps degrade with structured success:false rather than crash. - src/mcp-client.ts: registers browserSessionTools alongside existing browserTools. - TypeScript clean (npx tsc --noEmit reports zero errors against the new files). Borrows from Browserbase skills/skill repo (verified 2026-05-04): trace-as-firehose with per-page bisection (browser-trace/SKILL.md); outer/inner self-improving loop (autobrowse/SKILL.md); sessions+contexts as separately addressable artifacts (browser/REFERENCE.md + cookie-sync). Adapted to use Ruflo's substrates (RVF, ruvector, AgentDB, AIDefence, federation) rather than Browserbase's hosted backend. Verification: - bash plugins/ruflo-browser/scripts/smoke.sh → 13 passed, 0 failed. - replay spike runnable via scripts/replay-spike.sh (network-dependent; not part of the smoke contract). ADR remains Proposed until ≥80% pass recorded under spike-results/<timestamp>/STATUS.md. Co-Authored-By: RuFlo <ruv@ruv.net> |
||
|
|
6e1bdc211e |
fix(plugins): pin ruflo-ruvector to ruvector@0.2.25 + expand verified CLI surface
The plugin's docs had drifted from the real ruvector CLI: many documented invocations (`embed "TEXT"`, `compare`, `cluster --namespace`, `hooks route --task`, `brain agi status`, `midstream status`, `index create/stats`, `embed --model poincare`) failed with "unknown command" or "unknown option" on the installed ruvector. Probed every subcommand against ruvector@0.2.25 and rewrote the plugin to match reality. Changes: - Pin every `npx ruvector` call to `npx -y ruvector@0.2.25` across README, agent, skills, and commands - Rewrite commands/vector.md with 80+ verified subcommands (embed, db lifecycle, RVF cognitive containers, GNN, attention mechanisms, hooks, native/workers, brain, SONA, LLM, identity, edge, server, decompile, demo) - Add vector-setup skill that installs onnx-embeddings-wasm + pi-brain + ruvllm and registers the MCP server with the pinned version - Add scripts/smoke.sh — 11-check contract test (version pin, top-level surface, positional-arg invariants, removed-surface-stays-removed) - Replace stale "Search Capabilities (v2.1+)" table claiming FlashAttention-3 / Graph RAG / DiskANN / ColBERT / Matryoshka / MLA / TurboQuant as CLI features with an "Attention Mechanisms" table mapped to real `attention compute|benchmark|hyperbolic` invocations - Document known 0.2.25 bugs: `optimize` not yet shipped, `hooks force-learn` TypeError, `hooks graph-mincut` undefined.length, `benchmark` dimension bug, top-level `cluster` "Coming Soon" - Add ADR-0001 documenting the pin policy, optional add-on packages, MCP registration, removed-surface contract, and smoke-test gate - Bump plugin version 0.2.0 → 0.2.1 Smoke: 11/11 passing against ruvector@0.2.25. Co-Authored-By: RuFlo <ruv@ruv.net> |
||
|
|
f8ce233468 |
fix: resolve 5 issues from May 1-3 (#1697 #1698 #1686 #1691 #1694) (#1719)
* fix(cli,ui): resolve five issues from May 1-3 reports Bumps all three packages to 3.6.13 with the following fixes: - #1697 (rvf-wasm SyntaxError): pin @ruvector/rvf-wasm to 0.1.5 via npm overrides in root and ruflo umbrella package.json. Upstream republished 0.1.6 with the missing exports map, so fresh installs also work — the override is defense-in-depth for cached resolves. - #1698 (HNSW false-negative): await getHNSWIndex() before reading status in `embeddings index status` and `performance benchmark`. Differentiate "package not installed" vs "index empty" in the remediation hint instead of always pointing to npm install. - #1686 (metrics zeros + null.toFixed crash): pass dbPath to ReasoningBank so post-* writes persist to .swarm/memory.db, normalize CLI dashboard against both `statistics`/`stats` and `executionTime`/`duration` shapes, and add ?? 0 guards on every toFixed call. - #1691 (Windows daemon spawn): replace spawn(process.execPath,..., {shell:true}) with fork(cliPath, ...) so cmd.exe never sees the spaced node.exe path. Also removes the [DEP0190] security warning. macOS regression-checked against published 3.6.13. - #1694 (UI auto-execute): remove 500ms auto-call to executeResearch in goal_ui/Index.tsx and add an explicit "Start Research" gate button so the plan is reviewable. Validated in Playwright with zero console errors. Co-Authored-By: RuFlo <ruv@ruv.net> * fix(mcp): ADR-093 — remediate 7 audit findings, ship 3.6.14 Six-agent verification swarm against 3.6.13 surfaced mocks, broken tools, and partial fixes. ADR-093 documents the findings and decisions; this commit implements F1, F2, F3, F4, F5, F6, F12 (the in-scope subset). - F1: hooks_metrics now reads getIntelligenceStatsFromMemory + routing outcomes instead of substring-matching memory keys. The 3.6.13 #1686 fix landed in v3/mcp/tools/hooks-tools.ts but the runtime uses v3/@claude-flow/cli/src/mcp-tools/hooks-tools.ts — counters now actually increment after hooks_post-task. - F2: hooks_worker-dispatch detects daemon presence via .claude-flow/ daemon.pid and returns honest verdicts (`queued`, `no-daemon`, `synthetic-completed`) instead of the audit-flagged status:"completed" in 0ms (#1700 item 1). - F3: hive-mind_init schema now exposes `consensus` (raft|byzantine| gossip|crdt|quorum, default raft per anti-drift posture) and persists consensusStrategy into HiveState; hive-mind_status surfaces the persisted value (#1700 item 4). - F4: agentdb_pattern-store falls back to memory_store when the ReasoningBank registry is unavailable, instead of silently failing with "AgentDB bridge not available" while agentdb_health.reasoningBank. enabled === true. - F5: embeddings_status adds a structured ruvectorStatus field ({available, enabled, version}) so callers can distinguish "package not installed" from "not wired into the pipeline" (#1698 partial regression at MCP boundary). - F6: session_list now accepts both writer shapes (`{sessionId, name, savedAt}` from session_save and `{id, startedAt}` from the auto-session writer); previously the second shape collapsed to empty objects. - F12: config_list enumerates the full union (defaults + stored + every scope) with accurate `source` labels, matching config_export totals. Deferred (separate ADRs): F7 coordination_orchestrate stub, F8 performance_metrics latency/throughput fixtures, F9 disabled AgentDB controllers (route/feedback/semantic-route), F10 hooks_intelligence_ attention placeholder, F11 neural_predict classifier head. Bumps @claude-flow/cli, claude-flow umbrella, and ruflo umbrella to 3.6.14 with all dist-tags updated. Smoke-tested in clean /tmp install: ruflo memory init still 6/6 ✓; ruflo --version reports 3.6.14. Co-Authored-By: RuFlo <ruv@ruv.net> * fix(embeddings): graceful agentic-flow fallback in downloadEmbeddingModel #1700 item 2: `embeddings init` failed with `Cannot find package 'agentic-flow'` because downloadEmbeddingModel did not catch the dynamic import error, even though agentic-flow is declared as an optional peer. Now logs an informative warning and returns the target dir as a no-op success — @xenova/transformers fetches the model lazily on first embeddings_generate call. Bumps @claude-flow/embeddings to 3.0.0-alpha.13. ruflo@3.6.14 picks it up automatically via caret range. Verified in clean /tmp install: $ node -e "import('@claude-flow/embeddings').then(m => m.downloadEmbeddingModel('Xenova/all-MiniLM-L6-v2', '/tmp/test-models'))" [embeddings] agentic-flow not installed — skipping eager model download. Models will be fetched lazily by @xenova/transformers on first generate. downloadEmbeddingModel returned: "/tmp/test-models" PASS — graceful fallback worked Previously this threw "Cannot find package 'agentic-flow' imported from .../@claude-flow/embeddings/dist/neural-integration.js". Co-Authored-By: RuFlo <ruv@ruv.net> * fix: security overrides + F8 perf metrics + F10 attention placeholder Iteration #2 of /loop. Three concrete improvements, no publish (batched for the next release per the loop directive). Security (npm audit baseline): - Add overrides for high/critical CVEs in claude-flow umbrella and ruflo: @hono/node-server >=1.19.10 (auth bypass), flatted >=3.4.0 (DoS), tar >=7.5.0, picomatch >=4.0.3, path-to-regexp >=8.2.1, undici >=7.18.0, minimatch >=10.0.0, @isaacs/brace-expansion >=5.0.1, cacache >=20.0.0, make-fetch-happen >=15.0.0, express-rate-limit >=8.4.1. npm overrides only apply at the install root, so these primarily protect our own CI/dev environment and signal intent to consumers. Transitive CVEs through @xenova/transformers/onnxruntime-web/protobufjs remain blocked on upstream releases. ADR-093 F8 — performance_metrics fixtures replaced with self-measured latency: - Probe a tiny CPU+memory loop with process.hrtime.bigint, derive avg and p50/p95/p99 from real recent samples instead of the hardcoded 50/40/100/200ms defaults. - Throughput now reports actual ops/second from samples in the last 60s instead of an arbitrary +1/+10 increment per call. ADR-093 F10 — hooks_intelligence_attention now attends over real stored patterns when available: - searchEntries(query) -> top-K stored patterns become the attention keys/values; labels include pattern IDs and excerpted content. - When no patterns exist yet, falls back to the previous cosine-harness but labels them honestly as "(synthetic harness) pattern #N" and reports implementation: 'real-flash-attention+synthetic-harness'. - Eliminates the audit-flagged "Flash attention target #1/2/3" placeholder strings with uniform 0.333 weights when stored patterns are present. Co-Authored-By: RuFlo <ruv@ruv.net> * fix: F7 coordination_orchestrate honesty + F11 neural_predict classifier Iteration #3 of /loop. ADR-093 F7 — coordination_orchestrate stops lying about completion time: - Removed hardcoded `estimatedCompletion: "${agents.length * 50}ms"` — the tool never actually executed an orchestration. It scheduled an orchestration record and pretended it would finish in 50ms. - Now persists the orchestration record to the coord store (last 100 retained), returns `status: "scheduled"` with `executor: "none"`, and surfaces `_note` pointing callers at agent_spawn + the Task tool or hive-mind_spawn for real multi-agent execution. ADR-093 F11 — neural_predict gets a real classifier head: - Pattern labels: extract from common semantic fields (label, category, class, tag, intent, name, title) before falling back to the input text itself, then to a stable model:type:index id. Eliminates the audit- flagged "label is the raw JSON dump of training data" behavior. - Confidence: replaced raw cosine clamp with a real classifier head — k-NN with cosine distance, then temperature-softmax (tau=0.1) over the top-K so confidence is a proper distribution that sums to 1. - Surface `cosineSimilarity` alongside `confidence` so callers can distinguish "this is the closest match" from "this is the closest match AND the embedding actually agrees". Top-level `topPrediction`, `topConfidence`, `topSimilarity` for callers that want the head. - `_classifierHead: 'knn-cosine+softmax(tau=0.1)'` declares the method. Build clean. No publish (batched per loop directive). Co-Authored-By: RuFlo <ruv@ruv.net> * fix: F9 — actionable bridgeSemanticRoute error + multi-version router probe ADR-093 F9 (last item from the May audit). Investigation: The 8 disabled AgentDB controllers (vectorBackend, mutationGuard, gnnService, attestationLog, semanticRouter, guardedVectorBackend, rvfOptimizer, graphAdapter) ship disabled because their constructors require either external dependencies, key material, or a sqlite db handle the registry does not expose. For semanticRouter specifically: the API renamed across agentdb alpha versions — alpha.10 exported SemanticRouter; alpha.11 (the version @claude-flow/cli@3.6.14 resolves to via ^3.0.0-alpha.11) dropped it in favor of @ruvector/router as a separate package. So the previous F9 attempt to construct SemanticRouter would silently fail in current builds. Two changes: 1. memory-bridge.ts post-init: probe multiple constructor names (SemanticRouter / IntentRouter / TaskRouter) to handle both legacy and future agentdb versions. Wire only if the constructed instance has a working `route` method. All wrapped in try/catch so a missing class doesn't tear down post-init. 2. bridgeSemanticRoute: when the router is genuinely missing, return an actionable error pointing callers at bridgeRouteTask (which IS wired and works) and hooks_model-route (ADR-026 model selection). Replaces the previous unhelpful "SemanticRouter not available" one-liner that left callers without a next step. Other disabled controllers (mutationGuard, attestationLog, gnnService, guardedVectorBackend, rvfOptimizer, graphAdapter) remain disabled and tracked in code comments. Each needs a separate ADR for activation because their requirements (config / key material / heavy deps / db handle) are non-trivial and have security implications. Build passes. bridgeSemanticRoute({input:"…"}) now returns: { route: null, error, recommendation, controller: "none" } Co-Authored-By: RuFlo <ruv@ruv.net> * fix(embeddings): handle agentic-flow shape change in 3.0.0-alpha.14 Regression caught by 3.6.15 smoke test: with agentic-flow auto-installed as an optional dep, `import('agentic-flow/embeddings')` succeeds but the loaded module exposes `clearEmbeddingCache`/`computeEmbedding`/ `computeEmbeddingBatch`/`getEmbeddingDimensions` — no `downloadModel`. 3.0.0-alpha.13 only handled the "package missing" path. With agentic- flow present but the function absent, it threw `downloadModel is not a function` straight up to the CLI's `embeddings init` action, which reported `[ERROR] Initialization failed: downloadModel is not a function`. 3.0.0-alpha.14 checks `typeof downloadFn === 'function'` before calling and falls through to the same lazy-fetch warning otherwise. @xenova/transformers downloads on first generate() either way. Verified in clean smoke install with cache cleaned: $ ruflo embeddings init --force Initialize Embedding Subsystem ... Next steps: - embeddings generate -t "test text" - Test embedding generation ... Co-Authored-By: RuFlo <ruv@ruv.net> * perf(memory-bridge): parallelize post-init wiring (intelligence + agentdb) The post-registry-init step previously chained four serial awaits: 1. import('./intelligence.js') + initializeIntelligence 2. register reasoningBank + learningSystem (depends on 1) 3. import('agentdb') + register SkillLibrary 4. import('agentdb') again + probe SemanticRouter/IntentRouter/TaskRouter Steps 1+2 are independent of 3+4. Step 3 and 4 share the same agentdb import. Now: - Two top-level Promises (intelligencePromise, agentdbPromise) run in parallel via Promise.allSettled — a single failing path doesn't tear down the other. - agentdb is imported once per registry init and reused for both the SkillLibrary registration and the F9 router probe (was importing twice). - Each path keeps its own try/catch so partial failures degrade gracefully (matches the previous semantics). Local cold memory init dropped from prior measurements; verify the change against published artifact post-3.6.16 in the next /loop verification swarm pass. No behavioral change beyond timing — same controllers register, same fall-through paths, same failure modes. Build clean. Co-Authored-By: RuFlo <ruv@ruv.net> * fix(cli): tight match for cosmetic [AgentDB Patch] noise + cover console.log Two related issues fixed: 1. The "[AgentDB Patch] Controller index not found" warning printed on every command despite the previous suppression code, because the underlying call site uses console.log not console.warn. The override was patching console.warn only, so it was effectively a no-op for this warning. Now patches both. 2. Audit log audit_1776483149979 flagged the previous suppression as too broad: "Console.warn override suppresses legitimate warnings. Could mask security-relevant warnings." Tightened the predicate to require BOTH "[AgentDB Patch]" AND "Controller index not found" so any other future [AgentDB Patch] message (real issues) still reaches the user. Verified locally: - `ruflo memory init --force` no longer prints the noise line. - `ruflo --version` is clean. - `console.log('[AgentDB Patch] some other future warning')` still prints (sanity check) — only the specific cosmetic phrase is filtered. Cosmetic warning has no functional impact on the 8/23 disabled controllers (those remain disabled per ADR-093 F9 and require separate ADRs for activation). This commit only stops the noise; controller enablement is still tracked separately. Co-Authored-By: RuFlo <ruv@ruv.net> * chore: bump to 3.6.16 Batched publish of iterations #6 (parallel post-init wiring) and #7 (tight cosmetic warning suppression). Co-Authored-By: RuFlo <ruv@ruv.net> * fix(install): #1721 — postinstall script copies all dist/src/* siblings @claude-flow/cli ships a postinstall script that copies the agentdb package's dist/src/controllers/ to dist/controllers/ so callers using the legacy `agentdb/dist/controllers/...` import path resolve. The script copied only `controllers/`, but the controllers themselves import from sibling dirs (`../core/`, `../services/`, `../types/`, `../utils/`). Without those, `import { cosineSimilarity } from '../utils/vector-math.js'` in HierarchicalMemory.js failed with ERR_MODULE_NOT_FOUND, breaking hierarchical memory consolidation silently in the daemon path. Fix: postinstall now enumerates every directory under dist/src/ and copies each to dist/<name>/ (skipping dirs that already exist). controllers, core, services, types, utils, plus any others — all reachable from the legacy import root. Reproduced and verified against published 3.6.17: $ npm install ruflo@3.6.17 $ ls node_modules/@claude-flow/cli/node_modules/agentdb/dist/utils/vector-math.js -rw-r--r-- ... vector-math.js # ← previously missing $ node -e "import('.../agentdb/dist/controllers/HierarchicalMemory.js') .then(m => console.log('PASS'))" PASS — module loaded, exports: [ 'HierarchicalMemory' ] Bumps to 3.6.17 across @claude-flow/cli, claude-flow umbrella, and ruflo umbrella with all dist-tags (alpha, latest, v3alpha) updated. Co-Authored-By: RuFlo <ruv@ruv.net> * sec: tighten npm overrides for protobufjs (critical RCE), tar, uuid Re-audit of published 3.6.17 in clean install showed three root-level CVEs that overrides could address: - protobufjs <7.5.5 — CRITICAL — Arbitrary code execution Comes through @opentelemetry/otlp-transformer in the agentdb observability suite. Pinning >=7.5.5 (latest 8.0.3 in registry). - tar <=7.5.10 — HIGH — Hardlink path traversal / arbitrary file write Previous override said >=7.5.0 but the CVE actually applies through 7.5.10. Tightened to >=7.5.11 (latest 7.5.13). - uuid <14.0.0 — MODERATE — Missing buffer bounds check in v3/v5/v6 when buf is provided. Pinning >=14.0.0. Same caveat as the previous overrides commit: npm overrides only apply at the install root, so these primarily protect our CI/dev environment and downstream apps that put ruflo in their root deps. Transitive CVEs through @xenova/transformers chain remain blocked on upstream. Co-Authored-By: RuFlo <ruv@ruv.net> * fix(aidefence): quick-mode PII detection + wrapper-level stats counters Two related audit findings from the May verification swarm: 1. aidefence_scan quick mode missed obvious PII (email + API key combo returned safe:true). Quick mode used defender.quickScan(input) which focuses on prompt-injection / jailbreak patterns and skips PII. Fix: layer a fast defender.hasPII(input) check on top so quick-mode covers both threat classes; surface piiDetected and promptInjectionDetected as separate fields so callers can see what triggered the verdict. 2. aidefence_stats stayed at 0 regardless of has_pii / is_safe / scan- quick calls. Those tools bypass the underlying defender's stats tracking — only the full detect() path increments stats. Fix: added wrapper-level counters (wrapperStats) tracking calls and hits/threats for each lightweight tool. aidefence_stats now returns both the underlying defender stats AND a wrapper sub-object so the user sees real activity from the lightweight paths. Bonus: aidefence_is_safe previously did `import('@claude-flow/aidefence') .isSafe(input)` which bypassed the singleton entirely. Now routes through getAIDefence() and combines the prompt-safety verdict with a PII check so a safe verdict requires BOTH (matching common defender expectations). Build clean. Co-Authored-By: RuFlo <ruv@ruv.net> * fix(cli): move [AgentDB Patch] suppression to dist/src/index.js Iteration #9 audit caught the cosmetic warning still leaking through when ruflo was invoked via the ruflo wrapper script. Root cause: the suppression patch lived only in v3/@claude-flow/cli/bin/cli.js and v3/@claude-flow/cli/bin/mcp-server.js. The ruflo wrapper bypasses both and imports dist/src/index.js directly, so console.warn/log were not patched when the cosmetic warning fired. Fix: move the same tight-match suppression into the top of src/index.ts so it runs on every entry point — bin/cli.js, bin/mcp-server.js, ruflo/bin/ruflo.js (which imports dist/src/index.js), tests, and any future entry. The bin patches remain as defense-in-depth for cases where bin/* runs before src/index.js loads. Tight match preserved: still requires BOTH "[AgentDB Patch]" AND "Controller index not found" — other [AgentDB Patch] messages flow through unchanged. Verified locally: `node ruflo/bin/ruflo.js --version` prints `ruflo v3.6.17` with no warning prefix (was emitting the warning in iteration #9 audit). Co-Authored-By: RuFlo <ruv@ruv.net> * fix(cli): extract suppression to side-effect module imported FIRST 3.6.18 smoke test caught that the [AgentDB Patch] warning still leaked through the ruflo wrapper — even after iteration #11's "move to src/index.ts" attempt. Root cause: ES module imports hoist above any top-level code in the same module, so the inline suppression block ran AFTER `import { commands } from './commands/index.js'`, by which point agentic-flow had already been loaded transitively and emitted its warning. Fix: extracted the patch into `src/log-filters.ts` as a side-effect module and imported it as the FIRST import statement in src/index.ts: import './log-filters.js'; // ← evaluated first in import graph import { readFileSync } from 'fs'; import { commands } from './commands/index.js'; ... ES module evaluation order is the source order of imports, so log-filters.js runs its side effect (patches console.warn/log) before any sibling import can transitively load agentic-flow. bin/cli.js and bin/mcp-server.js keep their inline suppression as defense-in-depth (covers cases where the bin file's own crypto/etc. imports run before src/index.js loads). Verified via ruflo wrapper: $ node ruflo/bin/ruflo.js --version ruflo v3.6.18 # no warning prefix anymore Co-Authored-By: RuFlo <ruv@ruv.net> * docs(adr-094): migration plan for @xenova → @huggingface/transformers Documents the last-remaining audit-blocked critical CVE chain (protobufjs <7.5.5 via onnxruntime-web via @xenova/transformers). Verified migration is viable: - Only 2 call sites use @xenova/transformers (both dynamic + try/catch) - 472 shared exports between xenova@2.17 and huggingface@4.2 including pipeline / env / AutoTokenizer / AutoModel - API-compatible: same pipeline('feature-extraction', model) signature Plan: introduce loadTransformersPipeline() helper that prefers @huggingface/transformers, falls back to @xenova/transformers, reports source via embeddings_status.ruvectorStatus. Validation: 1. Byte-identical 384-dim vectors for same input across both 2. HNSW round-trip cosine >0.99 3. Mixed-install scenarios (HF-only, xenova-only, neither) 4. Re-run 6-agent verification swarm 5. npm audit confirms protobufjs CVE chain drops Implementation queued for next /loop cycle. Co-Authored-By: RuFlo <ruv@ruv.net> * feat: implement ADR-094 transformers migration + ADR-095 gap tracking ADR-094 — transformers loader (try-prefer-fallback): - New v3/@claude-flow/embeddings/src/transformers-loader.ts exposes loadTransformersPipeline() that prefers @huggingface/transformers (clears protobufjs <7.5.5 critical RCE chain), falls back to legacy @xenova/transformers for backwards compat. Caches the resolved source so repeated callers don't re-import. - Updated v3/@claude-flow/embeddings/src/embedding-service.ts:387 to use the loader instead of direct @xenova import. - Updated v3/@claude-flow/cli/src/memory/memory-initializer.ts:1539 with inlined try-prefer-fallback (avoids circular optional-dep at install time). - v3/@claude-flow/embeddings/package.json: added @huggingface/transformers to optionalDependencies (^4.2.0) and peerDependenciesMeta.optional. Both packages build clean. The loader uses a string-variable specifier in dynamic import so tsc doesn't try to resolve types at compile time (both packages are runtime-optional). ADR-095 — architectural gap tracking from April audit (@roman-rr): - Documents the 7 gaps the May audit/ADR-093 honesty work didn't address: G1 agent_spawn no subprocess, G2 single-process consensus, G3 workflow runtime missing, G4 WASM echo stub, G5 transformers CVE chain (now ADR-094), G6 auto-memory graph 100MB bloat for 20 unique entries, G7 6 disabled AgentDB controllers. - Reserves ADR-096..ADR-107 numbers for the per-gap follow-up ADRs. - Explicit "tracking only — no decisions" status so gaps don't dilute through the issue tracker. Co-Authored-By: RuFlo <ruv@ruv.net> * chore: bump to 3.6.19 + @claude-flow/embeddings@3.0.0-alpha.15 Batched publish of iteration #11 (suppression-via-side-effect-module), iteration #14 (ADR-094 transformers loader: try-prefer @huggingface/transformers, fall back to @xenova). Verified in clean smoke install: - `ruflo --version` clean (no [AgentDB Patch] noise) - `memory init --force` clean - transformers-loader.js shipped in @claude-flow/embeddings dist - ADR-094 inline logic shipped in cli memory-initializer.js The protobufjs <7.5.5 CVE chain still shows in npm audit because @huggingface/transformers is an OPTIONAL dep — users opt in via `npm install @huggingface/transformers` and the loader picks it up. Once installed, the legacy chain drops and audit clears. Co-Authored-By: RuFlo <ruv@ruv.net> * fix(intelligence): G6 — content-hash dedup + hoist trigram cache ADR-095 G6: the April audit (@roman-rr) measured 5,706 entries in auto-memory-store with only ~20 unique by content; 5,686 dupes were the same MEMORY.md sections imported from sibling project dirs with different IDs. graph-state.json grew to 100MB. PageRank on a near- complete graph between near-identical duplicates returned uniform ~0.02 across all nodes — meaningless signal injected into Claude's context on every message. Two fixes: 1. New `deduplicateByContent(entries)` using FNV-1a 64-bit fingerprint on whitespace-normalized content. Run alongside deduplicateById() inside buildIndex() before constructing the graph. When duplicates collide the entry with the higher accessCount wins. Verified: 500 entries (5 unique × 100 dupes) → 5 entries (99% reduction). Matches the audit's reported scenario. 2. buildEdges trigram-cache hoist. The inner loop used to recompute `trigrams(tokenize(group[j].content))` on every i — O(n²) extra work in addition to O(n²) edges. Now compute trigrams once per entry (triCache[i]), reuse across the inner loop. Combined effect for typical workloads: 100MB graph-state → kilobytes, edge count drops from O(dupes²) to O(unique²), PageRank produces useful (non-uniform) ranks that surface real signal. Co-Authored-By: RuFlo <ruv@ruv.net> * chore: bump to 3.6.20 (G6 auto-memory dedup) * feat: add verification.md witness manifest for regression monitoring Cryptographically-witnessed proof manifest covering 18 fixes across ADR-093 F1-F12, GitHub issue fixes (#1697 #1698 #1691 #1721), ADR-094 transformers loader, and ADR-095 G6 auto-memory dedup. Each fix entry has: - file path relative to repo root - SHA-256 of that file at issuance time - expected marker substring in the file - verification flag The whole manifest is hashed (SHA-256) and signed (Ed25519). Signing key is derived deterministically from the git commit via sha256(gitCommit + ':ruflo-witness/v1') so anyone with the same commit can re-derive the public key and verify the signature without a committed private key. verification.md is the human-readable rendering with embedded JSON. verification.md.json is the canonical manifest for tooling consumption. Coverage: 18/18 verified at issuance against branch HEAD ( |
||
|
|
1e11ac84ed |
feat(ruflo-goals): dossier-investigator agent + dossier-collect skill (ADR-099) (#1726)
* feat(plugins): ruflo-goals/dossier-investigator agent + dossier-collect skill New entry-point added during the autonomous loop session — dossier investigator agent and supporting skill that traverses RuVector memory for recursive parallel research. plugins/ruflo-goals/agents/dossier-investigator.md (new) plugins/ruflo-goals/skills/dossier-collect/ (new) plugins/ruflo-goals/README.md (registry update) plugins/ruflo-goals/.claude-plugin/plugin.json (version bump) Excluded per CLAUDE.md rules: - v3/goal_ui/.env.production (NEVER commit .env) - .claude/scheduled_tasks.lock (runtime artifact) * docs: include v3/docs/examples/ on dossier branch (carried from fix/issues-may-1-3) * docs(examples): add 3 dossier examples (ruvnet, ADR-088, ruflo-goals) Real outputs from running dossier-collect skill against three seed types: - ruvnet/: username seed, GitHub gh-api fan-out + WebSearch - adr-088/: adr-id seed, Read + Glob + Grep + git-log fan-out - ruflo-goals/: concept seed, plugin tree introspection Each example ships markdown + JSON. Validates ADR-099 end-to-end. Co-Authored-By: RuFlo <ruv@ruv.net> --------- Co-authored-by: Reuven <cohen@ruv-mac-mini.local> |
||
|
|
5addd83b43 |
perf(plugins): ADR-098 Part 2 (slice 4/4) — token diet for ruflo-cost-tracker/cost-analyst
Closes Part 2 of ADR-098. Final and largest token diet — moves
the model pricing table, cost attribution formula, budget alert
ladder, optimization strategy catalog, and cost-report shape out
of the agent prompt into a sibling REFERENCE.md.
Before: 105 lines per spawn (~1260 tokens).
After: 41 lines per spawn (~490 tokens). Net savings ~770 tokens
per cost-analyst spawn — biggest single-agent win of Part 2.
Reference content lives at plugins/ruflo-cost-tracker/REFERENCE.md
(63 lines):
- Pricing table per 1M tokens for Haiku/Sonnet/Opus across
Input/Output/Cache-Write/Cache-Read
- Cost attribution formula
- 4-tier budget alert ladder
- Optimization strategies with savings ranges + quality impact
- Standard markdown cost-report shape
- Federation cost integration note (ADR-097 Phase 3 lookup)
The agent prompt keeps:
- 5-row responsibilities block
- 5 AgentDB MCP tool entries
- Memory + Neural Learning tails (Part 4 invariant)
- Related plugins list (added ruflo-federation per Part 1 sync)
Plugin version: 0.2.0 → 0.2.1 (patch — token diet only). The 0.2.0
bump came from Part 1 slice 3 (federation budget pairing).
ADR-098 Part 2 final progress (all 4 slices):
- device-coordinator: 30 ≤ 60 ✓ (was 69, slice 1)
- domain-modeler: 54 ≤ 60 ✓ (was 93, slice 2)
- adr-architect: 45 ≤ 60 ✓ (was 96, slice 3)
- cost-analyst: 41 ≤ 60 ✓ (was 105, slice 4)
Net cumulative savings across 4 agents: ~2400 tokens per spawn.
Multiplied by spawn frequency, this is the largest measurable
optimization landing in the 3.6.x cycle.
Remaining ADR-098 work: Part 5 (worker dispatch — ≥ 8 work-producing
agents fire the right background worker on completion).
|
||
|
|
85eab480e9 |
perf(plugins): ADR-098 Part 2 (slice 3/4) — token diet for ruflo-adr/adr-architect
Moves the ADR markdown template, AgentDB graph-storage recipes,
lifecycle state machine, code-ADR violation detection workflow,
and index-file format out of the agent prompt into a sibling
REFERENCE.md.
Before: 96 lines per spawn (~1150 tokens).
After: 46 lines per spawn (~550 tokens). Net savings ~600 tokens
per adr-architect spawn.
Reference content lives at plugins/ruflo-adr/REFERENCE.md (78 lines):
- Full ADR markdown template with all 5 standard sections
- Lifecycle state machine ASCII diagram + transition rules
- AgentDB hierarchical-store + causal-edge commands with
relationship vocabulary (supersedes / amends / depends-on)
- Code-ADR violation detection workflow (Grep → git blame →
ADR-status comparison)
- Common drift patterns to flag
- Index file format for docs/adr/README.md
The agent prompt keeps:
- 4-row responsibilities block
- Tools list (8 entries: agentdb / memory / Read-Write-Edit / Grep
/ Glob / Bash)
- Cross-references to ruflo-jujutsu + ruflo-docs
- Memory + Neural Learning tails (Part 4 invariant)
ADR-098 acceptance progress:
- device-coordinator: 30 ≤ 60 ✓
- domain-modeler: 54 ≤ 60 ✓
- adr-architect: 46 ≤ 60 ✓ (was 96)
- Remaining: cost-analyst (105)
Plugin version: 0.1.0 → 0.1.1 (patch — token diet only).
|
||
|
|
1e5a8ec897 |
perf(plugins): ADR-098 Part 2 (slice 2/4) — token diet for ruflo-ddd/domain-modeler
Moves DDD vocabulary, directory layout, and AgentDB graph-storage
catalogs out of the agent prompt into a sibling REFERENCE.md.
Before: 93 lines per spawn (~1115 tokens).
After: 46 lines per spawn (~550 tokens). Net savings ~565 tokens
per domain-modeler spawn.
Reference content lives at plugins/ruflo-ddd/REFERENCE.md (76 lines):
- 7-row DDD building blocks vocabulary table
- 6-row bounded-context relationships table (added — wasn't in the
original prompt; now first-class reference)
- Per-context directory structure
- AgentDB graph storage commands with 4 standard edge types
- Naming conventions (added — wasn't in prompt)
The agent prompt keeps:
- Responsibilities + 6-step scaffold workflow
- Tools list (Read/Grep/Glob + memory store/search)
- Cross-references to related plugins
- Memory pre-search + Neural Learning tail (Part 4 invariant)
Net: prompt is now narrative + procedural; reference is tabular +
catalog. Each is read in different contexts, neither pays tokens for
the other.
ADR-098 acceptance progress:
- device-coordinator: 30 ≤ 60 ✓
- domain-modeler: 46 ≤ 60 ✓ (was 93)
- Remaining: cost-analyst (105), adr-architect (96)
Plugin version: 0.1.0 → 0.1.1 (patch — token diet only).
|
||
|
|
f1bb3cf843 |
perf(plugins): ADR-098 Part 2 (slice 1/4) — token diet for iot-cognitum/device-coordinator
First slice of the token-diet pass. Moves the trust-tier table, full
tool catalog, and background worker schedule out of the agent prompt
into a sibling REFERENCE.md the agent loads on-demand.
Before: 69 lines per spawn (~830 tokens of context tax).
After: 30 lines per spawn (~360 tokens). Net savings ~470
tokens per spawn for device-coordinator.
Reference content lives at plugins/ruflo-iot-cognitum/REFERENCE.md
(63 lines):
- 5-tier trust table with score ranges and capabilities
- Full lifecycle/inspection/witness command catalog
- Background worker schedule (HealthProbe, TelemetryIngest,
AnomalyScan, MeshSync, FirmwareWatch, WitnessAudit)
- Trust-score formula breakdown showing the 6 weighted components
The agent prompt keeps:
- 5-line responsibilities block
- Trust-gate behavior + anomaly response policy
- Single-line pointer to REFERENCE.md
- Memory + Neural Learning tails (Part 4 invariant preserved)
ADR-098 acceptance-criteria progress:
- device-coordinator: 30 ≤ 60 ✓ (was 69)
- Remaining: cost-analyst (105), adr-architect (96),
domain-modeler (93)
Plugin version: 0.1.0 → 0.1.1 (patch — token diet only,
no surface change).
|
||
|
|
cf96a562c1 |
feat(plugins): ADR-098 Part 1 (slice 4/4) — G7 controllers in agentdb + knowledge-graph
Closes Part 1 of ADR-098. Documents the 5 AgentDB controllers
activated in 3.6.23+/3.6.24 (G7 from ADR-095) so end users of
ruflo-agentdb and ruflo-knowledge-graph know they're available.
ruflo-agentdb/README.md:
New "G7 controllers (activated in ruflo 3.6.23+ / 3.6.24)" section
with a 5-row table (controller / role / source). Each entry cites
the dist file inside the agentdb npm package so users can verify
the wiring locally:
gnnService — GNN embeddings + relational scoring
rvfOptimizer — quantize + dedupe vector blocks
mutationGuard — WASM proof generation for state mutations
attestationLog — hash-chained audit log (.swarm/attestation.db)
GuardedVectorBackend — wraps vectorBackend with guard + log
Notes graphAdapter still pending external graph-DB connection.
Pointers to agentdb_controllers / agentdb_health for runtime
inspection.
ruflo-knowledge-graph/README.md:
Targeted G7 section explaining which controllers help this plugin
specifically:
gnnService — augments pathfinder semantic_similarity
with structural relational scoring
rvfOptimizer — collapses near-duplicate entity vectors
(same class re-exported from multiple
modules)
mutationGuard +
attestationLog +
GuardedVectorBackend — proof-gated writes for federated knowledge
import; .swarm/attestation.db audit trail
Notes graphAdapter as a future improvement that would replace the
current flat-causal-edge view with a real graph-DB backend.
Plugin versions:
ruflo-agentdb 0.1.0 → 0.2.0 (minor — capability sync)
ruflo-knowledge-graph 0.1.0 → 0.2.0 (minor — capability sync)
ADR-098 Part 1 complete: 6 plugins now reference recent ADR
capabilities. Acceptance: each affected plugin has a paragraph or
bullet list referencing the relevant ADR — done for the 6 plugins
flagged in the Part 1 table.
Remaining ADR-098 work:
- Part 2: token diet (4 fat agent prompts → ≤ 60 lines)
- Part 5: worker dispatch (≥ 8 work-producing agents)
|
||
|
|
00a9d13b54 |
feat(plugins): ADR-098 Part 1 (slice 3/4) — cost-tracker federation pairing
Adds ADR-097 federation budget circuit breaker references to
ruflo-cost-tracker. The federation_send max_hops / max_tokens /
max_usd surface is exactly the boundary this plugin should track —
flagging it now even though the bus integration (Phase 3) is
deferred.
ruflo-cost-tracker/README.md:
New "Federation budget circuit breaker pairing (ruflo 3.6.25+)"
section with:
- Field table: maxHops (default 8), maxTokens, maxUsd, hopCount,
spent.{tokens,usd}
- Phase 1 (shipped): enforce at send side
- Phase 2 (deferred): peer state machine ACTIVE/SUSPENDED/EVICTED
with $5/24h cost threshold + 50%/1h failure ratio triggers
- Phase 3 (deferred): federation_spend event bus → per-peer
rolling windows aggregated by this plugin → breaker queries
aggregate
- Honest caveat: until Phase 3, federated spend is NOT counted
in cost-report — treat as lower bound when federation is in use
Related Plugins gains a ruflo-federation entry calling out the
ADR-097 dependency.
Plugin version: 0.1.0 → 0.2.0 (minor — capability sync).
ADR-098 Part 1 progress: 3/4 slices done. Last slice covers
ruflo-agentdb + ruflo-knowledge-graph (G7 controllers — gnnService,
rvfOptimizer, mutationGuard, attestationLog, GuardedVectorBackend).
|
||
|
|
6130f4061c |
feat(plugins): ADR-098 Part 1 (slice 2/4) — encryption-at-rest notes for memory plugins
Adds ADR-096 references to ruflo-rag-memory and ruflo-rvf — the two
plugins whose write surfaces (.swarm/memory.db and
.claude-flow/sessions/*.json) are now opt-in encrypted at rest.
ruflo-rag-memory/README.md:
New "Encryption at rest (ruflo 3.6.25+)" section before "Memory
Namespaces". Covers:
- Each .swarm/memory.db write encrypted with fresh 12-byte IV via
writeFileRestricted({encrypt:true})
- Reads use readFileMaybeEncrypted(path, null) — RFE1 magic-byte
sniff for backward compat (legacy plaintext memory.db still works)
- Embeddings encrypted along with the SQLite blob — no separate
column-level encryption needed for Phase 1
- Tamper detection: flipped byte fails GCM auth, throws on read
- ruflo doctor -c encryption reports gate state
ruflo-rvf/README.md:
New section between Features and Commands explaining session
persistence's relationship to the encryption gate:
- Off-by-default: plaintext JSON at mode 0600 (legacy behavior)
- On: AES-256-GCM session saves, transparent decrypt on restore
- Important caveat: when exporting RVF files for cross-machine
transfer, the gate doesn't apply to the exported bytes — that's
transport security, separate from at-rest. Sealed-box backups
are the next phase per ADR-096.
Plugin versions:
ruflo-rag-memory 0.1.0 → 0.2.0 (minor — capability sync)
ruflo-rvf 0.1.0 → 0.2.0 (minor — capability sync)
ADR-098 Part 1 progress: 2/4 slices done. Remaining:
- slice 3: ruflo-cost-tracker — federation budget breaker pairing,
federation_spend events
- slice 4: ruflo-agentdb + ruflo-knowledge-graph — G7 controllers
|
||
|
|
6a40574745 |
feat(plugins): ADR-098 Part 1 (slice 1/3) — capability sync for security plugins
Adds ADR-095/096 + audit_1776853149979 references to ruflo-aidefence
and ruflo-security-audit. End users installing either plugin now see
the host hardening features that pair with the plugin's threat
detection / scanning, not just the plugin's own surface.
ruflo-aidefence/README.md:
New "Defense-in-depth pairing (ruflo 3.6.25+)" section listing:
- validateEnv() loader-hijack denylist (LD_PRELOAD, NODE_OPTIONS,
DYLD_*, etc.) at the terminal_create MCP boundary
- File mode 0600 / dir mode 0700 on session/terminal/memory stores
via fs-secure
- Encryption at rest (CLAUDE_FLOW_ENCRYPT_AT_REST=1, AES-256-GCM,
RFE1 magic-byte sniff)
Threat scoring should account for whether the host is a denylist-
enforcing / encrypted-at-rest install.
ruflo-security-audit/README.md:
New "Patterns to scan for (audit_1776853149979 follow-up)" section
with six concrete antipatterns + remediation pointers:
- execSync(string) with template-literal args (4 closed sites cited)
- Numeric MCP inputs cast as `number` without runtime check
- Untrusted package specs flowing into npm install
- Loader-hijack env vars
- Plaintext at-rest secrets paired with ADR-096
- MCP stdin DoS (10MB cap reference)
Plus a `ruflo verify` reference confirming 55 witnesses on disk.
Plugin versions:
ruflo-aidefence 0.1.0 → 0.2.0 (minor — capability sync)
ruflo-security-audit 0.1.1 → 0.2.0 (minor — capability sync,
was patch from iter #55 model
fix)
Two more slices remain for Part 1:
- slice 2: ruflo-rag-memory + ruflo-rvf — encryption-at-rest gate
notes
- slice 3: ruflo-cost-tracker — federation budget breaker pairing,
federation_spend events
- slice 4: ruflo-agentdb + ruflo-knowledge-graph — G7 controllers
|
||
|
|
29542ce6d3 |
feat(plugins): ADR-098 Part 3 — security-auditor opus → sonnet
Drops the security-auditor agent from model:opus to model:sonnet. Bounded-scope security review (CVE check, dependency audit, input- validation review, secret scan, severity-ranked report) is sonnet- tier work in practice — opus's long-context advantage isn't load- bearing for the audit pattern this agent runs. Cost delta: ~5x cheaper per token for the model call. Quality delta expected to be small; documenting the override path so users can flip back to opus when the audit truly needs deep cross-file taint tracing or architectural reasoning. Added a one-line note in the agent prompt explaining the trade-off and when to override, so the cost-vs-quality decision is visible to users rather than buried in an ADR. Plugin version: 0.1.0 → 0.1.1 (patch — model rightsizing only, no surface change). Re-audit: 2 of 43 plugin agents on model:opus, both justified — federation-coordinator (multi-phase trust + audit-grade logging) and neural-trader/trading-strategist (real-money trading decisions). Down from 3 of 43. ADR-098 acceptance-criteria item closed: "ruflo-security-audit/ security-auditor.md is on model: sonnet." Trial period: monitor security-audit output quality across one release cycle. Revert to opus if regression detected. Parts 1 (capability sync), 2 (token diet), and 5 (worker dispatch) remain. |
||
|
|
2e5c90c902 |
feat(plugins): ADR-098 Part 4 — standardize neural-learning hook
Closes the 16% gap (7 of 43 plugin agents) flagged by the ADR-098
audit: agents that completed tasks without feeding the SONA learning
loop, costing the system long-term improvement signal.
Each affected agent gets the canonical 5-line tail:
### Neural Learning
After completing tasks, feed the <role-specific-context>:
```bash
npx @claude-flow/cli@latest hooks post-task --task-id "TASK_ID" --success true --train-neural true
```
The "<role-specific-context>" is per-agent so the tail reads native
rather than copy-pasted:
ruflo-daa/daa-specialist adaptive-agent learning loop
ruflo-goals/goal-planner planner trajectory store
ruflo-intelligence/intelligence-spec pattern-discovery learning loop
(next RETRIEVE benefits from this run)
ruflo-iot-cognitum/telemetry-analyz telemetry baseline learning
(Z-score thresholds adapt)
ruflo-ruvllm/llm-specialist router outcome learning
(provider/model picks compound)
ruflo-sparc/sparc-orchestrator phase-quality learning loop
(quality gates self-tune)
ruflo-swarm/coordinator coordination outcome learning
(topology + role choices compound)
Re-audit confirms 0 of 43 plugin agents missing the hook (was 7 of 43).
ADR-098 acceptance-criteria item closed: "All 43 plugin agents include
a `hooks post-task --train-neural true` invocation."
Parts 1 (capability sync), 2 (token diet), 3 (model rightsizing), and
5 (worker dispatch) remain as separate iterations.
|
||
|
|
149ea30a45 |
docs(plugin): update ruflo-federation Claude Code plugin for ADR-097
Mirrors the federation_send budget envelope work that landed in
|
||
|
|
1976c57ccd |
fix(federation): publish @claude-flow/plugin-agent-federation@1.0.0-alpha.3 with ruflo-federation bin (#1685)
Same class of bug as iot-cognitum: source existed (325 tests passing) but
unpublished, and ruflo-federation marketplace plugin's skills called
`npx @claude-flow/cli@latest federation <subcmd>` — federation isn't a
CLI subcommand. End result: every federation skill failed.
Plugin source (v3/@claude-flow/plugin-agent-federation):
- New src/bin.ts: standalone CLI shim that bootstraps AgentFederationPlugin
in-memory, parses argv, resolves multi-word commands (federation peers
add, federation peers remove, etc.), aliases short flags, dispatches to
CLICommandDefinition handlers. Loads .env for FEDERATION_NODE_NAME,
FEDERATION_BIND_HOST, FEDERATION_BIND_PORT, FEDERATION_TRUST_LEVEL.
- package.json: add bin {ruflo-federation: dist/bin.js}, files whitelist,
homepage. Move workspace deps to devDependencies (all imports are
`import type`, erased at compile — zero runtime workspace dep).
- New README.md with subcommand reference and .env config.
Marketplace plugin (plugins/ruflo-federation):
- Bulk-rewrote 5 files (3 skills + commands/federation.md +
agents/federation-coordinator.md): now call
`npx -y -p @claude-flow/plugin-agent-federation@latest ruflo-federation <subcmd>`
Other minor fix:
- plugins/ruflo-swarm/README.md: pin `npx @claude-flow/cli swarm` →
`npx @claude-flow/cli@latest swarm` for consistency with the other 31 plugins.
Audit result post-fix: 32/32 plugins use working invocation patterns.
- 12 verbs against @claude-flow/cli@latest (all exist: memory, hooks,
security, neural, swarm, doctor, init, embeddings, status, daemon,
config, plus session)
- @claude-flow/plugin-iot-cognitum (alpha.5 published)
- @claude-flow/plugin-agent-federation (alpha.3 published — this PR)
- neural-trader (2.7.1 on npm)
- ruvector (0.2.25 on npm)
Smoke test: `npx -y -p @claude-flow/plugin-agent-federation@latest
ruflo-federation status` returns Node ID + session count + healthy flag.
Caveat: the 11 plugins that depend on mcp__claude-flow__* MCP tools
(adr, aidefence, autopilot, browser, daa, goals, plugin-creator, ruvllm,
sparc, wasm, workflows) require the MCP server to be connected — not
audited here.
Co-authored-by: Reuven <cohen@ruv-mac-mini.local>
|
||
|
|
0575962559 |
feat(iot): full-coverage smoke + iot query/ingest fixes; link to cognitum.one (1.0.0-alpha.4) (#1683)
Drove the live-Seed smoke harness from 11/24 to 24/25 covered, then 21/25
passing on link-local HTTP (the remaining 4 are real Seed security
boundaries, not plugin bugs).
Plugin source fixes (cli-commands.ts):
- iot query: handler now accepts --vector "[..]" JSON arg and parses to
number[] (was: passed empty array; result was always nearest-neighbour
to origin)
- iot ingest: handler now accepts --vector "[..]" --metadata "{..}" OR a
JSON array on stdin (was: stub that always passed []; the SDK rejected
empty arrays). Uses the SDK's expected {values, metadata} shape.
- New parseVector helper validates JSON array of numbers.
Smoke harness (__tests__/integration/full-plugin-smoke.mjs):
- Rewrote to 25 commands across 7 tiers (init/lifecycle, read-only,
vector ops, pair round-trip, fleet ops, firmware reads, deregister).
- Pair flow opens pair window via direct API call first (the plugin
doesn't expose pair-window control yet — known gap).
- Bearer-required failures (unpair, ingest write) classified as expected
on link-local; firmware deploy/advance/rollback explicitly skipped
(OTA-can-brick).
- Pass-through dArgs() helper handles cli-commands.ts arg-style
inconsistency (some handlers read args._[0], others args['device-id']).
Cognitum.one mention (per user request):
- v3/@claude-flow/plugin-iot-cognitum/package.json: description now
includes "Get a Seed at https://cognitum.one"; added homepage field.
- New README.md for the npm package — full command reference with
cognitum.one link prominent at the top.
- plugins/ruflo-iot-cognitum/README.md: "Hardware" section added with
cognitum.one link and link-local + LAN endpoint reference.
Bump to 1.0.0-alpha.4. Published to npm (alpha + latest).
Known gaps for follow-up (not blockers, real Seed limits):
- ingest/unpair require bearer auth via https://...:8443 — plugin doesn't
support the bearer transport yet
- pair window opening isn't exposed as a CLI command
- iot pair triggers Seed rate-limiter (HTTP 429) when called repeatedly
- SDK's witness.chain() returns 0 length while raw API shows 49,138
entries — different endpoint shape
Co-authored-by: Reuven <cohen@ruv-mac-mini.local>
|