CLAUDE.md had grown to 3196 lines of accumulated session logs, causing context bloat. Full session narratives (including trial-and-error and later-corrected reasoning — quadnomicon devlog raw material) now live as 39 individual files under .claude/session/. CLAUDE.md keeps only a short "지금 할 일" (re-synced against question.md/pre-implementation-audit.md, stale detail dropped) and a compact per-session summary+link table. No design decisions changed; base/research/question.md were already in sync with every session (verified against README.md/question.md before archiving), so no unreflected content needed migrating first.
3 KiB
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는 통과)까지 같이
확인해줄 것, 예상과 다르면 이 순서 결정 자체를 재검토.