# Changelog

> **This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.**

## Score

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

## Lenses

- Code Health 77 → 91 (+13.5)
- Architecture 99 → 96 (-3.2)
- Maturity 61 → 62 (+0.6)
- Readiness 68 → 30 (-38.8)
- Security 57 → 43 (-13.9)

## Resolved (159)

- Adapter._call_postprocess (cognitive 33) (dspy/adapters/base.py)
- Adapter._call_postprocess (cyclomatic 19) (dspy/adapters/base.py)
- Adapter._call_preprocess (cognitive 21) (dspy/adapters/base.py)
- Adapter.format_conversation_history (cognitive 53) (dspy/adapters/base.py)
- Adapter.format_conversation_history (cyclomatic 26) (dspy/adapters/base.py)
- BaseLM._process_completion (cognitive 17) (dspy/clients/base_lm.py)
- BaseModule.named_parameters (cognitive 17) (dspy/primitives/base_module.py)
- BaseModule.named_sub_modules (cognitive 19) (dspy/primitives/base_module.py)
- BaseModule.save (cognitive 17) (dspy/primitives/base_module.py)
- BootstrapFewShot._bootstrap_one_example (cognitive 31) (dspy/teleprompt/bootstrap.py)
- BootstrapFewShot._bootstrap_one_example (cyclomatic 17) (dspy/teleprompt/bootstrap.py)
- BootstrapFewShotWithRandomSearch.compile (cognitive 18) (dspy/teleprompt/random_search.py)
- BootstrapFinetune.compile (cognitive 18) (dspy/teleprompt/bootstrap_finetune.py)
- COPRO._drop_duplicates (cognitive 16) (dspy/teleprompt/copro_optimizer.py)
- COPRO.compile (cognitive 63) (dspy/teleprompt/copro_optimizer.py)
- COPRO.compile (cyclomatic 24) (dspy/teleprompt/copro_optimizer.py)
- Cache.__init__ (cognitive 18) (dspy/clients/cache.py)
- Change coupling: best_of_n.py ↔ refine.py (dspy/predict/best_of_n.py)
- Change coupling: python_interpreter.py ↔ runner.js (dspy/primitives/python_interpreter.py)
- Coverage not included — suite not readable by the collector
- …and 139 more

## New (16)

- Coverage not measured — test suite did not build
- Dimension evaluation failed
- Duplicated block (11 lines × 3) (dspy/teleprompt/grpo.py)
- Duplicated block (14 lines × 2) (dspy/teleprompt/grpo.py)
- Duplicated block (5 lines × 2) (dspy/teleprompt/copro_optimizer.py)
- Duplicated block (7 lines × 2) (dspy/teleprompt/copro_optimizer.py)
- Duplicated block (8 lines × 2) (tests/predict/test_rlm.py)
- Duplicated block (9 lines × 2) (dspy/datasets/gsm8k.py)
- Low: security finding (details withheld)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- No artifact signing
- No build provenance
- No tests found
- Rotate the exposed credentials — git history can't be un-committed
- Secret: aws-access-token (docs/docs/tutorials/gepa_facilitysupportanalyzer/index.ipynb)

## Changes since last survey

- 13 commits — 8 feature/other, 5 fixes

## By area

- dspy/predict — 4 commits
- (root) — 2 commits
- tests/conftest.py — 2 commits
- dspy/primitives — 1 commit
- dspy/utils — 1 commit
- tests/callback — 1 commit
- tests/clients — 1 commit
- tests/utils — 1 commit

## Notable commits

- fix: fix(dspy): preserve typed ReAct context window errors (#10132)
- fix: fix(dspy): repair ReAct error formatter after parallel merges (#10139)
- fix: fix(dspy): root CodeInterpreterError under DSPyError (#10134)
- fix: fix(dspy): track completed None results in ParallelExecutor (#10142)
- fix: fix: cap FastAPI for LiteLLM proxy (#10151)
- change: Update versions for 3.3.0 (#10127)
- change: feat(callbacks): expose interpreter lifecycle events (#10119)
- change: feat(dspy.Flex) + GEPA extension (#10047)
- change: refactor(dspy): share LM-facing exception formatting (#10135)
- change: test(dspy): repair dead assertions in settings thread/async ownership tests (#10131)
- change: test(dspy): reuse LiteLLM server per pytest worker (#10154)
- change: test(dspy): skip wall-clock waits in retry tests (#10157)
- change: test(dspy): use memory-only cache by default (#10156)

## Architecture

- Containers 0 added · 0 removed · contexts 0 added · 1 removed · edges 0 added · 0 removed

## Removed bounded contexts (1)

- dspy
