Back Home

GitHub Repo

Graphify 0.9.68 fixes missing edges in incremental indexing, preserves cross-file dependencies

The new version includes symbols from unchanged files during parsing, fixing lost connections in the agent knowledge graph after partial updates. The fix is available on PyPI, but other import-resolution defects and recovery of older graphs still need separate verification.

GitLab, Inc. · MIT · Image source
zh-Hant

Graphify released version 0.9.68 on September 25, fixing a defect that caused incremental updates to lose cross-file relationships. The affected workflows include updates, code-only extraction, and watch mode. When an agent continually modifies a project, the graph could retain all its nodes while gradually losing import or call relationships. The fix is listed in the [release notes](https://github.com/Graphify-Labs/graphify/releases/tag/v0.9.68).

The tool builds a queryable knowledge graph for coding agents. It parses code locally using syntax trees, without a language model or vector database; other content, such as documents, follows a separate semantic-processing pipeline. Engineers can trace dependencies and call paths through the graph, so missing relationships directly affect the context provided to agents. The official package name is spelled with two y’s, `graphifyy`; [PyPI](https://pypi.org/project/graphifyy/0.9.68/) has the source distribution and wheel uploaded the same day.

A user first reported the problem in version 0.9.65: in a project with about 130 Python files and 3,277 nodes, an incremental update produced 65 fewer relationships than a clean build, even though the node count was identical. In that report, a forced rebuild was still short by 64 relationships; rebuilding after removing the output directory restored consistency. This was an observation in a specific environment and cannot be generalized to the rate of missing relationships across all projects. It does show that checking node counts alone is not enough to verify index completeness. [Issue report](https://github.com/Graphify-Labs/graphify/issues/3776)

The root cause was in symbol resolution: the old process indexed only nodes extracted in the current run. If a target function was in an unchanged file, the parser could not find it and skipped the connection. The fix adds symbols from unchanged files to the index as read-only context, gives newly extracted data priority, and preserves the cleanup mechanism for deleted imports. The maintainers said they refreshed the fix and included it in the release, adding a regression test to ensure that removing an import does not resurrect an old connection. Incremental and parsing tests passed on Python 3.10 and 3.13. However, normalization of `imports_from` targets for non-relative imports is being handled separately, so this does not establish that all missing-edge issues are resolved. [Patch discussion](https://github.com/Graphify-Labs/graphify/pull/3812)

Based on this mechanism, the fix should reduce the risk of agents mistaking “there is no path in the graph” for “there is no dependency in the code.” Teams that continuously watch a codebase should compare relationship sets from incremental and clean builds using the same source, and verify cases where relationships are added, retained, and deleted. Whether older graphs can be fully recovered and what additional indexing costs large projects may incur still need to be tested.

Sources

  1. Graphify v0.9.68 發布紀錄
  2. graphifyy 0.9.68 套件與發布檔案
  3. Issue #3776:增量更新悄悄遺失跨檔案關係
  4. PR #3812:保留增量更新中的跨檔案關係