git-subtree-dir: vendor/ruvector git-subtree-split: b64c21726f2bb37286d9ee36a7869fef60cc6900
338 lines
8.0 KiB
Markdown
338 lines
8.0 KiB
Markdown
# EXO-AI 2025 Build Documentation
|
|
|
|
## Overview
|
|
|
|
EXO-AI 2025 is a cognitive substrate implementation featuring hypergraph computation, temporal dynamics, federation protocols, and WebAssembly compilation capabilities.
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
exo-ai-2025/
|
|
├── crates/
|
|
│ ├── exo-core/ ✅ COMPILES
|
|
│ ├── exo-hypergraph/ ✅ COMPILES
|
|
│ ├── exo-federation/ ✅ COMPILES
|
|
│ ├── exo-wasm/ ✅ COMPILES
|
|
│ ├── exo-manifold/ ❌ FAILS (burn-core bincode issue)
|
|
│ ├── exo-backend-classical/ ❌ FAILS (39 API mismatch errors)
|
|
│ ├── exo-node/ ❌ FAILS (6 API mismatch errors)
|
|
│ └── exo-temporal/ ❌ FAILS (7 API mismatch errors)
|
|
├── docs/
|
|
├── tests/
|
|
├── benches/
|
|
└── Cargo.toml (workspace configuration)
|
|
```
|
|
|
|
## Dependencies
|
|
|
|
### System Requirements
|
|
|
|
- **Rust**: 1.75.0 or later
|
|
- **Cargo**: Latest stable
|
|
- **Platform**: Linux, macOS, or Windows
|
|
- **Architecture**: x86_64, aarch64
|
|
|
|
### Key Dependencies
|
|
|
|
- **ruvector-core**: Vector database and similarity search
|
|
- **ruvector-graph**: Hypergraph data structures and algorithms
|
|
- **tokio**: Async runtime
|
|
- **serde**: Serialization framework
|
|
- **petgraph**: Graph algorithms
|
|
- **burn**: Machine learning framework (0.14.0)
|
|
- **wasm-bindgen**: WebAssembly bindings
|
|
|
|
## Build Instructions
|
|
|
|
### 1. Clone and Setup
|
|
|
|
```bash
|
|
cd /home/user/ruvector/examples/exo-ai-2025
|
|
```
|
|
|
|
### 2. Check Workspace Configuration
|
|
|
|
The workspace is configured with:
|
|
- 8 member crates
|
|
- Shared dependency versions
|
|
- Custom build profiles (dev, release, bench, test)
|
|
|
|
### 3. Build Individual Crates (Successful)
|
|
|
|
```bash
|
|
# Core substrate implementation
|
|
cargo build -p exo-core
|
|
|
|
# Hypergraph computation
|
|
cargo build -p exo-hypergraph
|
|
|
|
# Federation protocol
|
|
cargo build -p exo-federation
|
|
|
|
# WebAssembly compilation
|
|
cargo build -p exo-wasm
|
|
```
|
|
|
|
### 4. Attempt Full Workspace Build (Currently Fails)
|
|
|
|
```bash
|
|
# This will fail due to known issues
|
|
cargo build --workspace
|
|
```
|
|
|
|
**Expected Result**: 53 compilation errors across 4 crates
|
|
|
|
## Build Profiles
|
|
|
|
### Development Profile
|
|
|
|
```toml
|
|
[profile.dev]
|
|
opt-level = 0
|
|
debug = true
|
|
debug-assertions = true
|
|
overflow-checks = true
|
|
incremental = true
|
|
```
|
|
|
|
**Usage**: `cargo build` (default)
|
|
|
|
### Release Profile
|
|
|
|
```toml
|
|
[profile.release]
|
|
opt-level = 3
|
|
lto = "thin"
|
|
codegen-units = 1
|
|
debug = false
|
|
strip = true
|
|
```
|
|
|
|
**Usage**: `cargo build --release`
|
|
|
|
### Benchmark Profile
|
|
|
|
```toml
|
|
[profile.bench]
|
|
inherits = "release"
|
|
lto = true
|
|
codegen-units = 1
|
|
```
|
|
|
|
**Usage**: `cargo bench`
|
|
|
|
### Test Profile
|
|
|
|
```toml
|
|
[profile.test]
|
|
opt-level = 1
|
|
debug = true
|
|
```
|
|
|
|
**Usage**: `cargo test`
|
|
|
|
## Known Issues
|
|
|
|
### Critical Issues (Build Failures)
|
|
|
|
#### 1. burn-core Bincode Compatibility (exo-manifold)
|
|
|
|
**Error**: `cannot find function 'decode_borrowed_from_slice' in module 'bincode::serde'`
|
|
|
|
**Cause**: burn-core 0.14.0 expects bincode 1.3.x API but resolves to bincode 2.0.x
|
|
|
|
**Status**: BLOCKING - prevents exo-manifold compilation
|
|
|
|
**Workaround Attempted**: Cargo patch to force bincode 1.3 (failed - same source error)
|
|
|
|
**Recommended Fix**:
|
|
- Wait for burn-core 0.15.0 with bincode 2.0 support
|
|
- OR use git patch to custom burn-core fork
|
|
- OR temporarily exclude exo-manifold from workspace
|
|
|
|
#### 2. exo-backend-classical API Mismatches (39 errors)
|
|
|
|
**Errors**: Type mismatches between exo-core API and backend implementation
|
|
|
|
Key issues:
|
|
- `SearchResult` missing `id` field
|
|
- `Metadata` changed from HashMap to struct (no `insert` method)
|
|
- `Pattern` missing `id` and `salience` fields
|
|
- `SubstrateTime` expects `i64` but receives `u64`
|
|
- `Filter` has `conditions` field instead of `metadata`
|
|
- Various Option/unwrap type mismatches
|
|
|
|
**Status**: BLOCKING - requires API refactoring
|
|
|
|
**Recommended Fix**: Align exo-backend-classical with exo-core v0.1.0 API
|
|
|
|
#### 3. exo-temporal API Mismatches (7 errors)
|
|
|
|
**Errors**: Similar API compatibility issues with exo-core
|
|
|
|
Key issues:
|
|
- `SearchResult` structure mismatch
|
|
- `Metadata` type changes
|
|
- `Pattern` field mismatches
|
|
|
|
**Status**: BLOCKING
|
|
|
|
**Recommended Fix**: Update to match exo-core API changes
|
|
|
|
#### 4. exo-node API Mismatches (6 errors)
|
|
|
|
**Errors**: Trait implementation and API mismatches
|
|
|
|
**Status**: BLOCKING
|
|
|
|
**Recommended Fix**: Implement updated exo-core traits correctly
|
|
|
|
### Warnings (Non-Blocking)
|
|
|
|
- **ruvector-core**: 12 unused import warnings
|
|
- **ruvector-graph**: 81 warnings (mostly unused code and missing docs)
|
|
- **exo-federation**: 8 warnings (unused variables)
|
|
- **exo-hypergraph**: 2 warnings (unused variables)
|
|
|
|
These warnings do not prevent compilation but should be addressed for code quality.
|
|
|
|
## Platform Support Matrix
|
|
|
|
| Platform | Architecture | Status | Notes |
|
|
|----------|-------------|--------|-------|
|
|
| Linux | x86_64 | ✅ Partial | Core crates compile |
|
|
| Linux | aarch64 | ⚠️ Untested | Should work |
|
|
| macOS | x86_64 | ⚠️ Untested | Should work |
|
|
| macOS | arm64 | ⚠️ Untested | Should work |
|
|
| Windows | x86_64 | ⚠️ Untested | May need adjustments |
|
|
| WASM | wasm32 | 🚧 Partial | exo-wasm compiles |
|
|
|
|
## Testing
|
|
|
|
### Unit Tests (Partial)
|
|
|
|
```bash
|
|
# Test individual crates
|
|
cargo test -p exo-core
|
|
cargo test -p exo-hypergraph
|
|
cargo test -p exo-federation
|
|
cargo test -p exo-wasm
|
|
|
|
# Full workspace test (will fail)
|
|
cargo test --workspace
|
|
```
|
|
|
|
### Integration Tests
|
|
|
|
Integration tests are located in `tests/` but currently cannot run due to build failures.
|
|
|
|
## Benchmarking
|
|
|
|
Benchmarks are located in `benches/` but require successful compilation of all crates.
|
|
|
|
```bash
|
|
# When compilation issues are resolved
|
|
cargo bench --workspace
|
|
```
|
|
|
|
## Continuous Integration
|
|
|
|
### Pre-commit Checks
|
|
|
|
```bash
|
|
# Check compilation
|
|
cargo check --workspace
|
|
|
|
# Run tests
|
|
cargo test --workspace
|
|
|
|
# Check formatting
|
|
cargo fmt --all -- --check
|
|
|
|
# Run linter (if clippy available)
|
|
cargo clippy --workspace -- -D warnings
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### Issue: "profiles for the non root package will be ignored"
|
|
|
|
**Symptom**: Warnings about profiles in exo-wasm and exo-node
|
|
|
|
**Solution**: Remove `[profile.*]` sections from individual crate Cargo.toml files. Profiles should only be defined at workspace root.
|
|
|
|
### Issue: "cannot find function in bincode::serde"
|
|
|
|
**Symptom**: burn-core compilation failure
|
|
|
|
**Solution**: See Known Issues #1. This is a dependency compatibility issue requiring upstream fix.
|
|
|
|
### Issue: "method not found" or "field does not exist"
|
|
|
|
**Symptom**: exo-backend-classical, exo-node, exo-temporal failures
|
|
|
|
**Solution**: These crates were developed against an older exo-core API. Requires refactoring to match current API.
|
|
|
|
## Next Steps
|
|
|
|
### Immediate Actions Required
|
|
|
|
1. **Fix burn-core bincode issue**:
|
|
- Patch to use burn-core from git with bincode 2.0 support
|
|
- OR exclude exo-manifold until burn 0.15.0 release
|
|
|
|
2. **Refactor backend crates**:
|
|
- Update exo-backend-classical to match exo-core v0.1.0 API
|
|
- Update exo-temporal API usage
|
|
- Update exo-node trait implementations
|
|
|
|
3. **Address warnings**:
|
|
- Remove unused imports
|
|
- Add missing documentation
|
|
- Fix unused variable warnings
|
|
|
|
### Verification Steps
|
|
|
|
After fixes are applied:
|
|
|
|
```bash
|
|
# 1. Clean build
|
|
cargo clean
|
|
|
|
# 2. Check workspace
|
|
cargo check --workspace
|
|
|
|
# 3. Build workspace
|
|
cargo build --workspace
|
|
|
|
# 4. Run tests
|
|
cargo test --workspace
|
|
|
|
# 5. Release build
|
|
cargo build --workspace --release
|
|
|
|
# 6. Verify benches
|
|
cargo bench --workspace --no-run
|
|
```
|
|
|
|
## Additional Resources
|
|
|
|
- **Project Repository**: https://github.com/ruvnet/ruvector
|
|
- **Ruvector Documentation**: See main project docs
|
|
- **Architecture Documentation**: See `architecture/` directory
|
|
- **Specifications**: See `specs/` directory
|
|
|
|
## Support
|
|
|
|
For build issues or questions:
|
|
1. Check this document for known issues
|
|
2. Review validation report: `docs/VALIDATION_REPORT.md`
|
|
3. Check architecture docs: `architecture/`
|
|
4. File an issue with full build output
|
|
|
|
---
|
|
|
|
**Last Updated**: 2025-11-29
|
|
**Workspace Version**: 0.1.0
|
|
**Build Status**: ⚠️ PARTIAL (4/8 crates compile successfully)
|