<!-- task=m-iop-hot-path-one-shot-execution/03+01_preset_model_config plan=1 tag=API milestone-task=preset-model -->

# Virtual Preset Model Configuration Admission

## For the Implementing Agent

Start only after predecessor 01 has `complete.log`. Implement this plan, run every command, and fill `CODE_REVIEW-cloud-G03.md` with actual notes/output. Keep active files for official review; finalization is review-agent-only.

## Background

A public model currently always means a provider pool group. This child lets a model reference exactly one execution preset or provider mapping while preserving existing provider-only configuration behavior.

## Dependencies and Execution Order

- Runtime predecessor: `01_preset_schema`. Preset generation publication in child 02 is independent of this config-admission child.

## Analysis

### Files Read

- `agent-roadmap/phase/knowledge-tool-optimization-extension/milestones/iop-hot-path-one-shot-execution.md`
- `agent-roadmap/sdd/knowledge-tool-optimization-extension/iop-hot-path-one-shot-execution/SDD.md`
- `packages/go/config/provider_types.go`
- `packages/go/config/load.go`
- `packages/go/config/provider_catalog_validation_config_test.go`

### SDD Criteria

SDD scenario S01 requires provider-versus-preset one-of admission and stable compatibility. Principal authorization and endpoint listing are reserved for child 04.

### Verification Context

Fresh repository-native config tests are sufficient; no external credential or provider is needed. Confidence: high.

### Test Coverage Gaps

Existing tests do not cover preset-only model entries, dangling preset ids, or both/neither one-of failures.

### Symbol References

`ModelCatalogEntry` gains a compatible field; no symbol is renamed or removed.

### Split Judgment

This is the first refined child of the former preset-model pair. Config admission is independently implementable and testable; child 04 consumes its accepted model shape.

### Scope Rationale

Exclude principal projection, model listing, endpoint admission, response echo, selector execution, coordinator state, and stage dispatch.

### Final Routing

`evaluation_mode=isolated-reassessment`; finalizer pair. Build closures are true; scores `(1,0,1,1,0)` yield G03/local-fit, matched risk `boundary_contract` (1), no large context/rework/evidence failure/capability gap; `PLAN-local-G03.md`. Review uses the same scores and official cloud G03 in `CODE_REVIEW-cloud-G03.md`.

## Implementation Checklist

- [ ] Add the model execution-preset reference and enforce provider-map versus preset one-of validation.
- [ ] Resolve preset ids after normalization while preserving provider-only validation behavior.
- [ ] Run dependency, focused, race, vet, and diff verification exactly as written.
- [ ] Fill implementation-owned sections in CODE_REVIEW-*-G??.md with actual notes and output.

### [API-1] Add model-to-preset one-of validation

#### Problem

`ModelCatalogEntry` only accepts a non-empty provider map and `LoadEdge` validates only provider references.

#### Solution

Add `ExecutionPreset string` and enforce exactly one of a non-empty provider map or non-empty preset id. Resolve preset ids against the predecessor catalog after normalization; provider-only token/budget checks must not run against virtual entries.

#### Modified Files and Checklist

- [ ] `packages/go/config/provider_types.go` — add the field and one-of validation.
- [ ] `packages/go/config/load.go` — resolve preset references and skip provider-only checks for virtual entries.
- [ ] `packages/go/config/model_execution_preset_config_test.go` — cover one-of, dangling ids, duplicates, and compatibility.

#### Test Strategy

Write `TestLoadEdgeModelExecutionPresetOneOf` with provider-only, preset-only, neither, both, dangling, and duplicate cases. Assert stable error paths and unchanged provider fixtures.

#### Verification

Run `go test -count=1 ./packages/go/config`; expect PASS.

## Modified Files Summary

| File | Items |
|------|-------|
| `packages/go/config/provider_types.go` | API-1 |
| `packages/go/config/load.go` | API-1 |
| `packages/go/config/model_execution_preset_config_test.go` | API-1 |
| `agent-task/m-iop-hot-path-one-shot-execution/03+01_preset_model_config/CODE_REVIEW-cloud-G03.md` | API-1 |

## Final Verification

```bash
test -f agent-task/m-iop-hot-path-one-shot-execution/01_preset_schema/complete.log
go test -count=1 ./packages/go/config
go test -race -count=1 ./packages/go/config
go vet ./packages/go/config
git diff --check
```

Expected: all commands exit 0; exactly one model backing is accepted and existing provider-only fixtures remain unchanged.
