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.
64 lines
5.2 KiB
Markdown
64 lines
5.2 KiB
Markdown
<!-- quad-v2 세션 로그 원문 — CLAUDE.md에서 이전됨(2026-08-11 정리 세션). -->
|
|
<!-- 이 파일은 quadnomicon 개발로그 소재용 원자료로, 당시 시행착오(정정 전 서술 포함)를 그대로 보존함. -->
|
|
<!-- 현재 유효한 설계는 이 파일이 아니라 base//research//archive/가 최종 소스 — 이 파일 안의 판단이 이후 세션에서 뒤집혔을 수 있음. -->
|
|
|
|
## 최근 세션 요약 (2026-08-04, 6차 라운드 이후)
|
|
|
|
**6차 라운드**: 남아있던 "급하지 않음" 질문 두 개 해소 — 태그 네임스페이싱
|
|
충돌은 컴포넌트 단위로는 Ref가 대신 해결해줘서 심각하게 안 봄(`architecture.md`
|
|
5번), Store가 Store를 담는 경우는 없음으로 확정(Store는 Source에 준하는
|
|
"시작점"이라 다른 반응형 값에 자동 연결되지 않음, `bind-system-plan.md`).
|
|
|
|
**그 이후 채팅에서 세 가지 큰 스레드가 새로 열림/정리됨**:
|
|
- **Modifier 메커니즘 전체 확정** — 런타임 pluggable 핸들러가 아니라 정적
|
|
merge, immutable+`table.clone` 기반 체이닝, 필드가 State일 수도 있는
|
|
경우의 setter/getter 동작까지 전부 확정(`base/modifier-plan.md`, 새로
|
|
base 승격). 이 논의에서 "관측해야 실체화된다"는 프로젝트 전역 원칙도
|
|
명문화(`bind-system-plan.md`).
|
|
- **컴포넌트화 논의, 같은 날 후속 세션에서 완결** — v1의 `Class.Extend()`
|
|
자동-store 매직은 폐기하고 React식으로 값을 명시적으로 전달하는 방향으로
|
|
수렴, `StoreSource`(Source를 인터페이스+구현체로 보고 Store 키에서 얇은
|
|
프록시로 얻는 것) 아이디어 확정. 마지막 미결이던 "modifier/Ref의 컴포넌트
|
|
경계 통과"도 후속 세션에서 풀림: Compose/Fusion/Vide/v1 4개 선례를
|
|
서브에이전트로 병렬 조사한 결과 전부 named parameter로 경계를 넘기는
|
|
패턴에 수렴한다는 게 확인됐고, "컴포넌트가 여러 루트를 반환한다"는
|
|
프레이밍 자체가 (a) Luau가 tail position 밖 다중 리턴을 지원 안 해서
|
|
불필요한 개념과 (b) 이미 있는 Slot 메커니즘을 섞은 것이었음이 드러나
|
|
정리됨 — 결론: 경계는 named parameter(`props.Modifier`/`props.Ref`
|
|
가칭), "다중 루트"라는 별도 개념은 폐기, 여러 modifier를 하나로 합치는
|
|
`Modifier.Merge`(가칭) 유틸 추가. `research/component-composition-plan.md`
|
|
→ `base/component-composition-plan.md`로 승격 완료.
|
|
- **문서 전체 감사 및 정리** — `.claude/` 코퍼스 전체(약 15개 문서)를
|
|
서브에이전트로 감사해 여러 라운드에 걸쳐 쌓인 모순/중복/stale 마커를
|
|
대거 발견하고 수정(예: 이벤트 dot-access 확정 여부가 문서 내에서 서로
|
|
모순, 이미 해소된 질문이 "미해결"로 방치, 존재하지 않는 문서/섹션을
|
|
가리키는 끊긴 참조 다수, `TagService`/`CollectionService` 혼용 등).
|
|
`research/purity-and-effects-plan.md`도 내용이 이미 확정 상태라 `base/`로
|
|
승격. **이 CLAUDE.md 자체도 이번에 오래된 라운드별 인수인계 메모 3개를
|
|
이 요약 하나로 통합하며 정리함** — 라운드별 상세 히스토리가 필요하면
|
|
git log와 각 `base/`/`research/` 문서 안의 라운드 표시(예: "2026-08-04
|
|
3차 라운드")를 참고할 것, 여기서 전부 반복하지 않음.
|
|
|
|
**같은 날 로드맵 인수인계 라운드 — 설계 단계 마무리, 구현 준비 완료**:
|
|
- **quad-base 테스트 mock 방향 확정**: Vide 선례(`test/mock.luau`, ~300줄,
|
|
순수 `luau` CLI, Studio 불필요) 그대로 채택, 스코프는 정적 디버깅 한정(Tween
|
|
같은 동적 동작 제외), quad-roblox로 작성한 컴포넌트가 mock에서도 그대로
|
|
돌아가야 한다는 요구 없음(단순하게 감) — `architecture.md` "테스트 전략"
|
|
절. 범용 렌더 디버깅 도구(Tween mock 포함)는 별개로 백로그.
|
|
- **구현 전 리스크 감사**: `.claude/base/` 전체 + 남은 `research/`를
|
|
서브에이전트로 감사해 "실제 Luau 접촉 없이 추론만으로 확정된 것" 3개
|
|
(Store/State 반응형 코어, 디스패치 엔진, 컴포넌트 경계 modifier/Ref)를
|
|
식별 — 이것들은 M0 스파이크로 검증하기로 함(아래). 감사 중 `slot-plan.md`가
|
|
스스로 "정식 확정 안 됨"이라 표시해뒀던 "클래스가 슬롯을 받는 방법"(Named
|
|
Slot 없음)도 이번에 정식 확정, 대신 "여러 Slot이 형제로 섞일 때 순서 보장"
|
|
이라는 새 하위 질문이 열림(다중 백엔드 관점, Roblox만이면 급하지 않음).
|
|
`State<Modifier>` 조합은 UB로 확정해 타입으로 막기로 함(`modifier-plan.md`
|
|
7번), 디스패치 엔진의 일반적 무한루프는 방어 로직 없이 provider 버그로
|
|
간주하기로 확정(`bind-system-plan.md`).
|
|
- **루트 `ROADMAP.md` 신설** — M0(스켈레톤+기술검증 스파이크, "진짜"
|
|
마일스톤 아님)부터 M11(Tween)까지 + 병행 가능 항목 + 백로그로 구성된 실행
|
|
계획, todo 체크박스 포함. 오늘은 문서 준비만 — **다음 세션이 M0부터 실제
|
|
시작**.
|
|
|
|
용어 정리 제안 진행 중인 점은 위 "지금 할 일" 2번 참고.
|
|
|