mindcore 0.2.0

Pluggable, feature-gated memory engine for AI agent applications
Documentation
# 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

| File | Purpose |
|------|---------|
| `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

| Component | Technology |
|-----------|------------|
| 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"
```