# Complete - m-provider-resource-admission-ownership-alignment/14+10_offline_provider_tuple

## 완료 일시

2026-07-21

## 요약

2개 리뷰 루프에서 offline provider tuple의 reconnect 회귀를 실제 generation-aware lease lifecycle로 보정했고, 독립 재검증 후 최종 PASS했다.

## 루프 이력

| Plan | Review | Verdict | 메모 |
|------|--------|---------|------|
| `plan_local_G06_0.log` | `code_review_local_G06_0.log` | FAIL | 수동 counter 주입이 disconnect settlement와 신규 admission을 우회해 authoritative reconnect 회귀 보강이 필요했다. |
| `plan_local_G04_1.log` | `code_review_local_G05_1.log` | PASS | first-generation lease → exact-generation disconnect settlement → offline zero → higher-generation reconnect → new admission/release를 검증했다. |

## 구현/정리 내용

- `TestProviderSnapshotReconnectRestoresCapacityAndAdmission`이 실제 provider-pool candidate 해석과 long-context lease admission/tracking을 사용하도록 교체됐다.
- 현재 registry owner를 제거한 뒤 보존한 exact connection generation으로 `Service.HandleNodeDisconnect`를 호출해 기존 lease 정산, orphan fence, 일반·long counter 0을 검증한다.
- 동일 Node/provider identity의 higher generation reconnect에서 configured capacity만 먼저 복구되고, 신규 generation lease 하나만 counter에 반영된 뒤 release로 다시 0에 수렴함을 검증한다.
- 보정된 회귀가 기존 production 경로에서 통과해 조건부 대상이던 `model_queue_snapshot.go`는 추가 수정하지 않았다.

## 최종 검증

- `gofmt -d apps/edge/internal/service/status_provider_test.go apps/edge/internal/service/model_queue_snapshot.go` - PASS; 출력 없음.
- `git diff --check -- apps/edge/internal/service/status_provider_test.go apps/edge/internal/service/model_queue_snapshot.go` - PASS; 출력 없음.
- `go test -count=1 -v ./apps/edge/internal/service -run '^TestProviderSnapshotReconnectRestoresCapacityAndAdmission$'` - PASS; first generation `1/1`, offline `0/0`, reconnect pre-admission `0/0`, new generation admission `1/1`, release `0/0`을 재현했다.
- `go test -count=1 ./apps/edge/internal/service -run 'Snapshot|Offline|Reconnect'` - PASS; `ok iop/apps/edge/internal/service`.
- `go test -race -count=1 ./apps/edge/internal/service` - PASS; `ok iop/apps/edge/internal/service`, race warning 0.
- `go test -race -count=1 ./apps/edge/...` - PASS; Edge 14개 package 모두 통과, race warning 0.
- `bash scripts/e2e-long-context-admission-smoke.sh --preflight` - BLOCKED(rc=3); provider `/models`와 Control Plane status endpoint가 모두 unreachable하여 scenario는 시작되지 않았다. 해제 조건은 두 endpoint의 동시 reachability이며, 이 live evidence는 본 child의 SDD S14 deterministic test/race가 아닌 별도 S11 `capacity-smoke` 범위다.

## 잔여 Nit

- 없음

## 후속 작업

- 없음
