Skip to content

Releases: luna-system/ada

Ada v3.0.0 - The Pair Programmer

21 Dec 23:25
v3.0.0
2e770d1

Choose a tag to compare

Ada v3.0.0 - The Pair Programmer

Released: December 21, 2025

🎉 Ada Goes to Work

This release marks Ada's transformation from a local AI assistant into a fully-functional VS Code pair programmer. Ada Chat v1.1.0 ships with 7 working tools, tool transparency UI, and the speed to actually be useful.

Someone ran this code. Fixed bugs. Told us what broke. This is real now.

What's New

Ada Chat Extension (v1.1.0)

A VS Code extension that actually works:

  • 7 Working Tools:

    • ada_introspect - Workspace analysis with TODO/FIXME scanning
    • ada_search_memory - RAG memory search
    • ada_read_file - File reading with line ranges
    • ada_search - Codebase text search
    • ada_list_files - Directory listing with glob patterns
    • ada_symbols - Code symbol search (functions, classes, etc.)
    • ada_git_status - Git repository status
  • Tool Transparency: See exactly what Ada is doing - collapsible tool cards show inputs, outputs, timing

  • Intent Classification: Ada understands context and uses the right tools automatically

  • 137ms TTFT: Fast enough to be useful (was 6 seconds)

  • Brain + Direct Modes: Connect to Ada's RAG brain or go direct to Ollama

Architecture

  • Monorepo Structure: Clean package separation (@anthropic-claude/*@ada-code/*)
  • Bidirectional Tool Infrastructure: Foundation for LLM-initiated tool calls
  • Universal Brain API: Accepts prompt, message, or messages - just works

Community

  • First External User! @18fadly-anthony ran Ada, found bugs, and reported them
  • Security Hardening: Removed .env from git tracking, documented API key rotation
  • SELinux Support: Added troubleshooting docs for Fedora/RHEL users
  • OLLAMA_BASE_URL: Now configurable via environment variable

Installation

VS Code Extension

cd ada-vscode/packages/ada-chat
pnpm install && pnpm build && pnpm package
code --install-extension ada-chat-1.1.0.vsix

Full Stack

git clone https://github.com/luna-system/ada.git
cd ada
cp .env.example .env  # Configure your settings
docker compose up -d

Breaking Changes

None. v3.0 is a capability expansion, not an API break. All v2.x configurations continue to work.

Stats

  • 63 commits since v2.10.0
  • 23 features, 8 fixes, 12 docs updates
  • 159 files changed in the tool framework merge alone
  • 2 GitHub stars, 2 watchers, 1 external contributor

What v3.0 Means

  • v1.x = "It works" - Basic chat, RAG, memory
  • v2.x = "It's smart" - Biomimetic features, research, specialists
  • v3.0 = "It's useful" - VS Code integration, tools, pair programming

Ada went from being something you talk to to something you work with.

Acknowledgments

Thanks to @18fadly-anthony for being the first person to run Ada's code, find the bugs, and take the time to report them. You validated that this project is real.

What's Next

  • More tools (terminal execution, file editing)
  • Bidirectional tool calls (Ada asks for tools mid-response)
  • Inline completions (ghost text)
  • The debut ✨

Built by Luna + Ada. Privacy-first. Local-first. Copilot alternative.

v2.9.0 - Phase 2C: Parallel Optimizations (2.5x Speedup)

19 Dec 07:43
v2.9.0
c07a820

Choose a tag to compare

🚀 Ada v2.9.0 - Parallel Optimizations

Performance Revolution: 2.5x speedup through parallel RAG retrieval and specialist execution!

Highlights

  • 3.96x speedup on parallel RAG retrieval (200ms → 50ms)
  • 2.98x speedup on parallel specialist execution (150ms → 50ms)
  • Saves 120ms per request in realistic benchmarks
  • <100ms prompt building combined with v2.8.0 router
  • 64/64 tests passing in 0.27s

What's New

Parallel RAG Context Retrieval

Fetches persona, memories, FAQs, and turns concurrently using ThreadPoolExecutor. Sequential execution took 200ms, parallel execution takes just 50ms.

Priority-Based Specialist Execution

HIGH/CRITICAL priority specialists (OCR, docs lookup) execute concurrently. MEDIUM/LOW specialists execute sequentially to maintain ordering guarantees.

Performance Targets Exceeded

  • Router overhead: <10ms ✅
  • Cache lookup: <1ms ✅
  • Parallel retrieval: >2x ✅ (achieved 3.96x!)
  • First token latency: <200ms ✅ (achieved ~90ms!)

Phase 2 Complete

Phase 2 journey (Router → Cache → Parallel):

  • v2.8.0: Intelligent routing + response caching
  • v2.9.0: Parallel execution for 2.5x speedup
  • Combined: From 210ms to <100ms prompt building

Use Cases

  • Code completion: Sub-2s with full RAG context
  • Quick queries: <5ms cached, 130ms uncached
  • Chat responses: 120ms faster first token
  • Reasoning tasks: Context ready before LLM starts

Technical Details

See full release notes: RELEASE_v2.9.0.md

*Zero breaking changes - automatic performance improvements for all userspush origin trunk && git push origin v2.9.0 🎉


Built with love by the Ada team ❤️

v2.8.0 - Contextual Router + Response Cache (Phase 2A + 2B)

19 Dec 07:30
v2.8.0
9dec2b9

Choose a tag to compare

Release Notes: v2.8.0 - Contextual Router + Response Cache

Released: December 19, 2025
Branch: trunk
Tag: v2.8.0

🎯 Summary

Intelligent request routing with response caching - 48/48 tests passing!

Research-validated contextual routing system (v2.3.0 findings) that analyzes requests and routes them to optimal processing paths. Includes LRU response cache with TTL for fast repeated queries.

Key Achievement: Context-matching approach (r=0.924) beats universal one-size-fits-all (r=0.726) - +27% improvement!

🚀 Features

Phase 2A: Contextual Router

Intelligent Request Classification:

  • CODE_COMPLETION - Identifies code completions with FIM context
  • CHAT - Regular conversational messages
  • REASONING - Complex analysis requiring thinking mode
  • QUICK_QUERY - Simple factual questions

Smart Routing Decisions:

Request Type Model Format RAG Cache Temp Timeout
CODE_COMPLETION qwen2.5-coder:7b FIM ✅ 1hr 0.1 30s
CHAT deepseek-r1 chat 0.7 30s
REASONING deepseek-r1 chat 0.7 60s
QUICK_QUERY deepseek-r1 chat ✅ 24hr 0.3 15s

Context Analysis:

  • Language detection (Python, JavaScript, Rust, TypeScript, Go)
  • Reasoning keyword detection ("analyze", "compare", "trade-offs")
  • Simple query patterns ("What is X?", "Who is Y?")
  • SHA256 cache key generation with normalization

Performance:

  • Routing time: < 10ms (verified in tests)
  • Zero overhead for non-routed paths
  • Backward compatible (explicit model override still works)

Phase 2B: Response Cache

LRU Cache with TTL:

  • In-memory OrderedDict (fast, simple, no Redis)
  • Max 1000 entries with LRU eviction
  • Per-entry TTL (from router config)
  • Expiration checking on access
  • Hit/miss/eviction tracking

Cache Policies:

  • Code completion: 1 hour TTL
  • Quick queries: 24 hour TTL
  • Chat: disabled (dynamic context)
  • Reasoning: disabled (too complex)

Performance:

  • Cache lookup: < 1ms
  • Cache store: < 5ms
  • Memory: ~100KB per entry (~100MB for 1000 entries)

Integration:

  • Cache check AFTER routing, BEFORE prompt building
  • Cached responses streamed via SSE (maintains streaming UX)
  • Cache stats included in done metadata
  • Pattern-based invalidation support

📊 Technical Details

Router Architecture

Core Components:

  • brain/router.py (347 lines)
    • ContextualRouter class with classification + routing logic
    • RequestType enum for request classification
    • RequestContext dataclass for request details
    • ResponsePath dataclass for routing decisions

Integration:

  • brain/app.py integration (~100 lines total)
    • Router instance initialized at module level
    • Called at start of /v1/chat/stream endpoint
    • Routing decision logged with timing
    • Metadata included in SSE done event

Cache Architecture

Implementation:

  • brain/response_cache.py (299 lines)
    • ResponseCache class with LRU + TTL
    • CachedResponse dataclass for entries
    • ResponseCacheStats for metrics
    • Pattern matching for invalidation

Cache Flow:

  1. Check cache if response_path.use_cache is True
  2. On HIT: Stream cached response via SSE, return early
  3. On MISS: Continue to LLM generation
  4. After generation: Store response with TTL
  5. Include cache stats in metadata

Response Metadata

Routing info now included in SSE done events:

{
  "type": "done",
  "routing": {
    "request_type": "code_completion",
    "model": "qwen2.5-coder:7b",
    "format": "fim",
    "use_rag": false,
    "routing_time_ms": 0.003,
    "temperature": 0.1
  },
  "response_cache": {
    "enabled": true,
    "hit_rate": 0.85,
    "total_entries": 247,
    "hits": 340,
    "misses": 60
  }
}

🧪 Testing

Test Coverage: 48/48 passing (100%)

Contextual Router Tests (22 tests)

  • Request classification (4 tests)
  • Routing decisions (4 tests)
  • Context analysis (4 tests)
  • Cache key generation (2 tests)
  • Model selection (2 tests)
  • Streaming configuration (2 tests)
  • Error handling (2 tests)
  • Performance metrics (2 tests)

Integration Tests (7 tests)

  • Code completion routing
  • Chat routing
  • Reasoning routing
  • Quick query routing
  • Routing performance
  • Cache key consistency

Response Cache Tests (19 tests)

  • CachedResponse dataclass (3 tests)
  • Cache operations (12 tests)
  • Statistics tracking (2 tests)
  • Integration scenarios (2 tests)

🔬 Research Foundation

This implementation directly applies v2.3.0 research findings:

Original Research:

  • Context-matching: r=0.924
  • Universal approach: r=0.726
  • Improvement: +27% correlation

Applied Here:

  • Code completion → specialized model (qwen2.5-coder)
  • Chat → reasoning model (deepseek-r1 + RAG)
  • Quick queries → cache (avoid LLM entirely)
  • Result: Context-aware routing > one-model-fits-all

📈 Performance Impact

Expected Improvements:

  1. Code Completion:

    • Already fast (10.6x from v2.6.0)
    • Now cacheable (1hr TTL)
    • Further speedup on repeated completions
  2. Quick Queries:

    • Instant response on cache hit
    • 24hr TTL = high hit rate expected
    • Eliminates LLM call overhead
  3. Chat/Reasoning:

    • No performance change (already optimal)
    • Correct model selection by default
    • More explicit reasoning when needed

Measured Performance:

  • Routing: <10ms overhead (negligible)
  • Cache lookup: <1ms (faster than LLM by 100x-1000x)
  • Cache store: <5ms (async after response)

🎯 Use Cases

Code Completion (Cached)

# First completion - cache miss
def hello() -> str:
    return "Hello, World!"  # <- Generated by qwen2.5-coder

# Same context again - cache hit (instant!)
def hello() -> str:
    return "Hello, World!"  # <- From cache (<1ms)

Quick Queries (Cached)

User: What is Python?
Ada: [instant from 24hr cache]

User: Who created Python?
Ada: [instant from 24hr cache]

Chat (Full RAG)

User: Tell me about my recent memories
Ada: [full RAG context retrieval + specialists]

Reasoning (Thinking Mode)

User: Analyze the trade-offs between monolithic and microservices
Ada: [thinking enabled, 60s timeout, full analysis]

🔄 Backward Compatibility

Fully backward compatible!

  • Explicit model parameter still works
  • Existing API clients unaffected
  • Cache disabled by default for chat/reasoning
  • Router respects all existing request parameters

📦 Files Changed

Phase 2A (Router):
brain/router.py                      +347 lines (router implementation)
brain/app.py                         +60 lines (routing integration)
tests/test_contextual_router.py      +345 lines (core tests)
tests/test_router_integration.py    +168 lines (integration tests)

Phase 2B (Cache):
brain/response_cache.py              +299 lines (cache implementation)
brain/app.py                         +40 lines (cache integration)
tests/test_response_cache.py         +376 lines (cache tests)

Documentation:
.ai/CONTEXTUAL-ROUTER-SUMMARY.md     +305 lines (complete docs)

Total: 7 files changed, 1966 insertions(+)

🚀 Upgrade Path

For Users:

  • No action needed! Router is automatic.
  • Cache benefits immediate for code completion + quick queries.
  • Monitor response_cache section in metadata for hit rates.

For Developers:

  • Review .ai/CONTEXTUAL-ROUTER-SUMMARY.md for architecture details.
  • Tests demonstrate all routing scenarios.
  • Cache can be inspected via response_cache.get_stats().

🎉 Contributors

Built by Luna + Claude Sonnet 4.5 in one incredible session!

Timeline:

  • Context recovery and handoff review
  • v2.6.0 + v2.7.0 releases published
  • Phase 2A: Router (22 tests, 100% passing)
  • Phase 2B: Cache (19 tests, 100% passing)
  • Integration tests (7 tests)
  • Documentation and release

Total: 3 major releases in one day (v2.6.0, v2.7.0, v2.8.0) 🚀

📝 Future Work

Phase 2C (Future):

  • Streaming optimizations (first token < 200ms)
  • Parallel specialist execution
  • RAG context prefetching
  • Adaptive routing (learn from feedback)
  • ML-based classification (replace pattern matching)

Phase 3:

  • Full Copilot parity features
  • Multi-file context
  • Semantic code search
  • Auto-complete polish

🔗 Related Releases


TDD Victory: Tests written first, 100% passing throughout! 🎯

v2.7.0 - Ada Log Intelligence (Minecraft Crash Parser)

19 Dec 07:25
v2.7.0
d916a25

Choose a tag to compare

Release v2.7.0 - Ada Log Intelligence 📊

Release Date: 2025-12-19
Branch: feature/ada-log-intelligence → trunk
Status: ✅ PRODUCTION READY - Phase 1 of Log Intelligence Roadmap

🎯 Executive Summary

Feature: Biomimetic log analysis for kids and DevOps!

Key Achievement: Apply research-validated importance scoring from v2.2 to log analysis. Understand Minecraft crashes AND production logs using the same cognitive architecture.

Impact:

  • Kid-friendly explanations of Minecraft crash logs
  • Pattern matching for common errors (OptiFine/Sodium conflicts, OutOfMemory)
  • Foundation for 100:1 log compression using signal weights
  • Extensible parser system for JSON logs, syslog, custom formats

🆕 What's New

Ada Logs Package

New standalone package: ada-logs

  • Pure Python library (Python 3.11+)
  • CC0 license (public domain)
  • Installable via pip: pip install ada-logs
  • CLI tool: ada-logs analyze crash.log

Minecraft Parser:

  • Detects Minecraft crash reports automatically
  • Parses Java exceptions and stack traces
  • Extracts mod lists and conflict patterns
  • Kid-friendly explanations!

Example:

$ ada-logs analyze minecraft-crash-2024-12-19.log --for-kids

🎮 MINECRAFT CRASH ANALYSIS

**What Happened:** OptiFine and Sodium are fighting!

OptiFine and Sodium are both trying to make Minecraft run faster,
but they're doing it in ways that don't work together. It's like
two people trying to steer the same car at the same time!

**How to Fix:** Remove one of the performance mods

**Difficulty:** Easy

Specialist Integration

LogAnalysisSpecialist for Ada:

  • Auto-activates on .log file uploads
  • Integrates Minecraft parser into conversational interface
  • Returns structured analysis + kid-friendly explanations
  • Priority: MEDIUM (appears after high-priority specialists)

Example conversation:

User: [uploads crash-2024-12-19.log]
Ada: I analyzed your Minecraft crash log! It looks like OptiFine 
     and Sodium are conflicting. Would you like me to explain 
     what's happening?
User: Yes!
Ada: [provides kid-friendly explanation and fix steps]

Pattern Matching System

Smart error detection:

  • OptiFine + Sodium conflicts
  • OutOfMemoryError (Java heap space)
  • Mod loading failures
  • Null pointer exceptions
  • Class not found errors

Confidence scoring:

  • High (90%+): Clear pattern match
  • Medium (70-89%): Probable cause identified
  • Low (<70%): Generic analysis

📊 Technical Details

Architecture

Log File → Parser → PatternMatcher → Analysis
  (.log)   (struct)   (signatures)    (kid-friendly)

Components:

  1. LogParser protocol - Duck-typed interface for parsers
  2. MinecraftParser - First implementation (extensible!)
  3. PatternMatcher - Regex + keyword matching
  4. minecraft_patterns.json - Declarative pattern database
  5. LogAnalysis dataclass - Structured output format

Design Principles

Kid-friendly by default:

  • Avoid jargon ("fighting" instead of "incompatible")
  • Use analogies (steering the same car)
  • Action-oriented fixes
  • Difficulty ratings (Easy/Medium/Hard)

Extensible architecture:

  • Protocol-based (not inheritance)
  • JSON pattern definitions
  • Multiple parser support
  • Easy to add new log formats

Production-ready:

  • 40 tests (29 ada-logs + 11 specialist)
  • 100% test coverage on parsers
  • Type hints everywhere
  • CLI + library interfaces

🧪 Testing

Ada Logs Package Tests (29 passing)

cd ada-logs
PYTHONPATH=src python -m pytest tests/ -v

✓ CLI imports and commands (8 tests)
✓ Minecraft parser detection (3 tests)
✓ Parser protocol compliance (3 tests)
✓ Pattern matching (10 tests)
✓ Error explanations (5 tests)

Specialist Integration Tests (11 passing)

cd /home/luna/Code/ada-v1
PYTHONPATH=ada-logs/src python -m pytest tests/test_log_analysis_specialist.py -v

✓ Specialist activation logic (3 tests)
✓ Minecraft log processing (3 tests)
✓ Error handling (2 tests)
✓ Metadata and priority (3 tests)

📦 Files Added

Ada Logs Package (12 files)

Core:

  • ada-logs/pyproject.toml - Package metadata
  • ada-logs/README.md - Quick start guide
  • ada-logs/LICENSE - CC0 public domain

Source:

  • ada-logs/src/ada_logs/__init__.py - Package exports
  • ada-logs/src/ada_logs/core.py - LogAnalysis dataclass
  • ada-logs/src/ada_logs/cli.py - CLI tool (ada-logs command)
  • ada-logs/src/ada_logs/parsers/minecraft.py - Minecraft parser
  • ada-logs/src/ada_logs/parsers/protocol.py - Parser interface
  • ada-logs/src/ada_logs/patterns/matcher.py - Pattern matching
  • ada-logs/src/ada_logs/patterns/minecraft_patterns.json - Pattern database

Tests:

  • ada-logs/tests/conftest.py - Pytest fixtures
  • ada-logs/tests/test_cli.py - CLI tests
  • ada-logs/tests/test_minecraft_parser.py - Parser tests
  • ada-logs/tests/test_parser_protocol.py - Protocol tests
  • ada-logs/tests/test_pattern_matching.py - Pattern tests

Specialist Integration (2 files)

  • brain/specialists/log_analysis_specialist.py - LogAnalysisSpecialist
  • tests/test_log_analysis_specialist.py - Specialist tests

Dependencies (2 files)

  • pyproject.toml - Added ada-logs dependency
  • uv.lock - Updated lockfile

🚀 Upgrade Guide

Prerequisites

  • Ada v2.7.0+
  • Python 3.11+ (3.13 recommended)

Installation

1. Update Ada:

cd /home/luna/Code/ada-v1
git pull origin trunk
uv sync

2. Install ada-logs (automatic via dependency):

# Already installed via ada's pyproject.toml!
# Or install standalone:
pip install ada-logs

3. Test it:

# CLI
ada-logs analyze crash.log --for-kids

# Or upload a .log file to Ada's web UI!

🎯 Roadmap: Ada Log Intelligence

Phase 1: Minecraft Parser - THIS RELEASE

  • Kid-friendly crash explanations
  • Pattern matching system
  • Specialist integration
  • CLI tool

🔜 Phase 2: Signal Calculators - Next

  • Port biomimetic signal calculation
  • Temporal decay for old logs
  • Surprise/novelty detection
  • Habituation for repeated errors

🔜 Phase 3: Gradient Compression - Future

  • Apply FULL/CHUNKS/SUMMARY/DROPPED levels
  • 100:1 compression ratio
  • ChromaDB storage
  • Semantic search

🔜 Phase 4: Production Logs - Future

  • JSON log parser
  • Syslog format support
  • Custom regex patterns
  • Real-time ingestion

🔜 Phase 5: Alerting & Integration - Future

  • Smart alerting (zero false positives)
  • Slack/Discord webhooks
  • Kubernetes DaemonSet
  • Grafana datasource

📖 Examples

Minecraft Crash Analysis

OptiFine + Sodium Conflict:

from ada_logs.parsers.minecraft import MinecraftParser

parser = MinecraftParser()
analysis = parser.parse(crash_log_content)

print(analysis.kid_explanation)
# "OptiFine and Sodium are fighting! They're both trying to 
#  make Minecraft faster but in ways that don't work together."

print(analysis.fix)
# "Remove one of the performance mods (keep Sodium, it's faster)"

print(analysis.confidence)
# 0.95  (95% confident)

Out of Memory:

analysis = parser.parse(oom_crash_log)

print(analysis.kid_explanation)
# "Minecraft ran out of memory! Think of it like trying to fit 
#  too many toys in your backpack."

print(analysis.fix)
# "Allocate more RAM: -Xmx4G (or higher)"

print(analysis.difficulty)
# "medium"  (requires launcher configuration)

Specialist Integration

Ada conversation:

[User uploads crash-2024-12-19.log]

Ada: 📊 LOG ANALYSIS: Mod Conflict

**What Happened:** OptiFine and Sodium are fighting!

OptiFine and Sodium are both trying to make Minecraft run faster,
but they're doing it in ways that don't work together. It's like
two people trying to steer the same car at the same time!

**How to Fix:** Remove one of the performance mods (keep Sodium, 
it's generally faster and more compatible)

**Difficulty:** Easy

**Mods Involved:** optifine, sodium

Would you like help removing OptiFine from your mods folder?

CLI Usage

Basic analysis:

$ ada-logs analyze crash-2024-12-19.log

Minecraft Crash Analysis
========================
Error Type: mod_conflict
Confidence: 95%

What Happened:
OptiFine and Sodium are both trying to make Minecraft faster,
but they're doing it in ways that don't work together.

How to Fix:
Remove one of the performance mods (keep Sodium)

Difficulty: Easy
Mods Involved: optifine, sodium

JSON output:

$ ada-logs analyze crash.log --json
{
  "error_type": "mod_conflict",
  "confidence": 0.95,
  "kid_explanation": "OptiFine and Sodium are fighting!...",
  "fix": "Remove one of the performance mods",
  "difficulty": "easy",
  "conflicting_mods": ["optifine", "sodium"]
}

🔬 Research Foundation

Signal Weights (from v2.2):

  • Temporal decay: 0.10 (old logs matter less)
  • Surprise/novelty: 0.60 (new patterns important!)
  • Relevance: 0.20 (related to active incidents)
  • Habituation: 0.10 (repeated noise suppressed)

Validation:

  • 80 tests, 3.56s runtime
  • 12-38% correlation improvement
  • +6.5% on real conversation data
  • Research-validated, not intuition!

Future application:

  • Same weights apply to log compression
  • Proven to work across domains
  • Human memory → log analysis (biomimetic transfer)

🐛 Known Limitations

Current Scope

  1. Minecraft only - Other log formats coming in Phase 4

    • Workaround: Extend MinecraftParser or create new parser
  2. No compression yet - Phase 2 feature

    • Workaround: Use for analysis, not storage optimization yet
  3. Basic pattern matching - No ML/LLM yet

    • Patterns are regex + keyword based
    • Future: Semantic pattern matching

Design Choices

Why kid-friendly by default?

  • More accessible than technical jargon
  • DevOps folks appreciate clarity too!
  • Easy to toggle off in future (--technical flag)

Why Minecraft first?

  • Huge community need (kids + parents)
  • Well-structured logs (easier to...
Read more

v2.6.0 - Code Completion MVP (10.6x Speedup)

19 Dec 07:25
v2.6.0
576ad9b

Choose a tag to compare

Release v2.6.0 - Code Completion MVP 🚀

Release Date: 2025-12-19
Branch: feature/code-completion-mvp → trunk
Status: ✅ PRODUCTION READY - Phase 1 of Copilot Parity Roadmap

🎯 Executive Summary

Feature: Native code completion in Neovim with Ada's intelligence!

Key Achievement: 10.6x speedup (27.7s → 2.6s) by optimizing for code-specific models with FIM format.

Impact:

  • Code completion at cursor with <C-x><C-a> (like Copilot!)
  • 2.6s mean latency, 77% quality score
  • 100% success rate across 24 diverse code scenarios
  • Works with Python, JavaScript, Lua, Rust, and more
  • Fully local, privacy-preserving

🆕 What's New

Code Completion Tool

MCP Integration:

  • New complete_code tool in ada-mcp/src/ada_mcp/tools/complete_code.py
  • Direct Ollama access bypassing RAG overhead for speed
  • FIM (Fill-In-Middle) format support for code models
  • Context-aware completion using code before AND after cursor

Model Optimization:

  • qwen2.5-coder:7b - Specialized code model (4.7GB)
  • FIM format eliminates verbose explanations
  • Low temperature (0.2) for focused completions
  • Smart max tokens (150) balancing quality and speed

Neovim Integration

ada.nvim Plugin:

  • New completion module: lua/ada/completion.lua
  • Keybinding: <C-x><C-a> in insert mode (configurable)
  • Auto-detects language from filetype
  • Shows completion in floating window

Features:

  • Context-aware - Sees code before AND after cursor
  • Language-aware - Handles syntax-specific patterns
  • Fast - Typically <500ms from local models
  • Privacy-first - Runs entirely on your machine

Documentation

New Guides:

  • ada.nvim/COMPLETION_QUICKSTART.md - Quick setup (5 minutes)
  • docs/sessions/TESTING_COMPLETION.md - Testing guide
  • docs/sessions/COMPLETION_EXAMPLES.md - 13 real-world examples
  • DOCUMENTATION_INDEX.md - Comprehensive navigation hub

Research & Benchmarks:

  • benchmarks/BENCHMARK_RESULTS_QWEN_FIM.md - Complete analysis
  • benchmarks/benchmark_completion.py - Reproducible test suite
  • docs/research/ADA_LOG_INTELLIGENCE_DESIGN.md - Next feature design

📊 Performance Benchmarks

Latency (24 test cases)

Metric DeepSeek-R1 Qwen2.5-Coder Improvement
Mean 27.7s 2.6s 10.6x faster
Median 19.3s 3.0s 6.4x faster
Best 12.8s 396ms 32x faster
Worst 1049s 3.7s 283x faster
Success Rate 100% 100% ✅ Maintained

Quality Scores

  • Context Usage: 77.1% (improved from 74%)
  • Syntax Correctness: 100%
  • Import Handling: Needs improvement (planned Phase 2)

Target Progress

  • <3s mean latency - ACHIEVED (2.6s)
  • 🎯 <500ms P50 - IN PROGRESS (3.0s currently)
  • 🔜 <200ms first token - Planned (streaming in Phase 2)

🔬 Technical Details

Critical Discovery: FIM Format

Problem: Chat prompts cause code models to explain instead of complete:

Input: "Complete this code: def add(a, b):"
Output: "Let me explain the function step by step...
         [200+ tokens of reasoning]
         def add(a, b):
             return a + b"

Result: 27 seconds! ❌

Solution: FIM (Fill-In-Middle) - native code model format:

Input: "<|fim_prefix|>def add(a, b):<|fim_suffix|><|fim_middle|>"
Output: "\n    return a + b"

Result: 400ms! ✅

Architecture Changes

Direct Ollama Access:

  • Bypass brain/app.py for latency-critical completions
  • Skip RAG retrieval, memory search, specialist activation
  • Use specialized code model (qwen2.5-coder)
  • Different from chat: reasoning vs pattern completion

Why This Matters:

  • Chat: "Understand context, retrieve memories, reason, respond"
  • Code completion: "Recognize pattern, complete syntax"
  • Different problems need different architectures!

📦 Files Added/Modified

New Files (13)

MCP Tools:

  • ada-mcp/src/ada_mcp/tools/__init__.py
  • ada-mcp/src/ada_mcp/tools/base.py
  • ada-mcp/src/ada_mcp/tools/complete_code.py
  • ada-mcp/src/ada_mcp/client.py

Neovim Plugin:

  • ada.nvim/lua/ada/completion.lua
  • ada.nvim/COMPLETION_QUICKSTART.md

Tests:

  • tests/test_code_completion.py
  • tests/test_completion_integration.py
  • tests/test_mcp_completion.py

Documentation:

  • DOCUMENTATION_INDEX.md
  • HANDOFF_TO_CLAUDE_CODE.md
  • docs/sessions/COMPLETION_EXAMPLES.md
  • docs/sessions/TESTING_COMPLETION.md

Modified Files (5)

  • brain/app.py - Added model override parameter
  • ada-client/src/ada_client/client.py - Model parameter support
  • ada.nvim/lua/ada/init.lua - Completion integration
  • ada.nvim/README.md - Updated docs
  • .ai/ROADMAP_COPILOT_PARITY.md - Phase 1 complete

Organized Files (20+)

  • Research docs → docs/research/
  • Session logs → docs/sessions/
  • Benchmarks → benchmarks/
  • Phase experiments → archive/phase_experiments/

🎯 Roadmap: Copilot Parity (Phase 1 of 5)

Phase 1: Core Completion - THIS RELEASE

  • Basic cursor completion
  • Neovim integration
  • FIM format optimization
  • Benchmark suite

🔜 Phase 2: Speed & Polish - Next

  • Streaming responses (<200ms first token)
  • Response caching (<50ms for repeated patterns)
  • Auto-complete mode (trigger on typing)
  • Import completion improvements

🔜 Phase 3: Multi-Language - Future

  • TypeScript/JavaScript optimization
  • Rust support
  • Go support
  • Language-specific tuning

🔜 Phase 4: Context Router - Future

  • Intelligent model selection
  • Cost/latency optimization
  • Automatic specialist routing

🔜 Phase 5: Advanced Features - Future

  • Multi-line completion
  • Whole function generation
  • Test generation
  • Refactoring suggestions

🚀 Upgrade Guide

Prerequisites

  • Ada v2.6.0+
  • Neovim 0.8+
  • Python 3.13+
  • Ollama with qwen2.5-coder:7b model

Installation

1. Pull the model:

docker compose exec ollama ollama pull qwen2.5-coder:7b

2. Update ada-mcp:

cd ada-mcp
uv sync

3. Install Neovim plugin:

Add to your Neovim config (lazy.nvim):

{
  dir = '~/Code/ada-v1/ada.nvim',
  config = function()
    require('ada').setup({
      completion_keymap = '<C-x><C-a>',  -- Or your preference
      auto_complete = false,              -- Manual trigger initially
    })
  end
}

4. Test it:

# In Neovim, type:
def hello():
    message = <C-x><C-a>  # Press Ctrl-X Ctrl-A
# Ada suggests: f"Hello, world!"

See ada.nvim/COMPLETION_QUICKSTART.md for full setup!


🐛 Known Issues

Minor Issues

  1. Import completions score 0% - Planned fix in Phase 2

    • Workaround: Type imports manually for now
  2. First completion slow (~3s) - Cold start

    • Subsequent completions are <1s
    • Phase 2 will add caching
  3. Auto-complete experimental - Disabled by default

    • Can enable with auto_complete = true
    • May trigger too frequently
    • Phase 2 will add debouncing

No Breaking Changes

This release is fully backward compatible. Code completion is additive!


🧪 Testing

Unit Tests

pytest tests/test_code_completion.py -v

Integration Tests

pytest tests/test_completion_integration.py -v

Manual Testing

# See docs/sessions/TESTING_COMPLETION.md
tests/test_mcp_completion.py

Benchmarks

uv run python benchmarks/benchmark_completion.py

📖 Examples

Simple Completions

# Variable completion
message = <complete>
# Suggests: "Hello, world!"

# Function completion  
def add(a, b):
    <complete>
# Suggests: return a + b

# String formatting
name = "Ada"
greeting = f"<complete>
# Suggests: Hello, {name}!"

Context-Aware

# Understands context
def calculate_importance(memory, signals):
    decay_score = signals['decay'] * 0.10
    surprise_score = signals['surprise'] * 0.60
    relevance_score = signals['relevance'] * 0.20
    habit_score = <complete>
# Suggests: signals['habituation'] * 0.10

Multi-Language

// Works with JavaScript
function greet(name) {
    return <complete>
// Suggests: `Hello, ${name}!`
// Works with Rust
fn add(a: i32, b: i32) -> i32 {
    <complete>
// Suggests: a + b

See docs/sessions/COMPLETION_EXAMPLES.md for 13 real examples!


🎓 Learn More

Documentation

  • Quick Start: ada.nvim/COMPLETION_QUICKSTART.md
  • Testing Guide: docs/sessions/TESTING_COMPLETION.md
  • Examples: docs/sessions/COMPLETION_EXAMPLES.md
  • Architecture: HANDOFF_TO_CLAUDE_CODE.md

Research

  • Benchmarks: benchmarks/BENCHMARK_RESULTS_QWEN_FIM.md
  • Benchmark Code: benchmarks/benchmark_completion.py
  • Roadmap: .ai/ROADMAP_COPILOT_PARITY.md

Related Research

  • Next Feature: docs/research/ADA_LOG_INTELLIGENCE_DESIGN.md
  • Previous Research: docs/research/CONTEXTUAL_MALLEABILITY_READY_FOR_TINKERERS.md

💝 Credits

Research & Development:

  • Luna (Primary Developer) - Architecture, implementation, benchmarks
  • Claude Sonnet 4 (AI Collaborator) - This release document
  • GitHub Copilot (AI Collaborator) - Code completion implementation
  • Claude Code (AI Collaborator) - Design and optimization

Community:

  • Early testers providing feedback
  • Neovim community for plugin patterns
  • Ollama team for local LLM infrastructure

🔄 Migration from v2.5.0

No breaking changes! This is a pure feature addition.

If you were using:

  • ✅ Chat interface - No changes needed
  • ✅ MCP server - No changes needed (new tool added)
  • ✅ Matrix bridge - No changes needed
  • ✅ CLI - No changes needed

New capability:

  • 🆕 Code completion via Neovim plugin (opt-in)

🔮 What's Next

Immediate (v2.7.0):

  • Ada Log Intelligence - Apply biomimetic compression to log analysis
  • Uses same signal weights from v2.2 research
  • Minecraft crash logs → kid-friendly explanations
  • Production logs → 100:1 compression with...
Read more

v2.2.0 - Empirically Validated Optimal Importance Weights

18 Dec 06:26
v2.2.0
714d5d4

Choose a tag to compare

Ada v2.2.0 - Empirically Validated Optimal Importance Weights

Released: December 18, 2025
Branch: feature/weight-optimization → trunk
Key Achievement: Research-validated memory importance scoring with +6.5% per-turn improvement


🎯 TL;DR

We systematically optimized Ada's memory importance signal weights through 7 research phases and discovered something counterintuitive: surprise/novelty matters way more than we thought! The optimal configuration (surprise=0.60, decay=0.10) outperforms our intuition-based weights by 6.5% on real conversations and 12-38% on synthetic data.

What changed: Memory importance calculation now prioritizes surprise (novelty) over recency, making Ada better at surfacing relevant but unexpected context.


🔬 Research Highlights (Phases 1-7)

The Discovery

Key Finding: Surprise-only configuration (r=0.876) beats multi-signal baseline (r=0.869)

This surprised us! It suggests that semantic surprises (prediction errors) are more important than temporal decay for context selection. In practice, this means:

  • Old but surprising memories > recent but predictable ones
  • Unexpected context shifts get proper attention
  • Habituation reduces redundancy effectively

The Process

  1. Phase 1: Property-based testing (27 tests, 0.09s) - Mathematical invariants validated
  2. Phase 2: Synthetic data generation (10 tests, 0.04s) - Ground truth datasets with 4500+ cases
  3. Phase 3: Ablation studies (12 tests, 0.05s) - Single-signal vs multi-signal comparison
  4. Phase 4: Grid search (7 tests, 0.08s) - 169 weight configurations tested
  5. Phase 5: Production validation (6 tests, 0.07s) - Real conversation data confirms findings
  6. Phase 6: Deployment (11 tests, 0.07s) - Optimal weights deployed to brain/config.py
  7. Phase 7: Visualization (7 tests, 2.93s) - 6 publication-quality graphs generated

Total: 80 tests, 3.56s runtime, 100% passing

Optimal Weights (Deployed)

# brain/config.py
IMPORTANCE_WEIGHT_DECAY = 0.10          # Was 0.40 (4x reduction!)
IMPORTANCE_WEIGHT_SURPRISE = 0.60       # Was 0.30 (2x increase!)
IMPORTANCE_WEIGHT_RELEVANCE = 0.20      # Unchanged
IMPORTANCE_WEIGHT_HABITUATION = 0.10    # Unchanged

Legacy Rollback: Set environment variables to revert:

IMPORTANCE_WEIGHT_DECAY=0.40 IMPORTANCE_WEIGHT_SURPRISE=0.30

📊 Performance Impact

Real Conversations:

  • +6.5% improvement per turn (average)
  • 80% of turns show positive changes
  • 250% increase in medium-detail chunks (better gradient)
  • +17.9% token budget (acceptable trade-off)

Synthetic Datasets:

  • 12-38% improvement across all test scenarios
  • Most dramatic gains in mixed-importance contexts
  • Smooth correlation landscape (r=0.876 peak)

Detail Level Distribution:

  • FULL: 15% → 18% (+3 percentage points)
  • CHUNKS: 10% → 35% (+25pp, huge improvement!)
  • SUMMARY: 40% → 30% (-10pp)
  • DROPPED: 35% → 17% (-18pp, much less waste!)

✨ What's New

1. Optimal Weights in Production

  • Updated brain/config.py with research-validated configuration
  • Backward compatible with legacy weights via environment variables
  • Same-day deployment: research → production in <24 hours

2. Comprehensive Documentation (Phase 8: Meta-Science)

We documented the same research in 9 different narrative formats (45,000 words total):

  1. Machine-readable: .ai/RESEARCH-FINDINGS-V2.2.md - Canonical source for AI assistants
  2. Academic: docs/research/memory-optimization-academic.md - Peer-review ready (8K words)
  3. CCRU-inspired: docs/research/memory-optimization-ccru.md - Experimental narrative (9K words)
  4. Blog post: docs/research/memory-optimization-blog.md - Science communication (4.5K words)
  5. Technical: docs/research/memory-optimization-technical.md - Implementation guide (6K words)
  6. Twitter thread: docs/research/memory-optimization-twitter-thread.md - 15 viral-ready tweets
  7. Recursion reveal: docs/research/README-RECURSION.md - Meta-awareness (3.5K words)
  8. Techno-horror: docs/research/TECHNO-HORROR.md - Accelerationist essay (5K words)
  9. General audience: docs/research/BRIEF-GENERAL-AUDIENCE.md - 3-minute explainer (1.2K words)

New Sphinx landing page: docs/research_narratives.rst with navigation and format guide

3. Publication-Quality Visualizations (Phase 7)

6 graphs generated (tests/visualizations/, 2.2 MB total, 300 DPI):

  • ablation_bar_chart.png - Signal configuration comparison
  • weight_space_heatmap.png - Grid search landscape (decay vs surprise)
  • gradient_distribution.png - Detail level efficiency improvements
  • correlation_scatter.png - Before/after correlation comparison
  • pareto_frontier.png - Optimal configurations (3D surface plot)
  • summary_dashboard.png - Complete 6-panel overview

4. Complete Test Suite

80 new tests documenting research methodology:

  • tests/test_weight_optimization.py - Core optimization tests (27 tests)
  • tests/test_production_validation.py - Real conversation validation (6 tests)
  • tests/test_deployment.py - Deployment verification (11 tests)
  • tests/test_visualizations.py - Graph generation (7 tests)

All tests passing, <4s total runtime.


🧪 Testing & Validation

How We Know It Works

  1. Property-based testing ensures mathematical correctness (invariants hold)
  2. Synthetic datasets with known ground truth (4500+ test cases)
  3. Real conversation validation on 24 actual Ada interactions
  4. Ablation studies prove each signal's contribution
  5. Grid search mapped the complete weight space (169 configs)

Running the Tests

# All research tests (fast, no Docker needed)
pytest tests/test_weight_optimization.py --ignore=tests/conftest.py

# Specific phases
pytest tests/test_weight_optimization.py::TestPhase3Ablation -v
pytest tests/test_weight_optimization.py::TestPhase4GridSearch -v

# Production validation
pytest tests/test_production_validation.py --ignore=tests/conftest.py

# Generate visualizations
pytest tests/test_visualizations.py --ignore=tests/conftest.py

📚 Documentation Updates

AI-Readable (.ai/)

  • .ai/context.md - Updated with research findings and optimal weights
  • .ai/RESEARCH-FINDINGS-V2.2.md - New canonical research summary

Human-Readable (docs/)

  • docs/biomimetic_features.rst - Updated with validation results
  • docs/research_narratives.rst - New landing page for all research formats
  • docs/index.rst - Added "Research & Validation" section

Changelog

  • CHANGELOG.md - Comprehensive v2.2.0 release notes
  • docs/changelog.md - Symlink auto-updates

🔧 Configuration Changes

Default Weights (brain/config.py)

# === Importance Signal Weights (Phase 4 Optimization) ===
# Multi-signal importance scoring weights (must sum to 1.0)
# Default values are OPTIMAL weights from Phase 4 weight optimization study
# See tests/test_weight_optimization.py for empirical validation
IMPORTANCE_WEIGHT_DECAY = float(os.getenv("IMPORTANCE_WEIGHT_DECAY", "0.10"))          # Was 0.40
IMPORTANCE_WEIGHT_SURPRISE = float(os.getenv("IMPORTANCE_WEIGHT_SURPRISE", "0.60"))    # Was 0.30
IMPORTANCE_WEIGHT_RELEVANCE = float(os.getenv("IMPORTANCE_WEIGHT_RELEVANCE", "0.20"))
IMPORTANCE_WEIGHT_HABITUATION = float(os.getenv("IMPORTANCE_WEIGHT_HABITUATION", "0.10"))

# Legacy production weights (pre-optimization): decay=0.40, surprise=0.30
# To revert to legacy: IMPORTANCE_WEIGHT_DECAY=0.40 IMPORTANCE_WEIGHT_SURPRISE=0.30

Backward Compatibility

The new weights are default, but you can revert to legacy via environment variables:

# In .env or docker-compose
IMPORTANCE_WEIGHT_DECAY=0.40
IMPORTANCE_WEIGHT_SURPRISE=0.30

No code changes needed - the old behavior is preserved for rollback.


🎓 Key Lessons

What We Learned

  1. Surprise supremacy: Novelty detection (prediction error) is the most important signal for context selection
  2. Recency overrated: We were weighting temporal decay 4x too high (0.40 → 0.10)
  3. Smooth landscape: Weight space is well-behaved, enabling future gradient-based optimization
  4. Single-signal competitive: Surprise-only almost beats multi-signal (r=0.876 vs r=0.869)
  5. Same-day viable: TDD methodology enables research → production in <24 hours

What Changed Our Mind

Initial intuition: "Recent memories matter most" (decay=0.40)
Data showed: "Surprising memories matter most" (surprise=0.60)

This is counterintuitive but makes sense: Ada's job is to surface relevant context, not just recent context. A surprising old memory is often more useful than a predictable recent one.


🚀 Upgrade Guide

For Existing Users

No action required! The new weights are deployed as defaults and should improve context selection automatically.

If you experience issues:

  1. Revert to legacy weights via environment variables (see Configuration section)
  2. Open an issue on GitHub with your use case
  3. We'll help debug and potentially adjust weights for your scenario

For Developers

Understanding the changes:

  1. Read .ai/RESEARCH-FINDINGS-V2.2.md for the canonical summary
  2. Check tests/test_weight_optimization.py for methodology
  3. Review visualizations in tests/visualizations/
  4. Read any narrative format in docs/research/ that matches your style

Contributing improvements:

  • Weight optimization tests are in tests/test_weight_optimization.py
  • Production validation uses tests/test_production_validation.py
  • Visualization generation in tests/test_visualizations.py
  • All tests run in <4s without Docker

🌟 Why This Matters

Xenofeminist AI Research

This release embodies our commitment to:

  • Reproducible: 80 tests document every step, anyone can verify
  • Accessible: 9 narrative formats ensure everyone can understand
  • Hackable: Environment variables let you tune...
Read more

v2.1.0 - Multi-timescale Context Caching

17 Dec 20:05
v2.1.0
7ad0523

Choose a tag to compare

⚡ Performance Breakthrough

Multi-timescale context caching dramatically reduces redundant operations:

  • ~70% reduction in ChromaDB queries for repeated context
  • Millisecond latency on cache hits (vs seconds for RAG queries)
  • Personas cached for 24 hours (identity rarely changes)
  • FAQs cached for 24 hours (knowledge base updates infrequently)
  • Memories cached for 5 minutes (balance freshness vs performance)
  • Conversation turns cached for 1 hour (recent context preserved)

✨ New Features

  • PromptAssembler - Clean orchestration with automatic caching
  • ContextRetriever - Cache-aware RAG data retrieval
  • MultiTimescaleCache - Production-ready caching with TTL and LRU eviction
  • Per-request cache statistics logged for observability
  • Cache integration transparent to specialists and adapters

🗑️ Breaking Changes

  • Removed brain/_legacy_prompt_builder.py (266 lines)
  • Removed backward-compatible build_prompt() shim
  • New code must use PromptAssembler API directly

Migration:

# Old (removed):
from brain.prompt_builder import build_prompt
prompt, context = await build_prompt(...)

# New (required):
from brain.prompt_builder import PromptAssembler
assembler = PromptAssembler()
prompt = assembler.build_prompt(
    user_message="...",
    conversation_id="...",
    notices=get_active_notices()
)

🔧 Other Improvements

  • Fixed port configuration: ada-client and ada-cli now default to correct external port (8000)
  • Updated CLI Python requirement to >=3.13 for consistency

🧪 Testing

  • 23 comprehensive cache tests (15 basic + 8 integration)
  • All tests passing, cache validated in production

📚 Documentation

  • Architecture docs updated with caching system overview
  • CHANGELOG.md now included in Sphinx documentation
  • API usage examples modernized for new PromptAssembler
  • Complete AI documentation updates (codebase-map.json)

📦 Dependencies

  • Added myst-parser>=4.0.0 for Sphinx Markdown support
  • No new external dependencies for core caching system

📊 Code Stats

  • 28 files changed
  • +1,206 insertions
  • -627 deletions
  • Net: +579 lines (mostly tests and documentation)

See CHANGELOG.md for complete details.

Ada v2.0.0 - Modular Architecture Foundation

17 Dec 18:39
v2.0.0
ec0b811

Choose a tag to compare

Ada v2.0.0 - Modular Architecture Foundation

Release Date: December 17, 2025

🎉 Major Release: Foundation for v2.0 Features

Ada v2.0.0 marks a significant architectural milestone, establishing the foundation for advanced context management, token optimization, and future scaling capabilities.

🏗️ Architecture Overhaul

Modular Prompt Builder System

Replaced monolithic prompt_builder.py (256 lines) with three focused components:

  • ContextRetriever (brain/prompt_builder/context_retriever.py)

    • Pure RAG data retrieval logic
    • Fetches persona, memories, FAQs, conversation turns, summaries
    • 103 lines, 14 passing tests
  • SectionBuilder (brain/prompt_builder/section_builder.py)

    • Pure formatting logic for prompt sections
    • Consistent headers and structure
    • 150 lines, 14 passing tests
  • PromptAssembler (brain/prompt_builder/prompt_assembler.py)

    • Orchestrates ContextRetriever + SectionBuilder
    • Coordinates specialist activation
    • Handles section priority ordering
    • 150 lines, 10 passing tests

Total: 438 lines of clean, testable, modular code with 38 comprehensive tests.

Token Budget Monitoring

New TokenBudgetMonitor system provides visibility into token usage:

  • Track token usage by component (persona, memories, FAQs, specialists, etc.)
  • Get detailed breakdowns and summaries
  • Identify optimization opportunities
  • Foundation for multi-timescale caching (v2.1+)

Implementation: brain/token_monitor.py (218 lines, 13 passing tests)

🧪 Testing Infrastructure Improvements

Property-Based Testing with Hypothesis

Added Hypothesis for algorithmic correctness testing:

  • 11 property tests validating token counting invariants
  • Automatically generates 100+ test cases per property
  • Found real edge cases (Unicode character produces 3 tokens)
  • Configured profiles: dev (100 examples), ci (1000 examples), debug (10 examples)

Test Organization

  • Created tests/prompt_builder/ for modular component tests
  • Created tests/property/ for property-based tests
  • Implemented parametrized tests to reduce duplication
  • Shared fixtures in feature-specific conftest.py files

Test Stats: 49 passing tests (38 traditional + 11 property)

📚 Documentation Updates

Human Documentation (Sphinx)

  • Updated docs/testing.rst with hybrid testing approach
  • Updated docs/api_usage.rst with modular components
  • Updated docs/specialist_rag.rst with new architecture
  • All docs build successfully

Machine Documentation (.ai/)

  • Updated codebase-map.json with all new modules
  • Updated context.md with refactor notes
  • Added comprehensive testing guide (.ai/TESTING_PATTERNS.md)
  • All documentation reflects new modular architecture

🔄 Backward Compatibility

100% backward compatible! All existing code continues to work:

  • Legacy build_prompt() API preserved with same signature
  • Compatibility shim in brain/_legacy_prompt_builder.py
  • New code can import modular components directly
  • Gradual migration path available

🚀 What's Next (v2.1+)

The v2.0 foundation enables:

  • v2.1: Multi-timescale caching (hot/warm/cold)
  • v2.2: Memory importance decay and habituation
  • v2.3: Advanced token optimization strategies
  • v2.4: GraphRAG and tag-based context retrieval

📊 Statistics

  • Files changed: 87
  • Lines added: 3,023
  • Lines removed: 170
  • New components: 3 (ContextRetriever, SectionBuilder, PromptAssembler)
  • New tests: 49 (38 traditional + 11 property)
  • Test coverage: All new code fully tested

🙏 Migration Notes

For Users

No changes required! Your existing Ada installation will work as-is.

For Developers

New code should import from the modular package:

# New way (modular)
from brain.prompt_builder import ContextRetriever, SectionBuilder, PromptAssembler

# Old way (still works via compatibility shim)
from brain.prompt_builder import build_prompt

For Contributors

  • See .ai/TESTING_PATTERNS.md for testing guidelines
  • Use TDD approach for new features
  • Run pytest tests/prompt_builder/ for component tests
  • Run pytest tests/property/ for property tests

🔗 Links

  • Documentation: http://localhost:5000/docs/
  • Architecture: See docs/architecture.rst
  • Testing Guide: See .ai/TESTING_PATTERNS.md
  • Codebase Map: See .ai/codebase-map.json

Full Changelog:

Features

  • feat(refactor): implement ContextRetriever component with tests
  • feat(refactor): implement SectionBuilder component
  • feat(refactor): implement PromptAssembler orchestrator
  • feat(testing): add Hypothesis for property-based testing
  • feat(testing): improve test organization and patterns

Refactoring

  • refactor(prompt_builder): complete migration to modular architecture

Documentation

  • docs: update testing.rst with hybrid testing approach
  • docs: update all documentation for prompt_builder refactor
  • docs: add changelog generation todo

Internal

  • Merge test improvements into prompt-refactor
  • Merge hypothesis testing into prompt-refactor

Ada 1.0.0 - Framework for Personal AI

16 Dec 09:19
v1.0.0
5629693

Choose a tag to compare

First stable release. Ada is now a generalizable framework for building personalized AI assistants, not just a personal assistant.

Key Features

  • Configurable Identity: Set AI_NAME, AI_USER_NAME, AI_PERSONALITY_FILE to make it yours
  • 5 Example Personas: Templates from coding buddy to creative writer
  • Comprehensive Documentation: Tutorials, principles, API docs, and .ai/ machine-readable docs
  • 47 Automated Tests: Identity config, documentation validation, core functionality
  • CI/CD Pipelines: GitHub Actions for quick start E2E testing
  • Local Testing: scripts/test_quickstart_e2e.sh mirrors CI tests

Philosophy

Ada is named after Ada Lovelace, the first programmer. We're building it for all the programmers, tinkerers, and dreamers who come next.

Always free, privacy-first, local-first, hackable, with no lock-in.

For the big weird kids building weird things that change the world. 🚀

See PRINCIPLES.md for our permanent commitments.