fix(status): report languages from live File inventory, not all node rows (#474)
get_stats() derived the language list from every node row, so virtual or leftover rows without a backing File node (e.g. the synthetic Spring Event nodes with file_path='event') kept a language alive in 'code-review-graph status' after the last real file of that language left the graph. Languages now come from kind='File' rows only, sorted for deterministic output, so the status file count and language list always describe the same live file inventory. Also rerun the Spring/Temporal resolvers when .java files leave the graph via stale reconciliation or missing-path removal (mirroring the existing python_changed check), so the stale virtual Event nodes themselves are cleared instead of lingering in the database. Regression tests: build/update flows must keep status equal to the SQLite File rows, including an update that removes every file of one language. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FmPUotoqsNWWt3b41FMjwv
T
Tirth Kanani committed
5268f01f693d830307b499a4de090efc48c4c039
Parent: f88f26e