6.6 KiB
6.6 KiB
Milestone: [bench-lite-01] 초경량 Agent 모델 비교
위치
- Roadmap: ROADMAP.md
- Phase: PHASE.md
목표
[bench-route-01]에서 호출 가능성이 확인된 동일 9개 조합을 고정된 실제 비교 과제로 한 번씩 실행해 최소 비교 결과를 남긴다.
측정 지원 코드는 만들지 않고, caller 실행과 결과 기록, 고정 기준표에 따른 산출물별 1회 심층 평가만 측정 경계로 둔다.
상태
[진행중]
구현 잠금
- 상태: 해제
- SDD: 불필요
- SDD 문서: 없음
- SDD 사유: 기존 caller와 제품 경로를 단일 시도로 관측하는 test-only 작업이며 제품 API, 상태 머신, retry 또는 schema를 변경하지 않는다.
- 결정 필요: 없음
범위
[bench-route-01]과 동일한 9개 caller/model/route 조합- 모든 조합에 얇은 비교 결과 문서의 같은 고정 비교 prompt와 같은 빈 임시 workspace 사용
- 조합별 정확히 1회 실행
- 성공 여부, 전체 경과 시간, caller가 직접 제공한 usage, 산출물 경로와 짧은 수동 관찰만 기록
- 실행 전에 잠근 공통 100점 기준표로 각 산출물의 source와 동일 viewport render를 한 번만 분석하고, 항목별 증거·감점 사유·총점을 기록
- 실패한 조합은 실패로 기록하고 같은 측정 안에서 retry, resume 또는 대체 run을 하지 않음
기능
Epic: [thin-run] 단일 시도 비교
- [single-attempt-matrix] 9개 조합을 같은 prompt와 초기 상태에서 정확히 한 번씩 실행한다. 검증: 조합별 producer attempt가 하나이며 retry/resume/recovery 기록이 없어야 한다.
- [minimal-result-table] 성공 여부, 경과 시간, caller 제공 usage, 산출물 경로와 짧은 관찰을 단일 Markdown 표로 기록한다. 제공되지 않은 usage는
미제공으로 두고 추정하거나 0으로 바꾸지 않는다. - [single-pass-scorecard] 실행 전에 고정한 공통 100점 기준표로 각 scorable 산출물의 source와 desktop/mobile render를 한 번만 함께 분석해 항목별 점수, 직접 증거, 감점 사유와 산술 총점을 기록한다. 검증: 평가 pass에는 route·model·시간·usage를 제공하지 않고 opaque 평가 ID만 사용하며, 모든 점수는 고정 anchor와 evidence를 가지고 재채점은 산술·전사 오류 수정으로만 제한한다.
- [bounded-conclusion] 성공한 결과만 비교하고 실패·미제공 데이터를 점수 0으로 취급하지 않는 짧은 결론을 남긴다. 자동 채점이나 통계적 일반화는 하지 않는다.
Epic: [thin-rerun] 무경합 재측정과 preset 진단
- [isolated-timing-rerun] 동일 9개 조합을 다른 benchmark·agent 작업이 없고 provider queue/in-flight가 비어 있는 상태에서 완전 순차로 한 번씩 다시 실행한다. 각 행은 외부 기준
request_sent_at,terminal_received_at, monotonic elapsed를 기록하고 caller 내부 duration·TTFT는 별도 보조 지표로 분리한다. 검증: 실행 직전 무경합 snapshot, 단일 producer attempt, 두 외부 시각과 monotonic elapsed가 모든 행에 있어야 하며 조건을 증명하지 못한 행은 속도 비교에서 제외한다. - [preset-stage-diagnosis] 네 preset 행마다 request ID와 Plan/Work/Review/Repair stage의 시작·종료, 실제 선택 model, terminal/error, 최종 workspace와 caller-visible 응답 상태를 기존 Edge/Node 운영 로그에서 추출한다. 검증: generic error나
채점 불가만 남기지 않고 실패 소유 stage와 직접 오류 evidence를 기록하며, evidence가 없으면 관측 결함으로 명시한다. - [corrected-rerun-report] 재측정 결과표에서 운영 성공, 외부 완료 시간, preset 단계 진단과 산출물 품질을 분리하고 새 산출물만 기존 공통 기준표로 opaque 단일 평가한다. 검증: 이전 시간 비교는 무효로 표시하고, 측정 불가·오염된 실행·미제공 값은 0이나 추정값으로 바꾸지 않는다.
완료 리뷰
- 상태: 보완 필요
- 요청일: 2026-08-14
- 완료 근거: 이전 9개 producer 단일 시도와 품질 평가는 실행 완료 로그와 평가 완료 로그에 보존한다. 다만 무경합 상태를 증명하지 않았고 외부 요청·완료 시각이 누락됐으며 preset 실패의 내부 stage evidence가 없어 시간 비교와 완료 판정을 철회한다.
- 검토 항목:
[bench-route-01]이 통과 또는 사용자 승인된 외부 차단 상태다.- 새 benchmark script와 자동화 state가 없다.
- 조합별 정확히 한 번의 실행, 최소 결과 표와 evidence-backed 단일 평가표만 남았다.
- agent-ui 상태 반영: 해당 없음
- Spec sync: 해당 없음 — 제품 코드·계약·런타임 동작을 바꾸지 않은 test-only 비교 evidence이므로 활성 구현 spec 갱신 대상이 아니다.
- 리뷰 코멘트: 이전 품질 점수는 참고 evidence로만 보존한다. OpenCode preset의
0초표기는 잘못된 내부 이벤트 간격이므로 폐기하며, Sonnet/Gemini 시간 비교를 포함한 기존 속도 해석은 무효다. preset의 generic failure와 caller-visible source 누락은 단계별 운영 evidence로 다시 진단한다.
범위 제외
- manifest runner, orchestration framework, lifecycle store
- retry, resume, recovery qualification, stale-run repair
- browser/CDP 자동 검증, screenshot pass/fail gate, accessibility/network 자동 gate
- 별도 judge 모델, 다중 평가자 합의, 자동 순위, 반복·분산·유의성 분석
- 이 측정을 IOP 제품 안정성 또는 다른 Milestone의 완료 조건으로 승격하는 것
작업 컨텍스트
- 선행 작업: 벤치 경로 최소 HTML 스모크 완료
- 실행 방식: 기존 공식 caller 명령을 한 번씩 직접 실행하며 공통 runner를 만들지 않는다.
- 결과 위치: 얇은 비교 결과
- 준비 상태: 교체 가능한 고정 prompt, 9행 결과표, 공통 100점 기준표, 단일 평가 scorecard를 준비했다. 별도 script, judge, manifest, state store는 없다.
- 세션 라우팅: execution preset의 Work 바인딩은 사용자 지시에 따라 live
ornith-fast를 사용하며 tracked 설정은 변경하지 않는다.