## 2026-08-11 세 번째 세션 — `previous`는 팩 앞(`fn(self, previous?, ...deps)`)으로 순서 정정, "이걸 안 할 이유"였는데 살아남음 바로 이어진 짧은 세션. 사용자가 위 두 번째 세션에서 제안했던 "`previous`는 dep 개수와 무관하게 항상 마지막"(`fn(self, dep1, ..., depN, previous?)`)을 직접 정정 — "애초에 `fn(self, prev, ...)`이긴 해야할듯. 아니면 이걸 하지 말던가." **정정 채택 — `previous?`는 deps 팩 **앞**(self 바로 다음)에 와야 함, `fn(self, previous?, dep1, ..., depN)`.** 이건 단순 선호가 아니라 거의 확실한 Luau 문법 제약에서 나오는 결론: 값 레벨 `...`(vararg)가 파라미터 리스트 맨 끝에만 올 수 있는 것과 마찬가지로, 타입 레벨 제네릭 팩(`...U`)도 함수 타입 시그니처에서 항상 맨 끝이어야 할 가능성이 매우 높음(팩이 "나머지 자리를 전부 채운다"는 개념이라 그 뒤에 고정 타입이 하나 더 오는 걸 문법 자체가 지원 안 할 것으로 추정) — 위 두 번째 세션에서 제안한 "previous를 팩 뒤에" 순서는 이 제약과 정면으로 부딪혀 애초에 파싱/타입 체크가 안 될 가능성이 높았음. `previous?`를 팩 **앞**에 두면 "고정 인자 다음에 팩"이라는 정상적인 모양이 되어 이 제약과 안 부딪힘 — **구조적으로 유일하게 안전한 순서라 이걸로 확정**. **트레이드오프 — deps만 쓰고 싶어도 `previous` 자리를 비워둬야 함.** `fn(self, previous?, dep1, dep2)`이므로, `previous`가 필요 없는 흔한 호출도 `function(self, _, dep1, dep2) ... end`처럼 안 쓰는 두 번째 자리를 이름으로라도 채워야 함 — Luau 문법 제약상 다른 선택지가 없어서 받아들이는 비용. 사용자가 "아니면 이걸 하지 말던가"로 던진 양자택일에서, 이 정정으로 구조적으로 안전한 순서를 찾았으므로 **확장 자체는 폐기하지 않고 이 순서로 유지.** `base/bind-system-plan.md`(위 절의 "previous와의 위치 충돌" 소절 전면 정정)/`ROADMAP.md`(M3)/`.claude/luau-test/15-type-compute-trailing-deps- typepack.luau`(C를 "막혀야 정상인 음성 대조군"으로 재정의, D를 정정된 순서의 "통과해야 정상인 양성 대조군"으로 신규 추가)/`.claude/luau-test/ README.md` 반영 완료. **다음 세션이 할 일**: 안 바뀜(`ROADMAP.md` M0부터, luau-test 결과 확인 우선) — `15`의 C/D가 예상대로 나오는지(C는 막히고 D는 통과)까지 같이 확인해줄 것, 예상과 다르면 이 순서 결정 자체를 재검토.