Skip to content

spec(retrieval): the same Li+ source file duplicated across repos takes several top-k slots #202

Description

@liplus-lin-lay

目的

#189 の重複 3 軸のうち軸 (c)(配布の重複)を分割して受け取った issue。2026-08-02 の実測により、当初の前提が事実と異なることが判明したため、本文を書き換えた。

実測(2026-08-02、deploy 済みインデックス)

当初の前提(誤り)

Li+ source は各 user repo の .claude/ に複製されているため、同内容のファイルが repo 数だけ索引に存在する。

2 点とも成立していない。

1. 複製を持つのは 4 repo 中 1 repo だけ。

repo .claude/ の tracked file 数
github-webhook-mcp 65
github-rag-mcp 0
neuron-graph-rag 0
liplus-desktop 0

「repo 数だけ存在する」構造的な配布は起きていない。

2. 「同内容」ではない。3 ヶ月前の 1 スナップショット。

github-webhook-mcp の .claude/CLAUDE.md sentinel は build-2026-05-03.3。最終更新は 369265b(2026-05-06、"chore(li+): regenerate .claude adapter to build-2026-05-03.3")。現行 Li+ は build-2026-08-02.1

現行 Li+ source と突き合わせた結果:

現行にも存在 現行から消滅
rules 18 16
skills 21 5

消滅済みパスの例: rules/model/as-if-evaluation.md / expansion-limit.md / one-step-two-step.md / output-density.md / prohibited-loops.md / loop-safety.mdrules/operations/release-version.md / repo-first-execution.mdskills/task-retrieval-orchestration/SKILL.md など。

「現行にも存在」側の 39 本も、内容は build-2026-05-03.3 時点のまま。パスが生きているぶん、こちらのほうが現行と誤認されやすい。

検索での実害

Trigger Check Gate の 5 軸チェックはいつ実行するのか / top_k: 10:

rank 実体 updated_at
1 rules/model/trigger-check-gate.md(liplus-language、正本) 2026-06-21
2 .claude/rules/model/trigger-check-gate.md(github-webhook-mcp、複製) 2026-05-25

枠を 1 つ取られること自体より、古い規則本文が rank 2 で配膳されることのほうが実害。#189 の集約は referent 単位なので、この 2 行は別実体として正しく残る(畳めば古さが見えなくなるので、畳むのは誤り)。

前提の訂正が導く結論

当初は「retrieval 側に複製判定の機構を置くか」という問いだった。実測後の問いは違う。

構造的な配布重複は存在せず、3 ヶ月前の生成物が 1 repo に commit されたまま残っているだけ。 retrieval 側に機構を足すのは、原因が 1 commit にある問題を検索層で塞ぎにいく形になる。

したがって本 issue の対象は github-rag-mcp ではなく github-webhook-mcp の .claude/ の扱いに移る。

未決(Master 判断待ち)

github-webhook-mcp が単独の Claude Code workspace root として開かれることがあるか。

  • 開かれる.claude/ は load-bearing。削除ではなく build-2026-08-02.1 へ再生成する。ただし以後も同じ古さが再発するので、生成物を commit し続けるかどうかは別途判断が要る
  • 開かれない(現行レイアウトでは workspace root = C:\Users\smile\Code で、.claude/ はそこに 1 つある) → repo 内の .claude/ は残置物。削除する

どちらでも「3 ヶ月前のまま置く」だけは選択肢に無い。単独で開けば消滅済み規則がそのセッションに注入され、開かなくても検索が古い規則本文を上位で返す。

github-rag-mcp 側の残作業

上記のどちらを採っても、索引から該当行が消えることの確認が要る。doc 行の削除検出が commit された file の削除に追随するかは未確認。

参考

Metadata

Metadata

Assignees

No one assigned

    Labels

    blockedhuman 入力待ち。stop 状態(issue comment に reason 必須)memoメモとして開始した状態。見出しは必要なものだけでよいspecLi+の挙動に影響する仕様・ポリシー・定義

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions