bench_dict() の辞書 fixture が 3 箇所に複製されている:
engine/crates/lex-core/benches/candidates.rs
engine/crates/lex-core/benches/converter.rs — 上と 264 行 byte-identical
engine/crates/lex-core/src/converter/tests/bench.rs — 3 つ目の近似コピー
なぜ重要か
#299 の原因がまさにこの形。38b0148 の Arc<dyn Dictionary> 一括変更が candidates.rs だけを触り converter.rs を飛ばした結果、双子の片方だけシグネチャが変わり、コンパイルが壊れた。誰も気づかないまま 160 日放置された。
現在も、片方にだけ辞書エントリを足すと2 つの bench が別の辞書を測っている状態になり、数値が比較不能になるが、それを検出するゲートは無い。
案
benches/common/mod.rs を作り #[path] mod include で共有する。~260 行削減され、分岐が構造的に不可能になる。
src/converter/tests/bench.rs は #[ignore] の print-only レイテンシ計測で、criterion の converter.rs と役割が重複している。統合時に要否を判断したい。
注意
src/converter/testutil.rs:10 にも 4 つ目の小さい fixture があるが、こちらは正当に別物(correctness テスト用で、いい → 良い のみ等、意図的に内容が異なる)。統合対象に含めないこと。
PR #301 の /code-review max で検出、スコープ外として見送り。
bench_dict()の辞書 fixture が 3 箇所に複製されている:engine/crates/lex-core/benches/candidates.rsengine/crates/lex-core/benches/converter.rs— 上と 264 行 byte-identicalengine/crates/lex-core/src/converter/tests/bench.rs— 3 つ目の近似コピーなぜ重要か
#299 の原因がまさにこの形。
38b0148のArc<dyn Dictionary>一括変更がcandidates.rsだけを触りconverter.rsを飛ばした結果、双子の片方だけシグネチャが変わり、コンパイルが壊れた。誰も気づかないまま 160 日放置された。現在も、片方にだけ辞書エントリを足すと2 つの bench が別の辞書を測っている状態になり、数値が比較不能になるが、それを検出するゲートは無い。
案
benches/common/mod.rsを作り#[path]mod include で共有する。~260 行削減され、分岐が構造的に不可能になる。src/converter/tests/bench.rsは#[ignore]の print-only レイテンシ計測で、criterion のconverter.rsと役割が重複している。統合時に要否を判断したい。注意
src/converter/testutil.rs:10にも 4 つ目の小さい fixture があるが、こちらは正当に別物(correctness テスト用で、いい→ 良い のみ等、意図的に内容が異なる)。統合対象に含めないこと。PR #301 の
/code-review maxで検出、スコープ外として見送り。