# 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 62 → 46 (-16.2)
- Rubric changed (rubric-2026.08.18 → rubric-2026.08.15) — scores are not directly comparable.

## Lenses

- Code Health 76 → 89 (+12.4)
- Architecture 100 → 94 (-5.7)
- Maturity 57 → 51 (-5.9)
- Readiness 70 → 27 (-42.8)
- Security 58 → 59 (+1.5)

## Resolved (322)

- AsyncChatEngine._handle_stream_chunk (cognitive 70) (private_gpt/components/engines/chat/async_chat_engine.py)
- AsyncChatEngine._handle_stream_chunk (cyclomatic 34) (private_gpt/components/engines/chat/async_chat_engine.py)
- AsyncChatEngine._run_iteration (cognitive 24) (private_gpt/components/engines/chat/async_chat_engine.py)
- AsyncChatEngine._run_iteration (cyclomatic 20) (private_gpt/components/engines/chat/async_chat_engine.py)
- Change coupling: embedding_component.py ↔ llm_component.py (private_gpt/components/embedding/embedding_component.py)
- ChatBody.validate_properties (cognitive 97) (private_gpt/server/chat/chat_models.py)
- ChatBody.validate_properties (cyclomatic 58) (private_gpt/server/chat/chat_models.py)
- ChatLoopEngine._handle_stream_chunk (cognitive 70) (private_gpt/components/engines/chat/chat_engine.py)
- ChatLoopEngine._handle_stream_chunk (cyclomatic 34) (private_gpt/components/engines/chat/chat_engine.py)
- ChatLoopEngine._run_iteration (cognitive 20) (private_gpt/components/engines/chat/chat_engine.py)
- ChatLoopEngine._run_iteration (cyclomatic 19) (private_gpt/components/engines/chat/chat_engine.py)
- CondenserContextMemoryStrategy._condense_from_left (cognitive 20) (private_gpt/components/chat/processors/chat_history/memory/strategies/condenser.py)
- CondenserContextMemoryStrategy._condense_from_left (cyclomatic 16) (private_gpt/components/chat/processors/chat_history/memory/strategies/condenser.py)
- ContentService._filter_tree_nodes (cognitive 37) (private_gpt/server/content/content_service.py)
- ContentService._filter_tree_nodes (cyclomatic 17) (private_gpt/server/content/content_service.py)
- ContentService._retrieve_document_node (cognitive 25) (private_gpt/server/content/content_service.py)
- ContentService._retrieve_document_node (cyclomatic 16) (private_gpt/server/content/content_service.py)
- Coverage not included — suite not readable by the collector
- DatabaseFunctionsInspector._get_db2_functions (cognitive 20) (private_gpt/components/database/function_inspector.py)
- DatabaseFunctionsInspector._get_db2_functions (cyclomatic 16) (private_gpt/components/database/function_inspector.py)
- …and 302 more

## New (20)

- Coverage not measured — test suite did not build
- Dimension evaluation failed
- Duplicated block (10 lines × 2) (private_gpt/chat/input_models.py)
- Duplicated block (10 lines × 2) (tests/components/chat/test_tldr_side.py)
- Duplicated block (12 lines × 2) (private_gpt/components/tabular/pandasai_sandbox.py)
- Duplicated block (14 lines × 2) (private_gpt/components/readers/text/email_reader.py)
- Duplicated block (14 lines × 2) (private_gpt/components/tools/builders/database_query_builder.py)
- Duplicated block (17 lines × 2) (tests/components/chat/test_tldr_side.py)
- Duplicated block (19 lines × 2) (tests/models/anthropic/test_openapi_schema.py)
- Duplicated block (20 lines × 2) (tests/components/transforms/test_markdown_node_transform.py)
- Duplicated block (5 lines × 2) (tests/server/events/test_content_block_pruning.py)
- High: security finding (details withheld)
- High: security finding (details withheld)
- Leaked secret: signing-key (settings.yaml)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- No SBOM
- No build provenance
- No tests found
- The banner image links to privategpt_banner.png inside the HTML but no asset path is shown in the document for readers to locate it locally. (README.md)

## Changes since last survey

- 10 commits — 2 feature/other, 8 fixes

## By area

- private_gpt/server — 4 commits
- private_gpt/components — 3 commits
- private_gpt/celery — 2 commits
- (root) — 1 commit

## Notable commits

- fix: fix: avoid duplicating deltas (#2321)
- fix: fix: context stack (#2323)
- fix: fix: improve perf (#2322)
- fix: fix: mcp oauth error (#2325)
- fix: fix: prepare stable version (#2318)
- fix: fix: remove pub sub (#2328)
- fix: fix: remove tool result (#2327)
- fix: fix: split celery task in two (parser & store), and reuse in the attach documents (#2326)
- change: chore(deps): update Claude specs and anthropic SDK (#2324)
- change: feat: bump mcp to 2.0 (#2320)
