9차 세션의 구조 변경(luau-test 재편/bind-system-plan 분할/question.md 트림)이 남긴 반영 누락을 6개 병렬 에이전트로 찾아 즉시 수정: - luau-test 재편 후 깨진 flat 경로 참조 9곳을 파일명+실제 폴더로 정정 - bind-system-plan.md 분할 후 자기참조/외부참조 깨짐 8곳 정정 - ref-plan.md에 0-Z 배너가 안 옮겨와 옛 재디스패치 모델을 무배너로 서술 중이던 것 발견 — 배너 추가, 반영 대상 6개→7개로 갱신 - "8차 세션"으로 잘못 표기된 9차 세션 작업 17곳(git 커밋 타임스탬프로 교차검증) 정정 - question.md 트림 중 빠진 열린 질문(State<State<T>> 평탄화) 복원, 트림 후 깨진 참조 2곳 정정 - ROADMAP.md M0 섹션에 0-Y/0-Z 게이트 표시 누락 보강 doc-check.py ERROR 0 유지. 새로 연 설계 질문 없음 — 전부 기존 서술 정합성 문제. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y6hzeUi5QdLPEk69B6cXFa
125 lines
7.9 KiB
Markdown
125 lines
7.9 KiB
Markdown
# 2026-08-13 열 번째 세션 — 병렬 에이전트 코퍼스 감사, 실제 부정확성 7건 발견·수정
|
|
|
|
## 배경
|
|
|
|
사용자가 "세션 기록들을 전부 읽어보며 문서 전체에 문제가 되는 부분이
|
|
있는지" 요청 — 단, 미확정 항목(0-Y/0-Z 등)은 문제로 세지 말고 **문서가
|
|
실제로 부정확한 것만** 짚어달라는 조건. 직전 세션(아홉 번째)이 `luau-test/`
|
|
상태별 폴더 재편, `bind-system-plan.md` 1단계 분할, `question.md` 트림,
|
|
`doc-check.py` 신설을 한 번에 처리한 큰 구조 변경 세션이었기 때문에, 그
|
|
변경들의 반영 누락이 남아있을 가능성이 가장 높은 지점으로 판단.
|
|
|
|
## 방법
|
|
|
|
1. 먼저 `python3 .claude/tools/doc-check.py`로 기계가 잡는 것부터 확인 —
|
|
ERROR 0, WARN 60건은 전부 기존에 허용 범위로 확인된 것(패러프레이즈
|
|
인용, 이미 날짜/범위가 명시된 완결 주장)이라 새 이슈 없음.
|
|
2. 기계가 못 잡는 의미론적 문제를 6개 병렬 Explore 에이전트로 분담
|
|
(CLAUDE.md "작업 방식"의 병렬 Agent 원칙 그대로):
|
|
- A: `bind-system-plan.md` 분할(9차 세션) 정합성
|
|
- B: `luau-test/` 폴더 재편(9차 세션) 정합성
|
|
- C: `question.md` 트림(9차 세션) 정합성
|
|
- D: 배너 달린 base 4종(`bind-system-plan`/`tag`/`slot`/`attribute`)
|
|
정밀 감사 — 배너 범위 밖 서술이 다른 최근 결정과 모순되는지
|
|
- E: 나머지 base 16개 문서 전수 — retract-always-fires/
|
|
`State<State<T>>`/인덱스 기반 chains/Slot 언마운트 전환/and·or
|
|
금지 등 최근 결정 위반 여부
|
|
- F: 루트 문서(`ROADMAP.md`/`HUMAN_TODO.md`/`.claude/README.md`)와
|
|
`archive/` 정합성, 0-Y/0-Z 게이트 표시 여부
|
|
3. 각 결과를 실시간으로 검토하며 발견 즉시 직접 수정(에이전트에 위임
|
|
안 함 — CLAUDE.md "중대 변경 핸드오버 체크리스트"의 "그 자리에서
|
|
닫을 것" 원칙).
|
|
|
|
## 발견 및 수정
|
|
|
|
**1. `luau-test/` 재편 후 깨진 flat 경로 참조** — `research/
|
|
pre-implementation-audit.md`, `base/store-semantics.md`,
|
|
`base/modifier-plan.md`(2곳), `base/lifecycle-pattern.md`,
|
|
`.claude/README.md`, `audit/gcconn-trick-verification.md`(4곳)가 옛
|
|
`luau-test/08-...`/`/09-...`/`/10`/`/17`/`/gc-trigger-helper...` 경로를
|
|
그대로 참조 — 실제 파일은 `done`/`review-required`/`not-run` 하위로
|
|
이동해 전부 깨진 링크였음. 파일명+실제 소속 폴더 표기로 정정(경로
|
|
대신 파일명 참조라는 9차 세션 원칙 준수).
|
|
|
|
**2. `bind-system-plan.md` 분할 후 참조 정합성 깨짐**:
|
|
- 분할된 문서 **자기 자신** 안의 "아래 Ref 절"/"위 PreRef 절"/"위
|
|
이벤트 절" 같은 위치 참조 4곳(167/332/863/1102줄)이 실제로 이동된
|
|
절을 못 따라감 — "순수 이동"이 텍스트 상호참조까지는 보장 못 한다는
|
|
사례.
|
|
- 외부 문서(`architecture.md`/`relate-plan.md`/
|
|
`component-composition-plan.md`/`question.md`)와 luau-test 파일 2개가
|
|
여전히 `bind-system-plan.md`의 Ref/Brand 절을 가리킴 — 전부
|
|
`ref-plan.md`/`event-plan.md`/`brand-plan.md`로 정정.
|
|
- **가장 중요한 발견**: `ref-plan.md`의 "`Ref`의 retract" 절이 옛
|
|
재디스패치 모델(선행 `retractFrom` 호출)을 그대로 서술하는데, 분할
|
|
때 다른 4개 base 문서가 이미 달고 있던 0-Z ⚠️ 배너가 안 옮겨와 있었음
|
|
— 이 상태로 구현하면 옛 모델로 짜일 위험. `research/
|
|
dispatch-redispatch-diff-plan.md` 6절 검토로 실제 대상 메커니즘이
|
|
맞는지 교차검증 후(단순 키워드 매치가 아니라 "선행 호출 후 process"
|
|
패턴이 정확히 일치함을 확인) 같은 형식의 배너 추가, 반영 대상을
|
|
6개→**7개**로 `dispatch-redispatch-diff-plan.md`/`CLAUDE.md` 양쪽 갱신.
|
|
|
|
**3. 세션 번호 오기(8차→9차) 대량 발견** — `bind-system-plan.md` 분할/
|
|
`luau-test/` 재편/`question.md` 트림/`tools/` 신설이 실제로는 전부
|
|
**9차 세션**(`session/2026-08-13-09-structure-and-guardrails.md`) 작업인데,
|
|
git 커밋 타임스탬프로 교차검증한 결과 총 17곳(`.claude/README.md` 4곳,
|
|
`question.md`, `archive/question-resolved.md`, `luau-test/STATUS.md`,
|
|
`luau-test/README.md`, `base/ref-plan.md`/`event-plan.md`/
|
|
`brand-plan.md`/`bind-system-plan.md`의 분할 배너 6곳, `doc-check.py`
|
|
자기 설명 2곳)가 "8차 세션"으로 잘못 표기돼 있었음(같은 날 2026-08-07의
|
|
진짜 8차 세션과 혼동된 것으로 추정) — 전부 정정.
|
|
|
|
**4. `question.md` 트림 중 열린 질문 하나 누락** — `State<State<T>>`
|
|
평탄화(`state:Flatten()`) 백로그 항목이 `research/
|
|
operator-sugar-plan.md`엔 있는데 트림된 `question.md`에서 빠져 있었음 —
|
|
3번 절(낮은 우선순위)에 복원.
|
|
|
|
**5. 트림 후 깨진 참조** — `research/v1-compat-plan.md`가 이미
|
|
`archive/question-resolved.md`로 옮겨진 "여러 Slot이 형제로 섞일 때
|
|
순서 보장" 항목을 옛 `question.md:110` 경로로 가리키고 있었음(그
|
|
줄번호도 트림 후 빈 줄이 됨) — 2곳 정정.
|
|
|
|
**6. `ROADMAP.md`의 M0 섹션에 0-Y/0-Z 게이트 표시 누락** — M2/M4/M6/M10엔
|
|
"0-Z 먼저 해소할 것" 배너가 있는데, 정작 M0 자체가 두 결정에 막혀
|
|
있다는 사실이 서두/M0 섹션 어디에도 안 적혀 있었음(`HUMAN_TODO.md`/
|
|
`CLAUDE.md`/`question.md`는 이미 정확히 서술 중이었음 — `ROADMAP.md`만
|
|
누락) — M0 섹션 시작 부분에 게이트 배너 추가.
|
|
|
|
## 문제 없음으로 확인된 것
|
|
|
|
배너 달린 4개 base 문서의 배너 **범위 자체**는 정확 — 배너 밖 서술
|
|
(retract 항상 호출, `State<State<T>>` 정상 지원, 인덱스 기반 `chains`,
|
|
Slot 언마운트 전환, `and`/`or` 금지)은 전부 최신 결정과 일치, 모호해서
|
|
독자를 오도할 소지 없음. 나머지 base 16개 문서, `HUMAN_TODO.md`,
|
|
`luau-test/STATUS.md`의 상태 표는 실측과 정합. `question.md`/
|
|
`question-resolved.md` 사이 항목 재분류 오류나 번호 충돌 없음.
|
|
|
|
## 교훈
|
|
|
|
- **"순수 이동"이라고 선언해도 상호참조 검증은 별도로 필요** —
|
|
bind-system-plan.md 분할이 "내용은 안 바꿈"을 지켰어도, 그 내용이
|
|
참조하던 방향(위/아래, 같은 파일 안 절 이름)과 그 내용을 참조하던
|
|
외부 문서 양쪽 다 별도로 grep 전수 스윕이 필요했음. 이번엔 doc-check.py가
|
|
없던 시절 방식(agent가 직접 정독)으로 잡았지만, doc-check.py의 절
|
|
참조 검사가 왜 이 6곳을 못 잡았는지도 짚어둘 것 — "Ref 절"처럼 헤딩
|
|
전체가 아니라 **파일명이 함께 안 적힌** 참조는 정규식이 "그 파일
|
|
안에 있다"고 가정하고 검사하므로, 파일명 없는 방향 참조(아래/위)
|
|
자체가 애초에 이 검사의 사각지대. 파일을 쪼갤 땐 grep으로 "아래/위
|
|
OO 절"류 방향 참조부터 훑는 걸 체크리스트에 추가할 가치 있음.
|
|
- **배너가 파일 단위로 붙어있으면, 그 파일에서 분할된 새 파일에
|
|
배너 대상 내용이 섞여 있는지 별도 확인이 필요** — `ref-plan.md`
|
|
사례처럼, 분할 시점에 배너 자체를 "옮길지 말지"를 판단할 근거
|
|
문서(`dispatch-redispatch-diff-plan.md`)가 그 새 파일을 아직 몰랐던
|
|
경우 특히 위험.
|
|
- **날짜/세션 번호는 한 번 잘못 적히면 복붙되며 퍼진다** — 이번
|
|
17곳도 대부분 서로를 참고하며 같은 오기를 반복한 것으로 보임(README
|
|
색인이 base 파일 배너를 그대로 요약하는 식). 세션 번호는 가능하면
|
|
파일명(`session/YYYY-MM-DD-NN-slug.md`)에서 기계적으로 뽑아 쓰는 게
|
|
안전.
|
|
|
|
## 반영 상태
|
|
|
|
base/README/question.md/archive/ROADMAP/CLAUDE.md/tools/ 전부 이 세션
|
|
안에서 즉시 반영 완료 — 24개 파일 수정, `doc-check.py` ERROR 0 유지
|
|
확인. 새로 연 설계 질문 없음(전부 기존 서술 정합성 문제), 0-Y/0-Z 상태
|
|
불변.
|