tooling: 감사 루프를 병렬 다패스에서 순차 1패스/턴으로 재설계
사용자 지침 — "시간이 걸려도 상관 없으니, 차라리 병렬 에이전트를 덜 써줘. 그냥 한 턴에 하나씩만 사용하고, 0 이 나올때 까지 턴 수를 늘리는게 나아보임. 토큰을 너무 많이 소비해서 다른 작업을 못 하고, 세션 한도에 닿더라고." - quad-doc-auditor는 한 턴에 하나만 호출(병렬 금지) — 2026-08-16의 "최소 2개, 변경이 많으면 3~4개" 지침을 대체. 커버리지는 병렬 폭이 아니라 턴 수로 얻는다. 근거 실측: 전 코퍼스 한 패스가 서브에이전트 토큰 21만/툴 호출 82회, 4개 병렬이면 한 번에 80만대. - 프롬프트로 범위를 diff로 좁힐 것을 신설(바뀐 파일 + 그걸 인용하는 곳). 전 코퍼스 스윕은 오래 안 돌렸을 때만. 라운드마다 각도를 바꿔 병렬로 얻던 폭을 턴으로 대체. - 종료 조건을 "무발견 2연속"에서 "무발견 1회"로 완화(2연속은 병렬 다패스 전제였음). 비용 때문에 중간에 멈출 때도 몇 라운드에서 왜 멈췄는지 반드시 보고. - /code-review는 감사자를 대체하지 않는다를 실측과 함께 명문화 — 이번 핸드오버에서 감사자 1패스(1건) 뒤 /code-review high가 10건을 더 잡았고 전부 유효했다(보는 축이 다름). 사용자만 호출 가능하므로 큰 변경 커밋 전엔 돌릴지 물어볼 것. Co-authored-by: qwreey <me@qwreey.moe>
This commit is contained in:
parent
8b57cfbb3c
commit
d768e4cbc5
4 changed files with 70 additions and 19 deletions
|
|
@ -30,7 +30,7 @@
|
|||
| `luau-test/` | **[2026-08-09 신설]** `base/` 확정 사항 중 "추론만으로 확정하고 실제 Luau로 부딪혀본 적 없는 것"(M0 스파이크 대상)을 `luau`/`luau-analyze`/`luau-lsp`/Roblox Studio로 사용자가 직접 돌려볼 독립 실행 스크립트 모음. **[2026-08-13 여섯 번째 세션, 첫 실측]** `luau`/`luau-analyze` 바이너리가 생겨 처음으로 실제 실행 — **런타임 12개 전원 통과**, 타입 쪽에서 `:Compute(fn)` lazy 핸들 계약이 Luau 추론과 충돌하는 게 드러남(당시 `question.md` 0-Y). **[2026-08-13 열세 번째 세션]** 그 0-Y가 해소되며 `review-required/`가 **비었음** — 계약은 유지 확정, 남은 건 Luau 자체 한계라 `base/typing-limits.md`가 담당. **`STATUS.md`가 상태의 소스**(pass / 사람 결정 필요 / 스파이크 깨짐 / 미실행 분류 — 사람이 먼저 볼 것만 위에), `luau-test/README.md`는 각 파일의 검증 의도·배경, 실행 결과 상세는 `audit/luau-test-first-run-2026-08-13.md` |
|
||||
| `audit/` | **[2026-08-13 신설]** `luau-test/` 등 스파이크를 실제로 돌려본 뒤 "무엇이 확인됐고 무엇이 아직 안 됐는지"를 기록하는 곳 — 스크립트/계획 자체가 아니라 **실측 결과**만 다룸. base/luau-test와 달리 부분 확인(일부만 통과)도 있는 그대로 기록, 완전히 해소되면 관련 `base/`/`luau-test/README.md` 캐비엇을 지우고 이 문서는 근거로 남김. **개수는 폴더가 소스**(여기서 세지 않음): `luau-test-first-run-2026-08-13.md`(첫 실측 라운드 전체 — 런타임 12개 통과, 구 `question.md` 0-Y의 1차 근거. **단 이 문서의 "콜백이 raw 값을 받으면 완전 클린" 판정은 아래 `type-recursion-issue/`가 뒤집었음**), `gcconn-trick-verification.md`(사용자가 Studio에서 직접 돌린 gcconn 트릭 부분 확인 — `10`의 A 섹션 앞부분만. **[2026-08-14 다섯 번째 세션, 열한 번째 세션에 `canBound` 재도입 반영해 재갱신]** 실측된 사실 자체는 그대로 유효하고 `value` 단독 1-인자 재정정으로 오히려 더 중요해졌음 — 이중 바인딩 게이트(`canBound`)/emit 게이팅(`canExecute`)/재바인딩 허용/`value` 쪽 복사 gcconn 판정/Instance userdata 동일성/B/C가 미확인), **`type-recursion-issue/`**(**[2026-08-13 열세 번째 세션 신설]** 0-Y 재실측 전체 — `REPORT.md` + `spikes/`(개수는 폴더가 소스). 다른 audit 기록과 달리 **스크립트를 같이 둠**: 이 건의 근거가 "여러 formulation을 서로 대조한 것"이라 개별 파일을 직접 돌려야 판정이 재현되기 때문. 결론은 `base/typing-limits.md`로 승격됨), `fallback-xpcall-verification.md`(**[2026-08-14 신설]** `base/fallback-plan.md`의 `Traceback` 메커니즘 전부 확인 — 클로저 업밸류 배선/중첩 스택 캡처/`err: any`/`error(msg)` 위치 접두 10개 검증 전부 통과. 스크립트 1개뿐이라 재현용으로 같이 둠: `fallback-xpcall-spike.luau`), **`type-recursive-issue-with-typeof/`**(**[2026-08-15 신설]** 사용자가 발견한 `typeof(named fn)` 간접참조가 0-Y(재귀 제네릭 반환 leak)를 실제로 우회하는지 실측 — `REPORT.md` + `spikes/`. 결론: 인라인 대신 이름 붙은 함수 + `typeof`로 선언하면 LHS 명시 없이도 다운스트림이 안전해짐(체이닝 50단·타입 변경·중첩 self 호출까지 확인), `typing-limits.md` §1 ③으로 승격. 부수적으로 `setmetatable` 확장 시도에서 quad와 무관한 Luau 0.733 솔버 버그(모순 진단 두 개 동시 발생) 발견, 채택 안 함. `luau-test/16`(type function으로 `Store<T>` 레코드 필드 합성) 복구도 이 조사 중 완료 — API 버전 드리프트였을 뿐 설계 문제 아니었음, `typing-limits.md` §5 승격), **`type-recursive-issue-try-callback/`**(**[2026-08-15 신설]** 콜백 파라미터 무주석 추론을 뚫을 방법이 정말 없는지 type function/메타테이블/오버로드/제네릭 디폴트 등 전방위로 재시도 — `REPORT.md` + `spikes/`(개수는 폴더가 소스 — 최초 라운드 + `/code-review high`가 이중 꺾쇠 명시적 제네릭 인스턴스화를 안 시도했음을 지적해 추가된 후속 조사 라운드로 구성). 결론: quad의 `state:Compute(fn)` 단일 호출 모양을 유지한 채로는 여전히 안 됨. 발견 셋 — (1) 근본 원인이 재귀 자기참조가 아니라 "제네릭 콜백 인자 전반에 컨텍스트 타입 전파가 안 됨"이라는 게 더 정확함(재귀 없는 최소 사례로도 재현), (2) `T`를 명시 중간 변수로 먼저 고정하거나 재사용 가능한 monomorphize 헬퍼를 거치면 실제로 추론이 살아나지만 둘 다 단일 콜론 호출을 2단계 체인으로 바꿔야만 해서 §0 대전제로 채택 안 함, (3) 이중 꺾쇠 명시 인스턴스화(`Compute<<T,U>>(fn)`)는 leaf 호출에선 sound하게 성립하지만(spurious 진단 원인도 규명 — read-only/read-write 가변성 불일치) 매 호출 T/U 전부 명시 필요 + 중첩 self 호출 여전히 실패라 순손해로 채택 안 함) |
|
||||
| `tools/` | **[2026-08-13 신설, `session/2026-08-13-09-structure-and-guardrails.md`]** 코퍼스 기계 점검 — `doc-check.py`가 깨진 파일/절 참조, README 색인 누락, 날짜 없는 시한부 주장("아직 안 돌려봄" 등), 미반영 ⚠️ 배너를 한 번에 훑음. **[2026-08-16]** 절 참조는 WARN이 아니라 **ERROR** — 판정 규칙은 `conventions.md`의 "절 인용 규약"이 소스. **중대 변경 후 커밋 전에 돌릴 것**(`python3 .claude/tools/doc-check.py`) — 수동 감사에서 나온 발견의 대부분이 이 종류였고, 실제로 문서를 쪼개다 잘못 옮긴 참조를 이게 잡아냄. ERROR는 고치고 WARN은 판단 대상 |
|
||||
| `agents/` | **[2026-08-16 신설]** 프로젝트 서브에이전트 정의(`.claude/agents/*.md`, Claude Code 표준 위치). 현재 `quad-doc-auditor.md` 하나 — `doc-check.py`가 못 잡는 의미론적 stale/모순(본문 문장이 뒤집힌 결정을 여전히 서술, 개수/목록 이중 소스 드리프트 등)을 신선한 맥락에서 찾는 읽기 전용 감사자. 중대 변경 커밋 전에 위임하는 게 기본 — **여러 개를 병렬로 돌리고 수정은 메인 세션이 일괄로 하는 루프**(패스 수는 여기 안 적음 — 소스는 conventions.md)이며 절차는 `.claude/conventions.md` "작업 방식" 절이 소스(**[2026-08-16]** 이 루프를 담던 `workflows/quad-handover-audit.js`는 토큰 과다·픽스 에이전트발 부정확 서술·사용자 질의 불가 때문에 폐기됨). `tools/`의 기계 점검과 짝을 이루는 의미론적 점검 계층 |
|
||||
| `agents/` | **[2026-08-16 신설]** 프로젝트 서브에이전트 정의(`.claude/agents/*.md`, Claude Code 표준 위치). 현재 `quad-doc-auditor.md` 하나 — `doc-check.py`가 못 잡는 의미론적 stale/모순(본문 문장이 뒤집힌 결정을 여전히 서술, 개수/목록 이중 소스 드리프트 등)을 신선한 맥락에서 찾는 읽기 전용 감사자. 중대 변경 커밋 전에 위임하는 게 기본 — **[2026-08-18 재설계] 한 턴에 하나씩만 돌리고(병렬 금지) 발견이 0건인 라운드가 나올 때까지 턴을 늘리는 루프**, 수정은 메인 세션이 일괄로 함(라운드 수·범위 좁히기 규칙은 여기 안 적음 — 소스는 conventions.md)이며 절차는 `.claude/conventions.md` "작업 방식" 절이 소스(**[2026-08-16]** 이 루프를 담던 `workflows/quad-handover-audit.js`는 토큰 과다·픽스 에이전트발 부정확 서술·사용자 질의 불가 때문에 폐기됨). `tools/`의 기계 점검과 짝을 이루는 의미론적 점검 계층 |
|
||||
| `agent-memory/` | **[2026-08-16 신설]** 서브에이전트가 라운드를 넘겨 유지하는 영속 메모리(`agent-memory/<에이전트 이름>/MEMORY.md`가 색인). 지금은 `quad-doc-auditor/` 하나 — 코퍼스 구조, 반복되는 실패 패턴 등을 기억해 감사 라운드마다 처음부터 파악하지 않게 함. **사람이 손으로 채우는 문서가 아니라 에이전트가 스스로 쓰는 것**이지만, `.gitignore` 대상이 아니라 커밋하면 코퍼스 일부가 되고 `doc-check.py` 검사 대상에도 들어감(감사 대상이기도 하다는 뜻 — 여기 적힌 주장도 stale해질 수 있음). **[2026-08-16 확정] 커밋해서 추적함**(사용자 결정). 사용자 논거: "실 기록이고 디펜던시도 아니고, 어차피 `SAFETY.md`에 따라 구현 시점에는 컨테이너에서 개발되며 다른 프라이빗 git에 올라가고 검토 후 머징되는거라, 문제되는 메모리 있으면(환경 노출 등) 사람이 감사처리 마지막으로 함. 결국 프로젝트 사이드 기록이고 같이 올려지는게 맞는게, 개발 환경이 다수라서 필요해보임" — 즉 **개발 환경이 여러 개라 메모리가 따라다녀야 하고**, 노출 위험은 머지 전 사람 검토가 최종 방어선. 커밋하는 쪽이 정해졌으니 여기 내용도 감사 대상이다(에이전트가 자기 메모리에 stale한 결론을 남기는 일이 실제로 있었음 — 2026-08-16에 폐기된 워크플로를 살아있는 것처럼 서술한 2건이 감사로 잡힘) |
|
||||
| `session/` | **[2026-08-11 신설]** 세션별 상세 로그 원문(시행착오·정정 전 서술 포함, `quadnomicon` 개발로그 소재용) — 루트 `CLAUDE.md`가 3196줄까지 불어나 성능 저하를 유발해서 분리함. 파일명 `YYYY-MM-DD-NN-slug.md`, `.claude/session-summary.md`의 각 항목이 여기로 링크. 항상 읽을 필요 없음 — 결정의 논의 과정이 궁금할 때만 |
|
||||
| `initreq/` | 프로젝트 착수 시 클론해둔 참고 레포(quad v1, fusion, vide, rbvm, tbox, code-docker) + PA님 실 코드(`artworks/`, 4차 라운드 교차검증 근거) + 원본 요청(`req.md`, `raw-userinput.md`) + `quad2-try`(이전에 시도했다 폐기한 v2 재작성 시도 — 리서치 완료, 결론은 `base/bind-system-plan.md`) — 읽기 전용 리서치 소스, 여기 내용을 옮기지 말고 항상 원본 그대로 유지 |
|
||||
|
|
|
|||
|
|
@ -189,9 +189,10 @@ haiku, 일반 작업은 sonnet. 특히 소스코드를 많이 읽어야 하는
|
|||
짜는 대신 고정 정의로 옮긴 것. **아주 큰 변경**(설계 반전 규모)엔 이걸로
|
||||
대체하지 말고 `/code-review`(diff 기반)와 사용자의 직접 diff 검토를
|
||||
병행할 것 — 이 서브에이전트는 diff가 아니라 코퍼스 전체의 정합성만 봄.
|
||||
- **⭐ [2026-08-16 재설계] "핸드오버 준비하고 커밋해" 류 요청엔 되묻지 말고
|
||||
아래 감사 루프를 돌릴 것.** 단일 `quad-doc-auditor` 패스는 비결정적이라
|
||||
매번 다 잡는다는 보장이 없다는 게 사용자 지적 — 그래서 병렬 다회로 돌린다.
|
||||
- **⭐ [2026-08-16 신설, 2026-08-18 재설계] "핸드오버 준비하고 커밋해" 류
|
||||
요청엔 되묻지 말고 아래 감사 루프를 돌릴 것.** 단일 `quad-doc-auditor`
|
||||
패스는 비결정적이라 매번 다 잡는다는 보장이 없다 — 그래서 **여러 번**
|
||||
돌린다. 다만 **여러 개를 동시에 띄우지는 않는다**(아래 1번).
|
||||
**처음엔 이걸 Workflow(`quad-handover-audit.js`)로 만들어 픽스까지
|
||||
서브에이전트에 맡겼으나, 첫 실동에서 에이전트 67개·4.6M 토큰을 쓰고도
|
||||
수렴하지 못해 2026-08-16에 폐기**(원문은 `archive/`가 아니라 git 히스토리와
|
||||
|
|
@ -199,34 +200,61 @@ haiku, 일반 작업은 sonnet. 특히 소스코드를 많이 읽어야 하는
|
|||
갈림, (2) 파일별로 픽스 에이전트를 쪼개니 **그 에이전트들이 또 부정확한
|
||||
서술을 새로 만들어냄**, (3) 서브에이전트는 사용자에게 물을 수가 없어서
|
||||
판단이 필요한 항목이 그냥 임의 처리됨. 지금 절차:
|
||||
1. **`quad-doc-auditor`를 한 메시지에서 병렬 호출**(Agent 도구 직접 호출
|
||||
— Workflow 안 씀). **최소 2개, 변경 사항이 많으면 그만큼 늘릴 것** —
|
||||
사용자 지침(2026-08-16): "최소 2에, 변경 사항이 많아진다면 batch 수가
|
||||
늘어나는게 맞다고 봄". 감사자는 sonnet이라 패스당 비용이 낮고 역할이
|
||||
"빠르게 전체를 훑는 것"이라, 커버리지를 넓히는 쪽이 이득인 구조다
|
||||
(사실 검증은 상위 모델인 메인이 한다). 기준은 라이브 문서 몇 개가
|
||||
바뀌었나 — 두어 개 고친 정도면 2개, 설계 반전이나 문서 분할처럼
|
||||
코퍼스 전반을 건드린 변경이면 3~4개.
|
||||
1. **⭐ `quad-doc-auditor`는 한 턴에 하나만 호출한다 — 병렬 금지**
|
||||
(Agent 도구 직접 호출, Workflow 안 씀). **사용자 지침(2026-08-18):
|
||||
"시간이 걸려도 상관 없으니, 차라리 병렬 에이전트를 덜 써줘. 그냥 한
|
||||
턴에 하나씩만 사용하고, 0 이 나올때 까지 턴 수를 늘리는게 나아보임.
|
||||
토큰을 너무 많이 소비해서 다른 작업을 못 하고, 세션 한도에 닿더라고."**
|
||||
이건 2026-08-16의 "최소 2개 병렬, 변경이 많으면 3~4개로 늘림" 지침을
|
||||
**대체한다** — 커버리지를 병렬 폭이 아니라 **턴 수**로 얻는다.
|
||||
근거가 된 실측(2026-08-18): 전 코퍼스 감사 **한 패스가 서브에이전트
|
||||
토큰 21만 / 툴 호출 82회**였고, 계획대로 4개를 병렬로 돌렸으면 한
|
||||
번에 80만 토큰대였다 — 세션 한도를 그 자리에서 태워 정작 본 작업을
|
||||
못 하게 된다.
|
||||
**감사자 모델은 `sonnet` 유지 — haiku로 더 낮추지 말 것**(사용자
|
||||
판단, 2026-08-16). 실제로 이 감사가 잡아온 것들(재역전된 배너, 자기
|
||||
메모리의 stale 서술)은 문맥 추론이 꽤 들어간 발견이었다.
|
||||
2. **두 리포트를 메인 세션이 합쳐서 검토하고, 수정도 메인이 일괄로 한다.**
|
||||
2. **⭐ [2026-08-18 신설] 프롬프트로 감사 범위를 좁힐 것 — 기본은 diff
|
||||
범위다.** 감사자 정의 자체는 "코퍼스 전체를 신선한 맥락에서 다시
|
||||
읽는다"인데(라이브 문서 90개 이상, `base/`만 1만 줄 이상), 대부분의
|
||||
핸드오버에서 실제로 위험한 건 **이번에 바뀐 파일과 그걸 인용하는
|
||||
곳**이다. 그래서 프롬프트에 (a) 바뀐 파일 목록, (b) 이번에 뒤집힌
|
||||
결정 목록, (c) "그 파일들을 인용하는 곳까지만 확장해서 보라"를 명시할
|
||||
것. 전 코퍼스 스윕은 **오래 안 돌렸을 때 한 번씩**만.
|
||||
라운드마다 각도를 바꾸면(예: 1라운드는 `base/` 정합성, 2라운드는
|
||||
인덱스 레이어(README/ROADMAP/question/todos), 3라운드는
|
||||
archive/luau-test/audit) 병렬로 폭을 넓히던 효과를 턴으로 얻을 수 있다.
|
||||
3. **리포트는 메인 세션이 검토하고, 수정도 메인이 한다.**
|
||||
픽스를 서브에이전트에 위임하지 말 것(위 (2)번 이유). 감사자는 읽기
|
||||
전용이고 발견만 리포트한다.
|
||||
3. **애매하면 임의로 정하지 말고 그 자리에서 사용자에게 보고할 것.**
|
||||
4. **애매하면 임의로 정하지 말고 그 자리에서 사용자에게 보고할 것.**
|
||||
메인 세션은 사용자에게 물을 수 있다는 게 서브에이전트 대비 유일한
|
||||
강점이니 그걸 쓸 것(어떤 발견이 여기 해당하는지 판정 기준은
|
||||
`.claude/agents/quad-doc-auditor.md`의 "출력 형식" 절이 소스 — 여기서
|
||||
다시 나열하지 않음).
|
||||
4. **새 발견이 없는 라운드가 연속 2번 나올 때까지 1~2를 반복**(보통
|
||||
2~3라운드). **수렴 안 하면 조용히 멈추지 말고 사용자에게 보고할 것** —
|
||||
5. **새 발견이 0건인 라운드가 나올 때까지 1~3을 반복**(사용자 지침
|
||||
2026-08-18의 "0 이 나올때 까지 턴 수를 늘리는게"). 옛 규칙이던 "무발견
|
||||
**2연속**"은 병렬 다패스를 전제한 것이라 같이 완화됐다 — 대신 라운드마다
|
||||
각도를 바꾸는 것(위 2번)이 그 역할을 대신한다.
|
||||
**수렴 안 하면 조용히 멈추지 말고 사용자에게 보고할 것** —
|
||||
첫 실동이 실제로 6라운드를 소진하고도 수렴 못 했고(새 발견
|
||||
28→15→16→7→11→6, 단조 감소가 아니었음), 그때 조용히 끊으면
|
||||
"감사 통과"로 오독된다.
|
||||
5. `python3 .claude/tools/doc-check.py`로 ERROR 0을 최종 확인한 뒤 평소
|
||||
"감사 통과"로 오독된다. 비용 때문에 중간에 멈출 때도 마찬가지로
|
||||
"몇 라운드에서 왜 멈췄는지"를 반드시 보고할 것.
|
||||
6. `python3 .claude/tools/doc-check.py`로 ERROR 0을 최종 확인한 뒤 평소
|
||||
커밋 절차(git status/diff 검토, 메시지 작성)로 넘어갈 것.
|
||||
**`git commit`은 항상 메인 세션이 직접 함** — 커밋 전 diff 재검토는
|
||||
대화형 맥락이 필요해서 위임하지 않는다.
|
||||
- **⭐ [2026-08-18 실측] `/code-review`는 감사자를 대체하지 않는다 — 큰
|
||||
변경에는 둘 다 필요하다.** 2026-08-18 핸드오버에서 감사자 1패스가 1건을
|
||||
잡은 뒤 사용자가 `/code-review high`를 직접 돌리자 **10건이 더 나왔고
|
||||
전부 유효**했다. 둘이 보는 축이 다르기 때문 — 감사자는 **코퍼스 전체의
|
||||
의미론적 정합성**(A 문서의 결정과 B 문서의 서술이 어긋나는가), code-review는
|
||||
**diff 자체의 결함**(이번에 새로 쓴 서술 안의 모순, 새 API가 기존 계약과
|
||||
충돌하는가). 실제로 그 10건엔 "새로 확정한 `store:GetDynamic`이 Store의
|
||||
lazy `__index`와 충돌해 그대로 구현하면 런타임 에러"처럼 감사자 각도에선
|
||||
안 보이는 것이 있었다. **`/code-review`는 사용자만 호출할 수 있으므로**,
|
||||
큰 변경을 커밋하기 전엔 그걸 돌릴지 사용자에게 물어볼 것.
|
||||
- **문서가 쌓이면서 모순/중복/stale 마커가 생기기 쉬움 — 주기적으로 감사할
|
||||
것.** 다만 위 체크리스트+`doc-check.py`+`quad-doc-auditor`가 자리잡으면
|
||||
이 감사는 "기계도 서브에이전트도 못 보는 것"(설계 자체의 자기모순, 의사코드
|
||||
|
|
|
|||
|
|
@ -1482,4 +1482,6 @@ blob과 바이트 단위로 동일, 메인이 `git rev-parse`로 독립 확인).
|
|||
Store의 lazy `__index`와 충돌 / `PopOnly` 홀드 중 키가 사라지면 파괴도 반환도
|
||||
안 됨)이 있어 새 열린 질문으로 올렸다. **감사 비용 메모**: 감사자 한 패스가
|
||||
서브에이전트 토큰 21만이라(코퍼스 전체를 다시 읽는 정의라서) 계획했던 4패스를
|
||||
중단했음 — 다음엔 diff가 건드린 파일로 범위를 좁혀 프롬프트할 것.
|
||||
중단했음. **그래서 사용자 지침으로 감사 절차 자체를 바꿨다** — 병렬 금지(한
|
||||
턴에 하나), 범위는 diff로 좁히고 라운드마다 각도를 바꿈, 종료 조건은 무발견
|
||||
1회(옛 "2연속"은 병렬 전제라 완화). `conventions.md`의 감사 루프 절이 소스.
|
||||
|
|
|
|||
|
|
@ -148,6 +148,27 @@ diff 자체의 결함):
|
|||
전 "대기 중/잠정 표기" 잔여, `documentation-content-map.md`가 `D` 스윕에서
|
||||
누락.
|
||||
|
||||
## 절차 변경 — 감사 루프를 병렬에서 순차로 (사용자 지침)
|
||||
|
||||
이번 라운드의 토큰 소비를 보고 사용자가 감사 절차 자체를 바꿨다:
|
||||
|
||||
> "시간이 걸려도 상관 없으니, 차라리 병렬 에이전트를 덜 써줘. 그냥 한 턴에
|
||||
> 하나씩만 사용하고, 0 이 나올때 까지 턴 수를 늘리는게 나아보임. 토큰을
|
||||
> 너무 많이 소비해서 다른 작업을 못 하고, 세션 한도에 닿더라고."
|
||||
|
||||
`conventions.md`의 감사 루프 절을 그에 맞게 재작성했다 — (1) **병렬 금지,
|
||||
한 턴에 하나**(2026-08-16의 "최소 2개 병렬" 지침을 대체), (2) **프롬프트로
|
||||
범위를 diff로 좁힐 것**(전 코퍼스 스윕은 오래 안 돌렸을 때만), 라운드마다
|
||||
각도를 바꿔 병렬로 얻던 폭을 턴으로 얻는다, (3) 종료 조건은 **무발견 1회**
|
||||
(옛 "무발견 2연속"은 병렬 다패스 전제라 같이 완화), (4) 비용 때문에 중간에
|
||||
멈출 때도 "몇 라운드에서 왜 멈췄는지" 반드시 보고.
|
||||
|
||||
같이 명문화한 것: **`/code-review`는 감사자를 대체하지 않는다** — 이번에
|
||||
감사자 1패스(1건) 뒤 `/code-review high`가 10건을 더 잡았고 전부 유효했다.
|
||||
보는 축이 달라서다(감사자=코퍼스 전체 정합성, code-review=diff 자체의 결함).
|
||||
`/code-review`는 사용자만 호출할 수 있으므로, 큰 변경 커밋 전엔 돌릴지
|
||||
물어보는 것을 관례로 넣었다.
|
||||
|
||||
## 도구/절차 메모
|
||||
|
||||
- `doc-check.py`: 처음 돌렸을 때 ERROR 6건 — 전부 **내가 절 제목을 바꾸는
|
||||
|
|
|
|||
Loading…
Reference in a new issue