quad/.claude/base
qwreey-agent-selene 9c3bfc890a
design: RunInit 재설계(함수를 릴레이션 키로) + darklua 경계 실측 정밀화
New()의 멱등 Init 가드를 파일마다 Relate+센티널을 두던 방식에서
module:RunInit(initFn) 하나로 통합 — 함수 자체를 릴레이션 키로 써서
"이 함수, 이 모듈에 실행했는가"를 (module, initFn) -> boolean? 하나로
표현(사용자 제안). Debug/init.luau는 가드 없이 순수 뮤테이션만 하도록
단순화. smoke.init.luau로 재호출 무시/인스턴스별 독립/함수별 독립 3개
시나리오 검증(luau/luau-analyze/selene 클린).

darklua process를 실제로 돌려 @self/@game은 안 건드리고 커스텀 .luaurc
alias(@pkg)만 script.Parent류로 치환한다는 걸 확인 — project-setup-plan.md의
darklua 기각 근거를 "지금은 커스텀 alias를 안 쓰니 불필요, 나중에 도입하면
그때 필요해짐"으로 정밀화.

⚠️ 미결: RunInit을 backend 설치 진입점(QuadRoblox(Quad))에도 재사용할지
— 함수 identity 추적으로는 "다른 팩토리 재호출은 에러" 계약을 못 만족.
module-lifecycle-plan.md에 반영, M2/M5 착수 전 확인 필요.

Co-authored-by: qwreey <me@qwreey.moe>
2026-08-19 16:17:08 +09:00
..
architecture.md tooling: rokit → mise 전환 + selene 린터 도입 (roblox-project-example 벤치마킹) 2026-08-19 15:09:35 +09:00
attribute-plan.md qa: 구현 전 QA 1라운드 결과를 base/에 전량 반영 2026-08-18 19:39:03 +09:00
bind-system-plan.md qa: New()/Quad() 다중 인스턴스화 이름 정정 — 이전 커밋의 오역 정정 2026-08-18 22:23:32 +09:00
blocker-plan.md design: Debounce/Throttle 마지막 판단 대기 4개 닫고 base/로 승격 2026-08-19 02:11:11 +09:00
brand-plan.md qa: 구현 전 QA 1라운드 결과를 base/에 전량 반영 2026-08-18 19:39:03 +09:00
component-composition-plan.md qa: 구현 전 QA 1라운드 결과를 base/에 전량 반영 2026-08-18 19:39:03 +09:00
debounce-throttle-plan.md design: Debounce/Throttle 마지막 판단 대기 4개 닫고 base/로 승격 2026-08-19 02:11:11 +09:00
dispatch-core-plan.md design: New()의 내부 구성 확정 — InitXxx 팩토리 체이닝 + Relate 기반 멱등 Init 가드 2026-08-19 01:16:26 +09:00
effect-plan.md qa: 구현 전 QA 1라운드 결과를 base/에 전량 반영 2026-08-18 19:39:03 +09:00
event-plan.md qa: 구현 전 QA 1라운드 결과를 base/에 전량 반영 2026-08-18 19:39:03 +09:00
fallback-plan.md docs: CLAUDE.md 4분할(매 세션 로드 1537→354줄), 워크플로 가짜 초록불 수정 2026-08-16 01:35:02 +09:00
lifecycle-hooks-plan.md qa: 구현 전 QA 1라운드 결과를 base/에 전량 반영 2026-08-18 19:39:03 +09:00
lifecycle-pattern.md qa: 구현 전 QA 1라운드 결과를 base/에 전량 반영 2026-08-18 19:39:03 +09:00
modifier-plan.md qa: 구현 전 QA 1라운드 결과를 base/에 전량 반영 2026-08-18 19:39:03 +09:00
module-lifecycle-plan.md design: RunInit 재설계(함수를 릴레이션 키로) + darklua 경계 실측 정밀화 2026-08-19 16:17:08 +09:00
onchange-plan.md qa: 구현 전 QA 1라운드 결과를 base/에 전량 반영 2026-08-18 19:39:03 +09:00
project-setup-plan.md design: RunInit 재설계(함수를 릴레이션 키로) + darklua 경계 실측 정밀화 2026-08-19 16:17:08 +09:00
purity-and-effects-plan.md docs(base): bind/store/state 3단계 분할, UI 숏핸드 Tween 지원, existing-instance-bind 기각 2026-08-14 05:10:49 +09:00
ref-plan.md qa: 구현 전 QA 2라운드 — recompute 손 트레이싱으로 RC-1 발견·해결 2026-08-18 22:11:59 +09:00
relate-plan.md design: New()의 내부 구성 확정 — InitXxx 팩토리 체이닝 + Relate 기반 멱등 Init 가드 2026-08-19 01:16:26 +09:00
slot-plan.md design: PopOnly 가칭을 Detach로 리네임 확정 + 공개 표면 위치 확정 2026-08-19 01:46:18 +09:00
source-state-plan.md design: Debounce/Throttle 마지막 판단 대기 4개 닫고 base/로 승격 2026-08-19 02:11:11 +09:00
store-plan.md qa: M0 luau-test 스파이크 05 재작성 통과 + 21 신규(Store 미선언 키) 반영 2026-08-19 14:24:19 +09:00
tag-plan.md qa: 구현 전 QA 1라운드 결과를 base/에 전량 반영 2026-08-18 19:39:03 +09:00
tween-plan.md docs(audit): 프로젝트 전체 재감사 — 분할 후 잔여 stale 참조 14곳 정정 2026-08-14 00:45:03 +09:00
typing-limits.md tooling: 에디터 Luau 솔버 설정 확정 — luau-lsp 설치해 새 솔버 필요성 실측 2026-08-19 14:37:17 +09:00
ui-shorthand-plan.md qa: 구현 전 QA 1라운드 결과를 base/에 전량 반영 2026-08-18 19:39:03 +09:00