Imported from cih0802/snowflake_files (
.snowflake/cortex/skills/init_ihcho/SKILL.md). Install upstream withnpx skills add cih0802/snowflake_files --skill init_ihcho. Copyright stays with the author.
init_ihcho โ ์ธ์ ์ด๊ธฐํ
์ด ์ํฌ์คํ์ด์ค์์ ์ธ์ ์ต์ด๋ก ์์ ์ ์์ํ ๋ ๋ฐ๋์ ์คํํ๋ค. ๋ชฉ์ : ์์ ์ง์นจ ๋ก๋ โ ๋ฏธํด๊ฒฐ ์ด์ ํ์ โ ์ ธ ์์ ๊ท์นยท๋ฌธ์ ์ฝ๊ธฐ/์ฐ๊ธฐ ๊ฐ๋ ํ์ฑํ.
Step 0: ์ ธ ์์ ๊ท์น ์ ์ ์ฉ (์ฆ์)
์ด ์คํฌ ์ดํ ๋ชจ๋ bash ํธ์ถ์ ์๋๋ฅผ ์ ์ฉํ๋ค. ์์ธ๋ ์ง์นจ ๋ฌธ์ R0 ์ฐธ์กฐ.
- ๋ณตํฉ๊ตฌ๋ฌธ(
for/if/case/heredoc/๋ฐ์ดํ)์ ํ ๋ช ๋ น ๋ฌธ์์ด ์์์ ์๊ฒฐํ๋ค. ๋ฏธ์๊ฒฐ ๊ตฌ๋ฌธ์ ๋ฌดํ ๋๊ธฐ๋ฅผ ์ ๋ฐํ๋ค. - ์
ธ ๋ฃจํ ๋์
ls -d a b c,find -L /workspace/ ...,grep -rn pat a b c๊ฐ์ ๋ฃจํ ์๋ ๋จ์ผ ๋ช ๋ น์ ์ด๋ค. - ๋ชจ๋ ๋ช
๋ น์
timeout 60+</dev/null์ ๋ถ์ธ๋ค. ์ฅ๊ธฐ ์์ ์ background ์คํ ํ ํด๋ง. - ํ์์์ ์ ๊ฐ์ ๋ช ๋ น์ ์ฌ์๋ํ์ง ์๊ณ ๊ตฌ๋ฌธ ์ ๊ฒ โ ์ต์ ๋ช ๋ น ํ์ธ โ ๊ฒฝ๋ก ๋ถํด ์์ผ๋ก ๋ณต๊ตฌํ๋ค.
- dbt ๋ช
๋ น์๋ ์
ธ ์ฐ์ฐ์๋ฅผ ์ธ ์ ์๋ค.
--project-dir๋ก ๊ฒฝ๋ก๋ฅผ ์ ๋ฌํ๋ค.
Step 0.5: ๋ฌธ์ ์ ๋ ์ฝ๊ธฐ ๊ท์น (๋ชจ๋ ํ์ผ ์ฝ๊ธฐ์ ์ ์ฉ)
.md, .sql, .yml, .py, .csv ๋ฑ ํ์ผ ์ข
๋ฅ์ ๋ฌด๊ดํ๊ฒ ์ด ์ธ์
์์ ์ฝ๋ ๋ชจ๋ ํ์ผ์ ์ ์ฉํ๋ค. ์์ธ๋ ์ง์นจ ๋ฌธ์ R1-3 ์ฐธ์กฐ.
- ์ ๋ ํ๋ณด ํ์: ํ์ผ์ ์ฒ์๋ถํฐ ๋๊น์ง ์ฝ๋๋ค. ์ผ๋ถ๋ง ์ฝ์ ์ํ์์ ๋๋จธ์ง ๋ด์ฉ์ ์ถ๋ก ยท๋จ์ ํ์ง ์๋๋ค.
- ๋ถํ ์ฝ๊ธฐ๋ก ์ด์ด ์ฝ๊ธฐ:
readํด์ 1ํ ํธ์ถ๋น ์ต๋ 2000์ค, 1์ค๋น 2000์๊น์ง๋ง ๋ฐํํ๋ค. ์ด ํ๋๋ก ์๋ฆฌ๋ฉดoffset/limit๋ฅผ ์ฎ๊ฒจ ๋๊น์ง ๋ฐ๋ณต ํธ์ถํ๋ค. ์๊ฐ ์ ์ฝ(timeout 60)๊ณผ๋ ๋ฌด๊ดํ ๋ฌธ์ ์ด๋ฏ๋ก ์๊ฐ์ ์ด์ ๋ก ์ค๋จํ์ง ์๋๋ค. - ์ค ์ ์ ํ์ธ: ๋์ฉ๋ ํ์ผ์
timeout 60 wc -l <๊ฒฝ๋ก>๋ก ์ด ์ค ์๋ฅผ ๋จผ์ ํ์ธํ๊ณ , ํ์ํ ํธ์ถ ํ์๋ฅผ ๊ณ์ฐํด ์ ๋ ์ฝ์๋์ง ์๊ฐ ๊ฒ์ฆํ๋ค. - bash ๋ก ๋ฌธ์ ์ฝ๊ธฐ ๊ธ์ง:
cat/head/tail์ ์ถ๋ ฅ ์ ๋จ์ผ๋ก ๋ด์ฉ์ด ์์ค๋๋ค. ๋ฌธ์ ๋ด์ฉ ํ์ ์ ๋ฐ๋์readํด์ ์ด๋ค. bash ๋ ์ค ์ยทํฌ๊ธฐ ํ์ธ ์ฉ๋๋ก๋ง ์ด๋ค. - ๋ถ๋ถ ์ฝ๊ธฐ ๋ช ์: ์ฌ์ฉ์๊ฐ ํน์ ๊ตฌ๊ฐ๋ง ์์ฒญํ ๊ฒฝ์ฐ์๋ง ๋ถ๋ถ ์ฝ๊ธฐ๋ฅผ ํ์ฉํ๊ณ , ๊ทธ ์ฌ์ค์ ์๋ต์ ๋ช ์ํ๋ค.
Step 0.6: ๋ฌธ์ ์์ฑ ๊ท์น โ ํ ์ค 2000์ ๊ฐ๋ (๋ชจ๋ ํ์ผ ์ฐ๊ธฐ์ ์ ์ฉ)
.md, .sql, .yml, .py, .csv ๋ฑ ํ์ผ ์ข
๋ฅ์ ๋ฌด๊ดํ๊ฒ ์ด ์ธ์
์์ ์์ฑยท์์ ํ๋ ๋ชจ๋ ํ์ผ์ ์ ์ฉํ๋ค. ์์ธ๋ ์ง์นจ ๋ฌธ์ R1-5 ์ฐธ์กฐ.
์ด์ : read ํด์ 1์ค๋น 2000์์์ ์ ๋จํ๋ค(Step 0.5). 2000์๋ฅผ ๋๋ ์ค์ ์ฐ๋ฉด ๋ค์ ์ธ์
์์ ๊ทธ ์ค์ ์ ๋ ์ฝ์ ์ ์์ด ์ ๋ ๋
ํด ๊ท์น์ด ๊นจ์ง๋ค.
- ํ ์ค 2000์ ์ด๊ณผ ๊ธ์ง. ๋ชฉํ๋ 1์ค 1000์ ์ด๋ด(์์ ๋ง์ง), ์ ๋ ์ํ 2000์.
- ๊ธด ๋ฌธ์ฅ์ ์๋ฏธ ๋จ์๋ก ๊ฐํํ๋ค. ๋ฌธ๋จยทํญ๋ชฉยท์ ๋จ์๋ก ์ค์ ๋๋๊ณ , ํ๋ ํ๋ง๋ค ๊ฐํํ๋ค.
- ํ๊ธ์ 1์ = 1๋ฌธ์๋ก ๊ณ์ฐํ๋, ๋ฐ์ดํธ ๊ธฐ์ค ์ฌ์ ๋ฅผ ๋๊ณ ํ๋จํ๋ค.
- ๊ธด SQLยท์ฝ๋๋ ์ (
SELECT/FROM/WHERE/JOIN), ์ปฌ๋ผ, ์ธ์ ๋จ์๋ก ๊ฐํํ๋ค. ํ ์ค ๋ชฐ์์ฐ๊ธฐ ๊ธ์ง. - ๊ธด ๋ชฉ๋กยท๋์ด์ ์ผํ ๋์ด ๋์ ๋ถ๋ฆฟ ๋๋ ํ ํ์ผ๋ก ๋ถํดํ๋ค.
- ์ฐ๊ธฐ ํ ๊ฒ์ฆ ํ์: ํ์ผ ์์ฑยท์์ ์งํ ์๋๋ก ์ด๊ณผ ์ค์ ํ์ธํ๊ณ , ์์ผ๋ฉด ์ฆ์ ๊ฐํ ๋ถํ ํด ์ฌ๊ฒ์ฆํ๋ค.
timeout 60 python3 scripts/line_len.py <๊ฒฝ๋ก> [<๊ฒฝ๋ก> ...] ๐ข PASS๊ฐ ๋์์ผ ํต๊ณผ. ์ด๊ณผ ์ค์ ๋จ๊ธด ์ฑ ์์ ์ ์๋ฃ ๋ณด๊ณ ํ์ง ์๋๋ค.- ๐ด
awk 'length($0)>2000'๋ฅผ ์ฐ์ง ๋ง๋ผ(2026-08-18 ๊ต์ฒด). BusyBox awk ์length()๋ ๋ฐ์ดํธ๋ฅผ ์ผ๋ค. ํ๊ธ์ UTF-8 ์์ 1์ = 3๋ฐ์ดํธ๋ผ ๋ฌธ์ 1,907์์ธ ์ค์ด 3,091 ๋ก ์กํ ์คํํ๋ค.read์ ์ ๋จ ๊ธฐ์ค์ ๋ฌธ์์ด๋ฏ๋ก ํ์ ๋ ๋ฌธ์์ฌ์ผ ํ๋ค.line_len.py๋ UTF-8 ์ ๋จ๊น์ง ํจ๊ป ์ก๋๋ค.
Step 0.7: ํ์ผ ์ฐ๊ธฐ ์์ ๊ท์น (๊ธฐ์กด ํ์ผ ์์ ์ ยท ์ ๋ณธ = 00_guides/02_ํ์ผ์ฐ๊ธฐ_์์ ๊ท์ฝ.md R1-7)
๐ด ์ ๋ณธ์ ๊ทธ ๋ฌธ์๋ค. ์ด ์ ์ ใ๊ธ์ง๋ฌธ + ์ฌ๊ณ ํ์ใ๋ง ๋ด๋๋ค(2026-08-20 O92-C ๋ค์ด์ํธ).
์กฐ๋ฌธ ๋ฒํธ R1-7-1~R1-7-10 ์ ๊ทธ๋๋ก๋ค. ์ ๊ทธ ๊ท์น์ด ์๋์ง(์ฌ๊ณ ๊ฒฝ์)๊ฐ ํ์ํ๋ฉด ์ ๋ณธ์ ์ฝ์ด๋ผ โ
ํ์ผ์ ์ฐ๊ธฐ ์ , ๊ทธ๋ฆฌ๊ณ ์ฐ๊ธฐ ์ฌ๊ณ ๋ฅผ ์กฐ์ฌํ ๋๊ฐ ๊ทธ ์์ ์ด๋ค.
โ 10๊ฐ ์กฐ๋ฌธ์ ํ๋๋ ๋นผ์ง ์์๋ค(๋งค ์ธ์
๋
ธ์ถ ๋ด๋ณด ๊ณ์ฝ ์ ์ง). ๋น ์ง ๊ฒ์ ๊ฒฝ์ ์์ฌ๋ฟ์ด๋ค.
๐ด ์ด ์ํฌ์คํ์ด์ค์์ ์์ฅ์ด 4ํ ๊นจ์ก๋ค. ์ ๋ถ ๊ฐ์ ๋ฟ๋ฆฌ์ด๊ณ ๊ธฐ์กด ๊ฒ์ดํธ๋ฅผ ์ ๋ถ ํต๊ณผํ๋ค.
R1-7-1์ ์ฒด ์ฌ์์ฑ(write) ๊ธ์ง ยท ๋ถ๋ถ ์นํ(edit) ๊ธฐ๋ณธ.open().read()โ ์์ โwrite()๊ธ์ง. ์ฝ๊ธฐ๊ฐ ์กฐ์ฉํ ๋ถ๋ถ ๋ฐํํ๋ฏ๋ก ์งง๊ฒ ์ฝํ ๋ฒํผ๋ฅผ ์ฐ๋ฉด ๊ผฌ๋ฆฌ๊ฐ ์๋ฆฐ๋ค.write๋ ์ ๊ท ํ์ผ ์ ์ฉ. ยท ๐ ๊ฒฝ์ยท์ค์ฌ๊ณ ๊ทผ๊ฑฐ =20_issue/91_์ฌ๊ณ ์ฌ๋ก์ง.mdยงC16(R2-8๋ฌด๋ณ๊ฒฝ ์ด๊ด ยทO111) โ ์ฝ๋ ํ์ผ์๋edit๋ฅผ ์ด๋ค. ๋ถ๋์ด ์ ์ฒด๋ฅผ ๋ค์ ์ผ๋ค๋ฉด ์ฆ์ ใ ๊ผฌ๋ฆฌ ๋์ฝ๊ธฐ ใกpy_compileใขdef๊ฐ์ ๋์กฐ ใฃcortex ws cp+ ํด์๋ก ์คํ ์ด์ง ๋์กฐ๋ฅผ ํ๋ผ.R1-7-2์ฐ๊ธฐ ์ ํด์ ์์ ์ฑ ํ์ธ(blocking) โ ๊ฐ์ ํ์ผ 2ํ ์ด์ ์ฝ์ด ํฌ๊ธฐยทSHA256 ๋์ผํด์ผ ์ฐฉ์. ๋ค๋ฅด๋ฉด ์ค๋จํ๋ค(๋ถ๋ถ ๋ฐํ ์ค์ด๊ฑฐ๋ ํ ์ธ์ ์ด ์ฐ๋ ์ค).R1-7-3ใ์์ใ ํ์ ์ ์ 2~3ํ ์ฌ์ฝ์ด ํด์ ๋์กฐ. torn read ๋ฅผ ์์์ผ๋ก ์คํํ ์ฌ๋ก 1ํ.R1-7-4์์ฅ ํ๋ฅผ ๊ฑด๋๋ ธ์ผ๋ฉดtimeout 60 python3 scripts/index_row_gate.py. ์ ๋ชฉยท๊ธธ์ดยทํฌ๊ธฐ ๊ฒ์ดํธ๋ ํ ์์คยท์ค๋ณต์ ๋ชป ์ก๋๋ค. ๐ด FAIL ์--update-golden์ผ๋ก ๋ฎ์ง ๋ง๋ผ. ๐ข ๋ก์ ํ์ ์ง์ฐ์ง ๋ง๊ณ ํ ํค๋ฅผ ๋ณด์กดํ ์ฑ ๋ด์ฉ์ ๋์ฒดํ๋ค(์ขํ ์ธ์ฉ ์์ ์ฑ).R1-7-5ํ ํฐ 1๊ฐ๋ก ใ๋ณด์กดใ์ ๋จ์ ํ์ง ๋ง๋ผ. ๋ฌธ์์ด 1๊ฐ๋ง ๊ฒ์ฌํด ํต๊ณผ์ํจ ์ฌ์ด ํธ์ง 2๊ฑด ์์ค. ๋จ์ ๋์์ ํ ํค ์งํฉ์ด์ด์ผ ํ๋ค(R1-7-4๊ฐ ๊ทธ ์๋ํ).R1-7-6ํ์ผ ๋จ์ discard ๋ ๋๋๋ฆด ์ ์๋ค.USER$๋head == live๋ผ redo ๊ฒฝ๋ก๊ฐ ์๊ณ , discard ๋ ๊ทธ ํ์ผ์ ๋ฏธ์ปค๋ฐ ๋ณ๊ฒฝ ์ ๋ถ๋ฅผ ์ง์ ํ ์ธ์ ์์ ๊น์ง ๋ ๋ฆฐ๋ค. ์ ์ยท์ํ ์ ์ ๋ช ์ํ๋ค.ALTER WORKSPACE โฆ ABORT๋ ์น์ธ ์์ด ๊ธ์ง(์ํฌ์คํ์ด์ค ์ ์ฒด๊ฐ ๋ ์๊ฐ๋ค).- ๐ด๐ด
R1-7-7rm -rf๋ ๊ฐ์ ๋ฑ๊ธ์ ํ๊ดด ๋ช ๋ น์ด๋ค โ ์ค์ฌ๊ณ 1ํ(ํ๋ธ ํ์ผ ๋๋ฐ ์ญ์ ยท ๋ณต์ ยท ์์ค 0). ์คํ ์ด์ง์ ใํด๋ใ๋ ๊ฒฝ๋ก ์ ๋๋ค. ยท ์ญ์ ์ os.listdir๋ก ๊ทธ ์ ๋์ ๊ฑธ๋ฆฌ๋ ๊ฒ์ ๋์ดํ๋ค. ยท ๋๋ ํฐ๋ฆฌ ํต์ญ์ ๋์ ํ์ผ ๊ฐ๋ณ ์ญ์ . ยท ๐ด ์ญ์ ์งํls๋ฅผ ๋ฏฟ์ง ๋ง๋ผ(OPS-3๋ก์ ๋ทฐ) โos.listdir+cortex ws ls๋ ์ถ์ผ๋ก ํ์ธ. ยท ๐ข ์กฐ๋ฌธ์ ์๋ค๋ ๊ฒ์ ์์ ์ ๊ทผ๊ฑฐ๊ฐ ์๋๋ค. - ๐ด
R1-7-8edit์ต์ปค๋ ใ์ง์ ์ค๊น์งใ ํฌํจํ๊ณ , ํธ์ง ์งํ ๊ฒ์ดํธ๋ฅผ ๋๋ฆฐ๋ค. ์ ๋ชฉ์ค ํ๊ดด 5ํ ยท ํ ํ ๊ผฌ๋ฆฌ ์ค๋ณต ยท ๐ ํ ํ ์ข ๊ฒฐ|์ ์ค 1ํ(O92-B). ๐ด ๊ฒ์ดํธ๊ฐ ์์ด์๊ฐ ์๋๋ผ ๋ฆ๊ฒ ์จ์ ๋์ณค๋ค. ยท ๊ธด ํ ํ์ ํ ์ ์ฒด๋ฅผ ์ต์ปค๋ก(์ ๋๋ง ๋ฃ์ผ๋ฉด ๊ผฌ๋ฆฌ๊ฐ ๋จ๋๋ค) ยท ๐ ํ ์ ์ ๋ณ๊ธฐํ ๋๋ ํ ๋|๊น์ง ์ต์ปค์ ๋ฃ์ด๋ผ(์ข ๊ฒฐ์๋ฅผ ์์ผ๋ฉดindex_row_gate๋ง ์ก๋๋ค) ยท ํ์ด ๋๋ฌด ๊ธธ๋ฉดedit๋์ python ์ผ๋ก ์ค ์ธ๋ฑ์ค ์ง์ ์นํ ยท ํธ์ง ์งํ ๊ทธ ์๋ฆฌ์์doc_heading_gate.py+index_row_gate.pyยท ๐ข ์กฐ๋ฌธยท์ ์ ๋ฒํธ ์์ ๋ง๋ฏธ์ ๋ง๋ถ์ธ๋ค(clause_order_gate.py๊ฐ ์ญ์ ยท์ค๋ณต์ blocking ์ผ๋ก ์ก๋๋ค). - ๐ด๐ด
R1-7-9๋ฐฑํฑยท$ยท!๋ฅผ ํฌํจํ ๋ณธ๋ฌธ์ ์ ธ์ ๊ฒฝ์ ์ํค์ง ์๋๋ค โ ์ค์ฌ๊ณ 3ํ(๋ฐฑํฑ ๊ตฌ๊ฐ์ด ๋ช ๋ น์นํ์ผ๋ก ํด์๋์ด 23์ค์์ ์ ๋ถ ์ญ์ ยท O106 ์ฌ๋ฐ ยท ๐ O109 ๋ quoted heredocยทpython3 -c์นํ ๋ฌธ์์ด์์ ๋ ๋ฒ โ ํ์๋ ์ค์ ๋ก ๋ฌธ์์ ๋ฐฑํฑ 2๊ฐ๊ฐ ์ฌ๋ผ์ก๋ค). ์ด ์ํฌ์คํ์ด์ค ๋ฌธ์๋ ๋ฐฑํฑ์ด ๋งค ์ค์ ์๋ค. ยทwriteํด๋ก ์ฐ๊ฑฐ๋ ์คํฌ๋ฆฝํธ ํ์ผ์ ๋ง๋ค์ด ์คํํ๋ค(bash -c์ธ๋ผ์ธ python ์ ๋ณธ๋ฌธ ๊ธ์ง). ยท โ ๏ธ ์์๋ฐ์ดํ๋ก ๊ฐ์ธ๋ ๋ฐ๊นฅ์ด ํฐ๋ฐ์ดํ๋ฉด ๋ฐฑํฑ์ ํด์๋๋ค โ ์ค์ฒฉ ์ธ์ฉ์ ๋ฐฉ์ด๊ฐ ์๋๋ค. ยท ๐ โ ๏ธ<<'EOF'quoted heredoc ๋ ใ์ ธ ๊ฒฝ์ ใ๋ค โ ํ์ฅ์ด ์์ด๋ ์กฐ๋ฌธ์ ๊ฒฝ๋ก ์์ฒด๋ฅผ ๊ธ์งํ๋ค. ยท ๐ด ์ด ๋ค ๊ทธ ๊ตฌ๊ฐ์ ๋์ฝ์ด๋ผ. ์ฑ๊ณต ๋ฉ์์ง๋ ใ์ค ์๊ฐ ๋ง๋คใ๋ง ์ฆ๋ช ํ๋ค. - ๐ ๐ด๐ด
R1-7-10์ค๋ ์ท์scripts/snapshot_util.py๋ง ๊ฒฝ์ ํ๋ค (2026-08-28 O110 ์ ์ค) ยท_archive/์ค๋ ์ท์ ์ ์ผํ ๋๋๋ฆฌ๊ธฐ ์๋จ์ธ๋ฐ(R1-7-6) ์ข ์ ๊ตฌํ๋ค์ด ์กฐ์ฉํ ๋ฎ์๋ค โ O108 ์ด00_INDEX๋ฅผ 3ํ republish ํด ์ต์ด ์ํ๊ฐ ์ด๋ฏธ ์๋ค. ยท ๋ผ๋ฒจ์ ์ธ์ =--labelโ ํ๊ฒฝ๋ณ์SESSION_LABELโUNLABELED. ๐ดdefault='O1NN'์ฒ๋ผ ์ง๋ ์ธ์ ๋ผ๋ฒจ์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๋์ง ๋ง๋ผ(๊ทธ๋ฌ๋ฉด ์ค๋ ์ท์ ใ๋๊ฐใ๊ฐ ๊ฑฐ์ง์ด ๋๋ค). ยท ๋ฎ์ง ์๋๋ค = ๋ฐ์ดํธ ๋์ผ์ด๋ฉด ์ฌ์ฌ์ฉ ยท ๋ค๋ฅด๋ฉด.2ยท.3ยท ์์ง ์ ์์ธ๋ก ์ค๋จ. ยท ํธ์ถ =snapshot(path, op, label=โฆ, archive=ARCHIVE)ยท ๋ฉ๋ชจ๋ฆฌ ๋ด์ฉ์snapshot_content(name, op, data, โฆ). ยท ๐ดarchive=๋ฅผ ๋๊ฒจ๋ผ โ ์ ๋๊ธฐ๋ฉด ํ ์คํธ๊ฐ ํจ์นํ ๊ฒฝ๋ก๋ฅผ ๋ฒ์ด๋ ์ค_archive/๋ฅผ ๋๋ฝํ๋ค. ยท ๐ข ์งํ =scripts/test_snapshot_util.py์ถ7ยท์ถ8(๋๊ตฌ๋ณ ํฌํผ ๊ฒฝ์ ยท์ฐํ 0ยท๊ธฐ๋ณธ๊ฐ ํ๋์ฝ๋ฉ 0).
Step 0.8: ๋
ํด ๊ธฐ๋ก ์๋ฌด (์ง์นจ R1-3-7 ยท R1-3-7-a ยท ๐ R1-3-7-b ยท R1-3-7-c)
read ๊ฐ ๋ณธ๋ฌธ์ ๋๋ ค์ฃผ์ง ์๋ ์คํจ๋ ์กฐ์ฉํ๋ค(์๋ฌ๊ฐ ์๋๋ค). ํํ =
ใ edited out to manage context size ใก Output too large ใข ๋ฏธ๋ฆฌ๋ณด๊ธฐยท๊ผฌ๋ฆฌ๋ง.
- ํธ์ถํ ์ฌ์ค์ ํ๋ณดํ ์ฌ์ค์ด ์๋๋ค. ๋งค ํธ์ถ ์งํ ๋ณธ๋ฌธ ๋์ฐฉ์ ํ์ธํ๋ค.
- ๋ฏธ๋ฐํ์ด๋ฉด
limit์ 60~100์ค๋ก ์ค์ฌ ์ฌํธ์ถํ๋ค(R0-6 ใ๊ฐ์ ๋ช ๋ น ์ฌ์๋ ๊ธ์งใ์ ๋ค๋ฅด๋ค). - ๋ฏธ๋ฐํ ํ์ผยท
offset์ขํ์ ์ด ๊ฑด์๋ฅผ ์๋ต๊ณผ ์ธ์์ธ๊ณ์ ์ซ์๋ก ์ ๋๋ค. ํ์ ์ = ์ฌํธ์ถ ๊ฑด์ โฅ ๋ฏธ๋ฐํ ๊ฑด์. ์ถฉ์กฑํ์ง ๋ชปํ๋ฉด ใ์ ๋ ํ๋ณดใ๋ผ๊ณ ์ฐ์ง ๋ง๊ณ **ใ๋์ฐฉ ์ค์ฆ ยท ๋ณต๊ตฌ ์ ์ฐจ ๋ฏธ์คํใ**์ผ๋ก ๊ตฌ๋ถํด ์ ๋๋ค. - ๋ณต๊ตฌ ์คํจ ์ ๊ทธ ํ์ผ์ ๋ฏธ๋ ์ผ๋ก ๋ช ์ํ๊ณ ๊ทธ ํ์ผ ์๊ด ์์นยทํ์ ์ ์ธ์ฉํ์ง ์๋๋ค.
- ๐ด ๋์ฒด ๊ทผ๊ฑฐ ๊ธ์ง: ๋ํ ๋ก๊ทธยท์ด์ ์๋ตยท๊ธฐ์ต์ ์ ๋ณธ์ ๋์ฒด๋ฌผ์ด ์๋๋ค. ์ฌ์ธก์ ํ๊ฑฐ๋ ํ๋จ์ ๋ณด๋ฅํ๋ค.
๐ ๐ด๐ด [O85-C ์ฌ์ฉ์ ๊ฒฐ์ ] ์ฌํ ์ญ์ฐ์ ํฌ๊ธฐํ๊ณ ๊ทธ ์๋ฆฌ์์ ๊ธฐ๋กํ๋ค โ ๋ฏธ๋ฐํ ํธ์ถ์
์ปจํ
์คํธ์์ ์ฌ๋ผ์ง๋ฏ๋ก ๋์ค์ ์ธ๋ ค ํ๋ฉด ์ฆ๊ฑฐ๊ฐ ์๋ค(๊ฒฝ์ = 91_์ฌ๊ณ ์ฌ๋ก์ง.md ยงC02ยทยงC03).
- ๐
R1-3-7-b(์ ๊ฑด ์ ์ฉ) โ ๋งค ๋ ํด ์งํ 1~2์ค์ ๋จ๊ธด๋ค: ใ ํ์ผ ๊ฒฝ๋ก ใกoffset/limitใข ๋์ฐฉ ์ฌ๋ถ ใฃ ๊ทธ ๊ตฌ๊ฐ์๋ง ์๋ ๊ณ ์ ํ ํฐ 2~3๊ฐ. ๐ด ๊ณ ์ ํ ํฐ์ด ํ์ ์ ํต์ฌ์ด๋ค โ ใ๋์ฐฉ Oใ๋ ์๊ธฐ์ ๊ณ ์ด๊ณ , ๊ณ ์ ํ ํฐ์grep์ผ๋ก ๋์กฐ ๊ฐ๋ฅํ๋ค. ๐ด ์์ ๋์ ๋ชฐ์ ์ฐ์ง ๋ง๋ผ โ ๊ทธ ์์ ์ ์ด๋ฏธ ํธ๋ฆฌ๋ฐ๋๋ค. - ๐
R1-3-7-c(์ธ์ฉ ๋์ ํ์ ) โ ํ์ ๊ทผ๊ฑฐ๋ฅผ ํ์ ๋ณด๋ค ๋จผ์ ํ์ผ์ ์ด๋ค. ์์๋ฅผ ๋ค์ง๋๋ค:readโ ๊ทผ๊ฑฐ๋ฅผ ํ์ผ์ ๊ธฐ๋ก โ ํ์ . ๊ธฐ๋ก์ ์๋ฌธ ๊ตฌ์ ๊ทธ๋๋ก + ์ขํ(์์ฝ ๊ธ์ง). ๐ด ๊ทผ๊ฑฐ๋ฅผ ๋ชป ์ผ์ผ๋ฉด ํ์ ํ์ง ์๋๋ค. ๐ ๐ด [O112 ์ค์ฌ๊ณ ] ์ด ์กฐ๋ฌธ์ ์ด๊ธฐ๋ฉด ใ์ฃผ๋ณ 3์คใ์ ๋ชป ๋ณธ๋ค โ stale ์์น๋ฅผ ์ง์ ๋๋ฐ ๋ฐ๋ก ์๋์ ๋์ฒด ์ค์ธก๊ณผ ๊ทธ ๋ฌธ๊ตฌ๋ฅผ ์ ํ์ฌ๋ก ์ธ์ฉํ ๋ฌธ์ฅ์ด ์์๋ค(ยงC24 ๊ณ์ด) โ ์ญ์ ๋ณด๋ค ์ทจ์์ ์ด ์์ ํ๋ค.
Step 1: ์์ ์ง์นจ ๋ก๋
00_guides/00_์์
์ง์นจ_์ธ์
์ด์๊ท์น.md ๋ฅผ ์ ๋ ์ฝ๋๋ค. ์ค๊ฐ์ ๋๊ธฐ๋ฉด ์ด์ด์ ๋๊น์ง ์ฝ๋๋ค(Step 0.5).
๐ ํฌ๊ธฐ๋ฅผ ์ด ๋ฌธ์์ ์ ์ง ์๋๋ค โ ์ ์ผ๋ฉด stale ์ด ๋๋ค(O85-C ๊ธฐ์ฌ ใ306์ค/31,657Bใ๊ฐ ๊ทธ๋ ๊ฒ ํ๋ ธ๋ค).
๐ด ์ฌ๋ ค๋ฉด python3 scripts/doc_census.py ๋ฅผ ์ด๋ค(์กฐ๊ฐ ์ยท๋ฐ์ดํธยท์ฌ์ ๋ฅผ ์ ๊ฑด ์ค์ธกํ๋ค).
๐ข [2026-08-28 O106] ์ด ์ง์นจ์์ ใ๊ฒฝ์ ์์ฌใ๊ฐ 20_issue/91_์ฌ๊ณ ์ฌ๋ก์ง.md ๋ก ๋ถ๋ฆฌ๋๋ค
(๋ถ๋ณ์ 3์ข
blocking ํต๊ณผ = ์กฐ๋ฌธ ID ์งํฉ ยท ์ ๋ชฉ ์งํฉ ยท R2-8-1 ํ ํฐ ยท ๐ด ๊ฑด์๋ฅผ ์ ์ง ๋ง๋ผ).
โ ์กฐ๋ฌธยทํ์ ์์ ์ ๋ถ ์ง์นจ์ ๋จ์ ์๊ณ ์ฌ๋ผ์ง ๊ฒ์ ใ์ ์ด ๊ท์น์ด ์๊ฒผ๋๊ฐใ ์์ฌ๋ฟ์ด๋ค.
๐ด ์ฌ๋ก์ง์ ์ธ์
์์์ ์ฝ์ง ์๋๋ค. ์ฝ๋ ์์ = ์ฐ๊ธฐ ์ฌ๊ณ ๋ฅผ ์กฐ์ฌํ ๋ ยท
์กฐ๋ฌธ์ ๊ฐ์ ํ๋ ค ํ ๋ ยท ใ์ด ๊ท์น์ ์ ์ง์ผ์ผ ํ๋ใ๊ฐ ์์ฌ๋ ๋. ๋๊ตฌ = scripts/split_narrative.py.
๐ด [O85] R1-7 ํ์ผ ์ฐ๊ธฐ ์์ ๊ท์ฝ์ 00_guides/02_ํ์ผ์ฐ๊ธฐ_์์ ๊ท์ฝ.md ๋ก ๋ถ๋ฆฌ๋๋ค.
์กฐ๋ฌธ ๋ฒํธ R1-7-N ์ ๊ทธ๋๋ก๋ค. ํ์ผ์ ์ฐ๊ธฐ ์ ยท์ฐ๊ธฐ ์ฌ๊ณ ๋ฅผ ์กฐ์ฌํ ๋ ๊ทธ ๋ฌธ์๋ฅผ ์ฝ๋๋ค
(์ธ์
์์์ ์ฝ์ ํ์๋ ์๋ค โ Step 0.7 ์ด ์กฐ๋ฌธ ์ ๊ฑด์ ์์ฝํ๊ณ ์ง์นจ์ ํฌ์ธํฐ๊ฐ ๋จ์ ์๋ค).
๐ด๐ด [O112-B] ์ด ์๋ฆฌ์ ใ9๊ฐ ์กฐ๋ฌธใ ๊ธฐ์ฌ๊ฐ ๋ก์ ์์๊ณ , ์ค์ ๋ก R1-7-10 ์ด ์ง์นจ ๋ชฉ๋ก์์ ๋น ์ ธ ์์๋ค
(๊ฒฝ์ = 91_์ฌ๊ณ ์ฌ๋ก์ง.md ยงC26). โ ๐ด ๊ฐ์๋ฅผ ์ ์ง ๋ง๋ผ. ํ์ ์์ ์งํฉ ๋์กฐ๋ค =
clause_order_gate ์ R1-7 ๊ณ์ด โ Step 0.7 ์ R1-7-N ๋ฑ์ฅ ์งํฉ(๋ถ์ฌ 0 ์ด์ด์ผ ํ๋ค).
๐ ์ด ์ง์นจ์ R3 ๋จ๊ณ ์ข
๋ฃ ๊ฒ์ดํธ 9์ข
(9๋ฒ์ ์๋ฌธ ์ถ ใ ~ใง ํฌํจ)์ด ์๋ค.
๐ด R1-7-7(rm -rf)ยทR1-7-8(์ต์ปค)ยทR1-7-9(์
ธ ๊ฒฝ์ )๋ Step 0.7 ์ ์ด๋ฏธ ์์ฝ๋ผ ์๋ค โ
์ฌ๊ธฐ ๋ค์ ์ ์ง ์๋๋ค(O112-B ์ค๋ณต ์ ๊ฑฐ ยท ๋ ๊ณณ์ ์ ์ผ๋ฉด ํ ๊ณณ์ด ๋ก๋๋ค).
๐ด [O83-E] R1-6 ๋ฌธ์ ๋ถํ ๊ท์ฝ์ 00_guides/01_๋ฌธ์๋ถํ _๊ท์ฝ.md ๋ก ๋ถ๋ฆฌ๋๋ค.
๐ [O112] ๊ทธ ๋ฌธ์๋ ์ด์ ํ๋ธ + 01_๋ฌธ์๋ถํ _๊ท์ฝ_์กฐ๊ฐ/ ์ด๋ค โ ๊ณ ์น ๋๋ ์กฐ๊ฐ์ edit โ --republish.
์กฐ๋ฌธ ๋ฒํธ R1-6-N ์ ๊ทธ๋๋ก๋ค. ๋ถํ ยท์ฌ๊ท ํยท๋กค์ค๋ฒยท์ํด ์์
์ ํ ๋๋ง ๊ทธ ๋ฌธ์๋ฅผ ์ฝ๋๋ค.
๐ด ๋ฒํธ ๋ฒ์๋ฅผ ์ ์ง ์๋๋ค(O112-B ์ค์ธก: ์ด ์๋ฆฌ ๊ธฐ์ฌ ~R1-6-18 โ ์ค์ R1-6-25) โ
ํ์ฌ ๊ฐ์ python3 scripts/clause_order_gate.py ๊ฐ ๊ณ์ด๋ณ๋ก ์ถ๋ ฅํ๋ค.
๐ ๐ด๐ด [O112 ์ ์ค R1-6-25] ๋ฌธ์๋ฅผ ์ชผ๊ฐ๋ฉด ใ๊ทธ ๋ฌธ์๋ฅผ ์ฝ๋ ๋๊ตฌใ์ ๋ถ๋ชจ๊ฐ ์กฐ์ฉํ ๊นจ์ง๋ค
(์ค์ธก 2๊ฑด ยท ๊ฒฝ์ = 91 ยงC26) โ ๐ด ใ๋ถ๋ชจ 4๊ณณ ํธ์
ใ ์ฒดํฌ๋ฆฌ์คํธ๋ฅผ ์ดํํ ๋ค์๋ ๋จ์๋ค.
โ ๐ข ์ด์ doc_census.py ๊ฐ ๊ธฐ๊ณ๋ก ๋์กฐํ๋ค(split_denominator_check ยท ์ถ๋ ฅ์ ใ๋ถํ ๋ถ๋ชจ ๋์กฐใ๊ฐ
์๋ฐ 0 ์ธ์ง ๋ณด๋ผ ยท ์ถ์ด ๋๋ฉด ๊ทธ ํจ์์ ์ถ๊ฐ).
Step 2: ์ฐฉ์ ๋ธ๋ฆฌํ ์์ฑ โ 00_BRIEF.md ๋ง ์ฝ๋๋ค (๐ด ์ ๋ ๋
ํด ํ์ง)
๐ด๐ด [2026-08-28 O106 ์ ๋ฉด ๊ฐํธ ยท ์ฌ์ฉ์ ๊ฒฐ์ ] ์ข ์ ใ5๋ฌธ์ ์ ๋ ๋ ํดใ๋ ํ์ง๋๋ค.
์ ํ์งํ๋ โ ๊ทธ ๊ท์ฝ์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ดํ ๋ถ๊ฐ๋ฅํ๊ณ (ใํ์ใ๋ง ์์ญ๋ง ์ ยท ๊ฐ์
doc_census.py๋ก ์ฌ๋ผ), ์งํค๋ ค๋ฉด ์ปจํ ์คํธ๊ฐ ํฐ์ง๊ณ ์ ํฐ์ง๋ ค๋ฉด ์ฝ์ ์ฒํ๊ฒ ๋๋ค. ๐ ๊ฒฝ์ยท์ค์ธก =20_issue/91_์ฌ๊ณ ์ฌ๋ก์ง.mdยงC13(R1-1์๊ด ยทO111์ด๊ด).
์ ์ฐจ๋ ๋ ์ค์ด๋ค.
python3 scripts/session_brief.py --write # ์ ๋ณธ์์ ์ถ์ถํด 00_BRIEF.md ๋ฅผ ์์ฑ
๊ทธ ๋ค์ 20_issue/00_BRIEF.md ๋ฅผ ์ฝ๋๋ค(1ํ read). ์ธ์
์์ ๋
ํด๋ ์ฌ๊ธฐ์ ๋๋๋ค.
๐ข ๋ธ๋ฆฌํ์ด ใ๋ ํด์ ์ฐ์ถ๋ฌผใ์์ ใ์คํฌ๋ฆฝํธ์ ์ฐ์ถ๋ฌผใ๋ก ๋ฐ๋์๋ค. โ ์ฝ์ง ์๊ณ ๋ ์ ํํ๊ณ , ใ์ฝ์ ์ฒใ์ด ์๋ฆฌ์ ์ผ๋ก ๋ถ๊ฐ๋ฅํด์ง๋ค(์์น์ ์ถ์ฒ๊ฐ ํ์ผ์ด๊ณ ์ฌํ ๊ฐ๋ฅํ๋ค).
00_BRIEF.md ์ ์ค๋ฆฌ๋ ๊ฒ โ ์ ๋ถ ์ ๋ณธ์์ ๊ธฐ๊ณ๋ก ์ถ์ถํ ๊ฒ์ด๊ณ ์ฐฝ์์ด 0 ์ด๋ค:
- ์ด๋ฆฐ ์์
(์ฐฉ์ํ) โ
99_NEXT์ฐฉ์ ์์์์ ใ์ใ ์ ์ด ์ทจ์์ ์๋ ํ. - ์ง์ ์ธ์
์ธ์์ธ๊ณ โ ใ์ฌ๊ธฐ์ ์์ํ๋คใ๊ฐ ์ทจ์์ ์๋๊ณ ๋ ์ง๊ฐ ์ต์ ์ธ ์ + ๊ทธ ์ ์
โฃํญ๋ชฉ. ๐ด99_NEXT๋ ์ด ์ ์ด ์ ์ธต๋๋ค(O106 ์ค์ธก 8๊ฒน ยท 5๊ฐ๋ ์ด๋ฏธ ์ทจ์์ ). ์ถ์ถ๊ธฐ๊ฐ ํํ๋ง ๊ณ ๋ฅธ๋ค. - ๋ฌธ์50 ์ด๋ฆฐ ์ โ ์ ์ ๋ชฉ ์ ๋๊ฐ ๐ด/๐ /๐ก ์ธ ๊ฒ(๐ข/โ ์ ์ธ).
- ์ต๊ทผ ์ธ์ โ ์์ฅ ยง1 ์ํ ๋์๋ณด๋ ํ.
- ๋ฌธ์๊ตฐ ๊ท๋ชจยท๋ ํด ์์ฐ ยท ๊ฒ์ดํธ ์ํ ยท ์กฐ๊ฐ ์ stale ๊ฑด์.
๐ด๐ด 00_BRIEF.md ๋ ์์ธ์ด๊ณ ์ ๋ณธ์ด ์๋๋ค.
๊ฐ ํญ๋ชฉ์ ์ ๋ชฉ + ์ํ + ์ขํ(ํ์ผ:ํ) ๋ง ์ฃ๋๋ค. ํ์ ยท์์น๋ ์ฃ์ง ์๋๋ค.
โ ์์น๋ฅผ ์ธ์ฉํ๋ ค๋ฉด ๊ทธ ์ขํ๋ฅผ read ํด์ผ ํ๋ค(R1-3-7 ใ๋์ฒด ๊ทผ๊ฑฐ ๊ธ์งใ).
๐ข ๋์ ๋ฌด์์ ์ฝ์ด์ผ ํ๋์ง๊ฐ ๋ธ๋ฆฌํ์ ๋ค ์๋ค โ ํ์ํ ์กฐ๊ฐ๋ง ๊ณจ๋ผ ์ฝ์ผ๋ฉด ๋๋ค.
๐ด 00_BRIEF.md ๋ฅผ ์์ผ๋ก ๊ณ ์น์ง ๋ง๋ผ โ ๋ค์ ์์ฑ์์ ์กฐ์ฉํ ์ฌ๋ผ์ง๋ค(ํ๋ธ์ ๊ฐ์ ๊ณ์ฝ).
๋ด์ฉ์ ๋ฐ๊พธ๋ ค๋ฉด ์ ๋ณธ(์์ฅ ์กฐ๊ฐ ยท 99_NEXT ์กฐ๊ฐ ยท ๋ฌธ์50 ์กฐ๊ฐ)์ ๊ณ ์น๊ณ ์ฌ์์ฑํ๋ค.
ํ์ํ ๋๋ง ์ฝ๋ ๋ฌธ์(์ธ์ ์์์๋ ์ฝ์ง ์๋๋ค):
| ๋ฌธ์ | ์ฝ๋ ์์ |
|---|---|
20_issue/00_INDEX_์ด์์์ฅ.md |
์ด์ ID ๋ฅผ ์ฐพ์ ๋ ยท ยง0 ๋ฌธ์๋งตยท๋ฌธ์ ์ ํ ๋ฑ์ฌํ(doc_type_gate ์ ๋ณธ)๊ฐ ํ์ํ ๋ |
20_issue/50_dbt_ํ์ดํ๋ผ์ธ_๋ฏธ๊ฒฐ์กฐ์น.md |
์์ ์ด dbt ์ผ ๋๋ง(์ข ์ ใํ์ ์์ ์ ๋ ใ์์ ๊ฐ๋ฑ) ยท ๋ธ๋ฆฌํ์ด ์ค ์ขํ๋ก ์กฐ๊ฐ ์ ํ |
20_issue/10_์ง๋จยท30_์ค๊ณยท02_์ํ์์ธยท20_ํ์
ํ์ธยท03_์ด์์์ธ |
๊ทธ ์ฃผ์ ๋ฅผ ๋ค๋ฃฐ ๋ ยท ํ๋ธ ๋ชฉ์ฐจ๋ก ์กฐ๊ฐ ์ ํ |
99_NEXT_SESSION.md ์กฐ๊ฐ |
๋ธ๋ฆฌํ์ด ์ค ์ขํ๋ก ๊ทธ ์กฐ๊ฐ๋ง ยท ๐ด -013 ยง7 ใ์ด์ ํ๊ฒฝ ์ง๋ขฐใ๋ ํ๊ฒฝ ์ฌ๊ณ ๋ฅผ ๋ง๋๋ฉด ๋จผ์ ์ฝ์ด๋ผ |
20_issue/91_์ฌ๊ณ ์ฌ๋ก์ง.md |
์ฐ๊ธฐ ์ฌ๊ณ ์กฐ์ฌ ยท ์กฐ๋ฌธ ๊ฐ์ ยท ๊ท์น์ ๊ทผ๊ฑฐ๊ฐ ์์ฌ๋ ๋ |
20_issue/92_์ค์ธกํ์_ํ์์์
.md |
๋ฐ์ดํฐ๊ฐ ์๋ ๊ณ์ ์์ ์ธ์
์ ์์ํ ๋(์์ฑ = gen_measure_backlog.py --write) |
20_issue/01_์ธ์
์ด๋ ฅ.md |
๐ด ์ ๋ ๋
ํด ๋์์ด ์๋๋ค(R1-3-6) ยท ์๋ ๋ฐฉ๋ฒ์ผ๋ก ๊ทธ ์ธ์
ํญ๋ชฉ๋ง |
00_guides/01_๋ฌธ์๋ถํ _๊ท์ฝ.md |
๋ถํ ยท์ฌ๊ท ํยท๋กค์ค๋ฒยท์ํดยทํด๋์ด์ ์์
์ ํ ๋ ยท ๐ R1-6-22(์ธ์ฉ ์ขํ ์ค์ฌ = doc_coord_gate) ยท ๐๐ด๐ด R1-6-23(์ ์ง ์ฐ์ฐ์ --expect ์๋ฌด) ยท ๐ R1-6-24(ใ๋ซํใ์ ์ ๋ชฉ ํ์ ์ผ ๋ฟ) |
00_guides/02_ํ์ผ์ฐ๊ธฐ_์์ ๊ท์ฝ.md |
ํ์ผ์ ์ฐ๊ธฐ ์ ยท ์ฐ๊ธฐ ์ฌ๊ณ ์กฐ์ฌ ยท ๐ R1-7-10(์ค๋
์ท์ snapshot_util ๊ฒฝ์ ) |
01_์ธ์
์ด๋ ฅ ํน์ ํญ๋ชฉ ์ฐพ๊ธฐ โ ๐ด ํด๋๋ฅผ ๋์์ผ๋ก grep ํ๋ค(ํ๋ธ์๋ ๋ณธ๋ฌธ์ด ์๋ค):
grep -n "O59-G" 20_issue/01_์ธ์
์ด๋ ฅ_์กฐ๊ฐ/*.md
ยท ํญ๋ชฉ ํ์ = > #### ๐ข [YYYY-MM-DD O##] โฆ โ ๐ด ์ ๋ชฉ๊ณผ [ ์ฌ์ด์ ์ํ ์ด๋ชจ์ง๊ฐ ๋ผ์ด ์์ด
grep '^> #### \[' ๋ 0๊ฑด์ ๋ธ๋ค(BusyBox BRE). ์ ์ ์ถ์ถ์ ^> #### .*\[20\d\d-\d\d-\d\d O ๋ก ํ๋ค.
ยท ํญ๋ชฉ ์ถ๊ฐ๋ ๋ฐ๋์ ์๋๋ก ํ๋ค(์กฐ๊ฐ์ ์ง์ ์ด์ง ์๋๋ค ยท R1-6-15):
python3 scripts/split_doc.py 20_issue/01_์ธ์
์ด๋ ฅ.md --rollover --entry-file <์ถ๊ฐํ .md>
ยท โ ๏ธ ๊ทธ ํญ๋ชฉ์ ํ์ ยท์์น๋ฅผ ๊ทผ๊ฑฐ๋ก ์ฐ๋ ค๋ฉด ํญ๋ชฉ ์ ์ฒด๋ฅผ ์ฝ๋๋ค(๋ถ๋ถ ์ธ์ฉ ๊ธ์ง ยท P170ยทP154 ๊ฒฝ๋ก).
๐ด ์กฐ๊ฐ ์ยทํฌ๊ธฐ๋ฅผ ์ด ๋ฌธ์๋ ๋ค๋ฅธ ๋ฌธ์์์ ์ฝ์ง ๋ง๋ผ โ doc_census.py ๋ก ์ฌ๋ผ.
O106 ์ค์ธก = ์์ผ๋ก ์ ํ ์กฐ๊ฐ ์๊ฐ 3๊ณณ์์ 17๊ฑด stale ์ด์๊ณ ์ธ ๊ณณ์ด ์๋ก ๋ค๋ฅธ ๊ฐ์ด์๋ค.
O83-HยทO90 ์ด ๋ ๋ฒ ใ๊ต์ + ์ฌ๋ผ๊ณ ๊ฒฝ๊ณ ใํ๋๋ฐ ๊ฒฝ๊ณ ๋ฅผ ์ ์ ๊ทธ ํ๊ฐ ๋ค์ stale ์ด ๋๋ค
โ ์ด์ ์ซ์๋ฅผ ์ ์ ์๋ฆฌ๋ฅผ ์์ด๋ค(fix_stale_counts.py). doc_census.py ๊ฐ 0๊ฑด์ ๊ฐ์ ํ๋ค.
์ง์๊ฐ 20_issue/ ์ ์ถฉ๋ํ๋ฉด 20_issue/ ๋ฅผ ์ฐ์ ํ๊ฑฐ๋ ์ฌ์ฉ์์๊ฒ ๋ฌธ์ํ๋ค.
Step 3: ๋ธ๋ฆฌํ ์ถ๋ ฅ
๐ [2026-08-28 O106] ๊ฒ์ดํธ๋ Step 2 ์ session_brief.py ๊ฐ ์ด๋ฏธ ๋๋ ธ๋ค โ ๊ทธ ๊ฒฐ๊ณผ๊ฐ
00_BRIEF.md ยง6 ใ๊ฒ์ดํธ ์ํใ์ ์ค๋ ค ์๋ค.
๐ [2026-08-28 O110] ๊ฒ์ดํธ๋ 6์ข
์ด๋ค(O109 ๊ฐ doc_coord_gate ๋ฅผ ์ถ๊ฐํ๋ค):
doc_census ยท doc_type_gate ยท clause_order_gate ยท index_row_gate ยท
doc_heading_gate ยท doc_coord_gate(์ธ์ฉ ์ขํ ์ค์ฌ ยท R1-6-22). โ ๋ฐ๋ก ๋๋ฆฌ์ง ์๋๋ค.
๐ด ๊ฒ์ดํธ ๋ชฉ๋ก์ ์ฝ๋๊ฐ ์ ๋ณธ์ด๋ค = scripts/session_brief.py GATES.
์ด ๋ฌธ์์ ์ ํ ์๊ฐ ๊ทธ๊ฒ๊ณผ ๋ค๋ฅด๋ฉด ์ฝ๋๋ฅผ ๋ฏฟ๊ณ ์ด ์ค์ ๊ณ ์ณ๋ผ(R3-9 ใฆ).
โ ๏ธ ๋ธ๋ฆฌํ์ --no-gates ๋ก ๋ง๋ค์๋ค๋ฉด ๊ทธ๋๋ง ์์ผ๋ก ๋๋ฆฐ๋ค.
๐ด FAIL ์ด๋ฉด ๋ธ๋ฆฌํ์ ๊ทธ๋๋ก ์ ๊ณ ์ฌ์ฉ์ ์ง์๋ฅผ ๊ธฐ๋ค๋ฆฐ๋ค โ ์์๋ก ์ฌ๊ท ํยท์ํด๋ฅผ ๋๋ฆฌ์ง ์๋๋ค
(ํ๊ดด ๊ฐ๋ฅ์ฑ์ด ์๋ ์ ๋ฆฌ ์์
์ ์น์ธ ๋์์ด๋ค). ๊ฒฝ๊ณ (๐ )๋ ใ๋ค์์ ๊นจ์ง๋คใ์ด๋ฏ๋ก ๋ณด๊ณ ๋ง ํ๋ค.
๋จ๋ตํ์ผ๋ก ์๋๋ง ์ถ๋ ฅํ๋ค. ๋ชจ๋ ์์น๋ 00_BRIEF.md ์์ ๊ทธ๋๋ก ์ฎ๊ธด๋ค(์ธ์ง ๋ง๋ผ ยท ์ฐฝ์ ๊ธ์ง).
์ง์นจ ๋ก๋: OK
๊ฒ์ดํธ: ์ ํ <ํ์ > ยท ์กฐ๋ฌธ์์ <ํ์ > ยท ํํค <ํ์ > ยท ์ ๋ชฉ <ํ์ > ยท ์ขํ <ํ์ > ยท ์กฐ๊ฐ์ stale <n>
์ด๋ฆฐ ์์
: <์ฐฉ์ํ ์ด๋ฆฐ ๊ฑด์> โ <์๋ฒ 3๊ฐ ์ด๋ด>
์ง์ ์ธ์
์ธ์์ธ๊ณ: <ํํ ยง์ ๋ผ๋ฒจ> โ <1์ค>
๋ฌธ์50 ์ด๋ฆฐ ์ : <๊ฑด์>
read ๋ฏธ๋ฐํ: <๊ฑด์> ยท ์ฌํธ์ถ <๊ฑด์> โ 0 ์ด๋ฉด ใ0ใ์ด๋ผ๊ณ ์ ๋๋ค
๋ค์ ํ๋ณด ์์
: <1~3๊ฐ>
๋๊ธฐ ์ค
โ ๏ธ ์กฐ๊ฑด๋ถ STOP โ ๐ [2026-08-18 O85 ์ฌ์ฉ์ ๊ฒฐ์ ์ผ๋ก ์ฐฉ์ํ โฎ ํ์ ยท ์ ๋ณธ = ์ง์นจ R4-4]
- ใ ์ง์๊ฐ ๋๋ด๋์ง ์์ ํด = ๋ธ๋ฆฌํ ์ถ๋ ฅ ํ STOP ยท ์ฌ์ฉ์ ์ง์๋ฅผ ๊ธฐ๋ค๋ฆฐ๋ค.
- ใก ์ง์๊ฐ ๊ฐ์ ํด์ ๋๋ด๋ ๊ฒฝ์ฐ = ๋ธ๋ฆฌํ์ ๋จผ์ ์ถ๋ ฅํ ๋ค ๊ทธ ์ง์๋ฅผ ์ฆ์ ์ํํ๋ค.
๐ด ๋ธ๋ฆฌํ ์๋ต์ ์ฌ์ ํ ๊ธ์ง๋ค โ ์ด ์กฐ๋ฌธ์ ใSTOP ์ ์์ค๋คใ๊ฐ ์๋๋ผ
ใ๋ธ๋ฆฌํ ์์ด ์ฐฉ์ใ์ ใ์ง์๊ฐ ์๋๋ฐ๋ ๋๋ฌป๊ธฐใ๋ฅผ ๋ ๋ค ๋ง๋๋ค.
๐ด ๋ค๋ง ํ๊ดด ๊ฐ๋ฅ ์์
(discard ยท
rmยทALTER WORKSPACE โฆ ABORTยท--rebalanceยทretire_rows๊ฐ์ ๋ค์ค ํ์ผ ์ฌ์์ฑ)์ ์ง์๊ฐ ๋๋ด๋ผ๋ ๋ณ๋ ์น์ธ์ ๋ฐ๋๋ค โ ์ด ์์ธ๊ฐ ใก ๋ณด๋ค ๊ฐํ๋ค. - ๐ด ์ด๋ ๊ฒฝ์ฐ๋ ๋ธ๋ฆฌํ ๋ฏธ์ถ๋ ฅ์ ์๋ฐ์ด๋ค(
A5). ์์ต ๊ฒฐํจ์ผ๋ก ๋ฑ์ฌ๋ผ ์๋ค. ๐ด ์์ธ์ ๊ฒ์ผ๋ฆ์ด ์๋๋ผ ์กฐ๋ฌธ ์ค๊ณ์๋ค(๊ฒฝ์ยท์ค์ธก =91_์ฌ๊ณ ์ฌ๋ก์ง.mdยงC12). - ๐ ๋กค๋ฐฑ ์กฐ๊ฑด(์ฌ์ฉ์ ์ง์): ์ด ์ํ๋ก ์๋ฌยท์ฌ์์ ์ด ๋๋ฉด ใก ๋ฅผ ์ฒ ํํ๊ณ ๋ฌด์กฐ๊ฑด STOP ์ผ๋ก ๋๋๋ฆฐ๋ค. โ ใก ๋ก ์งํํ ์ธ์ ์ ์ด๋ ฅ์ ใใก ์ ์ฉใ๊ณผ ํ์ ์๋ฐ ๊ฑด์๋ฅผ ํจ๊ป ์ ๋๋ค(๋กค๋ฐฑ ํ๋จ ๊ทผ๊ฑฐ).
๐ด Step 2 ๋ฏธ๋ ๊ณผ ๊ฒฐํฉํ๋ฉด ๊ทผ๊ฑฐ ์๋ ์์น์ ์กฐ๋ฌธ ์๋ฐ์ ๋์์ ๋ง๋ ๋ค โ ๋ธ๋ฆฌํ์ Step 2 ์ ์ฐ์ถ๋ฌผ์ด๋ค.
์ธ์ ์ค ์์ ์ค์
-
๐ ๐ด๐ด [2026-08-28 O111ยทO111-B ์ ์ค ยท O112 ์ถ์ฝ ยท ํ์ ์ผ๋ฐํ 3์กฐ] ๊ฒ์ดํธยท๋๊ตฌ ์ถ๋ ฅ์ ์ฝ๋ ๊ท์น. ยท ๐ ๊ฒฝ์ยท์ค์ธก ์ฌ๋ก =
20_issue/91_์ฌ๊ณ ์ฌ๋ก์ง.mdยงC24(R2-8๋ฌด๋ณ๊ฒฝ ์ด๊ด ยทO112ยท ์ค๋ฌผ 4๊ฑด)- ใ ใ0๊ฑดใ์ ใ์๋คใ๊ฐ ์๋ ์ ์๋ค โ ใ๋ด ํ์ ์์ด ๋ชป ๋ณธ๋คใ์ผ ์ ์๋ค. โ 0๊ฑด์ ๋ฐ์ผ๋ฉด ๋ถ๋ชจ์ ํ์ ์์ ๋จผ์ ์์ฌํ๋ผ. ํนํ ใ์ด๋ฏธ ๋ค ํ๋คใ๋ฅ ๋ฉ์์ง๊ฐ ์ํํ๋ค.
- ใก ์ ์ธ ๊ท์น์ ๊ทธ ๊ทผ๊ฑฐ๊ฐ ์ฑ๋ฆฝํ๋ ์ถ์๋ง ์ ์ฉํ๋ค(์ ์ค ์ถ์ ๊ทผ๊ฑฐ๋ฅผ ์ค๋ณต ์ถ์ ์ฐ์ง ๋ง๋ผ).
- ใข ํ์ ๋ฌธ๊ตฌ๊ฐ ์ธ๋ ๊ฒ๊ณผ ์ฌ๋์ด ์ฝ๋ ๋ป์ด ๋ค๋ฅผ ์ ์๋ค.
โ ๐ข ํ์ ์ถ๊ณผ ๊ด์ธก ์ถ์ ๋ถ๋ฆฌํด ๋ ๋ค ์ซ์๋ก ๋ด๋ผ.
๐ด ๋ค ๊ฑด ๋ค ๊ฒ์ดํธ๊ฐ ๐ข ์ธ ์ํ์์ ๋ฌ๋ค โ
R3-9(๊ฒ์ดํธ๊ฐ ๋ณด์ง ์๋ ์ถ)์ ์ค๋ฌผ ์ฌ๋ก๋ค.
-
์ค์ธก ์ค์ฌ: BRONZE ์๋ณธ ์ง์ ์ค์บ, ์๋ฃ ํ์ ์ INFORMATION_SCHEMA ์ค์บ ๊ฒฐ๊ณผ(P33). ๐ ๐ด [O106] ์ด ๊ณ์ ์ด ๋ฌธ์์์ ์ ์ฉ์ด๋ฉด ๋ผ์ด๋ธ ํ์ ์ ๋ณด๋ฅํ๋ค(
R2-8-4-cโ ์์น ์ฐฝ์ ๊ธ์ง). ๋ณด๋ฅ ํญ๋ชฉ์20_issue/92_์ค์ธกํ์_ํ์์์ .md์ ๋ชจ์ธ๋ค(์์ฑ =gen_measure_backlog.py --write). -
๐ ๐ด๐ด [O106] ใ์ใ๋ฅผ ๋ฌธ์์์ ์ฝ์ง ๋ง๊ณ
doc_census.py๋ก ์ฌ๋ผ. ๋์ = ์กฐ๊ฐ ์ ยท ๋ฌธ์ ๋ฐ์ดํธ ยท ์ฌ์ ยท ์ธ์ ์์ ๋ ํด ์์ฐ.python3 scripts/doc_census.py # ์ธ๋ฒคํ ๋ฆฌ + stale ๋์กฐ python3 scripts/doc_census.py --strict # stale 1๊ฑด์ด๋ผ๋ ์์ผ๋ฉด exit 1๐ด ๋ฌธ์์ ์กฐ๊ฐ ์๋ฅผ ์๋ก ์ ์ง ๋ง๋ผ โ ์ ์ผ๋ฉด
doc_census๊ฐ stale ๋ก ์ก๋๋ค(blocking ์ต์ ). ์ค์ธก ๊ทผ๊ฑฐ = O106 ์ฐฉ์ ์์ 3๊ณณ 17๊ฑด stale ยท ์ธ ๊ณณ์ด ์๋ก ๋ค๋ฅธ ๊ฐ์ด์๋ค. ๐ข ์ด๋ฏธ ์ ํ ์๋ ์์น๋fix_stale_counts.py --apply๊ฐ ํฌ์ธํฐ๋ก ๊ต์ฒดํ๋ค. ๐ ๐ด๐ด [O112-B] ์ด ๋๊ตฌ๋ ใ๋ถํ ๋ถ๋ชจ ๋์กฐใ๋ ํจ๊ป ํ์ ํ๋ค โ ๋ฌธ์๋ฅผ ์ชผ๊ฐ ์งํ ๋ฐ๋์ ๋ณด๋ผ. ์ค์ธก = ๋ถํ ํclause_order_gate๊ฐ ์กฐ๋ฌธ 0๊ฐ๋ก โ ,fix_stale_counts๊ฐ ๋ณธ๋ฌธ์ ๊ฑด๋๋ โ ๋ ๋ค ์ฒดํฌ๋ฆฌ์คํธ๋ฅผ ์ดํํ ๋ค์๋ ๋จ์๋ค. ํ์ = ์ถ๋ ฅ์ ใ๋ถํ ๋ถ๋ชจ ๋์กฐ โฆ ์๋ฐ 0๊ฑดใ. -
๐ [O106] ๋ธ๋ฆฌํ์ ์์ผ๋ก ์ฐ์ง ์๋๋ค โ
session_brief.py --write๊ฐ00_BRIEF.md๋ฅผ ์์ฑํ๋ค. ๐ด00_BRIEF.mdยท92_์ค์ธกํ์_ํ์์์ .md๋ ์๋ ์์ฑ๋ฌผ์ด๋ค. ์์ผ๋ก ๊ณ ์น๋ฉด ๋ค์ ์์ฑ์์ ์ฌ๋ผ์ง๋ค (ํ๋ธ์ ๊ฐ์ ๊ณ์ฝ). ๋ด์ฉ์ ๋ฐ๊พธ๋ ค๋ฉด ์ ๋ณธ์ ๊ณ ์น๊ณ ์ฌ์์ฑํ๋ค. -
๋ชจ๋ ํ์ผ(
.md/.sql/.yml/.py๋ฑ)์ Step 0.5 ๊ท์น๋๋กreadํด ๋ถํ ํธ์ถ๋ก ์ ๋ ์ฝ๋๋ค. โ ๏ธ [O106] ใ์ธ์ ์์์ ๋ฌด์์ ์ฝ๋๊ฐใ๋ Step 2 ๊ฐ ์ ํ๋ค โ R1-3 ์ ์ฝ๊ธฐ๋ก ๊ฒฐ์ ํ ํ์ผ์ ์ ์ฉ๋๋ ๊ท์น์ด๊ณ ใ์ ๋ถ ์ฝ์ด๋ผใ๊ฐ ์๋๋ค. ๋์ ํผ๋ํ๋ฉด ๋ค์ ์์ญ๋ง ์๋ฅผ ์ฝ์ผ๋ ค ํ๊ฒ ๋๋ค. -
๋ฌธ์ยท์ฝ๋ ์์ฑ ์ Step 0.6 ๊ท์น๋๋ก ํ ์ค 2000์๋ฅผ ๋๊ธฐ์ง ์๋๋ค. ์ฐ๊ธฐ ์งํ
python3 scripts/line_len.py <๊ฒฝ๋ก๋ค>๋ก ๊ฒ์ฆํ๋ค(awk ๊ธ์ง โ ๋ฐ์ดํธ ์คํ). -
๊ธฐ์กด ํ์ผ ์์ ์ Step 0.7 ๊ท์น๋๋ก
edit๋ถ๋ถ ์นํ๋ง ์ด๋ค. ์ ์ฒด ์ฌ์์ฑ ๊ธ์ง. ๐ด๐ด **R1-7-9๋ O106ยทO109ยทO112 ๊ฐ ๋ค์ ์ด๊ฒผ๋ค โpython3 -cยทquoted heredoc ๋ ๋ค ์ ธ ๊ฒฝ์ ๋ค. โ ๐ด ๋ณธ๋ฌธ์ ๋ฐฑํฑยท$ยท!๊ฐ ์์ผ๋ฉดedit/writeํด๋ก ์ด๋ค(๊ฒฝ์ =91ยงC16ยทยงC24 ๊ณ์ด). -
์์ฅ ํ๋ฅผ ๊ฑด๋๋ ธ์ผ๋ฉด
python3 scripts/index_row_gate.py๋ก ํ ์ ์คยท์ค๋ณต 0 ์ ํ์ธํ๋ค. -
๐ ๋ฌธ์ ์ ํยท์ฉ๋ ๋ถ๋ณ์ ๋ฐ ์ ๋๋ ์ดํฐ ์ฒด๊ณ(์ง์นจ
R1-6-14~R1-6-18ยท ์ ๋ณธ =00_guides/01_๋ฌธ์๋ถํ _๊ท์ฝ.md): ยทpython3 scripts/doc_type_gate.pyโ ์ ํ ๋ฏธ์ ์ธ 0 ยท ์ํ ์ด๊ณผ 0 ยท ์ฌ์ ๋ถ์กฑ 0 ์ ํ์ธํ๋ค. ์ ํ ์ ๋ณธ์ **์์ฅ ยง0 ใ๋ฌธ์ ์ ํ ๋ฑ์ฌํใ**๋ค(๋ฌธ์ ์๋doc_census.py๋ก ์ฌ๋ผ). ยท ๐ด๐ด ํ๋ธ(00_INDEX_์ด์์์ฅ.md๋ฑ ๋ถํ ๋ ๋ฌธ์์ ์ ํ์ผ)์ ๋ด์ฉ์ ์ฐ์ง ๋ง๋ผ. ํ๋ธ๋ ์๋ ์์ฑ๋ฌผ์ด๊ณ--republishยท--rebalanceยท--rollover๊ฐ ํต์งธ๋ก ๋ค์ ์ด๋ค โ ํ๋ธ์ ์์ผ๋ก ์ ์ ๋ฌธ์ฅ์ ๊ฒฝ๊ณ ์์ด ์ฌ๋ผ์ง๋ค(์กฐ์ฉํ ์์ค ยท ์ด ์ํฌ์คํ์ด์ค๊ฐ 4๋ฒ ๋นํ ์ ํ). ๋ด์ฉ์ ์กฐ๊ฐ(-001โฆ)์ ์ด๋ค.โฃ [๋ฌธ์ ์ ๋๋ ์ดํฐ ๋๊ตฌ ์ผ๋ํ]
- ํ๋ธ ์ฌ๊ตฌ์ฑ ์ ๋๋ ์ดํฐ (
scripts/split_doc.py --republish):- ์กฐ๊ฐ ํ์ผ(
_์กฐ๊ฐ/) ํธ์ง ํ ํ๋ธ ํ์ผ์ ์ฌ์์ฑํ๋ค. - ๐ด
--expect TOKENํ์(R1-6-23): ๋ฐฉ๊ธ ๋ฃ์ ํต์ฌ ๋ณ๊ฒฝ ํ ํฐ์ด ์กฐ๊ฐ๊ณผ ํ๋ธ์ ์ค์ ๋ก ์กด์ฌํ๋์ง ๊ธฐ๊ณ ๊ฒ์ฆ(๋๋ฝ ์ ์คํจ). - ์์:
python3 scripts/split_doc.py 20_issue/30_์ค๊ณ_์์ฌ๊ฒฐ์ .md --republish --expect "DEC-49"
- ์กฐ๊ฐ ํ์ผ(
- Appendํ ๋ฌธ์ ๋กค์ค๋ฒ ์ ๋๋ ์ดํฐ (
scripts/split_doc.py --rollover):01_์ธ์ ์ด๋ ฅ.md,90_ํด์์๋ฃ_๋ก๊ทธ.md๋ฑ ์ถ๊ฐํ ๋ฌธ์์ ์กฐ๊ฐ ์ํ(300์ค/40KB)์ ์ค์ํ๋ฉฐ ์ ํญ๋ชฉ์ ์๋ ๋ฐฐ๋ถ ๋ฐ ํ๋ธ ๊ฐฑ์ .- ์์:
python3 scripts/split_doc.py 20_issue/01_์ธ์ ์ด๋ ฅ.md --rollover --entry-file tmp/_o135_entry.md
- ์กฐ๊ฐ ์ฌ๊ท ํ ์ ๋๋ ์ดํฐ (
scripts/split_doc.py --rebalance):- ์กฐ๊ฐ์ด 300์ค/40KB ์ํ์ ๊ทผ์ ํ์ ๋ ์น์
๋จ์๋ก ๊ท ๋ฑ ์ฌ๋ถํ (
--fill 0.7๋ฑ).
- ์กฐ๊ฐ์ด 300์ค/40KB ์ํ์ ๊ทผ์ ํ์ ๋ ์น์
๋จ์๋ก ๊ท ๋ฑ ์ฌ๋ถํ (
- ์กฐ๊ฐ ํด๋ํ ์ ๋๋ ์ดํฐ (
scripts/split_doc.py --to-outdir):- ํ์ ๋ฐฉ์ ์กฐ๊ฐ๋ค์
_์กฐ๊ฐ/์ ์ฉ ํด๋๋ก ์์ ์ด์ (--to-outdir <์ด๋ฆ>_์กฐ๊ฐ --apply).
- ํ์ ๋ฐฉ์ ์กฐ๊ฐ๋ค์
- ์ฐฉ์ ๋ธ๋ฆฌํ ์์ฑ๊ธฐ (
scripts/session_brief.py --write):99_NEXT_SESSION์ฐฉ์ํ, ์ง์ ์ธ์ ์ธ์์ธ๊ณ, ๋ฌธ์50 ๋ฏธ๊ฒฐ, ๊ฒ์ดํธ 6์ข ์ํ๋ฅผ ์๋ ์ถ์ถํ์ฌ20_issue/00_BRIEF.md์์ฑ.
- ์ค์ธก ๋ฐฑ๋ก๊ทธ ์์ฑ๊ธฐ (
scripts/gen_measure_backlog.py --write):- ๋ผ์ด๋ธ ๋ฏธ์ค์ธก ๋ฐ ๋ณด๋ฅ ํญ๋ชฉ์ ์ถ์ถํ์ฌ
20_issue/92_์ค์ธกํ์_ํ์์์ .md์์ฑ.
- ๋ผ์ด๋ธ ๋ฏธ์ค์ธก ๋ฐ ๋ณด๋ฅ ํญ๋ชฉ์ ์ถ์ถํ์ฌ
- ์ฅ๋ฌธ ์
์ํด ์ ๋๋ ์ดํฐ (
scripts/retire_rows.py --apply):- ์์ฅ ํ์ ๋ซํ ํ ์ฅ๋ฌธ ์
์ ํฌ์ธํฐํํ๊ณ
90_ํด์์๋ฃ_๋ก๊ทธ๋ก ์ด๊ด.
- ์์ฅ ํ์ ๋ซํ ํ ์ฅ๋ฌธ ์
์ ํฌ์ธํฐํํ๊ณ
- ์ ๋ณธ๋ฌธ ์ํด ์ ๋๋ ์ดํฐ (
scripts/retire_sections.py --apply):- ๋ซํ ์ ์ ๋ณธ๋ฌธ์ ์ํด ๋ฌธ์๋ก ์ด๊ด(์ ๋ชฉ์ค ๋ณด์กด).
- ์ฌ๋ก์ง ์ด๊ด ์ ๋๋ ์ดํฐ (
scripts/split_narrative.py):- ์ง์นจ ์กฐ๋ฌธ์ ๊ฒฝ์ ์์ฌ๋ฅผ
91_์ฌ๊ณ ์ฌ๋ก์ง.md๋ก ์๋ ๋ถ๋ฆฌ.
- ์ง์นจ ์กฐ๋ฌธ์ ๊ฒฝ์ ์์ฌ๋ฅผ
ยท ๊ฐฑ์ ํ ๋ด์ฉ ์์ = ํด๋น ์กฐ๊ฐ์
editโpython3 scripts/split_doc.py <ํ๋ธ> --republish --expect "<ํ ํฐ>". ยท appendํ ํญ๋ชฉ ์ถ๊ฐ(์ด๋ ฅยท90) =python3 scripts/split_doc.py <ํ๋ธ> --rollover --entry-file <์ถ๊ฐํ .md>โ ์กฐ๊ฐ์ ์ง์ ์ด์ง ์๋๋ค. ยท ์กฐ๊ฐ์ด ์ํ์ ๊ฐ๊น์ฐ๋ฉดsplit_doc.py <ํ๋ธ> --rebalance(๋ถ๋ถ ์ถฉ์ --fill 0.7). ๐ โ ๏ธ [O106] ๋ฏธ๋ถํ ๋ฌธ์๋ฅผ ์ฒ์ ์ชผ๊ฐค ๋๋--rebalance๊ฐ ๋ฐ๋ก ํ์ํ๋ค โbuild๋fill์ ๋ฐ์ง ์์ ์ํ ์ด๋ด๋ฉด 1์กฐ๊ฐ์ผ๋ก ๋๋๋ค(fits()ํ์ ). 2๋จ๊ณ๋ก ํ๋ค:split_doc.py <๋ฌธ์> --outdir <์ด๋ฆ>_์กฐ๊ฐ --boundary sectionโsplit_doc.py <๋ฌธ์> --rebalance --fill 0.5. ๐ด ํด๋๋ช ์_์กฐ๊ฐ์ ๋ฏธ ํ์(์คํ ์ด์ง์ ใํด๋ใ๋ ๊ฒฝ๋ก ์ ๋๋ผ ์์ผ๋ฉด ํ๋ธ๊น์ง ์ง์์ง๋ค ยทR1-6-10). ยท ๊ฐฑ์ ํ ์์ฅ์ด ์ปค์ง๋ฉด ๋ซํ ํ๋งpython3 scripts/retire_rows.py โฆ --apply๋ก90์ ์ํด ์ด๊ดํ๋ค (ํ ์ญ์ ๊ฐ ์๋๋ผ ์ ๋น์ฐ๊ธฐ โ ํ ํคยท์ด ์ ๋ณด์กด ยทR2-8-1ํ ํฐ ๋์กฐ blocking ยท ์ค๋ ์ท ์๋). ๐ ๐ด [O106]retire_rows.py๋ ใ์ ใ์ ์ฎ๊ธฐ์ง ๋ชปํ๋ค โ ํ ๋ณธ๋ฌธ ํ์ ์ฅ๋ฌธ ์ ๋ง ํฌ์ธํฐ๋ก ๋์ฒดํ๋ค(big_cell_index). ๐ ๐ข [2026-08-28 O107] ์ ๋จ์ ๋๊ตฌ๊ฐ ์ ์ค๋๋ค =scripts/retire_sections.py(R1-6-19). ๐ด ์ ์ ์ฎ๊ธฐ์ง ์๊ณ ใ๋ณธ๋ฌธใ๋ง ์ฎ๊ธด๋ค โ ์ ๋ชฉ ์ค์ ํ์ ์ ๋ชฉ๊น์ง ํ ์ค๋ ๊ฑด๋๋ฆฌ์ง ์์ผ๋ฏ๋กยง์ ๋ชฉ์ธ์ฉ ์ขํ์doc_heading_gate์ ๋ชฉ ์งํฉ์ด ์๋ฆฌ์ ์ผ๋ก ๋ณด์กด๋๋ค(๊ณจ๋ ์ ๋ฎ์ ํ์๊ฐ ์๋ค). ์ขํ ๋์ํ +R2-8-1ํ ํฐ ๋์กฐ blocking + ์ค๋ ์ท + dry-run ๊ธฐ๋ณธ + ๋ฉฑ๋ฑ ์ฐจ๋จ. ๐ด ์ค์ ์ ์ฉ์R4-4-3๋ณ๋ ์น์ธ ๋์์ด๊ณ ใ๋ซํใ ํ๊ธฐ๋ ์ ๋ชฉ ์ด๋ชจ์ง ํ์ ์ผ ๋ฟ์ด๋ค โ ์ํด ์ ์ ๊ทธ ์ ์ ์ฝ์ด๋ผ. ์์ฑ ํ ์คํธ =scripts/test_retire_sections.py(9์ถ). ๐ ๐ด๐ด [2026-08-28 O111-B ยทR1-6-24] ใ๋ซํใ ํ๋ณด๋ฅผ ๊ทธ๋๋ก ๋ฏฟ์ผ๋ฉด ๋๋ถ๋ถ์ด ์ค์ด๊ด์ด๋ค. ยท ๐ ๊ฒฝ์ยท์ค์ฌ๊ณ ๊ทผ๊ฑฐ =20_issue/91_์ฌ๊ณ ์ฌ๋ก์ง.mdยงC22(R2-8๋ฌด๋ณ๊ฒฝ ์ด๊ด ยทO111-B) ๐ข ๋๊ตฌ๊ฐ ์ด๋ฆผ ์ ํธ 5์ข (๐ด/๐ /๐ก ยท ๋ณต๊ท ํธ๋ฆฌ๊ฑฐ ยท ๋ฏธ๊ฒฐยท๋๊ธฐ ยทBLOCKING-Nยท ์กด์ฌ ์ด์ ์๊ธฐ์ ์ธ)์ ์ธ์ด--list์ ์ซ์๋ก ํ์ํ๊ณ ์ ์ฉ ๊ฒฝ๋ก์์ ๊ธฐ๋ณธ ์ฐจ๋จํ๋ค(--force๋ก๋ง ํต๊ณผ ยท ํต๊ณผ์์ผฐ์ผ๋ฉด ์ด๋ ฅ์ ์ ์ด๋ผ). โ ๏ธ ์ ๊ฐ ๊ธฐ๋์น๋ฅผ ๋ฎ๊ฒ ์ก์๋ผ โ ์ค์ธก 418 B ์ด๊ด = ์ ๊ฐ 27 B. โ ์ํด๋ ์ฉ๋ ํ๋ณต ์๋จ์ด ์๋๋ผ ๊ฐ๋ ์ฑ ์๋จ์ด๊ณ , ๋ถ๋ถ ์ํด๊ฐ ์ ๋ต์ธ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. โ ๏ธretire_rows.py๋ ๋ชฉ์ ์ง(90)๊ฐ ํ๋ธ๊ฐ ๋ ๋ค์๋ ํ๋ธ์ ์ง์ append ํ๋ค(๋ฏธ์์ ) โ ์ฐ๊ธฐ ์ ์ ๋ชฉ์ ์ง๊ฐ ํ๋ธ์ธ์ง ํ์ธํ๋ผ(ํ๋ธ์ ์ด ๋ด์ฉ์ ๋ค์--republish์์ ์ฌ๋ผ์ง๋ค). ยท ๐ ๐ด๐ด [O107] ์ ์ง ์ฐ์ฐ ์ ยทํ์ ใ๋ฐฉ๊ธ ๋ฃ์ ํ ํฐใ์grep์ผ๋ก ๋จ์ ํ๋ค. ยท ๐ ๊ฒฝ์ยท์ค์ฌ๊ณ ๊ทผ๊ฑฐ =20_issue/91_์ฌ๊ณ ์ฌ๋ก์ง.mdยงC17(R2-8๋ฌด๋ณ๊ฒฝ ์ด๊ด ยทO111) ๐ข ๋ณต๊ตฌ ์๋จ์ ์์ฑ์๊ฐ ๋ค์ ์ฐ๋ ๊ฒ๋ฟ์ด์๋ค(์ค๋ ์ท์๋ ์๋ค) โ ๊ธด ์ ์ ๋ณ๋ ํ์ผ (_o1NN_entry.md)์ ๋จผ์ ์ฐ๊ณ ๋ถ์ฌ๋ผ. ์ด๋ ฅ ํญ๋ชฉ์ ๊ทธ ๋ฐฉ์์ด์ด์ ์ด์๋ค. ยท ๐ ๐ด๐ด [2026-08-28 O111-B ยทR1-6-23] ๊ทธgrep์ ์์ผ๋ก ํ์ง ๋ง๊ณ ๋๊ตฌ์ ๋๊ฒจ๋ผ =--expect TOKEN(๋ฐ๋ณต ๊ฐ๋ฅ ยท--republishยท--rebalance). ๐ด ๊ฐ์ ์ฌ๊ณ ๊ฐ ๋ ๋ฒ ๋ฌ๊ณ ๋ ๋ฒ ๋ค ๊ฒ์ดํธ 6์ข ์ด ์ ๋ถ ๐ข ์๋ค โ--verify๋ ์๊ธฐ์ผ๊ด์ฑ๋ง,R1-7-2๋ ๊ฐ์ ์์ 2ํ ์ฝ๊ธฐ๋ง ๋ณด๋ฏ๋ก ์์ ๊ฐ ๋ถ์ผ์น๋ ์๋ฆฌ์ ์ผ๋ก ๋ชป ์ก๋๋ค. ยท ๐ ๊ฒฝ์ยท์ค์ฌ๊ณ ๊ทผ๊ฑฐ =20_issue/91_์ฌ๊ณ ์ฌ๋ก์ง.mdยงC25(R2-8๋ฌด๋ณ๊ฒฝ ์ด๊ด ยทO112) โ--expect๋ ใ ์ฐ๊ธฐ ์ ๋ฐฉ๊ธ ์์งํ ๋ด์ฉ์ ์๋๊ฐ ใก ์ด ๋ค ๋์ฝ์ด๋ ์๋๊ฐ๋ฅผ ๋ ๋ค ๋จ์ ํ๊ณ , ์์ผ๋ฉด ์ฐ์ง ์๊ณ exit 1 ํ๋ค. ๐ข ํ ํฐ์ ๊ทธ ์ธ์ ์ด ๋ฐฉ๊ธ ๋ฃ์ ๊ฒ์ ์ค๋ค(์ธ์ ๋ผ๋ฒจ ยท ์ ์ ์ ๋ชฉ ยท ์ ํ ํ์ ๊ณ ์ ๋ฌธ๊ตฌ). ๐ ๐ด ํ ํฐ์ ใ์ฐ์ ๋ฆฌํฐ๋ดใ์ด์ด์ผ ํ๋ค โ ๋งํฌ๋ค์ด ์ฅ์(**ยท๋ฐฑํฑ)์ด ๋ผ๋ฉด ๋ถ๋ถ๋ฌธ์์ด์ด ์๋๋ฏ๋ก ์ ์ ๋ FAIL ์ด ๋๋ค(O112 ์ค์ธก 1๊ฑด ยท ํ์ผ์ ์ ์์ด๊ณ ์ ์ธ์ด ํ๋ ธ๋ค). โ ๏ธ ์ ์ธ ๊ธฐ๋ฐ์ด๋ค โ ์ฃผ์ง ์์ผ๋ฉด ๊ฒ์ฌํ ๊ฒ์ด ์๋ค. ์์ฑ ํ ์คํธ =test_split_doc_expect.py(5์ถ). ยท ๐ ๐ข [2026-08-28 O107] ํ์ ์กฐ๊ฐ์ ํด๋๋ก ์ด์ =split_doc.py <ํ๋ธ> --to-outdir <์ด๋ฆ>_์กฐ๊ฐ --apply(R1-6-21). ๐ด ํด๋์ ๋จผ์ ์ฐ๊ณ concat ๋ฐ์ดํธ ๋์ผ์ ํ์ธํ ๋ค์๋ง ํ์ ๋ฅผ ๊ฐ๋ณ ์ญ์ ํ๋ค ยท_์กฐ๊ฐ์ ๋ฏธ ์์ผ๋ฉด ๊ฑฐ๋ถ ยท ์ด๋ฏธ ํด๋๋ฉด ๊ฑฐ๋ถ ยท ๊ธฐ๋ณธ dry-run. ๐ด ์ด์ ํ ์์ผ๋ก ๊ณ ์น ๋ถ๋ชจ =doc_census.FAMILIESยทdoc_line_length_gate.CANON_GLOB(์ฃฝ์ ํจํด์ ์ง์ด๋ค) ยทdecision_closure_gate2๊ณณ(DECISION_GLOB์ ํ์ ํ์ผ๋ช ์ง์ ์์กด ยทISSUE.glob("*.md")๋ 1๋จ๊ณ๋ง ๋ณธ๋ค). ๐ข ๋ง์ปค๋ฅผ ์ฝ๋ ๊ฒ์ดํธ 3์ข +doc_census.chunk_paths๋ ์๋ ์ถ์ข . ๐ข ํ์ฌ ํด๋ ๋ฐฉ์ =01_์ธ์ ์ด๋ ฅ_์กฐ๊ฐยท90_ํด์์๋ฃ_๋ก๊ทธ_์กฐ๊ฐยท99_NEXT_SESSION_์กฐ๊ฐ. ๐20_issue/7๋ฌธ์๋ ์์ง ํ์ ๋ฐฉ์์ด๋ค(๋์ยท์กฐ๊ฐ ์๋doc_census.py๋ก ์ฌ๋ผ) โ ์ด์ ํ๋ ค๋ฉดdecision_closure_gate๋ฅผ ๋จผ์ ๊ณ ์ณ๋ผ. ยท ๐ ์กฐ๋ฌธ์ ใ์ ํ์ํ๊ฐใ ๊ฒฝ์ ์์ฌ๋split_narrative.py๋ก91_์ฌ๊ณ ์ฌ๋ก์ง.md์ ์ด๊ดํ๋ค (๋ถ๋ณ์ 3์ข blocking = ์กฐ๋ฌธ ID ์งํฉ ยท ์ ๋ชฉ ์งํฉ ยทR2-8-1ํ ํฐ). ๐ด ์ฒ๋ฐฉ(๐ข/โ ๏ธ)์ ์ฎ๊ธฐ์ง ์๋๋ค โ ์ฎ๊ธฐ๋ฉด ์กฐ๋ฌธ์ด ์ง์๋ฅผ ์๋๋ค(O106 ์ดํ์ด ์ค์ ๋ก ์ฒ๋ฐฉ 3์ค์ ๋นผ๋๋ค ยทPRESCRIPTION๊ฐ๋๋ก ์ฐจ๋จ). - ํ๋ธ ์ฌ๊ตฌ์ฑ ์ ๋๋ ์ดํฐ (
-
๐ ๐ด
20_issue/์ ๋ฌธ์๋ฅผ ใ์๋กใ ๋ง๋ค ๋๋ ์์๋ฅผ ์งํจ๋ค(์ง์นจR1-6-18): โ ์์ฅ ยง0 ์ ํ ๋ฑ์ฌํ์ ํ ์ค ๋จผ์ ๋ฑ์ฌ(์ ํ + ๊ทผ๊ฑฐ + ์ฒ๋ฆฌ) โ ๋น ๋จ๋ฆฌ๋ฉดdoc_type_gate์ถ1 ์ฆ์ FAIL. โกwriteํด๋ก ์์ฑ(์ ๊ท ์ ์ฉ) + LLM-METADATA ํค๋ ํ์(doc_idยทdoc_roleยทprojectยทcreatedยทindex). โข ์ํ ์ด๋ด๋ฉด ๋ถํ ํ์ง ์๋๋ค โ ํ๋ธ+์กฐ๊ฐ์ ์ํ์ ๋์ ๋๋ง ๋ง๋ ๋ค(๋ถํ์ํ ๊ฐ์ ์ธต ๊ธ์ง). โฃ ํด๋ ๋ฐ ๋ฌธ์๋ฉดdoc_type_gate.EXTRA_DOCSยทdoc_heading_gate.DOCSยทdoc_line_length_gate.CANON์ ์์ผ๋ก ํธ์ . ๐ด ์ด ๋จ๊ณ๋ฅผ ๋น ๋จ๋ ค ์ง์นจ์ด 45,116B ๊น์ง ์ปค์ก๋๋ฐ ๊ฒ์ดํธ๊ฐ ์นจ๋ฌตํ๋ค(O83-E). ๐ ๐ด๐ด ๋ถ๋ชจ ํธ์ ๊ณผ ใ๊ธฐ์ค์ ๋ฐํใ์ ๋ณ๊ฐ์ ๋ ๋์์ด๋ค โdoc_heading_gate.DOCS์๋ง ๋ฃ๊ณ ๊ณจ๋ ์ ๋ฐํํ์ง ์์ผ๋ฉด ๊ทธ ๋ฌธ์์ ์ ๋ชฉ ์ ์ค์ ๊ฒ์ฌ๋์ง ์๋๋ค(O83-H ์ค์ธก:01_๋ฌธ์๋ถํ _๊ท์ฝ.md๊ฐ ์ด ์ํ๋ก ๋ฐฉ์น๋๊ณ ์ถ๋ ฅ์ โช ๋ก ์กฐ์ฉํ ํ๋ ๋ค). โ ์ ์ค 0 ์ ํ์ธํ ๋ค ๋ฐ๋์ ๋ฐํํ๋ค:python3 scripts/doc_heading_gate.py --update-golden --reason "<์ฌ์ >"๐ข [O83-H] ์ด์ ๋ฏธ๋ฑ์ฌ๋ โช ๊ฐ ์๋๋ผ ๐ด FAIL ์ด๋ค โ ์์ผ๋ฉด ๊ฒ์ดํธ๊ฐ ๋ง๋๋ค. ๐ ๐ด [O106] ๋ถ๋ชจ๊ฐ 4๊ณณ์ผ๋ก ๋์๋ค โ ๋ถํ ๋ฌธ์๋ฅผ ์๋ก ๋ง๋ค๋ฉดdoc_census.FAMILIES์๋(ํ๋ธ ์๋๊ฒฝ๋ก, 'sibling' ๋๋ ํด๋๋ช )์ ๋ฑ์ฌํ๋ค. ๋น ๋จ๋ฆฌ๋ฉด ๊ทธ ๋ฌธ์์ ์กฐ๊ฐ ์๋ stale ๊ฒ์ฌ ๋ฐ์ด ๋๋ค(์ด ๋๊ตฌ๊ฐ ๋ง์ผ๋ ค๋ ๋ฐ๋ก ๊ทธ ์ํ๋ค). ๋ฏธ๋ถํ ์์ ๋ ํด ๋ฌธ์๋doc_census.SINGLES์ ๋ฃ๋๋ค. โคdoc_type_gate.py+line_len.py+doc_census.py+cortex ws ls๋ก ํ์ธ. ๐ โฅ ๐ด ๊ฒ์ดํธยท์์ฑ๊ธฐ๋ฅผ ์๋ก ๋ง๋ค๋ฉด ์์ฑ ํ ์คํธ๋ฅผ ๊ฐ์ด ๋ง๋ ๋ค(R3-2). ์ ๋ก =scripts/test_*.py(๐ด ์ถยท๋จ์ ์๋ฅผ ์ฌ๊ธฐ ์ ์ง ๋ง๋ผ โ ๊ฐ ํ ์คํธ๊ฐ ์ค์ค๋ก ์ธ์ด ์ถ๋ ฅํ๋ค). ๐ด ์: ๋๊ตฌ๋ฅผ ๋ง๋ค ๋ ๋์จ ์๊ธฐ์์ ์ ์ ๋ถ ์์ฑ ํ ์คํธ๊ฐ ์ก์๋ค(์ ์ ์ ๋ ฅ๋ง์ผ๋ก๋ 0๊ฑด์ด์๋ค). ๐ข O112 ์ ๋ก = ์ค์ผ ๊ธฐ๋ฐ ์ถ(๋ถ๋ชจ๋ฅผ ์ผ๋ถ๋ฌ ๊นจ์ ๊ฒ์ถยท๋ณต๊ตฌ๋ฅผ ์์ถ ๋จ์ ) =test_doc_census.py์ถ6. ๐ข ์ ๋ฌธ์๋ฅผ ๋ง๋ค๊ธฐ ์ ์ ๊ธฐ์กด ๋ฌธ์์ ์ ์ ์ถ๊ฐํ๋ ํธ์ด ๋ซ์ง ์์์ง ๋จผ์ ํ๋จํ๋ค (๋ฌธ์ ์๊ฐ ๋๋ฉด ๋ ํด ํธ์ถ ์๊ฐ ๋์ด๋๋ค ยท ํ์ฌ ๊ท๋ชจ๋doc_census.py๋ก ์ฌ๋ผ). -
๐ ๐ด ์กฐ๋ฌธยท์ ์ ์ ์คํ๋ฉด
python3 scripts/clause_order_gate.py๋ฅผ ๋๋ฆฐ๋ค(O83-H ์ ์ค ยท ์ง์นจR1-7-8). ๋ฒํธ ์์ ๋ง๋ฏธ์ ๋ง๋ถ์ธ๋ค โ ์ค๊ฐ ์ฝ์ ์ ๋ฒํธ์ ๋ฌธ์ ์์๋ฅผ ์ด๊ธ๋๊ฒ ๋ง๋ค๊ณ , ์ค์ ๋ก ์ฝ์ ๊ณผ์ ์์ ์ ๋ชฉ์ค์ด ๋ฎ์ฌ ์ง์์ก๋ค. ์ถ1 ์ญ์ ยท ์ถ2 ์ค๋ณต์ blocking ยท ์ถ3 ๊ฒฐ๋ฒ์ ๐ ๊ฒฝ๊ณ ๋ค. -
read๋ฏธ๋ฐํ์ Step 0.8 ๊ท์น๋๋ก ์ขํยท๊ฑด์๋ฅผ ์ซ์๋ก ๊ธฐ๋กํ๋ค. -
ํ์ผ ์์ฑยท์์ ํ
cortex ws ls๋ก ์คํ ์ด์ง ์ค์ฒด ํ์ธ(P102). -
๋ผ๋ฒจ(
O##)์python3 scripts/id_collision_gate.py --next O๋ก ํ์ธํ ๋ค ์์ฅ์ ํ ์ค ์ ์ ๋ฑ์ฌํ๊ณ ์ฐฉ์ํ๋ค(R1-4-3). ๐ด ๊ฒ์ดํธ์ ใ๋ค์ ๋ฐ๊ธใ์ ๊ทธ๋๋ก ๋ฏฟ์ง ๋ง๋ผ โP222์ฐธ์กฐ ์ถ ๊ณผ๋. ์์ฅยท์ด๋ ฅ์ ใO85 ๊ณ์ดใ์ฒ๋ผ ์๊ณ ๋ฌธ์ฅ์ด ์์ผ๋ฉด ์ฐธ์กฐ ์ต๋๊ฐ ๋ถํ๋ ค์ง๋ค. โ ์ ์ ์ถ ์ต๋๊ฐ์ ํจ๊ป ๋ณด๊ณ ํ๋จํ๋ค. ๐ข ๊ฐ์ ์ธ์ ์ ํ์ ์์ ๋จ์๋ ์ ๋ฒํธ๋ฅผ ๋ฐ๊ธํ์ง ๋ง๊ณ ์ ๋ฏธ(-Bยท-Cโฆ)๋ก ์๋๋ค(๊ฒฝํฉยท๊ณผ๋ ํํผ). -
๋ก๋๋งต ๋จ๊ณ ์ข ๋ฃ ์ ์ง์นจ R3 ์ 9๊ฐ ๊ฒ์ดํธ๋ฅผ ์ ๋ถ ํต๊ณผ (7 = ํ ํค ยท 8 = ๋ฏธ๋ฐํ ๊ฑด์ ยท ๐ 9 = ๊ฒ์ดํธ๊ฐ ๋ณด์ง ์๋ ์ถ ใ ~ใง 8๊ฐ ยท ๐ด ๋ชฉ๋ก์ด ๋๋ฉด ์ด ๋ฒ์๋ ๊ณ ์ณ๋ผ).
-
๐ ๐ด๐ด ๊ฒ์ดํธ ์ ์ PASS ๋ ใ์ง์นจ ์ค์ใ์ ์ฆ๊ฑฐ๊ฐ ์๋๋ค(O83-H ์ค์ธก = ๊ฒ์ดํธ 6์ข ๐ข ์์ ๊ฒฐํจ 4๊ฑด). โ ๋ณด๊ณ ์ ์ ๊ฒ์ดํธ๊ฐ ๋ณด์ง ์๋ ์ถ 8๊ฐ๋ฅผ ์๋ฌธํ๋ค. ๐ด ์ ๋ณธ์ ์ง์นจ
R3-9ใ ~ใง ์ด๊ณ ๊ทธ ๋ฌธ์๋ Step 1 ์์ ์ ๋ ๋ ํด๋๋ค โ ์ฌ๊ธฐ์๋ ์ง๋ฌธ๋ง ์ฃ๋๋ค (O112 ์ถ์ฝ ยท ์ข ์ ์๋ ์ง์นจ ๋ณธ๋ฌธ์ ๊ทธ๋๋ก ๋ค์ ์ค์ด ๋ ๊ณณ์ด ๊ฐ์ ๋ก์๋ค ยทR3-9 ใก์์ฒด ์๋ฐ์ด์๋ค). โ ์์ฅ ยง1 ๋์๋ณด๋๊ฐ ์ค์ ์ํ์ ๊ฐ์๊ฐ(R4-2) โใโก ๊ฐ์ ๊ฒ์ ๋ค๋ฅด๊ฒ ์ฌ๋ ์ง์ ์ด ๋ ์๋๊ฐ โใกโข ๋ถ๋ชจ์ ๋ฃ์ ๋ฌธ์์ ๊ธฐ์ค์ (๊ณจ๋ )์ ๋ฐํํ๋๊ฐ โใขโฃ ์ ์ค ์กฐ๋ฌธ์ด ๋ฒํธ ์์ ๋ง๋ฏธ์ ์๋๊ฐ โใฃโค ใ์๋ฃใ๊ฐ ๋ผ์ด๋ธ ์ค์ฌ๋ฅผ ์ฃผ์ฅํ๋๊ฐ โ ๋ซ๊ธฐ ์ง์ ์ฌ์กฐํ(R2-8-4) โใคโฅ ๋ด ๊ฒฐ์ ์ ์ธ์ฉํ ์ ๋ณธ์ ์ ์ ๊ฒ์ํ๋๊ฐ โpython3 scripts/decision_closure_gate.pyโใฅ๐ด ๋ฌด์๋ ๋ต์ด ์๋๋ค โ ๋ณ๊ธฐํด ๋ซ๊ฑฐ๋ ์ด๋ฆฐ ์ด์ ๋ฅผ ๊ทธ ์๋ฆฌ์ ์ ๋๋ค. โฆ ๋ด๊ฐ ๋ง๋ ใ์ใ๊ฐ ๋ฌธ์์ ๋ฐํ ์์ง ์์๊ฐ โpython3 scripts/doc_census.pyโใฆโง ์๋ ์์ฑ๋ฌผ(00_BRIEF.mdยท92_โฆยท๋ชจ๋ ํ๋ธ)์ ์์ผ๋ก ๊ณ ์น์ง ์์๋๊ฐ โใง -
๐ด dbt ๋ช ๋ น์ ์์ด์ ํธ๊ฐ ์คํํ์ง ์๋๋ค โ ์ฌ์ฉ์๊ฐ ์ง์ ์คํํ๋ค. ๋์ =
dbt parseยทdbt compileยทdbt build(๋ฐrun/test๋ฑ ๋ชจ๋ธ์ ๋ง์ง๋ ๋ช ๋ น ์ ๋ถ). โ ํด๋น ๋จ๊ณ์ ๋๋ฌํ๋ฉด ์ฆ์ ์ค๋จํ๊ณ , ์คํํ ๋ช ๋ น์ ๊ทธ๋๋ก ์ ์ํ ๋ค ์ฌ์ฉ์ ์ ๋ ฅ์ ๋๊ธฐํ๋ค. ์์ด์ ํธ๋ ๋ช ๋ น๋ฌธ ์์ฑยท๊ฒฐ๊ณผ ํด์๊น์ง๋ง ๋ด๋นํ๋ค. -
์๋ต์ ๋จ๋ตํ(R4-3). ๐ด ์ฅ๋ฌธ ํยท์ ๋์ด ๋ณด๊ณ ๋ ์ด ๊ท์น ์๋ฐ์ด๊ณ ์์ต ๊ฒฐํจ(
A8)์ด๋ค.
์ธ์ ์ข ๋ฃ ์
๐ [2026-08-28 O106] ํฐ ์์
์ ๋ง์น๋ฉด ์๋๋ฅผ ์คํํ๋ค(R4-2 ์ ์งํ๋ถ).
python3 scripts/doc_census.py # stale 0 ยท ์ฌ์ ํ์ธ
python3 scripts/session_brief.py --write # 00_BRIEF ์ฌ์์ฑ(๊ฒ์ดํธ 6์ข
ํฌํจ)
python3 scripts/gen_measure_backlog.py --write # ์ค์ธกํ์ ํญ๋ชฉ ์ฌ์์ฑ
python3 scripts/decision_closure_gate.py # ๐ ๋ด ๊ฒฐ์ ์ ์ธ์ฉํ ์ ๋ณธ์ด stale ์ธ๊ฐ(๊ฒฝ๊ณ )
๐ ๐ด [O110] ใ์์ฑ ํ
์คํธ๋ฅผ ์ ๋ถ ๋๋ ธ๋๊ฐใ๋ ๋ชฉ๋ก์ ์ธ์ง ๋ง๊ณ ํ์ผ๋ก ์ฌ๋ผ โ ๐ด ๋ชฉ๋ก์ ์ฌ๊ธฐ์
์ ์ง ๋ง๋ผ(์ ์ผ๋ฉด stale ์ด ๋๋ค ยท R3-9 ใฆ. O110 ์ด 8์ข
์ ์ ์ด ๋๊ณ O111-B ์์ ์ 13์ข
์ด์๋ค).
์ ๊ฑด ์คํ = ํ ์ค๋ก ๋๋ค:
for t in scripts/test_*.py; do python3 "$t" >/tmp/t.out 2>&1; r=$?; [ $r -ne 0 ] && echo "๐ด $t rc=$r"; done
๐ ๐ด๐ด [2026-08-29 O120 ์ ์ค ยท ์ข
์ ํ๋ณธ์ด ์คํจ๋ฅผ ๊ฐ์ท๋ค] ์ข
๋ฃ์ฝ๋๋ฅผ ํ์ดํ ๋ค์์ ์ฝ์ง ๋ง๋ผ.
์ข
์ ๋ฌธ์์ python3 "$t" | tail -1 ์ด์๋ค โ ๐ด $? ๋ tail ์ ์ฝ๋์ด๊ณ ํ
์คํธ์ ์ฝ๋๊ฐ ์๋๋ค.
ยท ์คํด 1 = O120 ์ด ๋๋ฉ์ธ ๊ฒ์ดํธ๋ฅผ ๊ฐ์ ํํ๋ก ๋๋ ค ใ14์ข
์ ๊ฑด exit 0ใ์ ์ฌ์ฉ์์๊ฒ ๋ฐํํ๊ณ ,
ํ์ดํ ์์ด ์ฌ์ธก์ ํ๋ 16์ข
์ค rc=1 ์ด 4๊ฑด์ด์๋ค(๋ถ๋ชจยทํ์ ๋ ๋ค ๊ฑฐ์ง).
ยท ์คํด 2 = ๊ทธ ํํ๋ก ๋๋ ์์ฑ ํ
์คํธ ์ค test_retire_sections.py ๊ฐ rc=1 ๋ก ์คํจํ๊ณ ์์๋๋ฐ
์ฌ๋ฌ ์ธ์
๋์ ๋ณด์ด์ง ์์๋ค(๋ง์ง๋ง ์ค๋ง ๋ดค์ผ๋ฏ๋ก). O120 ์ด ์ ํํ๋ก ๋ฐ๊ฟ ์ฒ์ ์ ๋ฐํ๋ค.
โ ๐ด ํ์ ์ = ํ์ ์ ใ์ถ๋ ฅ ๋ฌธ๊ตฌใ๊ฐ ์๋๋ผ ใ์ข
๋ฃ์ฝ๋ใ์ด๊ณ , ์ข
๋ฃ์ฝ๋๋ ๋ฆฌ๋ค์ด๋ ํธ๋ก ๋ฐ์๋ผ.
์ถ๋ ฅ์ ๋ณด๊ณ ์ถ์ผ๋ฉด ํ์ผ๋ก ๋ฐ์์ ๋ฐ๋ก ์ด์ด๋ผ(>/tmp/t.out ํ read).
๐ด ์ด ๊ท์น์ ๊ฒ์ดํธยทํ
์คํธยท๋๊ตฌ ์ ๋ถ์ ์ ์ฉ๋๋ค โ | tailยท| headยท| grep ๋ค์ $? ๋ ์ ๋ถ ๋จ์ ๊ฒ์ด๋ค.
โ ๏ธ ์ธ์๊ฐ ํ์์ธ ๋๊ตฌ๋ ๊ฒ์ดํธ๊ฐ ์๋๋ค โ ๋ฌด์ธ์ ํฌ๋์๋ฅผ FAIL ๋ก ์ธ์ง ๋ง๋ผ
(O120 ์ด o54_sv_value_gate ๋ฅผ ๊ทธ๋ ๊ฒ ์ค๋ถ๋ฅํ๋ค ยท ๊ทธ ๋๊ตฌ๋ ์ด์ ์ฌ์ฉ๋ฒ + exit 2 ๋ฅผ ๋ธ๋ค).
๐ ๐ด๐ด [2026-08-29 O112ยทO112-B ์ ์ค ยท ์ ์ง ์ฐ์ฐ ์ค์ 3์น] ์ด ์ธ ๊ฐ์ง๊ฐ ์ด ์ธ์
์ ์๊ฐ์ ์๊ฒ ํ๋ค.
- ใ
--expectํ ํฐ์ ใ์ฐ์ ๋ฆฌํฐ๋ดใ์ด๋ค. ๋งํฌ๋ค์ด ์ฅ์(**ยท๋ฐฑํฑ)์ด ๋ฌธ๊ตฌ ์ค๊ฐ์ ๋ผ๋ฉด ๋ถ๋ถ๋ฌธ์์ด์ด ์๋๋ฏ๋ก ์ ์ ๋ FAIL ์ด ๋๋ค โ O112 ์์ ๋ ๋ฒ ๊ทธ๋ ๊ฒ ๋ฉ์ท๊ณ ๋ ๋ค ํ์ผ์ ์ ์์ด๊ณ ๋ด ์ ์ธ์ด ํ๋ ธ๋ค. โ ๐ข ํ ํฐ์ ์ฅ์์ด ์๋ ๊ตฌ๊ฐ์์ ๊ณ ๋ฅธ๋ค (์:์ฐฉ์ ์ ์ (์งํ์ค)ยทO112 ๋ณ๊ธฐ). ๐ด ๊ฐ๋๊ฐ ๋ฉ์ถ๋ฉด ํ์ผ๋ณด๋ค ํ ํฐ์ ๋จผ์ ์์ฌํ๋ผ. - ใก ์ ์ง ์ฐ์ฐ ์งํ์ ๊ฒ์ดํธ FAIL ์ ๊ณง๋ฐ๋ก ๋ฏฟ์ง ๋ง๋ผ(
R1-7-3ยทOPS-3๋ก์ ๋ทฐ). ์ค์ธก = ํ๋ธ 3๊ฐ๋ฅผ ์ฌ๋ฐํํ ์งํ ์ ๋ชฉยทํํค ๊ฒ์ดํธ๊ฐ ์ ์ค 1๊ฑด์ฉ์ ๋๊ณ , ์ฌ์ฝ๊ธฐํ๋ ๋ ๋ค ํต๊ณผ์๋ค. โ 2~3ํ ์ฌ์คํํ ๋ค์ ํ์ ํ๊ณ , ๊ทธ ์ฌ์ด์ ใ๋ด๊ฐ ๊นผ๋คใ๋ก ๋ฌธ์๋ฅผ ๊ณ ์น์ง ๋ง๋ผ. - ใข ์์ฅ ยง1 ํ์ 1,900์ ์์ ๋ค์ด๊ฐ์ง ์์ผ๋ฉด ๊ณ์ ์ฌ์์ฑํ๊ฒ ๋๋ค.
์ค์ธก = O112 ํ์ด 1,940 โ 1,924 โ 1,902 โ 1,896 ๋ก ์ธ ๋ฒ ๊น์๋ค(๊ทธ๋๋ง๋ค
--republish). โ ๐ข ํ์ ์ฐ๊ธฐ ์ ์ ใโ ~โฅ ๊ฐ ํญ๋ชฉ 1๋ฌธ์ฅใ์ผ๋ก ์ด์์ ์ก๊ณ , ์์ธ๋ ์ฒ์๋ถํฐ ์ด๋ ฅ์ผ๋ก ๋ณด๋ด๋ผ.
๐ ๐ด [O111-B] ๊ณจ๋ ์ ์ฌ๋ฐํํ ๋๋ --reason ์ ๋ฐ๋์ ์ค๋ค(3์ข
์ ๋ถ ์ง์ํ๋ค):
index_row_gate ยท doc_heading_gate ยท test_generators.
๐ด ์ฌ์ ์๋ ๋ฐํ์ ใ์ ๋นํ ์ฌ๋ฐํใ๊ณผ ใFAIL ์ ๋ฎ์ ๋ฐํใ์ ์ฌํ์ ๊ตฌ๋ณํ ์ ์๊ฒ ๋ง๋ ๋ค
(R1-7-4). ๐ข ๋ฐํ ์ ์ ์ฐจ์ด๋ฅผ ์ ๋ ๋ถํดํ๊ณ ์ค์ ์ค 0 ์ ํ์ธํ ๊ทผ๊ฑฐ๋ฅผ ๊ทธ ์ฌ์ ์ ์ ์ด๋ผ.
โ ๏ธ test_generators --update-golden ์ /tmp/schema.json ์ด ์์ผ๋ฉด ์คํค๋ง ์ง๋ฌธ์ ์๋๋ค โ
O111-B ๊ฐ ์ค์ ๋ก ํ ๋ฒ ์ง์ ๋ค(๊ฐ๋๋ฅผ ๋ฃ์ด ์ด์ ์ด์ ๊ฐ์ ๋ณด์ ํ๋ค). ๋ฐํ ํ ์ง๋ฌธ์ด ์ด์ ์๋์ง ๋ณด๋ผ.
๊ทธ๋ฆฌ๊ณ ์ ๋ณธ 3๊ณณ์ ๊ฐฑ์ ํ๋ค โ ๐ด ์ ์ ์๋ก ๋์ฒด๋ฌผ์ด ์๋๋ค:
- ์์ฅ ยง1 ๋์๋ณด๋ ํ(์ํ) โ ์กฐ๊ฐ์
editโsplit_doc.py <ํ๋ธ> --republish --expect "<๋ผ๋ฒจ>"๐ด--expect๋ฅผ ๋ถ์ฌ๋ผ(R1-6-23ยท ๊ฒฝ์ =91_์ฌ๊ณ ์ฌ๋ก์ง.mdยงC25). โ ๏ธ ์์ฅ ํ์ 2,000์ ์ํ์ ๋๊ธฐ๊ธฐ ์ฝ๋ค(R1-5-1ยท ํ ํ์ ๊ฐํ ๋ถ๊ฐ) โ ์์ธ๋ ์ด๋ ฅ์ผ๋ก ๋๊ธฐ๊ณ ํ์ 1,900์ ์ด๋ด๋ก ์ด ๋คline_len.py๋ก ํ์ธํ๋ค. 01_์ธ์ ์ด๋ ฅํญ๋ชฉ(์์ ) โsplit_doc.py 20_issue/01_์ธ์ ์ด๋ ฅ.md --rollover --entry-file <ํ์ผ>99_NEXT_SESSION์ธ์์ธ๊ณ ์ (๋ค์ ์ธ์ ์ด ์ฝ์ ๊ฒ) โ ๐ด ใ์ฌ๊ธฐ์ ์์ํ๋คใ๋ฅผ ์๋ก ์ฐ๊ณ ์ด์ ์ ์ ๊ทธ ๋ฌธ๊ตฌ๋ฅผ~~์ทจ์์ ~~์ผ๋ก ์น๊ณ ํ์ํ๋ค. ๊ทธ๋ฌ๋ฉดsession_brief.py๊ฐ ํํ๋ง ๊ณ ๋ฅธ๋ค. โ ๏ธ ์น๊ณ ํ์๋ฅผ ๋นผ๋จน์ผ๋ฉด ๋ธ๋ฆฌํ์ด ๋ ์ง๋ก๋ง ํ์ ํ๋ฏ๋ก ์ ์ ์ด ํํ์ผ๋ก ๋ฝํ ์ ์๋ค. ๐ โ ๏ธ ๊ทธ ์ทจ์์ ํธ์ง์doc_heading_gate์ ใ์ ๋ชฉ ์ ์ค 1๊ฑดใ์ผ๋ก ์กํ๋ค(์ ๋ชฉ ๋ฌธ์์ด์ด ๋ฐ๋๋ค) โ ์ด๊ฒ์ ์ ์ ๊ด๋ก๋ค โ ์ค์ ์ค 0 ์ ํ์ธํ๊ณ--update-golden --reason "<์น๊ณ ํ๊ธฐ>"๋ก ๋ฐํํ๋ค. ๐ โ ๏ธ ์ ์ ์ ์ฐ๋ฉด ๊ทธ ์กฐ๊ฐ์ด 300์ค ์ํ์ ๊ฑธ๋ฆด ์ ์๋ค โ O111 ์ ์๊ธฐ ์ ์ ์์ถํด ํผํ๊ณ O111-B ๊ฐ ์น์ธ๋ฐ์ ์ฌ๊ท ํํ๋ค. ์ํ์ ๋ฟ์ผ๋ฉด ์์ถ ๋๋ ์ฌ๊ท ํ์ด๊ณ , ์ฌ๊ท ํ์R4-4-3์น์ธ ๋์์ด๋ค.
๐ ๐ด๐ด [2026-08-28 O110 ์ ์ค ยท O109 D1 ์ฒ๋ฐฉ] ใ๋ซ์๋คใ๊ณ ์ฐ๊ธฐ ์ ์ ๊ทธ ํญ๋ชฉ์ ์ ๋ณธ ํ์ ๊ณ ์ณค๋์ง ํ์ธํ๋ค.
ยท ๐ ๊ฒฝ์ยท์ค์ฌ๊ณ ๊ทผ๊ฑฐ = 20_issue/91_์ฌ๊ณ ์ฌ๋ก์ง.md ยงC18(R2-8 ๋ฌด๋ณ๊ฒฝ ์ด๊ด ยท O111)
- ํ์ ์ = ใ๋ซ์๋คยท์๋ฃยท์ฌ์ ์ใ๋ฅผ ์ธ ๋๋ง๋ค ๊ทธ ๋ฌธ๊ตฌ๊ฐ ๊ฐ๋ฆฌํค๋ ์ ๋ณธ ํ/์ ์ ์ด์ด ๊ณ ์ณค๋๊ฐ?
ยท ์ฐฉ์ํ ํญ๋ชฉ์ด๋ฉด
99_NEXT์ฐฉ์ ์์ ํ์ ๊ทธ ํ(์ ์ ์ทจ์์ + ๋์ฒด ์ฒ๋ฐฉ ๋ช ์) ยท ์ด์๋ฉด ์์ฅ ยง1 ํ ยท ๊ฒฐ์ ์ด๋ฉด30_์ค๊ณ์ ยท dbt ํญ๋ชฉ์ด๋ฉด ๋ฌธ์50 ์ . - ํ์ธ ๋ฐฉ๋ฒ(๋ ๋ค ํ๋ค):
โ
python3 scripts/session_brief.py --writeํ ์ด๋ฆฐ ์ฐฉ์ํ ๊ฑด์๊ฐ ์ค์๋์ง ๋ณธ๋ค. ๐ด ์ค์ง ์์๋ค๋ฉด ๋ซ์ง ๋ชปํ ๊ฒ์ด๋ค(๋ณด๊ณ ๋ฌธ๊ตฌ๊ฐ ์๋๋ผ ๋ธ๋ฆฌํ์ด ์ ๋ณธ์ด๋ค). ๐ ๐ด๐ด [O112] ์ด ํ์ ์์ ใ์ถ์ถ๊ธฐ๊ฐ ์ ๋ฐ๋์์ ๋๋งใ ์ฑ๋ฆฝํ๋ค โ ์ข ์ ์ถ์ถ๊ธฐ๋ ์กฐ๊ฐ ๊ฒฝ๊ณ์ ๊ฑธ๋ฆฐ ํ์ ํ๋ฝ์์ผ 11 ์ ๋๊ณ ์ค์ ๋ 15 ์๋ค(๊ฒฝ๊ณ๊ฐ ๋ฐ๋๋ฉด ์๊ฐ ์์ง์ธ๋ค). โ ์ถ์ถ๊ธฐยท์กฐ๊ฐ ๊ฒฝ๊ณ๋ฅผ ๊ฑด๋๋ฆฐ ์ธ์ ์ ๊ฑด์ ๋น๊ต ๋์ โก ๋ฅผ ๊ทผ๊ฑฐ๋ก ์ผ์๋ผ. โกgrep -n "<๊ทธ ํญ๋ชฉ ํ์>" 99_NEXT_SESSION_์กฐ๊ฐ/*.md๋ก ์ทจ์์ ํ๊ธฐ๋ฅผ ๋์ผ๋ก ํ์ธํ๋ค. - ๐ข ์ทจ์์ ๊ด๋ก =
| ~~โฅ~~ | ~~์ ์ ๋ชฉ~~ โ ๐ข [์ธ์ ๋ผ๋ฒจ ์ฌ์ ์ยท์ํ] ์ ์ฒ๋ฐฉ |. ๐ด ํ์ ์ง์ฐ์ง ๋ง๋ผ(R1-7-4ยท ์ขํ ์ธ์ฉ ์์ ์ฑ) โ ์ทจ์์ + ๋์ฒด ๋ฌธ์ฅ์ผ๋ก ๋จ๊ธด๋ค. ๐ด ใํ์ง ๋ง๋ผใ๋ฅผ ๋ณธ๋ฌธ์ ์ ์ด๋ผ โ ๋ค์ ์ธ์ ์ ์ ์ฒ๋ฐฉ์ ๊ทธ๋๋ก ์คํํ ์ ์๋ค.
Output
์ง์นจ + 00_BRIEF.md ์ปจํ
์คํธ๊ฐ ๋ก๋๋ ์ํ + ๋จ๋ตํ ๋ธ๋ฆฌํ + ์ฌ์ฉ์ ์ง์ ๋๊ธฐ
(์ง์๊ฐ ๋๋ด๋์ผ๋ฉด ๋ธ๋ฆฌํ ํ ์ฆ์ ์ํ ยท R4-4-2).