Skip to content

distill: 영속 실패 회로차단·부하 게이트·저널 TTL — sogyo 2026-08-23 스톰 후속 구조 수정 #1250

Description

@seoseo-ai

배경

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 침):

  • CLAUDE_DISTILL_INFLIGHT 없이 claude -p 호출 → 호출마다 SessionStart/End 훅 발화 → pending 저널 자기증식 (fix(distill): stop pending-drain SessionStart re-entry and cap inflight #1248 이후에도 drain 스킵이 아니라 drain 유발)
  • git 미관리, 노드별 수동 배포 (54KB 단일 파일, 플릿 6+ 노드) — 수정 전파 경로가 없음
  • 제안: ① 추출 호출 env에 CLAUDE_DISTILL_INFLIGHT=1 추가 ② 레포 편입(ccc-node 또는 wiki-agent — 위치 논의 필요) ③ 쿼터 클래스 오류 시 자체 회로차단

5. (관측) 크리덴셜 동시 갱신 경합

pile 상태에서 수십 개 claude 프로세스가 동시 refresh를 시도해 .credentials.jsonexpiresAt: 0으로 손상 기록됨(10:20 KST). claude CLI 측 결함에 가깝지만 회로차단(1번)이 pile을 막으면 간접 방어됨.

완료 조건

  • 회로차단기 + 테스트
  • 부하 게이트 + 테스트
  • 저널 attempts/TTL + 테스트
  • 침 INFLIGHT 가드 + 레포 편입 결정
  • sogyo: claude 재로그인 후 distill.disabled 해제 및 134→67건 잔여 잡 정상 드레인 확인

참고

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions