<!-- quad-v2 세션 로그 원문 — CLAUDE.md에서 이전됨(2026-08-11 정리 세션). -->
<!-- 이 파일은 quadnomicon 개발로그 소재용 원자료로, 당시 시행착오(정정 전 서술 포함)를 그대로 보존함. -->
<!-- 현재 유효한 설계는 이 파일이 아니라 base//research//archive/가 최종 소스 — 이 파일 안의 판단이 이후 세션에서 뒤집혔을 수 있음. -->

## 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는 통과)까지 같이
확인해줄 것, 예상과 다르면 이 순서 결정 자체를 재검토.

