quad/.claude/session/2026-08-12-03-cananimate-luau-syntax-note.md
qwreey a1f8601cc7
decide(tween): add Animate CanAnimate field, document Luau syntax facts
CanAnimate: State<boolean>|boolean|nil (nil defaults true) lets Animate
bypass wrapping in Tween{} entirely, covering the reduceMotion use case
natively. Also documents that Luau's if-then-else expression and const
bindings are official syntax (not hallucinated), so agents don't revert
them; const adoption deferred pending tooling support.
2026-08-12 11:17:49 +09:00

3.7 KiB

2026-08-12 세 번째 세션 — AnimateCanAnimate 필드 추가, Luau 문법(if-then-else/const) 공식성 문서화

Animate(info)CanAnimate: State<boolean> | boolean | nil 필드 추가 — 앞선 두 세션(2026-08-12-01/02)에서 Animate를 확정한 직후 사용자가 "아 맞다"며 빠뜨렸던 필드를 짚음. nil이면 기본 true(항상 애니메이션), false로 resolve되면 Tween{...}으로 안 감싸고 self:Get()을 그대로 반환 — reduceMotion류 접근성 우회가 이 필드 하나로 표현됨. 앞선 세션에서 "구 useTween 우회는 수동 :Compute 클로저로도 여전히 가능하다"고 남겨뒀던 예시가 사실상 Animate 안으로 흡수됨 — 수동 클로저는 CanAnimate로 못 담는 더 복잡한 조건(값 자체를 다른 값으로 바꿔치기 등)의 탈출구로만 절 문구를 축소. 필드 케이싱은 대화 중 canAnimate(소문자)로 나왔으나 같은 옵션 테이블의 나머지 필드가 전부 PascalCase(Value/Style/ Time...)라 CanAnimate로 정규화 — 이 필드만 다른 케이싱을 쓸 이유가 없다고 판단, 확정은 아니고 다음 세션에 뒤집혀도 비용 낮음.

Luau if-then-else/const 문법의 공식성을 base/architecture.md에 명문화 — 사용자가 직접 짚은 우려: 앞선 세션에서 and/or 삼항 관용구를 if-then-else로 고친 게(bind-system-plan.mdDispatch.retractUnder 정정), 나중에 이 문법을 모르는 에이전트가 "이런 문법 없음"이라며 and/or로 되돌리는 회귀를 부를 수 있음 — 실제로 if cond then a else b는 2021년 10월 Luau에 정식 도입된 공식 표현식 문법(사용자가 릴리스 노트 링크 직접 제공: https://luau.org/news/2021-10-31-luau-recap-october-2021/#if-then-else-expression). architecture.md의 "코드 스타일 — 네이밍 케이싱" 절 바로 뒤에 "코드 스타일 — Luau 문법 관례" 절을 신설해 이 사실+이 프로젝트의 기본 삼항 표현 방식이 if-then-else라는 것(and/or는 가운데 값이 항상-truthy로 보장될 때만 예외 허용)을 명문화. 같이 언급된 const 바인딩 (https://luau.org/syntax/#const-bindings)도 공식 문법이지만 지금은 채택 보류 — 타입 추출/narrowing 등 주변 툴링이 아직 폭넓게 지원 못 함, 지금 전면 도입하면 나중에 그 간극을 메꾸는 비용이 더 클 수 있음. 원칙: 새 코드는 일단 local, 나중 리팩터 시점에 특정 바인딩을 const로 바꾸는 비용이 싸 보이면 그때 바꾸고 비싸면 안 바꿔도 됨 — "이 프로젝트가 구식 Luau를 쓴다"는 오해 방지용으로 같이 문서화(툴링 성숙도 문제일 뿐 문법을 모르거나 기각한 게 아님).

반영된 파일: research/tween-plan.md(Animate 절에 CanAnimate 필드/예시/케이싱 메모 추가, "구 useTween 스케치" 절 축소), base/ architecture.md(신규 "코드 스타일 — Luau 문법 관례" 절).

여전히 열려있는 것: 안 바뀜 — 자연 완료(Completed) 시 per-instance 북키핑 정리 여부 하나(research/pre-implementation-audit.md 2-10번, M11 착수 시).

다음 세션이 할 일: 안 바뀜(ROADMAP.md M0부터, .claude/luau-test/ 결과 확인 우선).