update docs and roadmap

This commit is contained in:
toki 2026-05-30 21:30:24 +09:00
parent 7a2e8ec22d
commit c2567530ba
9 changed files with 49 additions and 38 deletions

View file

@ -10,9 +10,9 @@ Protocol Buffers 직렬화, TCP 4바이트 빅엔디안 길이 프리픽스 프
현재 프로토콜 `0.1`의 사용 가능 호환 구현은 Dart, Go, Kotlin, Python, TypeScript다.
이 프로젝트는 새 언어 대상을 늘리거나 패키지 registry에 배포하기 전 안정화와 유지보수 단계에 있다. 지금은 이 저장소를 Git 기반으로 소비하는 흐름을 기본 지원 방식으로 둔다. C#과 Swift는 계획된 대상이지만, 실제 수요가 생기기 전까지 구현을 미룬다.
이 프로젝트는 안정화와 유지보수 단계에 있다. 현재 릴리즈 표준은 이 저장소를 Git ref/tag 기준으로 소비하는 방식이며, package registry 배포는 현재 목표가 아니다. C#과 Swift는 계획된 대상이지만, 실제 수요가 생기기 전까지 구현을 미룬다.
프로토콜이나 구현을 바꿀 때는 아래 내부 로컬 검증 매트릭스를 안정성 gate로 사용한다. 현재 주 사용 방식은 Git 기반 소비이므로, CI/CD runner 연결은 기본 운영 모델이 아니며 이 프로젝트 규모와 배포 방식에서는 설계상 과하다.
프로토콜이나 구현을 바꿀 때는 아래 내부 로컬 검증 매트릭스를 안정성 gate로 사용한다. 현재 주 사용 방식은 Git 기반 소비이므로, CI/CD runner 연결은 기본 운영 모델이 아니며 이 프로젝트 규모와 배포 방식에서는 설계상 과하다. Coverage는 라인 수치가 아니라 프로토콜 계약의 모든 필수 시나리오가 매트릭스에 포함되어 PASS인지로 판단한다.
```bash
bash agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_matrix.sh --all
@ -309,17 +309,17 @@ cd typescript
### Dart.io와 Dart.web E2E 매트릭스
위 표의 `Dart` 열은 Dart VM/IO client를 뜻한다. `Dart.web`은 별도 축이다. 브라우저 WS client만 가능하며, 브라우저에서는 TCP와 server 역할이 불가능하므로 해당 cell은 `N/A`다. WSS는 브라우저에서 self-signed test certificate 신뢰를 자동화하지 않았기 때문에 `Deferred`다.
위 표의 `Dart` 열은 Dart VM/IO client를 뜻한다. `Dart.web`은 별도 축이다. 브라우저 WS/WSS client만 가능하며, 브라우저에서는 TCP와 server 역할이 불가능하므로 해당 cell은 `N/A`다. Dart.web WSS는 self-signed test certificate로 자동화할 수 없는 항목이 아니다. 현재 남은 coverage gap은 브라우저가 테스트용 self-signed CA/certificate를 신뢰하도록 만드는 자동화와 그에 따른 Dart.web WSS 매트릭스 편입이다.
| Server | Dart.io TCP | Dart.io WS | Dart.io TLS TCP | Dart.io WSS | Dart.web WS | Dart.web WSS | Dart.web TCP |
|---|---|---|---|---|---|---|---|
| Dart.io | Covered | Covered | Covered | Covered | Covered | Deferred | N/A |
| Go | Covered | Covered | Covered | Covered | Covered | Deferred | N/A |
| Kotlin | Covered | Covered | Covered | Covered | Covered | Deferred | N/A |
| Python | Covered | Covered | Covered | Covered | Covered | Deferred | N/A |
| TypeScript | Covered | Covered | Covered | Covered | Covered | Deferred | N/A |
| Dart.io | Covered | Covered | Covered | Covered | Covered | Required gap | N/A |
| Go | Covered | Covered | Covered | Covered | Covered | Required gap | N/A |
| Kotlin | Covered | Covered | Covered | Covered | Covered | Required gap | N/A |
| Python | Covered | Covered | Covered | Covered | Covered | Required gap | N/A |
| TypeScript | Covered | Covered | Covered | Covered | Covered | Required gap | N/A |
각 Dart.web cell은 server-language runner가 해당 WS server를 띄우고, matching browser test file에 대해 `dart test -p chrome`을 실행하며, send-push와 request-response 시나리오를 검증한다.
각 Dart.web WS cell은 server-language runner가 해당 WS server를 띄우고, matching browser test file에 대해 `dart test -p chrome`을 실행하며, send-push와 request-response 시나리오를 검증한다. Dart.web WSS cell도 같은 시나리오를 검증해야 하며, 테스트용 self-signed CA/certificate trust 자동화가 추가되기 전까지는 완전 coverage의 남은 항목으로 본다.
```bash
cd dart && dart run crosstest/dart_web.dart
@ -339,5 +339,5 @@ cd typescript && ./node_modules/.bin/tsx crosstest/typescript_dart_web.ts
- 명시적인 호환성 작업 요청이 없으면 프로토콜 `0.1` 동작을 안정적으로 유지한다.
- 유지보수 모드 작업에는 bug fix, 문서 정정, 테스트 강화, 호환성을 유지하는 구현 수정이 포함될 수 있다.
- C#/Swift, package registry release, protocol/API 변경 작업은 구체적인 소비자 수요, 호환성 계획, 전체 검증 매트릭스 통과 조건이 있을 때 재개한다.
- C#/Swift, package registry release, protocol/API 변경 작업은 구체적인 소비자 수요, 호환성 계획, 전체 검증 매트릭스 통과 조건이 있을 때 별도 작업으로 재개한다. 현재 릴리즈 표준은 Git ref/tag 기준이다.
- 상위 `../oto` workflow가 결정되기 전까지 이 저장소에서 외부 CI/CD runner를 직접 연결하지 않는다.

View file

@ -23,9 +23,15 @@ The protocol version describes the wire-format and behavior contract that every
Breaking protocol changes require a new major protocol version. Backward-compatible additions keep the same major protocol version but must include updated tests before release.
## Git Release Standard
Current consumption and release flow is Git ref/tag based. Package registry publication is optional future work, not the current release standard.
Git releases must identify the repository ref/tag being consumed and use the full local validation matrix as the compatibility gate.
## Package Version
Each language implementation may publish on its own package cadence. Package versions communicate implementation releases, bug fixes, and language-specific API changes.
Each language implementation may publish on its own package cadence if registry releases are later introduced. Package versions communicate implementation releases, bug fixes, and language-specific API changes.
A package release must state which protocol version it implements. A package version bump does not imply a protocol version bump unless the wire-format or required behavior changes.

View file

@ -50,9 +50,12 @@ VERSIONING.md — 프로토콜/패키지 버전 정책
## 검증 운영 기준
- 이 프로젝트의 주 사용 방식은 package registry나 CI/CD 배포 흐름이 아니라 Git 기반 소비다.
- 이 프로젝트의 주 사용 방식과 릴리즈 기준은 package registry나 CI/CD 배포 흐름이 아니라 Git ref/tag 기반 소비다.
- 검증 루프는 내부 로컬 매트릭스 실행 결과를 기준으로 판단한다.
- 기본 검증 명령은 `bash agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_matrix.sh --all`이다.
- 테스트 coverage 평가는 라인/브랜치 수치가 아니라 프로토콜 계약 시나리오가 매트릭스에서 빠짐없이 검증되는지로 판단한다.
- Dart.web remote browser host 사용은 의도된 local 테스트 환경이다. 환경을 이전할 때는 그대로 유지할 규칙이 아니라 새 local 환경 규칙으로 재정의해야 한다.
- Dart.web WSS는 self-signed certificate로 자동화할 수 없는 항목이 아니다. 현재 남은 coverage gap은 브라우저가 테스트용 self-signed CA/certificate를 신뢰하도록 만드는 자동화와 그에 따른 Dart.web WSS 매트릭스 편입이다.
- CI/CD runner 연결은 현재 설계상 과하며, 사용자가 명시적으로 요청하지 않으면 제안하거나 요구하지 않는다.
## 마일스톤 컨텍스트 로딩

View file

@ -12,7 +12,7 @@ Proto Socket은 여러 언어와 플랫폼에서 일관되게 동작하는 얇
- 검증과 호환성: 동일 언어 테스트, 크로스 언어 테스트, proto 동기화 검사, 지속 검증으로 사용 가능한 구현체들을 정렬한다.
- 안정화와 유지: 현재 5개 언어 구현을 완성형 후보로 보고 안정성 판단, 문서 정합성, 유지 기준을 정리한다.
- 남은 native platform 포팅: 실제 수요가 생기기 전까지 C# 및 Swift 구현 추가를 보류한다.
- 릴리즈 준비: Git 기반 사용으로 충분한 동안 외부 package registry 릴리즈 준비를 보류한다.
- 릴리즈 준비: 현재 릴리즈 표준은 Git ref/tag 기반 소비로 둔다. 외부 package registry 릴리즈는 별도 수요가 생길 때 후속 작업으로 분리한다.
## Milestone 목록
@ -36,7 +36,7 @@ Proto Socket은 여러 언어와 플랫폼에서 일관되게 동작하는 얇
### 릴리즈 준비
- [릴리즈 준비](milestones/release-readiness.md) - 상태: 보류; 목표: Git 기반 사용으로 충분한 동안 package registry 릴리즈 준비를 보류한다.
- [릴리즈 준비](milestones/release-readiness.md) - 상태: 완료; 목표: Git ref/tag 기반 릴리즈 기준과 검증 gate를 명확히 한다.
## 로딩 정책

View file

@ -2,7 +2,7 @@
## 활성 Milestone
- 없음: 현재 진행 중인 활성 Milestone은 없다. 남은 Milestone은 보류 상태다.
- 없음: 현재 진행 중인 활성 Milestone은 없다. 미완료로 남은 Milestone은 실제 소비 수요 대기 상태인 C#과 Swift 포팅 보류 항목이다.
## 선택 규칙

View file

@ -53,5 +53,5 @@
- 관련 경로: `agent-ops/skills/project/run-proto-socket-test-matrix/SKILL.md`, `agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_matrix.sh`, `README.md`
- 선행 작업: 사용 가능 언어 parity
- 후속 작업: 안정화 기준선
- 검증 기록: 2026-05-21`bash agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_matrix.sh --all` 통과. Proto 동기화, Dart/Go/Kotlin/Python/TypeScript 동일 언어 테스트, 20개 크로스 언어 방향이 모두 `PASS`.
- 확인 필요: 상위 `../oto` 프로젝트의 표준 CI/CD 실행 방식이 확정되면 이 저장소의 로컬 검증 진입점을 외부 실행기로 연결한다.
- 검증 기록: 2026-05-30`bash agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_matrix.sh --all` 통과. Proto 동기화, Dart/Go/Kotlin/Python/TypeScript 동일 언어 테스트, 20개 일반 크로스 언어 방향, Dart.web WS 5개 방향이 모두 `PASS`.
- 확인 필요: CI/CD 연결은 현재 완전성 기준이 아니다. 상위 `../oto` 프로젝트의 표준 실행 방식이 확정되고 사용자가 명시적으로 요청하면 이 저장소의 로컬 검증 진입점을 외부 실행기로 연결한다.

View file

@ -2,7 +2,7 @@
## 목표
명확한 package version, 프로토콜 호환성 설명, 언어별 릴리즈 검사를 갖춰 프로젝트를 반복 가능한 외부 사용 상태로 준비한다.
Git ref/tag 기반 릴리즈 표준과 검증 gate를 명확히 해서, package registry 배포 없이도 현재 프로젝트를 반복 가능한 외부 사용 상태로 평가할 수 있게 한다.
## 단계
@ -10,38 +10,40 @@
## 상태
보류
완료
## 범위
- 언어별 package publication target과 릴리즈 순서를 명확히 한다.
- 배포된 각 package가 구현하는 프로토콜 version을 명시하게 한다.
- Package version은 프로토콜 호환성 version과 독립적으로 유지한다.
- 릴리즈 검사와 호환성 메모를 문서화한다.
- 현재 릴리즈 표준은 Git ref/tag 기반임을 명확히 한다.
- Git ref/tag 릴리즈의 검증 gate는 전체 로컬 매트릭스 PASS임을 명확히 한다.
- Package registry 배포 미비를 현재 프로젝트 결함으로 평가하지 않도록 한다.
- Package version은 프로토콜 호환성 version과 독립적으로 유지한다는 정책을 보존한다.
## 필수 기능
- [ ] 사용 가능 언어별 package registry target을 확정한다.
- [ ] 언어별 릴리즈 checklist를 정의한다.
- [ ] Package 문서가 지원 프로토콜 version을 명시하게 한다.
- [ ] Changelog 또는 release notes를 `VERSIONING.md`와 맞춘다.
- [ ] 릴리즈 전 동일 언어 및 크로스 언어 테스트를 검증한다.
- [x] Git ref/tag 기반 릴리즈 기준을 README/VERSIONING/project rules와 일치시킨다.
- [x] 릴리즈 전 검증 gate를 전체 로컬 매트릭스 PASS로 둔다.
- [x] package registry 배포 미비를 현재 release readiness 결함으로 보지 않도록 문서화한다.
- [x] Package version과 protocol version을 독립적으로 유지한다는 정책을 `VERSIONING.md`에 보존한다.
## 완료 기준
- [ ] 유지보수자는 호환성 checklist를 추측하지 않고 언어 package를 릴리즈할 수 있다.
- [ ] Package release는 package version 변경과 별도로 protocol version 지원을 전달한다.
- [ ] 릴리즈 문서는 wire format 또는 required behavior가 바뀌지 않는 한 protocol bump를 암시하지 않는다.
- [x] 유지보수자는 Git ref/tag 기반 릴리즈 기준과 package registry 전환 조건을 혼동하지 않는다.
- [x] Git ref/tag 릴리즈는 package registry release 미비와 별개로 평가된다.
- [x] 릴리즈 문서는 wire format 또는 required behavior가 바뀌지 않는 한 protocol bump를 암시하지 않는다.
## 범위 제외
- 프로토콜 호환성 정책을 변경하지 않는다.
- 새 언어 구현을 추가하지 않는다.
- 검증 마일스톤이 완료되지 않은 상태에서 package를 배포하지 않는다.
- 현재 범위에서 package registry publication target을 확정하지 않는다.
- 현재 범위에서 package registry 배포 checklist를 필수 릴리즈 gate로 만들지 않는다.
- 검증 마일스톤이 완료되지 않은 상태에서 package registry 배포를 시작하지 않는다.
## 작업 컨텍스트
- 관련 경로: `VERSIONING.md`, `README.md`
- 선행 작업: 안정화 기준선 완료 또는 package registry 릴리즈 수요 확인
- 후속 작업: 없음
- 확인 필요: 사용 가능 언어별 package registry target과 릴리즈 순서
- 선행 작업: 안정화 기준선 완료
- 후속 작업: package registry 배포 수요가 생길 경우 별도 release-publication Milestone 후보
- 현재 기준: Git ref/tag 기반 릴리즈. 검증 gate는 `bash agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_matrix.sh --all` PASS.
- 후속 조건: package registry 배포 수요가 생기면 별도 Milestone에서 publication target, package release checklist, changelog/release notes 정책을 확정한다.

View file

@ -46,6 +46,6 @@
- 관련 경로: `README.md`, `PROTOCOL.md`, `VERSIONING.md`, `PORTING_GUIDE.md`, `agent-roadmap/milestones/continuous-verification.md`, `agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_matrix.sh`
- 선행 작업: 지속 검증
- 후속 작업: C# Unity/.NET 포트, Swift Apple 플랫폼 포트, 릴리즈 준비
- 검증 근거: 2026-05-22`bash agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_matrix.sh --all` 통과. Proto 동기화, Dart/Go/Kotlin/Python/TypeScript 동일 언어 테스트, 20개 크로스 언어 방향이 모두 `PASS`.
- 검증 근거: 2026-05-30`bash agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_matrix.sh --all` 통과. Proto 동기화, Dart/Go/Kotlin/Python/TypeScript 동일 언어 테스트, 20개 일반 크로스 언어 방향, Dart.web WS 5개 방향이 모두 `PASS`.
- 문서 정합성: 2026-05-22 기준 README, PROTOCOL, VERSIONING, PORTING_GUIDE의 protocol `0.1`, 지원 언어, 새 언어 보류, package registry 보류, validation gate 설명이 충돌하지 않는다.
- 안정화 판단: 최신 전체 매트릭스 PASS와 문서 정합성 점검 기준으로 protocol `0.1` 및 현재 5개 언어 구현을 동결/완성형 후보로 둔다. 새 변경 후보가 발견되기 전까지 protocol/API 변경은 compatibility work로만 다룬다.
- 안정화 판단: 최신 전체 매트릭스 PASS와 문서 정합성 점검 기준으로 protocol `0.1` 및 현재 5개 언어 구현을 동결/완성형 후보로 둔다. 다만 coverage 완전성 평가는 라인 수치가 아니라 프로토콜 시나리오 coverage로 판단하며, Dart.web WSS self-signed certificate trust 자동화와 매트릭스 편입은 남은 coverage gap으로 기록한다. 새 변경 후보가 발견되기 전까지 protocol/API 변경은 compatibility work로만 다룬다.

View file

@ -24,4 +24,4 @@
- [ ] Record exact commands used to run TypeScript checks and Go cross tests.
- [ ] Record fixed ports `29490` and `29492`.
- [ ] Record TLS/WSS deferral for this iteration.
- [ ] Record TLS/WSS coverage status. Non-browser TLS/WSS is required; Dart.web WSS remains a required browser trust automation gap until self-signed test CA/certificate handling is added.