# Complete - m-workspace-port-env-standardization/01_compose_env_defaults

## 완료 일시

2026-06-07

## 요약

`.env.example`와 `docker-compose.yml`의 compose host publish 기본값을 workspace slot plan에 맞춰 정렬했고, 첫 번째 리뷰 루프에서 PASS로 종결했다.

## 루프 이력

| Plan | Review | Verdict | 메모 |
|------|--------|---------|------|
| `plan_local_G04_0.log` | `code_review_local_G04_0.log` | PASS | 두 계획 항목 모두 구현됨. Docker 미설치로 빠진 render 검증은 code-review에서 standalone Compose로 보강 확인했다. |

## 구현/정리 내용

- `.env.example`의 Control Plane HTTP, Client web, Postgres, Redis host publish 기본값을 `18000`, `13000`, `15400`, `16300`으로 갱신했다.
- `.env.example`에 compose에서 사용하는 `IOP_CONTROL_PLANE_EDGE_WIRE_PORT=19081`, `IOP_EDGE_NODE_PORT=19090` 기본값을 추가했다.
- `docker-compose.yml`의 Postgres, Redis, Control Plane HTTP host publish default와 web build arg HTTP URL default를 같은 slot plan 값으로 정렬했다.
- container-internal DB/Redis/healthcheck/listen target 포트는 기존 내부 계약대로 유지했다.

## 최종 검증

- `rg --sort path 'IOP_WEB_PORT=3000|IOP_POSTGRES_PORT=5432|IOP_REDIS_PORT=6379|IOP_CONTROL_PLANE_HTTP_PORT=9080' .env.example` - PASS; 출력 없음, exit=1.
- `rg --sort path ':-5432|:-6379|:-9080|localhost:9080' docker-compose.yml .env.example` - PASS; 출력 없음, exit=1.
- `IOP_EDGE_NODE_TOKEN=iop_review_dummy /tmp/iop-docker-compose --env-file .env.example config >/tmp/iop-compose-config.out` - PASS; standalone Docker Compose v2.27.1로 daemon 없이 render 확인.
- `rg --sort path '18000|13000|15400|16300|19080|19081|19090' /tmp/iop-compose-config.out` - PASS; 새 host publish 값과 wire 슬롯이 config 출력에 포함됨.
- `rg -n --sort path -C 2 'published: "18000"|published: "15400"|published: "16300"|published: "13000"|published: "19090"|target: 9080|target: 5432|target: 6379|target: 3000|target: 9090' /tmp/iop-compose-config.out` - PASS; host publish 좌측은 표준 슬롯, target은 container 내부 포트 유지.

## 잔여 Nit

- 없음

## 후속 작업

- 없음
