Fair Upstream Comparison 55 KO - teamswyg/laya-tools GitHub Wiki
์ธ๋ถ Go ์์ ์ ๊ณต์ ํ ๋น๊ต ์ค๋น์ ๊ฐ๋ฐ ๊ด์ธก
English ยท ๋ ์์ฒ ๊ณ์ฝ ยท ๊ท๋ชจ์ ๋ถํ ์์น
์ด ๋ฌธ์๋ PDCA55์ ํ๊ฐ framework ์ค๋น์ ํ์ ๊ฐ๋ฐ ๊ด์ธก์ ์ค๋ช ํฉ๋๋ค. ์๋ณธ ์ฝ๋์ ์ด๋ค ๋ณ๊ฒฝ์ ์๊ตฌํ๋์ง ๋ชจ๋ธ์ ์ถฉ๋ถํ ์๋ฆฌ๊ณ , ๋ชจ๋ธ์ ์์ฒด ๊ฒ์ฌ์ ๋ ๋ฆฝ ๊ฒ์ฌ๊ฐ ๊ฐ์ Go ์ธ์ด ์กฐ๊ฑด์ ์ฌ์ฉํ๋๋ก ํฉ๋๋ค. ์ค๋น ์์ ์ ์ธ๋ถ ๋ชจ๋ธ ์คํ์ 0ํ์์ผ๋ฉฐ, ์ดํ ๊ธฐ์กด ๋ ๋ ผ๋ฆฌ ์์ฒญ์ ์ค์ CLI ์๋ 4ํ๋ฅผ ๊ธฐ๋กํ์ต๋๋ค. ๋ก์ปฌ ์๋ฝ๊ธฐ ๊ฒ์ฌ์ ๊ฐ์ง ์คํ๊ธฐ ์์ฐ ๊ฒ์ฌ๋ ์ค์ ๋ชจ๋ธ ๊ด์ธก๊ณผ ๊ตฌ๋ถํฉ๋๋ค. ํ์ฌ ๋์ ์ค์ ๊ฐ๋ฐ ๋ฒ์๋ ๊ณ ์ ์์ฒญ 7๊ฐยท๊ธฐ๋ก 20๊ฐยท์๋ํ ์ฝ๋ ๊ฐ์กฑ 5๊ฐยท์ ์ฅ์ 3๊ฐ์ ๋๋ค. ๊ฒฐ๊ณผ 55, ๊ธฐ๊ณ ํ๋ ๊ฒฐ๊ณผ
์๋ฅผ ๋จผ์ ๊ตฌ๋ถํฉ๋๋ค
24๊ฐ ํฉ์ฑ ์๋ฏธ ๊ฒ์ probe๋ ์ด๊ธฐ ๋์์ ํ์ธํ ๊ฐ๋ฐ ์๋ฃ์ ๋๋ค. ๋ค์ ์ฑ๋ฅ ์ฃผ์ฅ์ ์ํ ๋ชฉํ๋ ํ๊ฐ ๋๋ฉ์ธ๋ง๋ค ์๋ก ๋ค๋ฅธ ๋ณดํธ๋ ์ต์ข ์์ฒญ ์ต์ 2,400๊ฐ์ ๋๋ค. ๊ฒ์, ์ค์ ๋ชจ๋ธ ๋ผ์ฐํ , ์ ์ฅ์ ์ ํ, ์์ ๋ถํ ์ ๊ฐ์ ๋ค๋ฅธ ์ ๋ต๊ณผ ๊ฒฐ๊ณผ๊ฐ ํ์ํฉ๋๋ค. ์ด๋ฏธ ๊ฐ๋ฐ์ ์ฝ์ ์์ฒญ์ ๋ณดํธ๋ ์ต์ข ์๋ฃ๋ก ์ด๋ฆ๋ง ๋ฐ๊พธ์ง ์์ต๋๋ค.
| ๋ฒ์ | ์ค๋น ์์ ๊ณผ ํ์ฌ์ ์ยท์๋ฏธ |
|---|---|
| ์ค๋น ์์ ๊น์ง์ ์ค์ ์ฝ๋ฉ ๊ฐ๋ฐ ๊ด์ธก | ๊ณ ์ ์์ฒญ 5๊ฐ, CLI ๊ธฐ๋ก 16๊ฐ, ์ธ ์ฝ๋ ๊ฐ์กฑ, laya-tools ํ ์ ์ฅ์ |
| ์ปดํ์ผ๋ ๋ ผ๋ฆฌ ๊ฒ์ฌ ์์ | ์๋ก ๋ค๋ฅธ ๋ ผ๋ฆฌ ์์ 7๊ฐ, ์์ฒ ์ ์ฅ์ 3๊ฐ. v2 ๋ฒ์ ์ถ๊ฐ๋ก ๋์ง ์์ผ๋ฉฐ ์คํ ๊ธฐ๋ก๊ณผ ๋ณ๋ ๋ฒ์ |
| ๋ณด์กดํ ์ธ๋ถ ์์ฒ inventory | ์๋ณธ ํ๋ณด 120๊ฐ. ์ ๋ต์ด๋ 120๊ฐ์ ์คํ ๊ฐ๋ฅํ ๊ณ์ฝ์ด ์๋ |
| ์ด๋ฒ v2 | ๊ธฐ์กด ์ธ๋ถ ์์ฒญ 2๊ฐ์ ์ค๋ช ยทํ๊ฐ ๋ฒ์ . ์ ๊ณ ์ ์์ฒญ 2๊ฐ๋ฅผ ์ถ๊ฐํ ๊ฒ์ด ์๋ |
| ์ธ๋ถ ๋ ์์ฒญ์ ์ค์ ๋ชจ๋ธ ์๋ | ์ค๋น ์์ 0ํ โ 55์์ CLI ์๋ 4ํ, ์๋ก ๋ค๋ฅธ ๋ ผ๋ฆฌ ์์ฒญ 2๊ฐ |
| ํ์ฌ ๋์ ์ค์ ์ฝ๋ฉ ๊ฐ๋ฐ ๊ด์ธก | ๊ณ ์ ์์ฒญ 7๊ฐยท๊ธฐ๋ก 20๊ฐยท์๋ํ ์ฝ๋ ๊ฐ์กฑ 5๊ฐยท์ ์ฅ์ 3๊ฐ |
| ์ด๋ฒ ์ธ๋ถ ๋ ์์ฒญ์ ํ์ต ์คํยทํ์ต ๋ผ๋ฒจยท์ต์ข ์ ๊ฒฉ ์์ฒญ | ๊ฐ๊ฐ 0 |
| ์ด๋ฒ ์ค๋น์์ ์๋ก ํ์ตํ๊ฑฐ๋ ๋ฐฐํฌํ ๊ฐ์ค์น | 0 |
๋ชจ๋ธ์ ๋ฐ๊พธ๊ฑฐ๋ ๊ฐ์ ์์ฒญ์ ๋ฐ๋ณตํ๊ณ , ํ
์คํธ ์
๋ ฅ์ด๋ ๋ฒ์ญ์ ๋๋ ค๋ ๊ณ ์ ์์ฒญ ์๋ ๋์ง ์์ต๋๋ค. v1๊ณผ v2๋ logical_task_id์ previous_task_id๋ก ๊ฐ์ ์์ฒ ์์ฒญ์ ์ฐ๊ฒฐํฉ๋๋ค. registry์ ๋ฒ์ ID๊ฐ ๋ ๊ฐ ๋์ด๋ ๊ธฐ์กด 7๊ฐ ๋
ผ๋ฆฌ ์์
์ ์๋ ๊ทธ๋๋ก์
๋๋ค. ์ค์ ํ๋ณด ๊ธฐ๋ก๊ณผ ์์ฒ 120๊ฐ ๋ชฉ๋ก์ ์๋ก ํฉ์ฐํ์ง ์์ต๋๋ค.
55์ ์ค์ ๊ฐ๋ฐ ๊ด์ธก
์ฌ์ ์ ๋ด์ธํ ๋ child plan๊ณผ ๋ค ์ฌ๋กฏ ์์๋ฅผ ๊ทธ๋๋ก ์คํํ์ต๋๋ค. ์ฌ์ฉ์ ์์ฒญ์ผ๋ก ์ฌ๋กฏ 2์ 3 ์ฌ์ด์ upstream ๊ฒํ ๋ฅผ ์ํ ์ผ์์ ์ง๊ฐ ์์๊ณ , ๋ช ์์ ์ฌ๊ฐ ํ ๋ฏธ์คํ ์ฌ๋กฏ 3ยท4๋ง ์งํํ์ต๋๋ค. ์ฌ๋กฏ 1ยท2์ ์คํจ๋ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์๋๋ก ๊ต์ฒดํ์ง ์์์ต๋๋ค.
| ์ฌ๋กฏ | ์์ฒญ ํ๋กํยท์์ | ๋ ๋ฆฝ ๊ฒ์ฆ | ๋ณธ ์คํ / ๋ ๋ฆฝ ๊ฒ์ฌ ์๊ฐ |
|---|---|---|---|
| 1 | Sol low ยท humanize | accepted, ์ข ๋ฃ pass 6๊ฐ | 76.404์ด / 4.170์ด |
| 2 | Luna low ยท UUID | rejected, pass ์ ๋ฏธ์ง๊ณ | 98.471์ด / 5.852์ด |
| 3 | Luna low ยท humanize | accepted, ์ข ๋ฃ pass 6๊ฐ | 20.836์ด / 4.646์ด |
| 4 | Sol low ยท UUID | accepted, ์ข ๋ฃ pass 218๊ฐ | 43.474์ด / 5.421์ด |
๋ค ์คํ ๋ชจ๋ ์ ์ ์ข
๋ฃยท์ ์ฒด ์ฌ์ฉ๋ยท์ธ์ฆ ์ ๊ฑฐยทํ๋ก์ธ์ค ๊ทธ๋ฃน ์ ๋ฆฌ์ terminal receipt๋ฅผ ํ์ธํ์ต๋๋ค. ์์ฒญ ํ๋กํ์ ์คํ๊ธฐ์ ๋ช
์ํ ์ค์ ์ด๋ฉฐ ์ ๊ณต์๊ฐ ํ์ธํ ๋ชจ๋ธ ์ ์ฒด๋ ๋ชจ๋ unknown์
๋๋ค. UUID ์คํจ ํ๋ณด๋ ๋ค์ชฝ์ ์๋ชป๋ ์
๋ ฅ์์ ์ด๋ฏธ ์ฑ์ด UUID๋ฅผ ๋ฐํํด ์ค๋ฅ ์ ์ ์ฒด๋ฅผ 0์ผ๋ก ๋ฐํํด์ผ ํ๋ ์๊ตฌ๋ฅผ ์ด๊น๋๋ค. ์ด๋ ๋ด์ธํ ํ๋ณด ์์ค์ ์ ์ ๊ฒํ ์ด๋ฉฐ ์ฌ์คํํ์ง ์์์ต๋๋ค. ์คํจ ๊ธฐ๋ก์ pass ์ 0์ ๊ฒ์ฌ ๋ฏธ์คํ์ด๋ 218๊ฐ ์ ๋ถ ์คํจ๋ผ๋ ๋ป์ด ์๋๋๋ค.
์ฌ์ native ์์ธก์ ์ ์ฒด Prompt๋ฅผ ๊ทธ๋๋ก ์ ๋ ฅํ๊ณ ๋ ๊ฑด ๋ชจ๋ ์ ๋ ฅ์ด ์๋ ค ๋ณด๋ฅํ์ต๋๋ค. ์ค์ ๋ผ์ฐํ ํจ์ฉ์ด๋ ๋ณด์ ๋ ๋์ด๋ ์ ๋ต์ด ์๋๋๋ค. ์ด๋ฒ์ ์ฒ์ ์ค์ ๊ด์ธกํ ๊ธฐ์กด ๋ ์์ฒญ ๋๋ฌธ์ ๊ด์ธก ๋ฒ์๊ฐ 5๊ฐ์์ 7๊ฐ๋ก ๋์์ง๋ง, ์ปดํ์ผ๋ registry์ ์ ๋ ผ๋ฆฌ ์์ฒญ์ 0๊ฐ์ ๋๋ค. ์์ฒญ๋ง๋ค ํ๋กํ๋ณ ํ ๊ด์ธก, ์ผ์์ ์ง์ ์๋ก ๋ค๋ฅธ ์บ์ ์ฌ์ฉ๋์ผ๋ก ๋ชจ๋ธ ์์ยท๊ธ์กยท๊ตฌ๋ ์๋ชจ์จ ์ ๊ฐ์ ์ ์ฆํ์ง ์์ต๋๋ค. ํ์ตยทprotected final ์ฑ์ ยท๊ฐ์ค์น ๋ฐฐํฌยท๊ธฐ๋ณธ ๋ผ์ฐํ ๋ณ๊ฒฝ์ ์ํํ์ง ์์์ต๋๋ค. ์๋ณธ ๊ฒฐ๊ณผ์ ํ๊ณ, ๊ณต๊ฐ ์์์ฆ
์ v2๊ฐ ํ์ํ๊ฐ์
๊ธฐ์กด humanize์ Prompt๋ ํ ๋ฌธ์ฅ์ด์ด์ legacy ๋ณด์กด, ๋ณ๊ฒฝ ๊ฐ๋ฅ ํ์ผ๊ณผ ์ง์ํ๋ ์ฝ๋ ํํ๋ฅผ ์ถฉ๋ถํ ์ ๋ฌํ์ง ์์์ต๋๋ค. UUID์๋ ๋ง์ ์ ์ฝ์ด ์์์ง๋ง ์ ํํ ํ์ฉ ํจ์ ๋ชฉ๋ก๊น์ง ๊ณต๊ฐํ์ง ์์์ต๋๋ค. ๋ ๋ฆฝ ๊ฒ์ฌ๊ธฐ๊ฐ ์๊ตฌํ๋ ์กฐ๊ฑด์ ๋ชจ๋ธ์ด ์ค์ ๋ก ๋ฐ์ง ๋ชปํ๋ฉด ๊ณต์ ํ ๋น๊ต๊ฐ ์ด๋ ต์ต๋๋ค.
์ v2๋ ์ ์ฒด ์๊ตฌ๋ฅผ Spec.Prompt์ ๋ฃ์ต๋๋ค. ๋ชจ๋ธ์ ๋ณด๋ด๋ stdin์ ์ด Prompt ๊ทธ๋๋ก์ด๋ฉฐ ๋ณ๋ Acceptance ํญ๋ชฉ์ด๋ GitHub ๋ฌธ์๋ฅผ ๋ชจ๋ธ์ด ์ฝ์๋ค๊ณ ๊ฐ์ ํ์ง ์์ต๋๋ค. ์ค์ Prompt bytes์ SHA, Spec, Definition, ๋
๋ฆฝ Contract์ ์คํ recipe๋ฅผ ๊ณํ ๋ฐ ๊ธฐ๋ก์ ์ฐ๊ฒฐํฉ๋๋ค. ์ด์ 7๊ฐ ์์
์ SpecยทDefinitionยทPromptยทContract์ ์๋ณธ fixture ํด์๋ ๊ทธ๋๋ก ๋ณด์กดํฉ๋๋ค. ๊ณผ๊ฑฐ ๊ณํ๊ณผ ์คํ ๊ธฐ๋ก๋ ๋ค์ ์ฐ์ง ์์ต๋๋ค.
| ์์ฒญ | v2 ID | ๊ธฐ์กด ๋ ผ๋ฆฌ์์ฒญ | ์ ํ๋ ์๊ตฌ์ ์ |
|---|---|---|---|
| ์ ์ฒด int64 ์์ | go55-humanize-ordinal64-v2 |
go53-humanize-ordinal64 |
์ API์ -21st์ ๊ธฐ์กด Ordinal(-21)์ -21th๋ฅผ ํจ๊ป ๋ณด์กด |
| ์๋ฌธ์ UUID ํ์ | go55-uuid-canonical-parse-v2 |
go53-uuid-canonical-parse |
์ API๋ ์๊ฒฉํ ์๋ฌธ์ 36๋ฐ์ดํธ๋ง ํ์ฉํ๊ณ ๊ธฐ์กด broad Parse/ParseBytes๋ ์ ์ง |
humanize ๊ณ์ฝ์ ํธ์ถ ๊ฐ๋ฅํ ํ์
func(int64) string์ ํ์ธํฉ๋๋ค. ์ ์ธ๋ ํจ์์ ํจ์ ๊ฐ ๋ณ์์ ์ฐจ์ด๋ฅผ ๋ณด์ฅํ๋ ๊ณ์ฝ์ ์๋๋๋ค. UUID๋ ๊ธฐ์กด prefix ๋ค์ ์ ํํ func ParseCanonical(s string) (UUID, error) ํ๋๋ฅผ ์ถ๊ฐํ๋ ์ ํ๋ ํํ๋ง ์ง์ํฉ๋๋ค.
Go ์คํ ํ์ผ๊ณผ ์ธ์ด ๋ฒ์ ์ ๋ค๋ฆ ๋๋ค
Go 1.27.1 ์คํ ํ์ผ์ ์ฐ๋๋ผ๋ go.mod์ go ์ค์ด ์ปดํ์ผ ์ธ์ด ์กฐ๊ฑด์ ๊ฒฐ์ ํฉ๋๋ค. go ์ค์ด ์์ผ๋ฉด ๊ธฐ๋ณธ ์ธ์ด ๋ฒ์ ์ 1.16์
๋๋ค. Go ๊ณต์ toolchain ์ค๋ช
, go.mod ์ค๋ช
| ์์ฒ | ๊ณ ์ revision | ์๋ณธ ๋ชจ๋ ์ธ์ด | ์คํ ํ์ผ |
|---|---|---|---|
| dustin/go-humanize | a1b4e66b9a6d890e9e15e7091cf16c8032367d6e |
๋ช ์๋ Go 1.21 | go1.27.1 |
| google/uuid | 2d3c2a9cc518326daf99a383f07c4d3c44317e4d |
go directive๊ฐ ์์ด ์๋ฌต์ Go 1.16 | go1.27.1 |
v2 ๋
๋ฆฝ ๊ฒ์ฌ๊ธฐ๋ ๋ด๋ถ์ ๊ณ ์ ํ ์๋ณธ go.mod bytes๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์๋ณธ ํ์ผ SHA, ๋ชจ๋ ์ด๋ฆ, ์์กด์ฑ์ด ์๋ module/go directive ๋ฒ์๋ฅผ ํ์ธํ๋ฉฐ ํ๋ณด์ ๋ชจ๋ ์ค์ ์ ์ฌ์ฉํ์ง ์์ต๋๋ค. ํ๋ณด๊ฐ go.mod๋ฅผ ๋ฐ๊พธ๋ฉด ๊ฒ์ฌ ๋์ ๋ฐ ์์ค ๋ณ๊ฒฝ์ผ๋ก ๊ฑฐ์ ํฉ๋๋ค. ํ๋ณด ํ
์คํธยทgo.work ์ค์ ๋ ๋
๋ฆฝ compiler ์
๋ ฅ์ด ์๋๋๋ค. ์คํ ํ ์์ ์๋ณธ ๋ชจ๋์ด ๊ทธ๋๋ก์ธ์ง ํ์ธํฉ๋๋ค.
๊ธฐ์กด v1์ ์์ minimal module์ ์ธ์ด 1.27.1์ ์ ์งํฉ๋๋ค. v2์๋ง ์๋ณธ ์ธ์ด recipe๋ฅผ ์ ์ฉํ๋ฉฐ, ๋ชจ๋ SHAยท์ธ์ด ๋ฒ์ ยท์คํ ํ์ผ ๋ฒ์ ยทrecipe SHA๋ฅผ ๊ฐ๊ฐ ๊ธฐ๋กํฉ๋๋ค. actor์ ์ -modfile ๊ฒฝ๋ก๋ฅผ ์ถ๊ฐํ์ง ์์ต๋๋ค.
์ค์ ๋ก์ปฌ ๋์กฐ ๊ฒ์ฌ์์ ๋ v2 ์ ๋ต์ ํต๊ณผํ์ต๋๋ค. humanize๋ 6๊ฐ, UUID๋ ์๋ณธ suite๋ฅผ ํฌํจํ 218๊ฐ terminal pass๋ฅผ ๊ธฐ๋กํ์ต๋๋ค. ์์ ๋ณ ์ค๋ต ํ ์ข ๋ฅ๋ ๊ฑฐ์ ๋๊ณ , UUID์ ๋์ ํธ์ถยท์๋ณธ ํค๋ ๋ณ๊ฒฝยท์ถ๊ฐ helper์ humanize์ import ๋ณ๊ฒฝ์ ์คํ ์ ์ unknown์ด ๋์ต๋๋ค. ๊ฐ์ ์ฌ๋ฐ๋ฅธ ๊ตฌํ์ Go 1.22์ ์ ์-range ๋ฌธ๋ฒ์ ๋ฃ์ผ๋ฉด ๊ธฐ์กด v1์์๋ ํต๊ณผํ๊ณ ์ v2์์๋ ์ปดํ์ผ ๋จ๊ณ์์ ๊ฑฐ์ ๋์ต๋๋ค. ์ด๋ ์ธ์ด ์กฐ๊ฑด ์ฐจ์ด๋ฅผ ํ์ธํ๋ ๊ฐ๋ฐ ๋์กฐ๊ตฐ์ด๋ฉฐ ๋ชจ๋ธ ์คํ์ด ์๋๋๋ค.
accepted์ unknown์ ๋ฒ์
๋ ๋ฆฝ ๊ฒ์ฌ๊ธฐ๋ ํ๋ณด๊ฐ ๋ง๋ ํ ์คํธ๋ฅผ ์ฑ๊ณต ๊ทผ๊ฑฐ๋ก ์ฌ์ฉํ์ง ์์ต๋๋ค. ์๋ณธ ํ ์คํธ์ ๋ณ๋ ๊ณ ์ ๊ณ์ฝ์ด ์คํ๋์ด ์๊ตฌํ ์ด๋ฆ์ ํ ์คํธ๊ฐ ์ ํํ ํจํค์ง์์ ์ข ๋ฃํด์ผ ํฉ๋๋ค. ์์ ํ ํ์ผ์ trusted Go 1.27.1 gofmt์ ๋ง์์ผ ํฉ๋๋ค.
UUID checker๋ ์ ํํ ์๋ณธ prefix ๋๋ ๊ณ ์ formatter ๊ฒฐ๊ณผ ๋ค์ ํจ์ ํ๋, ์ง์ญ ๊ฐ ์ฐ๊ธฐ์ ๋ช
์๋ ์์ ํธ์ถ ๋ชฉ๋ก๋ง ์ง์ํฉ๋๋ค. ํจ์ ๋ณ์นญ์ ํตํ ํธ์ถ, ํฌ์ธํฐ, ์ถ๊ฐ helper, ๋์์ฑ, ์ ์ญ ๋ณ๊ฒฝ ๋ฑ์ ์ฌ๋ฐ๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๋ด๋๋ผ๋ verifier_unknown์
๋๋ค. humanize์ ์ด UUID ์ ์ฉ ์ ํ์ ์ ์ฉํ์ง๋ ์์ต๋๋ค. ์ง์ ๋ฐ ํํ, ๊ฒ์ฆ ํ๊ฒฝ ์ค๋ฅ, ์๋น์ค ์ค๋ฅ์ ์ฌ์ฉ๋ ๋๋ฝ์ ๋ชจ๋ธ์ ํ๋ ์คํจ๋ ์ฌ์ฉ๋ 0์ผ๋ก ๋ฐ๊พธ์ง ์์ต๋๋ค.
์๋ณธ MITยทBSD-3-Clause LICENSE๋ ๋ณ๋๋ก SHA๋ฅผ ํ์ธํ ๋ค ๊ฒ์ฆ ๋๋ ํฐ๋ฆฌ์ ๊ณ ์ ๋ณต์ฌํฉ๋๋ค. ํ๋ณด LICENSE์ ๋ด์ฉ์ ์ฑ๊ณต ๋ผ๋ฒจ์ด ํ๊ฐํ๋ ๋์์ด ์๋๋๋ค. accepted๋ ํ๋ณด ๋๋ ํ์ ๋ฐฐํฌ์ attribution ์ค์๋ฅผ ์ธ์ฆํ์ง ์์ต๋๋ค. UUID์ ์๋ณธ copyright header๋ ํ๊ฐ ๋์ ์์ค prefix์ ์ผ๋ถ์ด๋ฏ๋ก strict shape ๊ฒ์ฌ๋ก ๋ณด์กดํฉ๋๋ค. ์ด ๋ฒ์์ ์์ค ๋ผ์ด์ ์ค ํ์ธ์ ๋ชจ๋ธ ํ์ตยท๊ฐ์ค์นยท๋ฐ์ดํฐ ๋ฐฐํฌ ํ๊ฐ๋ก ํ๋ํ์ง ์์ต๋๋ค.
๋ ์์ ๊ณํ๊ณผ ์ ์ฒด ๋ค ์ฌ๋กฏ
๋ ์์ฒ์ revision์ด ๋ค๋ฅด๋ฏ๋ก ์์ ๋ง๋ค ๋ณ๋์ child plan์ ๋ก๋๋ค. ๊ฐ child plan์๋ ๋ ํ๋กํ์ ์๋ ํ๋์ฉ์ ๋ฃ๊ณ parent manifest๊ฐ ๋ child plan SHA์ ์ด ๋ค ์ฌ๋กฏ์ ์์๋ฅผ ๊ณ ์ ํฉ๋๋ค. ์ฌ๊ธฐ์ parent๋ ์คํ ์์ฐ์ ๋ฌถ๋ ๊ณํ์ด๋ฉฐ ์ ๋ถ๋ชจยท์์ ๋ชจ๋ธ์ ํ์ตํ๋ค๋ ๋ป์ด ์๋๋๋ค. parent๊ฐ ์์ SHA๋ฅผ ์ฐธ์กฐํ๋ฏ๋ก ์ํ ํด์๋ฅผ ๋ง๋ค์ง ์์ต๋๋ค.
ํ๋์ ๊ณ ์ manifest์ ํ๋์ private durable ledger์์ ์์ฝ์ ์ต๋ 4๊ฐ์ด๊ณ ๋์์ ํ์ฑ controller๋ 1๊ฐ์ ๋๋ค. ๋ชจ๋ธ ์์ ์ ์ ์ฌ๋กฏ์ ์์ฝํ๋ฉฐ ์ค๋ณต, ์์ ์ค๋ฅ, ๋ค๋ฅธ task/profile/Prompt/recipe ์ฐ๊ฒฐ๊ณผ ๋ค์ฏ ๋ฒ์งธ ์์ฝ์ ๊ฑฐ์ ํฉ๋๋ค. ์คํจํ ์ฌ๋กฏ๋ ํ๋ถํ๊ฑฐ๋ ์๋ ์ฌ์๋ํ์ง ์์ต๋๋ค. crash๋ ์์ ์ฆ๊ฑฐ ๋๋ฝ ๋ฑ ๋ถ๋ช ํํ ์ํ๋ ์ถ์ธกํด ๋ณต๊ตฌํ์ง ์๊ณ fail closed๋ก ์ค๋จํฉ๋๋ค. ์์ฝ ์, durable ์์ marker, terminal receipt์ ์์ ์ํ ๋ฏธํ์ธ์ ์๋ก ๋ค๋ฅธ ์์ ๋๋ค.
์ด ์ ํ์ ํด๋น ledger์ ์คํ์๋ง ์ ์ฉํฉ๋๋ค. ๋ค๋ฅธ ledger๋ฅผ ์๋ก ๋ง๋๋ ๊ฒ์ ๋ง๋ ํธ์คํธ ์ ์ฒดยท๊ณ์ ์ ์ฒด ์์ฐ์ด ์๋๋ฉฐ, provider ๋ด๋ถ ์์ฒญยท์ฌ์๋ ํ์๋ ์ ํํ๊ฑฐ๋ ์ธก์ ํ์ง ์์ต๋๋ค. ํ ์คํ์ ๋ค๋ฅธ ledger๋ก ์ฌ์คํํด cap์ ์ฐํํ๋ฉด ์ ๋ฉ๋๋ค. ์์ฝยทleaseยทstop ํ์ผ์ ์ญ์ ํ๊ฑฐ๋ ledger๋ฅผ ์๋ resetํด ์ฌ๊ฐํ๋ ์์ ํ์ง ์์ ๋ณต๊ตฌ ๊ฒฝ๋ก๋ ์ ๊ณตํ์ง ์์ต๋๋ค.
์ค์ ๋ชจ๋ธ ์คํ ์ gate
- ์ source์ ๊ณต๊ฐ CI์ ๋ ๋ฆฝ ๊ฒํ ๋ฅผ ํ์ธํ๊ณ clean executorยทGoยทCLI hashes๋ฅผ ๊ณ ์ ํฉ๋๋ค. ์ค๋น ๋ฌธ์๋ง์ผ๋ก ํต๊ณผ๋ฅผ ์ฃผ์ฅํ์ง ์์ต๋๋ค.
- ์๋ณธ closureยท๋ผ์ด์ ์ค์ v1 ๋ณด์กด ํ๊ท๋ฅผ ํ์ธํ๊ณ v2 Specยท์ ์ฒด stdinยทContractยทrecipe๋ฅผ ๋ด์ธํฉ๋๋ค. ๋ชจ๋ธ ์์ฒด ๊ฒ์ฌ๋ ์๋ณธ ์ธ์ด๋ก ์คํ๋๊ณ
go.mod๊ฐ ๋ฐ๋์ง ์๋์ง ํ์ธํฉ๋๋ค. - ๋ child plans์ parent manifest๋ฅผ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ธฐ ์ ์ ๊ณ ์ ํฉ๋๋ค. ledger์ ์ค๋ณตยท๋์ ์คํยท์์ยทํ๋ถ ๊ธ์ง๋ฅผ ๋ชจ๋ธ ์๋ ๊ฒ์ฌ๋ก ํ์ธํ๊ณ ์ค์ CLI ์ฐ๊ฒฐ๋ ๊ฒ์ฆํฉ๋๋ค.
- ๊ณ ์ ์ ๋ ฅ์ ์ฌ์ ๋ผ์ฐํฐ ๊ด์ธก๊ณผ ์์ฒญ ํ๋กํ์ ๊ธฐ๋กํ ๋ค์๋ง ์ ํ๋ ์คํ์ ์์ํฉ๋๋ค. ์์ฒญ ์ค์ ๊ณผ ์ค์ ์ ๊ณต๋ ๋ชจ๋ธ, ์ ์ฒด ์ฌ์ฉ๋ยท์๊ฐยท์คํจ ์ํยท๊ฒ์ฆ ์ํ๋ฅผ ๊ตฌ๋ถํฉ๋๋ค.
์ด gate ์ดํ ๋ ์์ฒญ์ ์ค์ ๋ค ๊ด์ธก์ ํ๋ณดํ์ง๋ง, ์ผ๋ฐ์ ์ธ ๋น๊ต ์ฑ๋ฅ, ์ ๊ฐ ๊ธ์ก, ๊ตฌ๋ ์๋ชจ์จ์ด๋ ์ด์ ์์ ๋ชฉํ ๋ฌ์ฑ์ ํ์ธํ์ง ๋ชปํ์ต๋๋ค. ์ ํํ ๊ฐ๋ฐ ๋์กฐ๊ตฐ๊ณผ ๋ค ๊ด์ธก์ผ๋ก ๋๋ฉ์ธ๋ณ 2,400๊ฐ์ ๋ ๋ฆฝ ์ต์ข ์์ฒญ์ ๋์ ํ ์ ์์ต๋๋ค. ๋น์ฉยท์ฑ๊ณต ๊ฐ๋ฅ ๋ชจ๋ธ ์งํฉ์ ํ์ต ๋ผ๋ฒจ์ ๋ณ๋ ์ ๊ฒฉ์ฑ ๊ฒํ ์ดํ์๋ง ๊ณ ๋ คํฉ๋๋ค.
๋ชจ๋ธ์ ํธ์ถํ์ง ์๊ณ ๋ด์ฉ ํ์ธํ๊ธฐ
mkdir -p .cache/bin
go build -trimpath -o .cache/bin/riido-taskverify ./cmd/riido-taskverify
.cache/bin/riido-taskverify --task go55-humanize-ordinal64-v2 --spec
.cache/bin/riido-taskverify --task go55-uuid-canonical-parse-v2 --spec
์ ์ฒด Prompt์ ๋ฒ์ ์ฐ๊ฒฐ์ v2 definitions, recipe๋ evaluation recipe, ๊ณ ์ ํด์์ ๋ก์ปฌ ๋์กฐ ๊ฒ์ฌ๋ v2 tests์ ์์ต๋๋ค. ledger ์ฐ๊ฒฐ์ parent budget๊ณผ executor์ ๋ณ๋ ๊ฒ์ฆ ๋ฒ์์ ๋๋ค. ์ด ๋ฌธ์์๋ ๋ชจ๋ธ ์๋ฌธ traceยท์ธ์ฆยท๊ฐ์ธ ์ฝ๋ยท๊ฐ์ค์น๋ฅผ ํฌํจํ์ง ์์ต๋๋ค.