Repository navigation
Closiro v2.42.0
·
1 commit
to main
since this release
Closiro v2.42.0
보이는 테스트만 통과한 수정안을 "검증 완료"로 닫던 문제를 고치고, 사건당 비용을 1/3로 줄였습니다. r1hard 8과제(숨은 수락 테스트가 운영 조건을 검사하는 과제) 라이브 측정, claude-sonnet-5-5:
| 빌드 | 통과 | 거짓 검증 | 사건당 비용 | 사건당 시간 |
|---|---|---|---|---|
| v2.41.0 (기준선, 10-18) | 2/8 | 5/8 | — | — |
| 조건 게이트 (10-20) | 11/12 | 1/12 | $2.47 | 22분 |
| 비용 모드 (10-21) | 8/8 | 0/8 | $1.81 | 6.5분 |
| 이 릴리스 (10-21) | 7/8 | 1/8 | $0.81 | 5.0분 |
마지막 거짓 검증 1건은 아래 "관측은 결함과 지켜야 할 동작으로 나뉩니다"로 막았고, 그 변경은 아직 라이브로 재지 않았습니다. 측정 기록: experiments/r1hard-live/2026-10-18/feasibility.md.
원인별 조건 검증
- 원인이 필요로 하는 조건을 전부 만드는 명령은 그 원인의 시험입니다. 노드가 워커 여러 개, Stop 없는 재시작, 시계 어긋남 같은 조건을 만드는 테스트를 돌리면 호스트가 판정합니다. 예전에는 증상 기준·개입 실험·텍스트 검색만 판정 대상이어서 "연결되지 않음"으로 거부했습니다. 만든 조건은 출력에 적힌 문구(created_shown_by)로 확인합니다.
- 열린 원인마다 재현 테스트가 있어야 수정으로 넘어갑니다. 수정 근거가 생겨도, 다른 열린 원인에
repro --cause테스트가 없으면 호스트가 "cover" 작업 트리에서 에이전트를 돌려 원인별 테스트를 쓰고 등록하게 합니다. 기준 코드에서 실패하는 테스트는 모든 수정안이 통과해야 하고, 모두 통과한 테스트는 "이 조건에서는 나타나지 않았습니다(배제 아님)"로 남습니다. 여러 테스트를repro --many <spec.json>으로 한 번에 등록할 수 있습니다. - 증상을 줄인 개입 실험은 그 원인이 관여했다는 증거입니다. 실험 명세에
creates가 비어 있어도 29/29 → 0/29 같은 감소는 판정합니다. 기준 코드에서 실패하는 원인별 재현 테스트도 수정 근거가 됩니다. - 사람이 본 것마다 실패하는 테스트가 있어야 수정으로 넘어갑니다. 조사 시작 때 에이전트가 증상에서 관측 항목을 기록하고(
closiro debug observables <id> "<본 것>" …), 재현 테스트를 등록할 때 단언하는 항목을 적습니다(repro … --observes O1,O2). 단언한다고 적은 관측은 기준 코드 실패 출력에 그 id가 있어야 인정됩니다. - 관측은 결함과 지켜야 할 동작으로 나뉩니다. 기본은 결함이고, 지켜야 할 동작은 기록할 때
--holds "<동작>"으로 적습니다. 결함 관측은 기준 코드에서 실패하는 등록 테스트만 덮고, 통과하는 테스트는 기록만 됩니다. 한 원인을 고친 뒤 "리포트가 에러 없이 성공한다"는 불평을 통과 테스트로 "결함 아님" 처리해 숨은 조건(중간에 끊긴 다운로드)이 그대로 남았던 구멍을 막습니다. closiro debug check <id>: 증상 기준과 등록된 모든 테스트를 한 번에 돌려 ✓/✗로 보여 줍니다. 수정 실행은 테스트를 하나씩 돌리는 대신 이것을 씁니다.- 상태 화면과 결과에 원인별 재현 테스트, 관측 항목, 그 판정이 표시됩니다.
출발점 보고서
- 조사와 수정 실행의 프롬프트에 호스트가 만든
<locate>절이 들어갑니다: 첫 실패 출력의 스택 프레임, 증상의 조건 단어(워커·재시작·시계·타임아웃·캐시·배치 …), 최근 커밋, 읽은 파일에서 점수를 매긴 출발 위치 목록입니다. 모델 호출은 없고closiro debug locate <id> [--json]으로 볼 수 있습니다. 켬/끔 비교에서 요청 −28%, 시간 −29%, 거짓 검증 0이었습니다.CLOSIRO_LOCATE=0으로 끕니다.
비용 모드와 속도 모드
--mode cost|speed. 빠진 원인·관측 테스트를 cost 모드는 한 실행이 차례로 쓰고(무료·Pro 기본), speed 모드는 노드가 동시에 씁니다(Team·Enterprise 기본). 동시 cover는 사건 시간을 22분에서 9분으로 줄였지만 노드마다 문맥을 다시 읽어 비용이 30% 늘었습니다.- 디버그 실행은 실행 끝의 의미 리뷰(
SNAILER_OUTCOME_REVIEW=0)와 감독 브리프의 LLM 정제(SNAILER_SUP_BRIEF=off)를 끄고 돕니다. 사건의 판정은 호스트가 하므로 두 호출은 비용(합쳐 27%)만 냈습니다. 관측 마스킹은 기본으로 켜지 않습니다: 마스킹 한 번마다 캐시 접두사가 깨져 다음 요청이 문맥 전체를 다시 썼습니다. 사람이 환경 변수를 직접 주면 그 값이 우선합니다. - 디버그 실행의 프롬프트는 한 번만 보냅니다. 이전에는 사건 프롬프트(약 25k자)가 시스템 프롬프트의 task_brief, 사용자 메시지, 그 뒤의 task_brief 블록에 세 번 들어가 첫 요청이 26k 토큰을 캐시에 쓰고 모든 뒤 요청이 그만큼을 읽었습니다. 이제 첫 요청은 약 12k 토큰입니다(측정: 요청당 캐시 읽기 30–40k → 17–24k).
--max-runs기본값이 고정 12회에서 예산 달러당 5회(최소 12)로 바뀌었습니다. 한 사건이 예산을 절반 남긴 채 실행 상한에서 멈춰resume이 필요했습니다.closiro debug view metrics <id>에 요청 수·출력·캐시 쓰기/읽기 토큰·비용·모델/도구 시간이 실행별로 나옵니다.
운영 결함 수정
- 한 원인에 여러 재현 테스트를 유지합니다(두 번째 테스트가 첫 테스트를 밀어내 관측이 테스트를 잃던 문제).
- 원인이 둘 이상 열려 있으면 같은 거부가 반복돼도 조사 파동이 이어집니다.
- 수정안 실패로 조사에 돌아온 사건은 남은 예산을 쓸 수 있습니다(파동 몫에 막히지 않음).
- 오케스트레이터는 열린 원인이 셋 이상일 때만 돕니다.
요금제
- 사건 기본 모델 예산을 $3에서 $5로, 무료 요금제의 사건당 예산을 $1에서 $4로 올렸습니다. 서버가 보내는
debug_case_budget_cents가 있으면 그 값이 우선합니다.