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
آخر نشاط في المصدر
١٦ سبتمبر ٢٠٢٦ في ٠٨:٢٦
لغة SKILL.md المكتشفة
الكورية
النجوم
٢
التفرعات
٠

خيارات التثبيت

يُحدَّد 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