# Complete - m-stream-evidence-gate-core/21+14,19_filter_observation_contract

## 완료 일시

2026-07-27

## 요약

FilterObservation recovery strategy/resume-mode 계약을 3회의 실행 리뷰 루프로 보완해 canonical RecoveryPlan 행렬과 일치시켰으며 최종 판정은 PASS다. 미착수 상태에서 split 대체된 초기 pair 1개가 별도 로그로 보존돼 있다.

## 루프 이력

| Plan | Review | Verdict | 메모 |
|------|--------|---------|------|
| `plan_local_G08_0.log` | `code_review_cloud_G08_0.log` | 미착수 | 초기 결합 task가 split 재배치되며 구현·공식 판정 전에 대체됐다. |
| `plan_local_G08_1.log` | `code_review_cloud_G08_1.log` | FAIL | lifecycle/arbitration, canonical failure policy, raw-free carrier 검증 공백을 식별했다. |
| `plan_local_G06_2.log` | `code_review_cloud_G06_2.log` | FAIL | observation recovery strategy와 resume mode의 반대 조합 허용을 식별했다. |
| `plan_local_G05_3.log` | `code_review_cloud_G05_3.log` | PASS | 네 strategy의 canonical resume mode와 commit-state 결합 및 반대 조합 거부를 확인했다. |

## 구현/정리 내용

- `ObservationRecoveryInfo.Validate`가 exact/schema recovery는 `replace_attempt`, continuation/managed recovery는 `continue_stream`만 허용하도록 canonical closed matrix를 강제한다.
- 네 strategy의 정상·반대 resume mode와 observation commit state 결합을 회귀 테스트로 고정하고 기존 shared attempt id 불변식을 유지한다.

## 최종 검증

- `command -v go && readlink -f "$(command -v go)" && go version && go env GOROOT` - PASS; `/config/.local/bin/go` → `/config/opt/go/bin/go`, `go1.26.2 linux/arm64`, GOROOT `/config/opt/go`.
- `make proto` - PASS; protobuf Go 생성 명령이 오류 없이 완료됐다.
- `go test -count=1 ./packages/go/streamgate -run '^(TestObservationRecoveryInfo_(SharedAttemptCoupledToResumeMode|StrategyResumeModeMatrix)|TestFilterObservation_KindStateMatrix)$'` - PASS; `ok iop/packages/go/streamgate 0.002s`.
- `go test -count=1 ./packages/go/streamgate` - PASS; `ok iop/packages/go/streamgate 0.867s`.
- `go test -race -count=1 ./packages/go/streamgate` - PASS; `ok iop/packages/go/streamgate 1.920s`.
- `test -z "$(gofmt -l packages/go/streamgate/filter_observation.go packages/go/streamgate/filter_observation_test.go)"` - PASS; 출력 없음.
- `git diff --check` - PASS; 출력 없음.
- `go vet ./packages/go/streamgate/` - PASS; 출력 없음.
- repo Edge-Node 진단 - 적용 없음; in-process observation value contract 외 사용자 실행 경로를 변경하지 않았다.
- 보조 E2E smoke - 적용 없음; proto/config/wire 또는 OpenAI-compatible 입력 표면을 변경하지 않았다.
- full-cycle 실제 구동 - 적용 없음; runtime hook과 host sink 연결은 sibling task 범위다.

## 잔여 Nit

- 없음

## 후속 작업

- 없음
