No description
사용자 요청으로 최근 확정된 5개 영역을 실제 값으로 손 트레이싱했다 — `Effect(fn, ...deps)` / `Gate`·`Blocker` / State 전파(`rawInvalid`·emit 지연) / Slot의 `native*`·offset·length·mount / `Brand`·`Epoch`·`EpochMap`. 4·5라운드가 "예/아니오 문항지"였던 것과 달리 2·3라운드와 같은 성격이라 파일명도 `handtrace`로 갈랐고, 발견 번호는 `H-n`. **`base/`는 한 줄도 안 고쳤다** — 전부 발견 보고이고 사용자 회신 대기. ## 🔴 셋 (크래시하거나 조용히 어긋남) - `H-1` `:List`의 `keyIndex`가 사이클 **도중**엔 stale인데 `rawMove`/ `rawReplace`/`releaseElement`/`rawDetach`의 live `_elements` 인덱스로 쓰인다. 앞에 하나 끼우면 순서가 조용히 뒤집히고, 리스트 비우기는 소멸 루프의 해시 순회 순서에 따라 `_elements[i] == nil`로 터진다. 5라운드가 "raw\*를 전부 index 기준으로 통일"한 근거였던 *"그 값은 이미 `keyIndex`가 들고 있다"*가 여기서 깨지므로 **그 결정의 전제를 다시 봐야 한다** — 세 갈래(라이브 인덱스 맵 / `indexOfRaw` 기본 경로화 / reconcile 2패스)를 적어뒀고 이게 유일한 사용자 판단 항목 - `H-2` `pos`가 리프 개수와 `_elements` 배열 인덱스를 겸한다. `updateFn`이 중첩 Slot(멀티루트 결과)을 반환하면 첫 사이클에 바로 `table.insert` position out of bounds - `H-3` `getOffsetAt`의 접두합 캐시를 **아무도 무효화하지 않는다**. `invalidAfter = min(...)` 규칙이 표로만 존재하고 `setLength`/ `gatedRecompute`/`_baseObserver`/`spliceArrays*` 어느 의사코드에도 없다. 형제 길이가 변해도 뒤 형제 offset이 고정되고(`Length`만 맞고 offset은 틀리는 형태), 포탈 재마운트는 옛 베이스가 든 캐시를 그대로 물려받는다 ## 🟡🟢 일곱 `bk.invalidAfter`/`offsetCache`가 부기 스펙에 없고 초기값 `nil`이면 비교에서 터짐 / `spliceArraysUp`이 `bk.N`을 먼저 올려 스스로 금지한 창을 열고 그 안에 `nativeInsert`가 들어 있음 / `unmountSlotTree`가 미정의 `physicalTarget` 참조 (+ 순차 extract의 offset 스큐) / `Effect`의 `Ref` 의존성은 해제 API도 `canExecute` 게이팅도 없어 죽은 leaf에서 계속 발화 + 누수 / `EffectHandle._observer`가 아직 단수라 N-deps에서 2번째 이후 재실행이 죽음 / 게이트 `withheld`가 flush 스왑에서 weak를 잃음 / `recompute`의 `sum` 시작값 주석이 stale. ## 이상 없다고 확인한 것 Epoch/EpochMap 판정 규칙(§1 다이아몬드 실제 추적), 게이트 flush 스냅샷과 `:Sync(batch)` 예외, `Effect`의 EpochMap dedup + `_installing` 순서, `materializeSlotTree`/`mountSlotTree` 분해(depth 2 부기·물리 양쪽), 단건과 배치의 순서가 반대인 것, `Brand` 다중 태깅 — 그 문서 마지막 절이 소스이고, 다시 트레이싱할 필요 없다. 인덱스 레이어는 `.claude/README.md`(qa-request 행)와 `.claude/todos.md` 00번 갱신. `doc-check.py` ERROR 0. Claude-Session: https://claude.ai/code/session_01TiW21rnti9SbLgF6twtn6D Co-authored-by: qwreey <me@qwreey.moe> |
||
|---|---|---|
| .claude | ||
| .vscode | ||
| quad-base | ||
| quad-roblox | ||
| quad-types | ||
| type-version-check | ||
| .gitignore | ||
| .luaurc | ||
| CLAUDE.md | ||
| default.project.json | ||
| HUMAN_TODO.md | ||
| mise.toml | ||
| pesde.lock | ||
| pesde.toml | ||
| ROADMAP.md | ||
| SAFETY.md | ||