quad/.claude/base
qwreey 46287ee393
fix: "Gate 재진입 계약"은 잘못 옮긴 서술 — 열린 항목에서 제거, emit=flush로 정정
사용자 반문으로 에이전트 서술 오류 둘을 정정. 결론은 안 바뀌었고 근거와
열린 항목 목록만 정리됐다.

1) gate-plan.md 6번의 "onUpstreamEmit 안에서 같은 게이트의 emit()을 재귀적으로
   부르는 경우"는 blocker-plan.md의 재진입 절을 잘못 옮긴 것이다. 그 절은
   같은 Blocker 인스턴스를 중첩해 On()/Off() 하는 것을 말하고 정책의 emit()
   호출과 무관하며, 정책이 flush를 부르는 건 재귀가 아니라 평범한 통과
   경로다. 계약 셋으로 정리: 끝나지 않는 되먹임은 UB(dispatch-core-plan.md의
   2026-08-04 확정 원칙), 유한한 재진입은 지원(debounce-throttle-plan.md의
   onWindowEnd 주석이 이미 대비), 같은 인스턴스 중첩 금지는 Blocker 규칙 그대로.
   그래서 question.md의 사용자 판단 항목에서 재진입을 뺐다.

2) 정책이 받는 emit은 "이 값을 내보내라"가 아니라 "쌓인 걸 지금 흘려보내라"
   (flush)이고, debounce-throttle-plan.md가 이미 gate:passThrough()로 부르던
   것이다. 배치를 떼어내는 것도 그 핸들 안에서 일어나므로, 직전 커밋이
   "재진입 위험"이라 부른 것은 에이전트가 적은 "전파 후 table.clear" 의사코드의
   결함이지 모델의 구멍이 아니었다. 수정(flush 진입 시 스왑)은 그대로 유효하고
   서술만 그렇게 고쳤다.

Gate에 남은 사용자 판단은 빈 배치 emit 하나뿐. 처리 전량은 U절.
doc-check.py ERROR 0.

Co-authored-by: qwreey <me@qwreey.moe>
Claude-Session: https://claude.ai/code/session_01TiW21rnti9SbLgF6twtn6D
2026-08-21 22:27:07 +09:00
..
architecture.md design: Gate 표면 확정(state:Gate + GateNode) + State 에포크 채택, 두 문서 base/ 승격 2026-08-21 21:04:27 +09:00
attribute-plan.md qa: 구현 전 QA 5라운드 — 문항지·회신·전량 반영 + 감사 2라운드 2026-08-21 18:19:58 +09:00
bind-system-plan.md qa: New()/Quad() 다중 인스턴스화 이름 정정 — 이전 커밋의 오역 정정 2026-08-18 22:23:32 +09:00
blocker-plan.md design: Gate 표면 확정(state:Gate + GateNode) + State 에포크 채택, 두 문서 base/ 승격 2026-08-21 21:04:27 +09:00
brand-plan.md design: QA 4라운드 2차 회신 반영 — B절 확인분 + C절 결정 7건 2026-08-21 10:47:45 +09:00
component-composition-plan.md qa: 구현 전 QA 1라운드 결과를 base/에 전량 반영 2026-08-18 19:39:03 +09:00
debounce-throttle-plan.md design: Gate 표면 확정(state:Gate + GateNode) + State 에포크 채택, 두 문서 base/ 승격 2026-08-21 21:04:27 +09:00
dispatch-core-plan.md design: native* 물리 조작 계층 확정 + C-7("부기가 물리보다 먼저") 역전 2026-08-21 20:07:21 +09:00
effect-plan.md design: Gate 표면 확정(state:Gate + GateNode) + State 에포크 채택, 두 문서 base/ 승격 2026-08-21 21:04:27 +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
gate-plan.md fix: "Gate 재진입 계약"은 잘못 옮긴 서술 — 열린 항목에서 제거, emit=flush로 정정 2026-08-21 22:27:07 +09:00
lifecycle-hooks-plan.md design: QA 4라운드 회신 1차 반영 — 즉시 처리 가능한 정정 20건 2026-08-20 00:48:07 +09:00
lifecycle-pattern.md qa: 구현 전 QA 5라운드 — 문항지·회신·전량 반영 + 감사 2라운드 2026-08-21 18:19:58 +09:00
modifier-plan.md design: QA 4라운드 2차 회신 반영 — B절 확인분 + C절 결정 7건 2026-08-21 10:47:45 +09:00
module-lifecycle-plan.md design: QA 4라운드 회신 1차 반영 — 즉시 처리 가능한 정정 20건 2026-08-20 00:48:07 +09:00
onchange-plan.md qa: 구현 전 QA 1라운드 결과를 base/에 전량 반영 2026-08-18 19:39:03 +09:00
project-setup-plan.md design: type-version-check 패키지 추출 — CheckedQuad<T, Pattern> 글롭/캐럿 확장 2026-08-19 17:39:57 +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
quad-types-plan.md design: type-version-check 패키지 추출 — CheckedQuad<T, Pattern> 글롭/캐럿 확장 2026-08-19 17:39:57 +09:00
ref-plan.md design: QA 4라운드 회신 1차 반영 — 즉시 처리 가능한 정정 20건 2026-08-20 00:48:07 +09:00
relate-plan.md design: New()의 내부 구성 확정 — InitXxx 팩토리 체이닝 + Relate 기반 멱등 Init 가드 2026-08-19 01:16:26 +09:00
slot-plan.md design: native* 물리 조작 계층 확정 + C-7("부기가 물리보다 먼저") 역전 2026-08-21 20:07:21 +09:00
source-state-plan.md design: Gate 표면 확정(state:Gate + GateNode) + State 에포크 채택, 두 문서 base/ 승격 2026-08-21 21:04:27 +09:00
state-epoch-plan.md fix: 두 번째 /code-review high 7건 — 유실 경로 둘 포함 5건 수정, 2건 승격 2026-08-21 22:14:16 +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 qa: 구현 전 QA 5라운드 — 문항지·회신·전량 반영 + 감사 2라운드 2026-08-21 18:19:58 +09:00
typing-limits.md design: type-version-check 패키지 추출 — CheckedQuad<T, Pattern> 글롭/캐럿 확장 2026-08-19 17:39:57 +09:00
ui-shorthand-plan.md qa: 구현 전 QA 5라운드 — 문항지·회신·전량 반영 + 감사 2라운드 2026-08-21 18:19:58 +09:00