Files
trex-core/.proofline/criteria/ac-0022.md
T

2.1 KiB

id, status
id status
ac-0022 active

strategy slots RPC broker-authoritative holding quantity

Criterion

trex.slots.req.<instance>의 전략용 slots 응답에 포함되는 holding 슬롯(AC-0023에 따라 B 또는 C reconcile warning으로 제외된 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에 따라 B 또는 C reconcile warning(case_code=B 또는 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가 없어야 한다.