From b08941d6abb9fc86cd5b7f33e5cc7ddfbd2a5fd7 Mon Sep 17 00:00:00 2001 From: altair823 Date: Thu, 28 May 2026 19:45:53 +0000 Subject: [PATCH] docs(handoff): mark brainstorming-needed items in v0.20.1 findings todo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 각 todo 에 fix path classification μΆ”κ°€: - 🧠 ν•„μˆ˜: design / user expectation κ²°μ • ν•„μš” β€” brainstorming skill μš°μ„  - πŸ”§ mechanical: spec drift λ˜λŠ” λͺ…ν™•ν•œ fix β€” 별 brainstorming X - πŸ“ mild discussion: spec drafter self-review 둜 trade-off κ²°μ • κ°€λŠ₯ Classification: - 🧠 ν•„μˆ˜ (2): #1 Ask μ˜μ–΄β†’ν•œκ΅­μ–΄ response policy, #4 doc.lang semantic - πŸ”§ mechanical (4): #2 bulk schema, #5/#6 docs sync, #7 schema rename - πŸ“ mild (3): #3 list title, #8 Ollama default μΆ”κ°€ brainstorming 후보 (직접 finding μ™Έ): - BS-A: HTML corpus 지원 (1415 file skipped) - BS-B: Tier 1/2/3 chunker UX visibility - BS-C: kebab dogfood subcommand (μžλ™ν™”) - BS-D: 영문 code chunk 의 tokenized_korean_text 효율 - BS-E: builtin_blacklist λͺ…μ„Έ λ…ΈμΆœ ꢌμž₯ μ›Œν¬ν”Œλ‘œ: 1. brainstorming 단계 λ¨Όμ € (#1, #4 + BS-x 별 κ²€ν† ) 2. mechanical batch (#2, #5, #6, #7) β€” ν•œ PR 3. mild discussion batch (#3, #8) 4. dogfood retest β†’ v0.20.2 patch release --- ...28-v0.20.1-fulldogfood-findings-handoff.md | 171 +++++++++++++----- 1 file changed, 130 insertions(+), 41 deletions(-) diff --git a/docs/superpowers/handoffs/2026-05-28-v0.20.1-fulldogfood-findings-handoff.md b/docs/superpowers/handoffs/2026-05-28-v0.20.1-fulldogfood-findings-handoff.md index 0f8ccbe..5a9b87b 100644 --- a/docs/superpowers/handoffs/2026-05-28-v0.20.1-fulldogfood-findings-handoff.md +++ b/docs/superpowers/handoffs/2026-05-28-v0.20.1-fulldogfood-findings-handoff.md @@ -32,24 +32,39 @@ priority: dogfood 단계 발견 findings 의 fix / docs / behavior κ²€ν†  ## 1. 발견된 todo (severity + priority) +각 todo 의 `Brainstorming?` ν•„λ“œλŠ” fix path κ°€ mechanical 인지 (κ΅¬ν˜„ 만 ν•„μš”), μ•„λ‹ˆλ©΄ μ‚¬μš©μž expectation / design trade-off κ²€ν†  κ°€ ν•„μš”ν•œμ§€ ν‘œμ‹œ. + +- **🧠 brainstorming ν•„μˆ˜**: μ‚¬μš©μž μ˜λ„ / trade-off κ°€ λͺ…ν™•ν•˜μ§€ μ•Šμ•„ λ‹¨μˆœ κ΅¬ν˜„ 전에 spec drafter + critic λ˜λŠ” μ‚¬μš©μž confirmation ν•„μš”. `superpowers:brainstorming` skill μš°μ„  invoke. +- **πŸ”§ mechanical**: spec drift λ˜λŠ” λͺ…ν™•ν•œ fix path. 별 brainstorming 없이 spec β†’ plan β†’ execution. +- **πŸ“ mild discussion**: μž‘μ€ trade-off κ°€ μžˆμœΌλ‚˜ spec drafter 의 self-review 둜 κ²°μ • κ°€λŠ₯. + + + ### πŸ› P0 β€” bug λ˜λŠ” μ‚¬μš©μž expectation κ³Ό λ‹€λ₯Έ λ™μž‘ #### Todo #1: Ask μ˜μ–΄ query 의 응닡이 ν•œκ΅­μ–΄ (Finding O) - **Severity**: medium +- **Brainstorming?**: 🧠 **ν•„μˆ˜** (response language policy = design κ²°μ •) - **Scenario**: `kebab ask 'What is RAG architecture?' --mode hybrid` - **Observed**: 닡변이 `"RAGλŠ” ... μ •μ˜λ©λ‹ˆλ‹€ [#1]"` (ν•œκ΅­μ–΄) - **Expected**: 닡변이 input query 의 μ–Έμ–΄ (μ˜μ–΄) 와 λ§€μΉ­ - **Suspected cause**: `prompt_template_version: rag-v2` κ°€ 응닡 μ–Έμ–΄λ₯Ό ν•œκ΅­μ–΄λ‘œ κ°•μ œ. `crates/kebab-rag/` 의 prompt template λ˜λŠ” system message κ²€ν†  ν•„μš”. -- **Action**: +- **Brainstorming 의 핡심 질문**: + - ν•œκ΅­μ–΄ corpus μœ„μ£Ό user κ°€ μ˜μ–΄ query 던질 λ•Œ 응닡 μ–Έμ–΄λŠ”? (μ‚¬μš©μž μ˜λ„ = "μ˜μ–΄λ‘œ λ‹΅ν•΄μ€˜" vs "λ‚΄ KB 의 ν•œκ΅­μ–΄ content 기반 ν•œκ΅­μ–΄λ‘œ μ •λ¦¬ν•΄μ€˜") + - ν•œκ΅­ + μ˜μ–΄ ν˜Όν•© query β†’ μ–΄λŠ μ–Έμ–΄ μš°μ„ ? + - LLM 의 μžλ™ language matching (예: gemma4 의 default λ‹€κ΅­μ–΄ 응닡) vs prompt 의 λͺ…μ‹œ κ°•μ œ? + - μ‚¬μš©μž λͺ…μ‹œ μ˜΅μ…˜ (`kebab ask --response-lang ko/en/auto`) λ„μž… μ μ ˆν•œμ§€? + - RAG citation 의 source κ°€ λ‹€λ₯Έ μ–Έμ–΄ 일 λ•Œ 인용 ν‘œκΈ° ν˜•μ‹? +- **Action (brainstorming ν›„)**: 1. `crates/kebab-rag/src/prompt.rs` (λ˜λŠ” λ“±κ°€ location) 의 system prompt 확인. - 2. Input query 의 language detection (`kebab-core` 의 lang detection λͺ¨λ“ˆ) β†’ response language λ§€μΉ­ μ˜΅μ…˜ λ˜λŠ” default λ³€κ²½. - 3. ν•œκ΅­μ–΄ user 의 default ν•œκ΅­μ–΄ 응닡 μœ μ§€ + μ˜μ–΄ user 의 μ˜μ–΄ 응닡 보μž₯. -- **Test scenario**: handoff μ‹œμ μ˜ `/build/dogfood/kb/` μ—μ„œ `kebab ask 'What is RAG?' --hide-citations` 응닡 μ–Έμ–΄ μ˜μ–΄ 확인. + 2. Brainstorming κ²°κ³Ό 따라 default policy κ²°μ • β†’ spec drafter β†’ plan β†’ implementation. + 3. Test scenario: handoff μ‹œμ μ˜ `/build/dogfood/kb/` μ—μ„œ μ˜μ–΄/ν•œκ΅­μ–΄/ν˜Όν•© query 응닡 μ–Έμ–΄ 확인. #### Todo #2: bulk search input format 뢈λͺ…ν™• (Finding V) - **Severity**: medium (docs + wire schema) +- **Brainstorming?**: πŸ”§ **mechanical** (μ‹€μ œ input shape κ°€ μ½”λ“œ μ•ˆμ— μ •μ˜λ¨ β€” documentation + help κ°±μ‹ λ§Œ ν•„μš”) - **Scenario**: ```bash echo '{"text":"ν•œκ΅­","mode":"lexical","k":3}' | kebab search --bulk --json @@ -67,6 +82,10 @@ priority: dogfood 단계 발견 findings 의 fix / docs / behavior κ²€ν†  #### Todo #3: list docs 의 title 쀑볡 (Finding Q) - **Severity**: low (UX) +- **Brainstorming?**: πŸ“ **mild discussion** (3 κ°€μ§€ μ˜΅μ…˜ trade-off β€” spec drafter self-review 둜 κ²°μ • κ°€λŠ₯) + - Option A: human-readable 좜λ ₯에 `doc_path` 보쑰 ν‘œμ‹œ (ν˜„μž¬ `--json` μ—λ§Œ) + - Option B: title 의 unique ν™” (`"Registry β€” Registry.java"` 처럼 file basename suffix) + - Option C: title 의 source λ³€κ²½ β€” 첫 H1 β†’ frontmatter title β†’ 파일λͺ… fallback 의 μš°μ„ μˆœμœ„ λͺ…μ‹œ - **Scenario**: `kebab list docs --json | jq '.[0:5]'` - **Observed**: μ—¬λŸ¬ λ‹€λ₯Έ file 이 `title: "Registry"`, `title: "dispatch"` λ“± 동일 title 둜 λ°˜ν™˜ β€” heading-based title μΆ”μΆœμ΄ unique μ•ˆ 됨. - **Expected**: μ‚¬μš©μžκ°€ list 만 보고 μ–΄λŠ file 인지 식별 κ°€λŠ₯. @@ -78,19 +97,28 @@ priority: dogfood 단계 발견 findings 의 fix / docs / behavior κ²€ν†  #### Todo #4: doc.lang = "und" 53% (Finding U) - **Severity**: low (UX + accuracy) +- **Brainstorming?**: 🧠 **ν•„μˆ˜** (doc.lang 의 의미 자체 μž¬μ •μ˜ ν•„μš” β€” semantic κ²°μ •) - **Scenario**: `kebab schema --json | jq '.stats.lang_breakdown'` β†’ `{en: 1358, ko: 89, und: 2493}` - **Observed**: Java/Kotlin/C++ λ“± code file μ—μ„œ μžμ—° μ–Έμ–΄ 감지 μ‹€νŒ¨μœ¨ 53%. -- **Expected**: code file 의 source language (예: `lang: "rust"`, `lang: "python"`) λ₯Ό μš°μ„  μ‚¬μš©ν•˜κ±°λ‚˜, code chunk 의 comment 만 μΆ”μΆœν•΄μ„œ lang 감지. -- **Action**: - 1. `crates/kebab-core/src/lang.rs` (λ˜λŠ” λ“±κ°€) 의 lang detection 의 doc 적용 μœ„μΉ˜ 확인. - 2. Code chunk 의 `code_lang` 이 이미 μ •ν™• (rust, python, typescript λ“±) β€” `doc.lang` 도 code 의 source language fallback ꢌμž₯. - 3. μžμ—° μ–Έμ–΄ doc.lang 의 의미 λͺ…ν™•ν™” β€” code file 의 doc.lang 은 source code lang vs comment NL 쀑 μ–΄λŠ 것? +- **Brainstorming 의 핡심 질문**: + - `doc.lang` 의 user-facing 의미 = "μžμ—° μ–Έμ–΄" (natural language of comments / prose) vs "source language" (rust/python/etc.) vs "primary language" (ν˜Όν•© μ‹œ dominant) 쀑 μ–΄λŠ 것? + - μ‚¬μš©μžκ°€ `kebab search --lang ko` ν•  λ•Œ μ˜λ„ = "ν•œκ΅­μ–΄ prose λ¬Έμ„œ μ°ΎκΈ°" vs "ν•œκ΅­μ–΄ 주석 포함 code 도 같이"? + - Code 의 μžμ—° μ–Έμ–΄ (예: Rust μ½”λ“œμ˜ ν•œκ΅­μ–΄ 주석) 처리 β€” comment 만 μΆ”μΆœν•΄μ„œ lang detect κ°€ μ˜³μ€μ§€? + - Tier 1 (AST) / Tier 2 (resource) / Tier 3 (paragraph) chunker λ³„λ‘œ doc.lang 의 의미 차이 ν—ˆμš© κ°€λŠ₯ν•œμ§€? + - 별 `doc.code_lang` (source code language) + `doc.nl_lang` (natural language) 뢄리 λ„μž…? +- **Action (brainstorming ν›„)**: + 1. `crates/kebab-core/src/lang.rs` (λ˜λŠ” λ“±κ°€) 의 lang detection μœ„μΉ˜ 확인. + 2. Code chunk 의 `code_lang` 이 이미 μ •ν™• β€” `doc.lang` 도 fallback 으둜 ν™œμš©ν• μ§€ κ²°μ •. + 3. κ²°μ •λœ semantic 따라 spec drafter β†’ plan β†’ implementation. ### ⚠ P1 β€” Documentation drift +(λͺ¨λ“  P1 todo λŠ” πŸ”§ **mechanical** β€” wire schema 의 μ‹€μ œ λ™μž‘μ΄ source-of-truth, README/docs 만 sync) + #### Todo #5: fusion_score μœ„μΉ˜ ν‘œκΈ° (Finding H/L) - **Severity**: low +- **Brainstorming?**: πŸ”§ **mechanical** - **Scenario**: README 의 wire schema μ˜ˆμ‹œ - **Observed**: README 의 `fusion_score` κ°€ top-level 같이 ν‘œκΈ°λ˜μ–΄ μžˆμœΌλ‚˜, μ‹€μ œ wire schema 의 `.retrieval.fusion_score`. - **Action**: @@ -101,6 +129,7 @@ priority: dogfood 단계 발견 findings 의 fix / docs / behavior κ²€ν†  #### Todo #6: score_kind="bm25" 의 의미 (Finding X) - **Severity**: low +- **Brainstorming?**: πŸ”§ **mechanical** - **Scenario**: `kebab search --mode lexical 'tokenizer'` β†’ `score_kind: "bm25", score: 0.943, fusion_score: 0.943, lexical_score: 0.943` - **Observed**: lexical mode μ—μ„œ `fusion_score == lexical_score == score` 동일. - **Expected**: `fusion_score` λŠ” hybrid μ „μš©μž„μ΄ docs 에 λͺ…ν™•. @@ -109,6 +138,7 @@ priority: dogfood 단계 발견 findings 의 fix / docs / behavior κ²€ν†  #### Todo #7: schema --json 의 index_version vs lexical_index_version (Finding G) - **Severity**: low +- **Brainstorming?**: πŸ“ **mild discussion** (rename μ˜΅μ…˜ κ²°μ • β€” 별 brainstorming 없이 spec self-review 둜 κ°€λŠ₯) - **Observed**: `kebab schema --json | jq '.models.index_version'` β†’ `"v1"` (wire schema 의 v1) - **Expected**: `lexical_index_version` (`fts5-v009-korean-morphological`) κ°€ 별도 ν•„λ“œ. 두 의미 닀름 β€” μ‚¬μš©μž ν˜Όλ™ κ°€λŠ₯. - **Action**: `schema.v1` JSON 의 `index_version` 이름 λ˜λŠ” documentation λ³€κ²½. κ°€λŠ₯ μ˜΅μ…˜: @@ -121,6 +151,7 @@ priority: dogfood 단계 발견 findings 의 fix / docs / behavior κ²€ν†  #### Todo #8: Ollama endpoint default κ°€ localhost (Finding M) - **Severity**: low (setup) +- **Brainstorming?**: πŸ“ **mild discussion** (default μœ μ§€ vs env var override vs auto-ping 의 μž‘μ€ trade-off) - **Scenario**: `kebab init` 의 default `config.toml` - **Observed**: `endpoint = "http://127.0.0.1:11434"` (localhost) - **Expected**: μ‚¬μš©μž environment κ°€ remote ollama (192.168.0.47) 인 경우 init ν›„ μˆ˜λ™ κ°±μ‹  ν•„μš”. @@ -168,14 +199,28 @@ priority: dogfood 단계 발견 findings 의 fix / docs / behavior κ²€ν†  ### 2.2 μš°μ„  μˆœμœ„ + μž‘μ—… 흐름 +**🧠 Brainstorming ν•„μˆ˜ todo (2개)** β€” `superpowers:brainstorming` skill μš°μ„  invoke ν›„ spec μ§„μž…: + +- **Todo #1** (Ask μ˜μ–΄β†’ν•œκ΅­μ–΄ 응닡): response language policy κ°€ design κ²°μ •. user intent / RRF 영ν–₯ / `--response-lang` flag μ˜΅μ…˜ λ“± λ…Όμ˜. +- **Todo #4** (doc.lang=und 53%): `doc.lang` 의 user-facing semantic μž¬μ •μ˜ (μžμ—° μ–Έμ–΄ vs source language vs primary language). 별 field 뢄리 κ°€λŠ₯성도. + +**πŸ”§ Mechanical todo (4개)** β€” brainstorming 없이 spec drafter β†’ plan β†’ execution μ§„μž… κ°€λŠ₯: + +- Todo #2 (bulk search input format) β€” wire schema + help docs κ°±μ‹  +- Todo #5/#6 (fusion_score / score_kind 의 docs μœ„μΉ˜) β€” README + schema docs sync + +**πŸ“ Mild discussion todo (3개)** β€” spec drafter 의 self-review 둜 trade-off κ²°μ • κ°€λŠ₯: + +- Todo #3 (list docs title 쀑볡) β€” 3 μ˜΅μ…˜ (doc_path 보쑰 / title unique / source λ³€κ²½) +- Todo #7 (schema index_version) β€” rename vs documentation 만 +- Todo #8 (Ollama endpoint default) β€” localhost μœ μ§€ + hint κ°±μ‹  vs env var override + ꢌμž₯ μˆœμ„œ (P0 β†’ P1 β†’ P2): -1. **Todo #2 (bulk search input)** β€” wire schema + help docs λΉ λ₯Έ 정리 (S spec 없이 small fix PR κ°€λŠ₯). -2. **Todo #1 (Ask μ˜μ–΄ 응닡 ν•œκ΅­μ–΄)** β€” rag prompt template 의 system message κ°±μ‹ . 별 spec/plan ν•„μš”ν•  수 있음 (μ‚¬μš©μž expectation λ³€κ²½). -3. **Todo #3 (list docs title 쀑볡)** β€” UX μž‘μ€ fix. -4. **Todo #4 (lang=und 53%)** β€” 의미 λͺ…ν™•ν™” + code lang fallback. 별 spec. -5. **Todo #5/#6/#7** β€” README + wire schema docs ν•œ PR 으둜 λ¬Άμ–΄ 정리. -6. **Todo #8** β€” init hint λ©”μ‹œμ§€ ν•œ 쀄. +1. **Brainstorming 단계 λ¨Όμ €** (Todo #1, #4) β€” `superpowers:brainstorming` skill 둜 design μ˜λ„ λͺ…ν™•ν™”. μ‚¬μš©μž confirmation 받은 ν›„ spec β†’ plan β†’ execution. +2. **Mechanical batch** (Todo #2, #5, #6, #7) β€” ν•œ PR 으둜 docs/wire-schema/v1 + README + bulk help κ°±μ‹ . +3. **Mild discussion batch** (Todo #3, #8) β€” spec drafter self-review ν›„ small PR. +4. **dogfood retest** β€” 전체 v0.20.2 patch release μ»· 직전. ### 2.3 branch + workflow @@ -193,6 +238,43 @@ git checkout -b fix/v0.20.2-dogfood-findings --- +## 2.4 μΆ”κ°€ brainstorming 후보 (직접 finding μ™Έ) + +도그푸딩 λ‹¨κ³„μ—μ„œ λΆ€κ°λœ 미래 design κ²°μ • 후보. μœ„ todo 의 fix 와 별 β€” 별도 spec 으둜 λ‹€λ£° κ°€λŠ₯μ„±: + +### 🧠 BS-A: HTML corpus 지원 + +- **Status**: 도그푸딩 corpus 의 1415 HTML file κ°€ λͺ¨λ‘ skip (extension 미지원). +- **Question**: HTML κ°€ 일반 user KB 의 ν”ν•œ source format (saved web pages, ref docs, etc.). 지원 μ•ˆ 함이 μ˜λ„λœ omission 인지 / Tier 3 paragraph fallback 으둜 μ²˜λ¦¬ν•  κ°€μΉ˜ μžˆλŠ”μ§€? +- **Trade-off**: HTML parser (markup stripping + heading extraction) 의 μΆ”κ°€ dependency vs corpus coverage ν™•μž₯. Tier 3 fallback 으둜 μΆ©λΆ„? +- **Spec scope**: ν•œ sub-item 의 1 file 인 fixture 검증 μ‹œμž‘ β†’ real corpus 도그푸딩 ν™•λŒ€. + +### 🧠 BS-B: Tier 1/2/3 chunker 의 μ‚¬μš©μž visibility + +- **Status**: `kebab schema --json` 의 `active_chunkers` 에 14 chunker λ…ΈμΆœ. μ‚¬μš©μžλŠ” μ–΄λŠ file κ°€ μ–΄λŠ Tier 둜 μ²˜λ¦¬λλŠ”μ§€ λͺ¨λ¦„. +- **Question**: `kebab inspect doc ` 의 응닡에 `tier_used: "Tier 1 (AST)"` / `"Tier 3 (paragraph fallback)"` 같은 field μΆ”κ°€ κ°€μΉ˜ μžˆλŠ”μ§€? +- **Trade-off**: wire schema ν™•μž₯ vs UX λͺ…ν™•μ„±. Tier fallback debug μ‹œ 유용. + +### 🧠 BS-C: 도그푸딩 μžλ™ν™” (`kebab dogfood` subcommand?) + +- **Status**: 도그푸딩이 μˆ˜λ™ ad-hoc β€” `/build/dogfood/corpus` 으둜 manual setup β†’ CLI λͺ…λ Ήλ“€ sequential μ‹€ν–‰. +- **Question**: `kebab dogfood --scenario all` 같은 sub-command λ„μž…ν•΄μ„œ DOGFOOD.md Β§1~Β§13 의 μ‹œλ‚˜λ¦¬μ˜€ μžλ™ μ‹€ν–‰ + JSON evidence summary? release λ§ˆλ‹€ μ‚¬μš©μž κ°€ ν•œ λͺ…λ ΉμœΌλ‘œ 검증 κ°€λŠ₯. +- **Trade-off**: CLI ν‘œλ©΄ ν™•μž₯ vs 도그푸딩 reproducibility μžλ™ν™”. 별 `kebab-eval` crate 와 overlap κ°€λŠ₯ (eval = goldens 비ꡐ, dogfood = release 검증). + +### πŸ“ BS-D: Code chunk 의 N-gram supplement 의미 + +- **Status**: 도그푸딩 톡계 β€” Korean tokenized chunks 34847/34896 (99.86%). 즉 영문 code chunk 도 `tokenized_korean_text` κ°€ populated. ko-dic 의 영문 처리 κ²°κ³Ό (영문 token + N-gram 미적용) κ°€ 빈/μœ μ˜λ―Έν•œμ§€? +- **Question**: 영문 code chunk 의 `tokenized_korean_text` κ°€ 항상 raw text 의 duplicate λ©΄ storage λ‚­λΉ„. populate μ•ˆ ν•˜κ³  NULL λ‘λŠ” 게 더 효율? +- **Trade-off**: ko-dic 호좜 λΉ„μš© (이미 chunk λ§ˆλ‹€ λ°œμƒ) vs storage μ ˆμ•½. + +### πŸ“ BS-E: Ingest 의 .git/ μžλ™ μ œμ™Έ λͺ…μ„Έ (Finding A ν™•μž₯) + +- **Status**: `.git/` λ””λ ‰ν† λ¦¬λŠ” μžλ™ builtin_blacklist 둜 μ œμ™Έ (ν˜„μž¬ μ˜λ„λœ λ™μž‘), κ·ΈλŸ¬λ‚˜ `.kebabignore` λ˜λŠ” docs 에 explicit ν‘œκΈ° μ—†μŒ. μ‚¬μš©μžκ°€ μΆ”κ°€ builtin_blacklist κ°€ 무엇인지 λͺ¨λ¦„. +- **Question**: `node_modules/`, `target/`, `.git/` 같은 builtin_blacklist 의 λͺ…μ„Έλ₯Ό schema 의 `capabilities.builtin_blacklist` λ˜λŠ” wire schema 에 λ…ΈμΆœ? +- **Trade-off**: wire ν™•μž₯ vs UX λͺ…ν™•μ„±. + +--- + ## 3. 도그푸딩 μž¬μ‹€ν–‰ (regression λ°©μ§€) μƒˆ finding fix ν›„ 도그푸딩 μž¬μ‹€ν–‰ 절차: @@ -231,32 +313,39 @@ $KB --config $CFG schema --json | jq '.models.index_version' # To ## 5. 발견 finding 의 cumulative summary table -| # | Finding | Severity | Category | Target todo | -|---|---|---|---|---| -| A | scan vs corpus 21 file 차이 | none | `.git/` μžλ™ μ œμ™Έ (μ˜λ„) | β€” | -| B | html 1415 skipped (extension) | none | μ˜λ„ β€” html 미지원 | β€” | -| C | size_exceeded 5 files | none | μ˜λ„ β€” config 의 max_size_kb μ œν•œ | β€” | -| D | lang_breakdown und=53% | low | UX | #4 | -| E | pdf=8 from ts-zod logos | none | λΆ€μ‚°λ¬Ό, 정상 λ™μž‘ | β€” | -| F | Korean tokenized 34847/34896 | none | N-gram supplement 정상 | β€” | -| G | schema index_version="v1" | low | docs | #7 | -| H | fusion_score location | low | docs | #5 | -| I | Korean queries hit | none | V009 closure 확인 | β€” | -| J | English whole-token regression | none | V009 νšŒκ·€ 정상 | β€” | -| K | Vector search semantic | none | 정상 | β€” | -| L | fusion_score location docs | low | docs | #5 | -| M | Ollama endpoint default localhost | low | setup | #8 | -| N | (skipped, M 와 동일) | β€” | β€” | β€” | -| O | Ask μ˜μ–΄ query β†’ ν•œκ΅­μ–΄ 응닡 | medium | behavior | #1 | -| P | fetch chunk target.text path | none | jq query μ‹€μˆ˜, μ‹€μ œ 정상 | β€” | -| Q | list docs title duplicate | low | UX | #3 | -| R | Edge case error handling | none | 정상 | β€” | -| S | jq error in test script | none | λ‚΄ query μ‹€μˆ˜ | β€” | -| T | Korean + punct OK | none | 정상 | β€” | -| U | doc.lang = und | low | UX | #4 | -| V | bulk search input shape | medium | docs+schema | #2 | -| W | code-lang filter | none | 정상 | β€” | -| X | score_kind="bm25" 의미 | low | docs | #6 | +| # | Finding | Severity | Category | Target todo | Brainstorming? | +|---|---|---|---|---|---| +| A | scan vs corpus 21 file 차이 | none | `.git/` μžλ™ μ œμ™Έ (μ˜λ„) | β€” | BS-E (선택) | +| B | html 1415 skipped (extension) | none | μ˜λ„ β€” html 미지원 | β€” | BS-A (선택) | +| C | size_exceeded 5 files | none | μ˜λ„ β€” config 의 max_size_kb μ œν•œ | β€” | β€” | +| D | lang_breakdown und=53% | low | UX | #4 | 🧠 ν•„μˆ˜ | +| E | pdf=8 from ts-zod logos | none | λΆ€μ‚°λ¬Ό, 정상 λ™μž‘ | β€” | β€” | +| F | Korean tokenized 34847/34896 | none | N-gram supplement 정상 | β€” | BS-D (선택) | +| G | schema index_version="v1" | low | docs | #7 | πŸ“ mild | +| H | fusion_score location | low | docs | #5 | πŸ”§ | +| I | Korean queries hit | none | V009 closure 확인 | β€” | β€” | +| J | English whole-token regression | none | V009 νšŒκ·€ 정상 | β€” | β€” | +| K | Vector search semantic | none | 정상 | β€” | β€” | +| L | fusion_score location docs | low | docs | #5 | πŸ”§ | +| M | Ollama endpoint default localhost | low | setup | #8 | πŸ“ mild | +| N | (skipped, M 와 동일) | β€” | β€” | β€” | β€” | +| O | Ask μ˜μ–΄ query β†’ ν•œκ΅­μ–΄ 응닡 | medium | behavior | #1 | 🧠 ν•„μˆ˜ | +| P | fetch chunk target.text path | none | jq query μ‹€μˆ˜, μ‹€μ œ 정상 | β€” | β€” | +| Q | list docs title duplicate | low | UX | #3 | πŸ“ mild | +| R | Edge case error handling | none | 정상 | β€” | β€” | +| S | jq error in test script | none | λ‚΄ query μ‹€μˆ˜ | β€” | β€” | +| T | Korean + punct OK | none | 정상 | β€” | β€” | +| U | doc.lang = und | low | UX | #4 | 🧠 ν•„μˆ˜ | +| V | bulk search input shape | medium | docs+schema | #2 | πŸ”§ | +| W | code-lang filter | none | 정상 | β€” | β€” | +| X | score_kind="bm25" 의미 | low | docs | #6 | πŸ”§ | + +### Brainstorming summary + +- **🧠 ν•„μˆ˜ (2 todo)**: #1 Ask response language, #4 doc.lang semantic +- **πŸ”§ mechanical (4 todo)**: #2 bulk input docs, #5 fusion_score docs, #6 score_kind docs, #7 schema field rename +- **πŸ“ mild discussion (3 todo)**: #3 list docs title, #8 Ollama default +- **별 brainstorming 후보 (선택)**: BS-A HTML 지원, BS-B Tier visibility, BS-C 도그푸딩 μžλ™ν™”, BS-D code chunk N-gram, BS-E builtin_blacklist λͺ…μ„Έ ---