aboutsummaryrefslogtreecommitdiffstats
path: root/docs/research/047-bounded-native-document-browser.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/research/047-bounded-native-document-browser.md')
-rw-r--r--docs/research/047-bounded-native-document-browser.md46
1 files changed, 46 insertions, 0 deletions
diff --git a/docs/research/047-bounded-native-document-browser.md b/docs/research/047-bounded-native-document-browser.md
new file mode 100644
index 0000000..ee6b45e
--- /dev/null
+++ b/docs/research/047-bounded-native-document-browser.md
@@ -0,0 +1,46 @@
+# 047 — 저메모리 네이티브 편집기에서 문서 찾기
+
+고정 정의 TUI는 키를 알고 있으면 다른 문서를 열 수 있었지만, 저장된 키를
+찾는 방법이 없었다. 그래서 실제 앱에서 이미 만든 문서를 다시 선택하려면
+외부 파일 목록을 봐야 했다. 편집기의 **Ctrl+L 문서 목록**을 저장소 호스트에
+추가했다. 화살표·Home·End로 이동하고 Enter로 연다. Ctrl+O는 새 키 입력을
+계속 담당한다. 미저장 초안이 있으면 목록으로 전환하지 않는다.
+
+목록은 저장소 디렉터리의 `obj-KEY` 이름을 한 번 읽어 정렬한 스냅샷이다.
+한 키에 65 B를 사용하고 8,192개(최대 532,480 B)에서 멈춘다. 한도를 넘거나
+디렉터리 읽기에 실패하면 불완전한 목록을 보여주지 않고 기존 문서를 유지한다.
+목록을 닫으면 배열을 해제한다. 삭제된 키를 선택해도 새 빈 문서로 조용히
+전환하지 않고 오류를 보여준다. 실제 본문을 열 때는 기존 런타임의 검증된
+READ 경로를 통과한다. 코어·저장 형식·작성 언어·고정 실행 계획은 바뀌지 않았다.
+
+[실제 PTY 검사](../../prototypes/connections/results/2026-09-24-terminal-document-list/tui.json)는
+문서 전환, 초안 보호, 목록 이후 삭제된 키, 1 MiB 편집을 확인한다. 별도
+저장소에 **1,024개 실제 문서**를 CLI로 만들고 TUI의 정렬된 목록에서 마지막
+키를 열었다. 같은 경로의 [ASan·UBSan 실행](../../prototypes/connections/results/2026-09-24-terminal-document-list/sanitized.json)도
+통과했다. LeakSanitizer는 검사 환경의 ptrace 제약으로 껐다.
+
+| Linux AArch64 / GCC 14 | 앞선 TUI | 문서 목록 포함 TUI |
+|---|---:|---:|
+| 링크된 `text` | 28,762 B | 31,303 B |
+| 링크된 `data` | 988 B | 1,036 B |
+| 1 MiB 문서 편집 피크 RSS | 3,168 KiB | 2,832 KiB |
+| 1,024키 목록 피크 RSS | 미측정 | 1,856 KiB |
+| CLI+TUI 압축 묶음 | 34,216 B | 35,642 B |
+| CLI+HTTP+TUI 압축 묶음 | 51,844 B | 53,385 B |
+
+[TUI 코드 섹션 상한](../../prototypes/connections/results/2026-09-24-terminal-document-list/profile.json)은
+기능을 확인한 뒤 29,696→32,768 B로 검토해 높였다. 결합 묶음의 상한도
+53,248→54,272 B로 높였고 CLI 전용 16,384 B 상한은 유지했다. 이번
+[CLI 전용 묶음](../../prototypes/connections/results/2026-09-24-terminal-document-list/cli-check.json)은
+14,706 B다. 새 [CLI+TUI](../../prototypes/connections/results/2026-09-24-terminal-document-list/cli-tui-check.json)와
+[CLI+HTTP+TUI](../../prototypes/connections/results/2026-09-24-terminal-document-list/cli-http-tui-check.json)는
+모두 다른 위치에 풀어 실제 명령·PTY·HTTP를 실행했다. 이 압축 크기는 libc나
+실행 메모리가 아니다. RSS 값은 서로 다른 한 번의 실행에서 관찰한 값이며
+목록 추가로 1 MiB 편집 메모리가 줄었다는 증거가 아니다. 두 경우 모두 기존
+4 MiB 회귀 상한 안에 있다.
+
+목록은 편집 중 스토어 변화를 자동 추적하지 않는다. Ctrl+L로 다시 읽을 수 있고,
+키를 여는 순간 본문과 버전을 다시 검증한다. 8,192개를 넘는 대형 저장소에는
+페이지 탐색이나 검색 색인이 필요하다. 이 선택 UI의 목록은 그런 범용 색인으로
+주장하지 않는다. `.pure` 정의 작성은 기존 별도 작성 호스트의 책임이므로
+고정 실행 TUI에 파서와 컴파일러를 링크하지 않았다.