원격 Vault 운영 전환
정본과 이용
비공개 DanzzaN-il/second-brain의 main Markdown이 개인 Vault 정본이다. 최초 이전 commit은 6063a392ef7aed6b991cca1a0b6fd15b187662b8이다. 원본 124개와 공통 계약 2개, 총 126개 문서의 바이트를 원격 fetch 뒤 SHA-256으로 대조했다. 기존 README는 보존했다.
2026-09-09 데스크톱 전환 후 Codex·Claude Code 사용자 설정의 personal_vault는 ChatGPT와 같은 AWS HTTPS 서버에 직접 연결한다. GitHub 전용 읽기·쓰기 토큰은 AWS Secrets Manager에서 불러오며 각 클라이언트는 Auth0 OAuth로 로그인한다. 기존 C:/labs/vault-mcp stdio 코드와 Windows DPAPI 파일은 복구용으로 보존했지만 현재 사용자 MCP 설정에서는 실행하지 않는다. 이미 실행 중인 앱 대화가 새 설정을 반영했는지는 별도로 확인한다.
목록·검색·선택 읽기와 AWS 초안 묶음의 검토·확정을 제공한다. 현재 쓰기 절차는 원격 Vault 묶음 저장 계약을 따른다. 세션 첫 사용, 사용자 최신 확인 요청, 쓰기 직전에 최신 commit을 얻고 나머지는 같은 본문·commit을 재사용한다. 정상 저장은 MCP로 하고 최초 이전·장애 복구만 관리자 Git 경로를 쓴다. 로컬 Second Brain은 검사 사본이며 자동 양방향 동기화는 없다.
저장 경계
허용 문서의 create/update/delete 최종 변경 1~300개 경로를 한 commit에 반영한다. 새 본문은 문서당 256 KiB, 묶음당 4 MiB까지 받는다. 설정·숨김 경로·경로 탈출·대소문자 충돌·symlink는 거부한다. 전용 이동 도구는 제공하지 않는다. 일반 Markdown/YAML 목록을 읽으며 생성 문서를 별도 고정 catalog 갱신 없이 발견한다. 알려진 비밀 형식은 거부하지만 모든 개인정보·비밀의 완전 탐지를 뜻하지 않는다.
expected_commit의 GitHub compare-and-swap과 변경 묶음의 영속 영수증으로 충돌·재시도를 처리한다. 동일 ID·동일 입력은 기존 실제 commit을 반환하고 다른 입력은 거부한다. 저장 응답 유실 후 영수증·부모·본문·실제 변경 경로를 다시 대조한다. COMMIT_UNCONFIRMED는 미저장 확정이 아니므로 동일 입력·ID로 재시도한다. REVISION_CONFLICT는 재조회·병합 검토 뒤 새 ID를 사용한다. APPLIED는 내용의 의미·진실성·사용자 의도까지 보장하지 않는다.
이전 대상과 백업
상위 노트 폴더와 허용 루트 Markdown을 올렸다. .obsidian 설정 7개를 제외했다. tmp에는 업로드할 파일이 없었다. 코드·자격 증명·설정은 정본 문서에 포함하지 않는다. 원본 검사에서 알려진 비밀 패턴과 문서 크기 초과는 0건이었다.
이전 전 전체 131파일은 C:/Users/aica_/VaultBackups/20260905T162712Z/second-brain.zip에 별도 보존했다. 새 디렉터리에 압축을 풀어 전체 파일 SHA-256 및 백업 도중 원본 불변을 확인했다. Git과 독립적인 사본이지만 같은 C: 드라이브여서 장치 고장 대비 사본은 아니다.
설정·감축 원본은 C:/Users/aica_/VaultBackups/client-config-20260905T163718Z/에 보존했다. Codex 스킬 원본은 원래 자리에 남고 config에서 disabled, Claude 스킬은 C:/Users/aica_/.claude/disabled-skills/obsidian-vault에 남는다. 연결 해제는 personal_vault 서버만 비활성화하고, 지침·스킬 복구는 해당 사본과 현재 변경을 대조해 되돌린다. 이후 생긴 무관한 설정을 전체 사본으로 덮어쓰지 않는다.
최소화 적용
Codex certification-roadmap, certification-study-workflow, obsidian-pkm와 Claude obsidian-vault를 비활성화했다. 고유한 공통 파일·사건 계약은 학습 작업공간 계약과 자격증 로드맵 기록 계약에서 제공하고 Certifications에 연결했다. 진입 지침은 C:/labs/vault-mcp/CLIENT.md 하나로 연결한다. 개인 맥락의 근거는 기존 Atomic·Map에 유지한다.
후속 4단계 감축에서 작성 스킬 2개와 Vigilantis 전용 스킬 7개를 추가 비활성화했다. 작성 기준은 에이전트 문서 작성, 프로젝트 참고 6개와 과거 점검 상태는 Vigilantis 저장소의 로컬 Vault에서 직접 읽는다. 프로젝트 포인터·두 기존 worktree·Map을 연결했다. 적용·복구·검증 경계는 원격 Vault 파일별 스킬 감축안 > 4단계 감축 적용 — 2026-09-06에서 확인한다. 새 모델 업무 실행의 행동 시험은 아직 하지 않았다.
Claude 메모리는 이미 증류한 뒤 남긴 기록이며 전수 대조 작업은 취소했다. 추가 15개의 Source·Atomic 보강도 철회했다. 운영 MCP와 앱 간 저장·조회 확인 결과는 유지한다.
검증과 남은 확인
로컬 실제 Git·SDK 테스트 13개 통과, 실패·skip 0. 합성 비공개 GitHub에서 단일 저장·독립 읽기·새 저장소 인스턴스 재시도·충돌·ID 재사용 거부·주입한 응답 유실 복구·읽기 토큰 쓰기 거부를 확인했다. 실제 네트워크 장애 전체를 검증한 것은 아니다.
운영 stdio는 read/write 각각 실제 VAULT_RULES 본문과 동일 commit을 반환했다. Claude CLI 새 대화는 원격 공통 계약·시험 입구를 읽고 다음 단원 도출 및 전달/숙달 구분에 적용했다. Codex CLI 0.146.0은 설정 모델에 필요한 버전 미달로 시작이 거부돼 공식 0.153.4로 갱신했다. 갱신 뒤 Codex CLI도 새 대화에서 공통 계약·시험 입구를 조회해 답변에 적용했다. 두 CLI의 실제 도구 응답 4건 전체 본문과 commit을 원본과 대조했다(client-verification.json).
이 문서와 HANDOFF·진입 문서의 현재 저장은 운영 vault_apply_changes로 수행하며 실제 결과는 C:/labs/vault-mcp/artifacts/transition-result.json에 남긴다. 운영 앱 후속 확인은 아래 기록을 따른다. 이전 합성 앱 성공을 이번 운영 앱 성공으로 대체하지 않는다.
운영 앱 확인 — 2026-09-06
확인 기록 ID: desktop-operational-20260906-a.
Codex Windows 앱의 현재 대화에서 personal_vault 도구로 원격 운영 문서·공통 학습 계약·시험 index·SOA-C03 학습 계약·계획·활동 원장과 관련 Atomic 본문을 읽었다. 조회 기준은 e893daba05207924cad4cc02c92ec82a3c73fae6이다. 공통 계약과 시험 index의 링크를 따라 필요한 원문을 선택했고, 학습 본문은 로컬 검사 사본이나 비활성화된 자격시험·PKM 스킬에서 읽지 않았다. 이번 관찰은 인계 브리핑 뒤 이어진 현재 앱 대화이며, 모든 스킬과 사전 맥락을 제거한 독립 시험은 아니다.
계획 soa-cloudops-operational-reconnection version 1과 원장의 2026-09-01-008·2026-09-01-009 전달 사건을 대조했다. 01·02의 전달 및 03의 선수 관계에 따라 다음 전달 대상은 03 — 이벤트 라우팅과 자동 복구(03-event-routing-and-automated-remediation)다. 전달을 숙달로 해석하지 않았으며 학습 원장·계획·자료는 변경하지 않았다. 이 결과는 학습 재개 규칙 적용 확인이며 새 구간의 실제 전달은 아니다.
근거: 학습 작업공간 계약, 20 Areas/Certifications/exams/aws-soa-c03/learning-contract, 20 Areas/Certifications/exams/aws-soa-c03/study-plan, 20 Areas/Certifications/exams/aws-soa-c03/activity-ledger, 자격시험 학습에서 공식 자료와 AI의 역할을 분리한다.
이 절과 HANDOFF 갱신을 운영 앱의 일반 Markdown 저장 확인 대상으로 사용한다. 저장 결과의 실제 commit·재조회 대조는 C:/labs/vault-mcp/artifacts/desktop-operational-result.json에 남긴다. 이 문장 자체는 저장 성공 영수증을 대신하지 않는다.
Claude 데스크톱 후속 확인
사용자가 새 Claude Code 데스크톱 대화에서 읽기 전용 확인 요청을 실행했다. 세션 44618cf1-e920-4eca-b0ba-d7aeba7a74f4의 사용자 입력 1건과 entrypoint=claude-desktop, 2026-09-06 02:08~02:10 KST의 실제 도구·답변 로그를 대조했다. ToolSearch 1회 뒤 Vault 검색 2회는 commit 생략으로 최신 9cd4d7d576431935858484328763cc54728d3301을 얻었고, 읽기 3회는 그 commit에 고정됐다. 원격 반환 문서 7개 전체 본문을 같은 commit의 독립 MCP 재조회와 대조해 모두 일치했다.
Claude는 확인 기록 ID desktop-operational-20260906-a, 그 기록의 조회 기준 e893daba05207924cad4cc02c92ec82a3c73fae6, 이번 조회 9cd4d7d576431935858484328763cc54728d3301을 구분했다. 학습 계약 version 2, 계획 version 1과 원장의 전달 정정 사건 008·단원 02 전달 사건 009를 적용해 다음 전달 단원을 03으로 도출했다. 파일·링크만 만든 최초 사건 004를 후속 정정 없이 전달 완료로 세지 않았고 전달과 숙달도 구분했다. 사용자 요청에 따라 Vault 쓰기 도구나 문서 편집 도구를 호출하지 않았다.
HANDOFF 읽기 1회는 클라이언트 출력 한도를 넘어 MCP 결과 파일로 전환됐다. Claude는 Bash/Python으로 그 결과 파일에서 현재 운영 기록을 추출했다. 저장된 원격 응답의 HANDOFF 전체 본문도 독립 재조회와 일치했다. 이는 로컬 Vault 검사 사본 사용이 아니라 클라이언트가 저장한 MCP 결과 읽기이며, 출력 한도 없이 모든 응답이 본문에 전달된 시험으로 표현하지 않는다.
따라서 Codex 운영 앱의 일반 Markdown 저장 → 새 Claude 운영 앱 대화의 같은 저장 commit 읽기 및 학습 계약 적용을 확인했다. 이번에 Claude 운영 앱의 쓰기를 시험한 것은 아니며, 모든 스킬·사전 지식의 완전 격리나 모든 사용자 작업의 성공으로 확대하지 않는다. 이번 로그에는 개인 Vault 스킬 호출과 로컬 Vault 본문 읽기가 없었다.
원문 로그: C:/Users/aica_/.claude/projects/C—labs-second-brain/44618cf1-e920-4eca-b0ba-d7aeba7a74f4.jsonl. 대조 결과는 C:/labs/vault-mcp/artifacts/desktop-operational-result.json의 Claude 확인 항목에 남긴다.
관련 AWS 계정 운영 기록
Billing 조회 권한과 기존 실습 자원 정리의 2026-09-10 확인 결과는 AWS 비용 조회 권한과 자원 정리 — 2026-09-10에 둔다. 이 기록의 IAM 콘솔 확인과 Vault MCP의 OAuth 접근은 서로 다른 검증이다.
증거 위치
C:/labs/vault-mcp/artifacts의 migration-manifest.json, backup-result.json, migration-verified-remote.json, github-general-result.json, connection-result.json, client-install-result.json과 클라이언트 원문 JSONL을 확인한다. HANDOFF는 재개 입구이며 이 문서가 현재 운영 전환 상태를 소유한다.
HTTPS·Auth0 연결 — 2026-09-09
ChatGPT의 Personal Vault는 AWS API Gateway와 Lambda를 통해 같은 비공개 GitHub main Markdown에 접근한다. 이 절의 최초 웹 검증 때는 Windows stdio 연결도 유지했으며, 아래 데스크톱 전환에서 HTTPS로 통일했다. HTTPS 주소는 https://7kvpsun1th.execute-api.ap-northeast-2.amazonaws.com/mcp 이다.
Auth0가 사용자 로그인과 토큰 발급을 담당하고, 서버는 지정한 사용자와 앱·issuer·audience·서명·만료·scope를 검사한다. 읽기는 vault:read, 저장은 vault:read와 vault:write를 요구한다. GitHub 읽기·쓰기 토큰은 사용자의 명시 승인으로 AWS 계정 886682668993의 Secrets Manager에 복사했다. 실행 역할은 그 두 비밀만 읽는다. 같은 실행 역할이 두 비밀을 읽을 수 있으므로 프로세스 침해에 대한 강한 읽기·쓰기 격리는 아니다.
웹의 모의 도구로 읽기·쓰기 권한, refresh 교환, 사용자 동의 취소 후 갱신 거부, 재동의 후 호출 복구를 확인했다. 실제 Vault 문서 읽기도 기존 personal_vault와 같은 commit을 반환했다. Android 별도 반복 시험은 필수 단계에서 제외했다.
원격 저장도 기존 허용 경로·크기 제한·expected_commit 충돌 검사·영속 영수증을 사용한다. 이 절을 저장하는 요청은 실제 HTTPS 쓰기 검증이며, 저장 성공은 도구가 반환한 실제 commit과 독립 재조회 결과로 판정한다.
배포 소스와 복구용 이전 ZIP은 C:/Users/aica_/.codex/visualizations/2026/09/05/01a072d3-07dc-7942-9558-d996a8db48e0/vault-https-runtime 에 있다. 실행은 AWS에서 수행되므로 이 컴퓨터가 꺼져도 서버는 동작한다. GitHub 토큰·Auth0 갱신 토큰의 만료와 서비스 장애는 별도 운영 조건이다.
데스크톱 HTTPS 전환 — 2026-09-09
사용자가 Codex·Claude도 AWS 경로로 통일하도록 요청했다. 두 사용자 설정의 personal_vault를 같은 HTTPS URL로 변경하고 Auth0 로그인까지 완료했다. 원래 설정은 C:/labs/vault-mcp/client-transition-20260909에 백업했다. 다른 MCP 설정은 보존했다.
Codex CLI 0.153.4의 새 실행에서 원격 vault_read로 VAULT_RULES.md를 읽고 commit 21a02fd57c43759f6808c75bcc994076d54d6e5e와 제목을 확인했다. Claude Code 2.1.261은 MCP OAuth 인증 성공과 HTTP Connected를 확인했다. Claude의 새 답변 실행은 Claude 자체 계정의 OAuth 세션 만료로 도구 호출 전에 실패했다. 이를 Vault MCP 인증 실패로 해석하지 않으며 Claude 모델을 통한 문서 읽기는 아직 미검증이다.
Auth0 Personal Vault 앱에는 기존 ChatGPT 복귀 주소와 Codex의 http://127.0.0.1:17631/callback/6JxgsDNztV6X, Claude의 http://localhost:17632/callback을 등록했다. 로컬 주소는 로그인 결과 수신용이며 Vault 서버는 AWS에서 실행된다. 다른 컴퓨터에서 Codex가 다른 복귀 경로를 생성하면 실제 경로를 확인해 등록한다. 각 앱의 OAuth 자격 증명은 해당 클라이언트 저장소에서 관리한다.
새 설정은 새 실행으로 검증했다. 열려 있던 데스크톱 대화가 자동으로 연결을 교체했다고 주장하지 않으며, 앱 재시작 또는 MCP 재연결 후 사용한다. 검증 원문은 백업 디렉터리의 codex-read.jsonl과 claude-read.json에 있다.
묶음 저장 전환 — 2026-09-10
사용자가 GitHub의 전체 diff 검토와 작업별 commit을 유지하도록 요청했다. 생성·수정·삭제를 AWS S3 비공개 초안에 누적하고, 검토한 버전을 한 commit으로 확정한다. 기존 vault_apply_changes는 도구 목록에서 제거했으며 호출되어도 BATCH_REQUIRED로 거부한다. 삭제 승인은 대화에서 받으며 별도 승인 화면은 두지 않는다.
main의 기존 86개 commit은 c15803068813fd9fbb11edacf861149259040f9d(Initial vault before batch commits)로 정리했다. 문서 등 211개 파일 내용은 그대로이고 옛 이력·84개 영수증은 backup/pre-batch-commits-20260910 브랜치와 로컬 bundle에 보존했다. 현재 main의 이전 영수증은 비웠으므로 옛 base의 요청은 최신 상태를 다시 읽고 처리한다.
초안 저장소는 AWS 계정 886682668993, 서울 리전의 personal-vault-drafts-886682668993-ap-northeast-2 버킷이다. 공개 접근 차단·AES256 저장 암호화·TLS 강제를 적용하고, Lambda 실행 역할에는 지정 사용자 prefix의 GetObject·PutObject·ListBucket만 허용했다. S3 조건부 쓰기로 초안 동시 편집을 보호한다. 사용자 주체는 검증된 Auth0 설정에서 파생하며 요청 인자로 받지 않는다.
로컬 실제 Git 검증에서 누적 중 commit 없음, 확정 후 한 commit, 삭제·충돌·검토 버전 변경·응답 유실 복구를 확인했다. 실제 S3와 GitHub의 별도 시험 브랜치에서 생성·수정·삭제·복구, 다른 인스턴스의 초안 재조회, 조건부 쓰기 거절과 확정 재시도를 확인했고 시험 브랜치·합성 초안은 정리했다. 이 시험으로 운영 main에 테스트 commit을 만들지 않았다.
배포 소스·테스트·이전 배포 ZIP·설정·검증 결과는 C:/Users/aica_/.codex/visualizations/2026/09/05/01a072d3-07dc-7942-9558-d996a8db48e0/vault-batch-runtime 에 보존한다. 구버전은 즉시 commit 동작으로 돌아가므로 자동 롤백 대상으로 사용하지 않는다. 장애 시 읽기 상태와 미확정 묶음을 먼저 확인하고, committing 상태는 같은 입력으로 영수증을 재대조한다.
학습 파일명 이관 지원 — 2026-09-10
사용자가 전체 스키마·이름·링크 변경을 한 commit으로 검토하도록 요청했다. 최종 묶음 한도를 300개 경로·4 MiB로 조정하고 stage 한 호출은 20개를 유지한다. S3 초안 JSON 한도는 본문 이스케이프·메타데이터를 포함해 8 MiB다. 문서당 256 KiB·허용 경로·동시 수정 검사·검토 버전 결합은 유지한다.
시험 폴더의 learner-owned/ 전체와 이전 learner-reflection.md는 자동 본문 검색·삭제 링크 검사에서 제외한다. 성찰의 실제 파일명을 바꿔도 폴더 소유권으로 보호하며 명시적 선택 읽기는 허용한다. 이관 문서와 옛 경로 대응은 자격증 학습 문서 이름 이관 — 2026-09-10에서 확인한다.
병행 사용 요청 제한 상향 — 2026-09-12
사용자가 여러 세션의 429 가능성에 대해 로그 확인과 상향을 요청했다. API Gateway 7kvpsun1th의 $default 단계 기본 요청 제한을 2026-09-12 09:36:04 KST에 초당 1회·버스트 2회에서 초당 10회·버스트 20회로 변경하고 독립 재조회로 확인했다. 별도 경로 재정의는 없으며 같은 경로를 쓰는 세션들이 그 한도를 공유한다.
관측한 하루의 API 요청 978건, 서버 5xx와 Lambda 동시 실행 제한 거절 0건을 바탕으로 병행 호출의 여유를 늘렸다. 최대 분당 78건은 9월 12일 09:05로, 9월 10일 묶음 저장 도입 이후의 기록이다. 한 commit으로 저장하는 것과 HTTP 요청을 한 번으로 묶는 것은 서로 다른 단위다.
변경 후 첫 인증 읽기 검증에서 3건 성공·1건 MCP 내부 오류가 있었고, 같은 입력으로 재시험한 4건은 모두 성공했다. API Gateway 접근 로그는 비활성화되어 있어 과거 429의 건별 원인과 장기 해소는 미확정이다. 재시험 성공을 내부 오류의 원인 해결로 판정하지 않는다.
한도 상향 자체와 실제 사용량의 비용을 구분했다. 비용 계산의 가정·제외 항목과 결정 근거는 원격 Vault 요청 제한과 비용 판단 - Codex 대화에 보존한다. 당시 사용량을 30일로 단순 환산한 API Gateway·Lambda 비용은 전체 운영 청구액이나 비용 상한이 아니다.
현재 설정·변경 응답·검증 기록과 이전 값 복원 명령은 C:/Users/aica_/.codex/visualizations/2026/09/12/01a09300-f30b-7fb3-bc82-7ec26c622227/vault-throttle/result.md 및 같은 디렉터리의 JSON 증거에 보존했다. CloudTrail의 해당 UpdateStage 요청은 두 제한값 조정과 기존 DetailedMetricsEnabled=false의 유지만 담고 있었다. Lambda 코드 해시·설정 버전·마지막 수정 시각도 변경 전과 같았다. 이번 변경에서 Lambda 코드와 묶음 저장 절차는 수정하지 않았다.