문서: 로드맵 문서를 한국어로 정리한다

프로젝트의 한국어 응답 기준에 맞춰 로드맵 컨텍스트도 같은 언어로 유지한다.
This commit is contained in:
toki 2026-05-21 18:14:34 +09:00
parent 68ec5e7d67
commit abffc2b2c2
8 changed files with 165 additions and 165 deletions

View file

@ -1,54 +1,54 @@
# Proto Socket Roadmap
# Proto Socket 로드맵
## Overall Goal
## 전체 목표
Proto Socket aims to provide a thin, stable, protocol-first socket communication library that behaves consistently across languages and platforms. The shared contract is Protocol Buffers serialization, TCP/WebSocket binary framing, type-based routing, request-response correlation, and built-in heartbeat.
Proto Socket은 여러 언어와 플랫폼에서 일관되게 동작하는 얇고 안정적인 protocol-first 소켓 통신 라이브러리를 제공하는 것을 목표로 한다. 공유 계약은 Protocol Buffers 직렬화, TCP/WebSocket 바이너리 프레이밍, 타입 기반 라우팅, 요청-응답 상관관계, 내장 하트비트다.
The core should stay small: application semantics such as auth, sessions, chat, game rules, room logic, and agent workflow belong above this protocol layer.
코어는 작게 유지한다. 인증, 세션, 채팅, 게임 규칙, 룸 로직, 에이전트 워크플로 같은 애플리케이션 의미는 이 프로토콜 계층 위에서 다룬다.
## Current Position
## 현재 위치
- Active Phase: Phase 2 - Verification and compatibility
- Active Milestone: M03 Continuous Verification
- Active Phase: Phase 2 - 검증과 호환성
- Active Milestone: M03 지속 검증
- Active Milestone File: agent-ops/roadmap/milestones/M03-continuous-verification.md
## Migration Notes
## 마이그레이션 메모
This roadmap migrates the roadmap-like planning that previously lived in top-level documentation:
이 로드맵은 기존 상위 문서에 흩어져 있던 로드맵성 계획을 분리한 것이다.
- `README.md` implementation status table: summarized in the Milestone Index as available and planned language work.
- `README.md` roadmap direction paragraph: migrated into the dependency and native-platform direction in M02, M04, and M05.
- `README.md` Jenkins planning note: migrated into M03 Continuous Verification.
- `PORTING_GUIDE.md` C# and Swift guidance: linked to planned port milestones M04 and M05.
- `README.md` 구현 상태 표: 사용 가능/계획 언어 작업으로 마일스톤 인덱스에 요약했다.
- `README.md` 로드맵 방향 문단: M02, M04, M05의 의존성 및 native platform 방향으로 옮겼다.
- `README.md` Jenkins 계획 메모: M03 지속 검증으로 옮겼다.
- `PORTING_GUIDE.md` C# 및 Swift 가이드: 계획된 포팅 마일스톤 M04, M05에 연결했다.
## Phase Overview
## Phase 개요
| Phase | Status | Goal |
| Phase | Status | 목표 |
|-------|--------|------|
| Phase 1 - Protocol foundation | Done | Define protocol version `0.1`, wire format, versioning policy, canonical proto source, and reference implementation patterns. |
| Phase 2 - Verification and compatibility | Active | Keep available implementations aligned through same-language tests, cross-language tests, proto sync checks, and continuous verification. |
| Phase 3 - Remaining native platform ports | Planned | Add C# and Swift implementations while preserving the protocol contract and native-first runtime direction. |
| Phase 4 - Release readiness | Planned | Prepare language packages, release documentation, and compatibility statements for external consumption. |
| Phase 1 - 프로토콜 기반 | Done | 프로토콜 버전 `0.1`, 와이어 포맷, 버전 정책, canonical proto 원본, 레퍼런스 구현 패턴을 정의한다. |
| Phase 2 - 검증과 호환성 | Active | 동일 언어 테스트, 크로스 언어 테스트, proto 동기화 검사, 지속 검증으로 사용 가능한 구현체들을 정렬한다. |
| Phase 3 - 남은 native platform 포팅 | Planned | 프로토콜 계약과 native-first 런타임 방향을 유지하면서 C# 및 Swift 구현을 추가한다. |
| Phase 4 - 릴리즈 준비 | Planned | 외부 사용을 위한 언어 패키지, 릴리즈 문서, 호환성 설명을 준비한다. |
## Milestone Index
## 마일스톤 인덱스
| Milestone | Phase | Status | File | Summary |
| Milestone | Phase | Status | File | 요약 |
|-----------|-------|--------|------|---------|
| M01 Protocol Baseline | Phase 1 | Done | agent-ops/roadmap/milestones/M01-protocol-baseline.md | Protocol `0.1`, canonical proto, framing, heartbeat, nonce, and versioning policy are documented. |
| M02 Available Language Parity | Phase 2 | Done | agent-ops/roadmap/milestones/M02-available-language-parity.md | Dart, Go, Kotlin, Python, and TypeScript are listed as available and have same-language and cross-language test entry points. |
| M03 Continuous Verification | Phase 2 | Active | agent-ops/roadmap/milestones/M03-continuous-verification.md | Automate the supported-language and cross-language test matrix, with Jenkins currently named as the expected external runner. |
| M04 C# Unity/.NET Port | Phase 3 | Planned | agent-ops/roadmap/milestones/M04-csharp-port.md | Add a C# implementation for Unity and .NET using native runtime patterns where possible. |
| M05 Swift Apple Platform Port | Phase 3 | Planned | agent-ops/roadmap/milestones/M05-swift-port.md | Add a Swift implementation for iOS and macOS using Swift concurrency and Apple-native transport APIs where possible. |
| M06 Release Readiness | Phase 4 | Planned | agent-ops/roadmap/milestones/M06-release-readiness.md | Prepare package publication, compatibility notes, and release checks per language. |
| M01 프로토콜 기준선 | Phase 1 | Done | agent-ops/roadmap/milestones/M01-protocol-baseline.md | 프로토콜 `0.1`, canonical proto, 프레이밍, 하트비트, nonce, 버전 정책을 문서화했다. |
| M02 사용 가능 언어 parity | Phase 2 | Done | agent-ops/roadmap/milestones/M02-available-language-parity.md | Dart, Go, Kotlin, Python, TypeScript가 사용 가능 상태이며 동일 언어 및 크로스 언어 테스트 진입점이 있다. |
| M03 지속 검증 | Phase 2 | Active | agent-ops/roadmap/milestones/M03-continuous-verification.md | 지원 언어 및 크로스 언어 테스트 매트릭스를 자동화한다. 현재 외부 실행 후보는 Jenkins다. |
| M04 C# Unity/.NET 포트 | Phase 3 | Planned | agent-ops/roadmap/milestones/M04-csharp-port.md | 가능한 곳에서는 native 런타임 패턴을 사용해 Unity와 .NET용 C# 구현을 추가한다. |
| M05 Swift Apple 플랫폼 포트 | Phase 3 | Planned | agent-ops/roadmap/milestones/M05-swift-port.md | 가능한 곳에서는 Swift concurrency와 Apple native transport API를 사용해 iOS/macOS용 Swift 구현을 추가한다. |
| M06 릴리즈 준비 | Phase 4 | Planned | agent-ops/roadmap/milestones/M06-release-readiness.md | 언어별 패키지 배포, 호환성 메모, 릴리즈 검증을 준비한다. |
## Loading Policy
## 로딩 정책
- General implementation work should read `agent-ops/roadmap/current.md` and the Active Milestone file only.
- Read this full `ROADMAP.md` only for roadmap creation, roadmap updates, Phase transitions, Milestone additions, or Milestone restructuring.
- If a requested task conflicts with the Active Milestone Goal or Non-Goals, pause and confirm direction before implementing.
- 일반 구현 작업은 `agent-ops/roadmap/current.md`와 Active Milestone 파일만 읽는다.
- 전체 `ROADMAP.md`는 로드맵 생성/갱신, Phase 전환, Milestone 추가, Milestone 재구성 요청에서만 읽는다.
- 요청된 작업이 Active Milestone의 Goal 또는 Non-Goals와 충돌하면 구현 전에 멈추고 방향을 확인한다.
## Open Questions
## 확인 필요
- Active Milestone is inferred from the existing README note that Jenkins is planned for full supported-language and cross-language verification.
- The order between C# and Swift may change if product priorities shift.
- Release target registries and package publishing order are not yet confirmed.
- Active Milestone은 전체 지원 언어 및 크로스 언어 검증에 Jenkins를 계획했던 기존 README 메모에서 추론했다.
- 제품 우선순위가 바뀌면 C#과 Swift의 순서는 달라질 수 있다.
- 릴리즈 대상 registry와 패키지 배포 순서는 아직 확정되지 않았다.

View file

@ -1,5 +1,5 @@
# Current Roadmap Context
- Active Phase: Phase 2 - Verification and compatibility
- Active Milestone: M03 Continuous Verification
- Active Phase: Phase 2 - 검증과 호환성
- Active Milestone: M03 지속 검증
- Active Milestone File: agent-ops/roadmap/milestones/M03-continuous-verification.md

View file

@ -1,12 +1,12 @@
# M01 Protocol Baseline
# M01 프로토콜 기준선
## Goal
Establish the shared Proto Socket protocol contract so every implementation can interoperate without embedding application-specific behavior into the core.
각 구현체가 애플리케이션별 동작을 코어에 넣지 않고도 상호 운용될 수 있도록 Proto Socket의 공유 프로토콜 계약을 확립한다.
## Phase
Phase 1 - Protocol foundation
Phase 1 - 프로토콜 기반
## Status
@ -14,32 +14,32 @@ Done
## Scope
- Document TCP 4-byte big-endian length-prefixed framing.
- Document WebSocket/WSS binary-frame transport.
- Define `PacketBase`, `typeName`, `nonce`, `responseNonce`, and `HeartBeat` behavior.
- Define protocol/package version separation.
- Treat `proto/message_common.proto` as the canonical proto source.
- TCP 4바이트 빅엔디안 길이 프리픽스 프레이밍을 문서화한다.
- WebSocket/WSS 바이너리 프레임 전송을 문서화한다.
- `PacketBase`, `typeName`, `nonce`, `responseNonce`, `HeartBeat` 동작을 정의한다.
- 프로토콜 버전과 패키지 버전의 분리 정책을 정의한다.
- `proto/message_common.proto`를 canonical proto 원본으로 둔다.
## Required Features
- [x] Protocol version `0.1` documented in `PROTOCOL.md` and `VERSIONING.md`.
- [x] Canonical proto source documented as `proto/message_common.proto`.
- [x] TCP and WebSocket wire formats documented.
- [x] Heartbeat lifecycle and request-response correlation documented.
- [x] Breaking and non-breaking protocol change policy documented.
- [x] 프로토콜 버전 `0.1``PROTOCOL.md``VERSIONING.md`에 문서화한다.
- [x] Canonical proto 원본이 `proto/message_common.proto`임을 문서화한다.
- [x] TCP 및 WebSocket 와이어 포맷을 문서화한다.
- [x] 하트비트 생명주기와 요청-응답 상관관계를 문서화한다.
- [x] breaking / non-breaking 프로토콜 변경 정책을 문서화한다.
## Success Criteria
- Implementers can build a conforming language port from `PROTOCOL.md`, `VERSIONING.md`, and `PORTING_GUIDE.md`.
- Protocol-level changes have an explicit compatibility review path.
- Generated language proto copies can be checked against the canonical schema.
- 구현자는 `PROTOCOL.md`, `VERSIONING.md`, `PORTING_GUIDE.md`를 기준으로 호환되는 언어 포트를 만들 수 있다.
- 프로토콜 수준 변경에는 명시적인 호환성 검토 경로가 있다.
- 생성된 언어별 proto 사본은 canonical schema와 대조할 수 있다.
## Non-Goals
- Define application-level auth, session, chat, game, room, or agent workflow semantics.
- Publish language packages.
- Add new transport families beyond TCP/TLS and WebSocket/WSS.
- 애플리케이션 수준 인증, 세션, 채팅, 게임, 룸, 에이전트 워크플로 의미를 정의하지 않는다.
- 언어 패키지를 배포하지 않는다.
- TCP/TLS 및 WebSocket/WSS 외의 새 transport 계열을 추가하지 않는다.
## Context for Work
Use `PROTOCOL.md` as the wire-format source of truth and `VERSIONING.md` for compatibility policy. If proto schemas change, regenerate bindings and run `tools/check_proto_sync.sh`.
와이어 포맷의 기준 문서는 `PROTOCOL.md`, 호환성 정책의 기준 문서는 `VERSIONING.md`다. Proto schema가 바뀌면 binding을 재생성하고 `tools/check_proto_sync.sh`를 실행한다.

View file

@ -1,12 +1,12 @@
# M02 Available Language Parity
# M02 사용 가능 언어 parity
## Goal
Bring the checked-in available implementations into a common protocol surface with same-language tests and cross-language test entry points.
저장소에 포함된 사용 가능 구현체들을 동일 언어 테스트와 크로스 언어 테스트 진입점을 갖춘 공통 프로토콜 표면으로 맞춘다.
## Phase
Phase 2 - Verification and compatibility
Phase 2 - 검증과 호환성
## Status
@ -14,33 +14,33 @@ Done
## Scope
- Maintain the available implementation set listed in `README.md` and `PROTOCOL.md`.
- Keep Dart, Go, Kotlin, Python, and TypeScript aligned with protocol version `0.1`.
- Keep runtime dependencies native-first and narrowly scoped outside protobuf.
- Keep cross-language test runners available for the supported language matrix.
- `README.md``PROTOCOL.md`에 표시된 사용 가능 구현체 목록을 유지한다.
- Dart, Go, Kotlin, Python, TypeScript를 프로토콜 버전 `0.1`에 맞춘다.
- protobuf 외 런타임 의존성은 native-first이며 좁은 범위로 유지한다.
- 지원 언어 매트릭스를 위한 크로스 언어 테스트 runner를 유지한다.
## Required Features
- [x] Dart implementation available under `dart/`.
- [x] Go implementation available under `go/`.
- [x] Kotlin implementation available under `kotlin/`.
- [x] Python implementation available under `python/`.
- [x] TypeScript implementation available under `typescript/`.
- [x] Cross-language test entry points exist across the available implementations.
- [x] Dependency direction documented: protobuf is the core protocol dependency; other runtime dependencies must be native-first, protocol-relevant, and minimal.
- [x] Dart 구현체가 `dart/`에 있다.
- [x] Go 구현체가 `go/`에 있다.
- [x] Kotlin 구현체가 `kotlin/`에 있다.
- [x] Python 구현체가 `python/`에 있다.
- [x] TypeScript 구현체가 `typescript/`에 있다.
- [x] 사용 가능 구현체 간 크로스 언어 테스트 진입점이 있다.
- [x] 의존성 방향을 문서화한다. protobuf는 핵심 프로토콜 의존성이며, 다른 런타임 의존성은 native-first, protocol-relevant, minimal이어야 한다.
## Success Criteria
- A maintainer can identify available and planned implementations from top-level docs.
- New language work can start from `PORTING_GUIDE.md` and the project crosstest templates.
- Available implementations preserve the documented protocol contract.
- 유지보수자는 상위 문서에서 사용 가능 구현체와 계획 구현체를 식별할 수 있다.
- 새 언어 작업은 `PORTING_GUIDE.md`와 프로젝트 crosstest 템플릿에서 시작할 수 있다.
- 사용 가능 구현체들은 문서화된 프로토콜 계약을 유지한다.
## Non-Goals
- Mark C# or Swift as available before implementation, same-language tests, and cross-language tests pass.
- Introduce broad frameworks or runtime layers only to cover narrow protocol needs.
- Expand protocol semantics beyond the transport-level contract.
- 구현, 동일 언어 테스트, 크로스 언어 테스트가 통과하기 전에 C# 또는 Swift를 Available로 표시하지 않는다.
- 좁은 프로토콜 요구를 처리하기 위해 넓은 framework나 runtime layer를 도입하지 않는다.
- transport-level 계약을 넘어 프로토콜 의미를 확장하지 않는다.
## Context for Work
When adding or changing language implementations, use `PORTING_GUIDE.md` and the project skill `agent-ops/skills/project/add-proto-socket-crosstest-language/SKILL.md`. Before changing protocol files, read the protocol domain rule.
언어 구현을 추가하거나 변경할 때는 `PORTING_GUIDE.md`와 프로젝트 스킬 `agent-ops/skills/project/add-proto-socket-crosstest-language/SKILL.md`를 사용한다. 프로토콜 파일을 변경하기 전에는 protocol domain rule을 읽는다.

View file

@ -1,12 +1,12 @@
# M03 Continuous Verification
# M03 지속 검증
## Goal
Automate confidence for all available implementations by running same-language tests, cross-language tests, and proto sync checks in an external CI runner.
외부 CI runner에서 동일 언어 테스트, 크로스 언어 테스트, proto 동기화 검사를 실행해 모든 사용 가능 구현체에 대한 신뢰도를 자동화한다.
## Phase
Phase 2 - Verification and compatibility
Phase 2 - 검증과 호환성
## Status
@ -14,36 +14,36 @@ Active
## Scope
- Turn the README test command matrix into a repeatable CI workflow.
- Include Dart, Go, Kotlin, Python, and TypeScript same-language tests.
- Include the available cross-language test runners.
- Include proto synchronization checks when proto files change.
- Keep the workflow aligned with the existing local commands and project test-matrix skill.
- README의 테스트 명령 매트릭스를 반복 가능한 CI workflow로 만든다.
- Dart, Go, Kotlin, Python, TypeScript 동일 언어 테스트를 포함한다.
- 사용 가능한 크로스 언어 테스트 runner를 포함한다.
- proto 파일 변경 시 proto 동기화 검사를 포함한다.
- 기존 로컬 명령 및 프로젝트 test-matrix 스킬과 workflow를 맞춘다.
## Required Features
- [ ] Confirm the external CI entry point. The migrated roadmap context keeps Jenkins as the current candidate until changed.
- [ ] Run Dart unit tests.
- [ ] Run Go unit tests.
- [ ] Run Kotlin unit tests.
- [ ] Run Python unit tests.
- [ ] Run TypeScript checks and unit tests.
- [ ] Run available cross-language checks across Dart, Go, Kotlin, Python, and TypeScript.
- [ ] Run `tools/check_proto_sync.sh` when proto bindings may be affected.
- [ ] Document how to inspect failures and rerun the matrix locally.
- [ ] 외부 CI 진입점을 확정한다. 변경 전까지는 마이그레이션된 로드맵 맥락상 Jenkins를 현재 후보로 유지한다.
- [ ] Dart unit test를 실행한다.
- [ ] Go unit test를 실행한다.
- [ ] Kotlin unit test를 실행한다.
- [ ] Python unit test를 실행한다.
- [ ] TypeScript check와 unit test를 실행한다.
- [ ] Dart, Go, Kotlin, Python, TypeScript 간 사용 가능한 크로스 언어 검사를 실행한다.
- [ ] Proto binding에 영향이 있을 때 `tools/check_proto_sync.sh`를 실행한다.
- [ ] 실패를 확인하고 매트릭스를 로컬에서 다시 실행하는 방법을 문서화한다.
## Success Criteria
- A single CI job or pipeline can validate the full supported-language and cross-language matrix.
- CI failures identify the failing language pair or same-language package clearly.
- The local commands in `README.md` remain consistent with the automated workflow.
- 단일 CI job 또는 pipeline이 전체 지원 언어 및 크로스 언어 매트릭스를 검증할 수 있다.
- CI 실패가 실패한 언어 쌍 또는 동일 언어 package를 명확히 식별한다.
- `README.md`의 로컬 명령이 자동화 workflow와 일치한다.
## Non-Goals
- Add C# or Swift implementation work in this milestone.
- Change protocol behavior or package APIs for the sake of CI convenience.
- Require every normal development task to read the full roadmap.
- 이 마일스톤에서 C# 또는 Swift 구현 작업을 추가하지 않는다.
- CI 편의를 위해 프로토콜 동작이나 package API를 변경하지 않는다.
- 모든 일반 개발 작업에서 전체 로드맵을 읽도록 요구하지 않는다.
## Context for Work
Use `agent-ops/skills/project/run-proto-socket-test-matrix/SKILL.md` and `agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_matrix.sh` as the closest existing automation context. Treat Jenkins as the current documented candidate unless the user chooses another runner.
가장 가까운 기존 자동화 맥락으로 `agent-ops/skills/project/run-proto-socket-test-matrix/SKILL.md``agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_matrix.sh`를 사용한다. 사용자가 다른 runner를 선택하기 전까지 Jenkins를 현재 문서화된 후보로 본다.

View file

@ -1,12 +1,12 @@
# M04 C# Unity/.NET Port
# M04 C# Unity/.NET 포트
## Goal
Add a C# implementation that supports Unity and .NET consumers while preserving the protocol `0.1` contract and native-first runtime direction.
프로토콜 `0.1` 계약과 native-first 런타임 방향을 유지하면서 Unity 및 .NET 소비자를 지원하는 C# 구현을 추가한다.
## Phase
Phase 3 - Remaining native platform ports
Phase 3 - 남은 native platform 포팅
## Status
@ -14,34 +14,34 @@ Planned
## Scope
- Implement the core transport abstraction, communicator, nonce handling, request-response correlation, heartbeat, and close-once behavior.
- Implement TCP/TLS and WebSocket/WSS support where practical for the target runtime.
- Add same-language tests and cross-language tests before marking the implementation available.
- Document any non-protobuf runtime dependency and why native APIs are insufficient.
- 핵심 transport 추상화, communicator, nonce 처리, 요청-응답 상관관계, 하트비트, close-once 동작을 구현한다.
- 대상 런타임에서 실용적인 범위로 TCP/TLS 및 WebSocket/WSS 지원을 구현한다.
- 구현체를 Available로 표시하기 전에 동일 언어 테스트와 크로스 언어 테스트를 추가한다.
- protobuf 외 런타임 의존성이 있다면 native API가 충분하지 않은 이유를 문서화한다.
## Required Features
- [ ] Choose supported .NET and Unity version targets.
- [ ] Generate or maintain C# protobuf bindings from the canonical schema.
- [ ] Implement `ITransport` and communicator core.
- [ ] Implement TCP/TLS client and server support.
- [ ] Implement WebSocket/WSS support with a focused dependency only if native support is insufficient.
- [ ] Add same-language tests.
- [ ] Add cross-language test runners.
- [ ] Update top-level implementation status only after tests pass.
- [ ] 지원할 .NET 및 Unity version target을 선택한다.
- [ ] Canonical schema에서 C# protobuf binding을 생성하거나 유지한다.
- [ ] `ITransport`와 communicator core를 구현한다.
- [ ] TCP/TLS client와 server 지원을 구현한다.
- [ ] Native 지원이 충분하지 않은 경우에만 focused dependency로 WebSocket/WSS 지원을 구현한다.
- [ ] 동일 언어 테스트를 추가한다.
- [ ] 크로스 언어 테스트 runner를 추가한다.
- [ ] 테스트 통과 후에만 상위 구현 상태를 갱신한다.
## Success Criteria
- C# peers interoperate with at least one available implementation through the documented protocol.
- C# implementation follows `PORTING_GUIDE.md` and keeps Unity main-thread concerns outside the protocol core.
- Runtime dependency choices are documented and protocol-relevant.
- C# peer가 문서화된 프로토콜을 통해 최소 하나의 사용 가능 구현체와 상호 운용된다.
- C# 구현체는 `PORTING_GUIDE.md`를 따르며 Unity main-thread concern을 프로토콜 core 밖에 둔다.
- 런타임 의존성 선택은 문서화되어 있고 protocol-relevant하다.
## Non-Goals
- Add Unity-specific gameplay, room, auth, session, or chat semantics.
- Change the protocol to accommodate C#-specific APIs.
- Mark C# as available without passing same-language and cross-language checks.
- Unity 전용 gameplay, room, auth, session, chat 의미를 추가하지 않는다.
- C# 전용 API에 맞추기 위해 프로토콜을 변경하지 않는다.
- 동일 언어 및 크로스 언어 검사를 통과하지 않은 상태에서 C#을 Available로 표시하지 않는다.
## Context for Work
Use the C# section of `PORTING_GUIDE.md` before implementation. Reference Go for concurrency and close-once patterns, and Dart for public API shape and parser map examples.
구현 전 `PORTING_GUIDE.md`의 C# 섹션을 사용한다. 동시성과 close-once 패턴은 Go를, public API 형태와 parser map 예시는 Dart를 참고한다.

View file

@ -1,12 +1,12 @@
# M05 Swift Apple Platform Port
# M05 Swift Apple 플랫폼 포트
## Goal
Add a Swift implementation for iOS and macOS while preserving the protocol `0.1` contract and Apple-native runtime direction.
프로토콜 `0.1` 계약과 Apple-native 런타임 방향을 유지하면서 iOS 및 macOS용 Swift 구현을 추가한다.
## Phase
Phase 3 - Remaining native platform ports
Phase 3 - 남은 native platform 포팅
## Status
@ -14,34 +14,34 @@ Planned
## Scope
- Implement the core transport abstraction, communicator, nonce handling, request-response correlation, heartbeat, and close-once behavior.
- Use Swift concurrency, actors, `URLSessionWebSocketTask`, and Apple platform APIs where practical.
- Add same-language tests and cross-language tests before marking the implementation available.
- Document any non-protobuf runtime dependency and why native APIs are insufficient.
- 핵심 transport 추상화, communicator, nonce 처리, 요청-응답 상관관계, 하트비트, close-once 동작을 구현한다.
- 실용적인 곳에서는 Swift concurrency, actor, `URLSessionWebSocketTask`, Apple platform API를 사용한다.
- 구현체를 Available로 표시하기 전에 동일 언어 테스트와 크로스 언어 테스트를 추가한다.
- protobuf 외 런타임 의존성이 있다면 native API가 충분하지 않은 이유를 문서화한다.
## Required Features
- [ ] Choose supported Swift and Apple platform targets.
- [ ] Generate Swift protobuf bindings from the canonical schema.
- [ ] Implement transport and communicator core.
- [ ] Implement TCP/TLS support.
- [ ] Implement WebSocket/WSS support.
- [ ] Add same-language tests.
- [ ] Add cross-language test runners.
- [ ] Update top-level implementation status only after tests pass.
- [ ] 지원할 Swift 및 Apple platform target을 선택한다.
- [ ] Canonical schema에서 Swift protobuf binding을 생성한다.
- [ ] Transport와 communicator core를 구현한다.
- [ ] TCP/TLS 지원을 구현한다.
- [ ] WebSocket/WSS 지원을 구현한다.
- [ ] 동일 언어 테스트를 추가한다.
- [ ] 크로스 언어 테스트 runner를 추가한다.
- [ ] 테스트 통과 후에만 상위 구현 상태를 갱신한다.
## Success Criteria
- Swift peers interoperate with at least one available implementation through the documented protocol.
- Swift implementation follows `PORTING_GUIDE.md` and keeps platform UI/threading concerns outside the protocol core.
- Runtime dependency choices are documented and protocol-relevant.
- Swift peer가 문서화된 프로토콜을 통해 최소 하나의 사용 가능 구현체와 상호 운용된다.
- Swift 구현체는 `PORTING_GUIDE.md`를 따르며 platform UI/threading concern을 프로토콜 core 밖에 둔다.
- 런타임 의존성 선택은 문서화되어 있고 protocol-relevant하다.
## Non-Goals
- Add app-specific auth, session, chat, game, or Apple UI abstractions.
- Change the protocol to accommodate Swift-specific APIs.
- Mark Swift as available without passing same-language and cross-language checks.
- 앱 전용 auth, session, chat, game, Apple UI abstraction을 추가하지 않는다.
- Swift 전용 API에 맞추기 위해 프로토콜을 변경하지 않는다.
- 동일 언어 및 크로스 언어 검사를 통과하지 않은 상태에서 Swift를 Available로 표시하지 않는다.
## Context for Work
Use the Swift section of `PORTING_GUIDE.md` before implementation. Prefer actor isolation and Swift concurrency for shared state and cancellation behavior where it fits the protocol core.
구현 전 `PORTING_GUIDE.md`의 Swift 섹션을 사용한다. 공유 상태와 cancellation 동작이 프로토콜 core에 맞는 곳에서는 actor isolation과 Swift concurrency를 우선한다.

View file

@ -1,12 +1,12 @@
# M06 Release Readiness
# M06 릴리즈 준비
## Goal
Prepare the project for repeatable external consumption with clear package versions, protocol compatibility statements, and release checks per available language.
명확한 package version, 프로토콜 호환성 설명, 언어별 릴리즈 검사를 갖춰 프로젝트를 반복 가능한 외부 사용 상태로 준비한다.
## Phase
Phase 4 - Release readiness
Phase 4 - 릴리즈 준비
## Status
@ -14,31 +14,31 @@ Planned
## Scope
- Clarify package publication targets and release order per language.
- Ensure each published package states the protocol version it implements.
- Keep package versions independent from protocol compatibility versioning.
- Document release checks and compatibility notes.
- 언어별 package publication target과 릴리즈 순서를 명확히 한다.
- 배포된 각 package가 구현하는 프로토콜 version을 명시하게 한다.
- Package version은 프로토콜 호환성 version과 독립적으로 유지한다.
- 릴리즈 검사와 호환성 메모를 문서화한다.
## Required Features
- [ ] Confirm package registry targets for each available language.
- [ ] Define release checklist per language.
- [ ] Ensure package docs state protocol version support.
- [ ] Keep changelog or release notes aligned with `VERSIONING.md`.
- [ ] Verify same-language and cross-language tests before release.
- [ ] 사용 가능 언어별 package registry target을 확정한다.
- [ ] 언어별 릴리즈 checklist를 정의한다.
- [ ] Package 문서가 지원 프로토콜 version을 명시하게 한다.
- [ ] Changelog 또는 release notes를 `VERSIONING.md`와 맞춘다.
- [ ] 릴리즈 전 동일 언어 및 크로스 언어 테스트를 검증한다.
## Success Criteria
- A maintainer can release a language package without guessing the compatibility checklist.
- Package releases communicate protocol version support separately from package version changes.
- Release documentation does not imply a protocol bump unless wire format or required behavior changes.
- 유지보수자는 호환성 checklist를 추측하지 않고 언어 package를 릴리즈할 수 있다.
- Package release는 package version 변경과 별도로 protocol version 지원을 전달한다.
- 릴리즈 문서는 wire format 또는 required behavior가 바뀌지 않는 한 protocol bump를 암시하지 않는다.
## Non-Goals
- Change protocol compatibility policy.
- Add new language implementations.
- Publish packages without the verification milestone being complete.
- 프로토콜 호환성 정책을 변경하지 않는다.
- 새 언어 구현을 추가하지 않는다.
- 검증 마일스톤이 완료되지 않은 상태에서 package를 배포하지 않는다.
## Context for Work
Use `VERSIONING.md` as the release compatibility source of truth. README currently notes that checked-in implementations must preserve the documented protocol contract even before packages are published.
릴리즈 호환성 기준 문서는 `VERSIONING.md`다. README는 package가 아직 배포되지 않았더라도 저장소에 포함된 구현체가 문서화된 프로토콜 계약을 유지해야 한다고 설명한다.