# Swift Apple 플랫폼 포트

## 목표

프로토콜 `0.1` 계약과 Apple-native 런타임 방향을 유지하면서 iOS 및 macOS용 Swift 구현을 추가한다.

## 단계

남은 native platform 포팅

## 상태

[보류]

## 범위

- 핵심 transport 추상화, communicator, nonce 처리, 요청-응답 상관관계, 하트비트, close-once 동작을 구현한다.
- 실용적인 곳에서는 Swift concurrency, actor, `URLSessionWebSocketTask`, Apple platform API를 사용한다.
- 구현체를 Available로 표시하기 전에 동일 언어 테스트와 크로스 언어 테스트를 추가한다.
- protobuf 외 런타임 의존성이 있다면 native API가 충분하지 않은 이유를 문서화한다.

## 필수 기능

- [ ] 지원할 Swift 및 Apple platform target을 선택한다.
- [ ] Canonical schema에서 Swift protobuf binding을 생성한다.
- [ ] Transport와 communicator core를 구현한다.
- [ ] TCP/TLS 지원을 구현한다.
- [ ] WebSocket/WSS 지원을 구현한다.
- [ ] 동일 언어 테스트를 추가한다.
- [ ] 크로스 언어 테스트 runner를 추가한다.
- [ ] 테스트 통과 후에만 상위 구현 상태를 갱신한다.

## 완료 기준

- [ ] Swift peer가 문서화된 프로토콜을 통해 최소 하나의 사용 가능 구현체와 상호 운용된다.
- [ ] Swift 구현체는 `PORTING_GUIDE.md`를 따르며 platform UI/threading concern을 프로토콜 core 밖에 둔다.
- [ ] 런타임 의존성 선택은 문서화되어 있고 protocol-relevant하다.

## 범위 제외

- 앱 전용 auth, session, chat, game, Apple UI abstraction을 추가하지 않는다.
- Swift 전용 API에 맞추기 위해 프로토콜을 변경하지 않는다.
- 동일 언어 및 크로스 언어 검사를 통과하지 않은 상태에서 Swift를 Available로 표시하지 않는다.

## 작업 컨텍스트

- 관련 경로: `PORTING_GUIDE.md`, `PROTOCOL.md`, `VERSIONING.md`
- 선행 작업: 안정화 기준선 완료 또는 실제 iOS/macOS 소비 수요 확인
- 보류 사유: 실제 iOS/macOS 소비 수요 또는 명시적 재개 요청이 생길 때까지 구현하지 않는다.
- 재개 조건: 소비 수요가 확인되면 target Swift/Apple platform version, SDD 필요 여부, 동일 언어 테스트, 크로스 언어 테스트, 전체 검증 매트릭스 통과 조건을 먼저 확정한다.
- 후속 작업: 릴리즈 준비
- 참고 구현: 공유 상태와 cancellation 동작이 프로토콜 core에 맞는 곳에서는 actor isolation과 Swift concurrency를 우선한다.
- 확인 필요: 지원할 Swift 및 Apple platform target
