Three critical bugs were preventing the intelligence layer from using
learned patterns:
1. State format mismatch: CLI used spaces ("editing rs in project")
but Q-table used underscores ("edit_rs_in_project")
- Fixed in cli.js: all states now use underscore format
2. stateKey() hyphen normalization: Function converted hyphens to
underscores, but Q-table keys had hyphens (e.g. "ruvector-core")
- Fixed regex: /[^a-z0-9-]+/g preserves hyphens
3. A/B testing control group: 10% random sessions ignored learning
- Reduced holdout to 5% with persistent session assignment
- Added INTELLIGENCE_MODE=treatment env override for development
Result: Agent recommendations now show 80% confidence for Rust files
using learned Q-values, instead of 0% with random selection.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace technical executive summary with clear explanation of why
RuVector matters:
- From symptom monitoring to causal monitoring
- Mincut as leading indicator, not metric
- Algorithm becomes control signal (control plane, not analytics)
- Failure mode class change: cascading → graceful degradation
- Explainable operations via witness edges
Key message: "We're not making vector search faster.
We're making vector infrastructure survivable."
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>