Co-authored-by: genichin <4282227+genichin@users.noreply.github.com>
2.0 KiB
id, status
| id | status |
|---|---|
| ac-0022 | active |
strategy slots RPC broker-authoritative holding quantity
Criterion
trex.slots.req.<instance>의 전략용 slots 응답에 포함되는 holding 슬롯(AC-0023에 따라 C-case 수량 불일치로 제외된 slot 제외)의 qty는 요청한 instance에 결합된 KIS account broker holdings(hldg_qty)를 authoritative source로 사용해야 한다. daily_slot.qty와 portfolio-hub 집계값은 각각 slot_quantity, asset_quantity 진단 필드로 분리 유지한다. broker 수량을 확보하지 못했거나 freshness 허용시간을 초과하면 core/hub mirror fallback 없이 qty=null, qty_source="unavailable", broker_quantity_available=false, broker_quantity_captured_at=null을 반환해 전략이 fail-closed하도록 해야 한다. confirmed broker zero는 qty=0, qty_source="broker"로 unavailable과 구분되어야 한다. 이 read path는 주문 submit/cancel, ledger write, slot lifecycle mutation을 유발하지 않아야 한다.
Scope note
AC-0023에 따라 C-case(case_code=C) 수량 불일치로 전략용 slots RPC에서 제외된 slot에는 이 AC의 broker-authoritative qty 응답 형식을 적용하지 않는다. AC-0023 제외가 AC-0022 broker-qty 형식보다 우선한다.
Verification
- 성공 조건: mismatch fixture(
broker=440,slot=435,hub=435)에서 holding row가qty=440,slot_quantity=435,asset_quantity=435,qty_source="broker"를 반환한다. broker zero fixture는qty=0으로 유지된다. - 실패·경계 조건: broker unavailable/stale fixture에서
qty가 slot/hub 값으로 대체되면 FAIL이다. 이 경우qty=null과 명시적 unavailable metadata를 반환해야 한다. - 격리 조건: 다중 instance 테스트에서 각
trex.slots.req.<instance>는 해당 instance account snapshot만 참조하며 타 instance broker/snapshot/slot 데이터가 섞이지 않아야 한다. - 비침습 조건: slots RPC 호출 전후로 slot 상태 전이, broker mutation, ledger write side effect가 없어야 한다.