---
status: MAIN_HOST_LOSS_CANARY_TOPOLOGY_READY_FULL_WAN_GRADE_BLOCKED
observed_at: 2026-08-05T15:28:38+09:00
production_changed: false
router_mapping_performed: false
rollout_policy_written: false
operator_signing_used: false
validator_changed: false
---

# 실노드 canary topology 사전 점검

## 결론

PC 대수는 부족하지 않다. 최근 24시간 안에 확인된 PC는 5대이고 현재 heartbeat가 신선한 PC는 5대다. 그중 4대가 chain runtime-ready이며 유효한 failure-domain commitment를 가지고 있다. 이 노드들은 2개 WAN failure domain에 분포한다.

세 노드·두 WAN으로 메인 서버 호스트 단절만 검증하는 제한 canary는 현재 실행 가능한 topology다. 세 독립 WAN 중 하나의 전체 장애까지 포함하는 최종 등급과 3-domain bootstrap은 아직 실행할 수 없다.

최종 3-WAN 등급의 topology blocker는 다음과 같다.

```text
ONE_FRESH_RUNTIME_READY_PC_ON_A_THIRD_WAN_FAILURE_DOMAIN_REQUIRED
```

## 후보 미설치 상태

PC Sync 후보 `1.4.81-node-bound-distinct-upnp-port-default-off-locked`가 설치된 노드는 현재 0대다. 이는 오류가 아니라 rollout marker와 canary policy를 의도적으로 생성하지 않았기 때문이다. 현재 2-WAN 메인 호스트 단절 canary 또는 향후 3-WAN canary에 대한 유한 UPnP 변경이 명시적으로 승인되기 전에는 후보를 배포하지 않는다.

## 최종 3-WAN 등급을 위해 사용자가 준비할 한 가지

현재 PC 중 한 대 또는 새 PC 한 대를 기존 두 회선과 다른 인터넷 경로에 연결한다. 예를 들면 다른 장소의 공유기, 별도 ISP 회선, 또는 테스트 동안의 휴대전화 hotspot이다. 단순히 같은 공유기의 다른 LAN 포트나 같은 공인 IP 뒤의 PC를 추가하는 것은 제3 failure domain으로 세지 않는다.

PC Sync가 실행되어 heartbeat와 chain runtime 상태가 다시 올라오면 다음 명령의 읽기 전용 결과가 `threeIndependentFailureDomainsReady: true`가 되어야 한다.

```powershell
node E:\aisfor\scripts\resilience-live-node-topology-preflight.js
```

## 그 다음에도 자동으로 하지 않는 작업

현재 2-WAN 제한 canary와 향후 3-WAN canary 모두 실제 실행은 자동으로 하지 않는다. 다음 작업은 별도 명시 승인이 있어야 한다.

- 선택된 최대 3대에 PC Sync `1.4.81` 한정 rollout
- 내부 TCP 5277에 연결되는 노드별 외부 TCP 52001·52002·52003의 최대 1,800초 UPnP mapping
- signed RPC·service directory·stateless capsule 실노드 교환
- lease 만료와 mapping 삭제 확인
- 물리 Android/Web/TWA 검증
- 별도 outage window에서의 실제 메인 서버 격리

production DB·DNS·공개 API·외부 전송·운영자 서명·validator는 이 preflight에서 변경하지 않았다.

증거: `evidence/live-node-topology-preflight-redacted.json`
