# 지속 검증

## 목표

저장소 로컬에서 동일 언어 테스트, 크로스 언어 테스트, proto 동기화 검사를 반복 가능한 단일 진입점으로 실행해 모든 사용 가능 구현체에 대한 신뢰도를 유지한다. 외부 CI/CD 실행기 연결은 상위 `../oto` 프로젝트의 표준 실행 방식이 확정된 뒤 진행한다.

## 단계

검증과 호환성

## 상태

완료

## 범위

- README의 테스트 명령 매트릭스를 반복 가능한 로컬 검증 진입점으로 만든다.
- Dart, Go, Kotlin, Python, TypeScript 동일 언어 테스트를 포함한다.
- 사용 가능한 크로스 언어 테스트 runner를 포함한다.
- 전체 검증에 proto 동기화 검사를 포함한다.
- 기존 로컬 명령 및 프로젝트 test-matrix 스킬을 맞춘다.
- 외부 CI/CD runner 연결은 현재 범위에서 확정하지 않고, 상위 `../oto` 프로젝트의 표준 실행기를 기준 후보로 둔다.

## 필수 기능

- [x] Dart unit test를 실행하는 로컬 매트릭스 명령을 제공한다.
- [x] Go unit test를 실행하는 로컬 매트릭스 명령을 제공한다.
- [x] Kotlin unit test를 실행하는 로컬 매트릭스 명령을 제공한다.
- [x] Python unit test를 실행하는 로컬 매트릭스 명령을 제공한다.
- [x] TypeScript check와 unit test를 실행하는 로컬 매트릭스 명령을 제공한다.
- [x] Dart, Go, Kotlin, Python, TypeScript 간 사용 가능한 크로스 언어 검사를 실행하는 로컬 매트릭스 명령을 제공한다.
- [x] 전체 검증과 개별 proto 검증에서 `tools/check_proto_sync.sh`를 실행한다.
- [x] 실패를 확인하고 매트릭스를 로컬에서 다시 실행하는 방법을 문서화한다.
- [x] 전체 로컬 매트릭스 실행 결과를 확인한다.

## 완료 기준

- [x] 단일 로컬 검증 명령이 proto 동기화, 전체 지원 언어, 크로스 언어 매트릭스를 검증할 수 있다.
- [x] 실패가 proto 동기화, 실패한 언어 쌍, 또는 동일 언어 package를 명확히 식별한다.
- [x] `README.md`의 로컬 명령이 프로젝트 test-matrix 스킬과 일치한다.
- [x] 외부 CI/CD 실행기 연결은 상위 `../oto` 프로젝트와의 실행 계약이 확정될 때 별도 작업으로 진행할 수 있다.

## 범위 제외

- 이 마일스톤에서 C# 또는 Swift 구현 작업을 추가하지 않는다.
- Jenkins 전용 pipeline 또는 설정 파일을 추가하지 않는다.
- 이 마일스톤에서 상위 `../oto` 프로젝트 파일을 수정하지 않는다.
- CI 편의를 위해 프로토콜 동작이나 package API를 변경하지 않는다.
- 모든 일반 개발 작업에서 전체 로드맵을 읽도록 요구하지 않는다.

## 작업 컨텍스트

- 관련 경로: `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-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/WSS 5개 방향이 모두 `PASS`.
- 확인 필요: CI/CD 연결은 현재 완전성 기준이 아니다. 상위 `../oto` 프로젝트의 표준 실행 방식이 확정되고 사용자가 명시적으로 요청하면 이 저장소의 로컬 검증 진입점을 외부 실행기로 연결한다.
