No description
Find a file
qwreey 03219af33f
qa: 손 트레이싱 7라운드 4차 패스 — 참조 구현 실측 + 예외 경로, 발견 9건 (H-85~H-93)
1~3차가 안 쓴 각도 둘로 같은 라운드를 이어서 돌렸다.

(1) M2 코어(state-epoch §2~§5 / 전파 모델 / gate 4·8번 / Blocker)를
    방어 코드 없이 문서 그대로 옮긴 참조 구현을 Luau로 짜서 시나리오를
    돌렸다. 손 트레이싱이 못 보는 "여러 규칙이 동시에 걸리는 자리"가
    여기서 나온다. 참조 구현의 대조군은 §1이 예고한 다이아몬드 glitch가
    실제로 사라지는지 확인한 것.
(2) 예외 경로 — 반응형 문서 셋에 "error"가 0건이다. 사용자 콜백이
    던졌을 때 반쯤 갱신된 부기가 무엇을 남기는지 정한 문장이 없다.

🔴 H-85 재계산 끝의 `rawInvalid = false`가 재계산 도중 도착한 무효화를
     지운다 → 캐시가 다음 Set까지 영구 stale (재현 + 한 줄 수정 대조까지)
🔴 H-86 정책이 "보류분이 있는가"를 읽을 수 없어 Throttle의 창이 idle로
     못 돌아온다 → leading 영구 소실 + 타이머 체인이 안 끝나 8절의
     "유계 GC" 주장도 깨짐 (H-55와 별개 — 그쪽은 버리기, 이쪽은 읽기)
🔴 H-87 배치 게이팅 도중 error → 그 owner의 Blocker가 영구 On,
     recompute가 조용히 영영 안 돎 (문서는 yield만 UB로 못박음)
🟡 H-88 전파 중 콜백이 던지면 나머지 구독자는 영구 침묵(값만 자가치유)
🟡 H-89 flush 중 error → 떼어낸 배치 소멸, :Sync와 전파의 순서 미정
🟡 H-90 Effect의 dedup이 루트 에포크 기준이라 dep 하나만 게이팅하면
     같은 루트를 공유하는 다른 dep 때문에 게이팅이 무력화
🟢 H-91 §8의 "항상 Get이 최신"이 과한 서술 (Animate가 반례를 설계로 씀)
🟢 H-92 구독자 스냅샷이 emit마다·노드마다 배열 하나 — §2의 GC 근거와 충돌
🟢 H-93 EpochMap 키가 weak라 중간 State GC 미해결이 "최신이라고 오판"
     으로도 나타남 (실측 스파이크 요구가 하나 늘어남)

부록에 "돌려봤는데 문제가 없던 것" 6건(다이아몬드 glitch 해소, 유한
재진입 안전, Blocker 정책 배선, 빈 배치 무통지, Store lazy __index의
identity 안정성, GateNode 순환 require 없음)도 같이 남겼다.

부수로 .claude/README.md의 qa-request 행에 7라운드가 아예 빠져 있던 걸
채웠다(1~3차 패스 때부터 비어 있었음).

아무것도 base/에 반영하지 않았다 — 회신 대기.

Co-authored-by: qwreey <me@qwreey.moe>
2026-08-25 11:18:05 +09:00
.claude qa: 손 트레이싱 7라운드 4차 패스 — 참조 구현 실측 + 예외 경로, 발견 9건 (H-85~H-93) 2026-08-25 11:18:05 +09:00
.vscode tooling: 에디터 Luau 솔버 설정 확정 — luau-lsp 설치해 새 솔버 필요성 실측 2026-08-19 14:37:17 +09:00
quad-base design: type-version-check 패키지 추출 — CheckedQuad<T, Pattern> 글롭/캐럿 확장 2026-08-19 17:39:57 +09:00
quad-roblox design: type-version-check 패키지 추출 — CheckedQuad<T, Pattern> 글롭/캐럿 확장 2026-08-19 17:39:57 +09:00
quad-types design: type-version-check 패키지 추출 — CheckedQuad<T, Pattern> 글롭/캐럿 확장 2026-08-19 17:39:57 +09:00
type-version-check design: type-version-check 패키지 추출 — CheckedQuad<T, Pattern> 글롭/캐럿 확장 2026-08-19 17:39:57 +09:00
.gitignore tooling: Rojo 설치·검증 — pesde workspace symlink는 Studio 배포와 무관함 확인 2026-08-19 14:27:43 +09:00
.luaurc tooling: 프로젝트 셋업 문서화 + wally→pesde 전환, M1 스캐폴딩 골격 2026-08-19 14:01:07 +09:00
CLAUDE.md design: M2/M3 마일스톤 순서 교체 — 반응형 코어를 먼저, 디스패치를 그 위에 2026-08-25 00:29:15 +09:00
default.project.json tooling: 프로젝트 셋업 문서화 + wally→pesde 전환, M1 스캐폴딩 골격 2026-08-19 14:01:07 +09:00
HUMAN_TODO.md design: M2/M3 마일스톤 순서 교체 — 반응형 코어를 먼저, 디스패치를 그 위에 2026-08-25 00:29:15 +09:00
mise.toml tooling: rokit → mise 전환 + selene 린터 도입 (roblox-project-example 벤치마킹) 2026-08-19 15:09:35 +09:00
pesde.lock design: type-version-check 패키지 추출 — CheckedQuad<T, Pattern> 글롭/캐럿 확장 2026-08-19 17:39:57 +09:00
pesde.toml design: type-version-check 패키지 추출 — CheckedQuad<T, Pattern> 글롭/캐럿 확장 2026-08-19 17:39:57 +09:00
ROADMAP.md design: M2/M3 마일스톤 순서 교체 — 반응형 코어를 먼저, 디스패치를 그 위에 2026-08-25 00:29:15 +09:00
SAFETY.md docs: SAFETY.md에 git 원격별 push 정책 + code-docker/dind 안전성 점검 결과 반영 2026-08-18 10:46:51 +09:00