Skip to content

feat(gabiactl): 원격 상태 기반 관찰(Remote-First Reconciliation) 구현 및 False No-op 방지 #80

Description

@move-hoon

📌 배경 및 목적

  • 2026-08-14 아키텍처 리뷰 보고서 P0 항목 해결
  • 현재 internal/gabiactl/reconcile.goPlan 단계에서 로컬 state.json의 ID 존재 여부만으로 Noop 판정을 내려, 콘솔 등에서 리소스가 수동 삭제된 경우 감지하지 못하는 False No-op 결함을 방지합니다.

🛠️ 작업 내용

  • reconcile.goPlan() 단계에서 provider.ObserveRecorded를 호출하여 원격 실제 리소스 존재 여부 확인
  • 원격 리소스 부재 시 FindByIdentity를 거쳐 Create 또는 Adopt 플랜으로 자동 수렴(True Level-triggered Reconciliation)
  • Unknown 상태/모호성 발생 시 Fail-closed 정책 준수
  • internal/gabiactl/gabiactl_test.goreconcile_test.go 단위 테스트 작성

✅ 인수 조건 (DoD)

  • 로컬 state에 ID가 기록되어 있어도, 원격 클라우드에서 리소스 삭제 후 gabiactl apply 실행 시 정상적으로 감지하고 재생성함
  • go test ./internal/gabiactl/... 전체 통과

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions