Files
multi-agent-mux/FUTURE_WORKS.md
T
Godopu 9b797a5c8c feat(lib): migrate to SQLite WAL backend for robust concurrency (FW-L1)
- Replaces python fcntl.flock with SQLite BEGIN IMMEDIATE.
- Status/Reconcile read from SQLite SSOT, with YAML fallback.
- Explicitly documented tradeoff: YAML is no longer a real-time view.
- Handles PRAGMA wal_checkpoint(TRUNCATE) safely outside transactions.
2026-06-21 08:35:07 +00:00

80 lines
4.7 KiB
Markdown

# FUTURE_WORKS.md
> **목적**: `advanced_multi_agent` 프로젝트의 향후 작업 후보를 추적한다.
> 완료된 항목은 `DONE.md`를 참조.
> **최종 갱신**: 2026-06-21 (3개 에이전트 최종 검증 완료 후)
---
## 1. 장기 과제 (근본적 구조 변경)
### FW-L3. SQLite 테이블 정규화 (FW-L1 후속)
- **상태**: 대기
- **제안**: 현재 `.db`에는 전체 JSON 상태를 하나의 `data TEXT` 컬럼에 덤프하고 있음. 이를 `CREATE TABLE sessions (name TEXT PRIMARY KEY, status TEXT, pane_cwd TEXT, data JSON)` 형태로 정규화하면 O(1) 수준의 상태 조회가 가능해짐.
- **주의**: 현재 상태 조회 스크립트(`status.sh`, `reconcile.sh`) 역시 `SELECT data` 후 Python 단에서 전체 JSON을 파싱하는 구조이므로, O(1) 이점을 누리기 위해서는 이 조회 스크립트들도 per-column 쿼리(예: `SELECT status FROM sessions WHERE name=?`)로 함께 변경해야 함.
### FW-L2. stop 옵션 시맨틱 Step 2 (FW-03/FW-13 후속)
- **상태**: Step 1(디렉터리/식별자 rename) + frontmatter/산문 재작성 완료. Step 2 미진행.
- **남은 작업**:
- `--purge-conversation`(진짜 삭제)와 `--mode soft|hard`의 시맨틱 재정의 또는 폐기 검토
- 하위 호환 코드 제거
- `--mode soft|hard` 폐기 후 `stop` = 기본 동작, `--purge-conversation` = 파괴적 옵션으로 명확화
- **작업량**: 중 (Medium)
- **우선순위**: 보통 — 현재 동작에 문제 없으나 API 직관성 향상
---
## 2. 신규 발견 항목 (최종 검증에서 식별)
### FW-N1. reconcile.sh 모니터 유휴 타임아웃 vs 잡 타임아웃 불일치
- **발견자**: agy-existing (최종 검증)
- **문제**: `reconcile.sh``SUB_IDLE_TIMEOUT` 기본값 600s가 잡 wall-clock timeout 기본값 3600s와 불일치. 모니터가 잡보다 먼저 타임아웃되어 조기 종료 간섭 가능.
- **영향 범위**: `skills/tmux-agent-orchestrate-monitor/scripts/reconcile.sh:66` 부근
- **해결 방안**: 모니터 유휴 타임아웃을 잡 타임아웃과 독립적으로 문서화하거나, 기본값을 3600s 이상으로 조정.
- **작업량**: 소 (Small)
- **우선순위**: 낮음 — 별개 도메인(모니터 유휴 vs 잡 wall-clock)이나 문서화 필요
### FW-N2. 와이어 포맷 호환성 (HMAC 전환 후 혼합 배포)
- **발견자**: claude-existing (Batch 2 리뷰)
- **문제**: `data.auth_token``data.hmac_sig` 와이어 포맷 변경. 구 버전(publish_event.py)과 신 버전(job_subscriber.py)이 혼재하는 롤아웃 시 모든 이벤트가 drop될 수 있음.
- **해결 방안**: 롤아웃 시 전체 노드 동시 업데이트 또는 하위 호환 모드(auth_token + hmac_sig 동시 전송) 추가.
- **작업량**: 소 (Small)
- **우선순위**: 낮음 — 단일 노드 Canary 환경에서는 해당 없음
### FW-N3. 로그 문구 "auth_token mismatch" → "HMAC verify failed" 갱신
- **발견자**: claude-existing (Batch 2 리뷰)
- **문제**: `job_subscriber.py`의 drop 로그가 여전히 "auth_token mismatch"를 사용. HMAC 검증으로 변경되었으나 로그 미갱신.
- **해결 방안**: 로그 문구를 "HMAC verify failed"로 변경.
- **작업량**: 소 (Small)
- **우선순위**: 낮음 — 기능 영향 없음, 디버깅 가독성만
### FW-N4. Messaging_System_REPORT.md §2.4 평문 auth_token 기술 갱신
- **발견자**: claude-existing (Batch 2 리뷰)
- **문제**: 보고서 §2.4가 여전히 "plaintext bearer auth_token" 기술. HMAC 서명으로 변경되었으나 문서 미갱신.
- **해결 방안**: §2.4를 HMAC-SHA256 서명 방식으로 갱신.
- **작업량**: 소 (Small)
- **우선순위**: 보통 — 권위 문서의 정확성
---
## 3. 분석 인프라 개선 (다음 분석 라운드 시)
**근본 원인**: pane TUI의 자체적인 위쪽 truncate + subagent의 pane 추출 시점 차이로 긴 응답이 스크롤아웃됨.
**검증된 패턴** (delegate-job SKILL.md "Subagent Orchestration Pattern" 섹션에 반영됨):
1. brief 직후 `capture-pane -S -200` 즉시 캡처 → 누적 백업
2. 응답 진행 중 30초마다 `>> /tmp/pane-snap.txt` 누적
3. "분석 종료" 직후에도 한 번 더 전체 캡처
4. 짧은 작업(<5min)은 폴링이 MQTT subscriber보다 안정적
5. 긴 brief는 파일 경로로 전달 (inline send-keys는 TUI가 swallow)
---
## 4. 변경 이력
| 날짜 | 변경 |
|---|---|
| 2026-06-21 | 초기 작성 — 3개 에이전트 분석 결과 (FW-01~FW-16) |
| 2026-06-21 | FW-01~FW-16 전부 완료 -> DONE.md로 이동. 본 파일은 신규 발견 항목(FW-N1~N4) + 장기 과제(FW-L1~L2)만 남김. |
| 2026-06-21 | FW-L1 구현 완료 (사용자 피드백 재수용: 런타임은 SQLite DB, 종료 시에만 YAML 스냅샷 덤프). 항목 DONE.md로 이동. |