[Feature] 오케스트레이터 대화를 삭제(purge)할 방법이 없음 — orc_onboard.sh --remove는 등록만 해제 #13

Closed
opened 2026-09-12 00:53:22 +00:00 by Godopu · 1 comment
Owner

문제 개요 (Summary)

multi-agent-mux-stop --purge-conversation은 herdr_sessions 행이 있는 세션만 다루고, orc_onboard.sh --remove <uuid>는 orchestrator_uuids에서 UUID만 지웁니다. 그래서 오케스트레이터 대화는 스킬로 삭제할 수 없고, 대화 파일을 직접 찾아 지워야 합니다.

세부 원인 분석 (Detailed Root Causes)

  • stop_session.sh는 --session <이름>으로 레지스트리 행을 찾아 삭제할 UUID를 정합니다. 오케스트레이터는 행이 없어 지정할 수 없습니다.
  • orc_onboard.sh --remove에는 파일 삭제 코드가 없습니다(레지스트리 목록에서만 제거).
  • orchestrator_uuids는 UUID 문자열 목록이라 에이전트 종류가 저장되지 않습니다. 등록 시 detect_nearest_agent로 감지하지만 기록하지 않아, 삭제 시 어떤 어댑터를 쓸지 알 수 없습니다.

제안 해결책

  • orc_onboard.sh --remove <uuid> --purge-conversation --yes 추가: 어댑터별 artifact_path로 에이전트를 판별하고 purge_artifacts를 재사용
  • 등록 시 감지한 에이전트 종류를 함께 저장 (예: {uuid, agent})
  • agy는 #10(WAL·SHM·presence 누락) 수정이 함께 적용되어야 함

재현 절차 (Reproduction)

  1. agy 대화를 오케스트레이터로 등록 (orc_onboard.sh --uuid <id>)
  2. orc_onboard.sh --remove <id> 실행
  3. conversations/<id>.db(+-wal/-shm), brain/<id>/, presence/<id>.lock이 그대로 남음 (삭제 코드 없음을 코드로 확인)

환경 정보 (Environment)

  • OS: macOS (Darwin 25.6.0)
  • MAM Version: 4d444ce (main)
## 문제 개요 (Summary) `multi-agent-mux-stop --purge-conversation`은 `herdr_sessions` 행이 있는 세션만 다루고, `orc_onboard.sh --remove <uuid>`는 `orchestrator_uuids`에서 UUID만 지웁니다. 그래서 오케스트레이터 대화는 스킬로 삭제할 수 없고, 대화 파일을 직접 찾아 지워야 합니다. ## 세부 원인 분석 (Detailed Root Causes) - `stop_session.sh`는 `--session <이름>`으로 레지스트리 행을 찾아 삭제할 UUID를 정합니다. 오케스트레이터는 행이 없어 지정할 수 없습니다. - `orc_onboard.sh --remove`에는 파일 삭제 코드가 없습니다(레지스트리 목록에서만 제거). - `orchestrator_uuids`는 UUID 문자열 목록이라 에이전트 종류가 저장되지 않습니다. 등록 시 `detect_nearest_agent`로 감지하지만 기록하지 않아, 삭제 시 어떤 어댑터를 쓸지 알 수 없습니다. ## 제안 해결책 - `orc_onboard.sh --remove <uuid> --purge-conversation --yes` 추가: 어댑터별 `artifact_path`로 에이전트를 판별하고 `purge_artifacts`를 재사용 - 등록 시 감지한 에이전트 종류를 함께 저장 (예: `{uuid, agent}`) - agy는 #10(WAL·SHM·presence 누락) 수정이 함께 적용되어야 함 ## 재현 절차 (Reproduction) 1. agy 대화를 오케스트레이터로 등록 (`orc_onboard.sh --uuid <id>`) 2. `orc_onboard.sh --remove <id>` 실행 3. `conversations/<id>.db`(+`-wal`/`-shm`), `brain/<id>/`, `presence/<id>.lock`이 그대로 남음 (삭제 코드 없음을 코드로 확인) ## 환경 정보 (Environment) - OS: macOS (Darwin 25.6.0) - MAM Version: 4d444ce (main)
Author
Owner

fix/issue-10-11-13-15 에서 해결, main 8a09e02 로 병합·push 완료 (v4.4.3).

추가된 기능

  • python -m lib_py.agents purge <agent|auto> <uuid> [workspace]: orchestrator_uuids 는 uuid 만 저장하므로 디스크에서 어댑터를 판별(auto: agy → claude → hermes → grok → codex → opencode, verify_artifact revalidate → has_artifacts). JSON 한 줄 출력, 종료 코드 0 purge / 4 사용 중 거부 / 5 artifact 없음 (c82ea75)
  • orc_onboard.sh --remove <uuid> --purge-conversation --yes [--agent <name>]: purge 를 레지스트리 갱신 전에 실행해 거부 시 등록 불변. --yes 없으면 exit 4, 사용 중이면 exit 5, artifact 없으면 경고 후 등록만 해제, --dry-run 지원 (c82ea75)
  • 사용 중 판정 base.conversation_in_use: ① 호출 환경의 세션 id(CLAUDE_CODE_SESSION_ID 등)가 uuid 와 같으면 사용 중 — 오케스트레이터가 자기 세션 안에서 자기 대화를 purge 하는 경우 거부, ② 프로세스 명령줄 검사는 purge 자신의 헬퍼 사슬만 제외하고 가장 가까운 에이전트 CLI 조상에서 멈춤, ③ lsof 점유 확인 (7610258, claude 리뷰 N1; fae70c1, codex R1)
  • 설계 선택: 제안됐던 {uuid, agent} 저장 대신 디스크 판별을 택해 orchestrator_uuids 스키마와 검증기(atomic_yaml.py)를 그대로 유지. --agent 로 명시 지정 가능.

검증: tests/test_issue10_13_purge.py(자기 세션 거부·조상 계보·lock 보유자·고아 파일 등), 전체 스위트 849/849, 리뷰 루프 만장일치 PASS. SKILL.md 에 옵션·종료 코드·주의 사항 문서화.

`fix/issue-10-11-13-15` 에서 해결, main `8a09e02` 로 병합·push 완료 (v4.4.3). **추가된 기능** - `python -m lib_py.agents purge <agent|auto> <uuid> [workspace]`: `orchestrator_uuids` 는 uuid 만 저장하므로 디스크에서 어댑터를 판별(`auto`: agy → claude → hermes → grok → codex → opencode, `verify_artifact` revalidate → `has_artifacts`). JSON 한 줄 출력, 종료 코드 0 purge / 4 사용 중 거부 / 5 artifact 없음 (`c82ea75`) - `orc_onboard.sh --remove <uuid> --purge-conversation --yes [--agent <name>]`: purge 를 **레지스트리 갱신 전에** 실행해 거부 시 등록 불변. `--yes` 없으면 exit 4, 사용 중이면 exit 5, artifact 없으면 경고 후 등록만 해제, `--dry-run` 지원 (`c82ea75`) - 사용 중 판정 `base.conversation_in_use`: ① 호출 환경의 세션 id(`CLAUDE_CODE_SESSION_ID` 등)가 uuid 와 같으면 사용 중 — 오케스트레이터가 자기 세션 안에서 자기 대화를 purge 하는 경우 거부, ② 프로세스 명령줄 검사는 purge 자신의 헬퍼 사슬만 제외하고 가장 가까운 에이전트 CLI 조상에서 멈춤, ③ `lsof` 점유 확인 (`7610258`, claude 리뷰 N1; `fae70c1`, codex R1) - 설계 선택: 제안됐던 `{uuid, agent}` 저장 대신 디스크 판별을 택해 `orchestrator_uuids` 스키마와 검증기(`atomic_yaml.py`)를 그대로 유지. `--agent` 로 명시 지정 가능. **검증**: `tests/test_issue10_13_purge.py`(자기 세션 거부·조상 계보·lock 보유자·고아 파일 등), 전체 스위트 849/849, 리뷰 루프 만장일치 PASS. `SKILL.md` 에 옵션·종료 코드·주의 사항 문서화.
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: tmpl/multi-agent-mux#13