29.2 KB ยท ์ˆ˜์ • 2026-06-07 00:27
๋ชฉ์ฐจ

๐Ÿ—‚ ํ•ญ๋ชฉ๋ณ„ ์„ธ๋ถ€ ์ƒ์˜

1. ์ถœ๋ฐœ์  โ€” ์นด๋“œ์ƒ์„ธ ๋ชจ๋‹ˆํ„ฐ๋ง์˜ ํ•œ๊ณ„ [๋ฐฐ๊ฒฝ]

์ฆ์ƒ: โ‘  ์ž‘์—… ์ค‘ ์˜ค๋ฅ˜๋ฅผ ๋ชป ์žก๋Š” ๊ฒฝ์šฐ โ‘ก ์ œ์•ฝ์œผ๋กœ ๋ฉˆ์ถฐ๋„ ์ •ํ™•ํ•œ ๋‚ด์šฉ ๋ถ€์กฑ โ‘ข ๋ฌธ์ œ๋ฅผ ๋ฐ”๋กœ ์šฐ ์ž” ๋ชป ์บ์น˜ โ†’ ์ฑ„ํ‹ฐ ๋ฐ˜๋ณต ํ…Œ์ŠคํŠธ โ‘ฃ ์ง์ ‘ ์ง€์‹œ(์ฑ„ํ‹ฐ ๋ฐ์Šคํฌํ†ฑ/์ฝ”๋”” VSCode) ์ˆ˜์ค€์— ๋ชป ๋ฏธ์นจ. ๋ชฉํ‘œ: ์˜ค๋ฅ˜ ์ˆ˜์ • + ์ž‘์—… ์ˆ˜์ค€์„ ์ฝ”๋”” VSCode ์ˆ˜์ค€์œผ๋กœ.


2. ์ง„๋‹จ โ€” ๋น„์ŠคํŠธ๋ฆฌ๋ฐ ์‹คํ–‰์ด ๊ณตํ†ต ๋พŒ๋ฆฌ [ํ•ฉ์˜]


3. ์ •์ • โ€” ์ฝ”๋””๋Š” ์ด๋ฏธ real Claude CLI [ํ™•์ • ์‚ฌ์‹ค]


4. ๋ ˆ๋ฒ„ ์šฐ์„ ์ˆœ์œ„ [ํ•ฉ์˜]

1) stream-json ์บํฌ(์ฒ™์ถ”) 2) ์„ธ์…˜ ์žฌ๊ฐœ/ํ•ต๋“œ์˜คํ”„ 3) ์ง„๋‹จ์„ adminโ†’์นด๋“œ์ƒ์„ธ ์ด์ „. - ์บํฌ๋Š” ํ† ํฐ ์‹ค์ธก์˜ ์ „์ œ์กฐ๊ฑด์ด๊ธฐ๋„ ํ•จ.


5. ์ด์–ด๊ฐ€๊ธฐ ๋‘ ์ข…๋ฅ˜ [ํ•ฉ์˜]


6. ํ•ต๋“œ์˜คํ”„ ์ˆ˜๋‹จ โ€” continuation brief [ํ•ฉ์˜]


7. CONTINUATION_STATE ์ตœ์†Œ ์ŠคํŽ™ [๋…ผ์˜์ค‘]


8. ํ† ํฐ ์˜ํ–ฅ ๋ชจ๋ธ [ํ•ฉ์˜ ยท ์‹ค์ธก ๋Œ€๊ธฐ]


9. ๋ฉ€ํ‹ฐ์—์ด์ „ํŠธ ์—ญํ•  ๋ถ„๋ฆฌ [ํ•ฉ์˜]


10. supervisor ๊ถŒํ•œ ๋“ฑ๊ธ‰ [๊ฒฐ์ •: C]


11. C์˜ ๋‘ Job + ์•ˆ์ „ 3์›์น™ [ํ•ฉ์˜: Job2 ์„ ํ–‰]


12. supervisor ํญ์ฃผ ์ œํ•œ & ์—์ด์ „ํŠธ ์„ธ๋ถ„ํ™” ๋น„์šฉ [๋…ผ์˜์ค‘ โ† ํ˜„์žฌ ์ง€์ ]

์‚ฌ์šฉ์ž ์˜๊ฒฌ: ๋งค ์ž‘์—… ์ƒˆ ์„ธ์…˜ = ์‹ค์งˆ ์ƒˆ ๊ฐœ์ฒด(ephemeral)๋ผ ์—ญํ• ์„ ๋Š˜๋ ค๋„ ์ƒ์‹œ ๋น„์šฉ ๋ถ€๋‹ด ์—†์Œ. ๋”ฐ๋ผ์„œ ์—ญํ•  ์„ธ๋ถ„ํ™” = ์ž๋™ํ™” ์ •๋ฐ€๋„โ†‘. ํญ์ฃผ ์ œํ•œ์šฉ ๊ฐ๋…๊ด€๋„ ๊ฐ™์€ ๊ฐœ๋…. Job1/Job2 ๊ฒฐ์ • = ์„ธ๋ถ„ํ™” ๊นŠ์ด ๋ฌธ์ œ. ์ฑ„ํ‹ฐ ๋ถ„์„: - ๋งž๋Š” ๋ถ€๋ถ„: idle ๋น„์šฉ 0. ์—ญํ•  "์ •์˜"๋Š” ๋ฌด๋ฃŒ. ๋‹จ์ผ์ฑ…์ž„์œผ๋กœ ์ข€ํžˆ๋ฉด ์ •๋ฐ€๋„โ†‘, supervisor ์ž์‹ ์˜ ๋“œ๋ฆฌํ”„ํŠธ๋„โ†“. - ์ •์ • ํ•„์š”: ๋น„์šฉ์€ ์—ญํ•  "์ˆ˜"๊ฐ€ ์•„๋‹ˆ๋ผ ์ž‘์—…๋‹น ํ˜ธ์ถœ ๊ทธ๋ž˜ํ”„(ํ˜ธ์ถœ ํšŸ์ˆ˜ ร— ํ˜ธ์ถœ๋‹น ์ปจํ…์ŠคํŠธ). ์„ธ๋ถ„ํ™”๋Š” ํ˜ธ์ถœ์„ ๋Š˜๋ฆฌ๊ณ  ๋™์ผ ๋งฅ๋ฝ(goal/brief/transcript)์„ ์ค‘๋ณต ์žฌ์„ญ์ทจ โ†’ ๋Ÿฐํƒ€์ž„ ๋น„์šฉโ†‘. "์ •์˜๋Š” ๋ฌด๋ฃŒ, ์‹คํ–‰์€ ์œ ๋ฃŒ." - ๋ฌดํ•œ ํšŒ๊ท€ ๋ฌธ์ œ: ๊ฐ๋…๊ด€์˜ ๊ฐ๋…๊ด€โ€ฆ LLM ๊ฐ์‹œ ์ฒด์ธ์€ ์‹ ๋ขฐ๋ฅผ ๋ฐ”๋‹ฅ๋‚ด์ง€ ๋ชปํ•˜๊ณ  ๋น„์šฉ๋งŒ ๊ณฑํ•จ. ํ•ด๊ฒฐ: ๊ฐ€์žฅ ๋ฐ”๊นฅ ๊ฒฝ๊ณ„๋Š” ๊ฒฐ์ •๋ก ์  ํ•˜๋“œ์ธก(ํ† ํฐ/ํ˜ธ์ถœ/๊ฐœ์ž…/์‹œ๊ฐ„/cycle) โ€” ๋˜ ๋‹ค๋ฅธ ์—์ด์ „ํŠธ๊ฐ€ ์•„๋‹˜. worker ์œ„ LLM ํŒ๋‹จ์ธต์€ ์ตœ๋Œ€ 1๊ฒน. ๊ฐ๋…๊ด€ LLM์€ ๊ฐ€๋Šฅํ•˜๋‚˜ ๊ฒฐ์ •๋ก ์  ์ฒœ์žฅ ์•„๋ž˜์— ๋‘๊ณ  ์žฌ๊ท€ ๊ธˆ์ง€. - ์„ธ๋ถ„ํ™” ์ถ• ์žฌ์ •์˜: "ํŽ˜๋ฅด์†Œ๋‚˜ ๋ช‡ ๊ฐœ"๊ฐ€ ์•„๋‹ˆ๋ผ "์ž‘์—… ์ˆ˜๋ช…์ฃผ๊ธฐ์˜ ์–ด๋А ๊ฒฐ์ • ์ง€์ ์— ํŒ๋‹จ์„ ๋„ฃ๊ณ , ๊ฐ ์ง€์ ์ด ๊ฒฐ์ •๋ก  vs LLM์ธ๊ฐ€." ํŒŒ์ดํ”„๋ผ์ธ: pre-run(๋ผ์šฐํŒ…ยทLLM) / per-checkpoint(Job1ยทLLMยท๋น„์Œ€) / on-stop(Job2ยทLLMยท์Œ„) / on-completion(ํฌ๋ฆฌํ‹ฑยทLLMยท์Œ„) / continuous(์ƒํƒœยท์—๋Ÿฌ ๊ฐ์ง€ยท์ฝ”๋“œยท๋ฌด๋ฃŒ) / outer-bound(ํญ์ฃผ์นฉยท์ฝ”๋“œยทํ•„์ˆ˜). - ์—ฐ๊ฒฐ๊ณ ๋ฆฌ: ๋งค๋ฒˆ ์ƒˆ ๊ฐœ์ฒด๋ผ ๊ธฐ์–ต์ด ์—†์œผ๋‹ˆ ์นด๋“œ/brief/๋…ธ์…˜์˜ ๊ธฐ๋ก์ด ์œ ์ผํ•œ ์—ฐ๊ฒฐ์กฐ์ง. ์„ธ๋ถ„ํ™”ํ• ์ˆ˜๋ก ๋งค ์‹ ๊ทœ ๊ฐœ์ฒด ์žฌ๋ธŒ๋ฆฌํ•‘ ๋น„์šฉโ†‘ โ†’ brief๋Š” ํƒ€์ดํŠธํ•ด์•ผ ํ•จ(โ†’ 7๋ฒˆ ์ŠคํŽ™์œผ๋กœ ํšŒ๊ท€). ๋ฏธ๊ฒฐ: ์„ธ๋ถ„ํ™” ๊นŠ์ด(์–ด๋А ์ง€์ ๊นŒ์ง€ LLM), ํญ์ฃผ ํ•˜๋“œ์ธก ์ˆ˜์น˜, ํ–‰๋™์ง‘ํ•ฉ ํ™•์ •.


12-A. ๊ฒฐ์ •๋ก ์  ํ•˜๋“œ์ธก ์ถ”์ฒœ์•ˆ + ์‚ฌ์šฉ์ž top-up [\ucd94\ucc9c \u00b7 \uc2dc\uc791\uac12 \ud569\uc758]

(2026-05-23, ์™ธ๋ถ€์ž๋ฃŒ ๊ฒ€์ƒ‰ ๊ธฐ๋ฐ˜) ์™ธ๋ถ€ ์ •์„ค: 3๋Œ€ ๊ฐ€๋“œ(๋ฐ˜๋ณต ํ•œ๋„ / ํ† ํฐยท๋น„์šฉ ์˜ˆ์‚ฐ / stall ๊ฐ์ง€)๊ฐ€ runaway์˜ ~95% ์ฒ˜๋ฆฌ, ๋ชจ๋‘ if/raise ๊ฒฐ์ •๋ก . LangGraph ๊ธฐ๋ณธ recursion 25, ๋‹จ์ˆœ์ž‘์—… ๋ฐ˜๋ณต 5~7. ์ถ”์ฒœ ์ธก (๊ณ„์ธต) - per-run: codi max_turns 100 ์œ ์ง€ / ์ฑ„ํ‹ฐ 8โ†’25 / per-run wall-clock codi 900s, ์ฑ„ํ‹ฐ ~180s - per-card ์ง‘๊ณ„(๋ฐ”๊นฅ ๊ฒฝ๊ณ„ยท์‹ ๊ทœ): ์ด LLM ํ˜ธ์ถœ ~30(worker+supervisor+critic+์ฑ„ํ‹ฐ ํ•ฉ์‚ฐ) / ์ด ํ† ํฐ ์˜ˆ์‚ฐ(์‹ค์ธก ํ›„ ํ™•์ •) / ์ด wall-clock 30~60๋ถ„ / supervisor ๊ฐœ์ž… ~5 - ํŒจํ„ด ์ฐจ๋‹จ๊ธฐ(์‹ ๊ทœ): stall(๊ฐ™์€ ๋„๊ตฌยท์ธ์ž โ‰ฅ3 ์—ฐ์†) / ์—ฐ์†์‹คํŒจ(โ‰ฅ3) / ์ปจํ…์ŠคํŠธ ํŒฝ์ฐฝโ†’ํ•ต๋“œ์˜คํ”„ - graceful pressure: max_turns ๊ทผ์ฒ˜ "๋งˆ๋ฌด๋ฆฌ" ๋ฉ”์‹œ์ง€ ๋‹จ๊ณ„ ์ฃผ์ž… Pepe ๋งฅ๋ฝ: ๊ตฌ๋… OAuth ๋‹จ์ผ ์‚ฌ์šฉ์ž โ†’ "๋น„์šฉ" = ์ฟผํ„ฐ+์‹œ๊ฐ„+์ปจํ…์ŠคํŠธ ํŒฝ์ฐฝ ํ’ˆ์งˆ์ €ํ•˜ (๋‹ฌ๋Ÿฌ ์ฒญ๊ตฌ ์•„๋‹˜). ์‚ฌ์šฉ์ž top-up ๊ตฌ์กฐ (์ด๋ฒˆ ์ถ”๊ฐ€) - ์ธก ๋„๋‹ฌ = abort ์•„๋‹˜ โ†’ ์ผ์‹œ์ •์ง€ + ์‚ฌ์šฉ์ž ๋ณด๊ณ  (escalate-to-user์˜ ์ธก ์ ์šฉํ˜•). - ๋ณด๊ณ  ๋‚ด์šฉ: ์–ด๋–ค ์ธก / ํ˜„์žฌ ์ƒํƒœ(continuation brief ์žฌ์‚ฌ์šฉ) / supervisor ์ง„๋‹จ(๊ฑฐ์˜ ์™„๋ฃŒ vs ์ •์ฒด) / ๊ตฌ์ฒด ์š”์ฒญ. - ์‚ฌ์šฉ์ž ๋ถ€์—ฌ = bounded top-up(+10 ํ˜ธ์ถœ / +1 ๊ฐœ์ž… / +N๋ถ„), actor=user activity_log ๊ธฐ๋ก, ๋ถ€์—ฌ ํ›„ resume ๋˜๋Š” ์ƒˆ์„ธ์…˜+ํ•ต๋“œ์˜คํ”„. - ์•ˆ์ „์žฅ์น˜ 2: โ‘  ๋ฐ˜์‚ฌ์  ์Šน์ธ ์ €ํ•ญ โ€” ์ง„ํ–‰ํ˜• ์ธก์€ top-up ์ œ์•ˆ / ํŒจํ„ดํ˜• ์ธก์€ ํ•ต๋“œ์˜คํ”„ยท์žฌ๋ผ์šฐํŒ…ยทabort ๊ถŒ๊ณ (์šฐ๊ฒจ์„œ override ๊ฐ€๋Šฅํ•˜๋˜ ๊ฒฝ๊ณ ). โ‘ก ์—ฐ์žฅ ์œ„ ์ ˆ๋Œ€ ์ฒœ์žฅ โ€” ์นด๋“œ lifetime ๋น„-์—ฐ์žฅ ์ƒํ•œ(top-up ์ตœ๋Œ€ NํšŒ ๋˜๋Š” lifetime ์ด ํ˜ธ์ถœ ์ƒํ•œ), ๋„๋‹ฌ ์‹œ one-click ์—ฐ์žฅ ๋ถˆ๊ฐ€ โ†’ ์ƒˆ ์นด๋“œ ๋ถ„๋ฆฌ. - ์žฌ์‚ฌ์šฉ: ์ƒˆ ํ๋ฆ„ ์•„๋‹˜ โ€” escalate-to-user + task_questions/asking + notify + activity_log ํŠน์ˆ˜ํ˜•. ๋ณด๊ณ ยท์ƒ๋‹ด ์ฑ„๋„ = ์‚ฌ๋ผ. ๋ฏธ๊ฒฐ: ์ ˆ๋Œ€ ์ฒœ์žฅ ์ˆ˜์น˜(top-up ์ตœ๋Œ€ ํšŸ์ˆ˜ / lifetime ์ด ํ˜ธ์ถœ), ํ† ํฐ ์˜ˆ์‚ฐ ์ˆ˜์น˜(์‹ค์ธก ํ›„).


12-B. ์ž‘์—… ์ฒด์ธ(work chain) + ํฌ๋กœ์Šค-์นด๋“œ ์ง‘๊ณ„ [\ud569\uc758]

(2026-05-23) per-card ์ ˆ๋Œ€ ์ฒœ์žฅ ํ™•์ •: top-up ์ตœ๋Œ€ 3ํšŒ + lifetime ํ˜ธ์ถœ 100 (๋ณ‘ํ–‰). ์ž‘์—… ์ฒด์ธ ๊ฐœ๋…: ์นด๋“œ = bounded ์‹คํ–‰ ๊ตฌ๊ฐ„, ์ฒด์ธ = ์—ฌ๋Ÿฌ ์นด๋“œ์— ๊ฑธ์น  ์ˆ˜ ์žˆ๋Š” ํ•˜๋‚˜์˜ ๋…ผ๋ฆฌ์  ์ž‘์—…. ์นด๋“œ ์ฒœ์žฅ ๋„๋‹ฌโ†’์ƒˆ ์นด๋“œ๋Š” ๋ถ€๋ชจ chain_id ์ƒ์†. ํ†ตํ•ฉ ๊ณ„์‚ฐ์ด ํ•„์ˆ˜์ธ ์ด์œ  (๋‘˜ ๋‹ค) - ๊ฐ€์‹œ์„ฑ: ํ•œ ์ž‘์—…์˜ ํ† ํฐยท์‚ฌ์ดํด์„ ์ฒด์ธ ๋‹จ์œ„ SUMํ•ด์•ผ ์‚ฌ์šฉ์ž๊ฐ€ ์ง„์งœ ์ž‘์—…๋Ÿ‰์„ ๋ณด๊ณ  ํŒ๋‹จ. - ์•ˆ์ „: ์ƒˆ ์นด๋“œ๊ฐ€ ์นด์šดํ„ฐ๋ฅผ 0์œผ๋กœ ๋ฆฌ์…‹ํ•˜๋ฉด "์ƒˆ ์นด๋“œ ๋ถ„๋ฆฌ"๊ฐ€ ์นฉ ์šฐํšŒ ๋ฌดํ•œ ๊ฒฝ๋กœ๊ฐ€ ๋จ. ์ฒด์ธ ์ง‘๊ณ„๊ฐ€ ์žˆ์–ด์•ผ ์นด๋“œ ์Šคํฐ์œผ๋กœ ์นฉ์„ ๋น ์ ธ๋‚˜๊ฐ€์ง€ ๋ชปํ•จ. ์ฒœ์žฅ 2์ธต - per-card: 30 ์‹œ์ž‘ โ†’ top-up 3ํšŒ๊นŒ์ง€ 100 โ†’ ๋‹ฟ์œผ๋ฉด ์ƒˆ ์นด๋“œ. - per-chain(์‹ ๊ทœ): ์ฒด์ธ ์นด๋“œ ์ˆ˜ ~5 + ์ฒด์ธ ์ด ํ˜ธ์ถœ ~300. ๋„๋‹ฌ ์‹œ ์นด๋“œ๊ฐ€ ์•„๋‹Œ ์ฒด์ธ ์ฐจ์› escalate-to-user (per-card top-up์„ ํ•œ ๋‹จ๊ณ„ ์œ„๋กœ). 2๋‹จ ํšŒ๊ณ„: per-card(ํ† ํฐยทํ˜ธ์ถœยท์‚ฌ์ดํด, ์ธก+์ฆ‰์‹œํ‘œ์‹œ) + per-chain rollup(๋ฉค๋ฒ„ ์นด๋“œ SUM = ์ž‘์—…๋Ÿ‰ ๋ทฐ). ์ „์ œ (์†”์งํžˆ): ํ˜„ ํ† ํฐ ์นฉ mock/0k โ†’ chain rollup์„ ๊ทธ ์œ„์— ์„ธ์šฐ๋ฉด ๊ฐ€์งœ. ์ˆœ์„œ: ๋ ˆ๋ฒ„1(stream-json) โ†’ result.usage๋กœ ์‹ค์ธก per-card ํ† ํฐ โ†’ chain_id ์—ฐ๊ฒฐ โ†’ chain rollup. (rollup์€ ์‹ค์ธก ์œ„์—๋งŒ.) ๊ตฌํ˜„ ์•ต์ปค: task์— chain_id; ํ•ต๋“œ์˜คํ”„๊ฐ€ ์ƒˆ ์นด๋“œ ์ƒ์„ฑ ์‹œ continuation brief๊ฐ€ chain_id + ๋ˆ„์  totals ์šด๋ฐ˜; rollup = ์ฒด์ธ ๋ฉค๋ฒ„ agent_runs SUM; ๊ธฐ์กด cycle_count๋„ ์ฒด์ธ ํ•ฉ์‚ฐ(="์ž‘์—… ์‚ฌ์ดํด ์นด์šดํŠธ ํ†ตํ•ฉ"). ๋ฏธ๊ฒฐ: per-chain ์ฒœ์žฅ ์ˆ˜์น˜ ํ™•์ •(์ถ”์ฒœ 5์นด๋“œ / 300ํ˜ธ์ถœ), ํ† ํฐ ์˜ˆ์‚ฐ(์‹ค์ธก ํ›„). ๋ณด๊ฐ• (2026-05-23) โ€” ์ฒด์ธ ์ฒœ์žฅ์€ ๋ง‰๋‹ค๋ฅธ ๋ฒฝ์ด ์•„๋‹Œ ์ฒดํฌํฌ์ธํŠธ - ์ž‘์—…๊ธฐ๋ก(continuation brief / git / chain rollup / transcript)์€ ์ธก๊ณผ ๋ฌด๊ด€ํ•˜๊ฒŒ ๋ณด์กด๋˜๋ฏ€๋กœ, ์ƒˆ ์นด๋“œ๋กœ ์ด์–ด๊ฐ€๋Š” ๊ฒƒ์€ ์–ธ์ œ๋‚˜ ๊ธฐ์ˆ ์ ์œผ๋กœ ๊ฐ€๋Šฅ. ์ธก์€ "์ž๋™์œผ๋กœ ์ด์–ด์ง€๋А๋ƒ vs ์‚ฌ๋žŒ์ด ์˜๋„์ ์œผ๋กœ ๊ฒฐ์ •ํ•˜๋А๋ƒ"๋งŒ ๊ฐ€๋ฆ„. - ์ฒด์ธ ์ฒœ์žฅ ๋„๋‹ฌ ์‹œ ์‚ฌ์šฉ์ž ์„ ํƒ: (1) ๊ฐ™์€ ์ฒด์ธ ์—ฐ์žฅ(rollup ํ†ตํ•ฉ ์œ ์ง€ โ€” ํ•œ ์ž‘์—…์œผ๋กœ ๊ณ„์† ์ง‘๊ณ„) / (2) ์ƒˆ ์ฒด์ธ ์‹œ์ž‘(rollup ๋ฆฌ์…‹ + ์ด์ „ ์ฒด์ธ ๋งํฌ๋กœ ํŒŒ์ƒ ์ถ”์ ). "์‚ฌ์‹ค์ƒ ๋‹ค๋ฅธ/ํ›„์† ์ž‘์—…"์ด๋ฉด (2). - ์›์น™: ์ธก์€ ์ž๋™ ํญ์ฃผ๋งŒ ๋ฌถ๊ณ , ์‚ฌ์šฉ์ž์˜ ์˜๋„์  ์†ํ–‰์€ ๋ง‰์ง€ ์•Š๋Š”๋‹ค. ์‚ฌ๋žŒ์€ ํ•ญ์ƒ ์ธก ์œ„์— ์žˆ๋‹ค.


12-C. (b) ํŒŒ์ดํ”„๋ผ์ธ ์„ธ๋ถ„ํ™” ๊นŠ์ด โ€” ์ข…๋ฃŒ [๊ฒฐ์ •]

(2026-05-23) ๊ฒฐ์ •: ๊นŠ์ด = ์ด๋ฒคํŠธ ๊ฒฝ๊ณ„๊นŒ์ง€. - ์ฑ„ํƒ(LLM): pre-run(๋ผ์šฐํŒ…ยท๊ธฐ์กด) + Job2(on-stop) + ํฌ๋ฆฌํ‹ฑ(on-completion). - ๋ณด๋ฅ˜(LLM): Job1(per-checkpoint) โ€” ๋ฐ์ดํ„ฐ ๊ฒŒ์ดํŠธ(๋ ˆ๋ฒ„1 stream-json ํ† ํฐ ์‹ค์ธก + Job2 failed_attempts์˜ ๋“œ๋ฆฌํ”„ํŠธ ๋นˆ๋„ ํ™•์ธ ํ›„ ์ฑ„ํƒ ํŒ๋‹จ). - ๊ณ ์ •(์ฝ”๋“œ): continuous(์ƒํƒœยท์—๋Ÿฌ ๊ฐ์ง€) + outer-bound(ํญ์ฃผ์นฉ). ๊นŠ์ด ๊ธฐ์ค€(์›์น™): LLM ํŒ๋‹จ์€ ์ด์‚ฐ ์ด๋ฒคํŠธ ๊ฒฝ๊ณ„์—๋งŒ ๋‘”๋‹ค. ์—ฐ์† ๊ตฌ๊ฐ„์€ ๊ฒฐ์ •๋ก ์  ์ฝ”๋“œ๊ฐ€ ์†Œ์œ . โ†’ ํ˜ธ์ถœ ๊ทธ๋ž˜ํ”„๋ฅผ ์ด๋ฒคํŠธ ์ˆ˜(์…€ ์ˆ˜ ์žˆ๊ณ  ๋“œ๋ฌพ)๋กœ ๋ฌถ์–ด ๋น„์šฉ์„ ๊ฐ€๋‘ . ๊ตฌํ˜„ ํ†ต์ฐฐ: Job2(๋ฉˆ์ถค)์™€ ํฌ๋ฆฌํ‹ฑ(์™„๋ฃŒ)์€ ๊ฐ™์€ supervisor ์ง„์ž…์ ์ด ์ข…๋ฃŒ ์ƒํƒœ๋กœ ๋ถ„๊ธฐํ•˜๋Š” ๊ฒƒ โ†’ ์ƒˆ ์—์ด์ „ํŠธ 2๊ฐœ๊ฐ€ ์•„๋‹ˆ๋ผ ์ด๋ฒคํŠธ ๊ตฌ๋™ supervisor 1๊ฐœ + ์ข…๋ฃŒ์ƒํƒœ ๋ถ„๊ธฐ. "worker ์œ„ LLM 1๊ฒน"ยท๋น„์žฌ๊ท€ ์œ ์ง€. ํ†ต์ฆ ์—ฐ๊ฒฐ: โ‘ก(๋ฉˆ์ถฐ๋„ ๋‚ด์šฉ ๋ถ€์กฑ)=Job2, โ‘ข(๋ชป ์บ์น˜โ†’๋ฐ˜๋ณต ํ…Œ์ŠคํŠธ)=ํฌ๋ฆฌํ‹ฑ. โ‘ (์ž‘์—… ์ค‘ ์˜ค๋ฅ˜)์€ ๋Œ€๋ถ€๋ถ„ ์ฝ”๋“œ monitor๊ฐ€ ๋ฌด๋ฃŒ ์ฒ˜๋ฆฌ, ์ž”์—ฌ๋ถ„๋งŒ Job1(๋ณด๋ฅ˜). Job1 ๋ณด๋ฅ˜ ์‚ฌ์œ : ๋Ÿฐ์„ ํ† ๋ง‰ ๋‚ด ๋งค ๊ตฌ๊ฐ„ goal/brief๋ฅผ ์žฌ์„ญ์ทจ = ์—ฐ์† ๊ตฌ๊ฐ„์— LLM ์ฃผ์ž… โ†’ ํ˜ธ์ถœ ๊ทธ๋ž˜ํ”„ ๊ณฑ์…ˆ. ์ถ”์ธก์œผ๋กœ ๋น„์‹ผ ์ธต์„ ๋จผ์ € ๊น”์ง€ ์•Š์Œ. ๋ฏธ๊ฒฐ ๊ฐฑ์‹ (12๋ฒˆ): ์„ธ๋ถ„ํ™” ๊นŠ์ด = ํ•ด์†Œ. ๋‚จ์€ ๋ฏธ๊ฒฐ โ†’ supervisor ํ–‰๋™์ง‘ํ•ฉ ํ™•์ • / CONTINUATION_STATE ํ•„๋“œ ํ™•์ • / ํ† ํฐ ์˜ˆ์‚ฐ ์‹ค์ธก / Job1 ์ฑ„ํƒ(๋ฐ์ดํ„ฐ ๊ฒŒ์ดํŠธ).


13. supervisor ํ–‰๋™์ง‘ํ•ฉ ํ™•์ • [๊ฒฐ์ •: 8์ข… ๋ช…๋ช…]

(2026-05-23) ๊ฒฐ์ •: 8์ข… ๋ช…๋ช…. (๋ฐœ๋™ ํŠธ๋ฆฌ๋Š” ํ‘œํ˜„๊ณผ ๋ฌด๊ด€ โ€” activity_log ๊ฐ์‚ฌ ๊ฐ€๋…์„ฑ ์œ„ํ•ด ๋ช…๋ช… ์ฑ„ํƒ. 5์ข… ํŒŒ๋ผ๋ฏธํ„ฐํ™”๋Š” ๊ตฌํ˜„ ์‹œ์  ๋Œ€์•ˆ.) 8์ข…: accept / resume / retry / retry-with-fix / ์ƒˆ์„ธ์…˜ํ•ธ๋“œ์˜คํ”„ / ์žฌ๋ผ์šฐํŒ… / ์‚ฌ์šฉ์ž์—์Šค์ปฌ๋ ˆ์ดํŠธ / abort. - ์ดˆ์•ˆ 6์ข… ๋Œ€๋น„ +accept(ํฌ๋ฆฌํ‹ฑ ์–‘์„ฑ ์ข…๊ฒฐ โ€” (b) ๊ท€๊ฒฐ) +resume(์„น์…˜5 resumeโ†”ํ•ธ๋“œ์˜คํ”„ ๊ตฌ๋ถ„, 12-A top-up). ๋ฐœ๋™ ํŠธ๋ฆฌ (์ž…๋ ฅ ๊ณ ์ •: ์บํฌ transcript + brief + git): 1. ์„ฑ๊ณต ์ฃผ์žฅ โ†’ ํฌ๋ฆฌํ‹ฑ ๊ฒ€์ฆ(git/ํ…Œ์ŠคํŠธ/goal) โ†’ ํ†ต๊ณผ=accept, ๋ฏธ๋‹ฌ=๊ฐญ ๋“ค๊ณ  ์•„๋ž˜๋กœ. 2. ํŒจํ„ด ์ฐจ๋‹จ(stallโ‰ฅ3 / ์—ฐ์†์‹คํŒจโ‰ฅ3 / ์ปจํ…์ŠคํŠธ ํŒฝ์ฐฝ) โ†’ ํŒฝ์ฐฝ=์ƒˆ์„ธ์…˜ํ•ธ๋“œ์˜คํ”„, stallยท๋ฐ˜๋ณต์‹คํŒจ=์žฌ๋ผ์šฐํŒ…(๋Œ€์•ˆ ๆœ‰) ๋˜๋Š” ์—์Šค์ปฌ๋ ˆ์ดํŠธ(็„ก). 3. ์ผ์‹œ ์‹คํŒจ(env/tool)ยท์ ‘๊ทผ ์ •์ƒ โ†’ retry. 4. ์•Œ๋ ค์ง„ ๊ต์ • ๆœ‰ โ†’ retry-with-fix. 5. on-trackยทper-run ์˜ˆ์‚ฐ๋งŒ ์†Œ์ง„ โ†’ ์ปจํ…์ŠคํŠธ ์—ฌ์œ =resume(+์˜ˆ์‚ฐ, per-card ์ฒœ์žฅ ๋‚ด) / ์†Œ์ง„=์ƒˆ์„ธ์…˜ํ•ธ๋“œ์˜คํ”„. 6. per-card ์ฒœ์žฅ(top-up 3 / lifetime 100) โ†’ ์—์Šค์ปฌ๋ ˆ์ดํŠธ(์ง„ํ–‰ํ˜•=top-up ์ œ์•ˆ / ํŒจํ„ดํ˜•=ํ•ธ๋“œ์˜คํ”„ยทabort ๊ถŒ๊ณ ). [12-A/12-B ์—ฐ๋™] 7. ๊ฐ€๋ง ์—†์Œยท๋ฒ”์œ„ ๋ฐ–ยท์•ˆ์ „ ์œ„๋ฐฐ โ†’ abort(๋ณด๊ณ  ๋™๋ฐ˜). ์›์น™: ์—์Šค์ปฌ๋ ˆ์ดํŠธ > abort (์‚ฌ๋žŒ์ด ํ’€ ์ˆ˜ ์žˆ์œผ๋ฉด ์‚ฌ๋žŒ์—๊ฒŒ). abort = ๋ช…๋ฐฑ ๊ฐ€๋ง์—†์Œยท์•ˆ์ „์œ„๋ฐฐ ๋˜๋Š” ์—์Šค์ปฌ๋ ˆ์ดํŠธ ํ›„ ์‚ฌ์šฉ์ž ์„ ํƒ. ์ถœ๋ ฅ: ์ „ ํ–‰๋™ activity_log(actor=ai, mode=supervisor) ๊ธฐ๋ก; ์—์Šค์ปฌ๋ ˆ์ดํŠธ=task_questions/notify ์žฌ์‚ฌ์šฉ; ์ƒˆ์„ธ์…˜ํ•ธ๋“œ์˜คํ”„=์ƒˆ ์นด๋“œ chain_id ์ƒ์†(12-B). ๋ฏธ๊ฒฐ ๊ฐฑ์‹ : ํ–‰๋™์ง‘ํ•ฉ = ํ•ด์†Œ. ๋‚จ์€: CONTINUATION_STATE ํ•„๋“œ / ํ† ํฐ ์˜ˆ์‚ฐ ์‹ค์ธก / Job1 ์ฑ„ํƒ.


15. CMDBOARD V2 โ€” SARA ๋Œ€ํ™” ๊ตฌ์กฐ์™€ ๋‚ด๋ถ€ ํ•˜๋„ค์Šค ์žฌ์ •์˜ [ํ™•์ • ยท ๋‹ค์Œ ์ž‘์—…]

ํ•ต์‹ฌ ๊ฒฐ์ •

๋Œ€ํ™”๋ฐฉ ๊ตฌ๋ถ„

์ „์—ญ SARA ๋Œ€ํ™”๋ฐฉ = ์ „์ฒด ๋น„์„œ / ์นด๋“œ ๊ด€๋ฆฌ์ž
์นด๋“œ ์ƒ์„ธ๋ณ„ SARA ๋Œ€ํ™”๋ฐฉ = ๊ธฐ์กด ์นด๋“œ ์ƒ์„ธ ์ฑ„ํ‹ฐ ๋Œ€ํ™”๋ฐฉ์˜ V2 ํ‘œ์‹œ๋ช… / ํ•ด๋‹น ์นด๋“œ ์ž‘์—… ์ง„ํ–‰ ์ฐฝ๊ตฌ

๋‚ด๋ถ€ ํ•˜๋„ค์Šค ์—ญํ• 

SARA = ์‚ฌ์šฉ์ž-facing coordinator
PLANNER = ๊ธฐ์กด ์ฑ„ํ‹ฐ์˜ ์ƒˆ ์—ญํ• ๋ช…, ์ž‘์—… ๊ณ„์•ฝ์„œ์™€ CODI ์ง€์‹œ๋ฌธ ์ž‘์„ฑ
CODI = ์‹ค์ œ ๊ตฌํ˜„/ํ…Œ์ŠคํŠธ/์ปค๋ฐ‹/๊ฒฐ๊ณผ ๋ณด๊ณ 
EVALUATOR = ๋…๋ฆฝ ๊ฒ€์ฆ์ธต, ์ง์ ‘ ์ฝ”๋“œ ์ˆ˜์ • ๊ธˆ์ง€
ROUTER = ๋‹ค์Œ ํ–‰๋™ ๊ฒฐ์ •, silent block ์‚ฌ์œ  ๊ธฐ๋ก

๋‹ค์Œ ์ž‘์—…

CODI์—๊ฒŒ Phase 0/1 ๊ฐ์‚ฌ ์ง€์‹œ๋ฌธ์„ ์ „๋‹ฌํ•œ๋‹ค. CODI๋Š” ๋ฐ”๋กœ ๋Œ€๊ทœ๋ชจ ํŒจ์น˜ํ•˜์ง€ ๋ง๊ณ  docs/cmdboard_v2_phase0_audit.md, docs/cmdboard_v2_naming_map.md, docs/cmdboard_v2_first_patch_plan.md๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•œ๋‹ค.

14. ์ฝ”๋“œ ๊ฐ์‚ฌ ๊ฒฐ๊ณผ โ€” ์‚ฌ์‹ค ๋ฐ˜์˜ (CONTINUATION_STATE ์žฌ์ •์ดˆ) [๊ฒ€์ฆ ์™„๋ฃŒ]

(2026-05-23, ์ฝ”๋”” ์ •์  ๊ฐ์‚ฌ โ€” ๋ชจ๋“  ํŒ์ • ํŒŒ์ผ:๋ผ์ธ ๊ทผ๊ฑฐ. FINDINGS = cmdboard_supervisor_continuation_audit_FINDINGS.md ๋กœ์ปฌ) ๋Œ€์ „์ œ ์ •์ •: CONTINUATION_STATE๋Š” ์‹ ๊ทœ ์„ค๊ณ„๊ฐ€ ์•„๋‹ˆ๋‹ค. brief๋Š” ์ด๋ฏธ codi_result_v1 ๋ด‰ํˆฌ(41ํ‚ค)๋กœ ์กด์žฌ(tasks.py:7614-7656). ์ด๋ฏธ ์žˆ์Œ(์ถ”๊ฐ€ ๋ถˆํ•„์š”): done(changed_files / commit_sha / commit_subject / pushed), repo_anchor.branch, deploy_status/tests/healthcheck, summary/codi_report_markdown/num_turns/claude_run_id. ๋ด‰ํˆฌ ๋ฏธํฌํ•จ์ด๋‚˜ ์ฆ‰์‹œ join ๊ฐ€๋Šฅ(์ƒˆ ์บํฌ 0): head_before/after, commit_hashes ๋ชฉ๋กยทcount, ํ† ํฐ(input/output/total/usage_status), dirty_before/snapshot_id/restore โ€” ์ „๋ถ€ ์ธ์ ‘ ActivityLog(codi_run_started/completed, codi_commit_summary_recorded, agent_token_usage_recorded)์— ์ด๋ฏธ ์กด์žฌ. ๋ด‰ํˆฌ๋กœ๋งŒ ์•ˆ ํ˜๋Ÿฌ์˜ด. gated(์„ ํ–‰ ํ•„์š”): - failed_attempts(์ฝ”๋””) โ† stream-json(๋ ˆ๋ฒ„1) ํ•„์ˆ˜ ํ™•์ •. --output-format json์€ terminal result๋งŒ stdout์— ์‹ค์Œ + exit_code=0 ํ•˜๋“œ์ฝ”๋”ฉ โ†’ per-step ์‹คํŒจ/์žฌ์‹œ๋„/๊ฑฐ๋ถ€ ์บํฌ ๊ตฌ์กฐ์  ๋ถˆ๊ฐ€(codi_runner_cli.py:916-917 / 645 / 173). - ์ฑ„ํ‹ฐ rejected_optionsยท๋„๊ตฌ๊ฒฐ๊ณผยทํ† ํฐ โ† claude_client.chat() ๋ณด๊ฐ•. ํ˜„์žฌ TextBlock+๋„๊ตฌ์ด๋ฆ„๋งŒ, ResultMessage/ToolResultBlock ๋ฏธ์ฒ˜๋ฆฌ(claude_client.py:173-180). max_turns=8(๋…ธ์…˜ 25 ์ œ์•ˆ ๋ฏธ๋ฐ˜์˜). - chain_context โ† chain_id ์‹ ๊ทœ migration. chain_id/per-card/per-chain/top-up ์ „๋ฌด(grep 0๊ฑด). run ๋‹จ์œ„ max_cycles(15)/max_tokens(200000)๋งŒ ์กด์žฌ. - supervisor ๋ผ๋ฒจ โ† mode enum์— 'supervisor' ์—†์Œ โ†’ mode='sara' ์žฌ์‚ฌ์šฉ ๋˜๋Š” ALTER(004 ํŒจํ„ด). (ยง13 ์ถœ๋ ฅ ํ‘œ๊ธฐ mode=supervisor๋Š” ์ด ํ•ญ๋ชฉ์œผ๋กœ ์ •์ • โ€” ํ˜„์žฌ๋Š” 'sara') ํ† ํฐ ํ˜„ํ™ฉ ์ •์ •: ์นด๋“œ ์นฉยทํ—ค๋” ๊ฒŒ์ด์ง€ยท์ฑ„ํ‹ฐ ํ† ํฐยทAgentRun.tokens_usedยทTokenUsage ํ…Œ์ด๋ธ” = mock/0(chati.py:374=0 ๊ณ ์ •, _base.html:63 "๋ชฉ์—…", TokenUsage INSERT ๋ถ€์žฌ). ๋‹จ codi๋Š” ์‹ค์ธก ํ† ํฐ์„ ์บํฌํ•จ(agent_token_usage_recorded, usage_status='known' ๊ฐ€๋Šฅ) โ€” admin ํ†ต๊ณ„ ์ „์šฉ, ์นด๋“œ ์นฉ(agent_runs.tokens_used)๊ณผ ๋‹จ์ ˆ. ์‹ ๊ทœ ๋ฐœ๊ฒฌ 2 (๋…ธ์…˜ ๋ฏธ๋ฐ˜์˜): - chati_instruction ์•„ํ‹ฐํŒฉํŠธ: ์Šคํ‚ค๋งˆ/์ €์žฅ๋ถ„๊ธฐ ์กด์žฌํ•˜๋‚˜ write ํ˜ธ์ถœ ์—†์Œ(๋ฏธ์‚ฌ์šฉ). goal/remaining์€ ๊ฑฐ๊ธฐ ์—†์Œ โ†’ Task.instruction + ์ฑ„ํ‹ฐ ์ฒซ ๋ฉ”์‹œ์ง€ ํ‰๋ฌธ MD์— ์กด์žฌ. - escalate(asking ์นด๋“œ) ๊ธฐ๋ณธ ๋น„ํ™œ์„ฑ(CHATI_ANSWER_CARDS_DISABLED=true, Phase 83). notify-step/done ์—”๋“œํฌ์ธํŠธ๋Š” cmdboard์— ์—†์Œ(์™ธ๋ถ€ Telegram broker ๊ฐœ๋…๋งŒ docs). โ†’ ยง13 "์‚ฌ์šฉ์ž์—์Šค์ปฌ๋ ˆ์ดํŠธ" ํ–‰๋™์˜ ์ฑ„๋„์ด ํ˜„์žฌ ๊บผ์ ธ ์žˆ์Œ = ์„ ํ–‰๊ณผ์ œ. revised codi_result_v2 = 2๊ณ„์ธต: - Tier A(์ฆ‰์‹œยท์ƒˆ ์บํฌ 0): ์ธ์ ‘ ActivityLog join์œผ๋กœ head/commits/ํ† ํฐ/snapshot์„ ๋ด‰ํˆฌ์— ๋ณ‘ํ•ฉ. - Tier B(๊ฐ๊ฐ ์œ„ gated). ๋งˆ์Šคํ„ฐ ๊ฒŒ์ดํŠธ = ๋ ˆ๋ฒ„1(stream-json) โ€” failed_attempts(์ตœ๊ณ ๊ฐ€์น˜) + ํ† ํฐ ์‹ค์ธก + per-step ์บํฌ๋ฅผ ๋™์‹œ ํ•ด๊ฒฐ. ๋…ธ์…˜ ๋ ˆ๋ฒ„ ์ˆœ์„œ(๋ ˆ๋ฒ„1 ์šฐ์„ )๊ฐ€ ์ฝ”๋“œ๋กœ ์žฌํ™•์ธ๋จ.


15. 8์ข… ๊ฐ์‚ฌ + D1/D2/D3 ์„ค๊ณ„ ํ™•์ • + ์ฑ„ํ‹ฐ ๋Œ€ํ™”๋ฐฉ ๊ฐœํŽธ [๊ฒฐ์ •]

(2026-05-25, codi 8์ข… ๊ฐ์‚ฌ codi-autocycle-audit-8actions-report.md ๊ธฐ๋ฐ˜) ๊ฐ์‚ฌ ํ•ต์‹ฌ: ๋ฌด์ธ์™„๋ฃŒ ํšŒ๋กœ(์ฑ„ํ‹ฐ NEXT=done, chati.py:154)๋Š” ์ด๋ฏธ ์™„์„ฑ. supervisor 8์ข… = 7์ข… audit-only ์ฃฝ์€ ๊ฒฝ๋กœ + escalate 1์ข…(ํ† ๊ธ€ OFF ๊ธฐ๋ณธ). ์ž๋™์ˆœํ™˜ ๋ฏธ๋ฐœ์ƒ = ์šด์˜ ๋””ํดํŠธ G1 ยท G2 OFF. ๋ฉˆ์ถค ๊ฒŒ์ดํŠธ G1~G15 ์ „์ˆ˜. codiโ†’์ฑ„ํ‹ฐ์žฌ๋ถ„์„(tasks.py:8127)โ†’done์ด supervisor์™€ ๋…๋ฆฝ์ ์œผ๋กœ ๋‹ซํž˜. D1 โ€” supervisor ํ๊ธฐ: supervisor.py(591์ค„) + codi.py:429-484(judge ํ˜ธ์ถœ) + signal ๋นŒ๋” ์ œ๊ฑฐ. critic 4๊ธฐ์ค€(commit / exit_code / summary / goal)์„ CHATI_SYSTEM_PROMPT๋กœ ํก์ˆ˜. ํก์ˆ˜ โ†’ ๊ฒ€์ฆ โ†’ ์‚ญ์ œ ์ˆœ. migration 015/016 ยท enum ยท ์ปฌ๋Ÿผ์€ ๋ณด์กด(D2 ์žฌ์‚ฌ์šฉ). D2 โ€” ๊ฐœ์ž… ํ† ๊ธ€ ์žฌ์ •์˜: supervisor_signal_override โ†’ "์‚ฌ๋ผยท์ฑ„ํ‹ฐ ๊ฐœ์ž… ์—ฌ๋ถ€" 3-state(NULL=์ „์—ญ / 1=์ž๋™ / 0=์ˆ˜๋™). ๋ฌผ๋ฆฌ ์ปฌ๋Ÿผ ยท ์œ„์ ฏ ์žฌ์‚ฌ์šฉ(๋ผ๋ฒจ๋งŒ ๋ณ€๊ฒฝ, ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ 0). G1 ยท G2 ํ†ตํ•ฉ. G3(์šด์˜์นด๋“œ ๊ฐ€๋“œ) ์ œ๊ฑฐ + pfs ๋™์ผ ํ† ๊ธ€ ํ†ตํ•ฉ โ€” pfs ์‹ค์ œ ์•ˆ์ „(repo write / deploy-live / master push)์€ Tier3 ํ•˜๋“œ์ฐจ๋‹จ์ด ์œ ์ง€. (๊ด€์‹ฌ์‚ฌ ๋ถ„๋ฆฌ: ์ž๋™์ˆœํ™˜ ์ฐธ์—ฌ = ํ† ๊ธ€ / ์œ„ํ—˜์ž‘์—… ์ฐจ๋‹จ = ํ•˜๋“œ์ธต) D3 โ€” ๋ฌด์ธ์™„๋ฃŒ (8์ข… ์ „๋ถ€): ยง13 8์ข…์„ ์ฑ„ํ‹ฐ NEXT๋กœ ๋งคํ•‘. D3-a(accept/retry/retry-with-fix/escalate, ์ฆ‰์‹œ) / D3-b(resume ยท ์ƒˆ์„ธ์…˜ํ•ธ๋“œ์˜คํ”„ = ๋ ˆ๋ฒ„1 ์ฑ„ํ‹ฐ transcript + continuation brief + chain_id + per-chain cap) / D3-c(์žฌ๋ผ์šฐํŒ… ยท abort terminal). ์ ์ง„ ํ™œ์„ฑํ™”(๊ฒ€์ฆ์นด๋“œ per-card ON โ†’ 10ํšŒ PASS โ†’ ์ „์—ญ ON ๊ฒฐ์ •). ํ”„๋ก ํŠธ (๋ฌถ์Œ2.5): ๋Œ€์ƒ = ์นด๋“œ์ƒ์„ธ ์šฐ์ธก "์ฑ„ํ‹ฐ์™€ ๋Œ€ํ™”" ์„ธ๋กœ ํŒจ๋„(์‚ฌ๋ผ ์‚ฌ์ด๋“œ๋ฐ”๋Š” ์ถ”ํ›„). ์ƒํƒœ ์œ„์ ฏ 6์ข… ๋ถ„์‚ฐ โ†’ ์••์ถ• ยท ์ ‘์ด์‹ ํ†ตํ•ฉ + ๊ฐœ์ž… ํ† ๊ธ€ ๊ต์ฒด + ์ˆ˜๋™ ํŠธ๋ฆฌ๊ฑฐ ์ถ•์†Œ = 3-zone(๊ด€์ฐฐ / ๋Œ€ํ™” / ๊ฐœ์ž…). ๊ธฐ์กด ์šฐ์ธก ์„ธ๋กœ ์ปฌ๋Ÿผ ํญ ยท ์œ„์น˜ ์œ ์ง€(๊ฐ€๋กœ ํ™•์žฅ ๊ธˆ์ง€). ๋ชฉ์—…์œผ๋กœ ํ™•์ •. ์‹œํ–‰: 6๋ฌถ์Œ(1 D1ํก์ˆ˜+D3-a / 2 D2 / 2.5 ํ”„๋ก ํŠธ / 3 D1์‚ญ์ œ / 4 D3-b / 5 D3-c โ†’ ๋ฐฐํฌ). ๊ฐ :8003 ๊ฒ€์ฆ, master push ๋งˆ์ง€๋ง‰. ๋ฌถ์Œ1 ์ตœ์ข… ์ž‘์„ฑ ์™„๋ฃŒ(codi-bundle1-d1-absorb-d3a.md). ยง13 ์ •์ •: 8์ข…์€ ๋ผ๋ฒจ๋งŒ ์ •์˜๋˜๊ณ  ์‹คํ–‰ ๋กœ์ง ๋ฏธ๊ตฌํ˜„์ด์—ˆ์Œ(๊ฐ์‚ฌ ํ™•์ธ) โ†’ ์ฑ„ํ‹ฐ NEXT๋กœ ์‹ค์ œ ํก์ˆ˜๊ฐ€ D3.


16. ๋ฌถ์Œ5 (D3-c ์žฌ๋ผ์šฐํŒ…ยทabort) ๊ตฌํ˜„ยท๊ฒ€์ฆ [๊ฒ€์ฆ ์™„๋ฃŒ โ€” abort ๊ทœ๋ช…]

์„ค๊ณ„ โ€” NEXT 8๊ฐ’ ๋งคํ•‘ ๊ณ„์•ฝ (ยง13 ๊ธฐ๋ฐ˜)

8์ข… ํ–‰๋™ โ†’ ์ฑ„ํ‹ฐ NEXT ๋งคํ•‘: acceptโ†’done / resumeโ†’resume / retryโ†’codi / retry-with-fixโ†’codi+draft / ์ƒˆ์„ธ์…˜ํ•ธ๋“œ์˜คํ”„โ†’handoff / ์žฌ๋ผ์šฐํŒ…โ†’reroute / ์‚ฌ์šฉ์ž์—์Šค์ปฌ๋ ˆ์ดํŠธโ†’holdยทmanual / abortโ†’abort. D3-c๊ฐ€ ์ถ”๊ฐ€ํ•˜๋Š” ์‹ ๊ทœ 2๊ฐ’ = rerouteยทabort. - reroute(progยทnext_mode=codiยทaction=chati_next_reroute): ํŒจํ„ด์ฐจ๋‹จ(stallโ‰ฅ3/์—ฐ์†์‹คํŒจโ‰ฅ3)์ด๋ฉด์„œ ์‹œ๋„ํ•  ๋‹ค๋ฅธ ์ ‘๊ทผ์ด ์žˆ์„ ๋•Œ ๋‹ค๋ฅธ ์ ‘๊ทผ์œผ๋กœ ์ฝ”๋”” ์žฌ์ง„์ž…. ์—์Šค์ปฌ๋ ˆ์ดํŠธ๋ณด๋‹ค ์šฐ์„ (์ž๋ ฅ ํ•ด์†Œ ์‹œ๋„). codi์™€ ๋™์ผํ•˜๊ฒŒ autorun ๋ฐœํ™” + codi_instruction_draft ๋™๋ฐ˜. - abort(holdยทnext_mode=manualยทaction=chati_next_abort, terminal): ๊ฐ€๋ง์—†์Œ/๋ฒ”์œ„๋ฐ–/์•ˆ์ „์œ„๋ฐฐ ๋˜๋Š” ์‚ฌ์šฉ์ž ์ค‘๋‹จ ์„ ํƒ. ์นด๋“œ๋ฅผ hold๋กœ ์ข…๊ฒฐํ•˜๊ณ  ์‚ฌ์šฉ์ž ๊ฐœ์ž… ๋Œ€๊ธฐ. task_question ์ƒ์„ฑ ์•ˆ ํ•จ(์—์Šค์ปฌ๋ ˆ์ดํŠธ์™€ ๊ตฌ๋ถ„ โ€” abort๋Š” ์กฐ์šฉํ•œ ์ข…๊ฒฐ).

๊ตฌํ˜„ (bridge-test 3ํŒŒ์ผ + EC2-test tasks.py, ์ „๋ถ€ ๋ฐฑ์—… ๋ณด์œ )

๊ฒ€์ฆ

RESOLVED โ€” abort = ์ฝ”๋“œ ๊ฒฐํ•จ ์•„๋‹˜ (2026-05-25 ๊ทœ๋ช…)

๊ฒฐ๋ก : EC2-test ๋””์Šคํฌ ์ฝ”๋“œ(L11378 if reroute / L11384 elif abort)๋Š” ์ •์ƒ์ด๋ฉฐ, fresh-process test_client ํ˜ธ์ถœ์—์„œ abort ๋ถ„๊ธฐ๋ฅผ ์ •์ƒ ์‹คํ–‰ํ•œ๋‹ค. ๊ทผ๊ฑฐ โ€” (1) ๊ธฐ์กด DB์— chati_next_abort ๊ฐ์‚ฌ๋กœ๊ทธ ๋‹ค์ˆ˜ ์กด์žฌ = ๊ณผ๊ฑฐ ์‹ค์ œ ์ปค๋ฐ‹ ์ฆ๋ช…, (2) ์ƒˆ dbg ์นด๋“œ abort ์žฌํ˜„ ์‹œ fresh/stale/rollback readback ๋ชจ๋‘ status=holdยทnext_mode=manualยทaudit=1, (3) ํ•œ ํ”„๋กœ์„ธ์Šค rerouteโ†’abort ์—ฐ์† ์‹คํ–‰๋„ ALL_PASS. MySQL REPEATABLE READ ๊ฐ€์„ค์€ stale ์„ธ์…˜๋„ ๋ฐ˜์˜์„ ๊ด€์ธกํ•ด ๊ธฐ๊ฐ. ์ด์ „ #4 "abort FAIL"์€ ๋‹น์‹œ ๊ฒ€์ฆ ํ•˜๋„ค์Šค ์•„ํ‹ฐํŒฉํŠธ(๋‹จ์ผ ์žฅ๊ธฐ ํ”„๋กœ์„ธ์Šค ๋‚ด ํŽธ์ง‘ ์ „ ๋ชจ๋“ˆยทtest_client ์บ์‹œ / create_app ๋ถ€์ˆ˜ํšจ๊ณผ)๋กœ ํŒ์ •. โ†’ ๋ฌถ์Œ5 ๊ฒ€์ฆ ์™„๋ฃŒ.

(๊ตฌ ๊ธฐ๋ก) ๋ฏธํ•ด๊ฒฐ โ€” abort ๋Ÿฐํƒ€์ž„ ๋ฏธ์‹คํ–‰

์šด์˜ ํ•จ์ • (์ด ์„ธ์…˜ ํ™•์ •)


ยง UI ์ „๋ฉด ์ •๋ฆฌ โ€” ์นด๋“œ์ƒ์„ธ + ๊ด€๋ฆฌ์ž 6ํŽ˜์ด์ง€ (2026-05-27)

๋ฐฐ๊ฒฝยท๋ชฉํ‘œ

ํ˜„์žฌ ์‹œ์Šคํ…œ์—์„œ ๋ณ€๊ฒฝ๋˜์–ด ๋” ์ด์ƒ ํ•„์š” ์—†๋Š” ๋ชจ๋‹ˆํ„ฐ๋งยท๊ธฐ๋Šฅ UI๋ฅผ ํ๊ธฐํ•˜๊ณ  ์ „๋ฐ˜ ๊ฐœ์„ . (1) ๊ด€๋ฆฌ์ž 6ํŽ˜์ด์ง€ ๋‹จ์ผ /admin+์ขŒ์ธก ์‚ฌ์ด๋“œ๋ฉ”๋‰ด ํ†ตํ•ฉ (2) ์นด๋“œ์ƒ์„ธ ๋ชจ๋‹ˆํ„ฐ๋ง ์ •๋ฆฌยท๋ชฉ์—… ์‚ญ์ œยท3-zone(๊ด€์ฐฐ/๋Œ€ํ™”/๊ฐœ์ž…) ์žฌ๋ฐฐ์น˜.

์ง„ํ–‰ ๋ฐฉ์‹ (์‚ฌ์šฉ์ž ๋ชจ๋“œ)

์ฑ„ํ‹ฐ๊ฐ€ ๊ณ„ํšโ†’ํ™•์ธ์งˆ๋ฌธโ†’์ฝ”๋”” ์ง€์‹œ๋ฌธ(.md) ์ž‘์„ฑ. ์ง„๋‹จ/์ฝ”๋”ฉ/SSM์€ ์ฝ”๋”” ์œ„์ž„. ์ฝ”๋”” read-only ๊ฐ์‚ฌ ์„ ํ–‰์œผ๋กœ ํŽ˜์ด์ง€๋ณ„ ํ•ญ๋ชฉ ์ •๋ฐ€ ์‹๋ณ„.

๊ฒฐ์ • ์‚ฌํ•ญ

๋ฌถ์Œ ๋ถ„ํ•ดยท์ƒํƒœ

๋ฏธ๊ฒฐ

์‚ฐ์ถœ ๋ฌธ์„œ (๋กœ์ปฌ C:devcmdboard)