refactor(rename): kb → kebab — binary, env vars, XDG paths, file renames
두 번째 commit. 사용자 facing surface (CLI binary, env vars, XDG paths) + 코드 안 single-letter token (`KB_`, `kb.sqlite`, `/kb/`, tracing target) 일괄 rename. 그리고 3 개 file rename: - 디자인 doc `2026-04-27-kb-final-form-design.md` → `2026-04-27-kebab-final-form-design.md` - 최초 보고서 `kb_local_rust_report.md` → `kebab_local_rust_report.md` - workspace ignore `.kbignore` → `.kebabignore` ## 변경 - `crates/kebab-cli/Cargo.toml`: `[[bin]] name = "kb"` → `"kebab"`. - `crates/kebab-cli/src/main.rs`: `#[command(name = "kb", …)]` → `name = "kebab"`. - 모든 `KB_*` env var (코드 + doc + 테스트) → `KEBAB_*`. apply_env prefix 매칭 + 30+ 개 setting 키 모두. - XDG paths: `~/.config/kb` / `~/.local/share/kb` / `~/.cache/kb` / `~/.local/state/kb` → `~/.config/kebab` 등. config defaults + expand_path tests + paths.rs 의 hardcode 모두. - SQLite filename: `kb.sqlite` → `kebab.sqlite` (`SQLITE_FILE` const + 테스트 hardcode 모두). - tracing target: `target: "kb-*"` → `"kebab-*"` (10+ 곳). - snapshot fixture: `.kbignore` → `.kebabignore` (`fixtures/source-fs/ tree-1.snapshot.json` 갱신). ## 검증 - `cargo test --workspace -j 1` clean (linker OOM 회피 위해 직렬). - `cargo clippy --workspace --all-targets -- -D warnings` clean. 다음 commit 에서 docs sweep. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -135,7 +135,7 @@ impl RagPipeline {
|
||||
let top_score = hits.first().map(|h| h.retrieval.fusion_score).unwrap_or(0.0);
|
||||
|
||||
tracing::debug!(
|
||||
target: "kb-rag",
|
||||
target: "kebab-rag",
|
||||
chunks_returned,
|
||||
top_score,
|
||||
mode = ?opts.mode,
|
||||
@@ -161,7 +161,7 @@ impl RagPipeline {
|
||||
// collapse to the more accurate `NoChunks` refusal here.
|
||||
if packed_entries.is_empty() {
|
||||
tracing::warn!(
|
||||
target: "kb-rag",
|
||||
target: "kebab-rag",
|
||||
chunks_returned = hits.len(),
|
||||
"kb-rag: all retrieved chunks were unfetchable from the store; \
|
||||
falling back to NoChunks refusal"
|
||||
@@ -324,7 +324,7 @@ impl RagPipeline {
|
||||
// Drop the moved `finish_reason` early into a tracing breadcrumb; the
|
||||
// wire schema does not surface it (per design §3.8).
|
||||
tracing::debug!(
|
||||
target: "kb-rag",
|
||||
target: "kebab-rag",
|
||||
grounded = answer.grounded,
|
||||
refusal = ?answer.refusal_reason,
|
||||
refusal_phrase_detected = matched_refusal_phrase,
|
||||
@@ -354,7 +354,7 @@ impl RagPipeline {
|
||||
self.docs.put_answer(&answer, query, packed_chunks_json.as_deref())
|
||||
{
|
||||
tracing::warn!(
|
||||
target: "kb-rag",
|
||||
target: "kebab-rag",
|
||||
error = %e,
|
||||
"kb-rag: put_answer failed; in-memory Answer still returned"
|
||||
);
|
||||
@@ -386,7 +386,7 @@ impl RagPipeline {
|
||||
Some(c) => c.text,
|
||||
None => {
|
||||
tracing::warn!(
|
||||
target: "kb-rag",
|
||||
target: "kebab-rag",
|
||||
chunk_id = %hit.chunk_id.0,
|
||||
"kb-rag: chunk not found in store; skipping"
|
||||
);
|
||||
@@ -454,7 +454,7 @@ impl RagPipeline {
|
||||
created_at: OffsetDateTime::now_utc(),
|
||||
};
|
||||
if let Err(e) = self.docs.put_answer(&answer, query, None) {
|
||||
tracing::warn!(target: "kb-rag", error = %e, "kb-rag: put_answer (NoChunks) failed");
|
||||
tracing::warn!(target: "kebab-rag", error = %e, "kb-rag: put_answer (NoChunks) failed");
|
||||
}
|
||||
Ok(answer)
|
||||
}
|
||||
@@ -529,7 +529,7 @@ impl RagPipeline {
|
||||
created_at: OffsetDateTime::now_utc(),
|
||||
};
|
||||
if let Err(e) = self.docs.put_answer(&answer, query, None) {
|
||||
tracing::warn!(target: "kb-rag", error = %e, "kb-rag: put_answer (ScoreGate) failed");
|
||||
tracing::warn!(target: "kebab-rag", error = %e, "kb-rag: put_answer (ScoreGate) failed");
|
||||
}
|
||||
Ok(answer)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user