Problem
docs/measurements/ 從 2026-08-08 起用的三個基準查詢(「tokenizer 討論」「flock inode 鎖」「資格考」)已經逐字出現在被索引的語料裡:#56 量測時的 Bash 命令 for q in "tokenizer 討論" "flock inode 鎖" "資格考"(turn 2026-09-01T04:32:12Z)被索引後,v0.4.0 實測三個查詢的第一名全部是那一則 turn。從那一刻起,這三個查詢量到的是「自己的量測命令有多好找」,不再是原本要量的檢索行為。
這是結構性的:任何在 Claude Code session 裡輸入或印出的字串都會進 ~/.claude/projects/**/*.jsonl,然後進索引。
更正(verify R1,2026-09-07):上一句的「印出」不成立——tool_result 的內容今天不被索引,只記成敗;會進索引的是 text block/純字串 message.content 與 tool_use 的七個 metadata 欄位(含 Bash command=、ltm_query 的 query=)。判準與查法在 docs/measurements/README.md「什麼會進索引」。原句保留為當時的認知。所以只要在 session 裡跑量測,查詢字串就會污染下一次量測。第一名被佔走的那一格,直接影響 2026-08-08-baseline.md 以來所有以這三個查詢做的比較的可比性——#56、#58 的 before/after 表都用了它們。
Type
enhancement(量測基礎設施)
Expected
- 換一組基準查詢,且選法要寫明:選定當下用
ltm query 確認前 k 名沒有任何一則是量測命令或查詢動作本身。
- 一條使用規則寫進
docs/measurements/README(或 CLAUDE.md 誠實邊界段):基準查詢字串不得以明文出現在 Claude Code session 的命令列或輸出裡——候選做法:查詢存在 repo 內檔案(scripts/ 已有 rrf-tie-queries.txt 的先例),量測腳本讀檔、輸出只印查詢編號與耗時;或量測在 Claude Code 之外的 shell 跑(其逐字稿不在語料裡)。兩種做法都要在文件裡誠實寫出它擋不住什麼(例如人手在 session 裡貼了查詢就破功)。
- 舊數字的可比性註記:在
2026-09-01-scan-parallelism.md/2026-09-01-noop-build-attribution.md 補一行——它們的 after 欄位量測時,污染 turn 是否已在索引裡(查 turn 時間 vs 各次量測時間);若已在,該欄位的第一名是污染 turn,耗時仍可比、命中品質不可比。
- 不重跑舊量測(語料活著,本來就不可互比,見各紀錄誠實邊界)。
Actual
三個基準查詢的第一名固定是同一則量測命令;命中品質面的比較已失效,耗時面尚可用。
相關
Source: surfaced during v0.4.0 post-release smoke test (2026-09-03)
Current Status
- Phase: implemented
- Updated: 2026-09-07(implemented:
6e501c3;verify R1 FAIL → 541855c+6b81e1b;R2 FAIL → e5c664d+3569bb2;R3 FAIL → fa63fe4+b4046df;R4 FAIL(security PASS)→ d427dd9;R5 FAIL(兩個 lens)→ a9d6c0e;R6 FAIL(全在同步測試的自檢)→ 77687f3;R7 待額度重置)
Tasks
Problem
docs/measurements/從 2026-08-08 起用的三個基準查詢(「tokenizer 討論」「flock inode 鎖」「資格考」)已經逐字出現在被索引的語料裡:#56 量測時的 Bash 命令for q in "tokenizer 討論" "flock inode 鎖" "資格考"(turn 2026-09-01T04:32:12Z)被索引後,v0.4.0 實測三個查詢的第一名全部是那一則 turn。從那一刻起,這三個查詢量到的是「自己的量測命令有多好找」,不再是原本要量的檢索行為。這是結構性的:任何在 Claude Code session 裡輸入或印出的字串都會進
~/.claude/projects/**/*.jsonl,然後進索引。Type
enhancement(量測基礎設施)
Expected
ltm query確認前 k 名沒有任何一則是量測命令或查詢動作本身。docs/measurements/README(或 CLAUDE.md 誠實邊界段):基準查詢字串不得以明文出現在 Claude Code session 的命令列或輸出裡——候選做法:查詢存在 repo 內檔案(scripts/已有rrf-tie-queries.txt的先例),量測腳本讀檔、輸出只印查詢編號與耗時;或量測在 Claude Code 之外的 shell 跑(其逐字稿不在語料裡)。兩種做法都要在文件裡誠實寫出它擋不住什麼(例如人手在 session 裡貼了查詢就破功)。2026-09-01-scan-parallelism.md/2026-09-01-noop-build-attribution.md補一行——它們的 after 欄位量測時,污染 turn 是否已在索引裡(查 turn 時間 vs 各次量測時間);若已在,該欄位的第一名是污染 turn,耗時仍可比、命中品質不可比。Actual
三個基準查詢的第一名固定是同一則量測命令;命中品質面的比較已失效,耗時面尚可用。
相關
(查詢, 應命中的 turn)資料集;本 issue 只是在它出現之前把量測儀器擦乾淨。Source: surfaced during v0.4.0 post-release smoke test (2026-09-03)
Current Status
6e501c3;verify R1 FAIL →541855c+6b81e1b;R2 FAIL →e5c664d+3569bb2;R3 FAIL →fa63fe4+b4046df;R4 FAIL(security PASS)→d427dd9;R5 FAIL(兩個 lens)→a9d6c0e;R6 FAIL(全在同步測試的自檢)→77687f3;R7 待額度重置)Tasks
LTM_ANCHOR_KEY="$(~/bin/ltm memory --export-key)" scripts/measure-baseline.sh 5,8 列全clean後把日期與結果寫回檔頭第 1 條(verify R1 requirements F1:實作時這一半被跳過,檔頭原本卻寫成已驗;現已改成「尚未驗」)scripts/baseline-queries.txt(檔頭:列舉會漏/不得在 session 內顯示/輸出只印編號)docs/measurements/README.md使用規則段;CLAUDE.md 誠實邊界指回2026-09-01-scan-parallelism.md可比性註記scripts/measure-baseline.sh只印編號+耗時(已做,非可選)