`plan_file`/`review_file`이 평범한 문자열이라 decode 직후 trim-empty가 곧 생략으로 취급되었고, 그 결과 loader의 빈 경로 거부가 설정값에 대해 도달할 수 없었다. 명시적으로 설정한 빈 값과 공백 값이 조용히 built-in default로 떨어지는 승인 경계 결함이므로 optional 표현으로 바꿔 생략만 fallback 신호가 되게 한다. 설정된 값은 파일 접근 전에 trim 후 빈 경로 거부까지 도달한다. pointer cell이 snapshot 사이에서 aliasing되지 않도록 Templates 전용 deep clone을 두고, 네 가지 명시 빈/공백 경계와 clone 독립성, 그리고 refresh가 경로나 본문을 노출하지 않는다는 기존 근거를 함께 회귀로 고정한다. Refs: agent-task/single_request_plan_review_templates/PLAN-cloud-G08.md Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| cmd/edge | ||
| internal | ||
| Dockerfile | ||
| README.md | ||
IOP Edge
IOP Edge owns Node registration, dispatch readiness, provider-pool routing, queue admission, leases, reconnect fencing, external inference surfaces, and Control Plane operations.
Provider boundary
- Public model ids resolve to provider adapter/target routes.
- Normalized inference uses ordered run events; OpenAI-compatible passthrough uses provider tunnel frames.
session_idis correlation only and never resumes local execution state.- Cancellation targets an active run id.
- Edge operations are
health.check,node.status, andprovider.command. - Provider commands are limited to capabilities, transport status, and the Ollama API tunnel.
- Caller metadata remains an ordinary bounded string map.
- Edge and Node use a shared tunnel-tolerant liveness profile: a 30-second heartbeat interval and a 45-second response wait. Long provider prefill or streamed-response backpressure does not prematurely fence a healthy connection; a real timeout still closes only the current generation and triggers Node reconnect.
Edge and Node preserve standard OpenAI/Anthropic-compatible inference, streaming, tools, usage, provider lifecycle, capacity, queues, and reconnect behavior. They do not own interactive host programs, persistent conversations, terminal emulation, arbitrary host commands, or local filesystem execution context.
Development
go test -count=1 ./apps/edge/...
go test -race -count=1 ./apps/edge/internal/service ./apps/edge/internal/openai
make test-e2e
Canonical contracts:
agent-contract/outer/openai-compatible-api.mdagent-contract/outer/anthropic-compatible-api.mdagent-contract/inner/edge-node-runtime-wire.mdagent-contract/inner/control-plane-edge-wire.md