Skip to main content

collapsing-per-item-dirs-merges-state-keyed-on-the-path

태스크마다 만들던 임시 디렉터리를 "아무도 안 쓰니까" 하나로 합치면, **그 경로로 키잉된 남의 상태**가 전부 하나로 합쳐진다 — 우연히 있던 격리가 사라지는데 런타임 동작 변화는 0으로 보인다. "안 쓰인다"를 내 코드에서만 grep 했기 때문이다. 트리거 - per-task/per-run 디렉터리 제거, "고정 cwd 하나로", 임시 디렉터리 정리 PR, 벤더 CLI/툴을 subprocess 로 띄우는 코드, 멀티테넌트 워커, "이 디렉터리는 아무도 읽거나 쓰지 않는다" 주석.

インストールへ移動

ソース情報

リポジトリ
blas1n/claude-skills
ソースの最終更新活動
2026年9月16日 08:26
検出された SKILL.md の言語
韓国語
スター
2
フォーク
0

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
name
collapsing-per-item-dirs-merges-state-keyed-on-the-path
description
태스크마다 만들던 임시 디렉터리를 "아무도 안 쓰니까" 하나로 합치면, **그 경로로 키잉된 남의 상태**가 전부 하나로 합쳐진다 — 우연히 있던 격리가 사라지는데 런타임 동작 변화는 0으로 보인다. "안 쓰인다"를 내 코드에서만 grep 했기 때문이다. 트리거 - per-task/per-run 디렉터리 제거, "고정 cwd 하나로", 임시 디렉터리 정리 PR, 벤더 CLI/툴을 subprocess 로 띄우는 코드, 멀티테넌트 워커, "이 디렉터리는 아무도 읽거나 쓰지 않는다" 주석.
# 경로를 공유하면, 그 경로로 키잉된 모든 것이 공유된다 ## Problem 정리 PR 의 논리는 흠잡을 데 없어 보인다: > "프로젝트는 디렉터리 하나와 1:1인데 왜 태스크마다 임시 디렉터리를 만드나? > **아무도 그 디렉터리를 읽거나 쓰지 않는다** — CLI 는 그냥 *cwd* 가 필요할 뿐이다. > 태스크별 디렉터리는 격리를 사준 게 없고, 영구 상태만 남겼다." 전부 사실이었다. 그런데 **내 코드가 안 쓴다는 것**이지, 내가 띄우는 **벤더 툴이 그 경로를 키로 쓰지 않는다는 뜻이 아니다.** 실제로 그 CLI 는 cwd 경로로: * 프로젝트 상태를 키잉하고 (그래서 `~/.claude/projects` 에 994개 중 972개가 태스크 잔재였다) * **auto-memory 저장소**를 키잉한다 — 턴 컨텍스트에 주입되고, **에이전트 런이 거기에 쓴다** ⇒ 태스크별 임시 디렉터리는 **우연히** 저장소를 격리하고 있었다. 하나로 합치는 순간 그 저장소는 **한 워커의 모든 태스크·모든 테넌트가 공유하는 하나**가 된다. 한 테넌트의 런이 쓴 메모가 다음 테넌트의 답변에 인용된다. ### 왜 안 잡히는가 * **PR 의 자기평가가 "런타임 동작 변화 0" 이다.** 유닛 테스트는 cwd 문자열만 보고, 벤더가 그 경로 아래 무엇을 쌓는지는 테스트 밖이다 * **합친 직후에는 비어 있다.** 새 디렉터리라 저장소가 0바이트 → 프로브해도 안전해 보인다. **잠복이지 안전이 아니다** — 며칠 쓰이면 채워진다 * 증거는 대개 **지운 쪽에** 남아 있다: 합치기 전의 태스크별 디렉터리들을 열어 보면 에이전트가 쓴 파일이 그대로 있다. *"뭐가 쌓였었나"* 를 보면 1분이면 끝난다 ## Solution 경로 하나로 합치기 전에: 1. **합치려는 경로 아래에 지금 무엇이 있는지 실제로 세라** — 내 코드가 아니라 **파일시스템에게** 물어라. `find <old-per-task-dirs> -type f` 한 번 2. 벤더 툴이 그 경로를 키로 쓰는지 확인해라. 홈 디렉터리 아래 `projects/<경로-슬러그>/` 같은 **경로를 슬러그로 박은 디렉터리**가 있으면 그게 답이다 3. 남는 게 있으면, 합치는 대신 **그 상태를 끄는 스위치**를 찾아라 (설정 키 하나가 대개 있다 — 디렉터리 유일성보다 싸고 명시적이다) 4. 주석의 "안전하게 공유된다" 옆에 **예외를 적어라**. 나중에 스위치가 빠지면 그 주장이 거짓이 된다는 것까지 ## Key Insights - **"안 쓰인다"를 내 레포에서만 grep 하면 절반만 증명한 것이다.** subprocess 로 띄우는 남의 프로그램은 내 grep 에 안 걸리면서 그 경로로 상태를 쌓는다 - **유일성이 격리를 사주고 있었는지 아닌지는, 유일성을 없애 봐야 안다** — 그리고 그때는 이미 합쳐진 뒤다. 없애기 전에 세라 - **빈 저장소는 무해의 증거가 아니라 방금 만들어졌다는 증거다.** "지금 0건" 과 "구조상 0건" 을 구분해라 - 격리가 **의도의 산물이 아니라 부작용**이었을 때 가장 조용히 사라진다. 정리 PR 이 없애는 게 '쓰레기'인지 '우연한 벽'인지는 이름만 봐서는 구분이 안 된다 - 관련: [[an-isolation-flag-covers-a-mechanism-not-its-goal]] · [[deleting-a-layer-reopens-what-the-layer-was-covering]] · [[agent-executor-host-cwd-leak]]
GitHubで見る