quad/.claude/session/2026-08-07-04-corpus-reorg.md
qwreey 1f56c75978
chore(docs): split CLAUDE.md session log into .claude/session/, keep 2-4 line summaries
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.
2026-08-11 14:40:43 +09:00

4.9 KiB

2026-08-07 네 번째 세션 — .claude/ 코퍼스 전반 정리(폴더 재편, 승격, 기각 분리)

사용자가 코퍼스 전체를 훑고 "실제 코딩에 필요한가"를 기준으로 남길 것과 분리할 것을 판단해 달라고 요청 — 여러 문서에 쌓인 역전 이력/quad 자체와 무관한 배경자료/이미 기각된 후보가 뒤섞여 있어 컨텍스트 크기와 가독성 둘 다 해치고 있다는 문제의식. 아래 6가지를 처리, 전부 반영 완료:

  1. reference/ 폴더 신설quad-v1-architecture.md, comparison-fusion-vide.mdbase/에서 이동. 항상 읽어야 하는 결정사항(base/)과, 다른 문서가 근거로 인용할 때만 열어보면 되는 온디맨드 스냅샷/비교자료(reference/)를 분리 — 전자는 "결정 완료", 후자는 "결정이 아니라 결정의 근거"라는 차이. 전체 문서의 상호참조 경로도 전부 갱신함.
  2. component-composition-plan.md의 누적 역전 이력 트리밍StoreSource 프록시 폐기 이력이 "원래 이랬다 → 이렇게 뒤집혔다"를 본문에서 장황하게 반복 서술하고 있었는데, 이미 archive/ store-source-proxy-reversed.md에 원문·이유·비교표가 전부 보존돼 있으므로 본문은 최종 확정만 남기고 포인터로 압축.
  3. ui-shorthand-plan.mdresearch/base/로 승격, 재작성 — (a) 이미지 라운드 트릭 RoundSize는 완전히 드롭, 근거는 archive/ui-shorthand-roundsize-dropped.md로 분리(이 판단이 한 차례 "Corner/PaddingAll/Scale 전체가 불필요하다"로 잘못 일반화됐다가 정정된 이력도 같이 보존). (b) 이름을 v1 그대로(Corner/PaddingAll/ Scale)가 아니라 실제 Roblox Instance 이름과 맞춘 UICorner/ UIPadding/UIScale로 확정 — v1식 짧은 이름은 Modifier 체이닝 메소드와 겹쳐 "진짜 UICorner 숏핸드인지 그냥 비슷한 이름의 부가 Modifier인지" 구분이 안 된다는 사용자 지적 반영. (c) store-bind 가능성 명시 — v1에서도 가능했던 기능이고, Tween처럼 무거운 API 표면 없이 기존 per-instance weak-table 유틸(base.perInstanceState) 재사용만으로 충분하다는 점을 추가.
  4. additional-primitives-plan.md를 4갈래로 분리: 확정된 Blocker/ Effect는 각각 새 base/blocker-plan.md/base/effect-plan.md로 승격(Blocker는 State와 같은 마일스톤에서 개발하기로 해서 store-semantics.md에 교차 참조 추가, ROADMAP.md M3에도 체크박스 반영). 기각된 Batch(lexical block)와 Context(+대안이던 레이어드 Store)는 각각 archive/batch-rejected.md/archive/context-rejected.md로 분리. research/additional-primitives-plan.md엔 아직 실제로 열려있는 것(키 기반 동적 컬렉션 재조정) 하나만 남김. [같은 날 바로 정정] 처음엔 Blocker/Effect를 base/additional-primitives.md 한 파일로 합쳐 승격했으나, 사용자가 "State 볼 때 Effect까지 볼 필요는 없다, 기존 프리미티브당 1파일 컨벤션(modifier-plan.md/slot-plan.md류)에 맞지 않는다"고 지적해 바로 두 파일로 재분리함 — Blocker는 Store/State와 밀접해 교차 참조가 필요하지만 Effect는 완전히 독립된 요소라 애초에 같은 파일일 이유가 없었음.
  5. archive 제목 컨벤션을 둘로 분화 — 기존 [역전됨](한 번 확정했다가 뒤집힌 것, store-source-proxy-reversed.md/ref-phase-option-reversed.md)과 새로 생긴 [기각됨](확정한 적 없이 후보였다가 채택 안 된 것, batch-rejected.md/context-rejected.md/ui-shorthand-roundsize-dropped.md)을 구분 — README.mdarchive/ 폴더 기준 설명에 두 컨벤션 차이를 명시.
  6. tween-plan.md 보강retract가 Destroy 시엔 호출 안 된다는 사실을 상단 상태 요약에서도 짚도록 가시성 강화, canExecute(Destroy 시 처리)와 retract(값 교체 시 처리)가 서로 다른 문제를 다룬다는 점을 quadnomicon급 문서화 숙제로 메모(지금은 상세 설명 안 하고 메모만). 트윈 옵션 값 모양(raw TweenInfo vs 이름 붙은 편의 필드+기본값) 논의를 새로 열어둠 — Luau가 named call을 지원 안 해서 TweenInfo.new(...) 포지셔널 생성자가 읽기 어렵다는 문제의식, 소견은 편의 필드 쪽이지만 확정 아님, 나중 논의 대상으로만 남김.