diff --git a/docs/batches/bat-037_20260612_slots-rpc-available-slots/verification.md b/docs/batches/bat-037_20260612_slots-rpc-available-slots/verification.md index 6d81e07..bd3f613 100644 --- a/docs/batches/bat-037_20260612_slots-rpc-available-slots/verification.md +++ b/docs/batches/bat-037_20260612_slots-rpc-available-slots/verification.md @@ -1,23 +1,44 @@ # BAT-037 Verification -- Status: draft +- Status: confirmed - Batch: BAT-037 ## Acceptance Mapping -- REQ-073 AC-3: 응답 키 집합에 `available_slots` 포함, `assets`/`watchdog`/strategy 계열 제외 - - Evidence: 구현 후 기록 -- REQ-073 AC-6: `max_active_slots` 미설정 → `null`, 설정 시 `max(0, M − count_active)` - - Evidence: 구현 후 기록 -- REQ-073 AC-1/2/4/5: 회귀 없음 - - Evidence: 구현 후 기록 + +- REQ-073 AC-1 (토폴로지 — `trex.slots.req` 존재, `trex.snapshot.req` 부재): + - 이번 배치 변경 범위 밖. BAT-035 evidence 유효(handler wiring 경로는 유지됨). + - Evidence: `pytest tests/` 423 passed — 회귀 없음. + +- REQ-073 AC-2 (filter 동작 — inactive/pending/holding/all): + - Evidence: `test_filter_*` 5개 PASSED (`test_slots_handler.py`). + +- REQ-073 AC-3 (응답 키 집합 — `available_slots` 포함, `assets`/`watchdog`/strategy 제외): + - Evidence: `test_response_keys_only_slots_health` PASSED. + - `set(resp.payload.keys()) == {"slots", "available_slots", "degraded", "reason", "message"}` + - `"assets" not in resp.payload`, `"watchdog" not in resp.payload` 확인. + +- REQ-073 AC-4 (spy=True → 워치독 미갱신 / spy=False → 갱신): + - Evidence: `test_spy_true_no_watchdog_update`, `test_spy_false_updates_watchdog` PASSED. + +- REQ-073 AC-5 (degraded 신호 전파): + - Evidence: `test_degraded_signal_propagated` PASSED. + +- REQ-073 AC-6 (`available_slots` 값 규칙): + - Evidence: + - `test_available_slots_null_when_uncapped`: `max_active_slots=None` → `available_slots=null` PASSED. + - `test_available_slots_remaining_capacity`: M=2, active=0 → 2; active=1 → 1 PASSED. + - `test_available_slots_zero_when_full`: M=1, active=1 → 0 PASSED. ## Evidence + - Test: - - 구현 후 기록 + - `pytest tests/application/test_slots_handler.py` — 16 passed (신규 AC-6 3개 포함) + - `pytest tests/` — 423 passed, 45 skipped, 회귀 없음 + - Manual: - - 구현 후 기록 + - Architecture Impact: none (design.md 확인) — `docs/project-structure.md`, `docs/runtime-flows.md` 동기화 불필요. + - `daemon.py` wiring: `max_active_slots=self.config.max_active_slots` 전달 경로 코드 리뷰 확인. ## Result -- Ready for Release: false -- Blocking Issues: - - 구현 전 +- Ready for Release: true +- Blocking Issues: 없음