<!-- task=m-iop-hot-path-one-shot-execution/04+02,03_preset_model_authorization plan=1 tag=REVIEW_API milestone-task=preset-model -->

# Code Review Reference - REVIEW_API

> **[IMPLEMENTING AGENT — READ FIRST] Filling in this file is the mandatory final step of implementation.**
> The task is NOT complete until every implementation-owned section below is filled in.
> Complete the `Implementation Checklist`; the final checklist item is mandatory before saving.
> Fill implementation-owned sections, then stop with active files in place and report ready for review.
> If implementation is blocked, record the exact blocker, attempted commands/output, and resume condition only in implementation-owned evidence fields.
> Do not ask the user directly, present choices, call user-input tools, create control-plane stop files, or classify the next state.
> Finalization (`Code Review Result`, log rename, `complete.log`, archive moves, `Review-Only Checklist`) is review-agent-only, even after compaction/resume.
> Follow the ownership table at the bottom of this file for which sections you own.

## Overview

date=2026-08-02
task=m-iop-hot-path-one-shot-execution/04+02,03_preset_model_authorization, plan=1, tag=REVIEW_API

## Archive Evidence Snapshot

- Prior task evidence: `agent-task/m-iop-hot-path-one-shot-execution/04+02,03_preset_model_authorization/plan_local_G07_0.log` and `agent-task/m-iop-hot-path-one-shot-execution/04+02,03_preset_model_authorization/code_review_cloud_G07_0.log`.
- Verdict: FAIL. Findings: 2 Required, 0 Suggested, 0 Nit.
- Required behavior: resolve each preset selector/stage reference through exactly one principal route whose catalog binding has that canonical model group; preserve the selector's projected `RouteID` for credential binding and use `ExternalModelID` only for public identity.
- Required evidence: replace the mislabeled missing-route fixtures with genuine multiple-binding and virtual-id/route-alias collision cases; assert credential binding and Chat/Anthropic response model echo with public route ids independent from canonical model ids.
- Affected files: `apps/edge/internal/openai/principal_routes.go` and `apps/edge/internal/openai/principal_routes_test.go`.
- Fresh review evidence: the focused existing suite, race suite, vet, gofmt diff, and `git diff --check` passed; a temporary reviewer regression using arbitrary public route ids reproduced `route not found` and was removed after capture.
- Roadmap carryover: milestone task `preset-model`, approved SDD scenario S01. Predecessors are satisfied by `agent-task/archive/2026/08/m-iop-hot-path-one-shot-execution/02+01_preset_generation/complete.log` and `agent-task/archive/2026/08/m-iop-hot-path-one-shot-execution/03+01_preset_model_config/complete.log`.

## For the Review Agent

> **[REVIEW AGENT ONLY]** The finalization steps below are review-agent only. Implementing agents must not execute this section.

Compare implementation of each item against source files and verify that output in `Verification Results` matches code.
Review completion means the following steps are finished:

1. Append verdict and `review_rework_count` / `evidence_integrity_failure` routing signals.
2. Archive `CODE_REVIEW-cloud-G07.md` → `code_review_cloud_G07_1.log` and `PLAN-cloud-G07.md` → `plan_cloud_G07_1.log`.
3. If PASS, write `complete.log` and move active task directory to `agent-task/archive/YYYY/MM/m-iop-hot-path-one-shot-execution/04+02,03_preset_model_authorization/`. If WARN/FAIL, fully write the next filesystem state required by the code-review skill.
4. If PASS and task group is `m-<milestone-slug>`, preserve the first-line `milestone-task` metadata in `complete.log` and report it for the runtime aggregation event. Roadmap state evaluation belongs to `sync-milestone-workstate`.
5. Check applicable `Review-Only Checklist` items at the final `.log` location before reporting.

---

## Implementation Item Completion

| Item | Status |
|------|---------|
| REVIEW_API-1 Repair canonical preset binding and selector credential identity | [x] |
| REVIEW_API-2 Restore S01 collision and public response evidence | [x] |

## Implementation Checklist

- [x] Repair managed preset reference resolution to require exactly one principal route per canonical catalog binding and preserve the selector's projected route identity for credentials.
- [x] Replace misleading fixtures and add deterministic zero/one/multiple, collision, credential-binding, and Chat/Anthropic public model-echo coverage.
- [x] Run the focused, race, vet, format, and diff verification exactly as written.
- [x] Fill implementation-owned sections in CODE_REVIEW-*-G??.md with actual implementation notes and verification output.

## Review-Only Checklist

> **[REVIEW AGENT ONLY]** This checklist is used only by the review agent.
> Implementing agents must not modify or check this section.

- [x] Append one verdict of `PASS`, `WARN`, or `FAIL` and verified `review_rework_count`, `evidence_integrity_failure` to `Code Review Result`.
- [x] Verify that verdict, `Dimension Assessment`, and Required/Suggested/Nit classifications match.
- [x] Archive active `CODE_REVIEW-*-G??.md` to `code_review_cloud_G07_1.log`.
- [x] Archive active `PLAN-*-G??.md` to `plan_cloud_G07_1.log`.
- [x] Verify that the Agent-Ops managed block in `.gitignore` unignores `agent-task/**/*.md` and `agent-task/**/*.log` and ignores `agent-roadmap/current.md`.
- [ ] If PASS, write `complete.log` based on `agent-ops/skills/common/code-review/templates/complete-log-template.md` and leave no active `.md` files.
- [ ] If PASS, move active task directory `agent-task/m-iop-hot-path-one-shot-execution/04+02,03_preset_model_authorization/` to `agent-task/archive/YYYY/MM/m-iop-hot-path-one-shot-execution/04+02,03_preset_model_authorization/` and update this checklist at the final archive path.
- [ ] If PASS and task group is `m-<milestone-slug>`, preserve and report `milestone-task` metadata for runtime aggregation, without modifying roadmap or directly calling `update-roadmap`.
- [ ] If PASS for split work, remove empty active parent `agent-task/m-iop-hot-path-one-shot-execution/` or verify it was kept due to remaining siblings/files.
- [x] If WARN/FAIL, write the next filesystem state matching code-review verdict and do not write `complete.log`.

## Deviations from Plan

None.

## Key Design Decisions

- Each canonical preset reference is authorized only by exactly one projected route whose resolved managed catalog binding has the same model-group key; public route IDs and aliases are never treated as canonical references.
- The preset dispatch copies the selector dispatch and changes only public preset fields, leaving its projected route ID, slot, profile, revisions, principal, and candidate predicate as the credential authority.
- A virtual-model/route-alias collision remains a valid virtual preset when the canonical bindings are complete. The catalog virtual model takes precedence for preset admission, while the selector route remains the credential identity.
- The public-handler regression uses the OpenAI Chat passthrough and Anthropic Messages-to-Chat bridge, both of which return the requested virtual model while dispatching through the canonical selector binding.

## Reviewer Checkpoints

- Every selector and stage reference is authorized by exactly one successful principal-route catalog binding whose `ModelGroupKey` equals the canonical reference.
- The top-level managed preset credential binding retains the selector's real projected route id, revisions, slot, profile, and principal; the virtual id is confined to public identity.
- Tests contain genuine zero, one, multiple-binding, and virtual-id/route-alias collision fixtures rather than comments that rename missing-route cases.
- Both Chat Completions and Anthropic Messages responses echo the requested virtual model id while managed provider selection uses the canonical selector binding.
- Ordinary managed and legacy provider routes remain unchanged.

## Verification Results

### REVIEW_API-1 focused verification

```bash
go test -count=1 ./apps/edge/internal/openai -run 'Test(VirtualPreset|ManagedRouteSelectsOnlyBoundSlot)'
```

```text
ok  \tiop/apps/edge/internal/openai\t0.069s
```

### REVIEW_API-2 focused verification

```bash
go test -count=1 ./apps/edge/internal/openai -run 'Test(VirtualPreset|ManagedSurfacesUseDistinctBinding)'
```

```text
ok  \tiop/apps/edge/internal/openai\t0.047s
```

### Final verification

```bash
test -f agent-task/archive/2026/08/m-iop-hot-path-one-shot-execution/02+01_preset_generation/complete.log
test -f agent-task/archive/2026/08/m-iop-hot-path-one-shot-execution/03+01_preset_model_config/complete.log
go test -count=1 ./apps/edge/internal/openai -run 'Test(VirtualPreset|ManagedRouteSelectsOnlyBoundSlot|ManagedSurfacesUseDistinctBinding)'
go test -race -count=1 ./packages/go/streamgate ./packages/go/config ./apps/edge/internal/openai ./apps/edge/internal/service
go vet ./apps/edge/internal/openai
gofmt -d apps/edge/internal/openai/principal_routes.go apps/edge/internal/openai/principal_routes_test.go
git diff --check
```

```text
$ test -f agent-task/archive/2026/08/m-iop-hot-path-one-shot-execution/02+01_preset_generation/complete.log
$ test -f agent-task/archive/2026/08/m-iop-hot-path-one-shot-execution/03+01_preset_model_config/complete.log
$ go test -count=1 ./apps/edge/internal/openai -run 'Test(VirtualPreset|ManagedRouteSelectsOnlyBoundSlot|ManagedSurfacesUseDistinctBinding)'
ok  \tiop/apps/edge/internal/openai\t0.086s
$ go test -race -count=1 ./packages/go/streamgate ./packages/go/config ./apps/edge/internal/openai ./apps/edge/internal/service
ok  \tiop/packages/go/streamgate\t2.050s
ok  \tiop/packages/go/config\t1.516s
ok  \tiop/apps/edge/internal/openai\t8.820s
ok  \tiop/apps/edge/internal/service\t7.004s
$ go vet ./apps/edge/internal/openai
(no output; exit 0)
$ gofmt -d apps/edge/internal/openai/principal_routes.go apps/edge/internal/openai/principal_routes_test.go
(no output; exit 0)
$ git diff --check
(no output; exit 0)
```

---

> **[IMPLEMENTING AGENT — BEFORE SAVING] Have you filled in every implementation-owned section?**
> If anything is blank, go back and fill it in before saving this file.
> Leave review-agent-only sections unchanged.

## Section Ownership

| Section | Owner | Note |
|---------|-------|------|
| Header comment, Overview, Review Agent Instructions | Fixed at stub creation | Implementing agent must not modify or execute these (archive, complete.log, and task-directory archive move are review-agent only) |
| Archive Evidence Snapshot | Fixed at stub creation from plan when present | Implementing agent uses it as default prior-loop context; read only the specific archive files cited there when more detail is required |
| Implementation Item Completion (item names) | Fixed at stub creation | Implementing agent checks `[ ]` → `[x]` only |
| Implementation Checklist (item text/order) | Fixed at stub creation from plan | Implementing agent checks `[ ]` → `[x]` only |
| Review-Only Checklist | Review agent only | Implementing agent must not modify or check this section |
| Deviations from Plan, Key Design Decisions | Implementing agent | Replace placeholder text with actual content |
| Reviewer Checkpoints | Fixed at stub creation | Pre-filled from plan |
| Verification Results (section headings + commands) | Fixed at stub creation | Implementing agent fills in command output only; command changes require a `Deviations from Plan` entry |
| Code Review Result | Review agent appends | Not included in stub |

## Code Review Result

- Overall Verdict: FAIL
- Dimension Assessment:
  - Correctness: Fail
  - Completeness: Fail
  - Test Coverage: Fail
  - API Contract: Fail
  - Code Quality: Pass
  - Implementation Deviation: Fail
  - Verification Trust: Fail
  - Spec Conformance: Fail
- Findings:
  - Required — `apps/edge/internal/openai/anthropic_native.go:66`: virtual-preset public identity is preserved only by the new Anthropic Chat-bridge fixture. The native `anthropic_messages` path writes provider BODY frames unchanged, so a managed request for `virtual-public-model` returns the internal `served-selector-model`; a focused reviewer reproducer failed with `response model="served-selector-model", want public virtual model "virtual-public-model"` and was removed after capture. SDD S01 and the plan require the external virtual model identity across Anthropic Messages responses. Pass the preset public model identity into the native relay, rewrite successful non-stream JSON and fragmented SSE `message_start.message.model` without changing ordinary non-preset/error bytes or terminal ordering, and add native non-stream plus streaming regressions alongside the existing bridge test.
  - Required — `agent-contract/outer/openai-compatible-api.md:54` and `agent-contract/outer/anthropic-compatible-api.md:51`: both active outer contracts still state that managed discovery lists only projected route IDs and that the public model must be a projected route ID or alias. The implementation now lists and admits a catalog virtual preset ID authorized through several projected stage routes, so the published API contracts contradict the SDD and production behavior. Update both managed-auth/routing sections to describe unique selector/all-stage authorization, projected-route credential identity, virtual preset discovery/admission, and external virtual response model identity, while retaining fail-closed behavior for ordinary managed routes.
- Routing Signals:
  - `review_rework_count=2`
  - `evidence_integrity_failure=true`
- Next Step: Invoke the plan skill in `prepare-follow-up` mode with the raw findings and fresh verification evidence, then archive this pair and materialize the freshly routed follow-up pair.
