---
status: PEER_SERVICE_DIRECTORY_MAILBOX_SELF_TESTED_DEFAULT_OFF
candidate_version: 1.4.81-node-bound-distinct-upnp-port-default-off-locked
production_traffic_changed: false
router_mapping_changed: false
operator_signing_used: false
validator_signing_used: false
live_peer_exchange_proven: false
---

# PC peer service-directory mailbox staging

## 목적

메인 서버에서 받은 `peerId` 문자열을 신뢰하는 대신, 임의 PC들이 자기 node key와 public endpoint를 직접 확인하고 동일 directory commitment에 서명하도록 PC Sync candidate에 mailbox를 넣었다.

## 후보와 기본 잠금

- candidate: `1.4.81-node-bound-distinct-upnp-port-default-off-locked`
- bytes: `481811`
- SHA-256: `bbac9679202b815127ec270ea8646f56d1abb872ff6e652e3bfc9556f358ce96`
- feature: `signedManifestVoteExchangeEnabled`
- environment override: `AISFOR_SIGNED_MANIFEST_VOTE_EXCHANGE_ENABLED`
- 기본값: false

기능은 다음 조건이 모두 참일 때만 열린다.

1. read-only RPC attestation 활성
2. peer attestation exchange 활성
3. 유한 lease public relay 활성
4. stateless read capsule 활성
5. signed manifest vote 기능 활성
6. runtime policy에 admission된 서로 다른 node key 최소 3개

따라서 이 기능만 단독으로 켜서 endpoint를 노출할 수 없다.

## default-OFF gateway endpoints

- `POST /gateway/service-directory/proposal`
- `GET|POST /gateway/manifest-vote`
- `GET /gateway/service-directory`

proposal은 RPC certificate attestation 3개, permissionless directory envelope, endpoint 최소 3개를 포함한다. 각 PC는 다음을 모두 확인한 뒤 자기 DPAPI Ed25519 node identity로 vote한다.

- 모든 endpoint node key가 runtime admission 집합과 RPC certificate에 포함
- 자기 node key 행의 URL이 실제 자기 public gateway URL과 정확히 일치
- 자기 failure-domain commitment가 public IP hostname의 domain-separated hash와 일치
- 모든 endpoint release hash가 embedded capsule commitment와 일치
- manifest payload hash/commitment/TTL과 endpoint lease가 유효
- public HTTP는 finite-lease relay canary가 실제 활성인 경우에만 허용; 그 외 HTTPS 요구

서로 다른 node key vote 3개가 모이기 전에는 `/gateway/service-directory`가 bundle을 반환하지 않는다.

## 검증

embedded self-test와 독립 protocol self-test가 통과했다.

- admitted node keys: 3
- RPC certificate: 3-of-3
- manifest votes: 3-of-3
- 잘못된 자기 URL 거부
- 2표 quorum 거부
- capsule release binding 확인
- operator/validator key 미사용
- router/network/production 변경 없음

증거: `evidence/peer-service-directory-mailbox-self-test-redacted.json`

## 남은 live gate

실제 PC에서 검증하려면 라우터 mapping 승인이 먼저 필요하다. 승인 후에도 target 3대, TCP 5277, 1800초 lease, 자동 삭제로 제한하고 다음을 증명해야 한다.

1. 세 public relay가 서로 도달 가능
2. 동일 RPC certificate와 endpoint proposal에 각자 서명
3. 한 PC가 다른 두 vote를 받은 뒤 verified bundle 반환
4. Android cache가 bundle을 받아 동일 commitment와 node keys를 검증
5. policy revoke 후 vote lease·public mapping·gateway endpoint가 모두 사라짐

이 live gate와 별도로 메인 서버 중단 시험은 다시 명시적인 outage-window 승인이 필요하다.
