# Changelog

## Score

- CAI 69 → 59 (-9.8)
- Rubric changed (rubric-2026.10.1 → rubric-2026.10.5) — scores are not directly comparable.

## Lenses

- Code Health 80 → 82 (+2.0)
- Architecture 91 → 92 (+0.4)
- Maturity 74 → 56 (-18.6)
- Readiness 63 → 46 (-17.6)
- Security 66 → 81 (+14.4)
- Performance 87 → 87 (+0.0)

## Resolved (59)

- DeepAgentsApp._confirm_then_resume_cross_agent_thread (cognitive 16) (libs/code/deepagents_code/app.py)
- DeepAgentsApp._confirm_then_resume_cross_agent_thread (cyclomatic 17) (libs/code/deepagents_code/app.py)
- DeepAgentsApp._invoke_skill (cognitive 20) (libs/code/deepagents_code/app.py)
- DeepAgentsApp._restart_server_for_agent_swap (cognitive 61) (libs/code/deepagents_code/app.py)
- DeepAgentsApp._restart_server_for_agent_swap (cyclomatic 47) (libs/code/deepagents_code/app.py)
- DeepAgentsApp._resume_thread (cognitive 34) (libs/code/deepagents_code/app.py)
- DeepAgentsApp._resume_thread (cyclomatic 22) (libs/code/deepagents_code/app.py)
- DeepAgentsApp._set_auto_classifier_model (cyclomatic 20) (libs/code/deepagents_code/app.py)
- Dependency hygiene PARTLY measured — Python dependencies read, no exact pin to grade for currency
- Duplicated block (10 lines × 2) (libs/code/deepagents_code/ui.py)
- Duplicated block (12 lines × 2) (libs/code/deepagents_code/model_retry.py)
- Duplicated block (14–15 lines × 6) (libs/deepagents/deepagents/middleware/filesystem.py)
- Duplicated block (15 lines × 2) (libs/deepagents/deepagents/middleware/filesystem.py)
- Duplicated block (16 lines × 2) (libs/deepagents/deepagents/middleware/filesystem.py)
- Duplicated block (16–18 lines × 2) (libs/code/deepagents_code/app.py)
- Duplicated block (17–19 lines × 2) (libs/code/deepagents_code/client/non_interactive.py)
- Duplicated block (17–32 lines × 2) (libs/code/deepagents_code/ui.py)
- Duplicated block (18–20 lines × 2) (libs/code/deepagents_code/model_retry.py)
- Duplicated block (19 lines × 2) (libs/code/deepagents_code/hooks/server_middleware.py)
- Duplicated block (19 lines × 2) (libs/deepagents/deepagents/middleware/async_subagents.py)
- …and 39 more

## New (75)

- DeepAgentsApp._confirm_and_switch_model (cyclomatic 20) (libs/code/deepagents_code/app.py)
- DeepAgentsApp._confirm_then_resume_owned_cross_agent_thread (cognitive 17) (libs/code/deepagents_code/app.py)
- DeepAgentsApp._confirm_then_resume_owned_cross_agent_thread (cyclomatic 18) (libs/code/deepagents_code/app.py)
- DeepAgentsApp._generate_thread_name (cognitive 22) (libs/code/deepagents_code/app.py)
- DeepAgentsApp._generate_thread_name (cyclomatic 18) (libs/code/deepagents_code/app.py)
- DeepAgentsApp._refresh_cache_expiry_banner (cognitive 20) (libs/code/deepagents_code/app.py)
- DeepAgentsApp._replace_server_after_cwd_switch (cyclomatic 16) (libs/code/deepagents_code/app.py)
- DeepAgentsApp._restart_server_for_owned_agent_swap (cognitive 67) (libs/code/deepagents_code/app.py)
- DeepAgentsApp._restart_server_for_owned_agent_swap (cyclomatic 52) (libs/code/deepagents_code/app.py)
- DeepAgentsApp._resume_owned_thread (cognitive 37) (libs/code/deepagents_code/app.py)
- DeepAgentsApp._resume_owned_thread (cyclomatic 24) (libs/code/deepagents_code/app.py)
- DeepAgentsApp._sync_cache_state_from_state (cognitive 17) (libs/code/deepagents_code/app.py)
- Duplicate intent with inconsistent return types and naming. `read_git_branch_from_filesystem` and `read_git_branch_via_subprocess` perform the same logical operation (reading the current git branch) but use different mechanisms. The naming `from_filesystem` vs `via_subprocess` exposes implementation details rather than intent. Furthermore, their return types differ: the filesystem version returns `str | None` (allowing for 'no branch' state), while the subprocess version returns `str` (likely raising an exception or returning a default on failure). This inconsistency forces callers to handle different error states for the same logical outcome.
- Duplicated block (11 lines × 3) (libs/deepagents/deepagents/backends/state.py)
- Duplicated block (12–15 lines × 2) (libs/code/deepagents_code/plugins/adapters/skills_middleware.py)
- Duplicated block (14–15 lines × 6) (libs/deepagents/deepagents/middleware/filesystem.py)
- Duplicated block (15 lines × 2) (libs/deepagents/deepagents/middleware/filesystem.py)
- Duplicated block (16 lines × 2) (libs/deepagents/deepagents/middleware/filesystem.py)
- Duplicated block (17–30 lines × 2) (libs/code/deepagents_code/ui.py)
- Duplicated block (19 lines × 2) (libs/code/deepagents_code/hooks/server_middleware.py)
- …and 55 more

## Changes since last survey

- 205 commits — 157 feature/other, 48 fixes

## By area

- libs/code — 83 commits
- libs/partners — 33 commits
- libs/deepagents — 25 commits
- libs/talon — 18 commits
- openwiki/.claims — 13 commits
- .github/scripts — 7 commits
- libs/acp — 5 commits
- (root) — 3 commits
- examples/deep_research — 3 commits
- libs/evals — 3 commits
- openwiki/.last-update.json — 3 commits
- .github/workflows — 2 commits
- examples/nvidia_deep_agent — 2 commits
- examples/text-to-sql-agent — 2 commits
- examples/async-subagent-server — 1 commit
- examples/content-builder-agent — 1 commit
- examples/llm-wiki — 1 commit

## Notable commits

- fix: fix(acp): preserve local context prompt across compaction (#6840)
- fix: fix(acp): scope shell permissions to exact commands (#6881)
- fix: fix(code): add `/resume` alias and rank alias matches (#6988)
- fix: fix(code): avoid misleading `/reload` change summary (#7063)
- fix: fix(code): collapse idle subagents and reopen new work (#6782)
- fix: fix(code): compare effective interpreter permissions (#6993)
- fix: fix(code): extend triple-click selection across blocks (#6819)
- fix: fix(code): fail closed when hook context changes on resume (#6712)
- fix: fix(code): highlight expired prompt cache in the footer (#6970)
- fix: fix(code): highlight the first line of multiline chat input (#6781)
- fix: fix(code): isolate stored provider endpoints in workspace models (#6771)
- fix: fix(code): keep thread picker open on ownership conflicts (#6824)
- fix: fix(code): move debug MCP server details into a modal (#6720)
- fix: fix(code): preserve fork goal visibility without grading (#6893)
- fix: fix(code): preserve remote message completion markers (#6831)
- fix: fix(code): prevent concurrent local thread writers (#6717)
- fix: fix(code): recommend GPT-6 Luna for auto review (#6821)
- fix: fix(code): reconcile cache expiry during model requests (#6763)
- fix: fix(code): refresh the agent skill catalog on `/reload` (#6843)
- fix: fix(code): replace chat input when recalling a prompt (#6994)
- …and 185 more

## Architecture

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