Files
dap-was-dapms/docs/decisions/ADR-0004-execution-guardrails.md
koseokmin 58d3014a0f
All checks were successful
Deploy Gateway / deploy (push) Successful in 2m52s
저장소 문서를 다시 추적하고 계약 예제를 복원한다
계약 테스트는 docs/contracts 아래 예제를 golden example로 읽는다.
docs/와 README.md가 ignore되어 있어 예제 파일이 사라졌고 9건이
실패하고 있었다. 문서가 온전했던 마지막 상태(3de052a)에서 복원하고
.gitignore에서 두 항목을 제거한다. 에이전트 산출물인
docs/superpowers/ 제외는 유지한다.

initialize 응답의 capabilities.tools.listChanged를 문서는 true로
적고 있었으나 InitializeHandler는 false를 낸다. 현재 HTTP 단발 응답
transport가 notification을 push할 수 없으므로 false가 맞다. 예제와
architecture.md를 코드에 맞추고, ToolListChangedEvent가 발행되지만
아직 소비되지 않는다는 점과 SSE 도입 시 true로 바꾼다는 조건을
남긴다.

169개 테스트 전부 통과.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 17:16:13 +09:00

31 lines
1.4 KiB
Markdown

# ADR-0004 실행 가드레일
- 상태: Accepted
- 결정일: 2026-07-10
- 관련 논의: [DISC-20260710-001](../discussions/DISC-20260710-001-agentbuilder-mcp-interface.md)
## 결정
- Agent Builder-MCP 상호작용에는 300초 hard limit을 둔다.
- MCP Server는 3만 자 기준으로 Tool Service의 원문 응답을 임의 절단하지 않는다.
- write/update 성격의 Tool은 idempotency가 보장되지 않으면 자동 retry하지 않는다.
## 해석 경계
- 300초는 전체 상한 원칙이며 모든 계층의 socket read timeout을 무조건 300초로 설정한다는 의미가 아니다.
- 원문 미절단은 response body를 무제한 허용한다는 의미가 아니다.
- read Tool이 항상 retry 가능하다는 결정은 아니다.
## 구현 보류 조건
다음 세부 계약이 확정되기 전에는 timeout 또는 retry 코드를 변경하지 않는다.
- ~~Agent Builder, ingress, MCP, Tool Service별 timeout budget~~ →
**확정 (2026-08-01).** Agent Builder 300초(호출 시점 기준) > MCP 270초 > Tool 30초.
배분과 근거는 [architecture.md의 요청 시간 예산](../architecture.md#요청-시간-예산)이 정본이다.
- client disconnect와 downstream cancellation 전파
- response body 최대 크기와 pagination/continuation 정책
- Tool별 idempotency/retryable metadata와 오류 코드
현재 구현에는 3만 자 절단 및 자동 retry가 없으므로 두 원칙에 대한 즉시 코드 변경은 없다.