# 아이서티 오프라인 준비 마감

2026-09-28 17:26 KST. 이 문서가 초기 README/verification의 이후 상태를 요약한다.

## 완료

- 부모 최종 `crowd-20260928-r02`, source `0f172d94`, task HEAD `9192464`의 문서 갱신까지 확인.
- 현장 APP image `contextra-analytics:offline-source-20260928T165350`, transaction `offline-source-20260928T165350`.
- Analytics image ID `sha256:5d0c6dc63f36635b6dc0e03d091442911360922d7253e7280d9525ee7aa172f1`.
- 기존 군중 image 위에 Python만 적용. SDK/native/model 변경0. host app bind 금지 보호는 유지.
- `/workspace/contextra/source/crowd-0f172d94`: si 편집 작업본. 검증된 snapshot은 root 소유이며 Runtime image가 실행한다.
- `ct` 메뉴, 정상 Stop, guarded Start, APP apply, 편집/로그, 작업 시작·종료·diff/export, 주소/CA 준비 도구 설치.
- source/setup의 최소 ACL과 상속 준비. 인증·DB·원장·원본 미디어 권한은 유지하며 관리 작업은 기존 sudo 경로 사용.
- `/workspace/contextra/setup/guides`: 사용/주소 전환/Windows 안내. source만 여는 `contextra.code-workspace` 포함.
- 고정 Prometheus3.15.0/Grafana13.2.2/Node1.12.1과 기본 dashboard.15초/7일/retained blocks10GiB. 기본 Off.
- 기존 LLM 한국어/agent/IP차단 smoke와 수동 GUI 준비 재사용. 모델 신규 다운로드·LLM image 제작 없음.

## 검증

- source124파일 일치, Python118파일은 부모 배포 kit와도 일치.
- 네 모델 READY200,44채널 stopped, 명시적 카메라 Start0, Gateway/sidecar를 켜지 않은 짧은 readiness 확인.
- Grafana database ok, Prometheus host/Contextra/Triton target 모두 up, GPU 지표 수집 확인 후 정지.
- 설정 변환/입력/방화벽 scope/작업 diff/secret 파일 제외 표적 테스트6건 통과. 설치 도구18개 hash 대조 통과.
- 실제 si 계정의 작업 기록 begin/end 성공, 변경0건 smoke. GUI 화면/Windows 실제 실행은 사용자 확인 대상.
- CPU 과부하는 VSCode `rg --files` PID786412였다.14threads,2초 표본 약1157%.
  해당 PID만 SIGTERM하고 VSCode/SSH는 유지했다. 종료 후 전체 논리 CPU 평균1.88%(2초 표본).

## 최종 상태

- Contextra5개 container, 관측3개, GPU collector, LLM, GUI 모두 정지.44채널 stopped 확인.
- GPU compute process 없음, GPU 사용10MiB/util0%. 카메라 자동 Start나 이전 image rollback 없음.
- 현장 root 여유599,220,215,808bytes. test root 약21GiB 여유 유지.
- 새 IP/CA 전환은 아직 실행하지 않았다. 내일의 실제 값으로 plan/prepare/enroll/apply와 Web 수용을 확인한다.
- 기존 군중 설정·카메라·인증·Event 데이터·모델은 보존. Git source/worktree는 수정하지 않았다.

## USB

- 최종 파일: `contextra-offline-tools-20260928-r03.tar`(1,593,210,880bytes)와 같은 이름의 `.sha256`. archive 및229개 파일 checksum 재확인 통과.
- SHA256: `ba893f0358c5a032b2bbcfc0f646f0aad5bbb3c2845b8242deb40a4360840f86`.
-229개 파일: 도구/GUI DEB/Linux·Windows 실행기/관측 image/안내/작은 군중 source kit와 app 작업본.
- 비밀번호·token·private key·DB·원본 미디어 제외. 기존17.6GB GGUF와 전체 Runtime/model engine은 포함하지 않는다.
- r01/r02는 준비 중간본이다. 반입은 r03만 사용한다. 이 자료는 기존 서버용 도구 묶음이며 전체 서버 복구 image가 아니다.

## 남은 현장 확인

1. Windows 실제 초기화/SSH 터널/API 접속, 개인 SSH key 등록과 key의 별도 안전 전달.
2. 실제 모니터/키보드에서 임시 GUI·한글 입력.
3. 새 IP/Manager·Event endpoint/미디어 CIDR/공개 CA의 실연동. 실제 OS NIC 변경은 자동화하지 않았다.
4. 원격 인터넷이 끊긴 뒤 전체 설치/주소 변경 모의시험은 test/101의 격리 환경에서 후속 가능하다.

## 중간 오류와 회수

- Docker29의 Grafana 일반 save가 layer 누락 archive를 만들어 검증에서 차단. 공식 amd64 manifest의 모든 blob hash를
  대조한 완전한 archive로 대체했고 실제 Grafana 실행까지 확인했다. 불완전 archive는 최종 USB에 포함하지 않았다.
- 설치 중 stop helper 누락과 containerd image ID 표현 차이를 국소 보완했다. Runtime image를 임의 변경하지 않았다.
- rsync 전환 전 scp는 root 소유 pycache만 복사 거부했다. pycache를 제외해 동기화하고 최종 source hash18개를 확인했다.
- actual 새 IP/CA가 없으므로 그 경로의 실연동 성공을 주장하지 않는다. 설정 변환과 기존 TLS/Auth 보호 코드를 검증·재사용했다.
- 이번 임시 sudo 파일과 빈 전용 디렉터리만 삭제했다. SSH key/known_hosts와 현장 인증은 보존했다.
- Report Inbox receipt `contextra-icerti-offline-maintenance-20260928-r02` 기록 완료. Git worktree clean, commit 대상 없음.
