Highlights
- Code Generation: Split Cypher response cleaning and AST-grep rule validation into smaller, more manageable helpers for improved clarity and maintainability.
- Scripting Improvements: Resolved an issue where closed pull request run associations were incorrectly reported as missing, and improved error reporting in scripts to avoid over-claiming failing checks.
- Data Handling: Enhanced the handling of CONTAINS_SECTION in the double's module subtree and refined snippet lookup to project the matched node's own path.
What's Changed
- ci: require Go >=1.26.6 for sumdb verification fixes by @vitali87 in #1962
- refactor: split the cypher response cleaning into per-format helpers (#1669) by @vitali87 in #1956
- refactor: split the ast-grep rule validation into two guards (#1669) by @vitali87 in #1953
- fix(scripts): a closed PR's cleared run association is not a missing one (#1944) by @vitali87 in #1952
- fix(evals): walk CONTAINS_SECTION in the double's module subtree (#1938) by @vitali87 in #1947
- refactor: split the source-root discovery walk into per-signal helpers (#1669) by @vitali87 in #1946
- test: cover two declared empty-class renames in one file (#1836) by @vitali87 in #1945
- fix(go): bump x/mod to v0.40.0 for sumdb advisories by @vitali87 in #1963
- fix(scripts): say when an unrequired check is failing, and stop over-claiming by @L4XB in #1954
- test: derive the snippet allowlist from the schema (#1950) by @vitali87 in #1951
- docs: state the f-string brace convention in cypher_queries by @vitali87 in #1949
- fix(deps): bump anyio to 4.14.2 to fix TLS IDNA spoofing (CVE-2026-63374) by @vitali87 in #2026
- fix: project the matched node's own path in the snippet lookup (#1934) by @L4XB in #1943
- docs: add public incident response plan by @vitali87 in #2030
- docs: clarify governance continuity responsibilities by @vitali87 in #2029
- docs: refresh security threat model and trust boundaries by @vitali87 in #2031
- fix(dart): bind member reads on construction receivers (new, const, generic) (#2015) by @vitali87 in #2032
- docs: four verified details the security rewrite left open (#2028) by @vitali87 in #2038
- fix(dart): a named constructor call records INSTANTIATES on its class by @vitali87 in #2019
- ci(release): the README re-render is its own blocking step by @vitali87 in #1996
- fix(dart): a constructor call with type arguments, new or const takes INSTANTIATES and the constructor CALLS by @vitali87 in #2013
- fix(calls): a constructor under a duplicate-suffixed class takes its CALLS edge (#2007) by @vitali87 in #2008
- docs: move the interpreter-floor note out of the install path by @vitali87 in #1960
- feat: ship third-party licence notices beside each release binary by @vitali87 in #2085
- fix(csharp): same-file partial parts share one partial group by @vitali87 in #2018
- ci: give Copilot code review a runner, and a repo-specific skill by @vitali87 in #2087
- feat: consume the cross-service edges: endpoint tools and dead endpoints (#1603) by @vitali87 in #1975
- fix(incremental): compare the exclusion scope without the reader keys by @vitali87 in #1984
- test: stop gating the per-language module-doc tests on tree-sitter-python by @L4XB in #1821
- feat: declared parameters for the eleven non-Python languages (#1804) by @vitali87 in #1965
- fix(java): read the varargs element type past a modifier or annotation (#1964) by @vitali87 in #1973
- fix(incremental): re-parse every file once after a parser input changes by @vitali87 in #1980
- chore: restrict AI reviewer comments to critical/high-severity issues by @vitali87 in #2111
- ci: pin pr-split action to the fixed main SHA so the split comment posts by @vitali87 in #2112
- ci: gate automatic release tags on successful source CI by @lllleolin-max in #1885
- fix(config): the start-up gate reads the variable its message names by @L4XB in #1916
- fix(query): print boolean cells a non-UTF-8 terminal can encode by @L4XB in #1917
- fix(evals): key site-bearing relationships the way the store does by @L4XB in #1915
- fix(ci): say which runs were excluded and why, not that none exists by @vitali87 in #1955
- fix: keep source fallbacks inside the owning project by @lllleolin-max in #1881
- fix(prompts): select orchestrator active projects engine by backend (#1840) by @BLVCK-MAMBA-6 in #1849
- fix(incremental): a cached file that became unreadable is not in sync, not a crash by @vitali87 in #1994
- fix: derive notice licences from the bundle, not the installed wheel by @vitali87 in #2110
- fix(scripts): read classic branch protection beside the rulesets in check_pr_gated (#1957) by @vitali87 in #1968
- fix: a C# verbatim identifier is not a duplicate-qn marker (#2017) by @vitali87 in #2113
- fix(java): read the varargs element type of every shape by @vitali87 in #1976
- fix(graph): a reader keeps only the rows the project owns by its longest registered name by @vitali87 in #1990
- fix: a nested body's bindings do not type the enclosing function's names (#1922) by @vitali87 in #1928
- fix(docs): consume every generated section, and fail the generator on one that reaches no marker (#1929) by @vitali87 in #1969
- fix(incremental): retry a file the run could not read by @vitali87 in #1993
- feat: EnumVariant nodes under HAS_VARIANT for Rust, Java, C, C++, C# and PHP enums (#1807) by @vitali87 in #2086
- feat: announce context compaction and let users decline it by @vitali87 in #2106
- feat(mcp): serve a workspace: --workspace / MCP_WORKSPACE scope the server's projects (#1494) by @vitali87 in #1972
- test: two stale expectations left red on main by crossed merges by @vitali87 in #2173
- docs: document C# and web-search configuration by @vitali87 in #2037
- fix(cpp): preserve lifecycle calls for duplicate class variants by @mikemikimike in #2027
- fix(csharp): resolve alias-qualified type calls by @mikemikimike in #2025
- fix(csharp): leave a namespace the module's directory spells out of the qualified name (#1629) by @vitali87 in #1999
- ci(split-score): report every PR's score without an API call by @vitali87 in #2177
- docs: a PR shows its user-visible change working, in its description by @vitali87 in #2178
- fix(csharp): a member access argument is a method group on a typed receiver only (#1998) by @vitali87 in #2011
- fix: refuse a PR whose review anchors to a non-head commit (#1936) by @vitali87 in #1939
- fix(incremental): rehydrate only the rows the project owns by its longest registered name by @vitali87 in #1988
- fix(cli): cgr doctor asks the codec for its marks, like the query table (#2120) by @vitali87 in #2128
- fix(config): hold every credential source to one blank-and-sentinel rule (#2119) by @vitali87 in #2130
- fix(structural-delta): scope snapshots to longest project owner by @mikemikimike in #2021
- fix(csharp): a removed or re-parsed partial part leaves its partial group by @vitali87 in #2020
- feat(gloss): follow a renamed definition by its text-quote anchor (#1808) by @vitali87 in #1966
- refactor: every duplicate-marker reader goes through qn_markers by @vitali87 in #2184
- fix(csharp): a written or aliased type path binds its type by @vitali87 in #2183
- fix(incremental): the route, module and package readers keep only rows the project owns (#2126, #1991) by @vitali87 in #2129
- docs(security): name the web-search path among the main data flows by @vitali87 in #2185
- perf(evals): the two per-item edge readers read adjacency, not every edge by @vitali87 in #2186
- docs: say what sharpens the Tree-sitter backbone by @vitali87 in #2188
- test(docs): fail when a checked-in generated doc drifts from the generator (#2121) by @vitali87 in #2127
- fix(incremental): re-parse the files that waited for an added file by @vitali87 in #1979
- fix(security): enforce read-only generated Cypher at the engine by @vitali87 in #2203
- refactor(types): read a resolved type's label through the resolver by @L4XB in #2215
- chore: remove a commercially licensed book PDF from optimize/ by @vitali87 in #2208
- fix(providers): strip the /v1 suffix instead of its characters when deriving health-check URLs by @vitali87 in #2204
- fix(build): ship the fallback highlight queries in the wheel by @vitali87 in #2207
- fix(config): a provider set without its model is reported instead of silently falling back to Ollama by @vitali87 in #2210
- fix(cli): a --orchestrator/--cypher provider switch no longer inherits the previous provider's endpoint and key by @vitali87 in #2209
- fix(ast-cache): bound memory by source size instead of the tuple's shallow size by @vitali87 in #2214
- fix(vector-store): refuse an existing Qdrant collection whose vector size differs from the configured dimension by @vitali87 in #2211
- fix(shell): block the short, attached and abbreviated spellings of git options that run a program by @vitali87 in #2212
- fix(parsers): key callable-flow records by file so reingest stops restoring stale CALLS edges by @vitali87 in #2206
- fix(watcher): handle moved and directory events so renames, atomic saves and directory deletes reach the graph by @vitali87 in #2205
- refactor: flatten four parent-extraction functions below the complexity limit (#1669) by @vitali87 in #2227
- fix(go): declare toolchain go1.26.6 for the gotypes helper by @vitali87 in #2228
- ci(fuzz): pin the ClusterFuzzLite base image by digest by @vitali87 in #2230
- fix: keep GPL readline out of the binary and credit bundled native libraries by @vitali87 in #2229
- chore(deps): bump astral-sh/uv from 0.10 to 0.12 by @dependabot[bot] in #2233
- chore(deps): bump docker/setup-qemu-action from 3.7.0 to 4.4.0 by @dependabot[bot] in #2237
- chore(deps): bump docker/metadata-action from 5.10.0 to 6.2.0 by @dependabot[bot] in #2239
- chore(deps): bump sigstore/cosign-installer from 4.1.0 to 4.1.2 by @dependabot[bot] in #2238
- fix(realtime): decide watched files with the repository walk's own predicate by @vitali87 in #2241
- chore(deps): bump actions/github-script from 8.0.0 to 9.0.0 by @dependabot[bot] in #2235
- chore(deps): bump docker/setup-buildx-action from 3.12.0 to 4.4.1 by @dependabot[bot] in #2236
New Contributors
- @L4XB made their first contribution in #1954
- @BLVCK-MAMBA-6 made their first contribution in #1849
- @mikemikimike made their first contribution in #2027
Full Changelog: v0.0.945...v0.0.996