feat(adr-017): Implement ruvector integrations in signal crate (partial)
Agents completed three of seven ADR-017 integration points: 1. subcarrier_selection.rs — ruvector-mincut: mincut_subcarrier_partition partitions subcarriers into (sensitive, insensitive) groups using DynamicMinCut. O(n^1.5 log n) amortized vs O(n log n) static sort. Includes test: mincut_partition_separates_high_low. 2. spectrogram.rs — ruvector-attn-mincut: gate_spectrogram applies self-attention (Q=K=V) over STFT time frames to suppress noise and multipath interference frames. Configurable lambda gating strength. Includes tests: preserves shape, finite values. 3. bvp.rs — ruvector-attention stub added (in progress by agent). 4. Cargo.toml — added ruvector-mincut, ruvector-attn-mincut, ruvector-temporal-tensor, ruvector-solver, ruvector-attention as workspace deps in wifi-densepose-signal crate. Cargo.lock updated for new dependencies. Remaining ADR-017 integrations (fresnel.rs, MAT crate) still in progress via background agents. https://claude.ai/code/session_01BSBAQJ34SLkiJy4A8SoiL4
This commit is contained in:
305
.swarm/schema.sql
Normal file
305
.swarm/schema.sql
Normal file
@@ -0,0 +1,305 @@
|
||||
|
||||
-- Claude Flow V3 Memory Database
|
||||
-- Version: 3.0.0
|
||||
-- Features: Pattern learning, vector embeddings, temporal decay, migration tracking
|
||||
|
||||
PRAGMA journal_mode = WAL;
|
||||
PRAGMA synchronous = NORMAL;
|
||||
PRAGMA foreign_keys = ON;
|
||||
|
||||
-- ============================================
|
||||
-- CORE MEMORY TABLES
|
||||
-- ============================================
|
||||
|
||||
-- Memory entries (main storage)
|
||||
CREATE TABLE IF NOT EXISTS memory_entries (
|
||||
id TEXT PRIMARY KEY,
|
||||
key TEXT NOT NULL,
|
||||
namespace TEXT DEFAULT 'default',
|
||||
content TEXT NOT NULL,
|
||||
type TEXT DEFAULT 'semantic' CHECK(type IN ('semantic', 'episodic', 'procedural', 'working', 'pattern')),
|
||||
|
||||
-- Vector embedding for semantic search (stored as JSON array)
|
||||
embedding TEXT,
|
||||
embedding_model TEXT DEFAULT 'local',
|
||||
embedding_dimensions INTEGER,
|
||||
|
||||
-- Metadata
|
||||
tags TEXT, -- JSON array
|
||||
metadata TEXT, -- JSON object
|
||||
owner_id TEXT,
|
||||
|
||||
-- Timestamps
|
||||
created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
|
||||
updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
|
||||
expires_at INTEGER,
|
||||
last_accessed_at INTEGER,
|
||||
|
||||
-- Access tracking for hot/cold detection
|
||||
access_count INTEGER DEFAULT 0,
|
||||
|
||||
-- Status
|
||||
status TEXT DEFAULT 'active' CHECK(status IN ('active', 'archived', 'deleted')),
|
||||
|
||||
UNIQUE(namespace, key)
|
||||
);
|
||||
|
||||
-- Indexes for memory entries
|
||||
CREATE INDEX IF NOT EXISTS idx_memory_namespace ON memory_entries(namespace);
|
||||
CREATE INDEX IF NOT EXISTS idx_memory_key ON memory_entries(key);
|
||||
CREATE INDEX IF NOT EXISTS idx_memory_type ON memory_entries(type);
|
||||
CREATE INDEX IF NOT EXISTS idx_memory_status ON memory_entries(status);
|
||||
CREATE INDEX IF NOT EXISTS idx_memory_created ON memory_entries(created_at);
|
||||
CREATE INDEX IF NOT EXISTS idx_memory_accessed ON memory_entries(last_accessed_at);
|
||||
CREATE INDEX IF NOT EXISTS idx_memory_owner ON memory_entries(owner_id);
|
||||
|
||||
-- ============================================
|
||||
-- PATTERN LEARNING TABLES
|
||||
-- ============================================
|
||||
|
||||
-- Learned patterns with confidence scoring and versioning
|
||||
CREATE TABLE IF NOT EXISTS patterns (
|
||||
id TEXT PRIMARY KEY,
|
||||
|
||||
-- Pattern identification
|
||||
name TEXT NOT NULL,
|
||||
pattern_type TEXT NOT NULL CHECK(pattern_type IN (
|
||||
'task-routing', 'error-recovery', 'optimization', 'learning',
|
||||
'coordination', 'prediction', 'code-pattern', 'workflow'
|
||||
)),
|
||||
|
||||
-- Pattern definition
|
||||
condition TEXT NOT NULL, -- Regex or semantic match
|
||||
action TEXT NOT NULL, -- What to do when pattern matches
|
||||
description TEXT,
|
||||
|
||||
-- Confidence scoring (0.0 - 1.0)
|
||||
confidence REAL DEFAULT 0.5,
|
||||
success_count INTEGER DEFAULT 0,
|
||||
failure_count INTEGER DEFAULT 0,
|
||||
|
||||
-- Temporal decay
|
||||
decay_rate REAL DEFAULT 0.01, -- How fast confidence decays
|
||||
half_life_days INTEGER DEFAULT 30, -- Days until confidence halves without use
|
||||
|
||||
-- Vector embedding for semantic pattern matching
|
||||
embedding TEXT,
|
||||
embedding_dimensions INTEGER,
|
||||
|
||||
-- Versioning
|
||||
version INTEGER DEFAULT 1,
|
||||
parent_id TEXT REFERENCES patterns(id),
|
||||
|
||||
-- Metadata
|
||||
tags TEXT, -- JSON array
|
||||
metadata TEXT, -- JSON object
|
||||
source TEXT, -- Where the pattern was learned from
|
||||
|
||||
-- Timestamps
|
||||
created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
|
||||
updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
|
||||
last_matched_at INTEGER,
|
||||
last_success_at INTEGER,
|
||||
last_failure_at INTEGER,
|
||||
|
||||
-- Status
|
||||
status TEXT DEFAULT 'active' CHECK(status IN ('active', 'archived', 'deprecated', 'experimental'))
|
||||
);
|
||||
|
||||
-- Indexes for patterns
|
||||
CREATE INDEX IF NOT EXISTS idx_patterns_type ON patterns(pattern_type);
|
||||
CREATE INDEX IF NOT EXISTS idx_patterns_confidence ON patterns(confidence DESC);
|
||||
CREATE INDEX IF NOT EXISTS idx_patterns_status ON patterns(status);
|
||||
CREATE INDEX IF NOT EXISTS idx_patterns_last_matched ON patterns(last_matched_at);
|
||||
|
||||
-- Pattern evolution history (for versioning)
|
||||
CREATE TABLE IF NOT EXISTS pattern_history (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
pattern_id TEXT NOT NULL REFERENCES patterns(id),
|
||||
version INTEGER NOT NULL,
|
||||
|
||||
-- Snapshot of pattern state
|
||||
confidence REAL,
|
||||
success_count INTEGER,
|
||||
failure_count INTEGER,
|
||||
condition TEXT,
|
||||
action TEXT,
|
||||
|
||||
-- What changed
|
||||
change_type TEXT CHECK(change_type IN ('created', 'updated', 'success', 'failure', 'decay', 'merged', 'split')),
|
||||
change_reason TEXT,
|
||||
|
||||
created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000)
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_pattern_history_pattern ON pattern_history(pattern_id);
|
||||
|
||||
-- ============================================
|
||||
-- LEARNING & TRAJECTORY TABLES
|
||||
-- ============================================
|
||||
|
||||
-- Learning trajectories (SONA integration)
|
||||
CREATE TABLE IF NOT EXISTS trajectories (
|
||||
id TEXT PRIMARY KEY,
|
||||
session_id TEXT,
|
||||
|
||||
-- Trajectory state
|
||||
status TEXT DEFAULT 'active' CHECK(status IN ('active', 'completed', 'failed', 'abandoned')),
|
||||
verdict TEXT CHECK(verdict IN ('success', 'failure', 'partial', NULL)),
|
||||
|
||||
-- Context
|
||||
task TEXT,
|
||||
context TEXT, -- JSON object
|
||||
|
||||
-- Metrics
|
||||
total_steps INTEGER DEFAULT 0,
|
||||
total_reward REAL DEFAULT 0,
|
||||
|
||||
-- Timestamps
|
||||
started_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
|
||||
ended_at INTEGER,
|
||||
|
||||
-- Reference to extracted pattern (if any)
|
||||
extracted_pattern_id TEXT REFERENCES patterns(id)
|
||||
);
|
||||
|
||||
-- Trajectory steps
|
||||
CREATE TABLE IF NOT EXISTS trajectory_steps (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
trajectory_id TEXT NOT NULL REFERENCES trajectories(id),
|
||||
step_number INTEGER NOT NULL,
|
||||
|
||||
-- Step data
|
||||
action TEXT NOT NULL,
|
||||
observation TEXT,
|
||||
reward REAL DEFAULT 0,
|
||||
|
||||
-- Metadata
|
||||
metadata TEXT, -- JSON object
|
||||
|
||||
created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000)
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_steps_trajectory ON trajectory_steps(trajectory_id);
|
||||
|
||||
-- ============================================
|
||||
-- MIGRATION STATE TRACKING
|
||||
-- ============================================
|
||||
|
||||
-- Migration state (for resume capability)
|
||||
CREATE TABLE IF NOT EXISTS migration_state (
|
||||
id TEXT PRIMARY KEY,
|
||||
migration_type TEXT NOT NULL, -- 'v2-to-v3', 'pattern', 'memory', etc.
|
||||
|
||||
-- Progress tracking
|
||||
status TEXT DEFAULT 'pending' CHECK(status IN ('pending', 'in_progress', 'completed', 'failed', 'rolled_back')),
|
||||
total_items INTEGER DEFAULT 0,
|
||||
processed_items INTEGER DEFAULT 0,
|
||||
failed_items INTEGER DEFAULT 0,
|
||||
skipped_items INTEGER DEFAULT 0,
|
||||
|
||||
-- Current position (for resume)
|
||||
current_batch INTEGER DEFAULT 0,
|
||||
last_processed_id TEXT,
|
||||
|
||||
-- Source/destination info
|
||||
source_path TEXT,
|
||||
source_type TEXT,
|
||||
destination_path TEXT,
|
||||
|
||||
-- Backup info
|
||||
backup_path TEXT,
|
||||
backup_created_at INTEGER,
|
||||
|
||||
-- Error tracking
|
||||
last_error TEXT,
|
||||
errors TEXT, -- JSON array of errors
|
||||
|
||||
-- Timestamps
|
||||
started_at INTEGER,
|
||||
completed_at INTEGER,
|
||||
created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
|
||||
updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000)
|
||||
);
|
||||
|
||||
-- ============================================
|
||||
-- SESSION MANAGEMENT
|
||||
-- ============================================
|
||||
|
||||
-- Sessions for context persistence
|
||||
CREATE TABLE IF NOT EXISTS sessions (
|
||||
id TEXT PRIMARY KEY,
|
||||
|
||||
-- Session state
|
||||
state TEXT NOT NULL, -- JSON object with full session state
|
||||
status TEXT DEFAULT 'active' CHECK(status IN ('active', 'paused', 'completed', 'expired')),
|
||||
|
||||
-- Context
|
||||
project_path TEXT,
|
||||
branch TEXT,
|
||||
|
||||
-- Metrics
|
||||
tasks_completed INTEGER DEFAULT 0,
|
||||
patterns_learned INTEGER DEFAULT 0,
|
||||
|
||||
-- Timestamps
|
||||
created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
|
||||
updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
|
||||
expires_at INTEGER
|
||||
);
|
||||
|
||||
-- ============================================
|
||||
-- VECTOR INDEX METADATA (for HNSW)
|
||||
-- ============================================
|
||||
|
||||
-- Track HNSW index state
|
||||
CREATE TABLE IF NOT EXISTS vector_indexes (
|
||||
id TEXT PRIMARY KEY,
|
||||
name TEXT NOT NULL UNIQUE,
|
||||
|
||||
-- Index configuration
|
||||
dimensions INTEGER NOT NULL,
|
||||
metric TEXT DEFAULT 'cosine' CHECK(metric IN ('cosine', 'euclidean', 'dot')),
|
||||
|
||||
-- HNSW parameters
|
||||
hnsw_m INTEGER DEFAULT 16,
|
||||
hnsw_ef_construction INTEGER DEFAULT 200,
|
||||
hnsw_ef_search INTEGER DEFAULT 100,
|
||||
|
||||
-- Quantization
|
||||
quantization_type TEXT CHECK(quantization_type IN ('none', 'scalar', 'product')),
|
||||
quantization_bits INTEGER DEFAULT 8,
|
||||
|
||||
-- Statistics
|
||||
total_vectors INTEGER DEFAULT 0,
|
||||
last_rebuild_at INTEGER,
|
||||
|
||||
created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
|
||||
updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000)
|
||||
);
|
||||
|
||||
-- ============================================
|
||||
-- SYSTEM METADATA
|
||||
-- ============================================
|
||||
|
||||
CREATE TABLE IF NOT EXISTS metadata (
|
||||
key TEXT PRIMARY KEY,
|
||||
value TEXT NOT NULL,
|
||||
updated_at INTEGER DEFAULT (strftime('%s', 'now') * 1000)
|
||||
);
|
||||
|
||||
|
||||
INSERT OR REPLACE INTO metadata (key, value) VALUES
|
||||
('schema_version', '3.0.0'),
|
||||
('backend', 'hybrid'),
|
||||
('created_at', '2026-02-28T16:04:25.842Z'),
|
||||
('sql_js', 'true'),
|
||||
('vector_embeddings', 'enabled'),
|
||||
('pattern_learning', 'enabled'),
|
||||
('temporal_decay', 'enabled'),
|
||||
('hnsw_indexing', 'enabled');
|
||||
|
||||
-- Create default vector index configuration
|
||||
INSERT OR IGNORE INTO vector_indexes (id, name, dimensions) VALUES
|
||||
('default', 'default', 768),
|
||||
('patterns', 'patterns', 768);
|
||||
Reference in New Issue
Block a user