# Changelog All notable changes to Veritext will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] ### Added - Project scaffold with pyproject.toml and development tooling - Core exception hierarchy (`VeritextError` and subclasses) - Core types: `ValidationContext`, `CheckResult`, `ValidationResult` - Word tokeniser with Unicode normalisation support - Configuration module with pydantic-settings - Structured logging with structlog - Metrics module with `Metric` protocol, `AggregateStats`, and `BatchResult` types - BLEU metric implementation (BLEU-1 through BLEU-4 with brevity penalty) - Lexical similarity metric (Jaccard similarity and token overlap) - ROUGE metric (ROUGE-1, ROUGE-2, ROUGE-L with precision/recall/F-measure) - Flesch-Kincaid readability metrics (grade level and reading ease) - Batch scoring with aggregate statistics for all metrics - Validators module with `Check` protocol for validation checks - Metric-based validators: `BleuValidator`, `RougeValidator`, `LexicalValidator` - Constraint validators: `LengthValidator`, `ReadabilityValidator`, `ContainsValidator`, `ExcludesValidator` - Composite validators: `AllOf` (all checks must pass), `AnyOf` (any check must pass) - Factory functions for clean validator API (`bleu()`, `rouge()`, `lexical()`, `length()`, `readability()`, `contains()`, `excludes()`, `all_of()`, `any_of()`) - Semantic similarity module with embedding-based text comparison (requires `veritext[semantic]` extra) - `SemanticSimilarity` metric using sentence-transformers for semantic relatedness - `SemanticValidator` for threshold-based semantic similarity validation - `semantic()` factory function for creating semantic validators - Embedding caching for performance optimisation in repeated comparisons