chore: bump version 0.30.1 → 0.31.0 + v0.31.0 release notes
척추 단순화(#214) + 임베딩 캐시 전면화(#216) + OCR/caption 캐시(#217) 누적 릴리스. minor 트리거 = 척추의 V015 drop chat_sessions + config v4→v5 breaking 마이그레이션. 도그푸딩 evidence(HOTFIXES 2026-06-25): OCR 캐시 17 jira PNG 재인덱싱 7× + 캐시 히트 created_at 17/17 고정 / 실 v3 KB 마이그레이션(config v5 + V14/V15 자동, chat_sessions 드롭).
This commit is contained in:
39
docs/release-notes/v0.31.0-draft.md
Normal file
39
docs/release-notes/v0.31.0-draft.md
Normal file
@@ -0,0 +1,39 @@
|
||||
# v0.31.0 — 척추 단순화 + 캐시 전면화 (spine simplification + cache everywhere)
|
||||
|
||||
v0.30.1 이후 누적된 세 PR(#214 척추 재작성 · #216 임베딩 캐시 전면화 · #217 OCR/caption 캐시)을 묶은 릴리스. **breaking 변경**(세션 제거 V015 마이그레이션 + config v4→v5)이 포함되어 minor bump. 실 데이터 도그푸딩 evidence는 `tasks/HOTFIXES.md` 2026-06-25 항목.
|
||||
|
||||
## 1. 척추 재작성 / 단순화 (#214) — breaking
|
||||
|
||||
기능 추가로 산만해진 표면·동작·내부를 강하게 정리. **능력은 (거의) 유지하되 조작 표면과 코드 구조를 단순화.**
|
||||
|
||||
- **제거된 기능 (crate 24→22)**: `kebab tui` 서브커맨드 + `kebab-tui` crate, multi-turn 세션(`ask --session`·`chat_sessions`/`chat_turns`), legacy RAG 템플릿 rag-v1/v2(rag-v3/v4만 유지), search LRU 캐시, candle 임베더 provider(`kebab-embed-candle`).
|
||||
- **config v4→v5 무손실 자동 마이그레이션**: OCR 엔진 설정 중복을 공유 `[ingest.ocr]` 블록으로 통합. `kebab config migrate` 또는 로드 시 자동 — 사용자 개입 불필요(.bak 백업). env arm 75→22, 노출 키 정리.
|
||||
- **V015 마이그레이션**: 기존 KB 의 `chat_sessions`/`chat_turns` 테이블을 첫 store open 시 자동 드롭.
|
||||
- **trade-off**: 구 `v0.30.1` 바이너리는 v5 config(`[ingest.ocr]` 슬림화로 `missing field engine`)를 못 읽음 — **downgrade 는 마이그레이션 전 config 백업(.bak) 복원 필요**. multi-turn 세션·tui 를 쓰던 워크플로는 제거됨.
|
||||
- **upgrade**: 새 바이너리로 아무 명령이나 실행하면 config v3/v4→v5 + DB V14/V15 가 자동 적용. 별도 조치 불필요. (실 v3 KB 도그푸딩: 마이그레이션 후 lexical search 정상.)
|
||||
|
||||
## 2. 임베딩 캐시 전면화 (#216) — patch (출력 불변)
|
||||
|
||||
markdown 만 타던 임베딩 derivation 캐시를 **image/pdf/code 핸들러 전부**에 배선. 재인덱싱 시 청크 텍스트가 동일하면(force-reingest 또는 chunker 외 버전 유지) 임베딩을 재계산하지 않고 캐시 재사용.
|
||||
|
||||
- **trade-off**: 없음 — 출력 byte-identical(fresh-dir=전부 미스=기존과 동일, 재인덱싱=캐시 히트로 동일 LE-f32 벡터). 미디어 무관 version_key 라 같은 텍스트는 미디어 교차로 한 엔트리 공유.
|
||||
- **mitigation**: 4 미디어 전부 cache hit/miss 를 `tracing::info!` 로 노출 — warm 재인덱싱이 embed 0회인지 확인 가능.
|
||||
- **upgrade**: 자동. 새 바이너리부터 image/pdf/code 재인덱싱이 임베딩 캐시를 탐.
|
||||
|
||||
## 3. OCR/caption derivation 캐시 (#217) — patch (출력 불변)
|
||||
|
||||
이미지 OCR·이미지 caption·PDF 페이지 OCR 결과를 **소스 바이트 + OCR/caption 버전키**로 캐싱. 재인덱싱이나 chunker/embedding 버전 bump 시 비싼 비전 엔진(paddle ONNX / ollama-vision)을 재실행하지 않고 캐시된 텍스트 재사용 — **비전 작업을 버전-캐스케이드에서 분리**.
|
||||
|
||||
- **변경 사실**: 새 `ocr`/`caption` derivation_cache 네임스페이스(마이그레이션 불필요 — 스키마 namespace-agnostic). 결과는 full-struct serde 로 캐싱돼 block 레벨까지 byte-identical 재구성.
|
||||
- **trade-off**: 없음 — 출력 불변. 캐시 히트 시 provenance 이벤트는 재현 안 함(wire 스키마/게이트에 없어 무영향). ollama-vision 의 잔여 비결정성은 첫 결과를 박제해 **재현성 오히려 향상**.
|
||||
- **mitigation**: 엔진/모델/paddle 출력 파라미터(score_thresh/unclip_ratio/max_boxes) 변경 시 version key 변경→캐시 미스→재계산(stale 방지). PDF 경로 캐시 GET 에러는 debug 로그 후 미스로 degrade(per-page 회복력).
|
||||
- **upgrade**: 자동. **실 도그푸딩**(17개 jira 스크린샷, paddle OCR): 재인덱싱이 OCR 캐시 히트(created_at 17/17 고정) → **7.0× 빠름**(8.5s→1.2s), 16/17 실 OCR 텍스트.
|
||||
|
||||
## 버전
|
||||
|
||||
`0.30.1 → 0.31.0` (minor — 세션 제거 V015 + config v5 breaking 변경이 트리거). 새 CLI flag·wire breaking 변경은 없으나(캐시는 자동·표면 무변경), 척추의 마이그레이션·인터페이스 제거가 minor 를 강제.
|
||||
|
||||
## 알려진 한계 / 후속
|
||||
|
||||
- ollama-vision caption 품질 도그푸딩은 lemonade(인터랙티브 서비스 의존) 중단 비용으로 이연 — 캐시 메커니즘은 engine-agnostic(mock + paddle 실엔진 게이트로 입증)이라 caption 도 동일 코드 경로. GPU 박스 가용 시 quality-only 확인 예정.
|
||||
- paddle 결정적 게이트 코퍼스(텍스트-bearing fixture)는 미커밋 — 현재 `paddle_e2e.rs` 는 fixture 부재 시 skip. 캐시 정확성 게이트는 mock(`ocr_caption_cache.rs`) + 실엔진(`paddle_image_cache.rs`)이 담당.
|
||||
Reference in New Issue
Block a user