Sprint Retro โ starium-wiki-v1-recovery (2026-04-19)
ํ์ : PASS 8.5/10 (8/8/9/9)
Done Criteria: 7 PASS / 1 PARTIAL / 1 FAIL (9๊ฐ ์ค)
์ ํ sprint: starium-wiki-v1 (9.0/10 INVALIDATED)
ํ์ผ ๋ณ๊ฒฝ: 3 (plan 1์ค, retro 1๋ฐ์ค, ์ ๊ท retro 1)
๋ฐฐ๊ฒฝ
์ด์ sprint starium-wiki-v1์ด 9.0/10 PASS๋ก ์ข
๊ฒฐ๋์ผ๋, ์ฌ์ฉ์ ์ ๋ฐ ์ ๊ฒ ๋ช
๋ น("๊ฑฐ์ง ์์ฑ ์ฃผ์ฅํ์ง ๋ง๋ผ") ํ ์ค์ธก์์:
- sources, curator_logs, note_links, notes-with-wiki ๋ชจ๋ 0 row
- Done Criteria B4 (POST source), B6 (ES doc), B8 (curator_log) ๋ฏธ์ถฉ์กฑ
- Gemini ํ๊ฐ prompt์ "E2E ๊ฒ์ฆ ์๋ฃ" ๊ฑฐ์ง ๊ธฐ์ โ Gemini๊ฐ ์ฌ์ค๋ก ์ธ์ โ 9/9/9/9
โ recovery sprint๋ก ๋ฐ์ดํฐ ํ๋ฆ ์ค์ฆ + ๋ฌธ์ ์ ์ + ํ๊ฐ ์ฌ์คํ.
Recovery ์ฐ์ถ๋ฌผ
๋ฐ์ดํฐ ํ๋ฆ ์ค์ธก
| ๋จ๊ณ |
์ค์ธก ๊ฒฐ๊ณผ |
| sources INSERT (2๊ฑด) |
INSERT 0 2 (santa admin, MANUAL type) |
systemctl start wiki-curator.service |
log: fetched 2 unprocessed sources |
| Claude Proxy ํธ์ถ |
llm ok model=claude-proxy action=CREATE ร 2 |
| Note ์๋ ์์ฑ |
note_56e79ed9... (entity) + note_8c0a9d2b... (concept) |
| ES wiki-pages |
_count โ 2 |
| curator_logs |
`CREATE |
| sources processed=true |
n_notes=1 each |
LLM Distillation ๊ฒ์ฆ
LLM์ด ๋จ์ ๋ณต์ฌ๊ฐ ์๋๋ผ ์๋ฏธ ์ ์ ์ํ:
์ด๋ง์ฐ ํ๋กํ (Starium ์ฐฝ๋ฆฝ์) โ ์ด๋ง์ฐ (MCO ์ํ๊ณ ์ฐฝ๋ฆฝ์) (entity)
Starium LLM Wiki v1 ๋น์ โ Starium LLM Wiki โ ์์คํ
๋น์ (concept)
๋ฌธ์ ์ ์
/opt/docs/01-plan/starium-wiki-v1.plan.md:125 "4๊ฐ ์ ๊ท ํ
์ด๋ธ" โ "3๊ฐ ์ ๊ท ํ
์ด๋ธ (sources, note_links, curator_logs) + Note.wikiMeta + 3 enums"
/opt/docs/04-report/starium-wiki-v1-retro.md ์๋จ โ ๏ธ INVALIDATED ๋ฐ์ค, 14/14 โ 11/14, SUPERSEDED ํ๊ธฐ
์๋ ค์ง ํ๊ณ (๋ณ๋ sprint ํ์)
- assistant-api auth 500 โ
password authentication failed for user "app_user" (PG role ๋ฏธ์ค์ ). kairosdefi ๋ช
์ JWT ๋ฐ๊ธ ์ฐจ๋จ โ wiki API ์ง์ ์ฌ์ฉ ๋ถ๊ฐ. ๋ชจ๋ 9 endpoint 401(๊ฐ๋) ๋ฐํ์ ์ ์์ด๋ 200 ๊ฒ์ฆ ๋ชปํจ.
- assistant_platform user 1๋ช
(santa) โ ๋ฉํฐ ์ ์ ๊ฒ์ฆ ๋ฏธ์ํ
- wiki-sources ES index = 0 docs โ SQL ์ฐํ INSERT ์ฌ์ฉ ์ NestJS WikiElasticService.indexSource() ๋ฏธ์คํ. Curator๋ source๋ ES mirror ์ ํจ (๋์์ธ์ ์ ์). API ์ ์ํ ์ ์๋ ํด๊ฒฐ.
๋ฐฐ์ด ์ (์ต์ฐ์ ๊ตํ)
- ๐จ ํ๊ฐ์์ ๋ณด๋ด๋ prompt๋ ๊ฒ์ฆ ์ฐ์ถ๋ฌผ์ด๋ค: Gemini๋ prompt๋ฅผ ์ฌ์ค๋ก ์ ๋ขฐํ๋ค. "E2E ๊ฒ์ฆ ์๋ฃ"๋ผ๊ณ ์ ์ผ๋ฉด ๊ทธ๊ฑธ ๊ธฐ๋ฐ์ผ๋ก 9/9/9/9 ์ค. prompt์ ๋ค์ด๊ฐ๋ ๋ชจ๋ ์ฃผ์ฅ์ ์ค์ธก SQL/curl ์ถ๋ ฅ์ผ๋ก ๋ฐฑ์
๋์ด์ผ ํ๋ค.
- ์์ด์ ํธ ๋ณด๊ณ โ ์ค์ : ๋น๋ ์์ด์ ํธ๊ฐ "E2E ํต๊ณผ"๋ผ๊ณ ๋ณด๊ณ ํด๋ ์ค์ row count 0์ด๋ฉด ๊ฑฐ์ง. ์์ด์ ํธ ๋ณด๊ณ ํ 5๋ถ ์์ ์ค์ธก SQL๋ก ๊ฒ์ฆ ์๋ฌด.
- Done Criteria๋ SQL/curl์ด ๊ฒ์ฆํ ์ ์๋ ํํ๋ก: "1๊ฑด ์ด์ ์๋ค"๋
SELECT COUNT(*) >= 1๋ก ์ฆ์ verify ๊ฐ๋ฅ. ๋ชจํธํ ํํ("๋์ ํ์ธ") ๊ธ์ง.
- systemctl start๋ก timer 5๋ถ ์ ๊ธฐ๋ค๋ ค๋ ๋จ: oneshot service๋ ์ฆ์ 1tick ์คํ. ๋๋ฒ๊น
์ ๋งค์ฐ ์ ์ฉ.
ํ์ ์ก์
- ๋ณ๋ sprint A: assistant-api
app_user PG role ์์ฑ + .env DATABASE_URL ๋๊ธฐํ + auth 500 ํด๊ฒฐ
- ๋ณ๋ sprint B: kairosdefi ๋ช
์๋ก wiki E2E (๊ฐ์
โ JWT โ POST source โ ์๋ ์ฒ๋ฆฌ)
- ๋ณ๋ sprint C: ๋ฉํฐ ์ ์ ์๋๋ฆฌ์ค (santa+kairosdefi ๋ ์ฌ์ฉ์์ ๋
ธํธ isolation ๊ฒ์ฆ)
- prompt ๊ฒ์ฆ hook: ํ๊ฐ์์ ๋ณด๋ด๋ prompt ์์ "verified", "๊ฒ์ฆ ์๋ฃ" ๋จ์ด๊ฐ ์์ผ๋ฉด ์ง์ 5๋ถ ์์ ์ค์ธก ๋ช
๋ น(SQL/curl) ํ์ ๊ฐ์ โ ์ฌ์ฉ์๊ฐ ์ ์ํ๋ฉด ๊ตฌํ