quad/.claude/archive/agent-mistake.md
qwreey 4f3badf414
docs(base): 코퍼스 전체 정합성 감사 반영, 기각된 대안 archive 이관
병렬 서브에이전트 4개로 base/reference/research/archive 전체를 재감사해
발견한 14건 수정 — canExecute(inst,value) 시그니처 통일, Dispatch.process가
Dispatch 체인/retractUnder와 모순되던 서술 정정, "프로바이더"→Handler 잔재
정리, Overridden 오타, :Peek 반환 타입에 None 누락, Peek/isState 미정
표기 해소 누락, slot CRUD 의미론 갭 미표기, Relate 개명 반영 누락,
pre-implementation-audit.md 자기모순(이미 해소된 1-2 재언급, 옛 UI
숏핸드 이름), documentation-content-map.md 신구 이름 자기모순 및
TagService/CollectionService 재발, README.md archive 색인 누락 행,
agent-mistake.md 카테고리 태그 누락.

modifier-plan.md 9-1번 절에 인라인으로 남아있던 기각된 Apply-mutable
대안 두 개의 전체 경위를 archive/modifier-apply-mutable-rejected.md로
이관하고 본문은 결론+포인터로 압축 — quadnomicon 개발로그 소재 확보,
컨텍스트 비대화 방지.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-08 11:38:29 +09:00

2.4 KiB

[에이전트 실수] 에이전트 실수 기록

CLAUDE.md 세션 로그 안에 흩어져 있던 "에이전트가 같은 세션 안에서 스스로 정정한 실수" 서술을 여기로 모음 — 최종 결론은 이미 각 base/ 문서에 정확히 반영돼 있어서 CLAUDE.md에 전체 문단을 남겨둘 필요는 없지만(중복), 같은 실수를 반복하지 않기 위한 기록 자체는 남겨둘 가치가 있음. 다른 archive 문서(*-reversed.md/*-rejected.md)와 달리 이건 "설계 결정의 반전"이 아니라 "에이전트가 문서를 쓰다가 실제로 개념을 혼동했던 사례" 전용.

1. canExecuteisHandlable을 같은 개념으로 혼동 (2026-08-07 여덟 번째 세션)

실수: NoneHandler(값을 None에서 nil로 바꿔 재디스패치하는 base 내장 핸들러)를 설계하며 그 매치 조건을 canExecute로 잘못 서술함.

정정: 둘은 완전히 다른 계층 — isHandlable(k,v)는 KV 매치 predicate(핸들러가 이 키/값을 담당하는지 판단, 핸들러 계약 4종 중 하나), canExecute(handle)는 특정 바인딩 하나가 "지금 살아있어 실행돼도 되는가"만 보는 별개의 라이프타임 게이트(base/lifecycle-pattern.md). NoneHandler가 구현해야 하는 건 isHandlable이지 canExecute가 아님.

현재 유효한 설계: base/bind-system-plan.mdNone 센티널 절과 "매치 predicate는 isHandlable" 절이 최종 소스.

2. isSource가 불필요하다고 잘못 판단 (다섯 번째 세션 → 여덟 번째 세션에서 정정)

실수: 2026-08-07 다섯 번째 세션에서 isState/isSource predicate를 설계하며 "State면 충분한 용도만 있으니 isSource는 따로 안 만들어도 된다"고 서술. 이때 base/component-composition-plan.md 4번 절은 이미 isSource가 존재한다고 가정하고 쓰여 있었는데, 그 모순을 그때는 못 찾아냄.

정정: SourceState보다 실제로 더 많은 능력(:Set/:Emit)을 가진 서브타입이라, "쓰기도 되는 원천인가"를 알아야 하는 코드는 isState만으론 부족함 — isSource를 별도로 제공해야 함. isState는 여전히 {State, Source} 둘 다 통과시킴(상위집합 판별 유지).

현재 유효한 설계: base/bind-system-plan.mdBrand 절 (isState/isSource가 둘 다 존재, 전자는 집합 멤버십, 후자는 단순 항등)이 최종 소스.