재현 시 .db-wal/.db-shm 은 purge 실행 시각에 생성되어 있었음 → stop 과정에서 대화 ID 확인 중 DB 를 열며 생성된 것으로 보임. 이번에는 WAL 이 0바이트였지만, 체크포인트되지 않은 대화 내용이 남을 수 있음
제안 해결책:
DB 삭제 시 -wal, -shm, -journal 함께 삭제
annotations/<uuid>.pbtxt, presence/<uuid>.lock 삭제 추가 (presence lock 은 사용 중인 프로세스가 없을 때)
삭제 후 ~/.gemini 에서 *<uuid>* 잔여 파일 검사 결과를 출력
환경 정보 (Environment)
OS: macOS (Darwin 25.6.0)
MAM Version: 4d444ce (main)
Agent: agy (antigravity-cli)
## 문제 개요 (Summary)
agy 세션에 `multi-agent-mux-stop --purge-conversation` 을 실행하면 대화 DB 본체와 brain 폴더만 삭제되고, 같은 대화 ID 의 부속 파일이 디스크에 남습니다. "resume 불가능한 완전 삭제"라는 purge 의도와 어긋납니다.
---
## 세부 원인 분석 (Detailed Root Causes)
* **위치**: `.agents/skills/lib_py/agents/adapters/agy.py` 74행 `purge_artifacts`
* **증상**:
* `conversations/<uuid>.db`(78행)와 `brain/<uuid>/`(80행)만 삭제
* 다음 파일이 남음:
* `~/.gemini/antigravity-cli/annotations/<uuid>.pbtxt` (대화 제목)
* `~/.gemini/antigravity-cli/presence/<uuid>.lock`
* `~/.gemini/antigravity-cli/conversations/<uuid>.db-wal`, `<uuid>.db-shm`
* 재현 시 `.db-wal`/`.db-shm` 은 purge 실행 시각에 생성되어 있었음 → stop 과정에서 대화 ID 확인 중 DB 를 열며 생성된 것으로 보임. 이번에는 WAL 이 0바이트였지만, 체크포인트되지 않은 대화 내용이 남을 수 있음
* **제안 해결책**:
* DB 삭제 시 `-wal`, `-shm`, `-journal` 함께 삭제
* `annotations/<uuid>.pbtxt`, `presence/<uuid>.lock` 삭제 추가 (presence lock 은 사용 중인 프로세스가 없을 때)
* 삭제 후 `~/.gemini` 에서 `*<uuid>*` 잔여 파일 검사 결과를 출력
## 환경 정보 (Environment)
* OS: macOS (Darwin 25.6.0)
* MAM Version: `4d444ce` (main)
* Agent: agy (antigravity-cli)
`fix/issue-10-11-13-15` 에서 해결, main `8a09e02` 로 병합·push 완료 (v4.4.3).
**수정 내용** (`lib_py/agents/adapters/agy.py`)
- `purge_artifacts` 가 대화 DB·`brain/<uuid>` 에 더해 SQLite 부속 파일(`-wal`/`-shm`/`-journal`), `annotations/<uuid>.pbtxt`, `presence/<uuid>.lock` 을 삭제 (`c82ea75`)
- presence lock 은 `conversation_in_use` 가 거짓일 때만 삭제, 사용 중이면 남기고 경고
- `conversation_in_use` 가 DB 만이 아니라 부속 파일·brain·annotation·lock 전부를 `lsof` 검사에 넘겨, uuid 를 어디에도 적지 않고 lock 만 열어 둔 보유자도 잡음 (`fae70c1`, codex 리뷰 R1)
- 새 `residual_artifacts()` 가 `~/.gemini/antigravity-cli` 아래 잔여 파일을 보고; DB 가 이미 없는 고아 부속 파일도 `has_artifacts` 로 purge 대상 인식 (`fae70c1`, codex R2)
- db+brain 만 있을 때 2건을 돌려주는 기존 어댑터 계약 유지
**검증**: `tests/test_issue10_13_purge.py`, 전체 스위트 849/849, 리뷰 루프 claude·agy·grok·codex 만장일치 PASS (`.agents/reports/*/report-{aa16fa5c,0f41ea47,3ea06fb6,79204d61}.md`)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
문제 개요 (Summary)
agy 세션에
multi-agent-mux-stop --purge-conversation을 실행하면 대화 DB 본체와 brain 폴더만 삭제되고, 같은 대화 ID 의 부속 파일이 디스크에 남습니다. "resume 불가능한 완전 삭제"라는 purge 의도와 어긋납니다.세부 원인 분석 (Detailed Root Causes)
.agents/skills/lib_py/agents/adapters/agy.py74행purge_artifactsconversations/<uuid>.db(78행)와brain/<uuid>/(80행)만 삭제~/.gemini/antigravity-cli/annotations/<uuid>.pbtxt(대화 제목)~/.gemini/antigravity-cli/presence/<uuid>.lock~/.gemini/antigravity-cli/conversations/<uuid>.db-wal,<uuid>.db-shm.db-wal/.db-shm은 purge 실행 시각에 생성되어 있었음 → stop 과정에서 대화 ID 확인 중 DB 를 열며 생성된 것으로 보임. 이번에는 WAL 이 0바이트였지만, 체크포인트되지 않은 대화 내용이 남을 수 있음-wal,-shm,-journal함께 삭제annotations/<uuid>.pbtxt,presence/<uuid>.lock삭제 추가 (presence lock 은 사용 중인 프로세스가 없을 때)~/.gemini에서*<uuid>*잔여 파일 검사 결과를 출력환경 정보 (Environment)
4d444ce(main)fix/issue-10-11-13-15에서 해결, main8a09e02로 병합·push 완료 (v4.4.3).수정 내용 (
lib_py/agents/adapters/agy.py)purge_artifacts가 대화 DB·brain/<uuid>에 더해 SQLite 부속 파일(-wal/-shm/-journal),annotations/<uuid>.pbtxt,presence/<uuid>.lock을 삭제 (c82ea75)conversation_in_use가 거짓일 때만 삭제, 사용 중이면 남기고 경고conversation_in_use가 DB 만이 아니라 부속 파일·brain·annotation·lock 전부를lsof검사에 넘겨, uuid 를 어디에도 적지 않고 lock 만 열어 둔 보유자도 잡음 (fae70c1, codex 리뷰 R1)residual_artifacts()가~/.gemini/antigravity-cli아래 잔여 파일을 보고; DB 가 이미 없는 고아 부속 파일도has_artifacts로 purge 대상 인식 (fae70c1, codex R2)검증:
tests/test_issue10_13_purge.py, 전체 스위트 849/849, 리뷰 루프 claude·agy·grok·codex 만장일치 PASS (.agents/reports/*/report-{aa16fa5c,0f41ea47,3ea06fb6,79204d61}.md)