---
status: MAIN_HOST_LOSS_RUNTIME_STABILIZED_LIVE_INFRASTRUCTURE_BLOCKED
observed_at: 2026-08-09T16:05:00+09:00
main_host_shutdown_safe: false
production_continuity: false
production_changed: true
---

# 메인 호스트 상실 런타임 안정화와 실환경 차단 조건

## 이번 단계에서 완료한 것

- AISFOR의 원본 무결성 검사를 같은 80개 파일을 매분 반복하는 방식에서 24시간 회전 검사로 바꿨다.
- 회당 기본 원본 검사 한도를 12개, 바이트 예산을 256 MiB로 제한하고 오래된 검사부터 순환한다.
- 공용 `sha256File()`과 network worker 해시를 256 KiB 고정 버퍼 방식으로 바꿨다. 외부 저장소 등록·복구와 동기화 다운로드도 더 이상 최대 2.3 GiB 파일 전체를 한 번에 Buffer로 만들지 않는다.
- 64 MiB 합성 파일에서 비동기 해시와 동기 고정 버퍼 해시가 같은 SHA-256을 내는 것을 검증했다.
- 수정 전 Windows private memory peak는 약 4.6 GiB였으나 수정 후 두 번의 worker 회전에서 관측한 최대치는 약 404 MiB였다.
- AISFOR PM2 항목을 손상된 PID 추적 상태에서 새 항목으로 재등록했다. 최종 프로세스는 재시작 0회, HTTP `/`와 `/app-start` 200이며 저장된 PM2 dump에도 포함됐다.
- AISTALK, AISFOR Group, AISMALL, PLAI Sharing의 현재 리스너와 HTTP 응답을 확인했다.
- AISMALL `PROMOTED_ACTIVE`는 Redis가 없을 때 Mongo session collection의 index 생성과 실제 probe write/delete가 성공해야 promotion gate가 열린다.
- 다섯 서비스의 HTTP·Socket promotion gate, 독립 session readiness 정적 검사와 passive fleet canary가 통과했다.

## 현재 실환경 관측

- 공개 서비스 도메인 6개는 모두 같은 단일 IPv4 address commitment로 해석된다.
- 공개 HTTPS 응답은 현재 정상이나, ingress가 메인 서버와 같은 한 주소에 집중되어 있다.
- fresh node 5개, storage/supervisor eligible node 4개가 관측된다.
- eligible network failure domain은 2개다.
- 최신 runtime-ready node는 2개/2 domain이며, 세 번째 domain의 fresh node는 현재 runtime-ready가 아니다.
- stable HTTPS bootstrap origin은 0개다.
- authenticated production Mongo replica는 0개다.
- mTLS, disk encryption, isolated restore workspace의 live evidence는 각각 0개다.

## 판정

같은 장소의 다른 인터넷 회선은 USB 테더링보다 적합한 상시 경로다. 이 구성은 메인 서버 호스트와 메인 회선 상실을 견디는 기반이지만, 같은 장소의 전원·화재·공유 설비 상실까지 견디는 3-domain 등급은 아니다.

현재는 애플리케이션 코드와 승격 fence가 준비됐지만, 공개 DNS/HTTPS ingress와 production DB가 메인 호스트 밖에 상시 존재하지 않는다. 따라서 메인 서버를 지금 끄는 실제 E2E는 승인된 성공 시험이 아니라 서비스 중단이 되므로 실행하지 않았다.

## 다음 실작업

1. 보조 회선의 standby PC에서 재부팅 복구되는 stable HTTPS ingress를 최소 2개 구성한다.
2. 기존 서비스 도메인에 health-checked DNS 또는 외부 load balancer failover를 연결한다.
3. standby 3노드에 private encrypted transport, mTLS, disk encryption, isolated restore workspace를 준비한다.
4. Mongo replica와 session/upload/media 복제를 구성하고 majority write/read 및 primary 상실을 rehearsal한다.
5. standby를 `PASSIVE_STANDBY`로 상시 기동한 뒤 promotion lease로 한 노드만 `PROMOTED_ACTIVE`로 연다.
6. 마지막으로 메인 호스트의 서비스 프로세스만 격리하고 public HTTPS, 로그인, 쓰기, Socket.IO, media, worker single-owner를 E2E 검증한다.

증거: `evidence/main-host-loss-production-readiness-refresh-redacted.json`
