Files
proffesor-for-testing__agen…/docs/implementation/specs/SPEC-050-B-hypergraph-code-intelligence.md
Profa 2253d05618 feat: flatten project structure — archive v2, promote v3 to root
Remove the nested v3/ subdirectory by moving all active source code,
tests, configs, and assets directly to the project root. Archive v2/
(dead code, 847MB) to v2-archive.tar.gz.

Key changes:
- Move v3/src/ → src/, v3/tests/ → tests/, v3/packages/ → packages/
- Move v3/tsconfig.json, v3/vitest.config.ts to root
- Merge v3/package.json into root package.json (ESM, scripts, deps, exports)
- Merge v3/scripts/ into scripts/, v3/implementation/ into docs/implementation/
- Update all CI workflows to remove "cd v3 &&" and v3/ path prefixes
- Fix all init installer path resolution (3-level-up → 2-level-up)
- Fix hooks to use "node ./dist/cli/bundle.js" instead of bare "aqe"
- Update settings.json ADR/DDD directories to docs/implementation/
- Fix helper scripts (statusline, adr-compliance, ddd-tracker, guidance-hooks)
- Update 58 agent definitions: aqe/v3/ → aqe/ memory namespaces
- Update 15 guidance shards: v3/src/ → src/ path references
- Fix sync interfaces: remove v3/ and v2/ path references
- Fix test path calculations (process.cwd() + '..' no longer needed)
- Fix flaky perf test threshold (500ms → 1000ms for CI environments)
- Fix complexity-analyzer test to match ADR-051 keyword-based eligibility

Build passes, 17,901 tests pass, CLI and MCP bundles verified.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 11:35:41 +00:00

7.6 KiB

SPEC-050-B: Hypergraph Code Intelligence

Field Value
Specification ID SPEC-050-B
Parent ADR ADR-050
Version 1.0
Status In Progress
Last Updated 2026-01-20
Author GOAP Specialist

Overview

This specification covers Actions 5-7 from the GOAP plan: Hypergraph Schema, Query Engine, and Code Intelligence Integration.


Action 5: Hypergraph Schema

Priority: P1 (High) Estimated Time: 4 hours

Database Migration

-- 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', 'covers'
  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);

Requirements

  • UnifiedPersistenceManager available
  • SQLite schema management in place
  • Hypergraph tables created in memory.db
  • Support for nodes, edges, properties

Action 6: Hypergraph Query Engine

Priority: P2 (Medium) Estimated Time: 16 hours

Implementation

// File: v3/src/integrations/ruvector/hypergraph-engine.ts
export interface HypergraphNode {
  id: string;
  type: 'function' | 'module' | 'test' | 'file' | 'class';
  name: string;
  filePath?: string;
  lineStart?: number;
  lineEnd?: number;
  complexity?: number;
  coverage?: number;
  metadata?: Record<string, unknown>;
  embedding?: number[];
}

export interface HypergraphEdge {
  id: string;
  sourceId: string;
  targetId: string;
  type: 'calls' | 'imports' | 'tests' | 'depends_on' | 'covers';
  weight: number;
  properties?: Record<string, unknown>;
}

export interface HypergraphResult {
  nodes: HypergraphNode[];
  edges: HypergraphEdge[];
  executionTimeMs: number;
}

export class HypergraphEngine {
  private persistence: UnifiedPersistenceManager;
  private gnnIndex: QEGNNEmbeddingIndex;

  /**
   * Execute a Cypher-like query
   * Simplified syntax for QE use cases
   */
  async query(cypher: string, params?: Record<string, unknown>): Promise<HypergraphResult>;

  /**
   * 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 });
  }

  /**
   * Find high-complexity untested code
   */
  async findRiskyCode(minComplexity: number = 10): Promise<HypergraphNode[]> {
    return this.query(`
      MATCH (f:Function)
      WHERE f.complexity >= $minComplexity
        AND NOT (f)<-[:COVERS]-(:Test)
      RETURN f ORDER BY f.complexity DESC
    `, { minComplexity });
  }

  /**
   * Build graph from indexed code
   */
  async buildFromIndex(indexResult: IndexResult): Promise<void>;
}

Cypher-Like Query Support

The engine supports a simplified Cypher syntax:

Pattern Description
MATCH (n:Type) Find nodes of type
WHERE condition Filter results
(a)-[:REL]->(b) Traverse relationship
NOT (a)<-[:REL]-(b) Negative pattern
RETURN n Select output
ORDER BY field Sort results
$param Parameter substitution

Requirements

  • Cypher-like query interface available
  • Pattern matching for code relationships
  • Integration with existing KnowledgeGraphService

Action 7: Code Intelligence Integration

Priority: P2 (Medium) Estimated Time: 10 hours

Modified Coordinator

// 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
    }
  }

  async findCoverageGaps(): Promise<CoverageGap[]> {
    if (this.hypergraph) {
      const untested = await this.hypergraph.findUntestedFunctions();
      return untested.map(node => ({
        function: node.name,
        file: node.filePath,
        complexity: node.complexity,
        risk: this.calculateRisk(node),
      }));
    }
  }
}

Requirements

  • Impact analysis uses hypergraph queries
  • Coverage gaps identified via graph traversal
  • Test prioritization based on code relationships

Architecture Recommendation: Hybrid Upgrade

The hypergraph is an upgrade to existing code intelligence, not a replacement:

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)

Sync Strategy

  1. On Index Completion: Memory graph → Hypergraph (persist)
  2. On Session Start: Hypergraph → Memory graph (restore)
  3. On Query: Use hypergraph for complex traversals, memory for simple lookups

Agent Assignments

Action Agent Phase
Action 5 qe-kg-builder Phase 1
Action 6 qe-kg-builder, qe-coverage-specialist Phase 3
Action 7 qe-test-architect Phase 4

Changelog

Version Date Author Changes
1.0 2026-01-20 GOAP Specialist Initial specification