docs: 감사 4라운드 반영 + const는 HUMAN_TODO로 이관(사용자 결정)
사용자 결정 — const 바인딩 재검토는 에이전트가 정할 문제가 아님. 논거:
pesde의 타입 추출(d.ts처럼 types emit)류 툴링이 미성숙해 const를 제공 못
하고 언제 가능해지는지도 불명확하며, 이는 사용자가 확인된 정보로 제공하는
게 맞다는 것. question.md에서 닫고 archive로 옮긴 뒤 HUMAN_TODO.md 8번
신설 — 사용자가 시점을 파악하거나 가능해질 때 에이전트에 알림. 그때까지
에이전트는 "일단 local로" 원칙 유지. architecture.md에 날짜와 논거 반영.
감사 4라운드(설계 코퍼스 각도):
- todos.md의 개수 하드코딩 2건 제거("체크리스트 8개", "11개 전원 완료")
— 이 프로젝트 자신의 "개수는 소스 하나만" 규칙 위반이던 기존 항목
- 코퍼스 확실 발견 0건(설계 문서 쪽은 깨끗)
주입 경로 실측 둘:
- 에이전트 정의는 이번엔 HEAD보다 1커밋 전 — 뒤처지는 폭이 실행마다 다름을
관측표에 4번째 행으로 추가
- CLAUDE.md @import 컨텍스트는 세션 시작 시점에 고정됨(감사자가 받은 것이
세션 시작 커밋과 일치, 그 사이 7커밋). 메인 세션도 동일해 옛 conventions.md
를 들고 있었음. 동작이 명확한 별개 경로라 conventions.md에 규칙으로 명시 —
@import 파일을 고친 세션은 기억이 아니라 파일을 직접 Read해서 따를 것
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
ebb1fd0f5a
commit
01c4abf727
8 changed files with 141 additions and 6 deletions
|
|
@ -29,8 +29,15 @@ model: sonnet
|
|||
> | 감사 1라운드 | 그 시점 HEAD 커밋(`1343796`)과 바이트 단위 동일 |
|
||||
> | 감사 2라운드 | **어느 커밋과도 불일치** — 배너는 구버전인데 "출력 형식"의 `사용자 판단` 문단은 신버전인 하이브리드 |
|
||||
> | 감사 3라운드 | 디스크 현재 내용과 바이트 동일(감사자 2개가 마커 문구로 각각 확인) |
|
||||
> | 감사 4라운드 | HEAD보다 **정확히 1커밋 전** 상태(하이브리드는 아니었음) |
|
||||
>
|
||||
> **일관되게 낡은 것도 아니다** — 3라운드는 현재 내용을 그대로 받았다.
|
||||
> **일관되게 낡은 것도 아니다** — 3라운드는 현재 내용을, 4라운드는 1커밋 전을
|
||||
> 받았다. 뒤처지는 폭이 실행마다 다르다.
|
||||
>
|
||||
> **별개 경로 주의**: `CLAUDE.md` `@import`로 들어오는 컨텍스트
|
||||
> (`conventions.md`/`project-context.md`/`todos.md`)는 이것과 다른 주입
|
||||
> 경로이고, **세션 시작 시점에 고정**된다(4라운드 실측: 세션 시작 커밋과
|
||||
> 정확히 일치, 그 사이 7커밋). 그쪽은 불확실한 게 아니라 그냥 그렇게 동작한다.
|
||||
>
|
||||
> 2라운드가 받은 텍스트는 메인 세션이 이 파일을 **여러 번에 나눠 편집하던
|
||||
> 중간의 워킹트리 상태**와 일치했고, 그 상태는 커밋된 적이 없다(`git log -S`로
|
||||
|
|
|
|||
|
|
@ -767,3 +767,23 @@ context-rejected.md`. 아래는 그중 **아직 실제로 열려있는 것만**
|
|||
사용자가 구두로 세운 것인데 문서화가 누락됐다는 판단. 이 추정에서
|
||||
**"사용자 발언을 인용할 때는 논거까지 남긴다"는 새 관례**가 같이 나왔음
|
||||
(`conventions.md` "작업 방식" 절).
|
||||
|
||||
|
||||
## `const` 바인딩 미채택 판단의 재검토 트리거 (2026-08-16 신설 → 같은 날 해소)
|
||||
|
||||
**결론: 에이전트가 정할 문제가 아님 — 사용자가 확인된 정보로 제공하고,
|
||||
추적은 `HUMAN_TODO.md` 8번이 소스.**
|
||||
|
||||
감사가 `base/architecture.md`의 `const` 미채택 사유에 날짜가 없다고 지적해
|
||||
"(a) 날짜만 / (b) 구체적 트리거 명시" 중 고르는 질문으로 올렸으나, 사용자가
|
||||
**전제 자체를 정정**했다.
|
||||
|
||||
**사용자 논거 원문**: "const 건은 생각보다 더 컴플랙스함. 예를 들어 pesde 의
|
||||
타입추출화 해서 d.ts 같이 types emit 하는 류가 있음. 아직 툴링이 미성숙한
|
||||
상태라 const 를 제공 못하는 상황이고, 언제 다시 사용가능해지는지 명확치가
|
||||
않음. 따라서 이는 사용자가 확인된 정보로 제공하는게 맞다고 보고 있음."
|
||||
|
||||
즉 (b)의 "구체적 트리거"를 에이전트가 적어둘 수 없는 종류의 문제다 —
|
||||
툴링 체인(pesde types emit 등)의 지원 시점은 외부 사정이고 관측 수단이
|
||||
에이전트에 없다. 그래서 질문을 닫고 `HUMAN_TODO.md` 8번(사용자가 시점을
|
||||
파악하거나, 가능해질 때 에이전트에 알림)으로 옮겼다.
|
||||
|
|
|
|||
|
|
@ -264,9 +264,16 @@ falsy(`nil`/`false`)여도 정확하게 동작함(`dispatch-core-plan.md`의
|
|||
금지 대상은 어디까지나 `A and B or C` 3항 조합.
|
||||
|
||||
**`const` 바인딩도 Luau 공식 문법**(<https://luau.org/syntax/#const-bindings>)
|
||||
이지만 **지금은 채택하지 않음** — 타입 추출/narrowing 등 주변 툴링이
|
||||
아직 `const`를 폭넓게 지원하지 못해서, 지금 전면 도입하면 나중에 그
|
||||
간극을 메꾸는 비용이 더 클 수 있음. **원칙**: 새로 짜는 코드는 일단
|
||||
이지만 **[2026-08-12 기준] 지금은 채택하지 않음** — 그 시점에 타입
|
||||
추출/narrowing 등 주변 툴링이 `const`를 폭넓게 지원하지 못해서, 전면
|
||||
도입하면 나중에 그 간극을 메꾸는 비용이 더 클 수 있다는 판단.
|
||||
**툴링 성숙도에 매인 판단이라 시간이 지나면 거짓이 될 수 있는데, 그
|
||||
시점은 에이전트가 확인할 수 없음** — 사용자 설명(2026-08-16): pesde의 타입
|
||||
추출처럼 `d.ts` 식으로 types를 emit하는 툴링이 아직 미성숙해 `const`를
|
||||
제공하지 못하고, **언제 다시 가능해지는지도 명확하지 않다**. 그래서 이건
|
||||
사용자가 확인된 정보로 알려주기로 정해졌고, 추적은 루트 `HUMAN_TODO.md`
|
||||
8번이 소스다. **알려주기 전까지 에이전트는 스스로 판단하지 말 것** —
|
||||
위 "일단 `local`로" 원칙을 그대로 따른다. **원칙**: 새로 짜는 코드는 일단
|
||||
`local`로 — 나중 리팩터 시점에 특정 바인딩을 `const`로 바꾸는 비용이
|
||||
싸 보이면 그때 바꿔도 되고, 비싸 보이면 굳이 지금 손대지 않아도 됨.
|
||||
지금 `const`가 없다고 "이 프로젝트가 구식 Luau를 쓴다"고 오해하지
|
||||
|
|
|
|||
|
|
@ -73,6 +73,13 @@ haiku, 일반 작업은 sonnet. 특히 소스코드를 많이 읽어야 하는
|
|||
의심할 수 있지만, 없으면 영원히 현재형으로 읽힘.
|
||||
6. **인덱스 레이어 3개를 같이 갱신**: `.claude/README.md`(색인),
|
||||
`question.md`(사용자가 답할 것만), 루트 `ROADMAP.md`/`HUMAN_TODO.md`.
|
||||
- **⭐ [2026-08-16 실측] `@import`로 로드되는 파일(이 문서/`project-context.md`/
|
||||
`todos.md`)을 그 세션에 고쳐도 **그 세션의 컨텍스트엔 반영되지 않는다.**
|
||||
세션 시작 시점 버전이 그대로 남는다 — 4라운드 감사가 받은 임포트 블록이
|
||||
세션 시작 커밋과 정확히 일치했고(그 사이 7커밋), 메인 세션 자신의
|
||||
컨텍스트도 마찬가지였다. **그래서 이 문서를 고친 세션은 자기가 방금 쓴
|
||||
규칙을 컨텍스트에서 못 본다** — 고친 뒤에는 기억에 의존하지 말고 파일을
|
||||
직접 `Read`해서 따를 것. 다음 세션부터는 정상적으로 새 버전이 로드된다.
|
||||
- **기계 점검 — `python3 .claude/tools/doc-check.py`.** 깨진 파일/절
|
||||
참조, README 색인 누락, 날짜 없는 시한부 주장, 미반영 배너를 한 번에
|
||||
훑음. **커밋 전에 돌리는 게 기본** — 수동 감사에서 나온 발견의 대부분이
|
||||
|
|
|
|||
|
|
@ -1377,3 +1377,19 @@ blob과 바이트 단위로 동일, 메인이 `git rev-parse`로 독립 확인).
|
|||
`message.usage.iterations[]`의 opus 항목에 낚임, (2) 화면 최상단 세션 헤더,
|
||||
(3) 폐기된 워크플로의 픽스 에이전트 49개는 실제로 opus였던 것. 신뢰할
|
||||
소스는 트랜스크립트 최상위 `message.model` 하나.
|
||||
|
||||
**[같은 세션, 감사 3·4라운드]** 3라운드는 `agent-memory/`가 재재정정을 안
|
||||
따라온 걸 두 감사자가 독립으로 잡음(정정 커밋이 그 폴더를 안 건드림 —
|
||||
"변경한 세션은 자기가 뭘 안 건드렸는지 모른다"의 교과서적 사례, 게다가 같은
|
||||
파일이 한 세션에 두 번 연속 stale). 고치면서 그 메모리가 결론을 복제하지
|
||||
않고 정의 배너를 **가리키기만** 하도록 바꿔 근본 원인을 제거. 4라운드는
|
||||
코퍼스 확실 발견 0건이고 대신 (1) `todos.md`의 개수 하드코딩 2건(이 세션과
|
||||
무관한 기존 항목), (2) `base/architecture.md`의 `const` 미채택 사유에 날짜
|
||||
없음을 잡음. 4라운드 부수 실측 둘 — 에이전트 정의는 이번엔 HEAD보다 1커밋
|
||||
전이었고(뒤처지는 폭이 실행마다 다름), **`CLAUDE.md` `@import` 컨텍스트는
|
||||
세션 시작 시점에 고정**됨을 확인(메인 세션도 옛 `conventions.md`/`todos.md`를
|
||||
들고 있었음). 후자는 동작이 명확해서 `conventions.md`에 규칙으로 명시 —
|
||||
**`@import` 파일을 고친 세션은 파일을 직접 `Read`해서 따를 것.**
|
||||
`const` 건은 사용자가 전제를 정정 — pesde의 types emit 같은 툴링 체인 지원
|
||||
시점은 에이전트가 관측할 수 없으므로 `HUMAN_TODO.md` 8번(사용자가 파악하거나
|
||||
가능해질 때 알림)으로 이관.
|
||||
|
|
|
|||
|
|
@ -399,3 +399,61 @@ Claude Code 세션 헤더**다:
|
|||
부수적으로 둘 다 자기 모델을 "You are powered by the model named Sonnet 5.
|
||||
The exact model ID is claude-sonnet-5."로 보고 — §13/§14의 트랜스크립트
|
||||
실측과 일치.
|
||||
|
||||
|
||||
## 16. 감사 4라운드 — 코퍼스는 깨끗, 대신 주입 경로 실측이 나옴
|
||||
|
||||
한 패스는 툴링, 다른 패스는 **설계 코퍼스**(`base/`/`research/`/`ROADMAP.md`)를
|
||||
맡겼다. 이 세션이 툴링만 만졌으니 설계 쪽은 오래 안 훑인 영역이었다.
|
||||
|
||||
**설계 코퍼스 각도(B)** — 이 세션과 무관한 기존 항목 2건:
|
||||
- `todos.md`가 "Handler 작성 체크리스트 **8개**", "우선순위1 **11개** 전원
|
||||
완료"로 개수를 두 번째 장소에 하드코딩. 이 프로젝트 자신의 "개수는 소스
|
||||
하나만" 규칙 위반이라 개수를 빼고 소스를 가리키게 함.
|
||||
- `base/architecture.md`의 `const` 미채택 사유에 날짜 없음 —
|
||||
`doc-check.py`의 TEMPORAL 정규식이 못 잡는 자연어 변형("지금은 ~ 못해서").
|
||||
감사 절차 7번이 노리는 유형이 실제로 걸린 사례. → 아래 §17.
|
||||
|
||||
감사가 확인만 하고 넘어간 것도 값졌다: `doc-check.py`의
|
||||
`dispatch-core-plan.md` 인용 WARN 클러스터 11곳을 직접 파본 결과 **전부 본문에
|
||||
굵은 글씨 인라인으로 실존**했다(헤딩이 아니라 스크립트가 못 찾을 뿐).
|
||||
그 문서가 최근 분리된 파일이라 "분리 후 인용자 안 따라옴" 패턴이 의심됐던
|
||||
자리인데 콘텐츠 유실이 없음이 확인됐다.
|
||||
|
||||
**툴링 각도(A)** — 코퍼스 확실 발견 0건. 대신 주입 경로 관측 둘:
|
||||
- 이번 라운드가 받은 **에이전트 정의**는 HEAD보다 정확히 1커밋 전이었다
|
||||
(2라운드 같은 하이브리드는 아니었음). 관측표 4번째 행.
|
||||
- **`CLAUDE.md` `@import` 컨텍스트는 세션 시작 시점에 고정된다** —
|
||||
감사자가 받은 `conventions.md`/`todos.md`/`project-context.md`가 세션 시작
|
||||
커밋(`8aeec76`)과 정확히 일치했고 그 사이 7커밋이 있었다. 감사자가
|
||||
"메인 세션 컨텍스트도 그런지 확인해달라"고 요청해 메인이 자기 컨텍스트를
|
||||
직접 확인 — **그렇다.** 이 세션의 메인은 삭제된 워크플로를 "먼저 돌릴 것"
|
||||
이라 지시하는 옛 `conventions.md`와, 항목 6에서 끝나는 옛 `todos.md`를
|
||||
컨텍스트에 들고 작업해왔다(실제로는 파일을 직접 읽고 고치며 새 절차를
|
||||
따랐으므로 행동에는 영향이 없었다).
|
||||
|
||||
이건 에이전트 정의 쪽의 "모르는 현상"과 달리 **경로가 다르고 동작이
|
||||
명확한 것**이라 `conventions.md`에 규칙으로 적었다: **`@import` 파일을
|
||||
고친 세션은 자기가 방금 쓴 규칙을 컨텍스트에서 못 보므로, 기억에
|
||||
의존하지 말고 파일을 직접 `Read`해서 따를 것.**
|
||||
|
||||
## 17. [사용자 결정] `const` 미채택 재검토 — 에이전트가 정할 문제가 아니었음
|
||||
|
||||
감사가 "날짜만 붙일지, 구체적 트리거를 명시할지"를 사용자 판단으로 올렸는데,
|
||||
사용자가 **전제 자체를 정정**했다.
|
||||
|
||||
**사용자 논거 원문**:
|
||||
|
||||
> "const 건은 생각보다 더 컴플랙스함. 예를 들어 pesde 의 타입추출화 해서
|
||||
> d.ts 같이 types emit 하는 류가 있음. 아직 툴링이 미성숙한 상태라 const 를
|
||||
> 제공 못하는 상황이고, 언제 다시 사용가능해지는지 명확치가 않음. 따라서
|
||||
> 이는 사용자가 확인된 정보로 제공하는게 맞다고 보고 있음. 필요한 경우
|
||||
> Human todo 에 해당 부분의 사용 가능해지는 시점을 파악하거나, 사용
|
||||
> 가능해질 때 에이전트에 알려야할 필요를 명시해둬"
|
||||
|
||||
즉 "구체적 트리거"를 에이전트가 적어둘 수 없는 종류다 — pesde의 types emit
|
||||
같은 툴링 체인의 지원 시점은 외부 사정이고 에이전트에 관측 수단이 없다.
|
||||
그래서 `question.md`에서 닫고(→ `archive/question-resolved.md`)
|
||||
**`HUMAN_TODO.md` 8번**으로 옮겼다: 사용자가 시점을 파악하거나, 사용
|
||||
가능해질 때 에이전트에 알린다. **알려주기 전까지 에이전트는 스스로 판단하지
|
||||
않고 "일단 `local`로" 원칙을 유지한다.**
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@
|
|||
아니라 **하강 diff**임, `retractFrom`은 3-인자, 클로저 인자는
|
||||
`nil`이거나 같은 핸들러가 처리할 값(타입 보장), `HANDLER_PRIORITY_FALLBACK`,
|
||||
"base가 소유하는 핸들러와 주입되는 엔진 op"(`addTag`/`removeTag`/
|
||||
`setAttribute`). **Handler 작성 체크리스트 8개**를 새 핸들러 짜기 전에
|
||||
`setAttribute`). **Handler 작성 체크리스트**(개수는 그 문서가 소스)를 새 핸들러 짜기 전에
|
||||
훑을 것 — 지난 세션들에서 실제로 반복된 실수 목록임.
|
||||
|
||||
해소 전 원문은 `archive/question-resolved.md`(0-Y/0-Z/0-A 절), 뒤집힌 옛
|
||||
|
|
@ -42,7 +42,7 @@
|
|||
1. **구현 시작 — 루트 `ROADMAP.md`의 M0부터.** 설계 단계는 2026-08-04 로드맵
|
||||
인수인계 라운드로 종료. `research/pre-implementation-audit.md` 우선순위1은
|
||||
2026-08-12 열일곱 번째 세션에 마지막 넷(1-3/1-4/1-10/1-11)까지 전부
|
||||
해소되어 **11개 전원 완료**. **[14차 세션 기준] 0-Y/0-Z/0-A까지 전부
|
||||
해소되어 **전원 완료**(항목 수는 그 문서가 소스). **[14차 세션 기준] 0-Y/0-Z/0-A까지 전부
|
||||
해소돼 설계 게이트는 남아있지 않음** — 착수 전 읽을 것은 위 0번의 두
|
||||
문서(`typing-limits.md`/`dispatch-core-plan.md`)뿐이고, 스파이크 상태는
|
||||
아래 그대로:
|
||||
|
|
|
|||
|
|
@ -103,6 +103,26 @@ B(Attribute의 Instance 참조 타입)/C(CollectionService 태그 왕복) —
|
|||
`.claude/luau-test/not-run/gc-trigger-helper.server.luau` 참고. 위
|
||||
1번(MCP 연결)이 되면 에이전트가 대신 돌릴 수도 있음.
|
||||
|
||||
## 8. **[2026-08-16 신설, 안 막음]** `const` 바인딩 — 툴링이 언제 지원하는지 사용자만 알 수 있음
|
||||
|
||||
`base/architecture.md`의 "코드 스타일" 절이 `const` 바인딩을 **[2026-08-12
|
||||
기준] 채택 안 함**으로 두고 있음. 사유가 "주변 툴링 미성숙"인데, **이건
|
||||
에이전트가 확인할 수 없는 정보**라 사용자가 알려주는 게 맞다고 사용자
|
||||
본인이 정리함(2026-08-16).
|
||||
|
||||
**사용자가 설명한 구체적 사정**: 예를 들어 **pesde**의 타입 추출 —
|
||||
`d.ts`처럼 types를 emit하는 류의 툴링이 있는데, 아직 미성숙해서 `const`를
|
||||
제공하지 못하는 상황. **언제 다시 사용 가능해지는지가 명확하지 않음.**
|
||||
|
||||
**사람이 할 일 — 둘 중 하나**:
|
||||
1. `const`를 쓸 수 있게 되는 시점을 파악해 알려주거나,
|
||||
2. 사용 가능해지는 순간 에이전트에 알려줄 것.
|
||||
|
||||
둘 중 어느 쪽이든 **에이전트는 스스로 판단하지 않고 대기**한다 — 알려주기
|
||||
전까지는 `architecture.md`의 "새로 짜는 코드는 일단 `local`로" 원칙을 그대로
|
||||
따름. 알려주면 그때 `architecture.md`의 해당 절을 갱신하고 기존 코드의
|
||||
`const` 전환 범위를 같이 상의할 것.
|
||||
|
||||
## 6. **[2026-08-13 신설, 안 막음]** 에디터의 Luau 솔버 설정 확인
|
||||
|
||||
`luau-analyze` CLI는 **새 솔버가 기본값**이지만 에디터가 쓰는
|
||||
|
|
|
|||
Loading…
Reference in a new issue