//! LLM prompt evaluation infrastructure.
//!
//! This module provides tools for tracking and analyzing LLM extraction
//! performance. Every extraction attempt is logged as an "observation"
//! with full context (prompt, content, response, timing), enabling
//! data-driven prompt optimization.
//!
//! # Architecture
//!
//! ```text
//! [LLM Extraction] -> [Observation] -> [SQLite DB]
//!                                           |
//!                                           v
//!                                    [Query/Analysis]
//!
//! [Fixtures] -> [Harness] -> [Metrics] -> [Report]
//!                  |
//!                  v
//!             [Matcher]
//! ```
//!
//! # Usage
//!
//! Observations are opt-in via `eval.save_observations = true` in config.
//! The database is stored at `~/.aphoria/eval/observations.db` by default.
//!
//! # Evaluation Commands
//!
//! ```bash
//! # Run evaluation against golden fixtures
//! aphoria eval run --fixtures tests/llm_fixtures
//!
//! # Show current baseline metrics
//! aphoria eval baseline --fixtures tests/llm_fixtures
//!
//! # Update baseline from latest run
//! aphoria eval update-baseline --fixtures tests/llm_fixtures --force
//!
//! # List available fixtures
//! aphoria eval list-fixtures --fixtures tests/llm_fixtures
//!
//! # Validate fixture format
//! aphoria eval validate-fixtures --fixtures tests/llm_fixtures
//! ```

mod db;
pub mod fixture;
pub mod harness;
pub mod matcher;
pub mod metrics;
pub mod report;
mod types;

pub use db::EvalDatabase;
pub use fixture::{
    BaselineMetrics, CorpusManifest, CorpusMetadata, ExpectedClaim, Fixture, FixtureExpected,
    FixtureInput, FixtureLoader, FixtureMetadata, FixtureScoring, FixtureSummary, ValidationError,
};
pub use harness::{
    update_baseline, EvalHarness, EvalMode, EvalResult, EvalRunConfig, EvalVerdict, PROMPT_VERSION,
};
pub use matcher::{ClaimMatcher, MatchResult};
pub use metrics::{BaselineComparison, CategoryMetrics, FixtureResult, FixtureStatus, Metrics};
pub use report::{Report, ReportFormat};
pub use types::{FinalClaim, Observation, ParsedClaim};
