# Complete - m-agent-readable-repository-refactor/05_core_node_tests

## 완료 일시

2026-07-16

## 요약

Node core 테스트를 책임별 파일로 분리하고 1회 plan/code-review 루프에서 PASS로 완료했다.

## 루프 이력

| Plan | Review | Verdict | 메모 |
|------|--------|---------|------|
| `plan_local_G07_0.log` | `code_review_local_G07_0.log` | PASS | 원본 151개 선언과 top-level Test 66개를 보존하고 모든 검증을 통과했다. |

## 구현/정리 내용

- 3,346줄 `node_test.go`를 run/cancel, command, concurrency gate, config refresh, registry lifecycle, provider tunnel, 공통 support 파일로 분리하고 원본을 삭제했다.
- 모든 test 파일을 1,000줄 이하로 유지하면서 package 경계와 production/runtime 계약을 변경하지 않았다.
- 원본과 분리본의 선언 151개를 보존했으며, 의미가 동일한 고정 문자열 error 생성 방식 두 곳 외에는 동작 토큰 차이가 없다.

## 최종 검증

- `GOCACHE=/tmp/iop-go-build-cache go test -count=1 ./apps/node/internal/node` - PASS; `ok iop/apps/node/internal/node 0.802s`.
- `GOCACHE=/tmp/iop-go-build-cache go test -list '^Test' ./apps/node/internal/node` 기반 top-level Test count - PASS; 66개.
- `python3 -c "from pathlib import Path; p=Path('apps/node/internal/node'); bad=sorted((sum(1 for _ in f.open()),str(f)) for f in p.glob('*_test.go') if sum(1 for _ in f.open())>1000); print(bad); raise SystemExit(bool(bad))"` - PASS; `[]`.
- `GOCACHE=/tmp/iop-go-build-cache go test -race -count=1 ./apps/node/internal/node` - PASS; `ok iop/apps/node/internal/node 2.085s`.
- `GOCACHE=/tmp/iop-go-build-cache go test -count=10 ./apps/node/internal/node` - PASS; `ok iop/apps/node/internal/node 8.004s`.

## 잔여 Nit

- 없음

## 후속 작업

- `agent-spec/runtime/edge-node-execution.md`의 삭제된 `node_test.go` source evidence 경로 갱신은 Milestone의 별도 `[evidence-links]` 범위에서 처리한다.
