# 2026-08-12 열여덟 번째 세션 — `framework-comparison-findings.md` 남은 두 항목 "고칠 필요 없음"으로 최종 판단 **배경**: `question.md` 낮은 우선순위 목록에 남아있던 `framework-comparison-findings.md`의 "고칠 만한 것" 2번 절 두 항목 (use-after-destroy 검증 안전망 부재, `:With`의 정적 의존성/동적 With 미지원)이 여전히 "사용자 판단 전" 상태였음. 사용자가 이번 세션에서 둘 다 명확한 근거를 들어 "고칠 필요 없음, 의도된 설계"로 확정. ## use-after-destroy 검증 안전망 사용자 논지: quad는 `bindLifetime`으로 대부분의 연산을 GC-native하게 지원하도록 이미 설계돼 있고, 말단 leaf에 직접 연결하지 않는 이상 Instance를 직접 관리하는 건 quad가 처리하는 영역이 아님. 만일을 위한 부작용 정리 수단으로 `Effect`도 이미 제공됨. Destroy 시 정리해야 할 게 있다면, 그 부작용을 만들어낸 코드가 처리할 책임을 짐(Ref의 "Destroy 무관" 철학과 동일선상). 만약 quad가 이 영역에서 에러를 내주는 방향으로 간다면, 그건 언제나 명시적 `Destroy()` 호출을 강제하게 되어버려 "가볍게 GC가 알아서 치울 때 같이 처리되도록 놔두고 네이티브가 처리 성능을 올려주는" 아키텍처 전체와 모순됨. 완전한 UB 영역으로 두는 게 정확한 아키텍처 — quad가 할 수 있는 유일한 대응은 유저가 그런 행동을 안 하도록 문서화로 돕는 것뿐. ## `:With`의 동적 의존성(동적 With 미지원) 사용자 논지: 동적 의존성을 지원한다는 것 자체가 "State는 immutable하다"는 현재 가정을 깨뜨림 — 의존성 목록이 바뀔 수 있다면 그 변경이 후행하는 다른 노드들 전체에 영향을 미치는 걸 허용해야 하는데, 이건 quad가 계속 원치 않아온 것. 애초에 동적 의존성이라는 것 자체가 사용 사례가 사실상 없음 — React를 봐도 `useMemo(fn, [...])`의 deps 리스트를 동적으로 조립하는 경우는 거의 없고(그러면 그 훅이 거의 항상 실행돼버려 메모이제이션 의미가 없어짐), 보통 정적으로 나열함. 억지로 끼워넣는 건 무리 — 의도적 비지원 요소로 확정. (State 이외의 다른 방법으로 유사한 걸 지원할 수 있는지 리서치는 나중에 해볼 수 있으나, 이미 결론에 다다른 현재 State 설계에 손을 대는 방향은 아님.) ## 반영 - `research/framework-comparison-findings.md`: 2번 절(고칠 만한 것)에서 두 항목 제거, 3번 절(못 고치는 것 — 의도된 트레이드오프)로 근거와 함께 이전. "다음 단계" 절도 "해소됨"으로 갱신 — 이 문서는 더 이상 사용자 판단 대기 항목이 없음. - `.claude/question.md`: 낮은 우선순위 목록의 해당 항목을 `[해소됨]`으로 표시. ## 부수 확인 (문서 반영 불필요, 현황 재확인만) 사용자가 같은 메시지에서 `quad-v1-compat`/`quad-debug`는 여전히 `quad-base`/`quad-roblox` 완성 전에 착수 가능해 보이지 않는다고 재확인 — 기존 `CLAUDE.md`/`question.md`가 이미 못박아둔 우선순위와 정확히 일치, 변경 없음.