diff --git a/.claude/question.md b/.claude/question.md index 2f8e851..2399564 100644 --- a/.claude/question.md +++ b/.claude/question.md @@ -69,9 +69,10 @@ API 전부에 걸리며, 2026-08-07 일곱 번째 세션(커링 스타일 확정 **이게 지금 유일하게 `base/` 반영을 막고 있는 결정.** 아래 0-A의 재디스패치 모델은 나머지가 전부 확정됐고, 이 항목 하나만 정해지면 -⚠️ 배너를 단 **6개 문서**(`bind-system-plan.md`/`tag-plan.md`/ -`slot-plan.md`/`attribute-plan.md`/`architecture.md`/`ROADMAP.md`)를 -한 번에 옮기면 됨. +⚠️ 배너를 단 **7개 문서**(`bind-system-plan.md`/`tag-plan.md`/ +`slot-plan.md`/`attribute-plan.md`/`ref-plan.md`/`architecture.md`/ +`ROADMAP.md` — `ref-plan.md`는 9차 세션 분할 때 배너가 같이 안 옮겨간 +걸 10차 세션 감사에서 발견해 추가)를 한 번에 옮기면 됨. **문제**: 새 모델(핸들러 선비교)에서는 그룹 A가 잡아둔 `AttributeKey("foo")` 인덱스 1에 그룹 B가 들어와도 **양쪽 다 `StoreBind`에 @@ -134,12 +135,13 @@ Attribute가 직접 해야 함.** 그 하나 외에는 이 항목에 결정할 게 없음. **실행 규모**: `base/`의 `bind-system-plan.md`/`tag-plan.md`/`slot-plan.md`/ -`attribute-plan.md` 의사코드 재작성 + `architecture.md` 소스트리 서술과 -`ROADMAP.md` M2/M4/M6/M10 체크리스트 — 0-Z 하나만 정해지면 한 번에 옮기면 -됨(어디를 어떻게 고칠지는 `research/dispatch-redispatch-diff-plan.md` 6절에 -파일별로 적어둠 — 뒤 둘은 2026-08-13 7차 감사에서 그 목록에 빠져 있던 걸 -발견해 추가). **그때까지 `base/`의 현행 `hintValue` 서술이 유효** — -아직 안 옮겼다는 걸 잊고 base만 읽으면 옛 모델로 구현하게 되니 주의. +`attribute-plan.md`/`ref-plan.md` 의사코드 재작성 + `architecture.md` +소스트리 서술과 `ROADMAP.md` M2/M4/M6/M10 체크리스트 — 0-Z 하나만 정해지면 +한 번에 옮기면 됨(어디를 어떻게 고칠지는 +`research/dispatch-redispatch-diff-plan.md` 6절에 파일별로 적어둠 — 뒤 +셋은 2026-08-13 7차/10차 감사에서 그 목록에 빠져 있던 걸 발견해 추가). +**그때까지 `base/`의 현행 `hintValue` 서술이 유효** — 아직 안 옮겼다는 걸 +잊고 base만 읽으면 옛 모델로 구현하게 되니 주의. ### 0-B. `dispose(any)` — 시그니처/범위 (2026-08-13 여섯 번째 세션 신설, 사용자 제안) `State` 교체를 파괴가 아니라 **언마운트**로 확정하면서(`state`와 diff --git a/.claude/session/2026-08-13-11-corpus-audit-sequential-direct.md b/.claude/session/2026-08-13-11-corpus-audit-sequential-direct.md new file mode 100644 index 0000000..6b56485 --- /dev/null +++ b/.claude/session/2026-08-13-11-corpus-audit-sequential-direct.md @@ -0,0 +1,101 @@ +# 2026-08-13 열한 번째 세션 — 서브 에이전트 없이 순차 직접 감사, 부정확성 4건 수정 + +## 배경 + +사용자가 "전체 문서 감사를 시작해. 부정확하여 문제되는 부분 있나 봐줘. +단 서브 에이전트 없이 직접 수행해. 오래 걸려도 좋아." — 열 번째 세션이 +6개 병렬 Explore 에이전트로 감사했던 것과 달리, 이번엔 명시적으로 +에이전트 위임 없이 메인 컨텍스트가 직접 전체 코퍼스를 순회하는 방식을 +요청받음. + +## 방법 + +1. `python3 .claude/tools/doc-check.py` 선실행 — ERROR 0, WARN 59건은 + 기존과 동일(전부 절 제목 의역 인용류 허용 범위). +2. `.claude/base/` 20개 문서 전체를 처음부터 끝까지 순서대로 정독 + (architecture → store-semantics → bind-system-plan(2284줄) → + module-lifecycle-plan → lifecycle-pattern → slot-plan(1920줄) → + modifier-plan → purity-and-effects-plan → component-composition-plan + → blocker-plan → effect-plan → ui-shorthand-plan → tag-plan → + attribute-plan → onchange-plan → relate-plan → ref-plan → event-plan + → brand-plan → tween-plan) — 특히 최근 재설계(인덱스 기반 Dispatch, + Slot 언마운트 전환, 0-Z 배너)가 집중된 문서들의 배너 부착 여부와 + 본문 정합성을 중점 확인. +3. `research/` 9개 문서 전체 정독(existing-instance-bind-plan, + debug-tooling-plan, framework-comparison-findings, + additional-primitives-plan, pre-implementation-audit(732줄), + operator-sugar-plan, v1-compat-plan, documentation-plan, + documentation-content-map, dispatch-redispatch-diff-plan). +4. `reference/` 3개 문서, `luau-test/STATUS.md`+`README.md`(폴더 구조와 + 개수 대조), `audit/` 2개 문서, `archive/` 18개 파일 목록과 + `.claude/README.md` 색인 매핑을 확인. +5. `ROADMAP.md`/`HUMAN_TODO.md`/`.claude/question.md`를 다시 정독하며 + 위에서 확인한 최신 상태와 대조. + +## 발견 및 수정 + +**1~2. `question.md` 0-Z/0-A — "6개 문서" stale 카운트**: 0-Z 해소 시 +옮겨야 할 문서 개수가 "6개"로 남아 있었으나, `research/ +dispatch-redispatch-diff-plan.md` 6절(소스)은 이미 `ref-plan.md`를 +포함한 "7개"로 확정돼 있었음 — 9차 세션 분할 때 `ref-plan.md`에 배너가 +안 옮겨간 걸 10차 세션이 발견해 여러 곳을 정정했는데, `question.md` +자신의 이 두 문단(0-Z 상단, 0-A "실행 규모")은 그때 놓쳤던 것. 둘 다 +"7개"+`ref-plan.md`로 정정. + +**3. `HUMAN_TODO.md` 4번 항목 — 동일한 stale 카운트**: 위와 완전히 같은 +"6개" 문구가 이 파일에도 독립적으로 남아있었음(10차 세션이 정정한 파일 +목록엔 `HUMAN_TODO.md`가 없었음) — "7개"로 정정. + +**4. `ROADMAP.md` 백로그 — 이미 해소된 항목이 여전히 할 일로 남음**: +"v1 마이그레이션 가이드 + `objectListClass.__newIndex` 오타 기능 재현 +테스트"가 여전히 미체크 백로그 항목이었으나, 2026-08-13 세 번째 세션 +(`session/2026-08-13-03-v1-newindex-typo-scoped-out.md`)에 이미 "v2엔 +대응 개념 자체가 없어 재현 여부와 무관하게 다룰 대상 아님"으로 해소돼 +있었음(`archive/question-resolved.md`/`reference/quad-v1-architecture.md` +둘 다 반영됐으나 `ROADMAP.md`만 놓침) — 해소 사실과 근거 포인터를 남기고 +재현 테스트 문구는 제거. + +## 문제 없음으로 확인된 것 + +- base/ 20개 문서 전체 — 특히 0-Z 배너가 붙어야 하는 7개 + (`bind-system-plan`/`tag-plan`/`slot-plan`/`attribute-plan`/`ref-plan`/ + `architecture`/`ROADMAP`) 전부 배너 부착 확인, 배너 밖 서술도 최신 + 결정(retract 항상 호출/`State>` 정상 지원/인덱스 기반 + `chains`/Slot 언마운트 전환/`and`·`or` 삼항 금지)과 전부 일치. +- research/ 9개 문서 — stale 정정 배너(Tag 구모델, Tween 구모델 등) + 전부 정확한 위치에 정확한 내용으로 부착됨. +- `luau-test/STATUS.md`↔`README.md`↔실제 폴더 구조 — done 15/ + review-required 1/rewrite-required 3/not-run 1(+헬퍼 1), 세 문서 + 전부 같은 숫자로 일치. +- `archive/` 실제 파일 18개 ↔ `.claude/README.md` 색인 표 18행 — 완전 + 매핑, 누락/초과 없음. +- `reference/` 3개 문서 — Fusion/Vide/v1 비교 자료의 stale 모델 참조는 + 전부 이미 "[정정]" 배너로 최신 모델 포인터가 달려 있었음. + +## 교훈 + +- **같은 stale 값이 여러 문서에 독립적으로 복붙된 경우, 한 문서에서 + 고쳐도 나머지가 자동으로 안 따라온다** — 10차 세션이 이미 같은 종류의 + "6→7" 정정을 겪었는데도(그때는 `dispatch-redispatch-diff-plan.md`/ + `CLAUDE.md`), 그 정정 자체가 다른 두 문서(`question.md`/ + `HUMAN_TODO.md`)엔 안 퍼져 있었음 — CLAUDE.md가 이미 명문화한 "개수· + 목록·상태는 소스를 하나만 둘 것" 원칙이 지켜지지 않은 사례라기보다는, + "소스 하나(`dispatch-redispatch-diff-plan.md`)를 인용하는 여러 자리를 + 전부 grep으로 찾아 동시에 고치지 않으면 한쪽만 갱신되고 나머지는 + 그대로 남는다"는 걸 재확인. +- **"해소됨" 처리가 원본 근거 문서(`archive/`, `reference/`)엔 반영돼도 + 그걸 인용하던 실행 문서(`ROADMAP.md`)엔 전파 안 될 수 있다** — + `objectListClass.__newIndex` 사례처럼, 결정이 내려진 세션 자체는 + 관련 문서 2곳을 정확히 갱신했지만 원래 이 항목을 만들어낸 자리 + (`ROADMAP.md` 백로그)는 그 세션의 반영 대상 목록에 없었던 것으로 보임 + — "이 결정이 어디서 인용되는지" grep을 결정 시점에 한 번 더 돌리는 + 습관이 필요. +- 10차례 감사를 거친 코퍼스라도, 카운트/포인터류의 국소적 stale은 + 여전히 남을 수 있음 — 설계 자체의 모순보다 이런 종류가 훨씬 잦다는 + 건 이미 여러 세션이 확인한 패턴이고 이번에도 동일했음. + +## 반영 상태 + +`question.md`/`HUMAN_TODO.md`/`ROADMAP.md` 3개 파일 수정, `doc-check.py` +ERROR 0 유지 확인. 새로 연 설계 질문 없음(전부 기존 서술 정합성 문제), +0-Y/0-Z 상태 불변. diff --git a/CLAUDE.md b/CLAUDE.md index b0da1b3..7961553 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1036,3 +1036,17 @@ CLAUDE.md "작업 방식"에 중대 변경 핸드오버 체크리스트 6단계 트림 후 깨진 참조 2곳, `ROADMAP.md` M0 섹션의 0-Y/0-Z 게이트 표시 누락. 발견 즉시 24개 파일에 직접 반영, `doc-check.py` ERROR 0 유지 확인. 새로 연 설계 질문 없음. + +**2026-08-13 열한 번째 세션 — 서브 에이전트 없이 순차 직접 감사, 부정확성 4건** +(`session/2026-08-13-11-corpus-audit-sequential-direct.md`) +사용자 요청으로 에이전트 위임 없이 `.claude/base`(20개)/`research`(9개)/ +`reference`(3개)/`luau-test`/`audit`/`archive`(18개) 전체를 순서대로 직접 +정독. 열 번째 세션이 이미 고친 것과 같은 종류의 stale이 두 곳 더 남아있던 +게 핵심 발견 — `question.md` 0-Z/0-A와 `HUMAN_TODO.md` 4번이 여전히 +"6개 문서"(ref-plan.md 누락)로 서술 중이던 것을 "7개"로 정정(같은 정정이 +`dispatch-redispatch-diff-plan.md`/`CLAUDE.md`엔 이미 반영돼 있었으나 이 +두 파일엔 안 퍼져 있었음). 별도로 `ROADMAP.md` 백로그의 +`objectListClass.__newIndex` 재현 테스트 항목이 세 번째 세션에 이미 +불필요로 해소됐는데 그 반영이 이 파일에만 안 퍼져 있던 것도 정정. base/ +research/reference/luau-test/archive 전체는 정합성 문제 없음 확인 — +`doc-check.py` ERROR 0 유지. 새로 연 설계 질문 없음. diff --git a/HUMAN_TODO.md b/HUMAN_TODO.md index e9c43d7..a57b2a5 100644 --- a/HUMAN_TODO.md +++ b/HUMAN_TODO.md @@ -75,9 +75,10 @@ git.qwreey.moe에 제한된 계정 생성). 로컬 git 저장소는 이미 초 제가 물리적으로 스케치해보며 심층 분석해보겠습니다." **막고 있는 범위**: 0-Z가 정해져야 `bind-system-plan.md`/`tag-plan.md`/ -`slot-plan.md`/`attribute-plan.md`/`architecture.md`/`ROADMAP.md` 6개를 새 -모델로 한 번에 옮길 수 있음 — 그 전에 M2/M4/M6/M10을 구현하면 곧 갈아엎어야 -하는 코드를 짜게 됨. 상세/선택지는 `.claude/question.md` 최상단. +`slot-plan.md`/`attribute-plan.md`/`ref-plan.md`/`architecture.md`/ +`ROADMAP.md` 7개를 새 모델로 한 번에 옮길 수 있음 — 그 전에 M2/M4/M6/M10을 +구현하면 곧 갈아엎어야 하는 코드를 짜게 됨. 상세/선택지는 +`.claude/question.md` 최상단. ## 5. Studio 전용 스파이크 `10` 마저 돌리기 (사람만 가능) diff --git a/ROADMAP.md b/ROADMAP.md index ce7f8c2..ae241c6 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -644,5 +644,7 @@ Luau 코드로 부딪혀본 적 없는 세 가지**를 던지는 코드로 검 quad-mock과 목적이 다름(오프라인 검증 vs 실시간 라이브 관찰) — 단 trace 이벤트 스키마를 공유할 여지는 있음, 그 문서 참고. M2/M3/M5 구현 시 훅 확장 지점만 고려해두면 이 항목 자체는 지금 착수 불필요. -- [ ] v1 마이그레이션 가이드 + `objectListClass.__newIndex` 오타 기능 재현 테스트 +- [ ] v1 마이그레이션 가이드(`objectListClass.__newIndex` 오타 기능 재현 + 테스트는 2026-08-13 세 번째 세션에 불필요로 해소됨 — + `archive/question-resolved.md` 참고, v2엔 대응 개념 자체가 없음) - [ ] Slot 형제 순서 보장(다중 백엔드 관점) — Roblox만이면 급하지 않음