# Project: MindCore
## On Entry (MANDATORY)
Run immediately when entering this project:
```bash
session-context
```
---
## Project Overview
**MindCore** is a standalone Rust crate providing a pluggable, feature-gated memory engine for AI agent applications.
**Status:** v0.1.0 published on crates.io.
---
## Key Files
| `MINDCORE_ARCHITECTURE.md` | Full crate structure and API design |
| `MINDCORE_RESEARCH.md` | Landscape analysis, academic foundations, specification |
| `DECISIONS.md` | Architectural decisions log |
| `research/` | Competitive landscape research |
---
## Tech Stack
| Language | Rust |
| Storage | SQLite + rusqlite + FTS5 |
| Embeddings | Candle (granite-small-r2 native, bge-small-en-v1.5 WASM), feature-gated |
| Search | FTS5 keyword + vector similarity + RRF hybrid |
| Decay Model | ACT-R activation-based |
---
## Design Principles
1. **Library, not framework** — projects call into MindCore
2. **Feature-gated everything** — heavy deps behind compile-time flags
3. **Local-first** — SQLite-backed, no cloud dependency
4. **Pure Rust where possible** — candle over ort
5. **Proven patterns only** — every component backed by research or established practice
---
## Memory Commands
**Log decisions/notes:**
```bash
memory-log decision "topic" "what was decided and why"
memory-log note "topic" "content"
memory-log blocker "topic" "what is blocking"
```
**Manage tasks:**
```bash
task add "description" [priority]
task list
task done <id>
```
---
## DIAL — Autonomous Development Loop
This project uses **DIAL** (Deterministic Iterative Agent Loop) for autonomous development.
### Get Full Instructions
```bash
sqlite3 ~/projects/dial/dial_guide.db "SELECT content FROM sections WHERE section_id LIKE '2.%' ORDER BY sort_order;"
```
### Quick Reference
```bash
dial status # Current state
dial task list # Show pending tasks
dial task next # Show next task
dial iterate # Start next task, get context
dial validate # Run tests, commit on success
dial learn "text" -c category # Record a learning
dial stats # Statistics dashboard
```
### The DIAL Loop
1. `dial iterate` → Get task + context
2. Implement (one task only, no placeholders, search before creating)
3. `dial validate` → Test and commit
4. On success: next task. On failure: retry (max 3).
### Configuration
```bash
dial config set build_cmd "your build command"
dial config set test_cmd "your test command"
```