# Complete - m-provider-resource-admission-ownership-alignment/01_provider_resource_state

## 완료 일시

2026-07-19

## 요약

provider 전역 일반·long admission state와 snapshot 정합화 및 orphan stale candidate 회귀를 4회 리뷰 루프로 보완해 최종 PASS했다.

## 루프 이력

| Plan | Review | Verdict | 메모 |
|------|--------|---------|------|
| `plan_cloud_G06_0.log` | `code_review_cloud_G06_0.log` | FAIL | refresh 뒤 long release, authoritative snapshot, 동시 경쟁 테스트, config 검증 evidence를 보완하도록 라우팅했다. |
| `plan_cloud_G06_1.log` | `code_review_cloud_G06_1.log` | FAIL | 제거된 provider를 stale queued candidate가 재활성화하는 경로를 차단하도록 라우팅했다. |
| `plan_local_G05_2.log` | `code_review_local_G05_2.log` | FAIL | orphan 회귀가 release-triggered queue pump를 실제로 실행하도록 arrange 순서를 보완하도록 라우팅했다. |
| `plan_local_G03_3.log` | `code_review_local_G03_3.log` | PASS | release 전에 두 번째 요청의 실제 queue 진입을 확인하고 fresh race·config·Edge 검증을 통과했다. |

## 구현/정리 내용

- `(node_id, provider_id)`별 provider resource state가 서로 다른 model group의 일반 capacity와 long-context slot을 원자적으로 공유하도록 했다.
- provider snapshot의 일반·long in-flight를 admission과 같은 resource state에서 읽고, config refresh가 기존 점유를 보존한 채 새 capacity를 반영하도록 했다.
- long slot 반환을 예약 당시 상태에 맞춰 처리하고 idle orphan resource를 마지막 release에서 정리하도록 했다.
- 제거되거나 orphan인 provider를 stale queued candidate가 다시 admission하거나 활성 resource로 재생성하지 못하게 하고 실제 release-triggered queue pump 회귀를 추가했다.

## 최종 검증

- `git diff --check` - PASS; 출력 없음.
- `gofmt -d apps/edge/internal/service/model_queue_types.go apps/edge/internal/service/model_queue_admission.go apps/edge/internal/service/model_queue_release.go apps/edge/internal/service/model_queue_admission_test.go` - PASS; 출력 없음.
- `GOCACHE=/tmp/iop-go-cache go test -race -count=10 ./apps/edge/internal/service -run '^TestProvider(Resource(RemovedProviderDoesNotReadmitQueuedCandidate|LongReleaseAfterCapacityDisabled|LongReservationUsesEffectiveRefreshState|OrphanRemovedAfterLastRelease|CapacitySharedAcrossModelGroups)|LongCapacitySharedAcrossModelGroups|SnapshotReadsAdmissionResourceState)$'` - PASS; `ok iop/apps/edge/internal/service`.
- `GOCACHE=/tmp/iop-go-cache go test -count=1 ./packages/go/config -run '^TestLoadEdge(ProviderLongContextCapacityValidation|RejectsProviderLongContextBudgetBelowModelWindow)$'` - PASS; `ok iop/packages/go/config`.
- `GOCACHE=/tmp/iop-go-cache go test -count=1 ./apps/edge/...` - PASS; 모든 Edge 패키지 성공.

## Roadmap Completion

- Milestone: `agent-roadmap/phase/operational-observability-provider-management/milestones/provider-resource-admission-ownership-alignment.md`
- Milestone link: [Milestone 문서](../../../../../../agent-roadmap/phase/operational-observability-provider-management/milestones/provider-resource-admission-ownership-alignment.md)
- Completed task ids:
  - `provider-state`: PASS; evidence=`agent-task/archive/2026/07/m-provider-resource-admission-ownership-alignment/01_provider_resource_state/plan_cloud_G06_0.log`, `agent-task/archive/2026/07/m-provider-resource-admission-ownership-alignment/01_provider_resource_state/code_review_local_G03_3.log`; verification=`go test -race -count=10` provider resource suite와 `go test -count=1 ./apps/edge/...`.
  - `long-state`: PASS; evidence=`agent-task/archive/2026/07/m-provider-resource-admission-ownership-alignment/01_provider_resource_state/plan_cloud_G06_0.log`, `agent-task/archive/2026/07/m-provider-resource-admission-ownership-alignment/01_provider_resource_state/code_review_local_G03_3.log`; verification=`go test -race -count=10` provider long-state suite와 정확한 `packages/go/config` long-context validation 테스트.
- Not completed task ids: 없음

## 잔여 Nit

- 없음

## 후속 작업

- 없음
