- test/mock.luau: Destroy = Destroying → Parent nil → 자손 재귀 → 연결 해제, 두 번째는 no-op; claim이 Destroy된 inst면 새 gcconn 즉시 Disconnect. spec.lifetime 6b/6c 추가. - test/spec.init.luau: Quad 탑레벨 값 확인을 typechecked 계층으로(smoke.init 5절 제거). - ROADMAP M7 체크박스·tween-plan: isTween/TweenBrand는 Brand.luau. - conventions: 규약 요약의 단위 나열 제거(소스는 brief §1). 코드 주석 절 인용을 제목 앞부분으로. - round11.md: H-168(Ref() 무인자 vs Ref<T>(T)) / H-169(재진입 :Set 옛 value) / H-170(resume이 에러 삼킴)을 §4 배치 문항으로(권고 전부 (a)), §5에 단위 끝 절차 기록. 세션 원문·요약 갱신. Co-authored-by: qwreey <me@qwreey.moe>
3.6 KiB
3.6 KiB
2026-08-28 (03) — M2 착수: 자율 구현 규약 채택 + 첫 단위(공통 기반) 구현
경위
- 다른 에이전트가 초안한 "M2 자율 구현 규약" 프롬프트를 사용자가 가져와 "어떻게
봐? 진행 하면 될것같아?" — 대조 결과 순서 오류 하나(
EpochMap이Effect뒤;ROADMAP.md"반응형 본체"는EpochMap이 State 본체보다 먼저라 못 박음)와 소스 단일화 몇 건(규약 위치는base/가 아니라conventions.md한 줄 + brief 파일 /Void체크박스 부재 /HUMAN_TODO.md2번 / 커밋 게이트 두 층 /TODO(H-nnn)마커 형식 / 단위를 넷으로)을 지적. 사용자: "수정하고 너가 진행하자. epochmap 순서 하나 고치고 진행할 수 있겠니?" → 규약 커밋f94234a. - 첫 단위 계획(§6)의 배치 결정 셋(브랜드 인스턴스를
Brand.luau한 파일에 / mock 생명주기를mock.luau안에 / 테스트spec.*+ analyze)을 보여주고 사용자 "진행하면 될것 같아" →92721d7.
구현 (전부 ./scripts/test.sh ALL PASS, luau-analyze 0건)
Void.luau/Brand.luau(생성자 + 인스턴스 15 +is*11) /LifetimeHandle.luau(InitLifetimeHandle— 모듈 인스턴스에 에러 스텁 4종) /Ref.luau최소형 /init.luau재export /quad-types의Quad·Ref<T>·Relate·Epoch타입 /Relate.luau는 타입만quad-types에서 재export(구현 무변경, 대조 일치).test/mock.luau:installLifetime(quad)(lifecycle-pattern.md(0)/(1) 스케치 그대로) +Destroy가 모든 Connection을 끊도록 보강(gcconn 판정의 근거).scripts/test.sh:spec.*수집 +luau-analyze quad-base/src + spec + mock.- spec 5개(brand/relate/lifetime/ref/void).
발견 (qa-request/pre-implementation-handtrace-round11.md)
H-165① pesde shim은 생성 시점 export 타입만 안다 →pesde install재실행,project-setup-plan.md에 둘째 함정으로 기록.H-166①Ref.Revision초기값 미정 →0,ref-plan.md.- 툴링 사실:
@self는init.luau전용 / GC 테스트 함정 둘(죽은 레지스터, 불변 업밸류 클로저 캐시) — §5. - ②/③ 갈래 발견 없음 — §4 표는 비어 있다.
단위 끝 절차 (같은 날, 뒤이어)
- 감사 루프 8라운드 수렴(3→4→1→2→4→4→1→0). 잡힌 것:
todos.md5번 stale /smoke.init갱신 누락 /quad-types-plan.mdQuad블록 stale → 코드 포인터 / mock docstring 자기모순 /architecture.md소스 트리(Brand.luau누락·LifetimeHandle"내부는 Relate"·Tween.luau) /H-167Ref<T>(T?)로 옮겨 놓은 자기 실수 → 문서대로Ref<T>(T)/TweenBrand위치 /ROADMAP"Brand.luau트리에 없음" /lifecycle-pattern.md의 옛 "base가 Relate로 구현" 서술·원 확정 문단·순환 절 인용 /ref-plan.md같은-파일 절 인용 둘 / 개수 리터럴 /conventions.md단위 나열. 내 수정이 새 결함을 만든 것 둘(순환 절 인용, 단위 나열 5세그먼트) — 코퍼스의 기록된 실패 모드 그대로. /code-review high10건 → ②H-168(Ref()무인자 vsRef<T>(T)) /H-169(재진입:Set의 옛value) /H-170(resume이 에러를 삼킴)은 §4 표로, ①H-171(mock lazy claim GC 타이밍) /H-172(mockDestroy의미론) /H-173(M7TweenBrand잔재) 반영, 잔손질 셋 반영, 기각 셋.
다음
fable 탐사자(규약 §5) → 사용자에게 "round11.md §4를 보라". §4엔 문항 셋, 권고 전부 (a).