# Complete - inflight-accounting-recovery/01_node_terminal_events

## 완료 일시

2026-06-30

## 요약

Node terminal event accounting recovery follow-up을 2개 리뷰 루프로 완료했다. 최종 판정은 PASS이며 Roadmap Targets는 없음이다.

## 루프 이력

| Plan | Review | Verdict | 메모 |
|------|--------|---------|------|
| `plan_local_G06_0.log` | `code_review_local_G06_0.log` | FAIL | repo 내부 edge-node user-flow evidence와 Edge-visible cancelled terminal regression test가 누락되어 follow-up 필요 |
| `plan_local_G06_1.log` | `code_review_local_G06_1.log` | PASS | cancelled terminal regression test와 repo 내부 edge-node user-flow evidence가 추가되고 리뷰어 재검증 통과 |

## 구현/정리 내용

- `runtime.ErrRunCancelled` 합성 terminal event가 Edge-visible `RunEvent{type:"cancelled"}`로 도착하는 regression test를 추가했다.
- terminal event 미발행 adapter의 complete/error/cancelled 합성 경로와 ResolveAdapter pre-execute error 경로가 Edge에서 관측되는지 테스트로 확인했다.
- `scripts/dev/edge.sh` + `scripts/dev/node.sh` 기반 repo 내부 user-flow evidence를 보조 smoke와 분리해 기록했다.
- 리뷰 중 활성 plan/review 문서 공백 drift를 정리하고, repo-local SQLite 부산물 `apps/node/internal/bootstrap/iop.db`를 제거했다.

## 최종 검증

- `gofmt -l apps/node/internal/node/node.go apps/node/internal/node/sink_test.go apps/node/internal/node/node_test.go apps/node/internal/node/node_concurrency_integration_test.go` - PASS; 빈 출력
- `go test -count=1 ./apps/node/internal/node -run 'TestOnRunRequest_Synthesized(Cancelled|Terminal|Error)ObservedByEdge|TestIntegration_ResolveAdapterErrorObservedByEdge' -v` - PASS; synthesized complete/error/cancelled와 ResolveAdapter error Edge-visible tests 통과
- `go test -count=1 ./apps/node/internal/node ./apps/node/internal/adapters/openai_compat` - PASS
- `go test -count=1 ./apps/node/...` - PASS
- `./scripts/e2e-smoke.sh` - PASS; 보조 smoke로만 확인했으며 complete 기준 user-flow evidence는 `code_review_local_G06_1.log`에 별도 기록됨
- `git diff --check` - PASS

## 잔여 Nit

- `apps/node/internal/node/node_concurrency_integration_test.go:559`: cancellation test의 "2s settle" 표현은 현재 `default` 분기 때문에 즉시 drain 검증에 가깝다. 핵심 cancelled terminal 관측 회귀는 충족되어 PASS를 막지 않는다.

## 후속 작업

- 없음
