Memory-file extraction re-mints doc concepts under variant ids — near-duplicate nodes survive dedup
メンテナーはふだん 1 日以内に返信
評価
調査の方向性
Start by tracing the merge path that combines extracted nodes, then inspect graph.json and the cached extraction entry under graphify-out/cache/semantic/…. Reproduce the memory-file update case and compare the canonical and variant concept ids. Done means repeated extraction does not leave near-duplicate concept nodes and the AMBIGUOUS edge is attached to the canonical node.
索引モデルが issue の本文から書いたものです。
説明
Summary
When a saved query memory (graphify-out/memory/query_*.md) is re-extracted on --update, concepts it mentions that already exist as doc-concept nodes can be minted under a different node id, producing a duplicate that id-based dedup cannot catch.
Evidence
Repo: rails-ai-bridge, graphifyy 0.9.61.
- Original doc extraction of
docs/port-registry-resolution.mdminteddocs_port_registry_resolution_resolver(label "Registry Resolver"). - A memory file describing that same concept minted
docs_port_registry_resolution_registry_resolver(label "Registry Resolver (port-registry-resolution doc concept)") — same stem, different entity suffix. - Both nodes coexisted in graph.json; the duplicate carried an AMBIGUOUS edge that belonged on the canonical node.
The node-id rule ({stem}_{entity}) makes the id deterministic from the label, so any label variation — parenthetical qualifiers, "Registry Resolver" vs "Resolver" — forks the id. Memory files quote concepts with extra qualifiers often enough that this recurs.
Suggested fix
One of:
- Label-normalized dedup for concept nodes: when merging, treat a new concept node as a duplicate if its normalized label (strip parentheticals, lowercase) matches an existing node with the same stem prefix — merge edges onto the canonical id.
- Canonical-id resolution at extraction: memory-file extraction could resolve mentioned concepts against the existing graph's node ids before minting new ones.
Option 1 is local to the merge path and doesn't require the extractor to know the existing graph.
Workaround applied locally
Rewrote the cached extraction entry (graphify-out/cache/semantic/…) to emit the canonical id and merged the node in graph.json. Holds until the memory file changes and the cache entry invalidates.
- 主要言語
- Python
- スター
- 124k
- フォーク
- 11.9k
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
Graphify-Labs/graphify のほかの issue
-
Relative JS imports with a query string (`./foo.js?v=123`) are not resolved対応中かも @mirzasnowy が 1 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
Graphify-Labs/graphify#4860 · コメント 3 件 ·
メンテナーはふだん 1 日以内に返信
-
Cache the claude backend system prompt via Anthropic prompt caching対応中かも @Jvxoq が 1 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
Graphify-Labs/graphify#4835 · コメント 4 件 ·
メンテナーはふだん 1 日以内に返信
-
extract --out <dir>: semantic cache never saved, docs missing from manifest (relative source_file resolved against --out)対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
Graphify-Labs/graphify#4831 · コメント 3 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1〜3時間 初心者へのやさしさ 75/100
Graphify-Labs/graphify#4829 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
hooks: last-resort `python3` probe launches the Microsoft Store redirector on Windows (visible console flash, exit 9009)対応中かも @Deepjyoti-Sarmah が 11 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
Graphify-Labs/graphify#4563 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
Graphify-Labs/graphify の issue をすべて見る
似ている issue
-
[oblt-aw][autodoc] Document new required `shared-org-key` input for `obs-aw-dependency-review`対応中かも @github-actions が今日担当しました。 オープン
難易度 1/5 1時間未満 初心者へのやさしさ 90/100
メンテナーはふだん 1 日以内に返信
-
getchaintips leaves out the active tip once a header is staged on it, where Core always lists itオープン
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
btclib-org/btclib-node#2158 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
dbt-msft/dbt-sqlserver#897 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
Gathin23/cleanyourtv#2770 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
Dao-AILab/flash-attention#3097 ·
メンテナーはふだん 3 日以内に返信