Files
portfolio-hub/docs/batches/bat-007_20260520_daemon-lifecycle-token-enforcement/verification.md
T
genichinandClaude Sonnet 4.6 c815ce39b6 feat: dcy-003/004 토큰 surface 개편 및 daemon lifecycle 정책 구현 (BAT-006/007)
BAT-006 (REQ-016/017/018):
- client token 발급 경로 제거 (issue_client_token, POST /auth/tokens, 관련 스키마/테스트)
- service-token rotate unique index revoked_at IS NULL 조건 추가 (Alembic CONCURRENTLY 마이그레이션)
- POST /auth/service-tokens body daemon_id forward 누락 보정 (1-line fix)

BAT-007 (REQ-022/023):
- daemon deactivate 시 바인딩 service token 자동 revoke (CLI --force 옵션 + revoke_tokens_by_daemon_id)
- NULL daemon_id legacy token 진단 CLI (migrate-null-daemon --dry-run)

거버넌스 문서: dcy-003/004 Discovery, REQ-016~023/025~032 신규, BAT-006/007 전체 산출물

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 01:03:39 +00:00

2.2 KiB

BAT-007 Verification

  • Status: release-candidate
  • Batch: BAT-007

Acceptance Mapping

  • REQ-022:

    • AC-1: active daemon + 바인딩 service token 1개 이상 → --deactivate --force → 모든 바인딩 token revoked + daemon is_active=false → test_deactivate_daemon_revokes_bound_tokens / test_deactivate_daemon_revokes_multiple_bound_tokens PASSED
    • AC-2: revoke된 token 인증 거부 — 기존 token 인증 테스트(test_daemon_registry.py)에서 revoked_at is not None 확인; v1 API 401 경로는 PostgreSQL 통합 테스트에서 별도 검증 예정
    • AC-3: 바인딩 token 0건 daemon → deactivate → no-op → test_deactivate_daemon_with_no_tokens_is_noop PASSED
    • AC-4: reactivate 후 revoke된 token 자동 복구 없음 → test_reactivate_daemon_does_not_unrevoke_tokens PASSED
    • AC-5: in-flight 거래 보호 없음 — 테스트 불요 (release SOP 참조)
  • REQ-023:

    • AC-1: NULL daemon token 있을 때 dry-run → id/user_id/name 출력 → test_migrate_null_daemon_dry_run_shows_inventory PASSED
    • AC-2: NULL daemon token 0건 → "no NULL daemon tokens found." + exit 0 → test_migrate_null_daemon_dry_run_no_tokens_prints_empty_message PASSED
    • AC-3: --dry-run 없이 실행 → exit non-zero + 수동 안내 → test_migrate_null_daemon_without_dry_run_exits_nonzero PASSED
    • AC-4: rebind 후 해당 token inventory 제외 → test_migrate_null_daemon_after_rebind_token_excluded_from_inventory PASSED
    • AC-5: revoke 후 해당 token inventory 제외 → test_migrate_null_daemon_after_revoke_token_excluded_from_inventory PASSED

Evidence

  • Test:
    tests/test_daemon_registry.py   19 passed (REQ-022: 5 new + 14 pre-existing)
    tests/test_null_daemon_migration.py   6 passed (REQ-023: AC-1~5 + candidate daemon)
    Total BAT-007 scope: 25 passed, 0 failed
    
  • Full regression:
    .venv/bin/python -m pytest -q
    266 passed in 7.86s
    
  • Manual: CLI dry-run 동작 코드 경로 검토 완료; create_app(repository_factory=...) 패턴 기반 CLI 통합 테스트로 실 CLI 경로 커버 확인
  • Logs: 없음 (DB 불필요 단위/CLI 테스트)

Result

  • Ready for Release: true
  • Blocking Issues: 없음