-
v0.17.1 Stable
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_secsconfig 노브 (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 overrideKEBAB_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.mdollama 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
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_stringtrigram-aware 재설계로 whole-phrase 후보로 hit.- 영어 lexical 도 substring 매칭 (
token이tokenizer도 hit) — recall ↑, 단어 경계 ↓. - 2자 이하 query 는 0-hit + CLI stderr
[hint] 3자 이상 키워드 권장 (trigram tokenizer 제약)+ TUI status bar + wiresearch_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 purgecascade 가 자동 정리 (stale_chunk_ids_for_workspace_path_except_doc_id+purge_document_at_workspace_path_except_doc_idhelper). - 사용자 작업 불필요 — 다음
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_breakdownJSON 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
released this
2026-05-21 23:58:19 +00:00 | 463 commits to main since this releasePatch: 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 별 distinctchunk_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.md2026-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
Downloads
-
v0.16.0 Stable
released this
2026-05-21 15:49:22 +00:00 | 471 commits to main since this releasep10-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/.hAST 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/.hxxAST 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_unchangedfallback-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_unchanged7th paramfallback_chunker_version: Option<&ChunkerVersion>추가.stored_is_tier3_fallbackdetection (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 1PASS.cargo clippy --workspace --all-targets -- -D warningsclean.- 신규 테스트: kebab-parse-code 의 cpp.rs 15 in-file unit tests + kebab-chunk 의 c/cpp snapshot tests + kebab-app
code_ingest_smoke18 tests (16 + tier1_c + tier1_cpp).
Downloads
-
v0.15.0 Stable
released this
2026-05-21 12:28:05 +00:00 | 485 commits to main since this releasep10-3: Tier 3 paragraph + line-window fallback
New
code-text-paragraph-v1chunker — 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 shellfilter 옵션 추가.- fallback path 의
try_skip_unchanged정확성 (review fix): 동일 파일 re-ingest 시Unchanged정상 동작. 이전 fix 전에는 매 ingest 가Updated로 보고되어 embedder 가 매번 호출되는 잠재 비용 — 동일 PR fix 로 해결.tier3_yaml_fallback_reingest_is_unchangedregression 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_doctest 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 1PASS,cargo clippy --workspace --all-targets -- -D warningsclean.- 신규 테스트: kebab-chunk 4 unit (paragraph split / line-window / empty / lang preservation) + kebab-app
code_ingest_smoke4 integration (shell + yaml fallback + 2 reingest-unchanged regression). 14 + 2 추가 = 16 total smoke tests.
Downloads
- 새 chunker
-
v0.14.0 Stable
released this
2026-05-20 14:23:56 +00:00 | 500 commits to main since this releasep10-2: Tier 2 resource-aware chunkers
3 new chunkers expand
kebab ingestbeyond AST source code to k8s manifests, Dockerfiles, and project manifest files.Surface changes (dogfood-visible)
-
새 chunker 3종 activated in
ingest_one_code_assetdispatch: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 = 200oversize 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 —
*.v2major 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_versionsentinel"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_documentpath anchor 주석 misleading: RustAstExtractor 와 달리workspace_rootjoin 안 함. 현재 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 1PASS,cargo clippy --workspace --all-targets -- -D warningsclean.- 신규 테스트: 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
released this
2026-05-20 11:58:11 +00:00 | 514 commits to main since this releaseMinor 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 (oneclass_declarationnode) +object_declaration+companion_object+ top-levelfunction_declaration(Kotlin-specific) +secondary_constructor. Symbol: samepackage.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.
- Java:
- tree-sitter-kotlin-ng 선택 (bare
tree-sitter-kotlin = "0.3.8"는 tree-sitter 0.21-0.23 만 지원 → 0.26 incompatible;-ngfork 가tree-sitter-language = "0.1"shim 으로 0.24+ 호환).
검증
cargo test --workspace --no-fail-fast -j 1exit 0cargo clippy --workspace --all-targets -- -D warningsclean- Manual SMOKE: Java
com.foo.Foo.bar, Kotlin classcom.foo.Bar.baz, Kotlin top-level fncom.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
released this
2026-05-20 10:16:39 +00:00 | 527 commits to main since this releaseMinor 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_versioncode-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-sidepackage_clause추출 + method receiver pointer detection).crates/kebab-chunk/src/code_go_ast_v1.rs: 1A-2code-rust-ast-v1near-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
released this
2026-05-20 08:09:48 +00:00 | 537 commits to main since this releasePatch 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_pathtrait 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
- (rare) twin file (동일 content / 다른 path) 의
-
v0.11.0 Stable
released this
2026-05-20 07:53:57 +00:00 | 540 commits to main since this releaseMinor 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_pathflip-flop (PR #146 이후 user-impact 0, semantic cleanup). - Ranking 편향 (본문 vs 테스트 코드 우선) — design brainstorm 필요.
Downloads
- 새 CLI flag