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

## Lenses

- Code Health 84 → 95 (+10.8)
- Architecture 97 → 96 (-1.5)
- Maturity 73 → 65 (-7.7)
- Readiness 49 → 30 (-19.8)
- Security 62 → 49 (-13.6)

## Resolved (68)

- AsyncDynamicSession.fetch (cognitive 37) (scrapling/engines/_browsers/_controllers.py)
- AsyncDynamicSession.fetch (cyclomatic 18) (scrapling/engines/_browsers/_controllers.py)
- AsyncStealthySession._cloudflare_solver (cognitive 51) (scrapling/engines/_browsers/_stealth.py)
- AsyncStealthySession._cloudflare_solver (cyclomatic 16) (scrapling/engines/_browsers/_stealth.py)
- AsyncStealthySession.fetch (cognitive 39) (scrapling/engines/_browsers/_stealth.py)
- AsyncStealthySession.fetch (cyclomatic 19) (scrapling/engines/_browsers/_stealth.py)
- BaseSessionMixin.__generate_options__ (cognitive 21) (scrapling/engines/_browsers/_base.py)
- Change coupling: chrome.py ↔ stealth_chrome.py (scrapling/fetchers/chrome.py)
- Convertor._extract_content (cognitive 18) (scrapling/core/shell.py)
- Coverage not included — suite not readable by the collector
- CrawlerEngine._process_request (cognitive 25) (scrapling/spiders/engine.py)
- CrawlerEngine._process_request (cyclomatic 20) (scrapling/spiders/engine.py)
- CrawlerEngine._run_callbacks (cognitive 18) (scrapling/spiders/engine.py)
- CrawlerEngine.crawl (cognitive 36) (scrapling/spiders/engine.py)
- CrawlerEngine.crawl (cyclomatic 20) (scrapling/spiders/engine.py)
- CurlParser.parse (cognitive 38) (scrapling/core/shell.py)
- CurlParser.parse (cyclomatic 31) (scrapling/core/shell.py)
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- Duplicated block (11 lines × 2) (scrapling/engines/_browsers/_controllers.py)
- Duplicated block (11 lines × 2) (scrapling/engines/static.py)
- …and 48 more

## New (10)

- Coverage not measured — test suite did not build
- Dimension evaluation failed
- Duplicated block (11 lines × 2) (tests/spiders/test_force_stop_checkpoint.py)
- Duplicated block (17 lines × 2) (scrapling/core/ai.py)
- High: security finding (details withheld)
- Medium: security finding (details withheld)
- No artifact signing
- No build provenance
- No tests found
- The 'Requirements' section lists zensical, mkdocstrings, and several tooling packages but no links from the main documentation to where each is installed. (docs/requirements.txt)

## Changes since last survey

- 1 commits — 1 feature/other, 0 fixes

## By area

- (root) — 1 commit

## Notable commits

- change: docs: removing a sponsor
