# Changelog

## Score

- CAI 66 → 65 (-0.8)
- Rubric changed (rubric-2026.10.1 → rubric-2026.10.5) — scores are not directly comparable.

## Lenses

- Code Health 73 → 73 (-0.3)
- Architecture 89 → 89 (-0.0)
- Maturity 59 → 56 (-3.4)
- Readiness 61 → 61 (+0.0)
- Security 76 → 87 (+10.8)
- Domain Modelling 100 → 100 (+0.0)
- Performance 100 → 100 (+0.0)

## Resolved (44)

- Documentation: no contributor guidance (README.md)
- Duplicated block (10 lines × 8) (src/agentscope/formatter/_anthropic_formatter.py)
- Duplicated block (13 lines × 2) (src/agentscope/formatter/_dashscope_formatter.py)
- Duplicated block (13 lines × 2) (src/agentscope/realtime/_dashscope/_model.py)
- Duplicated block (13 lines × 7) (src/agentscope/formatter/_anthropic_formatter.py)
- Duplicated block (13–15 lines × 3) (src/agentscope/model/_dashscope/_model.py)
- Duplicated block (15 lines × 2) (src/agentscope/model/_openai_chat/_model.py)
- Duplicated block (16 lines × 2) (src/agentscope/model/_openai_chat/_model.py)
- Duplicated block (16–18 lines × 3) (src/agentscope/model/_deepseek/_model.py)
- Duplicated block (16–19 lines × 2) (src/agentscope/model/_deepseek/_model.py)
- Duplicated block (16–23 lines × 2) (src/agentscope/tool/_adapters.py)
- Duplicated block (17 lines × 3) (src/agentscope/realtime/_dashscope/_model.py)
- Duplicated block (17 lines × 4) (src/agentscope/model/_dashscope/_model.py)
- Duplicated block (20 lines × 2) (src/agentscope/model/_openai_chat/_model.py)
- Duplicated block (20–24 lines × 2) (src/agentscope/app/_service/_chat.py)
- Duplicated block (22 lines × 2) (src/agentscope/model/_moonshot/_model.py)
- Duplicated block (31 lines × 3) (src/agentscope/tool/_builtin/_edit.py)
- Duplicated block (43 lines × 2) (src/agentscope/model/_deepseek/_model.py)
- Duplicated block (7 lines × 2) (src/agentscope/formatter/_gemini_formatter.py)
- Duplicated block (7 lines × 4) (src/agentscope/model/_dashscope/_model.py)
- …and 24 more

## New (67)

- DashScopeAudioRealtimeModel.replay_history (cognitive 44) (src/agentscope/realtime/_dashscope/_audio_model.py)
- DashScopeAudioRealtimeModel.replay_history (cyclomatic 18) (src/agentscope/realtime/_dashscope/_audio_model.py)
- DashScopeRealtimeModel._parse (cognitive 17) (src/agentscope/realtime/_dashscope/_model.py)
- Documentation: contradicts the code (docs/NEWS.md)
- Documentation: contradicts the code (docs/NEWS_zh.md)
- Duplicated block (10 lines × 8) (src/agentscope/formatter/_anthropic_formatter.py)
- Duplicated block (13 lines × 2) (src/agentscope/formatter/_dashscope_formatter.py)
- Duplicated block (13–15 lines × 4) (src/agentscope/model/_dashscope/_model.py)
- Duplicated block (15 lines × 4) (src/agentscope/model/_moonshot/_model.py)
- Duplicated block (16 lines × 3) (src/agentscope/model/_moonshot/_model.py)
- Duplicated block (16–23 lines × 2) (src/agentscope/tool/_adapters.py)
- Duplicated block (17 lines × 2) (src/agentscope/app/_router/_session.py)
- Duplicated block (17 lines × 2) (src/agentscope/realtime/_openai/_model.py)
- Duplicated block (17 lines × 4) (src/agentscope/model/_dashscope/_model.py)
- Duplicated block (17–33 lines × 7) (src/agentscope/formatter/_anthropic_formatter.py)
- Duplicated block (18–24 lines × 2) (src/agentscope/app/_service/_chat.py)
- Duplicated block (19 lines × 2) (src/agentscope/model/_moonshot/_model.py)
- Duplicated block (20 lines × 3) (src/agentscope/model/_moonshot/_model.py)
- Duplicated block (22–26 lines × 2) (src/agentscope/app/_service/_chat.py)
- Duplicated block (26 lines × 2) (src/agentscope/model/_moonshot/_model.py)
- …and 47 more

## Changes since last survey

- 88 commits — 12 feature/other, 76 fixes

## By area

- src/agentscope — 81 commits
- (root) — 1 commit
- examples/rag — 1 commit
- examples/web_ui — 1 commit
- tests/builtin_glob_test.py — 1 commit
- tests/formatter_ollama_test.py — 1 commit
- tests/middleware_filesystem_memory_test.py — 1 commit
- tests/model_anthropic_test.py — 1 commit

## Notable commits

- fix: fix(agent): preserve cancellation before concurrent tool execution (#2768)
- fix: fix(app): anchor a schedule's default start time to an absolute instant (#3101)
- fix: fix(app): close rejected chat run coroutine (#3213)
- fix: fix(app): make workspace skill deletion idempotent (#2892)
- fix: fix(app): normalize document content types before parser lookup (#2992)
- fix: fix(app): protect Redis subscription cleanup from cancellation (#3158)
- fix: fix(asr): let per-call options override the transcribe defaults (#3333)
- fix: fix(console): preserve pending replies across agent switches (#3317)
- fix: fix(embedding): honor configured Gemini text parameters (#3361)
- fix: fix(embedding): isolate Ollama embedding caches by host (#3265)
- fix: fix(embedding): preserve configured qwen3 multimodal dimensions (#3350)
- fix: fix(embedding): report cache source for fully cached multi-batch merges (#2690)
- fix: fix(embedding): report the maximum batch time instead of the sum (#2967)
- fix: fix(embedding): tolerate missing OpenAI usage (#3199)
- fix: fix(formatter): decode local file URI paths in Ollama formatters (#3107)
- fix: fix(formatter): decode ollama file URLs (#3141)
- fix: fix(formatter): decode percent-encoded local file URLs before opening (#3250)
- fix: fix(formatter): promote tool-result media in the xai chat formatter (#2928)
- fix: fix(formatter): skip empty thinking blocks in the moonshot formatter (#2954)
- fix: fix(formatter): validate input in the dashscope multi-agent formatter (#2952)
- …and 68 more

## Architecture

- 0 containers · 1 bounded contexts · 0 dependency edges (baseline)
