docs(dev-corp): handoff 문서를 추가한다

This commit is contained in:
toki 2026-07-13 15:16:45 +09:00
parent 05a1026aa4
commit 5b468059ef

View file

@ -0,0 +1,114 @@
# dev-corp Control Plane Observability Handoff
last_updated_at: 2026-07-13
## Target
- Environment: dev-corp
- Scope: Control Plane compose group and observability ports
- First entry points:
- `agent-test/dev-corp/inventory.yaml`
- `agent-test/dev-corp/rules.md`
- `.env.dev-corp.example`
- `docker-compose.yml`
- Do not rely on `../.workspace-ops` on the dev-corp runner. The dev-corp setup environment is expected to have only the project checkout, so all required handoff and inventory details must be available inside this repo.
## Current State
- dev environment was deployed and verified in this session.
- dev-corp environment was not deployed in this session because the dev-corp runner was not reachable from the current workspace.
- dev-corp compose settings are documented only. In `agent-test/dev-corp/inventory.yaml`, `compose.setup_status` is `documented_only_current_session_not_deployed`.
- Existing dev-corp public Edge path is still the active user path:
- artifact/bootstrap: `iop.ai.kr:18085`
- OpenAI-compatible: `digitalplatform.iop.ai.kr:18086`
- native Edge TCP: `iop.ai.kr:18087`
- Edge metrics: `iop.ai.kr:19102`
- Do not expose PostgreSQL, Redis, Prometheus, Grafana, or Control Plane metrics to the public internet. Assume operator access through VPN or runner-local access.
## Intended dev-corp Compose Profile
- compose project: `iop-dev-corp-agent`
- compose network: `iop-dev-corp-agent-net`
- compose subnet: `10.89.2.0/24`
- env file: `.env.dev-corp.example`
- core services:
- `postgres`
- `redis`
- `control-plane`
- `web`
- `prometheus`
- `grafana`
Host ports:
- web: `13002`
- Control Plane HTTP: `18002`
- Client WS: `19004`
- CP-Edge wire: `19005`
- compose Edge-Node TCP: `19006`
- PostgreSQL: `15402`
- Redis: `16302`
- Edge metrics: `19102`
- Control Plane metrics: `19104`
- Prometheus: `19112`
- Grafana: `19122`
## Public Port Policy
Only open additional public ports if dev-corp Control Plane UI must be tested from an external browser:
- `13002/tcp`
- `18002/tcp`
- `19004/tcp`
Keep these internal/VPN-only:
- `15402/tcp`
- `16302/tcp`
- `19104/tcp`
- `19112/tcp`
- `19122/tcp`
`19005` and `19006` are not required for ordinary browser UI access. Open them only for explicit external Edge/Node connection validation.
## Next Steps
1. Restore access to the dev-corp runner (`fe@172.24.63.178`) or confirm the current replacement runner.
2. Sync `/Users/fe/agent-work/iop-dev-corp` to the intended ref.
3. Run `docker compose --env-file .env.dev-corp.example config` and confirm published ports match `agent-test/dev-corp/inventory.yaml`.
4. Check port occupancy before starting services.
5. Start the core group only:
```bash
docker compose --env-file .env.dev-corp.example up -d postgres redis control-plane web prometheus grafana
```
6. Do not start compose `edge` unless the validation explicitly requires it.
7. Validate:
- `curl -fsS http://127.0.0.1:18002/healthz`
- `curl -fsS http://127.0.0.1:18002/readyz`
- WebSocket upgrade on `ws://<host>:19004/client` if UI is public.
- Prometheus readiness on runner-local `127.0.0.1:19112`.
- Grafana health on runner-local `127.0.0.1:19122/api/health`.
## Open Decision
The generic Prometheus compose config scrapes `control-plane:9093` and compose `edge:9092`. If dev-corp keeps using the native public Edge instead of compose Edge, decide whether to add a dev-corp-specific Prometheus config that scrapes the native Edge metrics endpoint via a runner-reachable address.
## Evidence From This Session
- dev Control Plane/UI stack was deployed with `postgres`, `redis`, `control-plane`, `web`, `prometheus`, and `grafana`.
- dev external checks passed for:
- `http://toki-labs.com:13001`
- `http://toki-labs.com:18001/healthz`
- `ws://toki-labs.com:19001/client`
- dev Prometheus targets were `up` for:
- `control-plane:9093`
- `host.docker.internal:19101`
- `prometheus:9090`
- dev-corp public checks showed existing Edge paths open (`18085`, `18086`, `18087`, `19102`) and Control Plane UI path closed (`13002`, `18002`, `19004`) before any dev-corp compose deployment.
## Notes
- Do not record API keys, tokens, DB passwords, or private credentials in tracked docs.
- `source.remote_runner.setup_status` in `inventory.yaml` refers to the existing source/build/provider runner context. The compose-specific deployment status is tracked separately under `compose.setup_status`.