- Lead with the problem, not technical jargon
- Visual task dependency diagram
- Show what each method answers
- Real-world use cases with emojis
- Before/after comparison table
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Lead with the problem, not technical jargon
- Visual task dependency diagram
- Show what each method answers
- Real-world use cases with emojis
- Before/after comparison table
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Easy introduction to DAGs and rudag
- Features and benefits overview
- Detailed use cases (SQL optimizer, task scheduler, build system, ETL)
- Integration examples (Express, React, D3.js, Bull, GraphQL, RxJS)
- CLI documentation
- Full API reference
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Easy introduction to DAGs and rudag
- Features and benefits overview
- Detailed use cases (SQL optimizer, task scheduler, build system, ETL)
- Integration examples (Express, React, D3.js, Bull, GraphQL, RxJS)
- CLI documentation
- Full API reference
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
SECURITY FIXES (HIGH):
- Path traversal prevention in CLI (validateFilePath)
- Path traversal prevention in FileDagStorage (ensureWithinBase)
- Input validation for all public APIs (isValidDagId, isValidStorageId)
- Type guards for WASM output (isCriticalPath) to prevent prototype pollution
- Extension restrictions (.dag, .json only) in CLI
MEMORY LEAK FIXES (HIGH):
- Static methods now properly close owned storage connections
- WASM cleanup on initialization failures
- Cache invalidation on dispose()
PERFORMANCE OPTIMIZATIONS:
- Single-transaction IndexedDB saves (atomic read-modify-write)
- Batch save API for bulk operations (saveBatch)
- Result caching for topoSort and criticalPath
- Lazy module loading in CLI for faster startup
OTHER IMPROVEMENTS:
- onblocked/onversionchange handlers for IndexedDB
- Background save error handler (onSaveError option)
- Comprehensive input validation with clear error messages
- Convert sync to async file operations in Node.js
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
SECURITY FIXES (HIGH):
- Path traversal prevention in CLI (validateFilePath)
- Path traversal prevention in FileDagStorage (ensureWithinBase)
- Input validation for all public APIs (isValidDagId, isValidStorageId)
- Type guards for WASM output (isCriticalPath) to prevent prototype pollution
- Extension restrictions (.dag, .json only) in CLI
MEMORY LEAK FIXES (HIGH):
- Static methods now properly close owned storage connections
- WASM cleanup on initialization failures
- Cache invalidation on dispose()
PERFORMANCE OPTIMIZATIONS:
- Single-transaction IndexedDB saves (atomic read-modify-write)
- Batch save API for bulk operations (saveBatch)
- Result caching for topoSort and criticalPath
- Lazy module loading in CLI for faster startup
OTHER IMPROVEMENTS:
- onblocked/onversionchange handlers for IndexedDB
- Background save error handler (onSaveError option)
- Comprehensive input validation with clear error messages
- Convert sync to async file operations in Node.js
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Create npm/packages/rudag with TypeScript SDK
- WASM-accelerated DAG operations via ruvector-dag-wasm
- IndexedDB persistence for browser environments
- MemoryStorage fallback for Node.js
- CLI tool for DAG operations (rudag command)
- Restore patches/hnsw_rs for WASM builds
Features:
- DagOperator enum (SCAN, FILTER, PROJECT, JOIN, etc.)
- AttentionMechanism enum (TOPOLOGICAL, CRITICAL_PATH, UNIFORM)
- RuDag class with auto-save to IndexedDB
- BrowserDagManager for browser-specific management
- NodeDagManager with file-based persistence
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Create npm/packages/rudag with TypeScript SDK
- WASM-accelerated DAG operations via ruvector-dag-wasm
- IndexedDB persistence for browser environments
- MemoryStorage fallback for Node.js
- CLI tool for DAG operations (rudag command)
- Restore patches/hnsw_rs for WASM builds
Features:
- DagOperator enum (SCAN, FILTER, PROJECT, JOIN, etc.)
- AttentionMechanism enum (TOPOLOGICAL, CRITICAL_PATH, UNIFORM)
- RuDag class with auto-save to IndexedDB
- BrowserDagManager for browser-specific management
- NodeDagManager with file-based persistence
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Brief section highlighting the self-learning query DAG with:
- Key benefits (automatic optimization, 50-80% latency reduction)
- Core features (7 attention mechanisms, SONA learning, MinCut control)
- Quick code example
- Link to full documentation
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Brief section highlighting the self-learning query DAG with:
- Key benefits (automatic optimization, 50-80% latency reduction)
- Core features (7 attention mechanisms, SONA learning, MinCut control)
- Quick code example
- Link to full documentation
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add user-friendly introduction explaining:
- What the library does in plain language
- Who should use it (use cases table)
- Key benefits with concrete examples
- Simple "how it works" diagram
Keeps all technical details intact while making the project
more accessible to newcomers.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add user-friendly introduction explaining:
- What the library does in plain language
- Who should use it (use cases table)
- Key benefits with concrete examples
- Simple "how it works" diagram
Keeps all technical details intact while making the project
more accessible to newcomers.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add README.md to patches/ explaining the critical hnsw_rs patch
- Run cargo fmt on ruvector-postgres to fix formatting issues
The patches/hnsw_rs directory is REQUIRED for builds as it provides
a WASM-compatible version of hnsw_rs (using rand 0.8 instead of 0.9).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add README.md to patches/ explaining the critical hnsw_rs patch
- Run cargo fmt on ruvector-postgres to fix formatting issues
The patches/hnsw_rs directory is REQUIRED for builds as it provides
a WASM-compatible version of hnsw_rs (using rand 0.8 instead of 0.9).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The benchmark workflow was failing because pgrx-pg-sys requires
PostgreSQL development headers. Added PostgreSQL 17 installation
and pgrx initialization to both the main benchmarks job and the
baseline comparison job.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The benchmark workflow was failing because pgrx-pg-sys requires
PostgreSQL development headers. Added PostgreSQL 17 installation
and pgrx initialization to both the main benchmarks job and the
baseline comparison job.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Remove tests for PostgreSQL 14, 15, and 16 from CI workflows.
Only PostgreSQL 17 is now tested to simplify the CI matrix.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Remove tests for PostgreSQL 14, 15, and 16 from CI workflows.
Only PostgreSQL 17 is now tested to simplify the CI matrix.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Adjusted command-failed metrics in patterns.json for better accuracy.
- Added new trajectories for failed commands and successful edits in trajectories.json.
- Refined hooks configuration in settings.json to streamline command execution.
- Enhanced documentation in CLAUDE.md and ruvector/README.md for self-learning hooks integration.
- Updated ruvector version to 0.1.38 and added publish script for ruvector-cli.
- Adjusted command-failed metrics in patterns.json for better accuracy.
- Added new trajectories for failed commands and successful edits in trajectories.json.
- Refined hooks configuration in settings.json to streamline command execution.
- Enhanced documentation in CLAUDE.md and ruvector/README.md for self-learning hooks integration.
- Updated ruvector version to 0.1.38 and added publish script for ruvector-cli.
- Add pqcrypto-dilithium (v0.5) and pqcrypto-kyber (v0.8) as optional deps
- Update production-crypto feature to enable real PQ implementations
- ML-DSA-65: Uses Dilithium3 when production-crypto enabled
- ML-KEM-768: Uses Kyber768 when production-crypto enabled
- Update security_notice.rs with dynamic status based on feature flag
- Export check_crypto_security() from lib.rs for startup checks
- is_production_ready() returns true when feature enabled
Usage:
# Enable production post-quantum crypto
ruvector-dag = { version = "0.1", features = ["production-crypto"] }
# Check at startup
fn main() {
ruvector_dag::check_crypto_security();
}
- Add pqcrypto-dilithium (v0.5) and pqcrypto-kyber (v0.8) as optional deps
- Update production-crypto feature to enable real PQ implementations
- ML-DSA-65: Uses Dilithium3 when production-crypto enabled
- ML-KEM-768: Uses Kyber768 when production-crypto enabled
- Update security_notice.rs with dynamic status based on feature flag
- Export check_crypto_security() from lib.rs for startup checks
- is_production_ready() returns true when feature enabled
Usage:
# Enable production post-quantum crypto
ruvector-dag = { version = "0.1", features = ["production-crypto"] }
# Check at startup
fn main() {
ruvector_dag::check_crypto_security();
}
SECURITY FIXES:
1. ML-DSA-65 (CRITICAL):
- BEFORE: verify() always returned true if signature non-zero
- BEFORE: sign() used trivially weak XOR with simple hash
- AFTER: Uses HMAC-SHA256 for basic integrity verification
- Added security warnings that this is NOT quantum-resistant
2. ML-KEM-768 (CRITICAL):
- BEFORE: encapsulate() ignored public key, just random bytes
- BEFORE: decapsulate() used simple XOR, trivially breakable
- AFTER: Uses HKDF-SHA256 for key derivation with proper binding
- Added ciphertext structure verification
3. Differential Privacy (MEDIUM):
- BEFORE: sample_laplace() could produce ln(0) → -infinity/NaN
- BEFORE: sample_gaussian() could produce ln(0) → -infinity/NaN
- AFTER: Clamp inputs to avoid ln(0) with f64::EPSILON
4. Added security_notice.rs module:
- Runtime security status checking
- Production readiness validation
- Comprehensive documentation of limitations
- `production-crypto` feature flag for when real impls are used
5. Test fixes (unrelated to security):
- Fixed test_validator_weight assertion logic
- Fixed test_stats to use initial_value=0
IMPORTANT: The placeholder crypto provides CLASSICAL security only.
For production use, integrate real ML-DSA/ML-KEM implementations.
See security_notice.rs for migration guide.
Added dependencies:
- sha2 = "0.10" for HMAC/HKDF implementations
All 76 tests pass.
SECURITY FIXES:
1. ML-DSA-65 (CRITICAL):
- BEFORE: verify() always returned true if signature non-zero
- BEFORE: sign() used trivially weak XOR with simple hash
- AFTER: Uses HMAC-SHA256 for basic integrity verification
- Added security warnings that this is NOT quantum-resistant
2. ML-KEM-768 (CRITICAL):
- BEFORE: encapsulate() ignored public key, just random bytes
- BEFORE: decapsulate() used simple XOR, trivially breakable
- AFTER: Uses HKDF-SHA256 for key derivation with proper binding
- Added ciphertext structure verification
3. Differential Privacy (MEDIUM):
- BEFORE: sample_laplace() could produce ln(0) → -infinity/NaN
- BEFORE: sample_gaussian() could produce ln(0) → -infinity/NaN
- AFTER: Clamp inputs to avoid ln(0) with f64::EPSILON
4. Added security_notice.rs module:
- Runtime security status checking
- Production readiness validation
- Comprehensive documentation of limitations
- `production-crypto` feature flag for when real impls are used
5. Test fixes (unrelated to security):
- Fixed test_validator_weight assertion logic
- Fixed test_stats to use initial_value=0
IMPORTANT: The placeholder crypto provides CLASSICAL security only.
For production use, integrate real ML-DSA/ML-KEM implementations.
See security_notice.rs for migration guide.
Added dependencies:
- sha2 = "0.10" for HMAC/HKDF implementations
All 76 tests pass.
Fixes across attention mechanisms, SONA engine, and examples:
Attention mechanisms:
- hierarchical_lorentz: Use dag.node_count(), dag.children() API
- parallel_branch: Replace get_children() with children()
- temporal_btsp: Fix node.estimated_cost access, remove selectivity
- cache: Use dag.node_ids() and dag.children() for iteration
- mincut_gated: Fix return type to match DagAttentionMechanism trait
- selector: Update tests to use OperatorNode::new()
SONA/QuDAG:
- sona/engine: Add deprecated Scan/Join match arms
- ml_kem: Fix unused parameter warnings
- ml_dsa: Fix unused parameter warnings
Examples:
- basic_usage: Use dag.children() instead of get_children()
- learning_workflow: Fix HnswScan/Sort field names, trajectory access
- attention_demo: Import DagAttentionMechanism trait
- attention_selection: Fix CausalConeConfig field names
- self_healing: Remove non-existent result fields
- federated_coherence: Add parentheses for comparison expression
Cargo.toml:
- Register all exotic examples with explicit paths
All 12 examples now build and run successfully.
Fixes across attention mechanisms, SONA engine, and examples:
Attention mechanisms:
- hierarchical_lorentz: Use dag.node_count(), dag.children() API
- parallel_branch: Replace get_children() with children()
- temporal_btsp: Fix node.estimated_cost access, remove selectivity
- cache: Use dag.node_ids() and dag.children() for iteration
- mincut_gated: Fix return type to match DagAttentionMechanism trait
- selector: Update tests to use OperatorNode::new()
SONA/QuDAG:
- sona/engine: Add deprecated Scan/Join match arms
- ml_kem: Fix unused parameter warnings
- ml_dsa: Fix unused parameter warnings
Examples:
- basic_usage: Use dag.children() instead of get_children()
- learning_workflow: Fix HnswScan/Sort field names, trajectory access
- attention_demo: Import DagAttentionMechanism trait
- attention_selection: Fix CausalConeConfig field names
- self_healing: Remove non-existent result fields
- federated_coherence: Add parentheses for comparison expression
Cargo.toml:
- Register all exotic examples with explicit paths
All 12 examples now build and run successfully.