본문으로 건너뛰기

지식 루프

끝난 작업의 기록이 금요일에 지식베이스로 증류되고, 다음 플랜이 그 기록을 인용하는 한 바퀴.

워크플로우 가이드는 draft PR 에서 끝나요. 이 가이드는 그 뒤를 다뤄요. 끝난 작업의 기록이 어디로 가고, 다음 작업에 어떻게 돌아오는지요.

동작 원리

한 바퀴

끝난 작업은 금요일에 지식이 되고, 다음 플랜이 그 지식을 인용해요작업 하나는 요청에서 시작해 플랜 파일, 슬라이스 루프, draft PR 을 지나고, 실제로 일어난 일을 플랜의 Outcome 에 남겨요. 금요일 레인이 그 기록을 결정 노트와 개념 노트로 증류해 지식베이스에 쌓고, 월요일에는 지난주 신호로 규칙과 게이트 수정을 제안해요. 다음 플랜은 쓰기 전에 지식베이스에서 지난 결정을 찾아 인용해요.요청크기를 정해요플랜 파일지난 결정을 인용슬라이스 루프구현·리뷰·커밋draft PR머지는 사람이Outcome 기록실제로 일어난 일금요일 증류결정 노트로지식베이스개념 노트·개요월요일 되먹임규칙 수정 제안

왼쪽 줄은 작업 하나가 지나는 길이고, 오른쪽 줄은 한 주 단위로 도는 길이에요. 기록을 사람이 따로 정리하지 않아요. 플랜 파일이 작업 중에 쌓이고, 정해진 시각에 레인이 그 파일을 읽어요.

플랜 파일이 원재료예요

플랜은 의도를 적고, Outcome 은 실제로 일어난 일을 적어요플랜 파일의 주요 절은 Spec, Acceptance Contract, Boundaries, Seams, Slice Queue, Verification Commands, Decisions, Outcome 이에요. 앞의 일곱 절은 플랜 단계가 써요. 그중 계약의 판정 칸은 구현이 채우고, 큐의 체크는 리뷰 게이트를 통과할 때 붙어요. Outcome 은 구현, 리뷰, 수정, ship 이 리뷰 판정과 fix 루프 횟수, 커밋을 그대로 적는 칸이에요.Spec무엇을 끝낼지Acceptance Contract판정 칸은 구현이Boundaries할 것과 안 할 것Seams공개 경계Slice Queue체크는 리뷰 통과 때Verification재는 명령Decisions고른 것과 이유Outcome판정·횟수·커밋의도플랜이 써요사실실행이 채워요

플랜은 무엇을 하려는지를 적고, Outcome 은 실제로 일어난 일을 적어요. 리뷰에서 떨어진 횟수, 고친 횟수, 들어간 커밋이 Outcome 에 남아요. 월요일 compound 는 fix 루프가 두 번 이상 돈 기록을 피할 수 있었던 실수의 신호로 읽어요.

증류는 플랜 말고도 버그 조사 리포트와 세션을 마칠 때 남긴 노트를 같이 모아요.

금요일에 레인이 돌아요

금요일 레인이 한 주의 기록을 정리하고, 월요일 compound 가 그 신호를 읽어요금요일 11시 45분에 레포를 동기화하고, 12시부터 13시까지 캐시와 도구를 정리하고 코드 그래프를 다시 색인해요. 14시에 레포 건강 지표를 모으고, 15시에 주간 회고가 마찰을 적어요. 16시에 플랜 증류, 16시 30분에 세션 기억 증류가 돌아요. 17시에는 짝수 주마다 마찰을 모으고, 18시에는 홀수 주마다 청소해요. 19시 30분에 검색 인덱스를 정리해요. 월요일 11시에는 compound 가 회고, 플랜 증류, 마찰, 청소 레인의 신호를 읽어 규칙과 게이트 수정을 제안하고, 적용은 사람이 승인해요.11:45동기화레포를 최신으로12:00환경 정리캐시·도구·코드 그래프14:00레포 건강지표와 회귀 후보15:00주간 회고마찰을 적어요16:00플랜 증류결정·개념 노트, 개요16:30세션 기억 증류작업 기억 노트17:00마찰 수집짝수 주18:00청소홀수 주19:30검색 인덱스 정리남은 조각을 지워요월 11:00compound수정 제안 · 승인은 사람

레인은 macOS launchd 가 정해진 시각에 돌려요. 제가 기억하지 않아도 돼요.

  • 증류 — 플랜 증류는 기록을 결정 노트로 옮기고, 비슷한 노트가 셋 이상 모이면 그 공통점을 개념 노트로 써요. 레인 끝에서 지식베이스 개요 한 장을 다시 써요.
  • 제안 — compound 와 마찰 리포트는 제안일 뿐이라 검색 대상 밖에서 만들어져요. 기계 검사와 작은 모델의 심사를 둘 다 통과한 것만 검색 대상으로 올라가요. 검증되지 않은 제안이 지식처럼 검색되지 않게 하려는 거예요. compound 가 제안한 규칙 수정을 실제로 적용할지는 제가 정해요.
  • 팀 wiki — 회고 레인이 팀 wiki 로 올릴 만한 문서 후보를 골라 두고, 올릴지는 제가 정해요.

다음 플랜이 인용해요

플랜을 쓰기 전에 같은 주제의 지난 결정을 지식베이스에서 찾아요. 찾은 결정은 다시 정하지 않고 인용하고, 예전에 버린 대안은 다시 제안하지 않아요. 지난 결정은 가설로 다뤄서, 그 결정의 전제가 지금도 맞는지를 구현 체크리스트 첫 줄에서 확인해요.

내 설정

증류된 결정 노트 한 장

aicommit2 에서 커밋 메시지 생성 중 진행률을 보여 주는 작업을 하고, 그 플랜이 금요일에 증류된 노트예요. 원본 플랜 경로와 커밋이 붙어 있어서 노트에서 원재료로 거슬러 갈 수 있어요. 표에서 "기각" 줄이 다음 플랜이 다시 제안하지 않는 대안이에요. 구현 결정은 하나만 남기고 줄였어요.

docs/aicommit2-progress-settled-requests.md
---
kind: doc
type: decision
status: adopted
domain: [aicommit2]
links: ["[[plan-aicommit2]]"]
---

# 진행률 단위 = settled Request — 메시지 축·토큰 축 기각

Issue #258("커밋 생성 중 로딩 슬라이더") 대응. 근본 원인은 피드백 부재가 아니라
**거짓 피드백** — 응답 도착 전에 empty-state 문구 `⚠ No commit messages were
generated`가 렌더되어, 아직 작업 중인데 이미 실패했다고 선언.

## 결정

| 선택지 | 결정 | 근거 |
|---|---|---|
| 진행률 단위 | **settled Request** = (provider, model) 쌍 | 분모 Σ models가 시작 전 확정. 성공·실패 모두 카운트 → 분모 항상 도달 |
| Message 단위 | 기각 | `generate`(1-5/model) 탓에 실패 1건이면 분모 미도달 — `4/6`에서 멈춘 카운터는 #258을 픽스 안에서 재현 |
| 토큰 축 %/슬라이더 | 기각 | 분모가 존재하지 않음 (ADR-0001) |
| dead-air 갭 픽스 | 기각 | 실측 ~50ms — 지각 불가. 초안의 MUST 항목이 측정으로 사망 |
| 카운터 문구 | 단위 명사 생략 `(2/3)` | `generated`/`responded` 둘 다 실패를 세는 순간 거짓말이 됨 |

## 구현 결정

- **finalize 위치 = model 레벨**: provider 레벨 래핑은 `model: [a, b]` provider에서
  1회만 발화 → `1/2` 스톨. 단일 model provider들로는 두 레벨이 일치해 이 결함이
  안 보임 (검증 V5의 존재 이유).

## Outcome

`99c0dcf` (feat: show settled-request progress while generating commit messages).

## Provenance

- `.claude/20260709/PLAN-11-06-20.md` (2026-07-09, #258)
- 관련: aicommit2 repo `docs/adr/0001-progress-over-settled-requests.md`

## Timeline

- 2026-07-12 | 주간 증류.
- 2026-10-24 | 개념 페이지 [[aicommit2-implementation-lessons-2]] 에 묶임 (concept-bulk).

본문은 요점만 남기는 레인 문체라 가이드와 말투가 달라요. Timeline 마지막 줄은 aicommit2 결정 노트가 셋 이상 모여 개념 노트로 묶인 기록이에요.