quad/.claude/session/2026-08-14-03-fallback-traceback-promoted.md
qwreey 2d9cc7b5f7
docs(base): Fallback/Traceback 승격 — research/에서 base/fallback-plan.md로
pcall 기반 Fallback과 xpcall+debug.traceback 기반 Traceback으로 분리,
정확한 제네릭 시그니처(OkComp/ErrComp/Args... 독립 제네릭)와 err: any를
확정. 패키지(quad-base)·이름(Fallback/Traceback) 확정으로 남은 열린
질문이 없어져 base/로 승격. 스파이크를 audit/fallback-xpcall-spike.luau로
옮기고 base/fallback-plan.md와 이름을 맞춰 내부 함수를 Traceback으로
정정, audit/fallback-xpcall-verification.md에 실측 결과 기록. README/
question.md/archive/question-resolved.md/lifecycle-hooks-plan.md의 상호
참조 동기화.

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

1.8 KiB

2026-08-14 세 번째 세션 — Fallback/Traceback 승격

research/component-fallback-plan.mdbase/fallback-plan.md로 승격. 해소된 내용:

  • Fallback/Traceback으로 분리pcall 기반 Fallback(trace 없음)과 xpcall+debug.traceback 기반 Traceback(trace 항상 있음)을 플래그 하나 대신 별도 함수 둘로 확정(Ref/PreRef와 같은 패턴).
  • 정확한 시그니처 확정: Fallback<OkComp, ErrComp, Args...>(base: (Args...) -> OkComp, onError: (err: any) -> ErrComp) -> (Args...) -> (OkComp | ErrComp), TracebackonError(err: any, trace: string)을 받는 것만 다름.
  • err: any 확정 — Lua error()가 임의 값(테이블 등)을 던질 수 있음을 사용자 REPL 확인과 스파이크 결과로 재확인, error(msg) 기본 호출의 위치 접두("파일:줄: ") 캐비엇도 같이 문서화.
  • 패키지는 quad-base(사용자 확정), 이름은 Fallback/Traceback으로 점유(사용자 확정, 용어 정리 대기열 안 올림).
  • 열려있던 질문 전부 해소 — 남은 건 구현 자체뿐(우선순위는 그대로 맨 뒤).

반영

  • base/fallback-plan.md 신설(승격), research/component-fallback-plan.md 삭제.
  • 스파이크 스크립트를 research/에서 audit/fallback-xpcall-spike.luau로 이동, 내부 함수명도 FallbackTraceback으로 정정(실제 검증 대상과 일치시킴), 재실행으로 통과 재확인.
  • audit/fallback-xpcall-verification.md 신설(실측 결과 기록).
  • README.md(base/research/audit 표), question.md(해소 항목 제거), archive/question-resolved.md(요약 테이블에 추가), CLAUDE.md(4번 백로그 목록), research/lifecycle-hooks-plan.md(경로 참조 정정) 전부 동기화.