diff --git a/.claude/qa-request/m3-implementation-round12.md b/.claude/qa-request/m3-implementation-round12.md index 05b7000..a3268f1 100644 --- a/.claude/qa-request/m3-implementation-round12.md +++ b/.claude/qa-request/m3-implementation-round12.md @@ -34,7 +34,8 @@ | `H-227` | โ‘  | 1 | ๐ŸŸก | (`/code-review high`) `local Dispatch = {} :: any`๊ฐ€ ์ƒ์‚ฐ์ž ํ‘œ๋ฉด์„ `quad-types` ์„ ์–ธ๊ณผ ๋Œ€์กฐ ๋ถˆ๋Šฅ์œผ๋กœ ๋งŒ๋“ฆ โ€” `H-25`๊ฐ€ ๋ง‰์œผ๋ ค๋˜ ๋“œ๋ฆฌํ”„ํŠธ๊ฐ€ ์ƒ์‚ฐ์ž ์ชฝ์—์„œ ๋ฌด๊ฒ€์‚ฌ | โœ… ๋ฐ˜์˜ โ€” ๋กœ์ปฌ ํ•จ์ˆ˜ ์ •์˜ ํ›„ `local Dispatch: Dispatch = { โ€ฆ }` ํƒ€์ž… ์ฃผ์„ ์กฐ๋ฆฝ(analyze๊ฐ€ ํ‘œ๋ฉด ๊ฒ€์‚ฌ) | | `H-228` | โ‘  | 1 | ๐ŸŸข | (ํƒ์‚ฌ์ž) `describeHandler`๊ฐ€ `name` ๋ถ€์žฌ ์‹œ `"?"`๋ฅผ ์ด๋ฆ„ ์ž๋ฆฌ์— ์ฐ๋Š”๋‹ค โ€” `dispatch-core-plan.md` "ํ•ธ๋“ค๋Ÿฌ ๊ณ„์•ฝ" ์ ˆ์˜ `H-214` ๋ธ”๋ก์€ *"์—†์œผ๋ฉด priority๋งŒ ๋ณด์ธ๋‹ค"*. ์‹ค์ธก: `handler priority tie between "?" (priority 5) and "?" (priority 5)` | โœ… ๋ฐ˜์˜ โ€” ์ฝ”๋“œ๋ฅผ ๋ฌธ์„œ์— ๋งž์ถค: ์ด๋ฆ„ ๋ถ€์žฌ ์‹œ `(priority N)`๋งŒ | | `H-229` | **โ‘ก** | 1 | ๐Ÿ”ด | (์‚ฌ์šฉ์ž ๋˜๋ฌผ์Œ โ†’ ๊ฒ€์ฆ ํ™•์ธ) **`H-218`์˜ ๋ˆ„์ˆ˜๋Š” ์œ„์ž„ ๊ฒฝ๋กœ๋งŒ์˜ ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋‹ค โ€” ์ผ๋ฐ˜ `Destroy` ๊ฒฝ๋กœ ์ „์ฒด๊ฐ€ ๊ฐ™์€ ํŒจํ„ด์œผ๋กœ ์ƒŒ๋‹ค.** Destroy ์‹œ retract๋ฅผ ์•ˆ ๋ถ€๋ฅด๋Š” ๊ฑด ๊ณ„์•ฝ("์˜ค์ง ๊ฐ™์€ key์— ์ƒˆ ๊ฐ’" ์‹œ๋‚˜๋ฆฌ์˜ค๋งŒ)์ธ๋ฐ, gchold ์„ฌ์€ Destroy๋กœ ๋ฌด๋„ˆ์ ธ๋„ **`chains`์˜ ๊ฐ•ํ•œ ๋ฒ„ํ‚ท ๊ฐ’์ด retractorโ†’`inst`๋ฅผ ๋ณ„๋„ ๋ฃจํŠธ๋กœ ๋ถ™์žก์•„** weak ํ•ญ๋ชฉ์ด ์˜์˜ ์•ˆ ๋น„์›Œ์ง„๋‹ค โ€” ๋ฐ˜์‘ํ˜• ๋ฐ”์ธ๋”ฉ์ด ํ•˜๋‚˜๋ผ๋„ ์žˆ๋˜ ๋ชจ๋“  ํŒŒ๊ดด ์ธ์Šคํ„ด์Šค๊ฐ€ ์†Œ๋Ÿ‰ ๋ถ€๊ธฐ+`inst` userdata๋ฅผ ์˜๊ตฌ ์ž”์กด์‹œํ‚ค๊ณ , ์ฃฝ์€ Observer๊ฐ€ ์ƒ๋ฅ˜ State์˜ ์ „ํŒŒ ์ˆœํšŒ์— ๊ณ„์† ๋‚จ๋Š”๋‹ค(ํšŒ๋‹น `canExecute` ์Šคํ‚ต ๋น„์šฉ) | โณ ยง4 ๋Œ€๊ธฐ โ€” ๋ถ„์„ ์ƒ์„ธ๋Š” ์•„๋ž˜ `H-229` ์ ˆ | -| `H-230` | **โ‘ก** | 1 | ๐ŸŸข | (์‚ฌ์šฉ์ž ์ œ์•ˆ) ๊ณต์œ  ์ƒ์ˆ˜์˜ ๋ฐฐ์น˜ โ€” `HANDLER_PRIORITY_*`๋ฅผ quad-base ๋ฐ–(๋ฐฑ์—”๋“œ)์—์„œ๋„ ์˜๋ฏธ ์žˆ๊ฒŒ ์“ฐ๋ ค๋ฉด `quad-const` ์‹ ์„ค ๋˜๋Š” `quad-types` ์Šน๊ฒฉ์ด ํ•„์š”ํ•˜๋‹ค๋Š” ์ œ์•ˆ + error `level` ๋„˜๋ฒ„๋„ Enumํ™”ํ•˜์ž๋Š” ์ œ์•ˆ | โณ ยง4 ๋Œ€๊ธฐ โ€” ๊ถŒ๊ณ : ์šฐ์„ ์ˆœ์œ„ ์ƒ์ˆ˜๋Š” `quad-types` ์Šน๊ฒฉ (a), level Enumํ™”๋Š” ๋น„๊ถŒ๊ณ (ํ”„๋ ˆ์ž„ ์ˆ˜๋ผ ์ž๋ฆฌ๋งˆ๋‹ค ๊ฐ’์ด ๊ฐˆ๋ฆผ) | +| `H-230` | **โ‘ก** | 1 | ๐ŸŸข | (์‚ฌ์šฉ์ž ์ œ์•ˆ) ๊ณต์œ  ์ƒ์ˆ˜์˜ ๋ฐฐ์น˜ โ€” `HANDLER_PRIORITY_*`๋ฅผ quad-base ๋ฐ–(๋ฐฑ์—”๋“œ)์—์„œ๋„ ์˜๋ฏธ ์žˆ๊ฒŒ ์“ฐ๋ ค๋ฉด `quad-const` ์‹ ์„ค ๋˜๋Š” `quad-types` ์Šน๊ฒฉ์ด ํ•„์š”ํ•˜๋‹ค๋Š” ์ œ์•ˆ. ~~error `level` ๋„˜๋ฒ„ Enumํ™”~~๋Š” ํšŒ์‹  3์˜ ์›Œ์ปค ์„ค๊ณ„๋กœ **`H-231`์— ํก์ˆ˜**(๋ฆฌํ„ฐ๋Ÿด ์ „์ œ์˜ "ํ”„๋ ˆ์ž„ ์ˆ˜๋ผ Enum ๋ถˆ๊ฐ€" ๋ฐ˜๋ก ์€ ์›Œ์ปค๊ฐ€ ์†Œ๋ฉธ์‹œํ‚ด) | โณ ยง4 ๋Œ€๊ธฐ โ€” ๊ถŒ๊ณ : ์šฐ์„ ์ˆœ์œ„ ์ƒ์ˆ˜๋Š” `quad-types` ์Šน๊ฒฉ (a) | +| `H-231` | **โ‘ก** | 1 | ๐ŸŸก | (์‚ฌ์šฉ์ž ์„ค๊ณ„, ํšŒ์‹  3) **error ์œ ํ‹ธ ๋ชจ๋“ˆ** โ€” `setLevel(fn, tag)` ๋“ฑ๋ก ๋งต + `debug.info(i, "f")` ์Šคํƒ ์›Œ์ปค๋กœ "์›ํ•˜๋Š” ๊ณ„์ธต๊นŒ์ง€ ์˜ฌ๋ ค์„œ" error๋ฅผ ๋‚ด๋Š” ์œ ํ‹ธ(type-version-check์ฒ˜๋Ÿผ ๋…๋ฆฝ ํŒจํ‚ค์ง€). ํ”„๋ ˆ์ž„ ์ˆ˜ ์† ์„ธ๊ธฐ(2ยท3 ๊ฐˆ๋ฆผ, `H-219`์˜ drive ๋„์ฐฉ์ง€ ํ•œ๊ณ„, `H-212` ์Šคํ… level ๋ฏธ์ •)๊ฐ€ ์ „๋ถ€ ์ž์—ฐ ํ•ด์†Œ๋˜๊ณ  level์ด ์ง„์งœ ์˜๋ฏธ Enum์ด ๋œ๋‹ค. ์—๋Ÿฌ๋Š” cold path๋ผ `debug.info` ๋น„์šฉ ๋ฌด์‹œ ๊ฐ€๋Šฅ(์‚ฌ์šฉ์ž ๋…ผ๊ฑฐ, ๋™์˜) | โณ ยง4 ๋Œ€๊ธฐ โ€” ์„ธ๋ถ€ ๋ฌธํ•ญยท๊ถŒ๊ณ ๋Š” ์•„๋ž˜ `H-231` ์ ˆ | ### `H-212` โ€” base ์˜์‚ฌ์ฝ”๋“œ error๊ฐ€ error ๊ณ„์•ฝ ์ด์ „ ํ‘œ๊ธฐ๋กœ ๋‚จ์•„ ์žˆ์—ˆ๋‹ค (โ‘ ) @@ -130,6 +131,71 @@ bind๋“ค์ด ์ž๋™์œผ๋กœ ๋Š์–ด์ง€๊ณ  gchold๊ฐ€ ์‚ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์—ˆ๋‹ค๋Š” ๊ฑด๋ฐ ์ „๋ถ€ `Void`(์บก์ฒ˜ ์—†์Œ)๋ผ ์ƒˆ์ง€ ์•Š๋Š”๋‹ค โ€” ์ƒˆ๋Š” ๊ฒƒ์€ ๋ฐ˜์‘ํ˜• ๋ฐ”์ธ๋”ฉ์ด ์žˆ๋˜ ๊ฒƒ๋“ค์ด๋‹ค. +**[2026-08-31 ํšŒ์‹  3 โ€” ์‚ฌ์šฉ์ž ๋ณ„ํ•ด ๊ฒ€ํ† ]** ์‚ฌ์šฉ์ž ์ œ์•ˆ: *"retract ํด๋กœ์ €๊ฐ€ +inst๋ฅผ ๋ฐ›์œผ๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค๋Š” ๋А๋‚Œ. retractFrom์ด๋‚˜ process์—์„œ ์ด๋ฏธ inst๋ฅผ +์•Œ๊ณ  โ€ฆ ์˜จ๋””๋งจ๋“œ๋กœ ๋„˜๊ฒจ์ค„ ์ˆ˜ ์žˆ์–ด. ๊ทธ๋Ÿฌ๋ฉด retract ์ž์ฒด๊ฐ€ ์—…๋ฐธ๋ฅ˜๋ฅผ ์บ์น˜ํ•˜์ง€ +์•Š๊ฒŒ ๋ผ"* + ์Šค์Šค๋กœ ๋‹จ ์บ๋น„์—‡: *"์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ๋“  ์‹ค์ˆ˜๊ฐ€ ๋‚˜๊ฒŒ ๋œ๋‹ค๋ฉด Strong +์ด๋ผ์„œ gc๊ฐ€ ์•ˆ ๋˜๋Š” ์‚ฌ๊ณ ๊ฐ€ ๋‚  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์–ด ํ›„์ž(gchold ์•ต์ปค)๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒŒ +์•ˆ์ „ํ•ด๋ณด์ด๊ธฐ๋Š” ํ•ด"*. **๊ฒ€ํ†  ๊ฒฐ๊ณผ โ€” ์ธ์ž ์ „๋‹ฌ๋งŒ์œผ๋กœ๋Š” ๊ฒฝ๋กœ๊ฐ€ ์•ˆ ๋Š๊ธด๋‹ค**: +retractor๊ฐ€ `inst`๋ฅผ ์ง์ ‘ ์บก์ฒ˜ํ•˜์ง€ ์•Š์•„๋„, StoreBind๋ฅ˜ retractor๋Š” ์ž๊ธฐ +Observer๋ฅผ ์บก์ฒ˜ํ•ด์•ผ ํ•˜๊ณ (๊ตฌ๋… ํ•ด์ œ ๋Œ€์ƒ) ๊ทธ **Observer์˜ ์ฝœ๋ฐฑ์ด ์žฌ๋””์ŠคํŒจ์น˜๋ฅผ +์œ„ํ•ด `inst`๋ฅผ ์บก์ฒ˜**ํ•œ๋‹ค โ€” chains โ†’ retractor โ†’ observer โ†’ fn โ†’ `inst` +๊ฒฝ๋กœ๊ฐ€ ๊ทธ๋Œ€๋กœ ๋‚จ๋Š”๋‹ค. ์ด๊ฑธ ๋๊นŒ์ง€ ๋Š์œผ๋ ค๋ฉด ํ•ธ๋“ค๋Ÿฌ ์ƒํƒœ๋ฅผ ํด๋กœ์ € ๋ฐ–(weak +์…€/Relate ์กฐํšŒ)์œผ๋กœ ๋ฐ€์–ด๋‚ด์•ผ ํ•˜๋Š”๋ฐ, ๊ทธ๊ฑด ํ™•์ • ์„ค๊ณ„("๋‹จ๋ฐœ์„ฑ handoff๋Š” +upvalue ์บก์ฒ˜๋กœ ์ถฉ๋ถ„" โ€” ์˜› `kSlotMap` ์‚ญ์ œ, Handler ์ž‘์„ฑ ์ฒดํฌ๋ฆฌ์ŠคํŠธ 4๋ฒˆ)์˜ +์—ญ์ „์ด๊ณ , **๋ถˆ๋ณ€์‹์ด ๋ชจ๋“  ํ•ธ๋“ค๋Ÿฌ ์ž‘์„ฑ์ž(์„œ๋“œํŒŒํ‹ฐ ํฌํ•จ)์—๊ฒŒ ๋ถ„์‚ฐ**๋˜๋ฉฐ +์œ„๋ฐ˜์˜ ์ฆ์ƒ์ด ์กฐ์šฉํ•œ ์˜๊ตฌ ๋ˆ„์ˆ˜๋‹ค. gchold ์•ต์ปค((a))๋Š” ์บก์ฒ˜ ์ธ์ฒด๊ณตํ•™์„ +๊ทธ๋Œ€๋กœ ๋‘๊ณ  ๋ถˆ๋ณ€์‹์„ **Dispatch ์•ˆ์˜ ํ•œ ์ค„**์— ์ค‘์•™ํ™”ํ•œ๋‹ค โ€” ์‚ฌ์šฉ์ž์˜ ์•ˆ์ „ +์ง๊ฐ๊ณผ ๊ฐ™์€ ๊ฒฐ๋ก . + +### `H-231` โ€” error ์œ ํ‹ธ ๋ชจ๋“ˆ: ์Šคํƒ ์›Œ์ปค๋กœ level ์† ์„ธ๊ธฐ๋ฅผ ์—†์•ค๋‹ค (โ‘ก, ์‚ฌ์šฉ์ž ์„ค๊ณ„) + +์‚ฌ์šฉ์ž ์„ค๊ณ„(ํšŒ์‹  3): *"error ์ž์ฒด๋ฅผ ๋ชจ๋“ˆ๋กœ์จ ์ œ๊ณต โ€ฆ `debug.info(2, "f")`๋ฅผ +ํ•˜๋ฉด ๊ฐ ํ”„๋ ˆ์ž„์— ๋Œ€ํ•œ ํ•จ์ˆ˜๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ์–ด. ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•จ์ˆ˜๋ฅผ ํƒœ๊ทธํ•ด์ฃผ๋Š” ๋งต๋งŒ +์žˆ๋‹ค๋ฉด ์—๋Ÿฌ๋ฅผ ์›ํ•˜๋Š” ๋ ˆ๋ฒจ๊นŒ์ง€ ๋‚ฎ์ถฐ์„œ ๋‚ด์ค€๋‹ค๋ฅผ ์ง€๊ธˆ์ฒ˜๋Ÿผ ์–ด๋ ต๊ฒŒ ์„ธ์–ด ๊ฐ€๋ฉฐ ์ฒ˜๋ฆฌ +์•ˆ ํ•ด๋„ ๋˜๊ณ , ์—ฌ๋Ÿฌ ๋ž˜ํผ๊ฐ€ ๋“ค์–ด๊ฐ€๋„ ์‚ฌ์šฉ์ž ์ง€์ ๊นŒ์ง€ ํ™•์‹คํžˆ ์˜ฌ๋ ค๋‚ผ ์ˆ˜ ์žˆ์–ด โ€ฆ +type-version-check์™€ ์œ ์‚ฌํ•˜๊ฒŒ ์™ธ๋ถ€์— ์œ ํ‹ธ์„ ํŒŒ. `setLevel(fn, num)` โ€ฆ ๋“ฑ๋ก ์•ˆ +๋œ ํ•จ์ˆ˜๋Š” level 0 โ€ฆ ๊ทธ๋Ÿฌ๋ฉด num์„ Enum์œผ๋กœ ๋‘˜ ์ˆ˜ ์žˆ๊ณ , ์šฐ๋ฆฌ๊ฐ€ ํ•œ๊ณ„๋ผ๊ณ  ํ–ˆ๋˜ +๋ถ€๋ถ„์ด ํ•ด์†Œ๋ผ"* + ์œ ์˜์ (์ถ”๊ฐ€ ํšŒ์‹ ): *"ํด๋กœ์ €๋กœ ์ž…๋ ฅ ๋ฐ›์€ ๊ฒƒ๋„ ์ž…๋ ฅ ๋ฐ›์€ +์ธก์—์„œ level์„ ์„ค์ •ํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์–ด โ€ฆ (์•ˆ ๊ทธ๋Ÿผ ์ค‘๊ฐ„์— ์งค๋ฆด ์ˆ˜๋„ ์žˆ์œผ๋‹ˆ๊นŒ) +์•„๋‹ˆ๋ฉด ์ตœ์ƒ๋‹จ๋ถ€ํ„ฐ ๊ตฌํ•œ ๋‹ค์Œ, ๊ฑฐ๊ธฐ์„œ ์ง„์ž…ํ•˜๋Š” ๊ฒŒ ์˜ณ์„ ์ˆ˜๋„ ์žˆ์–ด"*. + +**ํ‰๊ฐ€ โ€” ์ฑ„ํƒ ๊ถŒ๊ณ .** ์ด ์œ ํ‹ธ์ด ์žˆ์œผ๋ฉด: `H-219`์˜ drive ๋„์ฐฉ์ง€ ํ•œ๊ณ„(ํ˜„ํ–‰ +์œ ์ง€๋กœ ๋‹ซ์•˜๋˜ ๊ฒƒ)๊ฐ€ ๊ทผ๋ณธ ํ•ด์†Œ๋˜๊ณ , `H-212`๊ฐ€ "๊ตฌํ˜„ ์‹œ์  ๋ชซ"์œผ๋กœ ๋ฏธ๋ฃฌ ์ฃผ์ž… op +์Šคํ… level๋„ ๋‹ต์ด ์ƒ๊ธฐ๋ฉฐ, `H-205`๋ฅ˜ "ํ—ฌํผ ํ”„๋ ˆ์ž„ ํ•˜๋‚˜์— 2โ†’3" ์† ์„ธ๊ธฐ๊ฐ€ +์‚ฌ๋ผ์ง„๋‹ค. ์—๋Ÿฌ๋Š” cold path๋ผ ๋น„์šฉ ๋…ผ๊ฑฐ๋„ ๋งž๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์งš์€ "์ค‘๊ฐ„์— ์งค๋ฆผ"์ด +์ •ํ™•ํžˆ ๊ธ‰์†Œ๋‹ค โ€” ์„ธ๋ถ€ ์„ ํƒ์ง€: + +- **์›Œ์ปค ๋ฐฉํ–ฅ** โ€” **(i) ์ตœ์ƒ๋‹จ ํ•˜๊ฐ•(๊ถŒ๊ณ , ์‚ฌ์šฉ์ž ํ›„์ž ์ œ์•ˆ)**: ์Šคํƒ ์ตœ์ƒ๋‹จ + (์‚ฌ์šฉ์ž ๋ฃจํŠธ)์—์„œ ๋‚ด๋ ค์˜ค๋‹ค **์ฒ˜์Œ ๋งŒ๋‚˜๋Š” ๋“ฑ๋ก(quad) ํ”„๋ ˆ์ž„์˜ ์ง์ „**์—์„œ + ๋‚ธ๋‹ค. ๋“ฑ๋ก์ด ํ•„์š”ํ•œ ๊ฑด quad์˜ ์ •์  ํ‘œ๋ฉด + `addHandler`/์ฃผ์ž… ์‹œ์ ์— ๋ฐ›๋Š” + ์ œ๊ณต์ž ํด๋กœ์ €๋ฟ(1ํšŒ์„ฑ) โ€” ๋Ÿฐํƒ€์ž„์— ์ƒ๊ธฐ๋Š” ์ต๋ช… ํด๋กœ์ €(retractor, observer + ์ฝœ๋ฐฑ)๋Š” ๊ฒฝ๊ณ„ ์•„๋ž˜๋ผ ์• ์ดˆ์— ๊ฒ€์‚ฌ ์•ˆ ๋˜๋ฏ€๋กœ "์ค‘๊ฐ„์— ์งค๋ฆผ"์ด ๊ตฌ์กฐ์ ์œผ๋กœ ์—†๋‹ค. + blame์€ ํ•ญ์ƒ "quad๋กœ ๋“ค์–ด์˜จ ์ตœ์ƒ์œ„ ์ง„์ž…์ ์˜ ํ˜ธ์ถœ๋ถ€"(drive๋ฉด `New` ํ˜ธ์ถœ๋ถ€, + ์ „ํŒŒ๋ฉด `:Set` ํ˜ธ์ถœ๋ถ€) โ€” ์ผ๊ด€๋˜๊ณ  ์•ˆ์ „. / + (ii) ์—๋Ÿฌ ์ง€์  ์ƒ์Šน(์ฒซ ๋ฏธ๋“ฑ๋ก ํ”„๋ ˆ์ž„์— blame): ์ƒŒ๋“œ์œ„์น˜๋œ ์‚ฌ์šฉ์ž + ์ฝœ๋ฐฑ๊นŒ์ง€ ์ •๋ฐ€ blame๋˜์ง€๋งŒ, quad๊ฐ€ **๋งŒ๋“ค๊ฑฐ๋‚˜ ๋ฐ›๋Š” ๋ชจ๋“ ** ํด๋กœ์ €(retractor + ํฌํ•จ โ€” ๋งค `process`๋งˆ๋‹ค ์ƒ์„ฑ๋˜๋Š” ํ•ซํŒจ์Šค!)๋ฅผ ๋“ฑ๋กํ•ด์•ผ ํ•˜๊ณ  ๋ˆ„๋ฝ ํ•˜๋‚˜๊ฐ€ + ๋‚ด๋ถ€ ํด๋กœ์ €๋ฅผ ์‚ฌ์šฉ์ž๋กœ ์˜ค์ธ์‹œํ‚จ๋‹ค. ์ •๋ฐ€๋„ ์ด๋“ ๋Œ€๋น„ ๊ทœ์œจ ํ‘œ๋ฉด์ด ๋„ˆ๋ฌด ๋„“๋‹ค. +- **๋ฐฐ์น˜** โ€” type-version-check์ฒ˜๋Ÿผ **๋…๋ฆฝ ์›Œํฌ์ŠคํŽ˜์ด์Šค ํŒจํ‚ค์ง€**(๊ฐ€์นญ + `quad-error`): ๋ฐฑ์—”๋“œ(EngineOps ์Šคํ…ยทํ•ธ๋“ค๋Ÿฌ)๋„ ์จ์•ผ ํ•˜๋Š”๋ฐ ๊ทธ์ชฝ์€ + quad-base๋ฅผ ์˜์กดํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ด๋ฆ„์€ ์‚ฌ์šฉ์ž ํ™•์ • ๋Œ€์ƒ. +- **Enum ๊ตฌ์„ฑ** โ€” `H-222`์˜ ํ‘œ์™€ 1:1๋กœ: ์˜ˆ) `Level.User`(์‚ฌ์šฉ์ž ํ˜ธ์ถœ๋ถ€๊นŒ์ง€) / + `Level.Provider`(์ œ๊ณต์ž ๊ณ„์•ฝ ์œ„๋ฐ˜ โ€” ๊ฐ™์€ ์›Œ์ปค, ๋“ฑ๋ก ์ง‘ํ•ฉ๋งŒ ๋‹ค๋ฅด๊ฒŒ ๋ณผ์ง€) / + `Level.Here`(๋‚ด๋ถ€ ๋ถˆ๋ณ€์‹ = ๊ทธ ์ž๋ฆฌ, ์›Œ์ปค ๋ถˆํ•„์š”). ๋ฉค๋ฒ„ ๊ตฌ์„ฑ์€ ํ™•์ • ๋Œ€์ƒ. +- **์„ ํ–‰ ์ŠคํŒŒ์ดํฌ(luau-test)** โ€” ์ถ”๋ก ์œผ๋กœ ํ™•์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค: (a) `debug.info`๊ฐ€ + ์ธ๋ผ์ด๋‹(-O2)ยท๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ์  ์—์„œ ํ”„๋ ˆ์ž„์„ ์–ด๋–ป๊ฒŒ ๋ณด์ด๋Š”์ง€(๋“ฑ๋ก ํ•จ์ˆ˜๊ฐ€ + ์ธ๋ผ์ธ๋˜๋ฉด ๊ฑท๊ธฐ๊ฐ€ ์งง์•„์งˆ ๋ฟ์ธ์ง€), (b) ์ฝ”๋ฃจํ‹ด ๊ฒฝ๊ณ„(์Šคํƒ ๋ฃจํŠธ๊ฐ€ ์ฝ”๋ฃจํ‹ด + ์ง„์ž…์ ์ผ ๋•Œ์˜ degrade), (c) ๊ฑท์€ ๊นŠ์ด โ†’ `error(msg, n)` ํ”„๋ ˆ์ž„ ๊ณ„์‚ฐ์ด + ์œ ํ‹ธ ์ž์‹ ์˜ ํ”„๋ ˆ์ž„์„ ์ •ํ™•ํžˆ ๋ณด์ •ํ•˜๋Š”์ง€. +- **์ด๊ด€ ์‹œ์ ** โ€” ๊ธฐ์กด error ์ž๋ฆฌ(M2 ์ปค๋ฐ‹๋ถ„ + ๋‹จ์œ„ 1)์˜ ๋ฆฌํ„ฐ๋Ÿด level์„ + ์œ ํ‹ธ ํ˜ธ์ถœ๋กœ ๋ฐ”๊พธ๋Š” ๊ฑธ ๋‹จ์œ„ 2 ์ฐฉ์ˆ˜ ์ „ ์ผ๊ด„๋กœ ํ• ์ง€, ๋งˆ์ผ์Šคํ†ค ์ง„ํ–‰ํ•˜๋ฉฐ + ์ ์ง„์œผ๋กœ ํ• ์ง€. + +`architecture.md`์˜ error ๊ณ„์•ฝ ์ ˆ(๋ฐฉ๊ธˆ ์‹ ์„คํ•œ ์ œ3 ํ–‰ ํฌํ•จ)์€ ์ฑ„ํƒ ์‹œ ์ด +์œ ํ‹ธ ๊ธฐ์ค€์œผ๋กœ ์žฌ์„œ์ˆ ๋œ๋‹ค โ€” "๋„์ฐฉ์ง€๊ฐ€ ๊ณ„์•ฝ"์ด๋ผ๋Š” ์›์น™ ์ž์ฒด๋Š” ๊ทธ๋Œ€๋กœ์ด๊ณ , +๋„์ฐฉ์ง€๋ฅผ ์„ธ๋Š” ๋ฐฉ๋ฒ•์ด ์†์—์„œ ์›Œ์ปค๋กœ ๋ฐ”๋€Œ๋Š” ๊ฒƒ. + ## ยง4 ๋ฐฐ์น˜ ๋ฌธํ•ญ์ง€ (์‚ฌ์šฉ์ž๊ฐ€ ์ฝ์„ ์œ ์ผํ•œ ์ž๋ฆฌ) **โญ [2026-08-31 ํšŒ์‹  1]** ์‚ฌ์šฉ์ž: *"๋ฐฐ์น˜ ๋ฌธํ•ญ์€ ์ค‘๊ฐ„ํ™•์ธ ์™„๋ฃŒํ–ˆ์–ด. ์ „๋ถ€ @@ -142,7 +208,13 @@ bind๋“ค์ด ์ž๋™์œผ๋กœ ๋Š์–ด์ง€๊ณ  gchold๊ฐ€ ์‚ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์—ˆ๋‹ค๋Š” ๊ฑด๋ฐ (*"Destroy ํ˜ธ์ถœ๋˜๋Š” ๊ฒƒ๋„ retract๊ฐ€ ์•ˆ ๋จน์–ด์„œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค๋Š” ๋ถ€๋ถ„ ์•„๋ƒ? ํ•œ๋ฒˆ๋งŒ ๋‹ค์‹œ ๋ด์ค˜"* โ†’ ๊ฒ€์ฆ ๊ฒฐ๊ณผ **๋งž์•˜๋‹ค**, `H-229`)๊ณผ **์ƒ์ˆ˜ ๋ฐฐ์น˜ ์ œ์•ˆ** (*"quad-const ๋“ฑ์„ ๋งŒ๋“œ๋Š” ๊ฒŒ ์ข‹์•„๋ณด์ž„ โ€ฆ ํ˜น์€ ๊ทธ๋Ÿฌํ•œ Enum ๊ฐ’๋„ ํƒ€์ž…์œผ๋กœ ๋ณด๊ณ  -quad-types์— ํ• ๋‹นํ•˜๋Š” ๊ฑด ์–ด๋–ค์ง€?"* โ†’ `H-230`). **์•„๋ž˜ ๋‘ ํ–‰์ด ํšŒ์‹  ๋Œ€๊ธฐ.** +quad-types์— ํ• ๋‹นํ•˜๋Š” ๊ฑด ์–ด๋–ค์ง€?"* โ†’ `H-230`). + +**โญ [2026-08-31 ํšŒ์‹  3]** `H-229`์— ์‚ฌ์šฉ์ž ๋ณ„ํ•ด(retractor ์ธ์ž ์ „๋‹ฌ) ๊ฒ€ํ†  +์š”์ฒญ โ€” ๊ฒ€ํ†  ๊ฒฐ๊ณผ Observer ์บก์ฒ˜ ๊ฒฝ๋กœ๊ฐ€ ๋‚จ์•„ ๋ถˆ์ถฉ๋ถ„, gchold ์•ต์ปค ์ชฝ์ด ๋งž๋‹ค๋Š” +๋ถ„์„์„ `H-229` ์ ˆ์— ์ถ”๊ฐ€. ๊ทธ๋ฆฌ๊ณ  **error ์œ ํ‹ธ ๋ชจ๋“ˆ ์„ค๊ณ„**(`setLevel` ๋งต + +`debug.info` ์Šคํƒ ์›Œ์ปค, "์ค‘๊ฐ„์— ์งค๋ฆผ" ์œ ์˜์ ๊ณผ ์ตœ์ƒ๋‹จ ํ•˜๊ฐ• ๋Œ€์•ˆ๊นŒ์ง€ ์‚ฌ์šฉ์ž +์ œ์•ˆ โ†’ `H-231`). **์•„๋ž˜ ์„ธ ํ–‰์ด ํšŒ์‹  ๋Œ€๊ธฐ.** | ๋ฒˆํ˜ธ | ๋ฌด์—‡ | ์„ ํƒ์ง€ | ๊ถŒ๊ณ  | ๊ถŒ๊ณ  ๊ทผ๊ฑฐ | |---|---|---|---|---| @@ -152,6 +224,7 @@ quad-types์— ํ• ๋‹นํ•˜๋Š” ๊ฑด ์–ด๋–ค์ง€?"* โ†’ `H-230`). **์•„๋ž˜ ๋‘ ํ–‰์ด | `H-222` | ์ œ๊ณต์ž(ํ•ธ๋“ค๋Ÿฌ ์ž‘์„ฑ์ž) ๊ณ„์•ฝ ์œ„๋ฐ˜ โ€” retractor ์ƒ๋žตยท๋งค์น˜ ์‹คํŒจ๋ฅ˜ โ€” ์˜ **`level` ๋ถ„๋ฅ˜**๊ฐ€ `architecture.md` ๊ณ„์•ฝ ํ‘œ(์‚ฌ์šฉ์ž ์ž…๋ ฅ 2 / ๋‚ด๋ถ€ ๋ถˆ๋ณ€์‹ 1)์— ์—†๋‹ค. ์ง€๊ธˆ ์ฝ”๋“œ๋Š” ์ž ์ • 2 | (a) **ํ‘œ์— ์„ธ ๋ฒˆ์งธ ํ–‰ ์‹ ์„ค** โ€” "์ œ๊ณต์ž ๊ณ„์•ฝ ์œ„๋ฐ˜ = 2(๊ทธ ๊ณ„์•ฝ์„ ์–ด๊ธด ํ˜ธ์ถœ ๊ตฌ์กฐ์— ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ํ”„๋ ˆ์ž„)" / (b) ํ‘œ๋Š” ์•ˆ ๋Š˜๋ฆฌ๊ณ  ์ž ์ • 2 ์œ ์ง€(์ฃผ์„๋งŒ) / (c) ๋‚ด๋ถ€ ๋ถˆ๋ณ€์‹์œผ๋กœ ๋ณด๊ณ  1 | **(a)** | M3 ๋‹จ์œ„ 2~4ยทM5ยทM10์˜ provider-facing error ์ „๋ถ€๊ฐ€ ๊ฐ™์€ ๋ถ„๋ฅ˜๋ฅผ ๋ฐ˜๋ณตํ•ด์„œ ๋ฌผ์„ ์ž๋ฆฌ๋ผ, ํ‘œ์— ํ•œ ์ค„ ๋„ฃ๋Š” ๊ฒŒ ์ž๋ฆฌ๋งˆ๋‹ค ์ž ์ • ํ‘œ์‹œ๋ฅผ ๋‹ค๋Š” ๊ฒƒ๋ณด๋‹ค ์‹ธ๋‹ค. (c)๋Š” "quad ์ž์‹ ์˜ ๋ฒ„๊ทธ"๊ฐ€ ์•„๋‹ˆ๋ผ ์ œ๊ณต์ž์˜ ๋ฒ„๊ทธ๋ผ ํ‘œ์˜ 1ํ–‰ ์ •์˜์™€ ์•ˆ ๋งž๋‹ค | | `H-229` | **์ผ๋ฐ˜ `Destroy` ๊ฒฝ๋กœ์˜ chains ์ž”์กด** โ€” Destroy๋Š” retract๋ฅผ ์•ˆ ๋ถ€๋ฅด๋Š” ๊ฒŒ ๊ณ„์•ฝ์ด๊ณ  gchold ์„ฌ์€ Destroy๋กœ ๋ฌด๋„ˆ์ง€์ง€๋งŒ, `chains`์˜ **๊ฐ•ํ•œ ๋ฒ„ํ‚ท ๊ฐ’**(retractorโ†’`inst` ์บก์ฒ˜)์ด ๋ณ„๋„ ๋ฃจํŠธ๋กœ ๋‚จ์•„ weak ํ•ญ๋ชฉ์ด ์˜์˜ ์•ˆ ๋น„์›Œ์ง„๋‹ค. ๋ฐ˜์‘ํ˜• ๋ฐ”์ธ๋”ฉ์ด ์žˆ๋˜ ๋ชจ๋“  ํŒŒ๊ดด ์ธ์Šคํ„ด์Šค๊ฐ€ ๋ถ€๊ธฐ+userdata ์˜๊ตฌ ์ž”์กด, ์ฃฝ์€ Observer๊ฐ€ ์ƒ๋ฅ˜ ์ „ํŒŒ ์ˆœํšŒ์— ์ž”๋ฅ˜(์ƒ์„ธ๋Š” `H-229` ์ ˆ) | (a) **์ฒด์ธ ๋ฆฌ์ŠคํŠธ์˜ GC ์•ต์ปค๋ฅผ gchold๋กœ ํ†ต์ผ** โ€” `chains`๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ `SetWeak`์œผ๋กœ๋งŒ ์žก๊ณ , ๋ฒ„ํ‚ท ์ฒซ ์ƒ์„ฑ ์‹œ `bindLifetime(inst, list)`๋กœ ๋ฆฌ์ŠคํŠธ๋ฅผ gchold์— ์•ต์ปค(Destroy โ†’ gchold ๋ถ•๊ดด โ†’ ๋ฆฌ์ŠคํŠธยทretractorยท`inst` ์ „๋ถ€ ํšŒ์ˆ˜; retractor๋Š” **ํ˜ธ์ถœ ์•ˆ ํ•จ** โ€” ๊ณ„์•ฝ ์œ ์ง€, ๋ฉ”๋ชจ๋ฆฌ๋งŒ ํ•ด์ œ). ์„ ๋ก€: `slot-plan.md` 13์ฐจ ์„ธ์…˜์ด ๋‘-`Relate` ์ƒํ˜ธ ์ˆœํ™˜์„ ์ •ํ™•ํžˆ ์ด ์•ฝ(์ „๋ถ€ weak + ์•ต์ปค๋Š” `bindLifetime` ํ•˜๋‚˜)์œผ๋กœ ๊ณ ์นจ. โš ๏ธ ๊ฒฐํ•ฉ ์บ๋น„์—‡: Dispatch๊ฐ€ ์ƒ๋ช…์ฃผ๊ธฐ ์ฃผ์ž…์„ ์š”๊ตฌํ•˜๊ฒŒ ๋ผ ์ˆœ์ˆ˜ ๋””์ŠคํŒจ์น˜ ํ…Œ์ŠคํŠธ๋„ mock ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•„์š”ํ•ด์ง(๋‹จ์œ„ 1 spec์˜ ํ‰๋ฒ”ํ•œ ํ…Œ์ด๋ธ” inst ์ˆ˜์ •) / (b) ๋ฒ„ํ‚ท ์ฒซ ์ƒ์„ฑ ์‹œ `onDestroying(inst, โ€ฆ)` ํ›…์œผ๋กœ ๋ฒ„ํ‚ท ๋“œ๋กญ โ€” ๊ฐ™์€ ๊ฒฐํ•ฉ + Connection ๋ถ€๊ธฐ ์ถ”๊ฐ€ / (c) ์ˆ˜์šฉยท๋ฌธ์„œํ™”(ํŒŒ๊ดด ์ธ์Šคํ„ด์Šค๋‹น ์†Œ๋Ÿ‰ ์˜๊ตฌ ์ž”์กด + ์ƒ๋ฅ˜ emit ์ˆœํšŒ ๋น„์šฉ) | **(a)** | ๊ฐ™์€ ๋ณ‘(๊ฐ’์ด weak ํ‚ค๋ฅผ ๋˜์ฐธ์กฐํ•˜๋Š” ์ƒํ˜ธ ์ˆœํ™˜)์„ ๊ฐ™์€ ์•ฝ์œผ๋กœ ๊ณ ์นœ ํ™•์ • ์„ ๋ก€๊ฐ€ ์žˆ๊ณ , ์ƒˆ ๊ฐœ๋… ์—†์ด ๊ธฐ์กด ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ(`bindLifetime`/gchold) ์žฌ์‚ฌ์šฉ์ด๋‹ค. (b)๋Š” ์•ต์ปค ๋Œ€์‹  ํ›…์ด๋ผ Connection ๊ด€๋ฆฌ๊ฐ€ ํ•˜๋‚˜ ๋” ์ƒ๊ธฐ๊ณ , (c)๋Š” ์žฅ์ˆ˜๋ช… ๊ฒŒ์ž„์˜ ๋™์  UI์—์„œ ๋ฌดํ•œ ๋ˆ„์ ์ด๋ผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ชฉํ‘œ(์ •ํ™•์„ฑ ์šฐ์„ )์™€ ์•ˆ ๋งž๋‹ค | | `H-230` | **๊ณต์œ  ์ƒ์ˆ˜์˜ ๋ฐฐ์น˜** โ€” โ‘  `HANDLER_PRIORITY_*`: ๋ฐฑ์—”๋“œ(M5 quad-roblox)๊ฐ€ ํ•ธ๋“ค๋Ÿฌ ๋“ฑ๋ก ์‹œ ํ•„์š”. ์ง€๊ธˆ๋„ `InitRoblox(module)`์ด ๋ฐ›๋Š” ์ธ์Šคํ„ด์Šค์˜ `module.Dispatch.*`๋กœ ๋‹ฟ๊ธด ํ•˜์ง€๋งŒ, ์‚ฌ์šฉ์ž ์ œ์•ˆ๋Œ€๋กœ ์˜๋ฏธ๊ฐ€ ๋“œ๋Ÿฌ๋‚˜๋Š” ๋‹จ์ผ ์†Œ์Šค๊ฐ€ ๋‚ซ๋‹ค. โ‘ก error `level` ๋„˜๋ฒ„(1/2/3)์˜ Enumํ™” | (a) **์šฐ์„ ์ˆœ์œ„ ์ƒ์ˆ˜๋งŒ `quad-types`๋กœ ์Šน๊ฒฉ** โ€” ์ด๋ฏธ ๋ชจ๋“  ํŒจํ‚ค์ง€๊ฐ€ ์˜์กดํ•˜๋Š” ์˜์กด์„ฑ-0 ๊ณ„์•ฝ ํŒจํ‚ค์ง€๊ณ  ๋Ÿฐํƒ€์ž„ ํ…Œ์ด๋ธ”์„ ๋ฐ˜ํ™˜ํ•˜๋ฏ€๋กœ ๊ฐ’ ๋„ท์„ ์‹ฃ๋Š” ๋น„์šฉ์ด 0์— ๊ฐ€๊น๋‹ค(`Dispatch`๋Š” requireํ•ด ์žฌ๋…ธ์ถœ, ๋‹จ์ผ ์†Œ์Šค; ๋จธ๋ฆฌ๋ง์˜ "๋Ÿฐํƒ€์ž„ ๊ฐ’์€ ์—†๋‹ค์‹œํ”ผ" ์„œ์ˆ  ๊ฐฑ์‹ ). **level์€ Enumํ™”ํ•˜์ง€ ์•Š๋Š”๋‹ค** โ€” `level`์€ ์˜๋ฏธ enum์ด ์•„๋‹ˆ๋ผ **ํ”„๋ ˆ์ž„ ์ˆ˜**๋ผ ๊ฐ™์€ ์˜๋ฏธ("์‚ฌ์šฉ์ž ํ˜ธ์ถœ๋ถ€")๊ฐ€ ์ž๋ฆฌ์— ๋”ฐ๋ผ 2ยท3์œผ๋กœ ๊ฐˆ๋ฆฌ๊ณ (`architecture.md` *"ํ”„๋ ˆ์ž„ ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ ๋„์ฐฉ์ง€๊ฐ€ ๊ณ„์•ฝ"*, `H-205`์˜ level 3์ด ์‹ค์‚ฌ๋ก€), `ERROR_LEVEL_USER = 2` ์ƒ์ˆ˜๋Š” ํ—ฌํผ ํ”„๋ ˆ์ž„์ด ๋ผ๋Š” ์ž๋ฆฌ์—์„œ ๊ฑฐ์ง“๋ง์„ ํ•˜๊ฒŒ ๋œ๋‹ค / (b) `quad-const` ํŒจํ‚ค์ง€ ์‹ ์„ค(์ƒ์ˆ˜ ์ „๋ถ€ ์ด๊ด€) / (c) ํ˜„ํ–‰ ์œ ์ง€(๋ชจ๋“ˆ ์ธ์Šคํ„ด์Šค ๊ฒฝ์œ ) | **(a)** | (b)๋Š” ์ˆซ์ž ๋„ท์— ์›Œํฌ์ŠคํŽ˜์ด์Šค ๋ฉค๋ฒ„ยทpesde shimยทrelink ๋น„์šฉ์ด ๊ณผํ•˜๊ณ (`H-165`๋ฅ˜ ํ•จ์ •๋„ ํ•˜๋‚˜ ๋” ์ƒ๊น€), ์ง€๊ธˆ ์ƒ์ˆ˜๊ฐ€ ์ด๊ฒƒ๋ฟ์ด๋ผ "์ƒ์ˆ˜ ํŒจํ‚ค์ง€"๊ฐ€ ์„ค ์ž๋ฆฌ๊ฐ€ ์•„์ง ์—†๋‹ค โ€” ์ƒ์ˆ˜๊ฐ€ ์‹ค์ œ๋กœ ๋ถˆ์–ด๋‚˜๋ฉด ๊ทธ๋•Œ ๋ถ„๋ฆฌํ•ด๋„ ๋Šฆ์ง€ ์•Š๋‹ค("์‹ค์ œ๋กœ ๊ด€์ธก๋œ ๋ฌธ์ œ์—๋งŒ ๊ตฌ์กฐ"). level ๋น„๊ถŒ๊ณ  ๊ทผ๊ฑฐ๋Š” ์™ผ์ชฝ ์นธ | +| `H-231` | **error ์œ ํ‹ธ ๋ชจ๋“ˆ**(์‚ฌ์šฉ์ž ์„ค๊ณ„) โ€” `setLevel(fn, tag)` + `debug.info` ์Šคํƒ ์›Œ์ปค๋กœ level ์† ์„ธ๊ธฐ ์ œ๊ฑฐ. ์ฑ„ํƒ ์ž์ฒด๋Š” ์‚ฌ์šฉ์ž ๋ฐœ์•ˆ์ด๋ผ ์‚ฌ์‹ค์ƒ ์ •ํ•ด์กŒ๊ณ , **์„ธ๋ถ€ ๋„ท**์ด ๋ฌธํ•ญ: ์›Œ์ปค ๋ฐฉํ–ฅ / ํŒจํ‚ค์ง€ ์ด๋ฆ„ / Enum ๋ฉค๋ฒ„ ๊ตฌ์„ฑ / ๊ธฐ์กด error ์ž๋ฆฌ ์ด๊ด€ ์‹œ์ (์ƒ์„ธ๋Š” `H-231` ์ ˆ) | ๋ฐฉํ–ฅ: (i) **์ตœ์ƒ๋‹จ ํ•˜๊ฐ•**(๊ฒฝ๊ณ„ ์ง์ „ blame โ€” ๋“ฑ๋ก์€ ์ •์  ํ‘œ๋ฉด+์ˆ˜๋ น ํด๋กœ์ € 1ํšŒ์„ฑ, ์ต๋ช… ๋‚ด๋ถ€ ํด๋กœ์ €์— ๊ฐ•๊ฑด) / (ii) ์—๋Ÿฌ ์ง€์  ์ƒ์Šน(์ •๋ฐ€ํ•˜๋‚˜ retractor๊นŒ์ง€ ํ•ซํŒจ์Šค ๋“ฑ๋ก + ๋ˆ„๋ฝ = ์˜ค์ธ). ๋ฐฐ์น˜: ๋…๋ฆฝ ํŒจํ‚ค์ง€(๊ฐ€์นญ `quad-error`) vs quad-base ์žŽ. ์ด๊ด€: ๋‹จ์œ„ 2 ์ „ ์ผ๊ด„ vs ์ ์ง„ | **(i) + ๋…๋ฆฝ ํŒจํ‚ค์ง€ + ๋‹จ์œ„ 2 ์ „ ์ผ๊ด„ ์ด๊ด€** | (i)๋Š” ์‚ฌ์šฉ์ž์˜ "์ค‘๊ฐ„์— ์งค๋ฆผ" ์œ ์˜์ ์„ ๊ตฌ์กฐ์ ์œผ๋กœ ์—†์• ๊ณ  ๋“ฑ๋ก ๊ทœ์œจ์ด 1ํšŒ์„ฑ ํ‘œ๋ฉด์— ๊ฐ‡ํžŒ๋‹ค. ๋…๋ฆฝ ํŒจํ‚ค์ง€๋Š” backends(EngineOps ์Šคํ…)๊ฐ€ quad-base ์—†์ด ์“ฐ๊ธฐ ์œ„ํ•จ(type-version-check ์„ ๋ก€). ์ผ๊ด„ ์ด๊ด€์€ ์ž๋ฆฌ๊ฐ€ ์•„์ง ์ ์„ ๋•Œ(M2+๋‹จ์œ„ 1) ๋๋‚ด์•ผ ๋งˆ์ผ์Šคํ†ค๋งˆ๋‹ค ๋‘ ํ‘œ๊ธฐ๊ฐ€ ์„ž์ด์ง€ ์•Š์•„์„œ | | `H-215` | ์ŠคํŒŒ์ดํฌ `04`(Dispatch ์ฒด์ธ retractFrom, `rewrite-required/`) ์ฒ˜๋ถ„ โ€” `spec.dispatch.luau`๊ฐ€ ์ฒด์ธ ๊นŠ์ดยท๋ ˆ๋ฒจ๋ณ„ ํžŒํŠธยท3-์ธ์ž `retractFrom`ยท`SetStrong` ์Œ์„ฑ ๋Œ€์กฐ๊ตฐ์„ ์ด๋ฏธ ์‹ค์ธกํ–ˆ์œผ๋‚˜, ์žฌ๊ท€ ์žฌ๋ฐœํ–‰์€ spec-๋กœ์ปฌ wrapping ํ•ธ๋“ค๋Ÿฌ **๊ทผ์‚ฌ**๋‹ค(์‹ค์ œ `StoreBind`๋Š” M4) | (a) ์ง€๊ธˆ ํ๊ธฐ(`01`์ฒ˜๋Ÿผ `done/` ์ด๋™) โ€” ์ž”์—ฌ ๋ชซ(์‹ค์ œ `StoreBind` ๊ฒฝ์œ  ์žฌ๋ฐœํ–‰ ๊ฒฝ๋กœ)์€ **M4 StoreBind spec์ด ์ง„๋‹ค**๊ณ  ๊ทธ ๋‹จ์œ„ ๊ณ„ํš์— ๋ช…์‹œ / (b) M4๊นŒ์ง€ `rewrite-required/`์— ์œ ์ง€(ํ˜„ ROADMAP ๋ฌธ๊ตฌ "M3 ์ฐฉ์ˆ˜ ์‹œ ๊ฐ™์ด ์ฒ˜๋ฆฌ"๋ฅผ "M4์—์„œ"๋กœ ์ •์ •) / (c) ์ง€๊ธˆ ์žฌ์ž‘์„ฑ | **(a)** | ์ฒด์ธ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ์ž์ฒด๋Š” `spec.dispatch.luau` 12์ ˆ์ด ์‹ค์ œ ๊ตฌํ˜„์— ๋Œ€๊ณ  ๊ณ ์ •ํ–ˆ๊ณ (์ŠคํŒŒ์ดํฌ๋Š” ๊ฒฉ๋ฆฌ ์žฌํ˜„์ด๋ผ ์˜คํžˆ๋ ค ์•ฝํ•จ), `05`/`15`/`01` ํ๊ธฐ์™€ ๊ฐ™์€ ๊ทผ๊ฑฐ ๊ตฌ์กฐ๋‹ค. ์ž”์—ฌ ๋ชซ์„ M4 spec ํ•ญ๋ชฉ์œผ๋กœ ์˜ฎ๊ฒจ ์ ์œผ๋ฉด ์žŠํžˆ์ง€ ์•Š๋Š”๋‹ค | ## ยง5 ์ด์ƒ ์—†์Œ ํ™•์ธ (ํƒ์‚ฌ์žยท๊ตฌํ˜„์ด ํ™•์ธ๋งŒ ํ•˜๊ณ  ๋ฌธ์ œ ์—†์—ˆ๋˜ ์ž๋ฆฌ) diff --git a/.gitignore b/.gitignore index 46c8ea6..3f1e000 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,4 @@ lune_packages/ # (์—๋””ํ„ฐ ํƒ€์ž… ๋งํ‚น์šฉ ์‚ฐ์ถœ๋ฌผ, ์ปค๋ฐ‹ ๋Œ€์ƒ ์•„๋‹˜) sourcemap.json .relink-manifest +*ignoreme*