quad/CLAUDE.md
qwreey 7f5868302e
qa: 9라운드 Q4~Q10 + H-138/H-139/H-142 확정·반영, 감사 8라운드, code-review 반영 — H-143~H-146 판단 대기
Q4 EffectHandle 네 진입점 의사코드(Observer 것 재사용, Unsubscribe만 게이트 통과
뒤 cleanup) / Q5 M2 공통 기반에 Ref 최소형(+ Quad.Ref 필드) / Q6 WeakUnsubscribe
관대 명문화 / Q7 폐기 블록 archive/effect-internal-observer-cascade-reversed.md /
Q8 InstanceChildHandler 부기(Parent → setLength(1), retractor는 Parent=nil →
해제) / Q9 문항 전제 정정 — Tween 절 스케치 hint==nil 줄은 복사 오류, retractor는
function() end / Q10 :List reconcile 재실행도 배치 Blocker(ownsGate — 네스팅 불가) /
H-138 숏핸드 우선순위 > PropertyHandler, 충돌 방지는 UI 접두어 / H-139
New(name)(props)·Dispatch.drive 파이프라인 의사코드(bind-system-plan) — 쓰면서
빈 배열 파트 가드와 H-142 발견 / H-142 props에 Parent 금지(부모가 하는 일) —
순서 문제 소멸, D·Modifier 타입 제외 + PropertyHandler 거부(배선은 에이전트 선택으로
갈라 적음). H-129/H-131 정정.

감사 8라운드(5→3→4→5→3→1→3→1) — 1라운드가 drive 의사코드의 H-17 위반(post-pass
포함 전체 감쌈)을 잡음, 이후는 기록 문서 표기. /code-review high 10건 — 여섯
반영(그중 셋이 이 세션의 H-134 반영이 만든 것), 넷은 새 메커니즘이라 문항
H-143~H-146으로(question.md 최우선 절). doc-check ERROR 0.

Claude-Session: https://claude.ai/code/session_01546hjsYNLSMZdHdPyTZaGb
Co-authored-by: qwreey <me@qwreey.moe>
2026-08-27 15:52:48 +09:00

3.8 KiB

CLAUDE.md

Roblox 엔진용 DOMless UI 렌더러 quad를 처음부터 다시 짜는 프로젝트. [2026-08-24 기준] M0(스파이크 검증)/M1(스캐폴딩)까지 완료, 다음은 M2(반응형 코어 — Source/State/Store). ⚠️ [2026-08-24] M2와 M3의 번호·순서가 맞바뀌었다 — 예전엔 M2=디스패치, M3=반응형이었는데 의존이 한 방향(디스패치 → 반응형)이라 반응형을 먼저 짓기로 확정했다. 그래서 2026-08-24 이전에 쓰인 session/·archive/·qa-request/ 문서의 M2/M3는 옛 의미로 읽을 것(라이브 문서는 전부 새 번호로 맞춰뒀음). 경위는 .claude/archive/question-resolved.md의 "마일스톤 경계" 절, 새 구성은 ROADMAP.md의 M2 배너. [2026-08-26] 8라운드 손 트레이싱까지 처리 완료 — M2 착수를 막는 항목이 하나도 없다. 결정의 소스는 .claude/qa-request/pre-implementation-handtrace-round8-followup.md (7라운드 몫은 -round7-followup.md; [2026-08-27] 9라운드 몫은 -round9-followup.md — Q1~Q10·H-138·H-139·H-142 전량 반영 완료)이고 .claude/question.md 최우선 절엔 그 반영분에 /code-review가 낸 새 메커니즘 넷(H-143~H-146)이 판단 대기로 올라 있다(M2 착수 게이트는 아님). 같은 상태를 .claude/project-context.md도 서술하니 마일스톤이 넘어갈 때 두 곳을 같이 고칠 것. 진행 상황의 소스는 항상 루트 ROADMAP.md.

이 파일에 내용을 직접 쌓지 말 것 — 짧은 진입점으로 유지한다. 새 서술은 아래 import된 파일 중 맞는 곳에 넣을 것(어디에도 안 맞으면 그건 매 세션 로드될 내용이 아닐 가능성이 높음 — .claude/ 아래 해당 문서로).

항상 로드되는 컨텍스트

관례와 작업 방식 @.claude/conventions.md

프로젝트 컨텍스트와 문서 구조 @.claude/project-context.md

지금 할 일 @.claude/todos.md

온디맨드 자료 (자동 로드 안 됨 — 필요할 때 직접 열 것)

무엇이 궁금할 때 어디를 볼 것
지금 유효한 설계 — 어떤 결정이 확정돼 있는가 .claude/base/ (먼저 .claude/base/architecture.md)
문서 전체 색인 — 어느 파일이 뭘 다루는가 .claude/README.md
사용자가 답해야 할 열린 질문 .claude/question.md
구현 순서 / 마일스톤 루트 ROADMAP.md
사람만 할 수 있는 일 루트 HUMAN_TODO.md
어떤 결정이 왜 그렇게 됐나 / 전에 뒤집힌 적 있나 .claude/session-summary.md를 grep (세션별 2~4줄 요약 색인)
그 결정의 논쟁 과정 원문 .claude/session/YYYY-MM-DD-NN-slug.md
뒤집히거나 기각된 설계의 원문 .claude/archive/

주의: session-summary.md는 의도적으로 @import 안 함 — 계속 자라는 히스토리 문서라 통째로 올릴 이유가 없음(그 문서 스스로 "항상 읽을 필요 없음, 지금 유효한 설계는 base/가 소스"라고 명시). 필요해지면 그때 가서 열 것.

충돌 시 우선순위: .claude/base/ > 여기 요약이나 session-summary.md. 후자들은 과거 시점 서술이라 더 최근 결정이 안 반영돼 있을 수 있음.