ES /docs

BaseService::handlingMessageErrors | Error and message object - {"error":{"statusCode":403,"requestU

Summary: BaseService::handlingMessageErrors — 403 ENT4000 on trashed capture

결과#

RCA 결론이 "즉시 조치: 없음. 코드 변경 불필요" (self-healing, 사용자 영향 없음) 이므로 자동 code-fix pipeline 은 no-op 로 종결. Jira / worktree / PR 생성 없음. RCA 가 제시한 "단기 개선" 항목은 별도 트랙으로 이관.

Pull Requests#

Repo PR Branch
해당 없음

변경 내용#

없음. 이 사건 (capture 736992 trash 이동 후 stale SQS 메시지 소비) 은 SQS 4xx-삭제 정책에 의해 자체 회복됨 — occurrence_count=1, ApproximateReceiveCount=1.

Hand-off (별도 트랙, 자동 반영 제외)#

RCA 의 "단기 개선 (1주 이내)" 항목. 담당 팀 (sprouts / agents) 이 별도 티켓으로 추적 권장:

  1. si-lite-agent trashed capture skip

    • 파일: applications/agents/packages/cupix-si-lite-agent/src/silite-service.ts L84-112 (run)
    • 내용: 최초 updateSiLiteState(Processing) 이전에 fetchAndValidateCapture 로 capture 를 fetch, 403 + body.code === 'ENT4000' 케이스를 warn 레벨로 skip. 유사 mesh-agent 패턴 (episode d208f6f7, TSLA-13xxx) 의 whitelist 확장 참고.
  2. BaseService::handlingMessageErrors 로그 레벨 다운그레이드

    • 파일: applications/agents/packages/base/src/base-service.ts L290-313
    • 내용: bodyResult.code === 'ENT4000' (또는 4xx-이면서 삭제 대상) 만 warn 레벨로 좁혀 다운그레이드. 모든 4xx 를 warn 으로 낮추지 말 것 (memory rule: "warn 다운그레이드는 특정 예외 클래스/코드로 좁힐 것").
  3. Tesla API ENT4000 semantics 정리 (조율 필요)

    • 파일: app/repositories/base_repository.rb L352-353, config/error_code/entity.yml L49-50
    • 내용: reason 필드를 "#{class} is trashed" 로 수정하거나 별도 HTTP status (예: 410 Gone) 로 응답. 프런트엔드/agent 팀 조율 필요 — 자동 fix 대상 제외 (memory rule: "프런트엔드 협의 항목은 자동 반영 제외").

판단 근거 요약#

  • RCA 위험도: low, 복잡도: trivial, occurrence_count: 1
  • 사용자 노출 영향: 없음 (이미 trash 로 이동된 capture)
  • Self-healing: SQS 메시지가 getApiErrorToDeleteMessage 로 자동 삭제됨
  • Memory rule: RCA 가 "코드 변경 불필요" 명시 → no-op PR 대신 skipped hand-off

Cleanup#

bash
# 생성된 worktree 없음. 별도 cleanup 불필요.