28.4k 문서 도그푸딩이 드러낸 다섯 결함(#228–#232)을 전부 처리한 릴리스. 다섯 건 모두 단위 테스트가 잡지 못하는 종류였다 — 규모에서만 드러나는 성능 붕괴, 조용히 사라지는 내용, 멈춘 것처럼 보이는 진행 표시. minor 트리거는 두 가지다. #232 의 parser_version cascade (pdf-text-v1 → pdf-text-v2, 기존 색인 PDF 재처리 유발)와 신규 config 키 ([ingest.pdf.ocr] render_library / render_dpi). 나머지 셋은 additive wire 변경 + 관측성 개선이라 자체로는 patch 급이다. #232 스캔 PDF 를 페이지 렌더링으로 OCR — CCITTFax/JBIG2/Flate/JPX 가 조용히 버려지던 것을 pdfium 런타임 로드로 커버. 없으면 DCTDecode 폴백 + 왜 건너뛰었는지 명시. 단일 바이너리 유지. 한국어 CCITT 스캔 CER 12.6~15.7% (이 릴리스 이전엔 본문 0자). #229 chunks_fts 삭제를 rowid 조회로 (V016) — 문서 200건 삭제 1590초 → 2.0초. 검색 결과 불변, 재색인 불필요. #230 Lance fragment 압축 + 삭제 배치화 — 2.8만 문서 색인 속도가 분당 32~36건으로 평탄 유지(이전 30.7 → 4.3 단조 하락), 15 GB → 2.8 GB. #228 삭제 sweep 을 진행바·ndjson 로그에 노출 — 무표시 구간이 hang 으로 오인되던 것. sweep 이 취소 플래그도 보게 했다. #231 derivation cache 배칭 + 계측 — 가설은 재현되지 않았다(히트 139초 vs 우회 1180초). 이슈 스스로 예측한 대로 #229 가 해소했다. 도그푸딩 evidence 는 tasks/HOTFIXES.md 2026-08-16 / 2026-08-17 항목. 사용자 영향 설명은 docs/release-notes/v0.33.0-draft.md. 곁들여, `cargo clippy --workspace --all-targets -- -D warnings` 가 main 에서 실패하고 있던 것을 고쳤다(툴체인 상승으로 새 lint 둘이 기존 코드에 걸림). 방치하면 새 위반이 그 그늘에 숨는다는 것을 실제로 겪었다. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017c9JwQq8ZkGvYjpKXMiDhF
4.4 KiB
HANDOFF — 진척도
"지금 어디까지 됐고 다음에 뭘 할지"의 phase-단위 단일 출처. 사용법 → README.md, 구조 → docs/ARCHITECTURE.md, per-component 진행 → tasks/INDEX.md, 머지 후 deviation(동작 진실) → tasks/HOTFIXES.md, 버전별 변경 → CHANGELOG.md. 전체 문서 지도 → DOCS.md.
한 줄 요약
현재 v0.33.0. P0–P7 + P9(CLI/MCP) + P10 머지 완료, P8(audio)·P9-5(desktop)만 보류. kebab ingest 가 markdown · 이미지(OCR+caption) · PDF(텍스트+page citation+scanned OCR) · 소스코드(Rust/Python/TS/JS/Go/Java/Kotlin/C/C++ AST + Tier2 리소스 + Tier3 fallback) 를 단일 binary 로 색인. kebab search(lexical/vector/hybrid RRF) / kebab ask(RAG + 근거 인용 + NLI groundedness + multi-hop) 가 매체 가로질러 동작. UI 는 CLI + MCP stdio server(TUI 는 v0.31.0 에서 제거).
Phase 로드맵
| Phase | 내용 | 핵심 crate | 상태 |
|---|---|---|---|
| P0 | Workspace 뼈대 + 도메인 계약 + ID recipe | kebab-core/kebab-config/kebab-app/kebab-cli |
✅ |
| P1 | Markdown ingestion (walk→parse→chunk→SQLite) | kebab-source-fs/kebab-parse-md/kebab-chunk/kebab-store-sqlite |
✅ |
| P2 | FTS5 lexical 검색 + citation | kebab-search |
✅ |
| P3 | embedding + LanceDB + hybrid(RRF) | kebab-embed-local/kebab-store-vector/kebab-search |
✅ |
| P4 | LLM + RAG + grounded answer + NLI | kebab-llm-local/kebab-rag/kebab-nli |
✅ |
| P5 | golden query / regression eval | kebab-eval |
✅ |
| P6 | 이미지 ingestion (OCR + caption) | kebab-parse-image |
✅ |
| P7 | PDF text + page citation + scanned OCR | kebab-parse-pdf + kebab-app::pdf_ocr_apply |
✅ |
| P8 | 음성 transcription | kebab-parse-audio |
⏸ 보류 (whisper-rs 시스템 dep brainstorm 필요) |
| P9 | agent surface (CLI/MCP/desktop) | kebab-mcp, kebab-desktop(P9-5) |
🟡 CLI/MCP ✅, desktop ⏸ |
| P10 | code ingest framework | kebab-parse-code/kebab-chunk |
✅ (Rust/Py/TS/JS/Go/Java/Kotlin/C/C++ + Tier2/3) |
trait 전용이던
kebab-embed/kebab-llm/kebab-parse-types/kebab-normalize는 흡수됨(각각 kebab-core mock feature / kebab-parse-md module) — 현재 20 crate. 상세는 docs/ARCHITECTURE.md.
최근 마일스톤
버전별 변경은 CHANGELOG.md, 머지 후 deviation 의 dated 로그는 tasks/HOTFIXES.md(동작이 설계와 다를 때의 진실)에 있다. 굵직한 흐름만:
- v0.33.0 — 28.4k 문서 도그푸딩이 드러낸 다섯 결함(#228–#232). 스캔 PDF 를 페이지 렌더링으로 읽어 CCITT/JBIG2/Flate/JPX 커버(pdfium 런타임 로드, 없으면 DCTDecode 폴백 + 이유 명시),
chunks_fts삭제 800배, Lance 압축, sweep 진행 표시, 임베딩 캐시 계측. - v0.32.0 — ponytail-audit over-engineering 정리 (죽은 scaffold 제거, 9 AST chunker→1, shim crate 흡수 22→20).
- v0.31.0 — 척추 단순화(TUI·세션·candle 제거, config v5) + 임베딩/OCR/caption 캐시 전면화.
- v0.27–0.30 — paddle-onnx 네이티브 OCR · provenance 출처 필터 · md-heading-v2 oversize 분할.
- v0.18–0.26 — multi-hop RAG + NLI 검증 · 코드 ingest(P10) · arctic 임베더 · 한국어 형태소 검색.
다음 task 후보
- P9-5 desktop (Tauri) — 마지막 구조적 미완 component.
kebab-desktopcrate + PDF citation rendering UI. 사용자 우선순위(책·PDF) 부합. - P8 audio — whisper-rs 시스템 dep vs 외부 transcription endpoint 결정 필요. 사용자 패턴상 보류.
- 그 외는 도그푸딩 follow-up — 발견 시 HOTFIXES 에 dated entry + 필요 시 ARCHITECTURE 갱신.
v0.33.0 도그푸딩에서 나왔으나 아직 이슈로 등록하지 않은 것 셋: kebab reset 이 storage.data_dir 을 무시하고 XDG 기본 경로를 지운다, 자동생성 파일 탐지가 코드 파일이 아니라 모든 파일에 적용된다, 기본 설정에 환각 방어가 없다(nli_threshold 기본값 꺼짐).
검증
릴리스 binary 의 종단 동작은 docs/SMOKE.md(격리 KB 1세션 검증) + docs/DOGFOOD.md(기능별 시나리오). 실 데이터 도그푸딩 evidence 는 HOTFIXES dated entry.