Skip to content

실패한 Step의 원인 분류 code를 모델과 사용자에게 전달했다 (ADR-0054) - #101

Merged
SonAIengine merged 1 commit into
mainfrom
feat/typed-step-failures
Oct 25, 2026
Merged

SonAIengine merged 1 commit into
mainfrom
feat/typed-step-failures

Conversation

@SonAIengine

Copy link
Copy Markdown
Contributor

무엇을

  • 닫힌 enum StepFailureCode 12개를 추가했다. 값(경로, 내용)은 담지 않는다.
  • EffectFailed와 StepState에 optional failure_code를 넣었다. 기존 journal과 projection은 byte 단위로 그대로 재생된다.
  • 계획 문맥 Step 요약에 failureCode를 실었다. verifier가 거절한 실패는 verification_failed로 표시한다.
  • filesystem adapter의 열기 실패를 not_found, not_a_directory, refused로 분류했다. symlink 구성요소는 계속 거부로 남긴다.
  • 쓰기 실패로 멈추면 REPL은 A step failed: <code>., 단발 실행은 XGEN_STEP_FAILURE를 출력한다.

왜

실패한 Step이 failed 상태만 남겨서, 모델이 같은 실패 읽기를 반복하거나 턴 예산을 다 썼다.

검증

  • cargo fmt --check, cargo clippy -D warnings, cargo test --workspace --locked
  • 실사용 A/B (deepseek-flash, 사례마다 3회)
사례 main 실패 Step 이 브랜치 실패 Step 결과
113KB 파일 질문 2,2,2 1,1,1 모두 정답
없는 CHANGELOG.md 요약 5,17,3 1,2,1 main은 1회 예산 소진으로 답이 없었다. 이 브랜치는 3회 모두 정답

🤖 Generated with Claude Code

지금까지 실패한 Step은 계획 문맥에 status=failed만 남아서, 모델이 같은 실패 읽기를
2~7번 반복하거나 없는 파일을 계속 찾다가 턴 예산을 다 썼다.

- StepFailureCode 12개(not_found, too_large, not_a_file, precondition_conflict,
  patch_context_missing 등)를 닫힌 enum으로 추가했다. 경로·내용 같은 값은 담지 않는다.
- EffectFailed 이벤트와 StepState에 failure_code를 optional로 넣었다. 기존 journal과
  projection은 byte 단위로 그대로 재생된다.
- 계획 문맥 Step 요약에 failureCode를 실었다. verifier가 거절한 실패는 verification_failed.
- filesystem adapter가 열기 실패를 없음/디렉터리 아님/거부로 나눠 분류한다
  (symlink 구성요소는 계속 거부로 남긴다).
- 쓰기 실패로 요청이 멈추면 REPL은 "A step failed: <code>.", 단발 실행은
  XGEN_STEP_FAILURE run_id=... code=... 를 출력한다.

실사용 A/B (deepseek-flash, 사례마다 3회, main 대비):
- 113KB 파일 질문: 실패 Step 2,2,2 -> 1,1,1, 정답 유지
- 없는 CHANGELOG.md 요약: 실패 Step 5,17,3 -> 1,2,1. main은 1회가 턴 예산을
  다 써서 답을 못 냈고, 새 빌드는 3회 모두 파일이 없다고 바로 답했다.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@SonAIengine
SonAIengine merged commit fc27554 into main Oct 25, 2026
3 checks passed
@SonAIengine
SonAIengine deleted the feat/typed-step-failures branch October 25, 2026 13:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant