Files
portfolio-hub/docs/batches/bat-007_20260520_daemon-lifecycle-token-enforcement/index.md
T
genichinandClaude Opus 4.8 b1c34068e5 docs: batch 상태 released 동기화(REL-001/002) + README 현행화(거래내역/실현PnL API)
batch drift 정합 — REL-001(BAT-001~016)·REL-002(BAT-017) released에 맞춰
batches/index 및 개별 index 상태를 release-candidate→released 동기화(17건).
README: bootstrap 문구 제거, dcy-007 엔드포인트(GET /trades·/pnl/realized) 추가,
planned-next 현행화. 코드 무변경.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-22 09:51:13 +09:00

2.7 KiB

BAT-007: daemon lifecycle token 정책 (deactivation 자동 revoke + NULL daemon 마이그레이션 CLI)

  • Status: released
  • Profile: standard
  • Source Discovery: dcy-004
  • Included REQ: REQ-022, REQ-023
  • Excluded REQ: (없음 — dcy-004 daemon lifecycle 코드 2건 전부 포함)

Summary

  • daemon deactivation 시 바인딩 service token을 자동 revoke하고(REQ-022), NULL daemon_id를 가진 legacy active service token의 진단·정리 CLI를 신규 제공한다(REQ-023).
  • 이 배치 완료 후 dcy-004 코드 작업 전체(BAT-006 + BAT-007)가 종료되며, 이후 token 관련 baseline 문서 갱신 배치(REQ-019~021, REQ-024)를 진행한다.

Scope

  • In Scope:
    • app/cli/commands/daemon.py — update_daemon --deactivate 분기에 revoke_tokens_for_daemon(daemon_id) 호출 추가 (REQ-022)
    • app/services/auth_service.py — revoke_tokens_for_daemon(daemon_id) 헬퍼 신규 추가 (REQ-022)
    • app/repositories/portfolio_repository.py — revoke_tokens_by_daemon_id(daemon_id) 추상 메서드 추가 (REQ-022)
    • app/repositories/postgres.py — revoke_tokens_by_daemon_id(daemon_id) 구현 (REQ-022)
    • app/cli/commands/service_tokens.py — migrate_null_daemon 서브커맨드 신규 추가 (REQ-023)
    • app/services/auth_service.py — list_null_daemon_service_tokens(), find_candidate_daemons_for_user(user_id) 헬퍼 추가 (REQ-023)
    • app/repositories/portfolio_repository.py — list_service_tokens_with_null_daemon() 추상 메서드 추가 (REQ-023)
    • app/repositories/postgres.py — list_service_tokens_with_null_daemon() 구현 (REQ-023)
    • tests/test_daemon_registry.py — REQ-022 AC-1~4 회귀 케이스 추가
    • tests/test_null_daemon_migration.py — 신규: REQ-023 AC-1~5 (FakeRepo 기반)
  • Out of Scope:
    • token 관련 baseline 문서 갱신 (→ REQ-019~021, REQ-024, 별도 배치)
    • daemon 모델 자체 변경 (변경 없음)
    • graceful drain 구현 (daemon 측 책임)

Documents

Notes

  • R-1 (Medium): REQ-022 deactivation 즉시 revoke는 in-flight daemon 거래에 영향 — release plan SOP에 "(1) daemon 프로세스 종료/drain → (2) pfhub daemon update --deactivate → (3) 자동 revoke" 순서 명시 필요 (REQ-019 baseline에서 문서화)
  • R-2 (Low): REQ-023 DATA-2 admin 테스트 fixture 1건(NULL daemon active service token) — 이 batch release 시점에 운영자가 pfhub service-token revoke admin 수동 실행으로 정리 (release plan 명시)
  • 선행 의존: BAT-006 (REQ-016/017/018, release-candidate) 완료 상태로 auth/token 기반 충족