From 1c8549fa5fbd93ac804a851e39e827b852e590ea Mon Sep 17 00:00:00 2001 From: YEONGUK LEE Date: Wed, 7 Oct 2026 21:28:08 +0900 Subject: [PATCH] docs(ko): improve translation clarity --- README.ko.md | 100 ++++++++++++++++-------------- RELEASING.ko.md | 46 +++++++------- SECURITY.ko.md | 18 +++--- plugins/session-peer/README.ko.md | 4 +- 4 files changed, 86 insertions(+), 82 deletions(-) diff --git a/README.ko.md b/README.ko.md index 5dd59e6a..f5a2db34 100644 --- a/README.ko.md +++ b/README.ko.md @@ -1,3 +1,5 @@ +
+ # session-peer [![PyPI](https://img.shields.io/pypi/v/session-peer)](https://pypi.org/project/session-peer/) @@ -8,20 +10,22 @@ [English](https://github.com/abruption/session-peer/blob/main/README.md) · **한국어** · [日本語](https://github.com/abruption/session-peer/blob/main/README.ja.md) · [简体中文](https://github.com/abruption/session-peer/blob/main/README.zh-CN.md) -**하나의 CLI로 로컬 또는 SSH 원격의 Claude Code·Codex 세션을 찾고 메시지를 보내세요.** +**하나의 CLI로 로컬 또는 SSH 원격 환경에서 Claude Code·Codex 세션을 찾고 메시지를 보낼 수 있습니다.** + +
-다른 세션에 변경 검토, 진행 상황 보고, 작업 인계를 요청할 수 있어요. -각 에이전트의 기본 수신함과 큐를 사용하며, 응답 방식은 수신 에이전트가 결정해요. +다른 세션에 변경 사항 검토, 진행 상황 공유, 작업을 이어받아 달라고 요청할 수 있습니다. +session-peer는 각 에이전트가 기본 제공하는 수신함과 큐를 사용하며, 응답 방식은 수신 에이전트가 결정합니다. ## 데모 -![Codex가 Claude Code에 요청을 보내고 명시적인 ACK를 받는 데모](https://raw.githubusercontent.com/abruption/session-peer/main/docs/assets/session-peer-live-codex-claude.gif) +![Codex가 Claude Code에 요청을 보내고 명시적인 ACK(수신 확인)를 받는 데모](https://raw.githubusercontent.com/abruption/session-peer/main/docs/assets/session-peer-live-codex-claude.gif) -session-peer 1.0.2로 실제 로컬 요청과 회신을 주고받았어요. Codex가 Claude Code에 -요청을 보내고 `ACK DEMO-READY`를 받아요. CLI 출력과 메시지 발췌를 익명화해 다시 그린 -약 22초 애니메이션이며 화면 녹화는 아니에요. 전송 성공만으로 ACK를 뜻하지는 않아요. +session-peer 1.0.2를 사용해 실제 로컬 요청과 회신을 주고받았습니다. Codex가 Claude Code에 +요청을 보내고 `ACK DEMO-READY`를 받습니다. CLI 출력과 메시지 발췌를 익명화해 다시 그린 +약 22초 애니메이션이며, 화면 녹화본은 아닙니다. 전송 성공만으로 ACK가 확인되는 것은 아닙니다. ## 빠른 시작 @@ -29,10 +33,10 @@ session-peer 1.0.2로 실제 로컬 요청과 회신을 주고받았어요. Code ### 설치 -Python 3.9 이상이 필요해요. 기본 로컬·SSH CLI는 외부 Python 패키지에 의존하지 않아요. +Python 3.9 이상이 필요합니다. 기본 로컬·SSH CLI는 외부 Python 패키지에 의존하지 않습니다. 현재 안정판: **1.0.4**. -2026-10-07 유지보수 릴리스의 [릴리스 노트](docs/ko/releases/v1.0.4.md)를 참고하세요. 패키지 공개와 운영 배포는 별개입니다. +2026-10-07 유지보수 릴리스의 [릴리스 노트](docs/ko/releases/v1.0.4.md)를 참고하십시오. 패키지 공개와 운영 배포는 별개입니다. ```bash pipx install session-peer @@ -40,12 +44,12 @@ session-peer --version session-peer list ``` -uv를 선호하면 `uv tool install session-peer`를 사용하세요. 네이티브 Windows, -가상 환경의 pip, 독립 스크립트·SSH 설치 방법은 -[설치 가이드](https://github.com/abruption/session-peer/blob/main/docs/ko/cli-reference.md#install)에 있어요. +uv를 선호하면 `uv tool install session-peer`를 사용하십시오. 네이티브 Windows, +가상 환경에서 pip를 사용하는 방법, 독립형(standalone) 설치 및 SSH 배포 방법은 +[설치 가이드](https://github.com/abruption/session-peer/blob/main/docs/ko/cli-reference.md#install)를 참고하십시오. -SSH 조회의 예시 호스트 `worker`를 실제 호스트 또는 별칭으로 바꿔주세요. -그런 다음 가상 세션 이름과 전체 UUID를 조회한 목적지로 바꿔주세요. +SSH 조회 예시의 호스트 `worker`를 실제 호스트 또는 별칭으로 바꾸십시오. +그런 다음 예시 세션 이름과 전체 UUID를 list 결과에 표시된 대상으로 바꾸십시오. ```bash session-peer list --host worker @@ -53,22 +57,22 @@ session-peer send --to api-worker --message "진행 상황을 알려주세요" session-peer send --host worker --to 'codex:00000000-0000-4000-8000-000000000001' --message "변경 사항을 검토해주세요" ``` -SSH 목적지에는 Python과 대상 에이전트의 기본 수신함·큐가 필요하지만, -session-peer CLI를 설치할 필요는 없어요. 사용자 지정 Codex 홈은 조회 결과의 -`codexHome`을 `--codex-home`으로 지정하고, `--dry-run`으로 전송 없이 검증하세요. -세션을 소유한 목적지 계정을 사용하세요(`--host USER@HOST`). -SSH 접근 권한과 수신 세션의 권한이 적용돼요. +SSH 대상에는 Python과 대상 에이전트가 기본 제공하는 수신함·큐가 필요하지만, +대상에 session-peer CLI를 설치할 필요는 없습니다. 사용자 지정 Codex 홈을 사용한다면 조회 결과의 +`codexHome`을 `--codex-home`으로 지정하고, 실제 전송 없이 `--dry-run`으로 검증하십시오. +세션을 소유한 대상 계정을 지정하십시오(`--host USER@HOST`). +SSH 접근 제어와 수신 세션의 권한은 그대로 적용됩니다. -**`posted` / `queued`는 제출 확인이며 소비·ACK·작업 완료를 뜻하지 않아요.** -필요하면 명시적으로 회신을 요청하세요. 일반 전송은 비활성 Codex 목적지를 기본적으로 거부하고, -해당 세션을 시작하지 않아요. 결과가 불확실한 전송은 자동 재시도하지 마세요. +**`posted` / `queued`는 제출 확인일 뿐, 메시지 소비·ACK·작업 완료를 뜻하지 않습니다.** +필요하면 명시적으로 회신을 요청하십시오. 일반 전송은 비활성 Codex 대상을 기본적으로 거부하며, +해당 세션을 시작하지 않습니다. 결과가 불확실한 전송은 자동으로 다시 시도하지 마십시오. -선택형 [에이전트 스킬](https://github.com/abruption/session-peer-skill)은 실행 프로그램과 -별도로 설치해요. Skills CLI 명령은 설치 가이드를 참고하세요. +선택 사항인 [에이전트 스킬](https://github.com/abruption/session-peer-skill)은 실행 프로그램과 +별도로 설치합니다. Skills CLI 설치 명령은 설치 가이드를 참고하십시오. ### 업데이트 -실행 프로그램을 설치했던 관리자를 그대로 사용하세요. +실행 프로그램 설치에 사용한 패키지 관리자를 그대로 사용하십시오. ```bash pipx upgrade session-peer @@ -76,10 +80,10 @@ pipx upgrade session-peer # 또는, 해당 가상 환경에서: python -m pip install --upgrade session-peer ``` -로컬 설치에서 `session-peer update`는 독립 스크립트 실행 파일을 교체하며, -패키지 설치본에는 업그레이드 안내를 제공해요. 이 명령은 스킬을 갱신하지 않아요. -스킬에는 원래 설치 도구(Skills CLI 또는 동봉 사본의 `install.sh`)를 사용하세요. -[업데이트 상세와 원격 제약](https://github.com/abruption/session-peer/blob/main/docs/ko/cli-reference.md#updating)을 참고하세요. +로컬 설치에서 `session-peer update`는 독립형 런타임 파일을 교체하며, +패키지 설치본에는 업그레이드 방법을 안내합니다. 이 명령은 에이전트 스킬을 갱신하지 않습니다. +스킬을 업데이트할 때는 원래 설치 도구(Skills CLI 또는 동봉 사본의 `install.sh`)를 사용하십시오. +[업데이트 상세와 원격 제약](https://github.com/abruption/session-peer/blob/main/docs/ko/cli-reference.md#updating)을 참고하십시오. @@ -88,21 +92,21 @@ pipx upgrade session-peer - [문서 지도](https://github.com/abruption/session-peer/blob/main/docs/ko/README.md): 사용자·통합·운영·개발 가이드 - [CLI 참조](https://github.com/abruption/session-peer/blob/main/docs/ko/cli-reference.md): 옵션·JSON·설치 변형·마이그레이션 - [진단과 회신](https://github.com/abruption/session-peer/blob/main/docs/ko/diagnostics.md) · [여러 Codex 홈](https://github.com/abruption/session-peer/blob/main/docs/ko/multi-home-list.md) -- [AI 지원 설치](https://github.com/abruption/session-peer/blob/main/docs/ko/ai-assistant-guide.md) · [프로젝트 사이트](https://abruption.dev/projects/session-peer/) · [릴리스 노트](https://github.com/abruption/session-peer/releases) +- [AI 도구를 활용한 설치](https://github.com/abruption/session-peer/blob/main/docs/ko/ai-assistant-guide.md) · [프로젝트 사이트](https://abruption.dev/projects/session-peer/) · [릴리스 노트](https://github.com/abruption/session-peer/releases) - [릴리스 절차](https://github.com/abruption/session-peer/blob/main/RELEASING.ko.md) [기기 페어링·암호화 Relay](https://github.com/abruption/session-peer/blob/main/docs/ko/paired-devices.md)는 -Unix·Python 3.11 이상·`session-peer[relay]`와 고정된 기기 신원·명시적 수신 정책이 필요해요. -패키지 발행이 호스팅 서비스 가용성을 보장하지는 않아요. -블라인드 Relay는 애플리케이션 메시지 내용을 복호화할 수 없어요. -[MCP·Codex 플러그인](https://github.com/abruption/session-peer/blob/main/docs/ko/mcp.md)은 Python 3.10 이상과 -`session-peer[mcp]`가 필요하며, MCP wake에는 `send`와 `wake` 권한이 모두 필요해요. -[Wake](https://github.com/abruption/session-peer/blob/main/docs/ko/wake.md)는 명시적으로 요청할 때만 실행되며, -턴을 시작하고 사용량을 소비하거나 프로젝트 파일을 바꿀 수 있어요. -[Antigravity 브리지](https://github.com/abruption/session-peer/blob/main/docs/ko/antigravity.md)는 실험 상태예요. - -영어가 정본이며 한국어·일본어·중국어 간체 가이드의 정합성을 유지해요. -번역은 CLI의 출력 언어를 바꾸지 않아요. +Unix·Python 3.11 이상·`session-peer[relay]`, 고정된 기기 신원, 명시적 수신 정책이 필요합니다. +패키지를 공개해도 호스팅 서비스의 가용성이 보장되지는 않습니다. +블라인드 Relay는 애플리케이션 메시지 내용을 복호화할 수 없습니다. +[MCP(Model Context Protocol)·Codex 플러그인](https://github.com/abruption/session-peer/blob/main/docs/ko/mcp.md)은 Python 3.10 이상과 +`session-peer[mcp]`가 필요하며, MCP wake 기능에는 `send`와 `wake` 권한이 모두 필요합니다. +[Wake](https://github.com/abruption/session-peer/blob/main/docs/ko/wake.md)는 명시적으로 요청한 경우에만 실행됩니다. +턴을 시작하고 사용량을 소비하거나 프로젝트 파일을 변경할 수 있습니다. +[Antigravity 브리지](https://github.com/abruption/session-peer/blob/main/docs/ko/antigravity.md)는 실험 단계입니다. + +영어 문서가 정본이며, 한국어·일본어·중국어 간체 가이드는 영어 문서에 맞춰 관리합니다. +번역은 CLI의 출력 언어를 바꾸지 않습니다. ## 라이선스 @@ -110,12 +114,12 @@ Unix·Python 3.11 이상·`session-peer[relay]`와 고정된 기기 신원·명 ## 지원 및 보안 -버그·기능 제안은 [GitHub Issues](https://github.com/abruption/session-peer/issues/new/choose)를 사용하세요. +버그 보고와 기능 제안에는 [GitHub Issues](https://github.com/abruption/session-peer/issues/new/choose)를 사용하십시오. 보안 취약점은 공개 이슈가 아닌 [비공개 보고](https://github.com/abruption/session-peer/security/advisories/new)로 제출하고, -[보안 정책](https://github.com/abruption/session-peer/blob/main/SECURITY.ko.md)을 따라주세요. -공유할 진단 결과에서 비밀정보·대화·세션 ID·개인 경로를 가려주세요. +[보안 정책](https://github.com/abruption/session-peer/blob/main/SECURITY.ko.md)을 따르십시오. +진단 결과를 공유할 때는 비밀정보·대화·세션 ID·개인 경로를 가리십시오. -비공개 문의나 대체 보안 연락처는 제목에 `[session-peer]`를 넣어 -[support@abruption.dev](mailto:support@abruption.dev)로 이메일을 보내주세요. -지원은 최선을 다하되 응답 시한을 보장하지 않아요. 이메일은 수동 검토하며 공개 이슈로 자동 게시하지 않아요. -영어·한국어 보고를 환영해요. +비공개 문의나 대체 보안 연락은 제목에 `[session-peer]`를 넣어 +[support@abruption.dev](mailto:support@abruption.dev)로 이메일을 보내십시오. +최선을 다해 지원하지만 응답 시한은 보장하지 않습니다. 이메일은 수동으로 검토하며 공개 이슈로 자동 게시하지 않습니다. +영어와 한국어로 제보할 수 있습니다. diff --git a/RELEASING.ko.md b/RELEASING.ko.md index 67651b61..f8a6d4ff 100644 --- a/RELEASING.ko.md +++ b/RELEASING.ko.md @@ -1,23 +1,23 @@ # session-peer 릴리스 -1.0.4는 1.0.3 이후의 2026-10-07 유지보수 릴리스입니다. 준비만 승인된 경우 태그, 드래프트, 워크플로 실행 또는 공개 전에 중단합니다. 이 릴리스를 완료하라는 명시적 지시는 해당 공개 단계를 승인하지만, 필수 사람의 PyPI 환경 검토나 운영 배포를 대신하지 않습니다. 준비, 변경 불가능한 GitHub 공개, 사람이 수행하는 PyPI 환경 검토, 공개 후 검증을 구분합니다. 보호된 main은 검토·최신화된 PR과 Python 플랫폼 매트릭스, 문서, 셸, 패키지/단독 파일/MCP/Relay/Control, 통합 테스트 및 Python/Node 의존성 감사를 포함한 릴리스 게이트를 요구합니다. +1.0.4는 1.0.3 이후에 나온 2026-10-07 유지보수 릴리스입니다. 준비만 승인된 경우에는 태그 생성, 초안 작성, 워크플로 실행 또는 공개 단계로 넘어가지 않습니다. 이 릴리스를 완료하라는 명시적 지시는 해당 공개 단계를 승인하지만, 사람이 수행해야 하는 필수 PyPI 환경 검토나 운영 배포까지 승인하는 것은 아닙니다. 릴리스 준비, 불변 GitHub 릴리스 공개, 사람이 수행하는 필수 PyPI 환경 검토, 공개 후 검증은 각각 별도 단계입니다. 보호된 main에 반영하려면 검토를 마치고 최신 main을 반영한 PR과, Python 플랫폼 매트릭스·문서·셸·패키지/독립 실행 파일/MCP/Relay/Control 테스트·통합 테스트·Python/Node 의존성 감사를 포함한 릴리스 게이트가 필요합니다. ## 과거 증거와 현재 경계 -다섯 호스트의 v1.0.0 RC4 rc4-rerun-02 캠페인은 14,436.65초 실행됐습니다. complete 기록, 공개 상태 241/241, 프로브 147/147, 제출 21/21, Relay 재시작 복구 3.182초였습니다. 독립 ACK는 20/21입니다. T120 Windows 네이티브 Claude의 원래 ACK는 TUI 종료로 미확인이며 별도의 단발 확인에서 정확한 ACK를 받았습니다. 소유자가 #164에서 예외를 수락했습니다. 20/21을 유지하세요. 과거 증거는 v1.0.4를 검증하지 않습니다. #161의 외부 지연 근본 원인은 미확인입니다. +다섯 호스트에서 진행한 v1.0.0 RC4 rc4-rerun-02 캠페인은 14,436.65초 동안 실행됐습니다. 상태는 complete(완료)였고, 공개 health(서비스 상태) 점검 241/241, 프로브(연결 점검) 147/147, 제출 21/21, Relay 재시작 후 복구 시간 3.182초를 기록했습니다. 독립적으로 확인한 ACK(수신 확인)는 20/21입니다. T120 Windows 네이티브 Claude의 원래 ACK는 TUI가 종료되어 확인되지 않았지만, 별도의 단발 확인에서 정확한 ACK를 받았습니다. 소유자는 #164에서 이 예외를 수락했습니다. 집계는 20/21로 유지하십시오. 이 과거 증거는 v1.0.4를 검증하지 않습니다. #161은 계속 열려 있으며 외부 경로 정체의 근본 원인은 확인되지 않았습니다. -Python/PyPI 버전은 1.0.4, 해당 태그와 GitHub 릴리스는 v1.0.4입니다. 공개 승인 후에만 안정판·Latest로 설정합니다. 플러그인 버전은 독립적입니다. 코어는 Python 3.9+, MCP는 3.10+, Relay 수신기/서버는 Unix 또는 WSL과 Python 3.11+가 필요합니다. 서비스 수신기는 서비스 PATH의 Codex나 운영자 소유 codexBin 바인딩이 필요합니다. 패키지 공개는 호스팅 대응 배포, 기기군 설치, 운영 재시작, 실시간 OAuth 상태 또는 ACK를 증명하지 않습니다. 불확실한 결과는 자동 재전송을 허용하지 않습니다. +Python/PyPI 버전은 1.0.4이며 해당 태그와 GitHub 릴리스는 v1.0.4입니다. 공개 승인이 끝난 뒤에만 안정판·Latest(최신 릴리스)로 설정합니다. 플러그인 버전은 별도로 관리합니다. 코어에는 Python 3.9 이상, MCP에는 Python 3.10 이상이 필요합니다. Relay 수신기와 서버에는 Unix 또는 WSL 환경 및 Python 3.11 이상이 필요합니다. 서비스로 실행되는 수신기는 서비스 PATH에서 Codex를 찾을 수 있거나 운영자가 관리하는 codexBin 바인딩이 있어야 합니다. 패키지를 공개해도 호스팅 서비스에 대응 조치가 적용되거나, 전체 기기에 설치되거나, 운영 환경이 재시작되거나, 실시간 OAuth 상태가 확인되거나, 에이전트 ACK가 수신됐다는 뜻은 아닙니다. 결과가 불확실하면 자동으로 재전송하지 않습니다. ## 소스와 설정 게이트 -1. v1.0.4 변경을 1.0.3 및 네 언어 릴리스 노트와 대조합니다. 통합 main에 유지보수 수정 #262, #263, #264, #265, #266, #267 여섯 건을 요구합니다. 공개된 v1.0.3 보안 기록과 독립적인 스킬 버전/최소/전체 지원 계약을 보존합니다. 패키지/생성 버전, README 네 개의 안정판 안내와 아카이브 노트를 확인합니다. cc_peer.py는 동결 상태로 배포에서 제외하고 자격정보, 키, DB, 재생 상태, 브라우저 프로필, 로컬 증거와 채팅을 제외합니다. -2. 전체 로컬 테스트와 PR 릴리스 게이트를 실행합니다. 병합 후 통합된 공개 main의 정확한 커밋에서 CI 성공을 요구합니다. 비공개 보안 포크의 검사는 해당 공개 릴리스 게이트를 대체하지 않습니다. 깨끗한 wheel/sdist 설치, 격리된 설치 import, 정확한 CLI 버전, 초기화된 홈의 JSON list, extras와 pip check를 검증합니다. 명시적 빈 Codex 홈은 state_db_missing으로 안전하게 실패해야 합니다. 실시간 메시지를 보내지 않습니다. -3. PyPI에 1.0.4 파일이 없는지 확인합니다. 2026-10-07 준비 확인에서 해당 버전 JSON은 HTTP 404였습니다. GitHub Immutable Releases와 v* 태그 규칙에서 생성만 허용하고 우회 없는 수정/삭제 차단을 확인합니다. 소유자는 2026-10-03에 활성화했고 (규칙 24408525), 2026-10-05 확인에서는 엄격한 main 릴리스 게이트를 확인했습니다. 2026-10-07 GitHub API 확인에서 Immutable Releases 활성화 및 규칙 24408525의 활성 상태, refs/tags/v* 범위, 우회 없는 수정/삭제 차단을 재확인했습니다. 과거 v1.0.2는 비불변·자산 없음 상태로 검증된 단독 파일 릴리스가 아닙니다. 공개 전에 현재 설정을 다시 확인합니다. -4. Trusted Publisher가 session-peer를 abruption/session-peer, publish.yml, pypi로 연결하는지 확인합니다. 2026-10-05 로그인된 PyPI 브라우저 확인에서 해당 연결을 검증했습니다. 이는 과거 증거이며 새로운 PyPI 브라우저 재검증이 아닙니다. 2026-10-07 GitHub API 확인에서 검토자 `abruption` 필수, 자기 검토 허용 (`prevent_self_review: false`), `v*` 태그 허용을 재확인했습니다. 2026-10-05 확인 당시 관리자 우회는 활성화돼 있었습니다 (`can_admins_bypass: true`). 이 과거 관찰을 새로운 우회 정책 확인으로 취급하지 않습니다. 소유자의 이전 [2026-09-29 연결 확인](https://github.com/abruption/session-peer/issues/235#issuecomment-5882178667)도 과거 증거입니다. 설정을 재확인하고 정상적인 사람의 검토를 거치며 조용히 우회하지 않습니다. +1. v1.0.4 변경을 1.0.3 및 네 언어 릴리스 노트와 대조합니다. 통합 main에 유지보수 수정 #262, #263, #264, #265, #266, #267 여섯 건이 포함돼야 합니다. 공개된 v1.0.3 보안 기록과 스킬의 독립 버전 및 최소/전체 지원 계약을 보존합니다. 패키지와 생성 파일의 버전, 네 언어 README의 안정판 안내와 아카이브 노트를 확인합니다. 레거시 cc_peer.py는 동결 상태로 유지하고 배포에서 제외합니다. 자격정보, 키, DB, 재전송 방지 상태, 브라우저 프로필, 로컬 증거와 채팅도 배포에서 제외합니다. +2. 전체 로컬 테스트와 PR(풀 리퀘스트) 릴리스 게이트를 실행합니다. 병합 후 공개 main에 통합된 정확한 커밋에서 CI(지속적 통합)가 성공해야 합니다. 비공개 보안 포크의 검사는 공개 릴리스 게이트를 대체하지 않습니다. 깨끗한 환경에서 wheel/sdist를 설치하고, 격리 환경의 설치 패키지를 import하며, 정확한 CLI 버전, 초기화된 홈에서의 JSON list, 선택 의존성(extras)과 pip check를 검증합니다. Codex 홈을 명시적으로 비워 둔 경우에는 state_db_missing으로 차단 상태에서 실패해야 합니다. 이 게이트에서는 실제 메시지를 전송하지 않습니다. +3. PyPI에 1.0.4 파일이 없는지 확인합니다. 2026-10-07 준비 확인 당시 해당 버전의 JSON 응답은 HTTP 404였습니다. GitHub 불변 릴리스 기능과 v* 태그 규칙을 확인합니다. 태그 생성은 허용되고, 수정·삭제는 우회 없이 차단돼야 합니다. 소유자는 2026-10-03에 이를 활성화했고(규칙 24408525), 2026-10-05 확인에서는 엄격한 main 릴리스 게이트를 확인했습니다. 2026-10-07 GitHub API 확인에서도 불변 릴리스 기능과 규칙 24408525가 활성 상태이고, refs/tags/v*에 적용되며, 우회 없이 수정·삭제를 차단하는 것을 재확인했습니다. 과거 v1.0.2는 불변 릴리스가 아니었고 자산도 없어 검증된 독립형 설치 릴리스가 아닙니다. 공개 전에 현재 설정을 다시 확인합니다. +4. Trusted Publisher(신뢰된 게시자)가 session-peer를 abruption/session-peer, publish.yml, pypi에 연결하는지 확인합니다. 2026-10-05 로그인된 PyPI 브라우저에서 해당 연결을 확인했습니다. 이는 과거 증거이며 새 PyPI 브라우저 검증은 아닙니다. 2026-10-07 GitHub API 확인에서는 필수 검토자가 `abruption`이고, 자기 검토가 허용되며 (`prevent_self_review: false`), `v*` 태그가 허용되는 것을 재확인했습니다. 2026-10-05 확인 당시에는 관리자 우회도 활성화돼 있었습니다 (`can_admins_bypass: true`). 이 과거 관찰을 현재 우회 정책의 증거로 간주하지 않습니다. 소유자의 이전 [2026-09-29 연결 확인](https://github.com/abruption/session-peer/issues/235#issuecomment-5882178667)도 과거 증거입니다. 설정을 다시 확인하고 정해진 사람 검토 절차를 따르며, 이 절차를 숨긴 채 우회하지 않습니다. ## 변경 불가능한 초안 준비 -준비 PR 병합 후 정확한 main 커밋을 기록하고 해당 커밋에 lightweight 태그를 만듭니다. 기존 태그를 옮기지 않습니다. 저장소 소유자가 보호된 main의 해당 커밋에서 준비를 실행합니다. 실행 요청과 검증 사이에 main이 바뀌면 안전하게 실패합니다. +준비 PR 병합 후 정확한 main 커밋을 기록하고 그 커밋에 lightweight(주석 없는) 태그를 만듭니다. 기존 태그를 옮기지 않습니다. 저장소 소유자가 보호된 main의 해당 커밋에서 준비 작업을 실행합니다. 실행 요청과 검증 사이에 main이 바뀌면 작업은 차단 상태에서 실패합니다. ```bash git fetch origin main --tags @@ -32,37 +32,37 @@ gh workflow run prepare-release.yml --repo abruption/session-peer \ --ref main -f tag="$release_tag" ``` -prepare-release.yml이 소스/ref/버전/계보를 확인하고 두 번의 재현 빌드, 아카이브 검사, 격리 설치 테스트와 감사를 수행합니다. 빈 초안에 wheel, sdist, session_peer.py, install.sh, SKILL.md, SHA256SUMS, release-provenance.json의 정확히 일곱 자산을 증명·첨부합니다. manifest는 다섯 payload를, 서명 출처 증명은 manifest와 증거도 포함합니다. 기존 자산은 덮어쓰지 않습니다. 공개 전에 성공한 준비 실행, 커밋, 일곱 파일, 해시와 증명을 검토합니다. 초안 첨부는 공개가 아닙니다. +prepare-release.yml은 소스/ref/버전/커밋 계보를 확인하고, 재현 가능한 빌드 두 번과 아카이브 검사, 격리 설치 테스트 및 감사를 수행합니다. 비어 있는 초안에 wheel, sdist, session_peer.py, install.sh, SKILL.md, SHA256SUMS, release-provenance.json 등 정확히 일곱 개의 릴리스 파일을 증명과 함께 첨부합니다. manifest(릴리스 파일 목록)에는 배포 파일 다섯 개가 포함되며, 서명된 출처 증명에는 manifest와 검증 자료도 포함됩니다. 기존 파일은 덮어쓰지 않습니다. 공개 전에 준비 실행의 성공 여부, 정확한 커밋, 일곱 파일, 해시와 증명을 검토합니다. 초안에 파일을 첨부해도 공개된 것은 아닙니다. -## 고정된 GitHub 릴리스 공개 +## 불변 GitHub 릴리스 공개 -해당 버전에 대한 소유자의 명시적 승인으로 공개합니다. 이미 릴리스 완료를 지시했다면 이 절차의 승인 요건을 충족하므로 문서만을 이유로 두 번째 확인을 요구하지 않습니다. 필수적인 사람의 pypi 환경 검토는 대체하지 않습니다. 공개는 태그와 자산을 고정하고 publish.yml을 시작합니다. +해당 버전에 대해 소유자의 명시적 승인이 있을 때만 공개합니다. 이미 릴리스 완료를 지시했다면 이 런북의 승인 요건은 충족되므로, 런북에 적힌 절차만을 이유로 두 번째 확인을 요구하지 않습니다. 다만 이 지시는 필수적인 사람의 pypi 환경 검토를 승인하거나 대체하지 않습니다. 공개하면 태그와 릴리스 파일이 고정되고 publish.yml이 시작됩니다. ```bash gh release edit v1.0.4 --repo abruption/session-peer \ --draft=false --prerelease=false --latest ``` -publish.yml이 소유자, 정확한 태그/소스/main 계보를 확인하고 고정된 불변 자산을 내려받아 인증된 출처 증명과 manifest를 검증합니다. 재빌드·자산 추가는 하지 않습니다. PyPI 작업 전 설치 검사와 최신 의존성 감사가 다시 통과해야 합니다. 준비 시점 감사 성공은 현재 감사 증거가 아닙니다. +publish.yml은 소유자, 정확한 태그/소스/main 계보를 확인한 뒤 고정된 불변 릴리스 파일을 내려받고 인증된 출처 증명과 manifest를 검증합니다. 다시 빌드하거나 파일을 추가하지 않습니다. PyPI 작업 전에 설치 검사와 최신 의존성 감사가 다시 통과해야 합니다. 준비 단계에서 감사가 성공했더라도 현재의 감사 증거로 간주하지 않습니다. -## 대기 중인 PyPI 배포의 사람 검토 +## PyPI 배포 승인 대기 중 사람의 검토 -1. 업로드 전에 정확한 Actions 실행이 pypi 검토 대기인지 관찰합니다. 실행 URL/ID와 시도 번호, 태그, 커밋, SHA256SUMS, release-provenance.json, 대기 시각을 기록합니다. 소스 테스트와 설정은 대기를 증명하지 못합니다. 다음 릴리스에서 관찰하는 것이 #235 수락 검사입니다. -2. 필수 사람 검토자가 후보 증거와 현재 Trusted Publisher/환경 설정을 확인합니다. **Review deployments**에서 **pypi**를 선택하고 승인된 경우에만 **Approve and deploy**를 명시적으로 선택합니다. GitHub 공개 승인은 이 검토를 대체하지 않습니다. 배포가 대기 상태가 되면 필수적인 사람의 검토를 요청하고 환경 게이트를 유지합니다. -3. 거부하려면 **pypi**를 선택하고 이유와 함께 **Reject**를 선택합니다. 예상된 대기나 제어가 없으면 업로드 전에 중단·취소합니다. 거부/취소 실행을 보존하고 원인을 해결합니다. 거부를 피하려고 태그를 이동하거나 버전을 재사용하지 않습니다. -4. 검토자, 결정, 의견, 시각과 결과를 기록하고 업로드·검증 증거를 보존합니다. 거부는 공개 성공이나 승인 대기 검증 성공이 아닙니다. 관리자 우회는 예외로 별도의 명시적 소유자 승인이 필요하며 이유, 수행자, 시각, 실행, 태그, 커밋을 기록해야 합니다. +1. 업로드 전에 해당 Actions 실행이 pypi 환경의 승인 대기 상태인지 확인합니다. 실행 URL/ID와 시도 번호, 태그, 커밋, SHA256SUMS, release-provenance.json, 대기 시각을 기록합니다. 소스 테스트와 설정만으로는 승인 대기 상태를 입증할 수 없습니다. 다음 릴리스에서 실제 대기를 확인하는 것이 #235의 수락 검사입니다. +2. 필수 검토자는 후보 증거와 현재 Trusted Publisher/환경 설정을 확인합니다. **Review deployments**에서 **pypi**를 선택하고, 승인된 경우에만 **Approve and deploy**를 명시적으로 선택합니다. GitHub 릴리스 공개 승인은 이 검토를 대신하지 않습니다. 배포가 대기 상태가 되면 필수적인 사람 검토를 요청하고 환경 게이트를 유지합니다. +3. 업로드를 거부하려면 **pypi**를 선택하고 사유를 적은 뒤 **Reject**를 선택합니다. 예상한 대기 상태나 제어가 없다면 업로드 전에 중단하고 취소합니다. 거부/취소된 실행을 보존하고 원인을 해결합니다. 거부를 피하려고 태그를 옮기거나 버전을 재사용하지 않습니다. +4. 검토자, 결정, 의견, 시각과 결과를 기록하고 업로드·검증 증거를 보존합니다. 거부는 공개 성공도, 승인 대기 검증 성공도 아닙니다. 관리자 우회는 예외적인 경우에만 별도의 명시적 소유자 승인을 받아야 하며, 사유·수행자·시각·실행·태그·커밋을 기록해야 합니다. ## 공개 검증 또는 복구 -정확한 태그/커밋에서 publish.yml과 PyPI 검증이 성공했는지 확인합니다. PyPI 파일 두 개를 내려받아 정확한 파일 목록과 해시를 고정 후보/출처 증명과 대조하고 깨끗한 환경에서 각각 설치합니다. 격리 버전, 초기화된 홈 JSON list, extras와 pip check를 재확인합니다. 안정판/Latest와 v1.0.4 업데이트 선택을 확인합니다. 마일스톤 종료 전 증거를 기록하고 #161은 모니터링으로 유지합니다. +정확한 태그/커밋에 대해 publish.yml과 PyPI 검증이 성공했는지 확인합니다. PyPI 파일 두 개를 내려받아 파일 목록과 해시가 고정된 후보/출처 증명과 일치하는지 확인하고, 깨끗한 환경에서 각각 설치합니다. 격리 환경에서 버전, 초기화된 홈의 JSON list, extras와 pip check를 다시 확인합니다. 안정판/Latest 설정과 일반 업데이트가 v1.0.4를 선택하는지도 확인합니다. 마일스톤을 닫기 전에 증거를 기록하고, #161은 모니터링 이슈로 계속 열어 둡니다. -GitHub와 PyPI 공개는 별개의 되돌릴 수 없는 단계입니다. GitHub 공개 후 감사 실패로 PyPI 파일 없는 고정 릴리스가 남을 수 있습니다. 두 실행과 정확한 자산을 보존합니다. 감사 우회, 수정 자산 업로드 재실행, 기존 파일 건너뛰기, 버전 재사용은 하지 않습니다. 일부 1.0.4 업로드나 불일치는 승격을 중단합니다. 첫 실패 게이트를 진단하고 검토된 수정과 새 버전 (통상 1.0.5)으로 전진합니다. yank도 재사용을 허용하지 않습니다. +GitHub와 PyPI 공개는 서로 별개이며 되돌릴 수 없습니다. GitHub 릴리스 공개 후 감사에 실패하면 PyPI 파일이 없는 고정 릴리스가 남을 수 있습니다. 두 실행 기록과 해당 릴리스 파일을 보존합니다. 감사를 우회하거나, 수정된 파일로 업로드를 다시 실행하거나, 이미 존재하는 파일을 건너뛰거나, 버전을 재사용하지 않습니다. 1.0.4 파일 일부만 업로드되거나 파일이 일치하지 않으면 승격을 중단합니다. 처음 실패한 게이트의 원인을 진단하고 검토된 수정 사항을 새 버전(일반적으로 1.0.5)에 반영해 진행합니다. PyPI에서 yank(일반 의존성 해결에서 해당 버전을 제외하는 표시)해도 버전을 재사용할 수 없습니다. -## 검증된 단독 파일 설치 +## 검증된 독립 실행 파일 설치 -최신 인증된 GitHub CLI가 gh attestation verify와 서명 워크플로, 소스 ref/digest, OIDC issuer, 호스팅 러너 정책을 지원해야 합니다. 테스트 기준은 2.102.0이며 모든 플래그를 지원하는 최초 버전은 미확인입니다. 저장소/증명 읽기 권한이면 충분하고 공개 권한은 필요하지 않습니다. [GitHub CLI 검증 소스](https://github.com/cli/cli/blob/v2.102.0/pkg/cmd/attestation/verify/verify.go)에 정책 플래그가 있습니다. 로컬 fixture는 정책/순서/오류 동작을 확인하며 실제 서명 수락을 증명하지 않습니다. +최신 인증된 GitHub CLI는 gh attestation verify와 서명자 워크플로, 소스 ref/digest, OIDC(OpenID Connect) 발급자, 호스팅 러너 정책을 지원해야 합니다. 테스트 기준 버전은 2.102.0이며 모든 플래그를 지원하는 최초 버전은 확인되지 않았습니다. 저장소와 증명을 읽을 권한이면 충분하며 공개 권한은 필요하지 않습니다. [GitHub CLI 검증 소스](https://github.com/cli/cli/blob/v2.102.0/pkg/cmd/attestation/verify/verify.go)에 정책 플래그가 정의되어 있습니다. 로컬 fixture(준비된 테스트 자료)는 정책·순서·오류 처리를 확인할 뿐 실제 서명 검증의 성공 여부를 입증하지 않습니다. -설치기는 검증된 Latest 불변 자산을 기본으로 사용합니다. --local-source는 인접 소스를 명시적으로 신뢰하며 --main은 미검증 개발 소스를 선택합니다. 증명이 없거나 과거 미서명 릴리스이면 실패합니다. 검증이 불가능하면 pipx/uv/pip을 사용합니다. 실행 전에 install.sh를 인증합니다: +설치 스크립트는 검증된 Latest 불변 릴리스 파일을 기본으로 사용합니다. --local-source는 인접한 소스를 명시적으로 신뢰하며, --main은 검증되지 않은 개발 소스를 명시적으로 선택합니다. 증명이 없거나 과거의 미서명 릴리스이면 설치가 차단됩니다. 검증할 수 없다면 pipx/uv/pip을 사용하십시오. 실행 전에 install.sh를 인증하십시오: ```bash set -eu @@ -84,4 +84,4 @@ gh attestation verify "$staging/install.sh" --repo "$repo" \ sh "$staging/install.sh" ``` -다운로드 상한은 단독 파일 8 MiB, 지원 파일 256 KiB, 메타데이터 1 MiB입니다. 인증된 manifest/출처 증명, 정확한 태그/버전, 임시 --version 검사 후에 교체합니다. SSH 배포 전에 송신자가 검증하므로 오프라인 대상에는 Python만 필요합니다. 검증 실패 시 기존 파일을 유지합니다. SSH 허용 목록, 기존 페어링 바인딩 검토, Control 로그인 세션 이전은 릴리스 노트를 확인하세요. +다운로드 상한은 독립 실행 파일 8 MiB, 지원 파일 256 KiB, 메타데이터 1 MiB입니다. 인증된 manifest/출처 증명, 정확한 태그/버전, 스테이징된 파일의 --version 검사 후에 기존 파일을 교체합니다. SSH 배포 전에 송신자가 검증하므로 원격 대상에는 Python만 필요합니다. 검증에 실패하면 기존 파일은 그대로 유지됩니다. SSH 옵션 허용 목록, 기존 페어링 바인딩 검토, Control 로그인 세션 전환은 릴리스 노트를 확인하십시오. diff --git a/SECURITY.ko.md b/SECURITY.ko.md index 3c2e6490..be800430 100644 --- a/SECURITY.ko.md +++ b/SECURITY.ko.md @@ -2,24 +2,24 @@ ## 취약점 보고 -의심되는 취약점에 대해서는 [GitHub 비공개 취약점 보고](https://github.com/abruption/session-peer/security/advisories/new)를 이용하십시오. 공개 이슈, 풀 리퀘스트 또는 댓글에 이를 공개하지 마십시오. +취약점이 의심되면 [GitHub 비공개 취약점 보고](https://github.com/abruption/session-peer/security/advisories/new)를 이용하십시오. 공개 이슈, 풀 리퀘스트 또는 댓글에 내용을 공개하지 마십시오. -해당 양식을 사용할 수 없는 경우 제목에 `[session-peer] Security`를 포함하여 [support@abruption.dev](mailto:support@abruption.dev?subject=%5Bsession-peer%5D%20Security)로 이메일을 보내주십시오. 이메일은 대체 비공개 연락 채널이며 종단간 암호화된 제출 메커니즘이 아닙니다. 민감한 정보를 삭제한 설명으로 시작하십시오. 실제 비밀정보나 프로덕션 데이터를 보내지 마십시오. +해당 양식을 사용할 수 없다면 제목에 `[session-peer] Security`를 포함해 [support@abruption.dev](mailto:support@abruption.dev?subject=%5Bsession-peer%5D%20Security)로 이메일을 보내십시오. 이메일은 대체 비공개 연락 수단일 뿐, 종단 간 암호화로 보호되는 제보 수단은 아닙니다. 처음에는 민감한 정보를 가린 설명만 보내고, 현재 유효한 비밀정보나 운영 데이터는 보내지 마십시오. -영향을 받는 버전 또는 커밋, 설치 방법, 각 엔드포인트의 OS, Python 및 에이전트 버전, 영향을 받는 명령 또는 구성 요소, 공격자에게 필요한 접근 권한, 예상된 동작 및 관찰된 동작, 영향도, 그리고 더미 계정, 경로, 세션 및 메시지를 사용한 최소한의 재현 방법을 포함하십시오. +영향을 받는 버전 또는 커밋, 설치 방법, 각 엔드포인트의 OS·Python·에이전트 버전, 영향을 받는 명령 또는 구성 요소, 공격자에게 필요한 접근 권한, 예상 동작과 실제 관찰 결과, 영향도, 더미 계정·경로·세션·메시지를 사용한 최소 재현 방법을 포함하십시오. -진단 결과에서 토큰, 비밀번호, 개인 키, 페어링 시크릿, 대화 텍스트, 세션/스레드 식별자, 개인 경로, 호스트 이름 및 주소를 제거하십시오. 관계가 중요한 부분에는 일관된 플레이스홀더를 사용하십시오. 완전한 에이전트 홈, SQLite 데이터베이스, JSONL 트랜스크립트, 브라우저 프로필 또는 `.env` 파일을 업로드하지 마십시오. 노출된 시크릿은 해당 제공업체를 통해 철회하거나 순환하십시오. 공개 댓글을 삭제하는 것만으로는 무효화되지 않습니다. +진단 자료에서 토큰, 비밀번호, 개인 키, 페어링 비밀정보, 대화 내용, 세션/스레드 식별자, 개인 경로, 호스트 이름과 주소를 제거하십시오. 대상 간 관계를 보존해야 한다면 같은 대상을 같은 플레이스홀더로 표시하십시오. 에이전트 홈 디렉터리 전체, SQLite 데이터베이스, JSONL 대화 기록, 브라우저 프로필 또는 `.env` 파일을 올리지 마십시오. 노출된 비밀정보는 해당 제공업체에서 폐기하거나 교체·재발급하십시오. 공개 댓글만 삭제해서는 노출된 비밀정보가 무효화되지 않습니다. ## 검토 및 지원 버전 -보고서는 최선의 노력을 다해 수동으로 검토되며 응답이나 수정 기한은 보장되지 않습니다. 어떤 버전에 대한 보고서든 환영합니다. 유지 관리는 최신 session-peer 릴리스에 중점을 두며 이전 버전 및 레거시 cc-peer 패키지에는 보장된 백포트 정책이 없습니다. +제보는 가능한 범위에서 수동으로 검토하지만, 응답이나 수정 기한은 보장하지 않습니다. 어떤 버전에 대한 제보든 받습니다. 유지 관리는 최신 session-peer 릴리스에 집중하며, 이전 버전과 레거시 cc-peer 패키지에는 백포트를 보장하지 않습니다. -메인테이너는 제보자와 함께 조사 및 공개를 조율합니다. 비공개 보고서 및 이메일은 공개 이슈로 자동 전환되지 않습니다. 영어 및 한국어 보고서를 환영합니다. +유지관리자는 제보자와 함께 조사 및 공개 시점을 조율합니다. 비공개 제보와 이메일은 공개 이슈로 자동 전환되지 않습니다. 영어와 한국어 제보를 받습니다. -일반적인 버그 및 기능 요청은 [공개 이슈 템플릿](https://github.com/abruption/session-peer/issues/new/choose)을 이용하십시오. +일반적인 버그 보고와 기능 요청에는 [공개 이슈 템플릿](https://github.com/abruption/session-peer/issues/new/choose)을 이용하십시오. ## 의존성 취약점 모니터링 -Dependabot 취약점 알림은 버전 업데이트 풀 리퀘스트와 별개로 활성화되어 있습니다. Dependabot의 자동 보안 업데이트 풀 리퀘스트는 비활성화되어 있으며, Dependabot 버전 업데이트 설정도 없습니다. 메인테이너가 알림을 검토하고 의존성 및 빌드 도구의 고정 버전을 수동으로 업데이트합니다. +Dependabot 취약점 알림은 버전 업데이트 풀 리퀘스트와 별개로 활성화되어 있습니다. Dependabot의 자동 보안 업데이트 풀 리퀘스트는 비활성화되어 있고, Dependabot 버전 업데이트 설정도 없습니다. 유지관리자는 알림을 검토한 뒤 의존성과 빌드 도구의 고정 버전을 수동으로 업데이트합니다. -별도의 [예약된 의존성 감사](.github/workflows/dependency-audit.yml)는 매주 월요일 06:23 UTC에 실행되며 `workflow_dispatch`로 수동 실행할 수 있습니다. 격리된 환경의 Python `relay,mcp` 런타임 의존성을 `pip-audit`로, `control/`의 Node 런타임 의존성을 `npm audit --omit=dev`로 감사합니다. 취약점 발견과 감사 오류는 해당 감사 실행을 실패 처리하며, 작업 요약과 30일간 보관되는 다운로드 가능한 JSON/로그 아티팩트에 표시됩니다. 이 워크플로는 풀 리퀘스트에서 실행되거나 CI의 `release-gate`에 참여하지 않습니다. 기존 CI 및 릴리스 감사는 계속 적용됩니다. +별도의 [정기 의존성 감사](.github/workflows/dependency-audit.yml)는 매주 월요일 06:23 UTC에 실행되며 `workflow_dispatch`로 수동 실행할 수 있습니다. 격리된 환경에서 Python `relay,mcp` 런타임 의존성은 `pip-audit`로, `control/`의 Node 런타임 의존성은 `npm audit --omit=dev`로 감사합니다. 취약점이 발견되거나 감사 오류가 나면 해당 감사 실행은 실패하며, 결과는 작업 요약과 30일간 보관되는 다운로드 가능한 JSON/로그 아티팩트에 표시됩니다. 이 워크플로는 풀 리퀘스트에서는 실행되지 않으며 CI의 `release-gate`에도 포함되지 않습니다. 기존 CI 및 릴리스 감사는 계속 적용됩니다. diff --git a/plugins/session-peer/README.ko.md b/plugins/session-peer/README.ko.md index fffcd42f..37913e31 100644 --- a/plugins/session-peer/README.ko.md +++ b/plugins/session-peer/README.ko.md @@ -1,5 +1,5 @@ # session-peer Codex 플러그인 -Python 3.10+에서 `session-peer[mcp]`를 설치한 다음, Codex 호스트의 PATH에서 `session-peer-mcp`를 사용할 수 있도록 설정합니다. 저장소 체크아웃에서 `codex plugin marketplace add /absolute/path/to/session-peer`를 실행한 후 `codex plugin add session-peer@session-peer`를 실행합니다. 체크아웃에는 `.agents/plugins/marketplace.json`이 포함되어 있습니다. 매니페스트는 번들된 `.mcp.json` stdio 서버를 등록합니다. +Python 3.10 이상 환경에서 `session-peer[mcp]`를 설치한 뒤, Codex 호스트의 PATH에서 `session-peer-mcp` 명령을 찾을 수 있도록 설정하십시오. 저장소를 체크아웃한 디렉터리에서 `codex plugin marketplace add /absolute/path/to/session-peer`를 실행한 다음 `codex plugin add session-peer@session-peer`를 실행하십시오. 체크아웃에는 `.agents/plugins/marketplace.json`이 포함되어 있습니다. 매니페스트는 플러그인에 포함된 `.mcp.json`에 정의된 표준 입출력(stdio) 서버를 등록합니다. -서버 환경의 `SESSION_PEER_MCP_CONFIG`를 절대 경로 정책 파일로 설정하십시오. 이것이 없으면 로컬 목록 조회만 허용됩니다. [MCP 설정 및 정책](../../docs/ko/mcp.md)을 참조하십시오. 이 번들을 설치한다고 해서 Python 의존성이 설치되거나 전송 권한이 부여되지는 않습니다. +서버 환경 변수 `SESSION_PEER_MCP_CONFIG`에 정책 파일의 절대 경로를 설정하십시오. 이 변수를 설정하지 않으면 로컬 세션 목록 조회만 허용됩니다. [MCP 설정 및 정책](../../docs/ko/mcp.md)을 참조하십시오. 이 번들을 설치해도 Python 의존성이 설치되거나 전송 권한이 부여되지는 않습니다.