full-system-test surfaced 23/32 plugin smoke contracts failing on a
single drifted assertion: the smoke gate greps ADR-0001 for
`status: Proposed`, but those ADRs were long since promoted to
`Accepted` without updating the gate. Flip the assertion (label, grep,
message) Proposed -> Accepted only where the ADR is genuinely Accepted.
ruflo-core additionally had a stale version assertion (0.2.0 -> 0.2.2).
Left untouched: ruflo-adr, ruflo-browser, ruflo-intelligence — their
ADR-0001 is genuinely Proposed, so their smokes correctly assert it.
No plugin source or ADR changed — only the drifted test assertions.
All 32 plugin smoke contracts now pass; full-system-test is 4/4 green.
Co-Authored-By: RuFlo <ruv@ruv.net>
Three coupled fixes for ruvnet/ruflo#2049:
1. `kg-extract/SKILL.md` step 3 now declares a separate `type-depends-on`
relation (weight 0.1) for TypeScript `import type` and inline
`import { type Foo, value }` specifiers. Includes the regex carve-out
pattern so future agents implementing the skill correctly classify
the three import shapes. Previously the skill said "follow
import/require statements" with no carve-out, and a naive grep
produced phantom runtime cycles (a 51-service codebase reported a
non-existent `findings ⇄ finding-actions` cycle driven entirely by
a one-way `import type { Finding }` edge).
2. `kg-traverse/SKILL.md` step 3 now calls `agentdb_pattern-search`
(enabled in current AgentDB builds) instead of
`agentdb_semantic-route` (`enabled: false` — controller is
compiled out, returns "SemanticRouter not available in current
agentdb build"). Both skills' `allowed-tools` lines updated to
drop the disabled controller.
3. New CI smoke at `scripts/smoke-kg-extract-type-imports.mjs` +
new workflow job `kg-extract type-import classification smoke (#2049)`
in `.github/workflows/v3-ci.yml`. Two layers:
- Static contract check on both SKILL.md files — asserts
`type-depends-on` relation is declared, weight ≤ 0.1, regex
carve-out is present, and no skill lists the disabled
`agentdb_semantic-route` in allowed-tools.
- Behavioural fixture test: writes a tiny TS scenario with one
type-only cycle + one value-import edge to /tmp, runs the
documented regex classifier, and asserts the cycle is NOT counted
as a value edge. If a future PR softens any of these contracts,
the smoke catches it before merge.
Path filters in v3-ci.yml expanded to include
`plugins/ruflo-knowledge-graph/**` + the new smoke script so the job
fires on every relevant edit.
Plus `.github/supply-chain/follow-ups.md` documents:
- #2047 (witness drift HIGH) — upstream scheduled-runner fix needed +
the interim CI guards already in place.
- #2048 (agentic-flow Windows onnxruntime binding) — needs the same
shape of upstream patch as ADR-124 shipped for @xenova/transformers
in agentic-flow 2.0.12; documented workaround for users and the
CI guard to add post-patch.
Smoke verified locally: 9/9 checks pass.
Co-Authored-By: RuFlo <ruv@ruv.net>
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>
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)