`plan_file: null`과 `review_file: ~`은 YAML에 실제로 존재하는 키인데 mapstructure가 present nil을 생략과 같은 nil pointer로 접어버려, 승인 경계가 빈 문자열과 공백만 거부하고 null 형태는 조용히 built-in default로 떨어뜨렸다. Viper가 돌려주는 raw preset 구조에는 두 키가 nil 값으로 남아 있으므로, strict decode 전에 그 presence를 검사해 필드 경로와 함께 거부하고 실제로 없는 키만 fallback 신호로 남긴다. 두 필드와 두 가지 YAML null 표기를 모두 회귀로 고정하고, 기존 빈/공백, 생략, 상대 경로, clone 독립성, refresh redaction 근거는 그대로 유지한다. Refs: agent-task/single_request_plan_review_templates/PLAN-cloud-G08.md Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> |
||
|---|---|---|
| .claude | ||
| agent-client | ||
| agent-contract | ||
| agent-ops | ||
| agent-roadmap | ||
| agent-spec | ||
| agent-task | ||
| agent-test | ||
| agent-ui | ||
| apps | ||
| configs | ||
| docs | ||
| packages | ||
| proto | ||
| scripts | ||
| .aiexclude | ||
| .clineignore | ||
| .clinerules | ||
| .codex | ||
| .cursorignore | ||
| .cursorrules | ||
| .env.dev-corp.example | ||
| .env.dev.example | ||
| .env.example | ||
| .geminiignore | ||
| .gitignore | ||
| AGENTS.md | ||
| CLAUDE.md | ||
| docker-compose.yml | ||
| GEMINI.md | ||
| go.mod | ||
| go.sum | ||
| go.work | ||
| go.work.sum | ||
| HANDOFF.md | ||
| Makefile | ||
| opencode.json | ||
| README.md | ||
IOP
IOP is a provider and device execution platform. It exposes OpenAI- and Anthropic-compatible inference APIs, routes work through Edge provider pools, executes against Node-owned adapters, and presents fleet operations through Control Plane and the Flutter Client.
Architecture
Client -> Control Plane -> Edge -> Node -> Provider
| |
| +-- normalized inference and provider tunnels
+-- model routing, queues, leases, API compatibility
- Edge owns model routing, provider-pool admission, leases, external APIs, Node readiness, and reconnect fencing.
- Node owns provider adapter construction and local execution.
- Control Plane owns connected Edge views and operation relay, not Edge runtime state.
- Client consumes Control Plane fleet, Node, provider, and operation views.
packages/go/executioncontains transport-neutral provider primitives.
Internal provider selection uses adapter + target. session_id is opaque correlation only, and cancellation targets a non-empty run_id. Provider commands are limited to capabilities, transport status, and the Ollama API tunnel.
IOP does not own interactive host programs, persistent conversations, terminal emulation, arbitrary host command execution, or local filesystem execution context.
Development
make proto
make proto-dart
go test -count=1 ./...
make client-test
make test-control-plane-edge-wire
make test-e2e
Start with agent-contract/index.md for protocol and runtime contracts, and agent-spec/index.md for living implementation summaries.
Operator and client setup guides: