update roadmap and documentation

This commit is contained in:
toki 2026-06-18 10:34:55 +09:00
parent 1a91f4995f
commit 59511b9843
6 changed files with 33 additions and 8 deletions

View file

@ -287,9 +287,9 @@ Sending `HeartBeat {}`:
| Language | Status | Path | | Language | Status | Path |
|----------|--------|------| |----------|--------|------|
| Dart | Available | `dart/` | | Dart | Available | `dart/` |
| C# (Unity) | Planned | `csharp/` | | C# (Unity) | Planned / On hold | `csharp/` |
| Kotlin | Available | `kotlin/` | | Kotlin | Available | `kotlin/` |
| Swift | Planned | `swift/` | | Swift | Planned / On hold | `swift/` |
| Go | Available | `go/` | | Go | Available | `go/` |
| TypeScript | Available | `typescript/` | | TypeScript | Available | `typescript/` |
| Python | Available | `python/` | | Python | Available | `python/` |

View file

@ -24,9 +24,10 @@ bash agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_matrix.sh
| 항목 | 최신 근거 | 결과 | 해석 | | 항목 | 최신 근거 | 결과 | 해석 |
|------|-----------|------|------| |------|-----------|------|------|
| 기능 호환성 | 로컬 기록 `20260615-020431-proto-socket-full-matrix.md`, ref `3bc131c` | PASS | proto sync, 동일 언어 테스트, 20개 native cross-language 방향, Dart.web/Dart.web(WSS) client coverage가 모두 통과했다. | | 기능 호환성 | 로컬 기록 `20260618-002914-proto-socket-full-matrix.md`, ref `1a91f49` | PASS | proto sync, 동일 언어 테스트, 20개 native cross-language 방향, Dart.web/Dart.web(WSS) client coverage가 모두 통과했다. |
| 성능/안정성 baseline 후보 | 로컬 기록 `20260614-123328-proto-socket-performance-full.md`, ref `29ea189` | PASS | same-language, cross-language, TypeScript gateway 성능/안정성 측정이 모두 통과했다. baseline 비교가 없어 regression 판정은 `SKIPPED`다. | | 성능/안정성 quick 재검증 | 로컬 기록 `20260618-003346-proto-socket-performance-quick.md`, ref `1a91f49` | PASS | same-language, cross-language, TypeScript gateway quick profile이 모두 통과했다. baseline 비교가 없어 regression 판정은 `SKIPPED`다. |
| 안정성 hard gate | performance full 378 rows | PASS | timeout, nonce mismatch, response type mismatch, FIFO violation, pending leak가 모두 0이다. | | 성능/안정성 full baseline 후보 | 로컬 기록 `20260614-123328-proto-socket-performance-full.md`, ref `29ea189` | PASS | full profile 기준 same-language, cross-language, TypeScript gateway 성능/안정성 측정이 모두 통과했다. |
| 안정성 hard gate | performance quick 재검증 및 full baseline | PASS | timeout, nonce mismatch, response type mismatch, FIFO violation, pending leak가 모두 0이다. |
성능 full 기록의 대표 수치는 다음과 같다. 성능 full 기록의 대표 수치는 다음과 같다.
@ -39,6 +40,12 @@ bash agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_matrix.sh
도입 판단은 "얇은 protocol-first 소켓 프레임워크로 충분히 실용적"으로 둔다. 다만 Kotlin WebSocket과 Python high-concurrency row는 다른 구현보다 tail latency가 크므로, 초저지연/초고동시성 제품에서는 해당 언어와 transport 조합을 별도로 재측정한다. 최신 기능 ref에서 성능 회귀 없음까지 확정하려면 `run_performance.sh --full --baseline <이전 performance record>`로 같은 환경 비교를 수행한다. 도입 판단은 "얇은 protocol-first 소켓 프레임워크로 충분히 실용적"으로 둔다. 다만 Kotlin WebSocket과 Python high-concurrency row는 다른 구현보다 tail latency가 크므로, 초저지연/초고동시성 제품에서는 해당 언어와 transport 조합을 별도로 재측정한다. 최신 기능 ref에서 성능 회귀 없음까지 확정하려면 `run_performance.sh --full --baseline <이전 performance record>`로 같은 환경 비교를 수행한다.
### 2026-06-18 잠정 완료 기록
2026-06-18 기준으로 Proto Socket은 프로토콜 `0.1`과 현재 사용 가능 언어 5종(Dart, Go, Kotlin, Python, TypeScript)에 대해 잠정 완료 상태로 둔다. 완료 근거는 최신 전체 기능 매트릭스 PASS, 성능/안정성 quick 재검증 PASS, 기존 full baseline PASS, README/PROTOCOL/VERSIONING/PORTING_GUIDE 정합성 점검이다.
이후 작업은 유지보수 모드로 제한한다. 허용 범위는 bug fix, 문서 정정, 테스트 runner 보강, 호환성을 유지하는 작은 구현 수정이다. C#/Swift 같은 새 언어 확장, package registry 배포, protocol/API 변경은 실제 소비 수요와 명시적 재개 요청이 있을 때 별도 작업으로 다시 연다.
프로토콜 또는 공개 API 변경은 호환성 작업으로 다룬다. 관련 문서를 갱신하고, 필요한 경우 protobuf binding을 재생성하며, 전체 검증 매트릭스가 통과해야 한다. 프로토콜 또는 공개 API 변경은 호환성 작업으로 다룬다. 관련 문서를 갱신하고, 필요한 경우 protobuf binding을 재생성하며, 전체 검증 매트릭스가 통과해야 한다.
### 런타임 포트와 테스트 포트 ### 런타임 포트와 테스트 포트

View file

@ -206,6 +206,14 @@ cross_transport_count() {
grep -c '^PASS scenario=' "$file" 2>/dev/null || true grep -c '^PASS scenario=' "$file" 2>/dev/null || true
} }
cross_expected_count() {
case "$1" in
tcp) echo 5 ;;
ws) echo 4 ;;
*) echo 4 ;;
esac
}
run_cross_profile() { run_cross_profile() {
local cross_record_profile="proto-socket-stress-${mode}-cross" local cross_record_profile="proto-socket-stress-${mode}-cross"
local cross_record_file="$record_dir/${run_record_stamp}-${cross_record_profile}.md" local cross_record_file="$record_dir/${run_record_stamp}-${cross_record_profile}.md"
@ -257,8 +265,9 @@ run_cross_profile() {
continue continue
fi fi
local expected_for_command=4
for transport in $selected_transports; do for transport in $selected_transports; do
local expected_for_command
expected_for_command="$(cross_expected_count "$transport")"
for concurrency in 1 16 64 256; do for concurrency in 1 16 64 256; do
local log_file start_ns end_ns elapsed_ms pass_total fail_total status note throughput local log_file start_ns end_ns elapsed_ms pass_total fail_total status note throughput
log_file="$work_dir/cross_${key}_${transport}_c${concurrency}.log" log_file="$work_dir/cross_${key}_${transport}_c${concurrency}.log"
@ -323,7 +332,7 @@ run_cross_profile() {
printf -- '- timeout / nonce mismatch / response type mismatch / per-connection FIFO violation / pending-queue leak 모두 0이어야 PASS.\n' printf -- '- timeout / nonce mismatch / response type mismatch / per-connection FIFO violation / pending-queue leak 모두 0이어야 PASS.\n'
printf -- '- 이 cross adapter는 기존 crosstest request-response 병렬 scenario를 공통 stress row schema로 기록한다.\n' printf -- '- 이 cross adapter는 기존 crosstest request-response 병렬 scenario를 공통 stress row schema로 기록한다.\n'
printf -- '- cross adapter는 transport/concurrency 조합마다 `PROTO_SOCKET_CROSSTEST_TRANSPORT`를 지정해 별도 command를 실행한다.\n' printf -- '- cross adapter는 transport/concurrency 조합마다 `PROTO_SOCKET_CROSSTEST_TRANSPORT`를 지정해 별도 command를 실행한다.\n'
printf -- '- crosstest command가 실패하거나 선택 transport의 기대 PASS scenario 4개와 정확히 일치하지 않으면 해당 row는 FAIL이다.\n\n' printf -- '- crosstest command가 실패하거나 선택 transport의 기대 PASS scenario 와 정확히 일치하지 않으면 해당 row는 FAIL이다.\n\n'
printf '## 크로스 언어 요약\n\n' printf '## 크로스 언어 요약\n\n'
printf '| 방향 | 결과 | PASS scenarios | Expected | FAIL lines | 비고 |\n' printf '| 방향 | 결과 | PASS scenarios | Expected | FAIL lines | 비고 |\n'
printf '|---|---|---:|---:|---:|---|\n' printf '|---|---|---:|---:|---:|---|\n'

View file

@ -14,6 +14,12 @@ Proto Socket은 여러 언어와 플랫폼에서 일관되게 동작하는 얇
- 남은 native platform 포팅: C# Unity/.NET 포트와 Swift 구현 추가는 실제 수요 또는 명시적 재개 요청이 생길 때까지 보류한다. - 남은 native platform 포팅: C# Unity/.NET 포트와 Swift 구현 추가는 실제 수요 또는 명시적 재개 요청이 생길 때까지 보류한다.
- 릴리즈 준비: 현재 릴리즈 표준은 Git ref/tag 기반 소비로 둔다. 외부 package registry 릴리즈는 별도 수요가 생길 때 후속 작업으로 분리한다. - 릴리즈 준비: 현재 릴리즈 표준은 Git ref/tag 기반 소비로 둔다. 외부 package registry 릴리즈는 별도 수요가 생길 때 후속 작업으로 분리한다.
## 2026-06-18 잠정 완료 판단
현재 사용 가능 구현은 Dart, Go, Kotlin, Python, TypeScript 5개 언어다. 2026-06-18 기준 전체 기능 매트릭스와 성능/안정성 quick 재검증이 통과했고, 기존 full baseline 근거도 유지된다. 따라서 현재 범위는 잠정 완료로 두고, 이후 작업은 유지보수 모드에서 bug fix, 문서 정정, 테스트 보강, 호환성을 유지하는 작은 구현 수정만 수행한다.
C# Unity/.NET 포트와 Swift Apple 플랫폼 포트는 실제 소비 수요 또는 명시적 재개 요청이 있을 때 별도 언어 확장 작업으로 다시 연다. 재개 시에는 각 언어의 target runtime, SDD 필요 여부, 동일 언어 테스트, 크로스 언어 테스트, 전체 검증 매트릭스 통과 조건을 다시 확인한다.
## Milestone 목록 ## Milestone 목록
### 프로토콜 기반 ### 프로토콜 기반

View file

@ -50,6 +50,7 @@
- 관련 경로: `PORTING_GUIDE.md`, `PROTOCOL.md`, `VERSIONING.md` - 관련 경로: `PORTING_GUIDE.md`, `PROTOCOL.md`, `VERSIONING.md`
- 선행 작업: 안정화 기준선 완료 - 선행 작업: 안정화 기준선 완료
- 보류 사유: 실제 Unity/.NET 소비 수요 또는 명시적 재개 요청이 생길 때까지 구현하지 않는다. - 보류 사유: 실제 Unity/.NET 소비 수요 또는 명시적 재개 요청이 생길 때까지 구현하지 않는다.
- 재개 조건: 소비 수요가 확인되면 target .NET/Unity version, SDD 필요 여부, 동일 언어 테스트, 크로스 언어 테스트, 전체 검증 매트릭스 통과 조건을 먼저 확정한다.
- 후속 작업: 릴리즈 준비 - 후속 작업: 릴리즈 준비
- 참고 구현: 동시성과 close-once 패턴은 Go를, public API 형태와 parser map 예시는 Dart를 참고한다. - 참고 구현: 동시성과 close-once 패턴은 Go를, public API 형태와 parser map 예시는 Dart를 참고한다.
- 확인 필요: 지원할 .NET 및 Unity version target - 확인 필요: 지원할 .NET 및 Unity version target

View file

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