[Bug] agy 어댑터 purge_artifacts 가 대화 부속 파일(annotations·presence·WAL/SHM)을 삭제하지 않는 문제 #10

Closed
opened 2026-09-11 15:52:09 +00:00 by Godopu · 1 comment
Owner

문제 개요 (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)
## 문제 개요 (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)
Author
Owner

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)

`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`)
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#10