ariadne/agent-ops/rules/project/domain/integrations/rules.md
2026-07-24 05:45:04 +09:00

3.2 KiB

domain last_rule_review_commit last_rule_updated_at
integrations unborn-head 2026-07-23

integrations

목적 / 책임

Ariadne가 소유하는 외부 오류 입력과 IOP 실행 경계를 버전 계약으로 정의하고, 외부 실행 계층이 도메인·권한 경계를 침범하지 못하도록 요청과 이벤트를 검증한다.

포함 경로

  • internal/integration/iop/ — LLM·CLI 작업의 실행, 이벤트 스트림, 취소를 위한 Ariadne 소유 인터페이스다.
  • contracts/error-event/ — 외부 시스템이 전송하는 오류 이벤트 JSON Schema다.
  • contracts/execution-failure/ — 처리 실패 원인 스택의 JSON Schema다.
  • contracts/iop-execution/ — IOP 실행 요청과 상태 이벤트의 버전별 JSON Schema다.

제외 경로

  • internal/domain/ — 오류와 수정 작업의 내부 의미와 불변 규칙은 domain-model 책임이다.
  • internal/platform/httpserver/ — Ariadne HTTP 프로세스의 수명주기와 라우팅은 platform 책임이다.
  • internal/platform/database/ — 계약 데이터의 영속화와 조직 격리는 platform 책임이다.

주요 구성 요소

  • iop.Executor — 실행 시작, 조직 범위 이벤트 조회, 취소를 추상화한 Ariadne 소유 포트다.
  • iop.Request — 오류, 저장소, 읽기 전용 실행 환경, 실행 정책과 deadline을 묶는 요청이다.
  • iop.Event — 순서 번호와 단일 타입별 payload를 갖는 실행 이벤트다.
  • contracts/*/v1/*.json — 외부 wire format의 v1 기준 문서다.

유지할 패턴

  • 계약은 버전 디렉터리와 schema_version을 함께 사용하고 기존 버전을 제자리에서 깨지 않는다.
  • Request.Validate에서 조직·프로젝트·입력 출처 범위가 오류 이벤트 범위와 일치하는지 확인한다.
  • 분석 요청은 읽기 전용 저장소 접근만, 변경 요청은 격리된 작업 가지 접근만 허용한다.
  • 실행 환경은 항상 읽기 전용이고 AllowMerge는 항상 거부한다.
  • 변경 요청은 승인 또는 정책이 허용한 ProposalDigest를 요구하고 분석 요청에는 digest를 넣지 않는다.
  • 이벤트 타입별 payload는 정확히 하나만 허용하며 실패 payload는 domain-model의 표준 실패 검증을 통과해야 한다.

다른 도메인과의 경계

  • domain-model: 내부 의미와 닫힌 값 집합을 재사용하되 IOP 네이티브 형식을 도메인 타입으로 만들지 않는다.
  • platform: HTTP·설정·데이터베이스 어댑터가 이 포트를 조립하며 integrations는 원시 연결 풀을 소유하지 않는다.
  • client: 화면에 필요한 상태는 Ariadne API를 통해 제공하고 클라이언트가 IOP에 직접 연결하지 않는다.

금지 사항

  • 조직 식별자, 비밀값, endpoint를 입력 본문이나 LLM payload의 임의 값으로 신뢰하지 않는다.
  • IOP에 운영 환경 쓰기 권한이나 직접 병합 권한을 표현하거나 전달하지 않는다.
  • 분석 요청에 격리 가지 쓰기 권한을 주거나 변경 요청을 기본 가지에서 실행하지 않는다.
  • 계약 변경과 Go 경계 타입 변경을 서로 검증하지 않은 채 따로 반영하지 않는다.