quad/.claude/research/existing-instance-bind-plan.md
qwreey c19e82f661
6차 라운드 + 컴포넌트화/Modifier 논의, 문서 코퍼스 전체 정리 결과 반영
- 6차 라운드: 태그 네임스페이싱(Ref로 충분), Store가 Store를 담지 않음 확정
- Modifier 메커니즘 전체 확정(정적 merge, immutable+clone 체이닝, State
  필드 지원, "관측해야 실체화된다" 전역 원칙) — base/modifier-plan.md 신설
- 컴포넌트화 논의 시작(research/component-composition-plan.md) — 컴포넌트=
  플레인 함수, State/Source 읽기·쓰기 경계, StoreSource 프록시까지 수렴,
  modifier/Ref의 컴포넌트 경계 통과 방식은 열린 채로 남김
- .claude/ 코퍼스 전체(약 15개 문서)를 서브에이전트로 감사해 여러 라운드에
  걸쳐 쌓인 모순/중복/stale 마커/끊긴 참조 다수 수정
- purity-and-effects-plan.md를 research/에서 base/로 승격
- CLAUDE.md: 라운드별 인수인계 메모 3개를 하나로 통합, 오래된 "더 이상 열린
  질문 없음" 모순 제거
- question.md: 시간순도 우선순위순도 아니던 구조를 "지금 열려있는 것" 중심
  으로 재정리, 용어 정리 제안(State/DI/PerInstanceState 등 우선순위) 추가

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-04 15:49:28 +09:00

53 lines
3.2 KiB
Markdown

# 이미 생성된 인스턴스에 대한 바인드 (후순위, UB 또는 마일스톤)
**상태**: research — 명시적으로 후순위/UB 후보. 원본:
`.claude/initreq/raw-userinput.md` "이미 생성된 객체에 대한 바인드?" 절.
## 문제
이미 생성된 Roblox Instance에 새로운 `{k=v}` 프롭 테이블을 나중에 바인드하는
걸 허용할지. 허용하려면 이전 바인드를 끊는 처리가 필요한데, retract가
구현되어 있어도 바로 지원하는 건 엔지니어링 비용이 높음.
## 기울어진 방향
**UB로 두거나, 마일스톤(추후 구현)으로 미룬다.** retract가 이미 있고 store
바인드도 우선순위 높은 플러그라면 이론적으로는 가능해 보이지만(핸들러
레지스트리가 이미 "우선순위 스캔 후 bind" 구조라 재바인드도 같은 경로를 타면
됨), 초기 구현에서 **우선순위를 낮게** 잡아야 함 — 문제 유무가 많을 수 있어서.
## Default 값과 얽히는 문제
Default를 넣으면 더 어려워짐 — Default로 쓰다가 실제 쓰인 값으로 되돌아가는
케이스를 생각해야 함. Modifier 설계와 맞물려 있는 문제로, 결과적으로 매번
테이블을 flattening 해야 할 수도 있음 — 그런데 그걸 위해 클론까지 해야 하나?
사용자 스스로도 "약간 애매" 하다고 남김.
**후보 아이디어(미확정)**: ref로만 다시 바인드 가능한 걸 얻게 하고, ref가 되면
복사(clone) 모드를 켜야 하나 — 근데 그러면 너무 복잡해질 것 같다는 우려까지만
기록. 결론 없음.
## 사용자 확인 결과: 진짜로 모르겠음 — 열린 가능성으로 유지
**사용자 확인 완료, 그러나 결론은 "미정 유지".** 실제로 이 기능을 원한다고
말한 사용자를 본 적은 없지만, 막상 만들어진다면 유용하게 쓸 수 있을 것 같다는
느낌은 있음. 근거:
- `retract`(구 cleanup)이 이미 존재한다면, store 바인드도 이미 `retract`되는
경로가 있는 셈 — 재바인드를 지원하기 위한 인프라가 어느 정도 이미 깔림.
- Modifier를 잘 설계하면 나중에 오버라이드가 자연스럽게 가능해질 수도 있음 —
미래에 어떤 방법을 생각해낼 여지가 있다는 것.
- **역사적 맥락**: quad는 원래 "script 스니펫"이라고 부를 정도로, react.lua
같은 당대 대안 대비 압도적으로 쉽고 단순해서 누구나 빠르게 이해해 쓸 수
있는 걸 의도적으로 지향한 도구였음. 라이브러리가 지금처럼 몸집이 커지는
후속 단계에선 이런 기능성을 충분히 고려할 만함.
**결론**: v2 초기 스코프에서 제외하되, "미지원"으로 확정 명문화하지는 않음 —
진짜 열린 가능성으로 남겨두고, 실사용 중 필요성이 드러나면 그때 설계.
`base/architecture.md`의 "복사 구현 지양, store 바인드 변경은 전체 변경"
원칙과 긴장 관계에 있다는 점은 여전히 유효 — 나중에 설계할 때 이 원칙과
어떻게 공존할지부터 다시 볼 것.
## 열린 질문 (`.claude/question.md`에도 취합)
- 구체적 설계는 완전히 미정 — 실사용 패턴이 쌓이기 전까지는 착수하지 않음.
급하지 않음.