aboutsummaryrefslogtreecommitdiffstats
path: root/docs/research/056-server-only-document-package.md
blob: 51ed32f3550b901118190cf8b8097cb6c0c6846e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# 056 — 서버 전용 문서 피어를 실제 이동 묶음으로 검증

[055](055-authenticated-peer-transport-cost.md)의 서버 전용 실행물은 빌드와
로컬 테스트까지만 확인했다. 이번에는 `package_native.py --with-peer-server`로
CLI·`editor.pure`·인증 TLS 서버를 하나의 Linux AArch64 아카이브에 넣고,
다른 디렉터리에 풀어 실제 인증 문서 작업을 실행했다. 서버만의 배포
구성에서도 외부 통신을 유지한다. `--with-peer`는 기존의 C 클라이언트
겸용 구성을 그대로 선택한다. 두 옵션은 동시에 사용할 수 없다.

```sh
python3 prototypes/connections/package_native.py --with-peer-server \
  --output dist/pure-document-server-only-linux-aarch64.tar.gz
python3 prototypes/connections/check_package.py \
  dist/pure-document-server-only-linux-aarch64.tar.gz
```

| 같은 CLI·정의와 TLS 피어 하나를 포함한 구성 | 서버 전용 | 클라이언트 겸용 |
|---|---:|---:|
| 압축 아카이브 전체 | [47,686B](../../prototypes/connections/results/2026-09-24-server-only-package/pure-document-server-only-linux-aarch64.tar.gz) | [49,382B](../../prototypes/connections/results/2026-09-24-server-only-package/pure-document-combined-peer-linux-aarch64.tar.gz) |
| 선택 피어의 링크된 `text` | 43,462B | 46,934B |
| 검토한 아카이브 상한 | 51,200B | 53,248B |

동일한 선택 범위에서 서버 전용 묶음은 **1,696B 작다**. 이 차이는 압축
파일 비용이며 프로세스 RAM 절감량이 아니다. [새 아카이브 예산](../../prototypes/connections/peer-package-budget.json)은
CLI와 TLS 피어만 담은 두 구성에 적용된다. HTTP·TUI·GTK 또는 연구용
저장소까지 고른 조합에는 이 상한을 적용하지 않는다. 기존의 실행물
`text`·data·BSS와 직접 동적 의존성 검사도 별도로 유지한다.
서버 전용 묶음을 다른 출력 경로에 다시 생성해 SHA-256
`34fb507c160e4aa719cf44fb4f8bbcb422d2c0ee6dc3f206f6a5fe3bc4d089b6`가
같음을 확인했다. 현재 TLS 피어와 연구용 페이지 저장소를 동시에 선택하면
저장 형식이 다를 수 있으므로 패키저가 그 조합을 거절한다.

[서버 전용 이동 검증](../../prototypes/connections/results/2026-09-24-server-only-package/server-only-package-check.json)은
manifest와 모든 파일의 SHA-256을 확인하고, 추출한 CLI의 문서 생성·복원과
수정한 `.pure`의 응답 변화를 실행했다. 같은 추출 경로의 서버에는 패키지
밖의 Python TLS 클라이언트가 접속했다. 잘못된 클라이언트 인증서·서버
호스트 이름·ALPN을 거부했고, 조건부 생성·충돌·1 MiB 분할 수신·응답
본문 생략·마지막 1바이트 변경을 처리했다. 잘린 프레임과 잘못된 연산은
저장값을 바꾸지 않았으며 서버 재시작 뒤에도 1 MiB 값을 읽었다. 패키지
안 CLI도 같은 값을 읽었다. 이 검사의 서버 `/proc` RSS 관찰값은 연결 전
7,968 KiB, 큰 작업 뒤 8,672 KiB다. 피크나 다른 장치의 메모리 상한은
아니다.

[클라이언트 겸용 이동 회귀](../../prototypes/connections/results/2026-09-24-server-only-package/combined-peer-package-check.json)는
기존 C/Python TLS·1 MiB 작업과 재시작까지 통과했다. 두 아카이브의
manifest에는 선택 호스트, 파일 해시, 시스템 공유 라이브러리의 직접
의존성 및 검토한 이진·아카이브 상한이 들어 있다. OpenSSL과 libc를
묶음 안에 넣지 않으며, 인증서도 사용자가 준비해야 한다. 서버 전용
묶음에는 C `call` 명령이 없다. 외부 클라이언트는 `pure-doc/1` 형식을
구현하거나 별도의 Pure 클라이언트를 사용한다.

이 결과는 이동 가능한 Linux AArch64 패키지의 한 선택 구성을 증명한다.
macOS/Apple Silicon 실행, 서명·설치 경험, 다중 연결 공정성, 장시간 부하,
장애망 복구와 전체 공개 체크포인트는 아직 완료되지 않았다.