# 워크스페이스 포트/환경 표준화

## 목표

Proto Socket은 runtime service port를 소유하지 않는 라이브러리지만, cross-language/cross-runtime test runner에서 고정 local port 대역을 사용한다. 이 Milestone은 proto-socket의 fixed test port 대역을 workspace 포트 표준의 예외로 명확히 기록하고, remote Dart web/Chrome fallback 환경도 raw secret 없이 재현 가능한 기준으로 정리한다.

## 단계

안정화와 유지

## 상태

[완료]

## 구현 잠금

- 상태: 해제
- 결정 필요: 없음

## 범위

- runtime service/frontend/backend 포트 없음 상태를 명시
- cross-language/cross-runtime test runner의 fixed local port 대역을 workspace 표준 예외로 문서화
- remote Dart web/Chrome fallback runner와 WSS/SPKI wrapper 환경을 테스트 runner 예외로 정리
- 일반 예시 포트와 test matrix reserved 대역이 다른 프로젝트 host publish 포트와 충돌하지 않도록 기준 정리
- private SSH host, credential, token 값은 tracked 문서에 쓰지 않고 runner 책임 경계만 기록

## 기능

### Epic: [exception] Proto-socket port exception

Proto Socket의 테스트용 포트 사용을 제품 runtime 포트와 구분한다.

- [x] [no-runtime-port] proto-socket은 frontend/backend runtime service port를 소유하지 않는다는 기준을 README/test 문서에서 확인 가능하게 정리한다. (evidence: `README.md`의 `런타임 포트와 테스트 포트`, `agent-test/local/rules.md`의 공통 규칙)
- [x] [test-port-range] cross-language fixed local port 대역 `29090-29899`를 workspace 표준 예외로 문서화하고 충돌 방지 기준을 남긴다. (evidence: `agent-test/local/rules.md`, `agent-test/local/proto-socket-full-matrix.md`, `agent-test/local/proto-socket-performance-baseline.md`; `rg --sort path -o --no-filename "\b29[0-9]{3}\b" ...` 결과 min `29090`, max `29899`)
- [x] [example-ports] 예제/문서의 `9090`류 포트가 test matrix reserved 대역과 제품 host publish 대역을 오해하게 만들지 않는지 점검한다. (evidence: `README.md`의 `9090` 설명과 Dart/Go quick start 주석)
- [x] [remote-web-runner] Dart web/Chrome remote fallback, WSS/SPKI wrapper, SSH runner 경계는 raw secret 없이 테스트 환경 예외로 정리한다. (evidence: `agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_matrix.sh`가 ignored `agent-test/local/remote-web.env`를 먼저 읽는다. `agent-test/local/rules.md`, `agent-test/local/proto-socket-full-matrix.md`, `agent-test/local/dart-smoke.md`가 local 설정 책임과 SSH 인증 경계를 기록한다. `rg`로 tracked test docs의 raw remote host/path 제거 확인)

## 작업 동기화

- 2026-06-08 기준 활성 `agent-task/` 작업 파일은 없다.
- 기능 Task [no-runtime-port], [test-port-range], [example-ports], [remote-web-runner]는 작은 문서 작업으로 직접 처리했고, runner 기본값 변경 같은 동작 변경은 이번 범위에서 제외해 별도 plan을 만들지 않았다.
- `언어별 성능 병목 개선` Milestone은 `[완료]` 후 archive로 이동했으므로, 신규 작업의 기본 배치 대상은 아니다.

## 완료 리뷰

- 상태: 승인됨
- 요청일: 2026-06-08
- 완료 근거:
  - README와 local test docs가 proto-socket의 runtime service port 비소유 원칙과 test runner fixed port 대역 `29090-29899`를 설명한다.
  - README quick start의 `9090` 예시는 소비자 애플리케이션 샘플 포트로 표시했고, test matrix reserved 대역과 분리했다.
  - Dart.web remote fallback과 WSS/SPKI wrapper는 ignored local env 파일과 runner 설정 경계로 정리했고, tracked test docs에는 raw credential/token/private endpoint를 남기지 않았다.
- 리뷰 필요:
  - [x] 사용자가 완료 결과를 확인했다
  - [x] archive 이동을 승인했다
- 리뷰 코멘트: 2026-06-08 사용자 요청으로 `[완료]` 전환 및 archive 이동을 진행했다.

## 범위 제외

- wire format, proto schema, nonce 의미 변경
- performance hotspot 개선 작업
- package registry release 작업
- C# 또는 Swift 포팅
- private SSH credential, host token, certificate secret 기록

## 작업 컨텍스트

- 관련 경로: `agent-test/local/`, `agent-ops/skills/project/run-proto-socket-test-matrix/`, `dart/`, `go/`, `kotlin/`, `python/`, `typescript/`, `examples/`
- 표준선(선택): `29090-29899`는 workspace frontend/backend/backend-artifact 대역이 아니라 proto-socket test runner 전용 reserved range다.
- 선행 작업: workspace 공통 포트 inventory 정리
- 후속 작업: test docs와 runner script의 port drift 방지
- 확인 필요: 없음
