diff --git a/tasks/HOTFIXES.md b/tasks/HOTFIXES.md index 25eb033..150dfe1 100644 --- a/tasks/HOTFIXES.md +++ b/tasks/HOTFIXES.md @@ -106,6 +106,35 @@ spec §6.2 의 Option β (sub-token 추가 emit) 가 follow-up 으로 deferred - False positive risk: 일부 (예: `'한민'` query 가 `'대한민국'` 도 hit). 작은 risk, user 가 raw FTS5 mode 또는 longer query 로 우회 가능. **Released as part of v0.20.1**. spec Appendix B 의 prior-knowledge limitation 이 supplement 으로 해소. spec §6.2 의 Option β 결정을 v0.21.x 에서 v0.20.1 implementation 으로 promote (HOTFIXES → spec 갱신 cascade — design §5.5 변경 외에 §6.2 본문은 보존, supplement 동작 만 implementation detail 로 추가). + +**Large-scale dogfood verification (2026-05-28, KnowledgeBase + N-gram)** — 사용자 실제 `/home/altair823/KnowledgeBase/` (1781 markdown, 9050 chunk) 를 N-gram supplement 포함 binary 로 backfill 재실행: + +- **Backfill duration**: 9050 chunk × lindera tokenize + N-gram + UPDATE + chunks_au trigger = **26.6 초** (real-time wall clock, OnceLock 캐시 + 1000-row batch transaction). ~3 ms/chunk amortized. +- **Storage delta**: `kebab.sqlite` 크기 변화는 영어/code 위주 corpus 라 minimal (N-gram supplement 가 한글 morpheme 만 emit). +- **Query evidence (KnowledgeBase, post-backfill)**: + +| Query | Pre-backfill hits | Post-backfill hits | Mechanism | +|---|---|---|---| +| `'한국'` | 0 | **10** ✅ | N-gram supplement 의 `'한국어'` → `[한국, 국어]` window. KB 의 `testdata/coding-md-corpus/*/...md` 의 "문서를 한국어로 다시 정리하기" pattern 에서 hit. | +| `'한국어'` | 5 | 10 | morpheme + N-gram 양쪽 매칭으로 hit count 증가 (raw `한국어` token + N-gram supplement) | +| `'서울'` | 0 | 0 | KB corpus 에 단어 자체 부재 (data limitation, V009 limitation X) | +| `'지하철'` | 0 | 0 | 동일 | +| `'token'` (영어) | 10 | 10 | KB 의 OAuth/JWT docs — whole-token 매칭. supplement 미적용. | +| `'tokenizer'` | 0 | 0 | KB 에 부재 | +| `'pipeline'` | 10 | 10 | data ingest pipeline docs | +| `'config'` | 10 | 10 | config-related docs | + +**핵심 결론**: Bug #8 의 **functional closure 검증** — V007 trigram 의 `'한국'` 0 hit limitation 이 V009 + N-gram supplement 로 **10 hit** 으로 개선. 다른 한국어 query 의 0-hit 는 corpus 의 단어 자체 부재 (KB 가 React/Cargo/MD docs 위주). 실제 한국어 content 가 더 많은 KB (예: 한국 정부 docs, K-wiki) 에서는 더 큰 benefit 기대. + +**Snippet evidence (ko-dic 분해 + N-gram window)**: +``` +testdata/coding-md-corpus/security/security-310-item.md + → "¶ 문서 를 한국어 한국 국어 로 다시 정리 하 기" +testdata/coding-md-corpus/rust/rust-020-functions.md + → "Functions 문서 를 한국어 한국 국어 로 다시 정리 하 기" +``` + +`한국어` morpheme + sliding window `한국` + `국어` 가 동시에 chunks_fts 에 indexed — `'한국'` query 가 morpheme 분해 결과의 부분 token 으로 hit. - README + SKILL.md + HANDOFF.md 세 문서 반영. Cross-link: `migrations/V009__fts_korean_morphological.sql`, `crates/kebab-search/src/lexical.rs`, design §5.5 / §9, `docs/superpowers/specs/2026-05-28-v0.20.x-korean-morphological-tokenizer-spec.md`.