• v0.17.1 Stable

    altair823 released this 2026-05-25 03:34:49 +00:00 | 437 commits to main since this release

    변경사항 (since v0.16.1)

    • #163 docs: sudo 없이 ollama 설치 + ask --stream 권장 (v0.17.0 post-dogfood)
    • #162 feat: [models.llm] request_timeout_secs config + 권장 모델 가이드
    • #161 feat: v0.17.0 PR-C — code_lang_chunk_breakdown additive wire field
    • #160 feat: v0.17.0 PR-B — C typedef-wrapped struct/enum/union → typedef alias unit
    • #159 feat: v0.17.0 한국어 trigram FTS tokenizer + lexical builder + hint surface

    v0.17.1 — post-dogfood docs/config polish

    v0.17.0 후 사용자 확장 도그푸딩 (16 GB CPU only 환경, gemma4:e4b 시도) 에서 발견된 두 follow-up 을 한 patch release 로 묶음. additive only — 기존 config / wire 호환, 기존 사용자는 binary 만 교체.

    변경

    • [models.llm] request_timeout_secs config 노브 (PR #162) — 기존 hard-coded 300 s 한도 (crates/kebab-llm-local/src/ollama.rs::REQUEST_TIMEOUT) 를 config 로 빼냄. 옛 config 가 키 누락해도 그대로 파싱 + 동일 동작 (#[serde(default = "default_llm_request_timeout_secs")], default 300). env override KEBAB_MODELS_LLM_REQUEST_TIMEOUT_SECS. 큰 모델 시도 시 [models.llm] request_timeout_secs = 1200 같이 늘리면 됨. = 0 은 disable 이 아니라 "즉시 timeout" 이라 doc 에 명시 — "사실상 무제한" 의도면 u64::MAX 또는 86400 같이 큰 finite 값 사용.

    • 권장 모델 가이드 + ollama 설치 + ask --stream (PR #162 + #163) — README 사전 요구 절 + docs/SMOKE.md ollama section 에 네 sub-bullet:

      • CPU only / RAM ≤ 16 GB ⇒ ≤ 4B Q4 모델 권장 (gemma3:4b / qwen2.5:3b / phi3:mini). gemma4:e4b 같은 8B+ 는 5분 timeout 한도에 걸리기 쉽다는 사전 안내.
      • request_timeout_secs 노브 사용법 + 0-edge 주의.
      • sudo / systemd 없이 격리 디렉토리에 ollama 설치 (tarball + OLLAMA_MODELS env). 도그푸딩 머신에서 /build/cache/ollama 패턴으로 검증.
      • cold start 가 긴 모델은 kebab ask --stream (fb-33) 권장 — progressive 토큰 surface 로 사용자 체감 개선.

    Breaking / cascade

    • 없음. config field 추가는 backward-compat (default 300), README/SMOKE 갱신은 docs only. v0.16.x → v0.17.1 도 그대로 (V007 자동 backfill 동일).

    미진행 (next round)

    • crates/kebab-parse-image/src/ocr.rs 의 동일한 hard-coded 300 s — default config 가 LLM + OCR 둘 다 gemma 사용 시 OCR 도 한도. 다음 round 에 같은 노브 (또는 별 노브) 로 재검토.

    Verification

    • 신규 unit test 3 (default / env override / legacy config backward-compat) + workspace cargo test -j 1 + clippy green.
    • 확장 도그푸딩 (HOTFIXES 2026-05-25) 의 운영 시나리오 그대로.
    Downloads
  • v0.17.0 Stable

    altair823 released this 2026-05-24 20:53:11 +00:00 | 445 commits to main since this release

    변경사항 (since v0.16.0)

    • #161 feat: v0.17.0 PR-C — code_lang_chunk_breakdown additive wire field
    • #160 feat: v0.17.0 PR-B — C typedef-wrapped struct/enum/union → typedef alias unit
    • #159 feat: v0.17.0 한국어 trigram FTS tokenizer + lexical builder + hint surface
    • #158 fix(dogfood): k8s multi-resource YAML chunk_id collision
    • #157 chore(p10-1d-followup): reviewer nit cleanup — C extractor tests + HOTFIXES + cpp snapshot

    v0.17.0 — Korean trigram + C typedef alias + chunk-count stats

    P10 종합 도그푸딩 round 2 (2026-05-22) 의 세 follow-up 동시 cut.
    PR-A (한국어 trigram) 가 본체, PR-B (C typedef) + PR-C (additive wire) 가 sister.

    Breaking — release 트리거

    • FTS5 tokenizer unicode61 → trigram (V007 migration, 자동 backfill).

      • 한국어 --mode lexical 가 3자 이상 substring 매칭으로 정상 동작 (이전엔 0 hit).
      • 해시 충돌 같은 multi-token Korean query 가 lexical.rs::build_match_string trigram-aware 재설계로 whole-phrase 후보로 hit.
      • 영어 lexical 도 substring 매칭 (token 이 tokenizer 도 hit) — recall ↑, 단어 경계 ↓.
      • 2자 이하 query 는 0-hit + CLI stderr [hint] 3자 이상 키워드 권장 (trigram tokenizer 제약) + TUI status bar + wire search_response.v1.hint 필드. raw FTS5 single-quote mode ('...') 는 사용자 명시 의도이므로 hint 안 나옴.
      • kebab.sqlite 파일 크기 ~2-5배 또는 수백 MB 증가 (trigram index).
      • 사용자 작업 불필요 — v0.17.0 binary 가 기존 KB 를 열면 V007 자동 적용 (re-ingest 없음).
    • C parser_version code-c-v1 → code-c-v2 (typedef alias cascade).

      • typedef struct {...} Foo; / typedef enum {...} Bar; / typedef union {...} Baz; 의 alias 가 Citation::Code.symbol 으로 search 노출.
      • 같은 file 의 옛 doc/chunks/LanceDB vector 는 신규 same-workspace_path orphan purge cascade 가 자동 정리 (stale_chunk_ids_for_workspace_path_except_doc_id + purge_document_at_workspace_path_except_doc_id helper).
      • 사용자 작업 불필요 — 다음 kebab ingest 가 자동 재처리.

    Additive — wire breaking 아님

    • search_response.v1.hint: Option<String> — 위 한국어 안내가 wire 위에 라이드. MCP / agent 가 같은 query 재시도 대신 사용자에게 surface 가능.
    • schema.v1.stats.code_lang_chunk_breakdown: { <lang>: <chunk_count> } — 기존 code_lang_breakdown (doc count) 와 sister. indexing 압력 metric (한 PDF spec → 200 chunks vs 한 Rust file → 5 chunks).
    • 기존 code_lang_breakdown / repo_breakdown JSON schema description 의 "code chunk count" 오기재 → "doc count" 로 정정 (실제 구현은 처음부터 doc count).

    Doc surface

    • README 검색 명령 행: trigram 동작 + hint + 디스크 용량 1 줄.
    • HANDOFF 머지 후 발견 deviation 절: 2026-05-24 entry 3개 (trigram / typedef / additive).
    • HOTFIXES 2026-05-22 / 2026-05-21 typedef 항목 closure.
    • docs/SMOKE.md "한국어 trigram 검색 (v0.17.0)" 새 절.
    • integrations/claude-code/kebab/SKILL.md search 절에 hint 필드 안내 한 줄.

    Verification

    • workspace test (-j 1, 모든 18 crate) + clippy (-D warnings) green.
    • 격리 도그푸딩 (6 fixture / Korean MD ×2 + English MD ×1 + C/Rust/Python ×1 each) 에서 12 시나리오 0 오류 — 한국어 trigram 7 case + C typedef 8 block 분포 + schema additive + incremental ingest skip.

    Closes HOTFIXES 2026-05-22 (한국어 lexical) + 2026-05-22 (code_lang_breakdown chunk granularity) + 2026-05-21 (C typedef-wrapped struct).

    Downloads
  • v0.16.1 Stable

    altair823 released this 2026-05-21 23:58:19 +00:00 | 463 commits to main since this release

    Patch: k8s multi-resource YAML chunk_id collision fix

    P10 종합 도그푸딩에서 발견한 HIGH 우선순위 버그 fix.

    Bug

    한 파일에 2+ k8s document (예: Deployment + Service, --- 구분) 인 YAML 이 ingest 실패 — UNIQUE constraint failed: chunks.chunk_id. document row 는 생성되나 chunk 0개 → 검색 불가.

    Root cause

    tier2_shared::push_chunks_with_oversize 의 non-oversize 분기가 split_key = None 하드코딩. K8sManifestResourceV1Chunker 가 resource 마다 호출 — 같은 document 의 모든 resource 가 doc_id + chunker_version + base_policy_hash 공유 + split_key = None → 동일 id_hash → 동일 chunk_id. p10-3 의 code_text_paragraph_v1 가 같은 버그였고 df3c5b8 에서 fix 됐지만, 그건 build_chunk_no_symbol 직접 호출 경로 — push_chunks_with_oversize 경로는 미수정으로 남아 있었음.

    Fix

    push_chunks_with_oversize 에 base_split_key: Option<u32> 파라미터 추가. k8s chunker 가 Some(resource.line_start) 전달 → resource 별 distinct chunk_id. dockerfile / manifest 는 None (파일당 1 chunk, 충돌 없음, chunk_id 불변).

    Deviation note (HOTFIXES 2026-05-21)

    single-resource k8s YAML 의 chunk_id 도 None → Some(1) 으로 바뀜. chunker_version 은 의도적으로 bump 안 함 — p10-2 가 v0.14.0 (1주 전) 머지된 dogfood 단계라 prod KB 없음. v0.14.0v0.16.0 사이 single-resource k8s 색인 KB 는 re-ingest 시 old chunk 가 orphan 될 수 있으나 (UNIQUE 충돌 아님), kebab reset 또는 re-ingest sweep 으로 정리. 자세한 내용은 tasks/HOTFIXES.md 2026-05-21 entry.

    Regression coverage

    • k8s_multi_doc_emits_one_chunk_per_resource 에 chunk_id distinctness assertion 추가.
    • 신규 integration test tier2_k8s_multi_resource_yaml_ingests_without_collision — 실 2-document YAML end-to-end. git stash 로 fix 전 실제 fail 확인.

    Stats

    • PR #158 — code-reviewer APPROVE → 머지 (a0c0dca).
    • cargo test -p kebab-chunk + code_ingest_smoke 19 tests PASS, clippy clean.
    • patch bump 0.16.0 → 0.16.1 (bug fix only — no wire schema change, no DB migration).
    Downloads
  • v0.16.0 Stable

    altair823 released this 2026-05-21 15:49:22 +00:00 | 471 commits to main since this release

    p10-1D: C + C++ AST chunkers + missing p10-3 fix

    P10 Tier 1 chunker family complete (Rust + Python + TS + JS + Go + Java + Kotlin + C + C++). Tier 2 (k8s + dockerfile + manifest) + Tier 3 (paragraph fallback) 도 활성. P10 Phase 의 chunker 작업 일단락.

    Surface changes (dogfood-visible)

    • code-c-ast-v1 — .c / .h AST chunker via tree-sitter-c 0.24.2. Top-level units: function_definition / struct_specifier / enum_specifier / union_specifier (named). C symbol = function name only (parse_record). 매크로 + typedef + global 변수는 <top-level> glue.
    • code-cpp-ast-v1 — .cpp / .cc / .cxx / .hpp / .hh / .hxx AST chunker via tree-sitter-cpp 0.23.4. Recursive namespace + class nesting. Symbol = namespace::Class::method (예: kebab::chunk::Foo::bar). Anonymous namespace → <anonymous>. Constructor (Class::Class) / destructor (Class::~Class) / operator overload (Class::operator+, Class::operator(), Class::operator bool) / template fn (params 미포함) / qualified_identifier out-of-class def (void Foo::bar(){}) 모두 정확히 처리.
    • .h → C dispatch (design §3.5). C++ syntax (namespace / template / class) 만나면 tree-sitter-c parse 실패 → Tier 3 fallback (code-text-paragraph-v1) 자동 picked up.
    • 새 --code-lang 값: c / cpp.
    • 새 Citation::Code.lang 값: c / cpp.
    • schema.v1.stats.code_lang_breakdown 에 c / cpp 카운트 자동 등장.

    Critical: lands missing p10-3 try_skip_unchanged fix

    v0.15.0 (p10-3) release notes 의 follow-up note 에 명시되어 있던 try_skip_unchanged fallback-aware fix 가 실제로 main 에 머지되지 못함 — PR #155 의 implementer 가 commit SHA (2a39513) 를 보고했지만 그 commit 이 actual git history 에 존재하지 않았음. v0.15.0 의 비-k8s YAML / invalid YAML / AST 실패 케이스가 매 ingest 마다 re-extract + re-chunk + re-embed 됐다 (idempotent re-ingest 가 깨짐).

    이 PR 의 commit 1034de2 가 그 fix 를 verbatim 으로 land:

    • try_skip_unchanged 7th param fallback_chunker_version: Option<&ChunkerVersion> 추가.
    • stored_is_tier3_fallback detection (last_chunker_version == fbv && parser_version == "none-v1") → parser/chunker equality 우회, embedder check 만 유지, stored doc 의 version 으로 IngestItem::Unchanged 반환.
    • 모든 call site (md / image / pdf 는 None, code 는 tier3_fallback_cv) 갱신.
    • 2 regression test: tier3_yaml_fallback_reingest_is_unchanged + tier3_shell_reingest_is_unchanged 가 invariant 보장.

    v0.16.0 부터 fallback path 의 reingest 가 정상으로 Unchanged 반환.

    Wire schema

    Additive — Citation::Code.lang 의 c / cpp 값 + chunker_version 의 code-c-ast-v1 / code-cpp-ast-v1 값. schema 본문 변경 0.

    Frozen design

    • 2026-04-27-kebab-final-form-design.md §10 활성화 로그 p10-1D entry 추가.
    • §3.4 / §3.5 의 C/C++ 행은 이미 본 결정과 일치 — 추가 변경 없음.

    DB / migration

    없음.

    Followups (non-blocking, code-reviewer flagged)

    • C extractor 의 in-file unit test 부족 (snapshot test 가 hand-built doc 사용). 실 dogfood + 향후 별 PR 보강 검토.
    • typedef-wrapped struct/enum (typedef struct { ... } Foo;) — anonymous inner struct → glue 처리. spec/risks 와 일치하지만 일반적 C idiom 이라 향후 HOTFIXES 검토 후보.
    • C++ snapshot 의 hand-built fixed_doc() 가 actual extractor 출력 (~9 chunks) 보다 단순 (5 chunks). chunker 의 1:1 mapping 검증엔 충분하지만 weak proxy. integration smoke 가 일부 cover.
    • C/C++ chunker bodies 가 9 tier1 chunkers 와 동일 패턴의 322-line duplicate. shared helper 검토는 모든 9 chunker 동시 진행 시.

    Branch / PR

    • PR: #156 — code-reviewer APPROVE → 머지 (merge commit 75a4207).
    • Spec: tasks/p10/p10-1d-c-cpp-ast-chunker.md. Plan: docs/superpowers/plans/2026-05-21-p10-1d-c-cpp-ast-chunker.md.

    Stats

    • 26 files changed, +4051 / -40.
    • cargo test --workspace --no-fail-fast -j 1 PASS. cargo clippy --workspace --all-targets -- -D warnings clean.
    • 신규 테스트: kebab-parse-code 의 cpp.rs 15 in-file unit tests + kebab-chunk 의 c/cpp snapshot tests + kebab-app code_ingest_smoke 18 tests (16 + tier1_c + tier1_cpp).
    Downloads
  • v0.15.0 Stable

    altair823 released this 2026-05-21 12:28:05 +00:00 | 485 commits to main since this release

    p10-3: Tier 3 paragraph + line-window fallback

    New code-text-paragraph-v1 chunker — paragraph + line-window split for shell scripts and as a fallback for Tier 1/2 0-chunk / Err results.

    Surface changes (dogfood-visible)

    • 새 chunker code-text-paragraph-v1 — blank-line paragraph segmentation + 80-line / 20-overlap line-window split for paragraphs > 80 lines. symbol = None, lang preserved from input.
    • shell direct routing: .sh / .bash / .zsh 파일이 ingest_one_code_asset 의 새 "shell" arm 으로 Tier 3 chunker 에 직결.
    • Tier 1/2 → Tier 3 fallback wrapper: Tier 1/2 chunker 가 Ok(empty) (예: p10-2 의 비-k8s YAML / invalid YAML) 또는 Err 면 자동으로 Tier 3 retry. extract 가 Err (Tier 1 extractor 실패) 도 동일 fallback. retry 시 chunker_version → "code-text-paragraph-v1" + canonical.parser_version → "none-v1" swap 으로 downstream stamping 일관.
    • --code-lang shell filter 옵션 추가.
    • fallback path 의 try_skip_unchanged 정확성 (review fix): 동일 파일 re-ingest 시 Unchanged 정상 동작. 이전 fix 전에는 매 ingest 가 Updated 로 보고되어 embedder 가 매번 호출되는 잠재 비용 — 동일 PR fix 로 해결. tier3_yaml_fallback_reingest_is_unchanged regression test 가 invariant 보장.

    Wire schema

    Additive — Citation::Code.lang 의 "shell" 값 + Citation::Code.symbol = null 의 Tier 3 chunk 들이 새로 등장. chunker_version 의 "code-text-paragraph-v1" 값 등장. wire schema 본문 변경 0.

    Frozen design

    • 2026-04-27-kebab-final-form-design.md §10 활성화 로그에 p10-3 entry 추가.
    • code_lang_for_path (design §3.5) 의 shell 매핑은 1A-1 시점부터 이미 존재 — 변경 없음.

    DB / migration

    없음.

    Followups (non-blocking, code-reviewer flagged)

    • tier3_fallback_cv 매핑이 explicit list (lang 추가 시 list 갱신 필요) — 미래 Tier 1/2 lang 추가 시 maintenance footgun. parser_version match 가 unknown lang 을 bail!하므로 live bug 는 아님.
    • Tier 3 chunker 의 policy_hash 가 paragraph 마다 재계산 (Tier 2 의 hoisted-once 패턴과 다름). 성능 영향 미미하지만 일관성 위해 별 PR 검토.
    • text_doc test helper 의 ParserVersion("code-text-paragraph-v1") 는 cosmetic 부정확 — 실제로는 "none-v1". 별 PR.

    Branch / PR

    • PR: #155 — code-reviewer 가 critical issue 발견 → in-PR fix → APPROVE → 머지 (merge commit 7a90df1).
    • Spec: tasks/p10/p10-3-tier3-paragraph-fallback.md. Plan: docs/superpowers/plans/2026-05-21-p10-3-tier3-paragraph-fallback.md.

    Stats

    • 19 files (PR meta) — Tier 3 모듈 1개, helper 추가, ingest dispatch + fallback wrapper, 6 docs, frozen design, version bump.
    • cargo test --workspace --no-fail-fast -j 1 PASS, cargo clippy --workspace --all-targets -- -D warnings clean.
    • 신규 테스트: kebab-chunk 4 unit (paragraph split / line-window / empty / lang preservation) + kebab-app code_ingest_smoke 4 integration (shell + yaml fallback + 2 reingest-unchanged regression). 14 + 2 추가 = 16 total smoke tests.
    Downloads
  • v0.14.0 Stable

    altair823 released this 2026-05-20 14:23:56 +00:00 | 500 commits to main since this release

    p10-2: Tier 2 resource-aware chunkers

    3 new chunkers expand kebab ingest beyond AST source code to k8s manifests, Dockerfiles, and project manifest files.

    Surface changes (dogfood-visible)

    • 새 chunker 3종 activated in ingest_one_code_asset dispatch:

      • k8s-manifest-resource-v1 — .yaml / .yml 중 apiVersion + kind 둘 다 있는 multi-document YAML. document 당 1 chunk, citation symbol = <Kind>/<namespace>/<name> (또는 <Kind>/<name> for cluster-scoped, <Kind>/<unnamed> if metadata.name missing).
      • dockerfile-file-v1 — Dockerfile / Dockerfile.* / *.dockerfile 전체 1 chunk, symbol <dockerfile>.
      • manifest-file-v1 — Cargo.toml / pyproject.toml / package.json / tsconfig.json / pom.xml / build.gradle / go.mod 전체 1 chunk, symbol <manifest>. 종류는 code_lang 으로 구분 (toml / json / xml / groovy / go-mod).
      • 모든 Tier 2 chunker 가 AST_CHUNK_MAX_LINES = 200 oversize fallback 공유 (line-window split, symbol 보존).
    • 새 --code-lang 값 (search filter): yaml / dockerfile / toml / json / xml / groovy / go-mod. 예: kebab search --code-lang yaml "replica".

    • 새 Citation::Code.lang 값: 위 7종. schema.v1.stats.code_lang_breakdown 에 자동으로 카운트 등장.

    • code_lang_for_path 가 single source of truth: design §3.5 룰에 따라 kebab-source-fs/src/media.rs 의 1A-1 era inline 매칭 duplication 정리. basename 매칭이 확장자 매칭에 우선 (Dockerfile / Cargo.toml / go.mod 등).

    • 비-k8s YAML / invalid YAML 은 본 phase 에선 skip. p10-3 의 paragraph fallback 이 머지되면 자동으로 wire 될 예정.

    Wire schema

    Additive minor — *.v2 major bump 없음.

    • Citation::Code.lang 에 7 새 값 (lang 필드는 Option<String> 이라 schema 변경 0).
    • schema.v1.stats.code_lang_breakdown 에 7 새 카운트 (dict 라 schema 변경 0).
    • 3 새 chunker_version 라벨 (k8s-manifest-resource-v1 / dockerfile-file-v1 / manifest-file-v1).
    • 새 parser_version sentinel "none-v1" (Tier 2 의 parse 단계 없음 표시).

    Frozen design

    • §3.5 code_lang 매핑 표에 3 줄 추가: xml / groovy / go-mod.
    • §10.1 활성화 로그에 p10-2 entry 추가 (2026-05-20-kebab-final-form-design.md 와 2026-05-15-kebab-code-ingest-design.md 양쪽).

    DB / migration

    없음. V00X migration 불필요.

    Followups (non-blocking)

    • Oversize fallback test coverage: tier2_shared::push_chunks_with_oversize 의 line-window 분기는 현재 fixture 가 200 줄 이내라 직접 테스트 안 됨. 거대 ConfigMap / aggregate pom.xml 같은 fixture 1개 + multi-chunk 테스트 권장 (별 PR).
    • README Mermaid 다이어그램 chunker_version 열거 stale (1C-JK 부터 누락 + p10-2 의 3종 미포함). docs follow-up.
    • synthesize_tier2_document path anchor 주석 misleading: RustAstExtractor 와 달리 workspace_root join 안 함. 현재 FsSourceConnector 가 absolute path 만 emit 하므로 latent 하지만 주석 정정 권장.

    Branch / PR

    • PR: #153 — APPROVE 후 머지 (merge commit 17ee400).
    • Spec: tasks/p10/p10-2-tier2-resource-aware.md. Plan: docs/superpowers/plans/2026-05-20-p10-2-tier2-resource-aware.md.

    Stats

    • 31 files changed, +3168 / -59.
    • cargo test --workspace --no-fail-fast -j 1 PASS, cargo clippy --workspace --all-targets -- -D warnings clean.
    • 신규 테스트: kebab-chunk 8 (k8s 3 + dockerfile 1 + manifest 4) + kebab-app/code_ingest_smoke 3 (yaml / Dockerfile / Cargo.toml). 총 12 Tier 2 testing surface.
    Downloads
  • v0.13.0 Stable

    altair823 released this 2026-05-20 11:58:11 +00:00 | 514 commits to main since this release

    Minor release — Java + Kotlin AST 색인 활성화 (p10-1C phase 완성).

    사용자-가시 변경

    • .java 파일 색인 활성. tree-sitter-java AST chunker (code-java-ast-v1). 5 type declarations (class / interface / enum / record / annotation_type) + method + constructor + nested class. Symbol: com.foo.Foo.bar (package.Class.method, design §3.4).
    • .kt / .kts 파일 색인 활성. tree-sitter-kotlin-ng AST chunker (code-kotlin-ast-v1). Class / data class / sealed class / enum class / interface (one class_declaration node) + object_declaration + companion_object + top-level function_declaration (Kotlin-specific) + secondary_constructor. Symbol: same package.Class.method 또는 package.<top-level-fn>.
    • kebab search --code-lang java --json / --code-lang kotlin --json 가 Citation::Code { kind: "code", lang, symbol, ... } 반환.
    • kebab schema --json | jq .stats.code_lang_breakdown 에 "java" + "kotlin" 카운트.

    동결된 설계 결정

    • Symbol prefix = 소스의 package 선언 (1C-Go 모델 동일):
      • Java: package_declaration → scoped_identifier / identifier.
      • Kotlin: package_header → qualified_identifier.
    • tree-sitter-kotlin-ng 선택 (bare tree-sitter-kotlin = "0.3.8" 는 tree-sitter 0.21-0.23 만 지원 → 0.26 incompatible; -ng fork 가 tree-sitter-language = "0.1" shim 으로 0.24+ 호환).

    검증

    • cargo test --workspace --no-fail-fast -j 1 exit 0
    • cargo clippy --workspace --all-targets -- -D warnings clean
    • Manual SMOKE: Java com.foo.Foo.bar, Kotlin class com.foo.Bar.baz, Kotlin top-level fn com.foo.freeFn

    1C phase 완성

    Sub-PR Lang Release
    1C-Go (#151) Go v0.12.0
    1C-JK (#152) Java + Kotlin v0.13.0

    다음 phase: p10-1D (C + C++).

    영향

    • wire schema additive (1A-2 Citation::Code 그대로, lang values 확장).
    • frozen design 변경 없음.
    • 기존 색인 데이터 invalidation 없음.

    누적 코드 색인 활성화

    Phase Languages Release
    1A-2 Rust v0.7.0
    1B Python + TypeScript + JavaScript v0.8.0
    1C-Go Go v0.12.0
    1C-JK Java + Kotlin v0.13.0
    1D C + C++ ⏳ next
    Downloads
  • v0.12.0 Stable

    altair823 released this 2026-05-20 10:16:39 +00:00 | 527 commits to main since this release

    Minor release — Go AST 색인 활성화 (p10-1C 의 첫 절반).

    사용자-가시 변경

    • .go 파일 색인 활성. tree-sitter-go AST chunker (code-go-ast-v1) 가 function / method / type (struct/interface/type alias) / glue (import/const/var) 단위로 chunk. parser_version code-go-v1.
    • Symbol path: design §3.4 그대로 — <pkg>.<Func> / <pkg>.(*Receiver).<Method> (포인터) / <pkg>.(Receiver).<Method> (value). 예: chunk.ParseDoc, chunk.(*MdHeadingV1Chunker).ChunkDoc. pkg 은 소스의 package <name> 선언에서 추출 (1B 의 workspace-path 변환과 다른 모델).
    • kebab search --code-lang go --json 가 citation.kind = "code", citation.lang = "go", citation.symbol (위 형식), repo 반환.
    • kebab schema --json | jq .stats.code_lang_breakdown 에 "go" 카운트.

    변경 위치

    • tree-sitter-go = "0.25" workspace dep.
    • crates/kebab-parse-code/src/go.rs: GoAstExtractor (source-side package_clause 추출 + method receiver pointer detection).
    • crates/kebab-chunk/src/code_go_ast_v1.rs: 1A-2 code-rust-ast-v1 near-duplicate.
    • crates/kebab-source-fs/src/media.rs: .go 라우팅.
    • crates/kebab-app/src/lib.rs: dispatch allowlist + 4 match arm 활성화.
    • 회귀 통합 테스트 (go_file_ingests_and_searches_as_code_citation) + extractor 단위 테스트 (3) + chunker 단위 테스트 (6) + snapshot (2).
    • README + HANDOFF + ARCHITECTURE + SMOKE + tasks/INDEX + tasks/p10/INDEX + design §10.1.

    안전 보장 (이전 PR invariants 유지)

    • twin-file idempotent (PR #146) ✅
    • file deletion auto-purge (PR #148) ✅
    • reset --orphans-only (PR #149) ✅
    • assets.workspace_path semantic (PR #150) ✅

    영향

    • wire schema additive (code_lang = "go" 값 추가, 1A-2 wire shape 동일).
    • frozen design 변경 없음 (§3.4 Go row 가 이미 본 구현과 일치, §10.1 dated note 만 추가).
    • 기존 색인 데이터 invalidation 없음.

    다음 PR

    p10-1C-JavaKotlin — Java + Kotlin AST chunkers (code-java-ast-v1, code-kotlin-ast-v1). JVM family 공통 (package com.foo.bar 형식), 별 PR 진행 예정.

    Downloads
  • v0.11.1 Stable

    altair823 released this 2026-05-20 08:09:48 +00:00 | 537 commits to main since this release

    Patch release — dogfood semantic cleanup (PR #150).

    사용자-가시 변경

    • (rare) twin file (동일 content / 다른 path) 의 kebab fetch span <doc_id> <start> <end> 가 잘못된 asset row 의 media_type 으로 PDF/audio 분기 판단할 가능성 fix.
    • 외부 wire / CLI / config surface 변경 없음 — internal lookup 만 document-centric 으로 일관화.

    변경

    • 새 internal trait method DocumentStore::get_asset(asset_id) -> Option<RawAsset> — asset_id PK 직접 조회, flip-flop immune.
    • fetch.rs::fetch_span: get_asset_by_workspace_path(&doc.workspace_path) → get_asset(&doc.source_asset_id) 2-step lookup.
    • assets.workspace_path 의 "last-registered path" semantic 을 UPSERT doc-comment 에 명시 (미래 reader 가 flip-flop 을 "fix" 하려고 시도하지 않도록).
    • get_asset_by_workspace_path trait method 는 보존 (back-compat — production caller 0 이나 store-sqlite round-trip test 유지).
    • 회귀 통합 테스트 twin_files_fetch_span_uses_correct_asset 추가.

    영향

    • wire schema 변경 없음.
    • frozen design 변경 없음 (semantic doc 만 명시).
    • 기존 색인 데이터 invalidation 없음.

    Dogfood 사이클 사실상 종료

    본 PR 로 multi-root dogfooding 의 모든 bug + 우선순위 1, 3 issue 처리 완료.

    남은 후보:

    • Ranking 편향 (본문 vs 테스트 code 우선) — design brainstorm 필요한 별도 큰 task
    • get_asset_by_workspace_path #[deprecated] annotation — PR #150 review 제안, 선택적 cleanup
    Downloads
  • v0.11.0 Stable

    altair823 released this 2026-05-20 07:53:57 +00:00 | 540 commits to main since this release

    Minor release — kebab reset --orphans-only (dogfooding follow-up to v0.10.0).

    사용자-가시 변경

    • 새 CLI flag kebab reset --orphans-only: walker scope 외 stored doc 들을 명시 reconcile. PR #148 (v0.10.0) sweep 의 explicit complement — sweep 은 fs 에 살아있는 file 은 건드리지 않지만, 사용자가 include 좁히거나 sub-dir 옮긴 후 명시 정리 원할 때 이 명령 사용.
    • 동작: 현재 config 로 walker scan → stored - scanned 의 모든 path purge (fs existence 검사 없음). Twin-file 보호 + vector store delete_by_chunk_ids 동시 처리.
    • Confirm UI (TTY): orphan count + sample 5 paths + [y/N]. non-TTY 는 --yes 필수.
    • 새 wire 필드 (additive): ResetReport.orphans_purged: u32 + purged_paths: Vec<WorkspacePath> (#[serde(default)] 로 back-compat).
    • README + docs/wire-schema/v1/reset_report.schema.json 동시 갱신.

    안전 보장

    • Twin-file 보호: purge_deleted_workspace_path 의 COUNT-check (PR #146 invariant) 유지 — 동일 content 다른 path 의 asset row 가 다른 doc 에 의해 참조되면 보존.
    • Vector store None (lexical-only) 케이스: vector delete 단계 skip.
    • 사용자 데이터 안전: confirm prompt (TTY) 또는 explicit --yes (non-TTY) 필수.
    • fs file 은 절대 안 건드림 — store-internal purge only.

    영향

    • wire schema additive (back-compat).
    • frozen design 변경 없음.
    • 기존 색인 데이터 invalidation 없음.

    다음 dogfood 후보

    • Asset table workspace_path flip-flop (PR #146 이후 user-impact 0, semantic cleanup).
    • Ranking 편향 (본문 vs 테스트 코드 우선) — design brainstorm 필요.
    Downloads