# Changelog

## Score

- CAI 57 → 50 (-6.5)

## Lenses

- Code Health 73 → 73 (-0.0)
- Architecture 61 → 61 (+0.0)
- Maturity 52 → 53 (+0.1)
- Readiness 65 → 65 (+0.0)
- Security 77 → 42 (-34.7)
- Accessibility 52 → 52 (+0.0)
- Performance 100 → 100 (+0.0)

## Resolved (55)

- Duplicated block (10 lines × 2) (graphify/extractors/solidity.py)
- Duplicated block (10–11 lines × 2) (graphify/extractors/go.py)
- Duplicated block (10–11 lines × 2) (graphify/install.py)
- Duplicated block (12 lines × 2) (graphify/extractors/julia.py)
- Duplicated block (12–15 lines × 2) (graphify/extract.py)
- Duplicated block (13 lines × 2) (graphify/cli.py)
- Duplicated block (14–20 lines × 2) (graphify/extract.py)
- Duplicated block (17 lines × 2) (graphify/export.py)
- Duplicated block (17 lines × 2) (graphify/extractors/fortran.py)
- Duplicated block (23 lines × 3) (graphify/extractors/go.py)
- Duplicated block (24–37 lines × 2) (graphify/extract.py)
- Duplicated block (25–26 lines × 2) (graphify/extractors/engine.py)
- Duplicated block (26 lines × 2) (graphify/extractors/go.py)
- Duplicated block (29 lines × 2) (graphify/extractors/go.py)
- Duplicated block (31 lines × 2) (graphify/extract.py)
- Duplicated block (3–11 lines × 4) (graphify/extract.py)
- Duplicated block (40 lines × 2) (graphify/extractors/go.py)
- Duplicated block (43–48 lines × 2) (graphify/cli.py)
- Duplicated block (49–52 lines × 2) (graphify/cli.py)
- Duplicated block (5 lines × 2) (graphify/build.py)
- …and 35 more

## New (150)

- Critical CVE: [GHSA redacted] (uv.lock)
- Critical vulnerability: [GHSA redacted] (uv.lock)
- Duplicated block (10 lines × 2) (graphify/extractors/resolution.py)
- Duplicated block (10–11 lines × 2) (graphify/install.py)
- Duplicated block (10–12 lines × 2) (graphify/extractors/solidity.py)
- Duplicated block (10–12 lines × 4) (graphify/install.py)
- Duplicated block (11 lines × 2) (graphify/cli.py)
- Duplicated block (11 lines × 2) (graphify/extractors/engine.py)
- Duplicated block (14–15 lines × 4) (graphify/install.py)
- Duplicated block (15 lines × 2) (graphify/extract.py)
- Duplicated block (17 lines × 2) (graphify/extractors/engine.py)
- Duplicated block (17 lines × 2) (graphify/extractors/engine.py)
- Duplicated block (18 lines × 2) (graphify/export.py)
- Duplicated block (18 lines × 2) (graphify/extractors/go.py)
- Duplicated block (20 lines × 2) (graphify/install.py)
- Duplicated block (23 lines × 2) (graphify/extractors/julia.py)
- Duplicated block (24–26 lines × 2) (graphify/cli.py)
- Duplicated block (5 lines × 2) (graphify/dedup.py)
- Duplicated block (5 lines × 2) (graphify/extract.py)
- Duplicated block (5 lines × 2) (graphify/extract.py)
- …and 130 more

## Changes since last survey

- 300 commits — 116 feature/other, 184 fixes

## By area

- graphify/extractors — 50 commits
- (root) — 41 commits
- graphify/extract.py — 36 commits
- graphify/cache.py — 23 commits
- tools/skillgen — 15 commits
- graphify/build.py — 12 commits
- graphify/cli.py — 12 commits
- graphify/cross_repo_calls.py — 8 commits
- graphify/serve.py — 8 commits
- graphify/__main__.py — 7 commits
- graphify/dedup.py — 6 commits
- graphify/detect.py — 6 commits
- graphify/llm.py — 6 commits
- graphify/security.py — 5 commits
- graphify/install.py — 4 commits
- docs/translations — 3 commits
- graphify/export.py — 3 commits
- graphify/exporters — 3 commits
- graphify/prs.py — 3 commits
- tests/test_security.py — 3 commits

## Notable commits

- fix: Add a regression test for the source less collision survivor
- fix: Add regression tests for the drifted confidence fold
- fix: Add regression tests for the member call defer fix
- fix: Recover CREATE TABLE statements dropped into ERROR nodes by unsupported column defaults (fixes #4613)
- fix: chore(cache): bump AST schema to 15 for the Go generic-receiver fix
- fix: fix(affected): walk callers of the supertype member an overriding method overrides (#4330)
- fix: fix(benchmark): count the tokens of the answer query_graph returns
- fix: fix(build): exempt deduplicated AST-twin semantic nodes from shrink guard and fold LLM node/edge field aliases
- fix: fix(build): fold node confidence the same way as edges and hyperedges (#4529)
- fix: fix(build): resolve a raw graph's import endpoints through the alias index (#4670)
- fix: fix(build): spare hyperedge members and pre-prune semantic isolates in orphan sweep (#4399)
- fix: fix(build): sweep source-less placeholders orphaned by re-extraction (#4399)
- fix: fix(build): tighten AST-twin exemption to strict canonical AST origin and exclude collisions
- fix: fix(cache): read and write AST cache entries via extended-length paths on Windows
- fix: fix(cli): derive the --help platform list from _PLATFORM_CONFIG + add a drift guard (#4655)
- fix: fix(cli): give lookups distinct exit codes for ambiguous and missing names
- fix: fix(cli): leave installed skills alone on version and help (#4545)
- fix: fix(cli): list amp and every --platform value in graphify --help
- fix: fix(cluster): keep a community label when membership overlap stays a majority (#2298)
- fix: fix(codex): preserve semantic chunks through B3 merge
- …and 280 more

## Architecture

- Unchanged — 0 containers · 1 contexts · 0 edges
