---
status: STATELESS_READ_CAPSULE_AND_CLIENT_FAILOVER_PROTOCOL_SELF_TESTED_DEFAULT_OFF
production_traffic_changed: false
production_capsule_enabled: false
operator_signing_used: false
external_transaction_enabled: false
main_server_outage_continuity_proven: false
---

# Stateless read capsule·클라이언트 failover staging

## Stateless service capsule

`E:\aisfor\services\statelessServiceCapsuleProtocol.js`에 재현 가능한 read-only capsule release와 verifier를 추가했다.

- source/artifact SHA-256 및 sequence를 묶은 domain-separated capsule commitment
- finalized release anchor와 `service-read` capability lease 요구
- filesystem, database, outbound network, secret, operator signing, transaction submission이 모두 `none/false`인 controls만 허용
- `sha256-text`, 3-node RPC certificate 검증, 2-peer manifest quorum 검증만 허용
- write/삭제 등 release에 없는 operation은 fail-closed
- request/result 크기 상한과 deterministic request/result hash

PC Sync candidate `1.4.72-stateless-read-capsule-default-off-locked`에는 다음 기본-OFF endpoint를 넣었다.

- `GET /gateway/service-capsule/manifest`
- `POST /gateway/service-capsule/execute`

실행은 Sync main loop 안에서 직접 하지 않는다. 요청마다 비밀이 전달되지 않은 별도 Node process를 만들고 다음 fence를 적용한다.

- heap 상한 32 MiB
- 실행 timeout 3초
- 입력 32 KiB, 출력 64 KiB 상한
- 최소 환경변수만 전달
- 요청 1건 처리 후 process 종료

embedded capsule self-test는 direct/fenced 결과 hash 일치, write 거부, no-fs/no-db/no-network 선언을 확인했다. 기능 flag와 production 환경변수는 활성화하지 않았다.

## 클라이언트 failover resolver

`E:\aisfor\services\clientServiceFailoverProtocol.js`에 endpoint directory 검증과 회전 규칙을 추가했다.

- finalized chain anchor가 일치하는 distinct peer 2개 이상의 manifest quorum 요구
- sequence rollback, 만료 lease, 중복 endpoint/node key, 단일 bootstrap 거부
- endpoint pool 최소 3개 요구
- production endpoint는 HTTPS만 허용하고 canary에서만 명시적으로 HTTP 허용
- health freshness·응답시간·circuit breaker로 시도 순서 결정
- 서로 다른 failure-domain endpoint를 먼저 배치
- DNS를 source of truth로 사용하지 않고 manifest commitment를 cache key로 사용

self-test에서는 endpoint 3개/관측 failure domain 2개를 검증하고 open circuit endpoint를 제외한 두 endpoint로 failover 순서를 만들었다. single bootstrap과 rollback manifest는 거부됐다.

## 아직 남은 gate

이 단계는 protocol과 기본-OFF PC runtime을 만든 것이다. 다음 항목은 아직 증명되지 않았다.

1. embedded capsule artifact hash의 실제 finalized chain commitment
2. 임의 PC 3대에서 같은 capsule release/결과 hash를 반환하는 live canary
3. Web startup과 Android의 독립 bootstrap 3개 통합(Android native verifier/cache와 default-OFF 장애 hook은 `13-ANDROID_VERIFIED_DIRECTORY_AND_OUTAGE_SIMULATION_KO.md` 단계에서 컴파일 완료)
4. 메인 domain 차단 상태에서 cached directory와 직접 PC endpoint로 app shell/read service가 유지되는 E2E rehearsal

따라서 `main_server_outage_continuity_proven`은 계속 false다.
