---
status: SIGNED_OVERLAY_LIVE_PARTIAL_HTTPS_BOOTSTRAP_INFRA_REQUIRED
candidate_version: 1.4.105-signed-overlay-bootstrap-priority-default-off-locked
production_failover_enabled: false
current_continuity: false
dns_changed: false
database_changed: false
public_api_changed: false
operator_signing_used: false
validator_changed: false
transaction_submission_enabled: false
canary_policy_present: false
canary_mappings_present: false
---

# Signed outbound overlay live 결과와 HTTPS gate

## 결과

34~39차 제한형 3-PC canary에서 다음 항목을 live로 확인했다.

- 후보 3대 설치와 node-bound Ed25519 attestation 3개
- 두 개의 관측 failure domain
- 승인 포트 52001~52003 중 하나 이상의 공개 ingress
- 동일 버전 runtime policy 변경 시 의미가 달라질 때만 안전 재시작
- signed exact service endpoint map과 observed failure-domain binding
- 공개 ingress에 NAT 뒤 PC 한 대의 outbound overlay session 등록
- false policy 후 attestation lease 만료와 임시 mapping/policy 삭제

최종 3-route live gate는 통과하지 못했다. 공개 ingress 자체와 한 원격 PC 경로는 준비됐지만 다른 원격 PC 한 대가 고포트 ingress에 outbound 연결하지 못했다. 따라서 3개 directory vote, 3개 capsule, 3개 service shell의 실제 연속 교환과 메인 호스트 단절 생존은 아직 증명되지 않았다.

## 구현 보완

- server와 client의 선택적 service endpoint map 검증 규칙 일치
- 후보 설치 시점부터 signed directory policy 적용
- runtime policy reissue와 실제 feature 변경을 구분하는 activation commitment
- feature 변경 시 supervised hot-restart
- 직접 UPnP 경로는 node별 승인 포트 일치를 강제
- virtual overlay 경로는 공개 canary ingress와 target node identity를 함께 검증
- 첫 공개 ingress 발견 뒤 node-bound service endpoint map을 서명 배포
- signed overlay bootstrap을 오래된 peer cache보다 먼저 시도

모든 기능은 rollout policy가 없으면 꺼진다. write, DB, filesystem, transaction submission, validator 제어 경로는 overlay allowlist에 없다.

## Web/앱 기반 재검증

기존 default-OFF Web failover 기반은 다음 자체시험을 다시 통과했다.

- HTTPS source 3개와 2-source/2-domain 일치 quorum
- WebCrypto Ed25519 3표와 pinned root key 검증
- rollback, equivocation, 이전 commitment 불일치 거부
- service worker의 proof 저장 전·redirect 전 재검증
- 첫 endpoint 실패 시 다음 검증 endpoint 선택
- write request failover 금지

코드 기반은 준비됐지만 실제 source와 endpoint는 반드시 공개 신뢰 인증서가 있는 HTTPS origin이어야 한다. 브라우저는 self-signed PC 인증서를 신뢰하지 않으므로, 메인 서버가 꺼진 외부 접속을 증명하려면 서로 다른 네트워크의 HTTPS 443 relay와 인증서·bootstrap origin이 실제로 필요하다.

## 다음 gate

1. DNS와 production traffic을 바꾸지 않은 staging 이름으로 독립 HTTPS 443 relay 3개를 준비한다.
2. 각 relay가 서로 다른 failure domain에 있는지 관측·서명한다.
3. Android/Web에 3개 bootstrap origin과 pinned root key를 staging 설정으로 주입한다.
4. 3-source directory, 3-node capsule, 3-node service shell을 live로 통과시킨다.
5. 별도 승인 창에서만 메인 서버 격리 E2E를 수행한다.
6. 읽기 전용 생존 증명 뒤 Mongo/Redis/session/upload/write worker의 별도 Active-Active 단계를 진행한다.

증거: `evidence/signed-overlay-live-partial-and-https-gate-redacted.json`
