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>
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>
- 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.
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.
Six examples demonstrating systems that respond to internal tension
rather than external commands. Intelligence as homeostasis.
1. synthetic_reflex_organism.rs (286 lines)
- No global objective function
- Minimizes structural stress over time
- Learns only when instability crosses thresholds
- "Intelligence as homeostasis, not problem-solving"
2. timing_synchronization.rs (334 lines)
- Machines that feel timing, not data
- Measures when things stop lining up
- Synchronizes with biological rhythms
- "You stop predicting intent. You synchronize with it."
3. coherence_safety.rs (442 lines)
- Capability degradation: Full → Reduced → Conservative → Minimal → Halted
- Self-halts when internal coherence drops
- "Safety becomes structural, not moral"
4. artificial_instincts.rs (406 lines)
- Biases enforced by mincut/attention/healing
- Avoid fragmentation, preserve causality, prefer reversibility
- "Closer to evolution than training"
5. living_simulation.rs (349 lines)
- Simulations that maintain stability under perturbation
- Exposes fragile boundaries, not forecasts
- "No longer modeling reality. Modeling fragility."
6. thought_integrity.rs (421 lines)
- Reasoning integrity monitored like voltage
- Reduce precision, exit early, route to simpler paths
- "Always-on intelligence without runaway cost"
Total: 2,238 lines of exotic coherence-sensing code
- 130KB raw, 58KB gzipped WASM binary
- 13-method API surface (add_node, add_edge, topo_sort, critical_path, attention)
- 3 attention mechanisms (topological, critical path, uniform)
- Binary and JSON serialization
- wee_alloc feature for even smaller builds
- TypeScript type definitions included
Also updates ruvector-dag README with:
- Design philosophy: MinCut as central control signal
- Policy layer for attention mechanism selection
- SONA state vector structure with per-operator LoRA weights
- Predictive healing based on rising cut tension
- External cost model trait for PostgreSQL/embedded/chip schedulers
- QuDAG sync frequency bounds (1min-1hr adaptive)
- End-to-end convergence example with logs
- Add self-learning intelligence hooks for Claude Code
- Include Q-learning patterns, vector memories, file sequences
- Add pre-edit/post-edit, pre-command/post-command hooks
- Add session management and swarm coordination
- Bump version to 0.1.36
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add version = "0.1.29" to ruvector-mincut dependency in mincut-wasm
- Add version = "0.1.29" to ruvector-mincut dependency in mincut-node
- Add version = "0.1.29" to ruvector-core dependency in rvlite
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add description, keywords, categories to ruvector-nervous-system
- Add metadata and README to ruvector-mincut-wasm
- Add metadata and README to ruvector-mincut-node
- Remove cargo publish restriction from settings.json
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update @ruvector/core to 0.1.29
- Update all platform dependencies to 0.1.29
- Published: ruvector-core-{linux-x64-gnu,linux-arm64-gnu,darwin-x64,darwin-arm64,win32-x64-msvc}@0.1.29
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove "type": "module" that conflicted with NAPI-RS CommonJS output
- Bump @ruvector/node to 0.1.19
- Update optionalDependencies to 0.1.19
- Update hooks to use absolute path to ruvector-cli
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The Rust CLI uses --memory-type, not --type.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Copy CLI package to /tmp before npm install
- This prevents npm from finding the parent workspace lockfile
- Copy back node_modules and dist after build
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove workspace package-lock.json for CLI tests
- Install only CLI's own dependencies to avoid platform-specific packages
- Update paths to work from npm/packages/cli directory
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Run npm install from workspace root with --omit=optional
- Build using workspace flag -w @ruvector/cli
- Update test paths to packages/cli/dist/cli.js
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Change dtolnay/rust-action to dtolnay/rust-toolchain
- Add --ignore-scripts --no-optional to npm install to avoid platform issues
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Resolves merge conflicts in intelligence data files.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add --postgres flag to `ruvector hooks init` command
- Automatically apply PostgreSQL schema using embedded SQL
- Check for RUVECTOR_POSTGRES_URL or DATABASE_URL environment variable
- Provide helpful error messages and manual instructions if psql unavailable
- Update README with new --postgres flag documentation
- Convert serde_json::Value to string for ToSql in remember()
- Parse metadata string back to JSON in recall()
- Pass get_intelligence_path() to Intelligence::new()
- Make get_intelligence_path() public for cross-module access
New hooks added:
- UserPromptSubmit: Inject learned context before processing prompts
- Notification: Track notification patterns
- Task matcher in PreToolUse: Validate agent assignments before spawning
New commands:
- suggest-context: Returns learned patterns for context injection
- track-notification: Records notification events as trajectories
Optimizations:
- Timeout tuning: 1-5s per hook (vs 60s default)
- SessionStart: Separate startup vs resume matchers
- PreCompact: Separate auto vs manual matchers
- Stdin JSON parsing: Full HookInput struct with all Claude Code fields
- Context injection: HookOutput with additionalContext for PostToolUse
Technical improvements:
- HookInput struct: session_id, tool_input, tool_response, notification_type
- HookOutput struct: additionalContext, permissionDecision for control flow
- try_parse_stdin(): Non-blocking JSON parsing from stdin
- output_context_injection(): Helper for PostToolUse context injection
Now covers all 7 Claude Code hook types with optimized timeouts.