원격 macOS에서 빈 prompt 인자가 oneshot CLI에 전달되어 cwd 테스트가 실패했고, app-server cwd 검증은 고정 sleep 레이스에 의존했다. dev 배포가 같은 기준으로 반복되도록 inventory와 capacity smoke 절차도 함께 정리한다.
6.7 KiB
6.7 KiB
| test_env | test_profile | domain | verification_type | last_rule_updated_at |
|---|---|---|---|---|
| dev | edge-smoke | edge | smoke | 2026-06-24 |
edge-smoke dev 테스트
읽기 조건
apps/edge/**변경 또는 edge registry, transport, service, console, OpenAI-compatible/A2A 입력 표면 dev 검증 판단이 필요한 경우
적용 범위
apps/edge/cmd/edge/**apps/edge/internal/bootstrap/**apps/edge/internal/transport/**apps/edge/internal/service/**apps/edge/internal/events/**apps/edge/internal/input/**apps/edge/internal/openai/**apps/edge/internal/opsconsole/**apps/edge/internal/node/**
분류
- domain: edge
- verification_type: smoke
- scope: edge 실행 그룹, node registry, input surface baseline
환경
- host: local checkout. dev runtime, external CLI, shared port evidence가 필요하면 원격 runner를 사용한다.
- port: compose Edge-Node TCP transport
19003; dev artifact/bootstrap HTTP 후보18082, dev Edge OpenAI-compatible HTTP 후보18083, dev Edge metrics 후보19101. - runtime: Go
1.24 - package manager: Go modules / Makefile
- docker: unit/smoke quick check는 Docker를 요구하지 않는다. compose dev 검증은
docker compose --env-file .env.dev.example ...로 수행한다. - external service: dev artifact/base URL 후보
http://toki-labs.com:18082, dev Edge runtime 주소 후보toki-labs.com:19003 - model endpoint: dev OpenAI-compatible base URL 후보
http://toki-labs.com:18083/v1 - credential: token/secret 원문은 문서에 기록하지 않는다.
dev-runtime provider pool 인벤토리
dev-runtime provider pool과 3-node 연결 상태를 점검할 때는 agent-test/dev/inventory.yaml의 machine-readable 값을 우선하고, 원격 runner ssh toki@toki-labs.com의 /Users/toki/agent-work/iop-dev checkout을 기준으로 한다.
- Edge config:
build/dev-runtime/edge.yaml - Edge id:
edge-toki-labs-dev - Control Plane HTTP:
http://127.0.0.1:18001 - bootstrap HTTP:
http://toki-labs.com:18082 - Edge OpenAI-compatible base URL:
http://toki-labs.com:18083/v1 - Edge-Node TCP transport:
toki-labs.com:18084 - model alias:
qwen3.6:35b
노드 후보:
- mac CLI node:
mac-codex-node/mac-codex- SSH/user:
ssh toki@toki-labs.com - 목적:
cliadapter,codex app-server - workspace:
/Users/toki/agent-work/iop-workspace/nomadcode
- SSH/user:
- GX10 vLLM node:
gx10-vllm-node/gx10-vllm- SSH/user:
ssh toki@192.168.0.91 - provider endpoint:
http://192.168.0.91:8001/v1 - served model:
nvidia/Qwen3.6-35B-A3B-NVFP4 - capacity baseline:
4 - workspace:
/home/toki/iop-gx10-vllm
- SSH/user:
- OneXPlayer Lemonade node:
onexplayer-lemonade-node/onexplayer-lemonade- SSH/user:
ssh r0bin@192.168.0.59 - 접속 기준: 현재 작업 호스트에서 직접 SSH
- provider endpoint:
http://192.168.0.59:13305/v1 - served model:
Qwen3.6-35B-A3B-MTP-GGUF - capacity baseline:
3 - workspace:
C:/Users/r0bin/iop-field
- SSH/user:
OneXPlayer Lemonade Node는 원격 runner나 Edge host에서 다시 SSH하거나 proxy process로 띄우지 않는다. 현재 작업 호스트에서 OneXPlayer Windows host에 ssh r0bin@192.168.0.59로 직접 접속한 뒤 generated PowerShell bootstrap을 실행한다.
명령
- setup:
- lint:
- unit:
go test ./apps/edge/... - smoke:
./scripts/e2e-smoke.sh는 기본 포트 임시 설정을 쓰는 보조 smoke이므로 dev 포트 override 필요 여부를 먼저 확인한다. - e2e:
make test-e2e는 보조 smoke이며 full-cycle 실제 구동을 대체하지 않는다. - model: dev OpenAI-compatible profile을 띄운 경우
iop-edge smoke openai --base-url http://127.0.0.1:18083 - full-cycle: repo 내부 edge-node 진단,
iop-edge smoke openai, OpenAI-compatible 입력 표면 수동 검증
필수 검증
- 변경한 edge 패키지 또는
go test ./apps/edge/...를 실행한다. - registry, service, transport, console, HTTP/A2A 입력 표면을 바꾼 경우 edge-node 메시지 2회 왕복과 command 응답을 확인한다.
- OpenAI-compatible 경계를 바꾼 경우 dev
18083기준iop-edge smoke openai또는 동등한/healthz,/v1/models,/v1/responses확인으로 edge service와 node adapter 경로 수렴을 확인한다. - bootstrap/artifact 경계를 바꾼 경우 dev artifact/base URL 후보
18082가 local/test18080field baseline을 덮어쓰지 않는지 확인한다.
보조 검증
./scripts/e2e-smoke.sh는 edge-node 최소 생존 확인에 사용한다../scripts/e2e-openai-ollama.sh는 OpenAI-compatible Ollama 입력 표면 보조 확인에 사용한다.
판정 기준
- node 등록,
/nodes, console 메시지 전송, 기대 payload를 포함한[node-*-message]출력, 같은 run의 complete event가 확인된다. - node 로컬
[node-message]payload 라인 목록과 edge[node-*-message]payload 라인 목록이 run별로 내용/순서까지 동일해야 한다. - edge complete는 같은 run의 마지막
[node-*-message]이후에만 정상이다. - OpenAI-compatible smoke에서
/healthz,/v1/models,/v1/responses가 기대 상태로 응답한다. - dev-runtime capacity smoke는
/v1/responses와/v1/chat/completions각각에 provider capacity 총합 + 1개 동시 요청을 보내고, Control Plane status의provider_snapshots에서 총in_flight가 capacity 총합에 도달하며queued가 1 이상 잡히는지 확인한다. 현재gx10-vllm=4,onexplayer-lemonade=3이면 endpoint별 8개 동시 요청에서 총in_flight=7,queued>=1관측을 기준으로 한다. - capacity smoke 완료 후 대상 provider의
in_flight=0,queued=0회복을 확인한다. - Qwen 계열 provider-pool smoke는 thinking/reasoning 텍스트가 포함될 수 있다. 추론 출력 자체를 실패로 보지 말고 HTTP 성공, model alias, final marker 포함 여부, provider node log/run count 증가로 판정한다. 응답 전체가 특정 token과 정확히 같은지 비교하는 strict exact-match는 이 profile의 기본 판정으로 쓰지 않는다.
- bootstrap 사용자 명령은 완성된 URL과 positional token 하나만 포함한다.
기준 출력 예시
edge> /nodes
[edge] sent run_id=...
[node-*-message] IOP_EXPECTED_REPLY
[node-*-event] complete
차단 기준
- dev host 또는 Edge-Node TCP port 접근이 불가능하다.
- 외부 CLI profile 검증에 필요한 CLI 설치, 계정, provider 상태가 없다.
- dev artifact/model/metrics 포트가 기존 field baseline과 충돌한다.
보고 항목
- 실행한 명령:
- 성공한 검증:
- 실패/차단된 검증:
- 생략 사유:
- 남은 위험:
금지 사항
- secret, token, 개인 endpoint 원문은 tracked 파일에 기록하지 않는다.
- field baseline 포트(
18080,18081,19090,19092)를 dev 전용 포트로 재사용하지 않는다.