# SHCortex Benchmark Suite — Reproducibilidad

Este benchmark mide compresión, latencia y fidelidad del pipeline SHCortex con LCC.

## Requisitos

- Rust 1.75+ (`cargo build --release` desde la raíz del workspace)
- Python 3.9+ con `pip install pysqlite3` (para scripts Python)
- (Opcional) Ollama para benchmarks con LLM

## Cómo reproducir los resultados

### 1. Compilar SHCortex
```bash
cargo build --release
```

### 2. Benchmark de compresión y latencia (CLI)
```bash
# Compresión + prompt
cargo run -p shcortex-cli -- compress "texto de 2000 palabras..." --db /tmp/bench.db

# Medición de retrieve
cargo run -p shcortex-cli -- retrieve "palabras clave" --db /tmp/bench.db

# Stress test con dataset local
cargo run -p shcortex-cli -- stress-test --file tests/benchmark/locomo/tasks.jsonl --db /tmp/bench.db
```

### 3. Benchmark con Ollama
Requiere Ollama corriendo en `localhost:11434`:
```bash
cargo run -p shcortex-cli -- bench-latency "texto" "pregunta" --model llama3:8b
cargo run -p shcortex-cli -- prompt-ollama "resume" --db /tmp/bench.db
```

### 5. Tests unitarios
```bash
cargo test --workspace
```

## 📊 Resultados reportados

| Métrica | Resultado | Cómo medir |
|---------|-----------|------------|
| Compresión | 99.87% (0.13% tokens) | `stress-test` output |
| Latencia LCC | 0.03-1.06ms | `compress` output |
| Retrieve | < 1ms | `retrieve` output |
| Fidelidad temporal | 100% | scripts en `locomo/` |

## Scripts Python

### Sin compilación previa (usan `cargo run`)
| Script | Uso |
|--------|-----|
| `run_benchmark.py` | Benchmark completo desde tasks.json |
| `stress_large.py` | Stress test con conversación generada |
| `generate_tasks.py` | Genera dataset `locomo/tasks.json` |

### Requieren PyO3 (`cargo build -p shcortex-pyo3 --release`)
Estos scripts están en `pyo3/` y dependen del binding nativo:
| Script | Uso |
|--------|-----|
| `pyo3/bench_pyo3.py` | Latencia vía binding nativo |
| `pyo3/validate_models.py` | Validación multi-modelo Ollama |
| `pyo3/monitor.py` | Monitoreo en tiempo real |
| `pyo3/test_large_dataset.py` | Pruebas con datasets grandes |

## Parámetros usados

| Parámetro | Valor | Archivo |
|-----------|-------|---------|
| IG_THRESHOLD | 0.15 | `crates/malla_multi/src/lib.rs` |
| LAMBDA | 0.015 | `crates/bimoh/src/lib.rs` |
| BETA | 0.07 | `crates/bimoh/src/lib.rs` |
| Convergencia | adaptativa (max 50) | `crates/shcortex-cli/src/main.rs` |
| Sparsity mínima | 0.13% | `crates/lcc/src/lcc.rs` |

## Resultados

Ver `results_consolidated.md` para el informe detallado.