<!-- task=edge_multi_point_routing plan=1 tag=REVIEW_API -->

# Edge Multi-Point Routing Follow-up Plan

## 이 파일을 읽는 구현 에이전트에게

아래 체크리스트를 순서대로 완료하고, 각 항목의 중간 검증과 최종 검증을 실제로 실행하세요. 구현이 끝나면 `agent-task/edge_multi_point_routing/CODE_REVIEW.md`의 모든 섹션을 실제 구현 내용과 명령 출력으로 채우세요. `CODE_REVIEW.md`의 `이 파일을 읽는 리뷰 에이전트에게` 섹션에 있는 아카이브 지시(`*.log`로 이름 변경, `complete.log` 작성)는 구현 에이전트가 수행하면 안 되며, 리뷰 스킬 전용입니다.

## 배경

1차 구현으로 multi-point routing의 핵심 동작은 들어갔지만, `/terminate-session` 성공 메시지에는 여전히 대상 node 정보가 드러나지 않습니다. 이 작업은 계획서에서 명시한 "startup banner와 `/terminate-session` 결과도 `node=<alias>`를 포함" 요구를 마저 완료하고, 회귀 테스트로 고정하는 후속 루프입니다.

## 의존 관계 및 구현 순서

1. `REVIEW_API-1`에서 `/terminate-session` 성공 메시지에 node label을 포함하도록 console 성공 경로를 보강한다.
2. 같은 항목에서 회귀 테스트를 추가해 multi-node context가 출력에 남는지 고정한다.

### [REVIEW_API-1] `/terminate-session` 성공 출력에 대상 node 컨텍스트를 포함

#### 문제

현재 `apps/edge/cmd/edge/console.go`의 `/terminate-session` 성공 분기는 `terminated session <id>`만 출력합니다. 이 구현은 multi-node 환경에서 어떤 node의 session을 종료했는지 사용자가 바로 확인할 수 없고, 원래 계획서의 출력 요구도 충족하지 못합니다.

#### 해결 방법

성공 메시지에서도 실제로 resolve된 node entry를 기반으로 `alias` 우선, 없으면 `node_id`를 사용해 `node=<label>`을 함께 출력합니다. 가능하면 기존 terminate helper가 resolve 결과를 재사용하거나, 성공 메시지 전용 helper를 추가해 node label 계산을 한 곳에 모읍니다.

#### 수정 파일 및 체크리스트

- [ ] `apps/edge/cmd/edge/console.go` - `/terminate-session` 성공 메시지에 `node=<alias|id>` 포함
- [ ] `apps/edge/cmd/edge/console_test.go` - 성공 출력이 session과 node label을 함께 포함하는지 검증하는 회귀 테스트 추가
- [ ] 필요 시 helper 정리 - run/status/terminate가 동일한 node label 규칙을 공유하도록 최소 범위 정리

#### 테스트 작성

테스트를 작성합니다.

- `apps/edge/cmd/edge/console_test.go` - terminate-session 성공 경로에서 출력 문자열에 `node=<alias|id>`가 포함되는지 검증

#### 중간 검증

```bash
go test ./apps/edge/cmd/edge/...
```

기대 결과: console 관련 테스트가 모두 통과하고, terminate-session 성공 출력이 node-aware 하게 고정됩니다.

### 최종 검증

```bash
go test ./apps/edge/cmd/edge/... ./apps/edge/internal/node/...
```

기대 결과: console 변경이 registry 선택 규칙과 함께 회귀 없이 통과합니다.
