# Changelog

## Score

- CAI 66 → 45 (-21.3)
- Rubric changed (rubric-2026.08.18 → rubric-2026.08.15) — scores are not directly comparable.

## Lenses

- Code Health 80 → 90 (+10.1)
- Architecture 100 → 94 (-5.9)
- Maturity 65 → 63 (-1.1)
- Readiness 65 → 25 (-39.8)
- Security 62 → 48 (-13.5)

## Resolved (71)

- Annotator._annotate_documents_sequential_passes (cognitive 16) (langextract/annotation.py)
- Annotator._annotate_documents_single_pass (cognitive 31) (langextract/annotation.py)
- BenchmarkRunner.test_single_extraction (cognitive 23) (benchmarks/benchmark.py)
- Build action pinned to a mutable branch
- ChunkIterator.__next__ (cognitive 19) (langextract/chunking.py)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- Duplicated block (10 lines × 2) (langextract/resolver.py)
- Duplicated block (14 lines × 2) (langextract/providers/gemini.py)
- Duplicated block (16 lines × 2) (examples/ollama/demo_ollama.py)
- Duplicated block (17 lines × 2) (langextract/_compat/inference.py)
- Duplicated block (18 lines × 2) (langextract/providers/schemas/gemini.py)
- Duplicated block (24 lines × 2) (langextract/providers/ollama.py)
- FileTooLong: benchmarks/plotting.py (benchmarks/plotting.py)
- FileTooLong: langextract/resolver.py (langextract/resolver.py)
- FileTooLong: providers/gemini_batch.py (langextract/providers/gemini_batch.py)
- FormatHandler.from_resolver_params (cognitive 18) (langextract/core/format_handler.py)
- FormatHandler.parse_output (cognitive 35) (langextract/core/format_handler.py)
- FormatHandler.parse_output (cyclomatic 25) (langextract/core/format_handler.py)
- Further sole-owners (lower concentration)
- …and 51 more

## New (22)

- Coverage not measured — test suite did not build
- Dimension evaluation failed
- Duplicated block (12 lines × 2) (tests/openai_batch_test.py)
- Duplicated block (12 lines × 2) (tests/provider_schema_test.py)
- Duplicated block (13 lines × 2) (tests/test_live_api.py)
- Duplicated block (14 lines × 2) (tests/annotation_test.py)
- Duplicated block (14 lines × 2) (tests/chunking_test.py)
- Duplicated block (16 lines × 2) (tests/provider_plugin_test.py)
- Duplicated block (17 lines × 2) (tests/inference_test.py)
- Duplicated block (18 lines × 2) (langextract/providers/ollama.py)
- Duplicated block (18 lines × 2) (tests/annotation_test.py)
- Duplicated block (21 lines × 2) (tests/schema_test.py)
- Duplicated block (6 lines × 3) (tests/test_gemini_batch_api.py)
- Duplicated block (8 lines × 2) (tests/prompting_test.py)
- Duplicated block (9 lines × 2) (tests/resolver_test.py)
- Duplicated block (9 lines × 2) (tests/test_gemini_batch_api.py)
- High IaC: DS-0002 (examples/ollama/Dockerfile)
- Low IaC: DS-0026 (Dockerfile)
- Low IaC: DS-0026 (examples/ollama/Dockerfile)
- No artifact signing
- …and 2 more
