배경
2026-08-23 sogyo 사건(인시던트: seoyoon-family-wiki pages/incidents/2026-08-23-sogyo-distill-pending-drain-storm.md):
- 01:32 KST 플릿 공유 Claude 주간 쿼터 소진 → 모든
claude -p 추출이 ec=1 즉사
- SessionStart re-entry 증폭(97,878 spawns)은 #1248로 수정 완료 (sogyo 배포·테스트 23/23 확인)
- 그러나 스톰 증폭기만 제거됐을 뿐, 실패를 영속/일시로 구분하지 않는 근원 구조는 그대로 — 쿼터가 죽은 19시간 동안 저널 0→134건 적재, 침 크론 무한 헛발사
남은 구조 결함 (우선순위순)
1. 영속 실패 회로차단기 없음
extract.sh 실패를 ec=1 한 종류로만 본다. weekly limit·Not logged in 같은 영속 오류는 재시도가 무의미한데 일시 오류와 동일하게 무한 재시도한다.
- 제안: 추출 실패 출력에서 영속 오류 클래스 감지(패턴:
weekly limit, Not logged in, invalid_grant) → 연속 N회(기본 3) 시 distill.disabled 자동 trip + 사유 파일 + 텔레그램 알림. 복구는 수동 해제만.
2. pending-drain 부하 게이트 없음
pending-drain.sh는 노드 부하와 무관하게 워커를 스폰한다.
- 제안:
load1 > nproc×2 또는 MemAvailable < 256MiB 또는 스왑 잔여 < 10%이면 skip reason=load-gate. #1248의 cap과 직교.
3. 저널 max-attempts / TTL 없음
실패 잡이 영구 재시도된다 (sogyo 실측 134건, 19시간).
- 제안:
pending_journal.py 레코드에 attempts 카운터 추가. 기본 5회 초과 또는 48h 초과 시 dead-letter로 이동 + 감사 로그. 조용한 폐기 금지(침 설계 원칙 동일).
4. 침(auto-distill) 자기 증식 + 미버전관리
~/.hermes/auto-distill/auto-distill.py(TM-2380 침):
5. (관측) 크리덴셜 동시 갱신 경합
pile 상태에서 수십 개 claude 프로세스가 동시 refresh를 시도해 .credentials.json이 expiresAt: 0으로 손상 기록됨(10:20 KST). claude CLI 측 결함에 가깝지만 회로차단(1번)이 pile을 막으면 간접 방어됨.
완료 조건
참고
배경
2026-08-23 sogyo 사건(인시던트: seoyoon-family-wiki
pages/incidents/2026-08-23-sogyo-distill-pending-drain-storm.md):claude -p추출이 ec=1 즉사남은 구조 결함 (우선순위순)
1. 영속 실패 회로차단기 없음
extract.sh실패를 ec=1 한 종류로만 본다.weekly limit·Not logged in같은 영속 오류는 재시도가 무의미한데 일시 오류와 동일하게 무한 재시도한다.weekly limit,Not logged in,invalid_grant) → 연속 N회(기본 3) 시distill.disabled자동 trip + 사유 파일 + 텔레그램 알림. 복구는 수동 해제만.2. pending-drain 부하 게이트 없음
pending-drain.sh는 노드 부하와 무관하게 워커를 스폰한다.load1 > nproc×2또는MemAvailable < 256MiB또는 스왑 잔여 < 10%이면skip reason=load-gate. #1248의 cap과 직교.3. 저널 max-attempts / TTL 없음
실패 잡이 영구 재시도된다 (sogyo 실측 134건, 19시간).
pending_journal.py레코드에attempts카운터 추가. 기본 5회 초과 또는 48h 초과 시 dead-letter로 이동 + 감사 로그. 조용한 폐기 금지(침 설계 원칙 동일).4. 침(auto-distill) 자기 증식 + 미버전관리
~/.hermes/auto-distill/auto-distill.py(TM-2380 침):CLAUDE_DISTILL_INFLIGHT없이claude -p호출 → 호출마다 SessionStart/End 훅 발화 → pending 저널 자기증식 (fix(distill): stop pending-drain SessionStart re-entry and cap inflight #1248 이후에도 drain 스킵이 아니라 drain 유발)CLAUDE_DISTILL_INFLIGHT=1추가 ② 레포 편입(ccc-node 또는 wiki-agent — 위치 논의 필요) ③ 쿼터 클래스 오류 시 자체 회로차단5. (관측) 크리덴셜 동시 갱신 경합
pile 상태에서 수십 개 claude 프로세스가 동시 refresh를 시도해
.credentials.json이expiresAt: 0으로 손상 기록됨(10:20 KST). claude CLI 측 결함에 가깝지만 회로차단(1번)이 pile을 막으면 간접 방어됨.완료 조건
distill.disabled해제 및 134→67건 잔여 잡 정상 드레인 확인참고
pages/decisions/wiki-auto-promotion-2026-08.md