mirror of
https://github.com/proffesor-for-testing/agentic-qe.git
synced 2026-09-19 08:45:47 +08:00
e154b6bf40
GOAP Implementation - 8/8 Actions Complete: 1. ML Observability Layer - Track ML vs fallback usage 2. PersistentQLearningRouter - Q-values persist across sessions with EWC++ 3. PersistentSONAEngine - SONA patterns persist across sessions 4. Remove Silent Fallbacks - All fallbacks now observable 5. Hypergraph Schema - SQLite-backed code graph storage 6. HypergraphEngine - Query engine for code intelligence 7. Coordinator Integration - All 7 domain coordinators + provider use persistent engines 8. RuVector Server Client - Stubbed with supportsVectorOperations() guard Key Changes: - All domain coordinators migrated to PersistentSONAEngine - DefaultRuVectorClient uses PersistentQLearningRouter - RuVectorServiceProvider.getGlobalSONA() now async with persistence - HypergraphEngine integrated in code-intelligence coordinator - 491+ tests passing, TypeScript clean README Updates: - Performance table updated with verified claims only - Removed unverified speedup claims - Added persistent learning features (EWC++, Q-value persistence) New Files: - persistent-q-router.ts - Q-Learning with SQLite persistence - sona-persistence.ts - SONA with pattern persistence - hypergraph-schema.ts - Graph node/edge schema - hypergraph-engine.ts - Code intelligence queries - server-client.ts - RuVector server integration - shared-memory.ts - Fleet shared memory - observability.ts - ML usage tracking Documentation: - ADR-050: RuVector Neural Backbone specification - BRUTAL-HONESTY-GOAP-REVIEW.md - Integration verification - Migrated ADRs to standardized MADR format Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
872 lines
30 KiB
Markdown
872 lines
30 KiB
Markdown
# GOAP Implementation Plan: RuVector as Neural Backbone
|
|
|
|
**Date:** 2026-01-20
|
|
**Status:** Draft
|
|
**Owner:** GOAP Specialist
|
|
**Input:** Six Thinking Hats Analysis (SIX-HATS-AQE-V3-RUVECTOR-ANALYSIS.md)
|
|
|
|
---
|
|
|
|
## Executive Summary
|
|
|
|
This GOAP (Goal-Oriented Action Planning) plan transforms AQE v3's ruvector integration from an "optional enhancement" to the **primary neural backbone**. The plan addresses three critical gaps identified in the Six Hats analysis:
|
|
|
|
1. **Fallback Overuse**: ML capabilities underutilized due to defensive fallback patterns
|
|
2. **No Persistent Learning**: Q-Learning state lost between sessions
|
|
3. **Code Intelligence Gap**: Hypergraph capabilities not leveraged for semantic code understanding
|
|
|
|
---
|
|
|
|
## 1. World State Analysis (Current State)
|
|
|
|
### 1.1 RuVector Integration Status
|
|
|
|
| Component | Current State | Issue |
|
|
|-----------|---------------|-------|
|
|
| `RuVectorQLearningRouter` | Integrated with fallback | Falls back silently, no metrics |
|
|
| `QESONA` | Integrated, in-memory only | Patterns lost on restart |
|
|
| `QEGNNEmbeddingIndex` | Used for code similarity | Not connected to hypergraph |
|
|
| `QValueStore` | SQLite persistence exists | Not wired to Q-Learning router |
|
|
| `@ruvector/graph-node` | Not installed | Cypher queries unavailable |
|
|
|
|
### 1.2 Fallback Pattern Analysis
|
|
|
|
```
|
|
Current Flow:
|
|
┌──────────────────┐
|
|
│ Task Request │
|
|
└────────┬─────────┘
|
|
│
|
|
▼
|
|
┌──────────────────┐ ┌──────────────────┐
|
|
│ RuVector Router │────▶│ Fallback Router │
|
|
│ (throws error?) │ │ (always works) │
|
|
└──────────────────┘ └────────┬─────────┘
|
|
│
|
|
▼
|
|
┌──────────────────┐
|
|
│ Result (no flag) │
|
|
└──────────────────┘
|
|
|
|
Problem: Users never know if ML is being used
|
|
```
|
|
|
|
### 1.3 Persistence Gap
|
|
|
|
| Data Type | Current Storage | Persistence | Cross-Session |
|
|
|-----------|-----------------|-------------|---------------|
|
|
| Q-Values | In-memory Map | NO | NO |
|
|
| SONA Patterns | QESONAPatternRegistry | NO | NO |
|
|
| Code Embeddings | QEGNNEmbeddingIndex | NO | NO |
|
|
| Routing History | None | NO | NO |
|
|
|
|
### 1.4 Code Intelligence Architecture
|
|
|
|
```
|
|
Current (Isolated):
|
|
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
|
|
│ Knowledge │ │ Semantic │ │ Impact │
|
|
│ Graph │ │ Analyzer │ │ Analyzer │
|
|
│ (in-memory) │ │ (in-memory) │ │ (in-memory) │
|
|
└─────────────┘ └─────────────┘ └─────────────┘
|
|
↓ ↓ ↓
|
|
No shared query language, no cross-linking
|
|
```
|
|
|
|
---
|
|
|
|
## 2. Goal State Definition (Target State)
|
|
|
|
### 2.1 ML-First Architecture
|
|
|
|
```
|
|
Target Flow:
|
|
┌──────────────────┐
|
|
│ Task Request │
|
|
└────────┬─────────┘
|
|
│
|
|
▼
|
|
┌──────────────────┐
|
|
│ RuVector Router │─────┐
|
|
│ (PRIMARY) │ │
|
|
└────────┬─────────┘ │
|
|
│ │ on ERROR ONLY
|
|
▼ ▼
|
|
┌──────────────────┐ ┌──────────────────┐
|
|
│ ML Result + Flag │ │ Fallback + ALERT │
|
|
│ usedML: true │ │ usedML: false │
|
|
└──────────────────┘ │ alertSent: true │
|
|
└──────────────────┘
|
|
```
|
|
|
|
### 2.2 Unified Persistence Layer
|
|
|
|
```
|
|
Target Storage:
|
|
┌─────────────────────────────────────────────────────┐
|
|
│ .agentic-qe/memory.db │
|
|
├─────────────────────────────────────────────────────┤
|
|
│ rl_q_values (existing) ───────────────────────────┐ │
|
|
│ sona_patterns (new) ──────────────────────────────┤ │
|
|
│ code_embeddings (new) ────────────────────────────┤ │
|
|
│ routing_history (new) ────────────────────────────┤ │
|
|
│ hypergraph_nodes (new) ───────────────────────────┤ │
|
|
│ hypergraph_edges (new) ───────────────────────────┘ │
|
|
└─────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
### 2.3 Hypergraph Code Intelligence
|
|
|
|
```
|
|
Target Architecture:
|
|
┌─────────────────────────────────────────────────────┐
|
|
│ Unified Code Hypergraph │
|
|
│ │
|
|
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
|
|
│ │ Function │───▶│ Module │───▶│ Test │ │
|
|
│ │ Node │ │ Node │ │ Node │ │
|
|
│ └──────────┘ └──────────┘ └──────────┘ │
|
|
│ │ │ │ │
|
|
│ ▼ ▼ ▼ │
|
|
│ ┌──────────────────────────────────────────────┐ │
|
|
│ │ Cypher Query Interface │ │
|
|
│ │ MATCH (f:Function)-[:TESTED_BY]->(t:Test) │ │
|
|
│ │ WHERE NOT EXISTS((f)<-[:COVERS]-()) │ │
|
|
│ │ RETURN f.name, f.complexity │ │
|
|
│ └──────────────────────────────────────────────┘ │
|
|
└─────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
### 2.4 Success Metrics
|
|
|
|
| Metric | Current | Target | Measurement |
|
|
|--------|---------|--------|-------------|
|
|
| ML Usage Rate | Unknown | >80% | `usedML: true` count / total |
|
|
| Pattern Retention | 0% | 100% | Patterns available after restart |
|
|
| Q-Value Persistence | 0% | 100% | Q-values restored from DB |
|
|
| Cross-Agent Learning | None | Real-time | Shared vector store queries/sec |
|
|
| Fallback Alert Rate | 0% | 100% of fallbacks | Alerts sent when fallback used |
|
|
|
|
---
|
|
|
|
## 3. Action Sequence (GOAP Actions)
|
|
|
|
### 3.1 Action Definitions
|
|
|
|
Each action has:
|
|
- **Preconditions**: What must be true before execution
|
|
- **Effects**: What becomes true after execution
|
|
- **Cost**: Estimated effort (1-10)
|
|
- **Priority**: P0 (critical) to P3 (nice-to-have)
|
|
|
|
---
|
|
|
|
### Action 1: Implement ML Observability Layer
|
|
|
|
**Priority:** P0 (Critical)
|
|
**Cost:** 2
|
|
**Estimated Time:** 4 hours
|
|
|
|
**Preconditions:**
|
|
- [x] RuVector wrappers exist (`v3/src/integrations/ruvector/`)
|
|
- [x] Fallback implementations exist (`fallback.ts`)
|
|
|
|
**Effects:**
|
|
- [ ] All ruvector calls emit metrics
|
|
- [ ] `usedML` flag on every routing result
|
|
- [ ] Alert system for fallback usage
|
|
|
|
**Implementation:**
|
|
|
|
```typescript
|
|
// File: v3/src/integrations/ruvector/observability.ts
|
|
export interface MLObservabilityMetrics {
|
|
mlUsed: number;
|
|
fallbackUsed: number;
|
|
mlLatencyMs: number[];
|
|
fallbackReasons: Map<string, number>;
|
|
}
|
|
|
|
export class RuVectorObservability {
|
|
private metrics: MLObservabilityMetrics;
|
|
private alertThreshold = 0.2; // Alert if ML usage drops below 20%
|
|
|
|
recordMLUsage(component: string, used: boolean, latencyMs?: number): void;
|
|
recordFallback(component: string, reason: string): void;
|
|
checkAndAlert(): void; // Emit alert if fallback rate too high
|
|
getReport(): MLObservabilityReport;
|
|
}
|
|
```
|
|
|
|
**Agent Assignment:** qe-learning-coordinator
|
|
|
|
---
|
|
|
|
### Action 2: Wire Q-Learning to Persistence
|
|
|
|
**Priority:** P0 (Critical)
|
|
**Cost:** 4
|
|
**Estimated Time:** 8 hours
|
|
|
|
**Preconditions:**
|
|
- [x] QValueStore exists with SQLite backend
|
|
- [x] UnifiedPersistenceManager available
|
|
- [x] Q-Learning router exists
|
|
|
|
**Effects:**
|
|
- [ ] Q-values persist to `memory.db`
|
|
- [ ] Q-values restored on router initialization
|
|
- [ ] EWC++ prevents catastrophic forgetting
|
|
|
|
**Implementation:**
|
|
|
|
```typescript
|
|
// File: v3/src/integrations/ruvector/persistent-q-router.ts
|
|
export class PersistentQLearningRouter implements QLearningRouter {
|
|
private store: QValueStore;
|
|
private ewcConfig: EWCConfig;
|
|
|
|
constructor(config: PersistentQLearningConfig) {
|
|
this.store = createQValueStore();
|
|
this.ewcConfig = {
|
|
lambda: 1000.0, // EWC regularization strength
|
|
consolidationInterval: 3600000, // 1 hour
|
|
fisherSampleSize: 100,
|
|
};
|
|
}
|
|
|
|
async initialize(): Promise<void> {
|
|
await this.store.initialize();
|
|
await this.loadQValues(); // Restore from DB
|
|
}
|
|
|
|
async routeTask(task: TestTask): Promise<AgentRoutingResult> {
|
|
// Use ML routing
|
|
const result = await this.mlRoute(task);
|
|
// Persist Q-value update
|
|
await this.store.setQValue(agentId, stateKey, actionKey, qValue);
|
|
return result;
|
|
}
|
|
|
|
private async consolidateWithEWC(): Promise<void> {
|
|
// Apply EWC++ to prevent forgetting old patterns
|
|
}
|
|
}
|
|
```
|
|
|
|
**Agent Assignment:** qe-pattern-learner
|
|
|
|
---
|
|
|
|
### Action 3: SONA Pattern Persistence
|
|
|
|
**Priority:** P0 (Critical)
|
|
**Cost:** 4
|
|
**Estimated Time:** 6 hours
|
|
|
|
**Preconditions:**
|
|
- [x] QESONA wrapper exists
|
|
- [x] UnifiedPersistenceManager available
|
|
- [ ] Action 2 complete (shared persistence model)
|
|
|
|
**Effects:**
|
|
- [ ] SONA patterns persist to `memory.db`
|
|
- [ ] Patterns restored on SONA initialization
|
|
- [ ] Cross-agent pattern sharing via DB
|
|
|
|
**Implementation:**
|
|
|
|
```typescript
|
|
// File: v3/src/integrations/ruvector/sona-persistence.ts
|
|
export class PersistentSONAEngine extends QESONA {
|
|
private persistence: UnifiedPersistenceManager;
|
|
|
|
async initialize(): Promise<void> {
|
|
await super.initialize();
|
|
await this.restorePatterns();
|
|
}
|
|
|
|
async storePattern(pattern: QESONAPattern): Promise<void> {
|
|
super.storePattern(pattern);
|
|
await this.persistPattern(pattern); // Also save to DB
|
|
}
|
|
|
|
private async persistPattern(pattern: QESONAPattern): Promise<void> {
|
|
const db = this.persistence.getDatabase();
|
|
db.prepare(`
|
|
INSERT INTO sona_patterns (id, type, domain, embedding, confidence, created_at)
|
|
VALUES (?, ?, ?, ?, ?, datetime('now'))
|
|
`).run(pattern.id, pattern.type, pattern.domain,
|
|
JSON.stringify(pattern.stateEmbedding), pattern.confidence);
|
|
}
|
|
|
|
private async restorePatterns(): Promise<void> {
|
|
const patterns = this.persistence.getDatabase().prepare(`
|
|
SELECT * FROM sona_patterns ORDER BY confidence DESC LIMIT 10000
|
|
`).all();
|
|
for (const p of patterns) {
|
|
super.importPatterns([this.deserializePattern(p)]);
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
**Agent Assignment:** qe-pattern-learner
|
|
|
|
---
|
|
|
|
### Action 4: Remove Silent Fallbacks
|
|
|
|
**Priority:** P1 (High)
|
|
**Cost:** 6
|
|
**Estimated Time:** 12 hours
|
|
|
|
**Preconditions:**
|
|
- [ ] Action 1 complete (observability layer)
|
|
- [x] All fallback classes exist in `fallback.ts`
|
|
|
|
**Effects:**
|
|
- [ ] Fallbacks only used on explicit error
|
|
- [ ] All fallback usage logged and alerted
|
|
- [ ] No more silent degradation
|
|
|
|
**Implementation:**
|
|
|
|
```typescript
|
|
// File: v3/src/integrations/ruvector/provider.ts (modified)
|
|
export function createQLearningRouter(config?: QLearningConfig): QLearningRouter {
|
|
const observability = getRuVectorObservability();
|
|
|
|
// TRY ML FIRST - no preemptive fallback
|
|
try {
|
|
const router = new RuVectorQLearningRouter(config);
|
|
await router.initialize(); // Will throw if ruvector unavailable
|
|
observability.recordMLUsage('q-learning', true);
|
|
return router;
|
|
} catch (error) {
|
|
// ONLY fall back on actual error
|
|
observability.recordFallback('q-learning', error.message);
|
|
observability.alert({
|
|
component: 'q-learning',
|
|
reason: error.message,
|
|
recommendation: 'Install/fix ruvector to enable ML routing',
|
|
});
|
|
return new FallbackQLearningRouter(); // Still works, but user knows
|
|
}
|
|
}
|
|
```
|
|
|
|
**Files to Modify:**
|
|
- `v3/src/integrations/ruvector/provider.ts`
|
|
- All domain coordinators that create ruvector components
|
|
|
|
**Agent Assignment:** qe-test-architect, qe-coverage-specialist
|
|
|
|
---
|
|
|
|
### Action 5: Add Hypergraph Schema
|
|
|
|
**Priority:** P1 (High)
|
|
**Cost:** 3
|
|
**Estimated Time:** 4 hours
|
|
|
|
**Preconditions:**
|
|
- [x] UnifiedPersistenceManager available
|
|
- [x] SQLite schema management in place
|
|
|
|
**Effects:**
|
|
- [ ] Hypergraph tables created in `memory.db`
|
|
- [ ] Support for nodes, edges, properties
|
|
|
|
**Implementation:**
|
|
|
|
```sql
|
|
-- Migration: 20260120_add_hypergraph_tables.sql
|
|
|
|
-- Hypergraph nodes (functions, modules, tests, etc.)
|
|
CREATE TABLE IF NOT EXISTS hypergraph_nodes (
|
|
id TEXT PRIMARY KEY,
|
|
type TEXT NOT NULL, -- 'function', 'module', 'test', 'file', 'class'
|
|
name TEXT NOT NULL,
|
|
file_path TEXT,
|
|
line_start INTEGER,
|
|
line_end INTEGER,
|
|
complexity REAL,
|
|
coverage REAL,
|
|
metadata TEXT, -- JSON
|
|
embedding BLOB, -- Vector embedding for similarity
|
|
created_at TEXT DEFAULT (datetime('now')),
|
|
updated_at TEXT DEFAULT (datetime('now'))
|
|
);
|
|
|
|
-- Hypergraph edges (relationships)
|
|
CREATE TABLE IF NOT EXISTS hypergraph_edges (
|
|
id TEXT PRIMARY KEY,
|
|
source_id TEXT NOT NULL REFERENCES hypergraph_nodes(id),
|
|
target_id TEXT NOT NULL REFERENCES hypergraph_nodes(id),
|
|
type TEXT NOT NULL, -- 'calls', 'imports', 'tests', 'depends_on'
|
|
weight REAL DEFAULT 1.0,
|
|
properties TEXT, -- JSON
|
|
created_at TEXT DEFAULT (datetime('now')),
|
|
UNIQUE(source_id, target_id, type)
|
|
);
|
|
|
|
-- Indexes for fast traversal
|
|
CREATE INDEX IF NOT EXISTS idx_hypergraph_nodes_type ON hypergraph_nodes(type);
|
|
CREATE INDEX IF NOT EXISTS idx_hypergraph_nodes_file ON hypergraph_nodes(file_path);
|
|
CREATE INDEX IF NOT EXISTS idx_hypergraph_edges_source ON hypergraph_edges(source_id);
|
|
CREATE INDEX IF NOT EXISTS idx_hypergraph_edges_target ON hypergraph_edges(target_id);
|
|
CREATE INDEX IF NOT EXISTS idx_hypergraph_edges_type ON hypergraph_edges(type);
|
|
```
|
|
|
|
**Agent Assignment:** qe-kg-builder
|
|
|
|
---
|
|
|
|
### Action 6: Implement Hypergraph Query Engine
|
|
|
|
**Priority:** P2 (Medium)
|
|
**Cost:** 8
|
|
**Estimated Time:** 16 hours
|
|
|
|
**Preconditions:**
|
|
- [ ] Action 5 complete (schema exists)
|
|
- [x] KnowledgeGraphService exists
|
|
|
|
**Effects:**
|
|
- [ ] Cypher-like query interface available
|
|
- [ ] Pattern matching for code relationships
|
|
- [ ] Integration with existing KnowledgeGraphService
|
|
|
|
**Recommendation:** This is an **UPGRADE** to existing code intelligence, not a replacement.
|
|
|
|
The current `KnowledgeGraphService` in `v3/src/domains/code-intelligence/services/knowledge-graph.ts` uses an in-memory graph structure. The hypergraph should:
|
|
1. Persist the graph to SQLite
|
|
2. Add Cypher-like query capabilities
|
|
3. Integrate with GNN embeddings for semantic search
|
|
|
|
**Implementation:**
|
|
|
|
```typescript
|
|
// File: v3/src/integrations/ruvector/hypergraph-engine.ts
|
|
export class HypergraphEngine {
|
|
private persistence: UnifiedPersistenceManager;
|
|
private gnnIndex: QEGNNEmbeddingIndex;
|
|
|
|
/**
|
|
* Execute a Cypher-like query
|
|
* Simplified syntax for QE use cases
|
|
*/
|
|
async query(cypher: string): Promise<HypergraphResult> {
|
|
// Parse and execute Cypher-like queries
|
|
// Example: MATCH (f:Function)-[:TESTED_BY]->(t:Test) RETURN f, t
|
|
}
|
|
|
|
/**
|
|
* Find functions not covered by tests
|
|
*/
|
|
async findUntestedFunctions(): Promise<HypergraphNode[]> {
|
|
return this.query(`
|
|
MATCH (f:Function)
|
|
WHERE NOT (f)<-[:COVERS]-(:Test)
|
|
RETURN f ORDER BY f.complexity DESC
|
|
`);
|
|
}
|
|
|
|
/**
|
|
* Impact analysis: what tests cover changed functions?
|
|
*/
|
|
async findImpactedTests(changedFiles: string[]): Promise<HypergraphNode[]> {
|
|
return this.query(`
|
|
MATCH (f:Function)-[:DEFINED_IN]->(file:File)
|
|
WHERE file.path IN $changedFiles
|
|
MATCH (t:Test)-[:COVERS]->(f)
|
|
RETURN DISTINCT t
|
|
`, { changedFiles });
|
|
}
|
|
|
|
/**
|
|
* Build graph from indexed code
|
|
*/
|
|
async buildFromIndex(indexResult: IndexResult): Promise<void> {
|
|
// Create nodes for each indexed entity
|
|
// Create edges for relationships
|
|
// Generate embeddings for semantic search
|
|
}
|
|
}
|
|
```
|
|
|
|
**Agent Assignment:** qe-kg-builder, qe-coverage-specialist
|
|
|
|
---
|
|
|
|
### Action 7: Integrate Hypergraph with Code Intelligence
|
|
|
|
**Priority:** P2 (Medium)
|
|
**Cost:** 5
|
|
**Estimated Time:** 10 hours
|
|
|
|
**Preconditions:**
|
|
- [ ] Action 6 complete (query engine)
|
|
- [x] CodeIntelligenceCoordinator exists
|
|
|
|
**Effects:**
|
|
- [ ] Impact analysis uses hypergraph queries
|
|
- [ ] Coverage gaps identified via graph traversal
|
|
- [ ] Test prioritization based on code relationships
|
|
|
|
**Implementation:**
|
|
|
|
```typescript
|
|
// File: v3/src/domains/code-intelligence/coordinator.ts (modified)
|
|
export class CodeIntelligenceCoordinator {
|
|
private hypergraph?: HypergraphEngine;
|
|
|
|
async initialize(): Promise<void> {
|
|
// ... existing initialization ...
|
|
|
|
// Add hypergraph integration
|
|
if (this.config.enableHypergraph) {
|
|
this.hypergraph = new HypergraphEngine(this.persistence);
|
|
await this.hypergraph.initialize();
|
|
}
|
|
}
|
|
|
|
async analyzeImpact(request: ImpactRequest): Promise<ImpactAnalysis> {
|
|
// Use hypergraph for intelligent impact analysis
|
|
if (this.hypergraph) {
|
|
const impactedTests = await this.hypergraph.findImpactedTests(request.changedFiles);
|
|
// Merge with existing impact analysis
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
**Agent Assignment:** qe-test-architect
|
|
|
|
---
|
|
|
|
### Action 8: Add RuVector Server Integration
|
|
|
|
**Priority:** P3 (Nice-to-have)
|
|
**Cost:** 6
|
|
**Estimated Time:** 12 hours
|
|
|
|
**Preconditions:**
|
|
- [ ] Action 2-3 complete (persistence layer)
|
|
- [x] RuVector CLI available
|
|
|
|
**Effects:**
|
|
- [ ] Shared vector memory across agents
|
|
- [ ] HTTP/gRPC endpoint for vector operations
|
|
- [ ] Real-time pattern sharing
|
|
|
|
**Implementation:**
|
|
|
|
```typescript
|
|
// File: v3/src/integrations/ruvector/server-client.ts
|
|
export class RuVectorServerClient {
|
|
private serverUrl: string;
|
|
private grpcPort: number;
|
|
|
|
async ensureServerRunning(): Promise<void> {
|
|
// Check if server is running, start if not
|
|
const isRunning = await this.healthCheck();
|
|
if (!isRunning) {
|
|
await this.startServer();
|
|
}
|
|
}
|
|
|
|
private async startServer(): Promise<void> {
|
|
// Start ruvector server as background process
|
|
// npx ruvector server --port 8080 --grpc-port 50051 --data-dir .agentic-qe/vector-data
|
|
}
|
|
|
|
async storeVector(namespace: string, vector: number[], metadata: object): Promise<string>;
|
|
async searchSimilar(namespace: string, query: number[], topK: number): Promise<SearchResult[]>;
|
|
async sharePattern(pattern: QESONAPattern): Promise<void>;
|
|
}
|
|
```
|
|
|
|
**Agent Assignment:** qe-learning-coordinator
|
|
|
|
---
|
|
|
|
## 4. Parallel Execution Map
|
|
|
|
```
|
|
PHASE 1 (Week 1)
|
|
┌────────────────────────┐
|
|
┌──────────────┤ Can run in parallel ├──────────────┐
|
|
│ └────────────────────────┘ │
|
|
▼ ▼ ▼
|
|
┌─────────┐ ┌─────────────┐ ┌─────────────┐
|
|
│ Action 1│ │ Action 2 │ │ Action 5 │
|
|
│ Observe │ │ Q-Learning │ │ Hypergraph │
|
|
│ Layer │ │ Persistence │ │ Schema │
|
|
└────┬────┘ └──────┬──────┘ └──────┬──────┘
|
|
│ │ │
|
|
│ ┌─────────┴─────────┐ │
|
|
│ ▼ ▼ │
|
|
│ PHASE 2 (Week 2) │
|
|
│ ┌─────────────┐ ┌─────────────┐ │
|
|
│ │ Action 3 │ │ Action 4 │ │
|
|
│ │ SONA │ │ Remove │ │
|
|
│ │ Persistence │ │ Fallbacks │ │
|
|
│ └──────┬──────┘ └──────┬──────┘ │
|
|
│ │ │ │
|
|
│ └────────┬───────────┘ │
|
|
│ │ │
|
|
│ ▼ │
|
|
│ PHASE 3 (Week 3) │
|
|
│ ┌─────────────────────┐ │
|
|
│ │ Action 6 │◀───────────────────┘
|
|
│ │ Hypergraph Query │
|
|
│ │ Engine │
|
|
│ └─────────┬───────────┘
|
|
│ │
|
|
│ ▼
|
|
│ PHASE 4 (Week 4)
|
|
│ ┌─────────────┐ ┌─────────────┐
|
|
│ │ Action 7 │ │ Action 8 │
|
|
│ │ Coordinator │ │ RuVector │
|
|
│ │ Integration │ │ Server │
|
|
│ └─────────────┘ └─────────────┘
|
|
│
|
|
└────────────────────────┬─────────────────────────
|
|
│
|
|
▼
|
|
CONTINUOUS (All Phases)
|
|
┌─────────────────────┐
|
|
│ Metrics Collection │
|
|
│ & Alerting │
|
|
└─────────────────────┘
|
|
```
|
|
|
|
### Parallel Execution Rules
|
|
|
|
| Actions | Can Parallelize? | Dependencies |
|
|
|---------|------------------|--------------|
|
|
| 1, 2, 5 | YES | None between them |
|
|
| 3, 4 | YES | Both depend on 1, 2 |
|
|
| 6 | NO | Depends on 5 |
|
|
| 7, 8 | YES | 7 depends on 6, 8 depends on 2-3 |
|
|
|
|
---
|
|
|
|
## 5. Risk Mitigation
|
|
|
|
### Risk 1: RuVector Binary Compatibility
|
|
|
|
**Risk:** Native bindings fail on certain platforms
|
|
**Mitigation:**
|
|
- Keep fallback implementations
|
|
- Add platform detection and clear error messages
|
|
- Test on CI matrix (Linux, macOS, Windows)
|
|
|
|
### Risk 2: Migration Data Loss
|
|
|
|
**Risk:** Existing patterns/Q-values lost during migration
|
|
**Mitigation:**
|
|
- Export existing state before migration
|
|
- Implement rollback mechanism
|
|
- Run parallel systems during transition
|
|
|
|
### Risk 3: Performance Degradation
|
|
|
|
**Risk:** SQLite persistence adds latency
|
|
**Mitigation:**
|
|
- Use WAL mode (already enabled)
|
|
- Batch writes with transactions
|
|
- Cache hot Q-values in memory
|
|
|
|
### Risk 4: Breaking Changes
|
|
|
|
**Risk:** Removing fallbacks breaks existing workflows
|
|
**Mitigation:**
|
|
- Feature flag for new behavior
|
|
- Gradual rollout with monitoring
|
|
- Keep fallbacks but make them explicit
|
|
|
|
---
|
|
|
|
## 6. Success Criteria
|
|
|
|
### Phase 1 Complete When:
|
|
- [ ] All ruvector calls emit observable metrics
|
|
- [ ] Q-values persist to `memory.db` and restore on startup
|
|
- [ ] Hypergraph schema exists in `memory.db`
|
|
|
|
### Phase 2 Complete When:
|
|
- [ ] SONA patterns persist and restore
|
|
- [ ] Fallbacks only trigger on actual errors
|
|
- [ ] Alerts fire when fallback usage exceeds threshold
|
|
|
|
### Phase 3 Complete When:
|
|
- [ ] Cypher-like queries work against hypergraph
|
|
- [ ] `findUntestedFunctions()` returns accurate results
|
|
- [ ] `findImpactedTests()` works for any changed file set
|
|
|
|
### Phase 4 Complete When:
|
|
- [ ] CodeIntelligenceCoordinator uses hypergraph for impact analysis
|
|
- [ ] (Optional) RuVector server running for shared memory
|
|
|
|
### Overall Success Metrics:
|
|
- ML Usage Rate: **>80%** (currently unknown)
|
|
- Pattern Retention: **100%** (currently 0%)
|
|
- Fallback Alert Coverage: **100%** of fallback events
|
|
- Cross-Session Learning: **Verified** with restart test
|
|
|
|
---
|
|
|
|
## 7. Agent Assignments
|
|
|
|
### Swarm Configuration
|
|
|
|
```yaml
|
|
topology: hierarchical
|
|
maxAgents: 8
|
|
strategy: specialized
|
|
|
|
agents:
|
|
# Phase 1 - Parallel
|
|
- id: obs-agent-1
|
|
type: qe-learning-coordinator
|
|
task: "Action 1 - ML Observability Layer"
|
|
phase: 1
|
|
|
|
- id: persist-agent-1
|
|
type: qe-pattern-learner
|
|
task: "Action 2 - Q-Learning Persistence"
|
|
phase: 1
|
|
|
|
- id: schema-agent-1
|
|
type: qe-kg-builder
|
|
task: "Action 5 - Hypergraph Schema"
|
|
phase: 1
|
|
|
|
# Phase 2 - Parallel (after phase 1)
|
|
- id: persist-agent-2
|
|
type: qe-pattern-learner
|
|
task: "Action 3 - SONA Persistence"
|
|
phase: 2
|
|
depends_on: [persist-agent-1]
|
|
|
|
- id: refactor-agent-1
|
|
type: qe-test-architect
|
|
task: "Action 4 - Remove Silent Fallbacks"
|
|
phase: 2
|
|
depends_on: [obs-agent-1]
|
|
|
|
# Phase 3 - Sequential
|
|
- id: graph-agent-1
|
|
type: qe-kg-builder
|
|
task: "Action 6 - Hypergraph Query Engine"
|
|
phase: 3
|
|
depends_on: [schema-agent-1]
|
|
|
|
# Phase 4 - Parallel
|
|
- id: integration-agent-1
|
|
type: qe-test-architect
|
|
task: "Action 7 - Coordinator Integration"
|
|
phase: 4
|
|
depends_on: [graph-agent-1]
|
|
|
|
- id: server-agent-1
|
|
type: qe-learning-coordinator
|
|
task: "Action 8 - RuVector Server"
|
|
phase: 4
|
|
depends_on: [persist-agent-2]
|
|
```
|
|
|
|
### MCP Tool Mapping
|
|
|
|
| Action | Primary MCP Tools |
|
|
|--------|-------------------|
|
|
| Action 1 | `mcp__claude-flow__hooks_post-task`, `mcp__claude-flow__hooks_metrics` |
|
|
| Action 2 | `mcp__agentic-qe__memory_store`, `mcp__claude-flow__memory_store` |
|
|
| Action 3 | `mcp__agentic-qe__memory_store`, `mcp__claude-flow__hooks_intelligence_pattern-store` |
|
|
| Action 4 | `mcp__agentic-qe__test_generate_enhanced`, standard code editing |
|
|
| Action 5 | `mcp__supabase__apply_migration` (for schema), standard editing |
|
|
| Action 6 | Standard code editing, `mcp__agentic-qe__code_index` |
|
|
| Action 7 | `mcp__agentic-qe__coverage_analyze_sublinear`, standard editing |
|
|
| Action 8 | `mcp__claude-flow__terminal_execute` |
|
|
|
|
---
|
|
|
|
## 8. Hypergraph Decision: UPGRADE vs REPLACEMENT
|
|
|
|
### Analysis
|
|
|
|
| Aspect | Current KnowledgeGraphService | Proposed Hypergraph |
|
|
|--------|------------------------------|---------------------|
|
|
| Storage | In-memory | SQLite (persistent) |
|
|
| Query Language | Custom methods | Cypher-like syntax |
|
|
| Embedding Integration | Via GNN index | Native in nodes |
|
|
| Cross-Session | No | Yes |
|
|
| Performance | Fast (memory) | Indexed (disk) |
|
|
|
|
### Recommendation: **HYBRID UPGRADE**
|
|
|
|
1. **Keep** existing `KnowledgeGraphService` for in-session operations
|
|
2. **Add** hypergraph as persistence and query layer
|
|
3. **Sync** between them on:
|
|
- Index completion (memory -> hypergraph)
|
|
- Session start (hypergraph -> memory)
|
|
4. **Migrate gradually** by feature-flagging hypergraph queries
|
|
|
|
This approach:
|
|
- Preserves existing functionality
|
|
- Adds persistence without breaking changes
|
|
- Enables gradual adoption
|
|
- Allows performance comparison
|
|
|
|
---
|
|
|
|
## Appendix A: File Locations
|
|
|
|
| New File | Purpose |
|
|
|----------|---------|
|
|
| `v3/src/integrations/ruvector/observability.ts` | ML usage metrics |
|
|
| `v3/src/integrations/ruvector/persistent-q-router.ts` | Q-Learning with persistence |
|
|
| `v3/src/integrations/ruvector/sona-persistence.ts` | SONA pattern persistence |
|
|
| `v3/src/integrations/ruvector/hypergraph-engine.ts` | Cypher-like query engine |
|
|
| `v3/src/integrations/ruvector/server-client.ts` | RuVector server integration |
|
|
| `v3/migrations/20260120_add_hypergraph_tables.sql` | Schema migration |
|
|
|
|
| Modified File | Changes |
|
|
|---------------|---------|
|
|
| `v3/src/integrations/ruvector/provider.ts` | ML-first with alerts |
|
|
| `v3/src/integrations/ruvector/fallback.ts` | Add explicit fallback flags |
|
|
| `v3/src/domains/code-intelligence/coordinator.ts` | Hypergraph integration |
|
|
| `v3/src/kernel/unified-memory.ts` | Add hypergraph schema |
|
|
|
|
---
|
|
|
|
## Appendix B: CLI Commands for Execution
|
|
|
|
```bash
|
|
# Initialize swarm for plan execution
|
|
npx @claude-flow/cli@latest swarm init --topology hierarchical --max-agents 8 --strategy specialized
|
|
|
|
# Phase 1 - Parallel execution
|
|
npx @claude-flow/cli@latest task create --type feature --description "Action 1: ML Observability Layer" --priority high
|
|
npx @claude-flow/cli@latest task create --type feature --description "Action 2: Q-Learning Persistence" --priority high
|
|
npx @claude-flow/cli@latest task create --type feature --description "Action 5: Hypergraph Schema" --priority high
|
|
|
|
# Monitor progress
|
|
npx @claude-flow/cli@latest hooks metrics --period 24h
|
|
|
|
# Check ML vs fallback ratio
|
|
npx @claude-flow/cli@latest hooks intelligence --showStatus
|
|
|
|
# Verify persistence
|
|
npx @claude-flow/cli@latest memory list --namespace rl-qvalues
|
|
npx @claude-flow/cli@latest memory list --namespace sona-patterns
|
|
```
|
|
|
|
---
|
|
|
|
*Generated by GOAP Specialist using A* planning algorithm*
|
|
*Input: Six Thinking Hats Analysis dated 2026-01-20*
|