refactor(core): 빈 re-export shim crate kebab-embed/kebab-llm → kebab-core 흡수 #221
Reference in New Issue
Block a user
Delete Branch "refactor/fold-trait-shim-crates"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
요약
kebab-embed/kebab-llm은 각자 모듈 doc 에서 "defines no new types … thin re-export crate" 라 자처한 순수 re-export 셸이었다. trait(Embedder/LanguageModel 등)은 이미 kebab-core 소유고, 둘은pub use kebab_core::{...}+ feature-gated Mock + test helper 둘셋만 보유. "kebab-core 재구성 시 downstream 안정 surface" 라는 명분은 1인 RAG 엔 speculative YAGNI — 흡수해 crate 22 → 20.ponytail-audit 가 지목한 빈 추상화 계층. 동작·trait surface 불변 (test-only + import-rename churn; production 로직 0 변경).
변경
mockfeature +src/mock.rs—MockEmbedder/MockLanguageModel+ helper(assert_vector_shape/assert_unit_norm/assert_finish_chunk)를kebab_core::→crate::import 만 바꿔 verbatim 이동 (mock.rs 는 외부 dep 0).kebab-embed-local,kebab-llm-local) + test import 다수(kebab-search/kebab-rag/kebab-parse-image/kebab-embed-local)를kebab_core로 repoint. mock 쓰는 crate 는[dev-dependencies]에kebab-core = { workspace = true, features = ["mock"] }(resolver 3 → default 빌드에 mock 미유입).kebab-core/tests/{mock_embedder,mock_language_model}.rs이동(#![cfg(feature="mock")]),reexports.rs(셸 재수출 surface 테스트) 폐기.crates/kebab-embed/crates/kebab-llm삭제 + workspace member·[workspace.dependencies]·각 dependent Cargo.toml 정리.docs/ARCHITECTURE.md(crate 그래프·트리·count) +HANDOFF.md(arc dated 항목) +docs/components/{embed,llm,rag,search,README}.md갱신(22→20, trait/mock 위치를 kebab-core 로).kebab-llm-local의 broken intra-doc link 2건([MockLanguageModel],[generate_stream])도 정리.비범위 / 가드레일
kebab-embed-local/kebab-embed-ollama/kebab-llm-local어댑터 crate 는 무손상 (이들은 실제 impl 보유 — 셸 아님).cargo build --workspace(production)는 mock 모듈을 컴파일하지 않음. 셸 fold 가 production 바이너리에 mock 코드를 끌어들이지 않음을 빌드로 확인.kebab_local_rust_report.md(repo 루트) 는 2026-04-27 원본 설계 보고서(frozen 이력) 라 손대지 않음.검증
cargo build --workspace(mock-off) 성공 → production 경로에 Mock* 참조 0 입증.cargo test -p kebab-core --features mock녹색(이동된 mock 테스트). 의존 crate(kebab-search/kebab-rag/kebab-parse-image/kebab-embed-local/kebab-llm-local) 전부 녹색.cargo clippy --workspace -D warnings클린.cargo doc -p kebab-llm-localbroken-link 0.git show main:…대비 byte-identical, feature default-OFF, production type 무변경) + dead-crate-completeness(2 crate 삭제·member 정리·count 20·잔존 shim 참조 0) 통과.시험 항목 (Test Plan)
cargo build --release정상 (mock 미컴파일).cargo test --workspace녹색 (mock feature 자동 활성 dev-dep 경유).kebab바이너리 동작 불변 (ingest/search/ask) — trait/mock 이동은 test-only.Assisted-by: Claude Code
회차 1 — actionable 0건, APPROVE 로 종료.
독립 검증(6 체크 전부 PASS):
trait surface·동작 불변, 재인덱싱 위험 0. 머지 동의합니다.