refactor(core): 빈 re-export shim crate kebab-embed/kebab-llm → kebab-core 흡수

kebab-embed/kebab-llm 은 "새 type 없음"을 자처한 순수 re-export 셸이었다
(trait 은 이미 kebab-core 소유, mock + test helper 만 보유). "kebab-core
재구성 시 안정 surface" 라는 명분은 1인 RAG 엔 speculative YAGNI. 흡수:

- kebab-core 에 default-OFF `mock` feature + src/mock.rs (MockEmbedder,
  MockLanguageModel, assert_vector_shape/assert_unit_norm/assert_finish_chunk
  을 kebab_core:: → crate:: import 만 바꿔 verbatim 이동).
- production import 2곳(kebab-embed-local, kebab-llm-local) +
  test import 다수(search/rag/parse-image/embed-local) 를 kebab_core 로 repoint.
  mock 쓰는 crate 는 dev-dep 에 features=["mock"] (default 빌드 무영향).
- shim 자체 테스트: mock 동작 테스트는 kebab-core/tests/ 로 이동,
  reexports.rs(셸 재수출 테스트)는 폐기.
- crates/kebab-embed, crates/kebab-llm 삭제 + workspace member/deps 정리.
- ARCHITECTURE/HANDOFF/component README 의 crate 그래프·표·rationale 갱신
  (22 → 20 crates). llm-local 의 broken intra-doc link 2건도 정리.

trait surface·동작 불변 (test-only + import-rename). workspace build 는 mock
default-OFF 라 mock 코드 미컴파일. 적대적 검증 3렌즈(build-test-integrity +
behavior-identity[mock byte-identical] + dead-crate-completeness) 통과,
clippy --workspace -D warnings 클린.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012Mc6W1fgsrbFKTsqA6P8La
This commit is contained in:
2026-06-27 01:06:14 +00:00
parent 9dc7e14434
commit 2d68827cf5
39 changed files with 409 additions and 688 deletions

32
Cargo.lock generated
View File

@@ -4248,10 +4248,8 @@ dependencies = [
"kebab-chunk",
"kebab-config",
"kebab-core",
"kebab-embed",
"kebab-embed-local",
"kebab-embed-ollama",
"kebab-llm",
"kebab-llm-local",
"kebab-nli",
"kebab-parse-code",
@@ -4340,6 +4338,7 @@ version = "0.31.0"
dependencies = [
"anyhow",
"blake3",
"proptest",
"serde",
"serde_json",
"serde_json_canonicalizer",
@@ -4348,20 +4347,6 @@ dependencies = [
"unicode-normalization",
]
[[package]]
name = "kebab-embed"
version = "0.31.0"
dependencies = [
"anyhow",
"blake3",
"kebab-config",
"kebab-core",
"proptest",
"serde",
"thiserror 2.0.18",
"tracing",
]
[[package]]
name = "kebab-embed-local"
version = "0.31.0"
@@ -4369,7 +4354,7 @@ dependencies = [
"anyhow",
"fastembed",
"kebab-config",
"kebab-embed",
"kebab-core",
"serde_json",
"tempfile",
"tracing",
@@ -4409,15 +4394,6 @@ dependencies = [
"uuid",
]
[[package]]
name = "kebab-llm"
version = "0.31.0"
dependencies = [
"anyhow",
"kebab-core",
"proptest",
]
[[package]]
name = "kebab-llm-local"
version = "0.31.0"
@@ -4425,7 +4401,6 @@ dependencies = [
"anyhow",
"kebab-config",
"kebab-core",
"kebab-llm",
"reqwest 0.12.28",
"serde",
"serde_json",
@@ -4504,7 +4479,6 @@ dependencies = [
"kamadak-exif",
"kebab-config",
"kebab-core",
"kebab-llm",
"kebab-llm-local",
"ndarray",
"ort",
@@ -4559,7 +4533,6 @@ dependencies = [
"blake3",
"kebab-config",
"kebab-core",
"kebab-llm",
"kebab-nli",
"kebab-search",
"kebab-store-sqlite",
@@ -4581,7 +4554,6 @@ dependencies = [
"globset",
"kebab-config",
"kebab-core",
"kebab-embed",
"kebab-store-sqlite",
"kebab-store-vector",
"rusqlite",