proto-socket/agent-ops/rules/project/domain/protocol/rules.md

1.7 KiB

protocol

목적 / 책임

와이어 포맷 명세와 proto 정의를 관리한다. PacketBase 프레이밍, 타입 라우팅, 요청-응답 상관관계, 하트비트의 공식 계약을 정의한다.

포함 경로

  • proto/ — 언어 옵션 없는 proto 정식 원본
  • dart/lib/src/packets/ — Dart protobuf 생성 코드
  • go/packets/ — Go용 proto 복사본 (go_package 옵션만 추가)
  • kotlin/src/**/packets/ — Kotlin용 proto 복사본 (Java 패키지 옵션만 추가)
  • PROTOCOL.md — 공식 와이어 포맷 명세
  • VERSIONING.md — 프로토콜/패키지 버전 정책

제외 경로

  • dart/lib/src/ (packets/ 외) — Dart 구현체 로직 (dart 도메인)
  • go/*.go (packets/ 외) — Go 구현체 로직 (go 도메인)

주요 구성 요소

  • proto/message_common.proto — PacketBase, 메시지 타입 정식 원본
  • PacketBase — 모든 패킷의 공통 래퍼 (type_name, payload, correlation_id)

유지할 패턴

  • proto 원본은 proto/message_common.proto에서만 편집
  • Go/Kotlin proto는 언어별 옵션만 추가. 메시지 스키마는 건드리지 않는다
  • 변경 후 반드시 tools/generate_proto.sh + tools/check_proto_sync.sh 실행

다른 도메인과의 경계

  • dart/go/kotlin: 구현체가 proto 타입을 사용하지만, 타입 정의 자체는 protocol 도메인
  • tools: proto 생성/검증 스크립트는 tools 도메인. proto 파일 자체는 protocol 도메인

금지 사항

  • proto 파일을 Go/Kotlin 복사본에서 직접 편집하지 않는다 (메시지 스키마 변경은 proto/message_common.proto에서만)
  • PROTOCOL.md에 정의되지 않은 프레이밍 방식을 구현체에서 임의로 추가하지 않는다