2.9 KiB
2.9 KiB
id, status
| id | status |
|---|---|
| ac-0026 | active |
Slot occupancy와 독립된 strategy state lifecycle
Criterion
trex-core는 슬롯의 strategy-state map과 각 entry를 slot occupancy lifecycle과 독립적으로 보존해야 한다. Slot이 어떤 경로로든 INACTIVE가 되어도 일반 lifecycle transition은 strategy state를 삭제하지 않아야 하며, inactive 상태와 이후 재점유 상태에서 저장된 entry와 version을 다시 읽을 수 있어야 한다. 재점유 뒤 같은 entry에 성공한 write는 close 전 version에 이어서 증가해야 한다. Strategy-state persistence schema, application model, store protocol, read filtering, strategy_state.set request/response 및 state CAS에는 occupancy_seq나 expected_occupancy_seq가 없어야 하며, occupancy 변경만으로 state를 숨기거나 write를 occupancy_changed로 거부해서는 안 된다. Slot 자체의 occupancy_seq, active-slot write gate, opaque data size limit, slot transition의 나머지 원자성과 별도 파괴적 전체 DB reset은 변경하지 않는다.
Verification
- 보존 조건: active slot의 instance entry를 version 1 이상으로 저장한 뒤 전략 매도, safety-sell, forced-close 및 operator close를 포함한 각
→ INACTIVE경로를 실행해도 저장소 entry와 version이 삭제되지 않는다. Inactive slot 조회와 이후 재점유 조회에서 같은 data·version이 보이고, 재점유 뒤 기존 version을expected_version으로 사용한 성공 write가 version을 1 증가시킨다. - 격리 조건: 한 slot의 lifecycle transition이 해당 slot map의 일부 또는 전체 entry를 삭제하거나 다른 slot의 state를 변경하면 FAIL이다. Close-delete hook 제거 전후로 slot update, transition log, broker·ledger side effect와 transition failure 원자성이 기존 계약에서 달라지지 않아야 한다.
- Occupancy 분리 조건: strategy-state migration/schema, dataclass, in-memory/PostgreSQL store contract, read path와 write RPC payload/response에
occupancy_seq또는expected_occupancy_seq가 남거나, occupancy mismatch read filtering 또는occupancy_changedreject path가 실행되면 FAIL이다. Slot domain의 자체occupancy_seq와 증가 규칙은 그대로 유지되어야 한다. - 경계 조건: inactive slot에 대한 신규 state write는 계속
slot_inactive로 거부되고 기존 state는 변경되지 않는다. Size limit 초과 write도state_too_large로 거부되며 보존 중인 entry를 손상시키지 않는다. 명시적 전체 DB reset은 기존 범위의 데이터를 계속 제거할 수 있다. - 검사 방법: InMemory와 PostgreSQL fixtures에서 close 경로별 보존, inactive read, 재점유, version 연속성, write gate와 size limit parity를 검증한다. 기존 slot transition 회귀 테스트, persistence migration/round-trip 테스트, production daemon wiring, 전체 repository test와 정적 검사를 실행한다.