github vitali87/code-graph-rag v0.0.895

2 hours ago

Highlights

  • File System Operations: Improved handling of file system operations with platform-neutral joins and safeguards against removing project root.
  • Cache Management: Enhanced cache management with atomic publishing, dedicated cache stamps, and improved deletion handling for orphan caches.
  • Graph Querying: Introduced deterministic graph query tools for more precise analysis of code relationships.
  • Re-ingestion & Parsing: Improved re-ingestion processes, including handling of deleted files, re-parsing of related files, and rebuilding of key data structures.
  • Security & Stability: Addressed security concerns by blocking removal of project root and improved stability by preventing skipped edits and handling orphaned caches.
  • C++ & Go Integration: Enhanced integration with C++ and Go, including parsing of module interfaces and handling of module-level class aliases.
  • Testing & CI: Improved test coverage and CI processes, including cancelling superseded PR runs and ensuring proper evaluation of edge cases.

New Contributors

Full Changelog: v0.0.845...v0.0.895

What's Changed

  • fix: judge git repo-location targets with a platform-neutral join by @vitali87 in #1662
  • fix: judge rm targets with a platform-neutral join by @vitali87 in #1666
  • fix: make the safe teardown the default for read-only trees under tmp_path (#1622) by @vitali87 in #1648
  • fix: same-stem siblings get the module qns a clean index gives them when one is added or deleted by @vitali87 in #1573
  • fix: a reused updater drops a deleted file's in-memory state before Pass 2 and starts Pass 3 with empty resolver caches by @vitali87 in #1576
  • fix: a value receiver never constructs, so value.Name() must not resolve to a class (#1641) by @vitali87 in #1678
  • feat: single-file scoped re-ingest with an interactive latency budget by @vitali87 in #1538
  • test: share one CLI subprocess deadline with real headroom (#1655) by @vitali87 in #1683
  • fix(security): block rm targeting project root by @qinghuanandejiangshi in #1684
  • fix: publish the hash cache atomically with its stamp (#1646) by @vitali87 in #1656
  • fix: give the scoped re-ingest its own cache-stamp log constants by @vitali87 in #1690
  • fix: flush the orphan-prune deletes before the caches commit (#1645) by @vitali87 in #1674
  • fix: sweep deleted-file state on recorded module qns, not path-derived (#1676) by @vitali87 in #1689
  • fix: a nested class is not a self-dispatch target, so self.Inner() emits no CALLS to it (#1650) by @vitali87 in #1694
  • feat: return and parameter types as first-class graph facts by @vitali87 in #1539
  • ci: cancel superseded PR runs of Sonar, OSV, split score and the review workflow by @vitali87 in #1699
  • fix: probe formatters by invoking them, not by finding them on PATH (#1639) by @vitali87 in #1697
  • fix: scope single-file GraphUpdater runs so they cannot sweep siblings or truncate the cache (#1619) by @vitali87 in #1664
  • fix: compare tree-sitter nodes by value when skipping the import base (#1703) by @vitali87 in #1706
  • fix: compare tree-sitter nodes by value in the property-access guard (#1702) by @vitali87 in #1704
  • fix: do not paste a failed advisory API response into release notes by @vitali87 in #1653
  • fix: let an exact unignore line rescue a minified bundle (#1637) by @vitali87 in #1696
  • fix: rebuild the rehydrated qn sets instead of accumulating them (#1677) by @vitali87 in #1688
  • fix: recover the watcher after a re-ingest that failed part way through (#1681) by @vitali87 in #1695
  • fix: sweep definitions keyed outside the re-parsed file's own module (#1659) by @vitali87 in #1710
  • feat: deterministic graph query tools: resolve, definition, callers, callees, implementors, overrides, importers, tests_reaching by @vitali87 in #1542
  • fix: let a run finish and rebuild when an orphaned cache cannot be discarded (#1647) by @vitali87 in #1693
  • fix: re-parse importers waiting on a file the re-ingest created (#1682) by @vitali87 in #1698
  • fix: re-parse files that define into a departing module (#1660) by @vitali87 in #1713
  • fix: rebuild the C++ interface set instead of accumulating it (#1692) by @vitali87 in #1715
  • fix: probe the node and dotnet oracle toolchains for capability, not presence (#1639) by @vitali87 in #1707
  • fix: make the module-qn rule a parser fingerprint input (#1720) by @vitali87 in #1722
  • fix: record unresolved relative specifiers so dropped-edge importers stay findable (#1714) by @vitali87 in #1717
  • test: emulate the unanswered queries and make the eval double fail closed (#1716) by @vitali87 in #1723
  • fix: give the deletion ownership set the same path-derived fallback as the sweep (#1719) by @vitali87 in #1724
  • fix: give a declaration file the module identity importers resolve to by @vitali87 in #1728
  • fix: distrust a hash-cache stamp from the future so edits are not skipped (#1665) by @vitali87 in #1726
  • fix: parse .mxx C++ module interfaces and derive the module set from the parsed set by @vitali87 in #1732
  • fix: stamp the parser fingerprint at the post-flush commit point, not inside _process_files by @vitali87 in #1733
  • fix: strip inherited GIT_* routing and count only loose objects in the readonly cleanup test by @vitali87 in #1734
  • test: require the rehydration pass to rebuild the C++ interface set, not merely keep the edge by @vitali87 in #1735
  • fix: forget a deleted Go file's return-type entries and rebuild the package index by @vitali87 in #1739
  • chore: turn off CodeRabbit's docstring-coverage pre-merge check to match the PR template by @vitali87 in #1742
  • fix: a Delombok-forced re-parse deletes the file's old subtree instead of stacking a second parse by @vitali87 in #1745
  • fix: parse a C file's #include directives so it emits the same IMPORTS edge a header does by @vitali87 in #1746
  • test: fail the peak-memory invariance only on a drift a leak could cause by @vitali87 in #1749
  • fix: hold a bold in a news bullet's body to the feature-theme rule by @vitali87 in #1748
  • fix: create the hash-cache temporary with an unpredictable no-follow exclusive open (#1700) by @vitali87 in #1701
  • fix: a run rooted at a path that is neither a file nor a directory raises instead of indexing nothing by @vitali87 in #1740
  • test: state the rewrite-after-run mtime precondition in the remaining incremental tests by @vitali87 in #1743
  • fix: preserve nested-class construction for optional receivers by @atirna in #1730
  • fix: name a Lua function built into a table constructor by its field key under its table by @vitali87 in #1750
  • fix: prune a deleted file's method return types with the same ownership filter as its registry rows by @vitali87 in #1752
  • test: pin that rehydration re-adds a C++ module interface held only by the graph by @vitali87 in #1754
  • fix: a single-file target deleted after construction is removed from state and cache rather than skipped as unreadable by @vitali87 in #1755
  • fix: match the std token when prefixing a system include so stdio.h lands under std. like signal.h by @vitali87 in #1757
  • test: split every composite assertion into one assertion per operand (Sonar S9073) by @vitali87 in #1760
  • test: one raising call per pytest.raises block (Sonar S5778) by @vitali87 in #1761
  • refactor: merge the three remaining pairs of identical branches (Sonar S1871) by @vitali87 in #1763
  • chore: pytest.fail over assert False, returning fixtures without teardown, no empty match arms (Sonar S9077, S9100, S108) by @vitali87 in #1764
  • fix: reap the integration suite's orphaned Memgraph containers at session start by label by @vitali87 in #1751
  • feat: record Go struct construction as INSTANTIATES from composite literals by @vitali87 in #1747
  • refactor: split resolve_class_name into its three lookup steps (Sonar S3776) by @vitali87 in #1766
  • refactor: split the C++ field-declarator name reader and the Go selector walk (Sonar S3776) by @vitali87 in #1767
  • refactor: collect dead-code roots through one predicate instead of eighteen identical branches (Sonar S1871) by @vitali87 in #1762
  • fix: a module-level class alias is a class receiver, so Alias.Inner() constructs like Outer.Inner() by @vitali87 in #1759
  • refactor: accumulate one sampled speedscope stack in its own helper (Sonar S3776) by @vitali87 in #1765
  • refactor: split the pubspec line scanner and the C# base-name reader (Sonar S3776) by @vitali87 in #1770
  • refactor: split the C++ include parser and the macro body scan (Sonar S3776) by @vitali87 in #1771
  • feat: edge resolution confidence and trace write-back by @vitali87 in #1543
  • fix: prune a deleted file's C# method return types with the same ownership filter as the other return-type maps by @vitali87 in #1768
  • test: treat a try body and its else as one path in the evals shadowing guard by @vitali87 in #1741
  • fix: prune seeded module qns the graph no longer holds (#1687) by @vitali87 in #1711
  • feat: structural delta after every write tool and cgr check (#1525) by @vitali87 in #1546
  • fix: prune the four remaining C# side tables when a file is deleted (#1769) by @vitali87 in #1778
  • fix: a single-file run must not prune Modules it never walked (#1756) by @vitali87 in #1779
  • feat: persist the incomplete-run marker so a fresh MCP process refuses reingest (#1679) by @vitali87 in #1705
  • fix: include class methods in semantic embeddings by @dajiaohuang in #1729
  • fix: name header ExternalModules by the header, and keep every include's edge (#1758) by @vitali87 in #1780
  • fix: reingest prunes the seeded module-qn map, with its own re-parsed paths (#1712) by @vitali87 in #1785
  • feat: rename edit operation driven by the graph with ambiguity refusal (#1532) by @vitali87 in #1545
  • fix: prune the two class-keyed maps when a file leaves the state (#1772) by @vitali87 in #1795
  • fix(java): avoid recursion limits in variable collection by @Bortlesboat in #1791
  • build(deps): bump the uv group across 1 directory with 3 updates by @dependabot[bot] in #1802
  • fix: mark wipes complete after embedding cleanup by @Bortlesboat in #1793
  • fix(cpp): retract import state for deleted files by @Bortlesboat in #1792
  • fix: memoise C# chained-call resolution so fluent chains are linear (#1800) by @vitali87 in #1801
  • feat: run fuzzing continuously with ClusterFuzzLite (#1731) by @vitali87 in #1796
  • fix: fuzz the rm-path guard the shell harness was skipping (#1731) by @vitali87 in #1803
  • fix: re-index a deleted path that is still present on disk by @vitali87 in #1815

New Contributors

Full Changelog: v0.0.845...v0.0.895

Don't miss a new code-graph-rag release

NewReleases is sending notifications on new releases.