quad/.claude/qa-request
qwreey 8cc388cfab
qa: 7라운드 발견 52건 검증 패스 — 유효 49 / 범위 축소 2 (H-55~H-106)
발견을 더 찾는 패스가 아니라 이미 나온 것이 유효한지만 판정한다. 52건
전부를 한 세션이 한 컨텍스트에서 썼으므로 쓴 세션 자신은 자기가 뭘 잘못
봤는지 모른다(conventions.md가 반복 확인한 그 패턴). 판정 뒤 사용자가
batch로 결정하므로 무효 항목이 섞이면 그 비용을 그대로 문다.

**재실행이 아니라 대조로 판정했다.** audit/handtrace-round7-reference-impl/
README가 못박은 대로, 4·5·6차 패스의 발견은 스파이크를 다시 돌려서가 아니라
전사물(core/dispatch/chain.luau)과 base/ 확정 의사코드를 줄 단위로 맞춰
판정했다. Luau 언어 동작·저장소 상태를 주장하는 것(H-71/H-77/H-73/H-75/
H-76/H-78/H-83, 타입 스파이크 전량)만 직접 재실행해 교차 확인했다.

## 전사 대조 결과 — 전사 오류로 생긴 발견은 없다

State:_receive / _recompute / Get, GateNode _flush/_receive, Source:Set의
bit32.bnot(-rev), emitDown 스냅샷, getOffsetAt/recompute(에러 메시지까지)/
setLength/setOffsetSource, chain의 process/retractFrom — 전부 원문과 일치.

README가 신고한 의도적 차이 3개 외에 **미신고 차이 3개**를 찾았으나 셋 다
발견을 만들지 않는다: (1) Blocker:Policy가 2인자(죽은 인자, 아무도 안 넘김),
(2) Blocker.handles가 강한 배열(문서는 weak — H-63(2)를 오히려 가림),
(3) M.Observer가 즉시 1회 실행을 안 하고 self.owner 강참조를 둠(앞은
dispatch.luau가 명시 호출로 등가 보정, 뒤는 GC 문제를 가리는 방향).

## 판정

- 유효 49 / 범위 축소 2 / 무효 0 / 중복 0.
- **H-87 범위 축소** — "코퍼스가 error 경로를 어느 쪽도 안 다룬다"가 거짓.
  slot-plan.md가 같은 실패 모드를 명시하고 사용자가 2026-08-21에 "pcall로
  감싸지 않는다"로 이미 판단했다. 갈래 (a)가 든 두 자리 중 하나가 닫힌
  결정이라, 그대로 올리면 사용자가 자기 판단을 모른 채 재결정하게 된다.
  남는 진짜 질문은 그 판단을 Dispatch.drive(자가치유 없음)까지 확장할지.
- **H-105 범위 축소** — 개수를 직접 셌다. 영어 6은 맞지만 한국어는 17이
  아니라 약 23이고, 17+6이 애초에 "42곳"과 안 맞는다. 현상과 결정
  필요성은 유효.
- **H-88 정정** — 셋 문서에 error 0건은 참이나 "코퍼스에 한 줄도 없다"는
  과하다. 선례가 하나 있고 그건 갈래 (b) 쪽을 가리킨다.
- **H-104 정정** — "level 인자가 하나도 없다"는 전수 확인으로 참,
  "42곳"만 약 29곳으로 정정.

## batch용 요약

번호순 52건이 아니라 결정 단위 12묶음(A~L)으로 재편성했다. 같은 묶음은
결론이 서로를 규정하므로 따로 답하면 갈라진다. 몇 가지 눈에 띄는 것:

- H-55(버리기)와 H-86(읽기)은 emit(commit) -> boolean 하나로 같이 닫힌다.
- H-56/H-62/H-61은 "전파 루프 의사코드" 한 블록을 쓰면 같이 닫힌다.
- H-73을 탑레벨 함수로 닫으면 H-74가 통째로 소멸한다.
- H-58과 H-59는 Ref 콜백 등록을 공유 헬퍼로 빼는 같은 수정으로 닫히고,
  그 전에 H-60(Rerun 정의)이 있어야 나머지를 쓸 문장이 생긴다.
- H-71의 해법 (b)가 H-77엔 안 듣는다(실측) — Relate 슬롯 셋을 나눠 쓸 것.
- H-78이 제일 급하다: 지금 이 저장소에서 smoke 2개가 안 돌고
  luau-analyze가 거짓 클린을 준다(검증 세션에서 재현).
- H-66/H-67/H-82/H-91은 결정 불필요(근거·표기만 정정).

.claude/README.md의 qa-request 행에도 등재. doc-check.py ERROR 0.

Co-authored-by: qwreey <me@qwreey.moe>
2026-08-25 12:26:53 +09:00
..
.gitkeep chore: add empty folders 2026-08-10 01:22:53 +09:00
pre-implementation-handtrace-round6-followup.md design: 손 트레이싱 6라운드 전량 처리·반영 — H-1~H-54 확정, M2/M3 설계 게이트 해소 2026-08-24 18:54:14 +09:00
pre-implementation-handtrace-round6.md design: 손 트레이싱 6라운드 전량 처리·반영 — H-1~H-54 확정, M2/M3 설계 게이트 해소 2026-08-24 18:54:14 +09:00
pre-implementation-handtrace-round7-verification.md qa: 7라운드 발견 52건 검증 패스 — 유효 49 / 범위 축소 2 (H-55~H-106) 2026-08-25 12:26:53 +09:00
pre-implementation-handtrace-round7.md audit: 7라운드 4·5·6차 패스의 참조 구현·스파이크를 저장소로 (재현 가능하게) 2026-08-25 12:00:08 +09:00
pre-implementation-qa-round1.md qa: New()/Quad() 다중 인스턴스화 이름 정정 — 이전 커밋의 오역 정정 2026-08-18 22:23:32 +09:00
pre-implementation-qa-round2.md qa: 구현 전 QA 2라운드 — recompute 손 트레이싱으로 RC-1 발견·해결 2026-08-18 22:11:59 +09:00
pre-implementation-qa-round3.md qa: 구현 전 QA 3라운드 — attachSlot/bk.N 트레이싱으로 RC-3/RC-4 발견·해결 2026-08-19 00:07:30 +09:00
pre-implementation-qa-round4-followup.md design: Epoch/EpochMap/Brand 전면 승격 + 해소 기록 flatten 2026-08-22 01:27:18 +09:00
pre-implementation-qa-round4-response.md qa: 구현 전 QA 4라운드 문항지 — base/ 전 문서 확정 주장 전수 문항화 2026-08-20 00:33:49 +09:00
pre-implementation-qa-round4.md qa: 반영 후 감사 6라운드 — 실제 크래시 3건 포함 18건 수정 2026-08-21 13:20:42 +09:00
pre-implementation-qa-round5-followup.md design: Epoch/EpochMap/Brand 전면 승격 + 해소 기록 flatten 2026-08-22 01:27:18 +09:00
pre-implementation-qa-round5-response.md qa: 구현 전 QA 5라운드 — 문항지·회신·전량 반영 + 감사 2라운드 2026-08-21 18:19:58 +09:00
pre-implementation-qa-round5.md design: Epoch/EpochMap/Brand 전면 승격 + 해소 기록 flatten 2026-08-22 01:27:18 +09:00