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

2.0 KiB

id, status
id status
ac-0020 active

완료됐지만 원장 기록 불가인 fill의 durable skip 감사 기록

Criterion

core는 완료된 broker fill이 정상 ledger_outbox 경로로 들어갈 수 없을 때 WARN 로그만 남기고 끝내서는 안 된다. genuinely non-recordable 사례(예: portfolio_id 누락, execution_id 누락, 지원하지 않는 actual execution venue)마다 durable ledger_skip 감사 레코드 1건을 멱등하게 유지해야 하며, 이 레코드는 최소한 daemon instance, slot ID, portfolio ID, symbol, order ID, execution ID(있으면), side, qty, price, execution time, order_venue, execution_venue 또는 명시적 unknown 상태, machine-readable skip_reason, 생성/갱신/해결 timestamp, resolution state를 포함해야 한다. 이 경로는 broker·slot·portfolio 수량을 자동 보정하거나 mutate하지 않아야 하며, retryable ledger delivery failure는 계속 ledger_outbox와 LedgerWriter 재시도 의미론을 사용해야 한다.

Verification

  • 성공 조건: completed fill이 missing_portfolio_id, missing_execution_id, unsupported_execution_venue 등으로 정상 원장 기록이 불가능하면 slot transition 이후에도 ledger_skip에 동일 fill 식별자의 unresolved row가 남고, 같은 fill을 다시 관찰해도 duplicate row가 생기지 않는다. 운영자는 instance/date/portfolio/resolution state 조건으로 unresolved row를 조회할 수 있다.
  • 실패·경계 조건: completed-but-unrecordable fill이 ephemeral log에만 남음, skip row가 retryable delivery failure row를 대체함, skip 처리 중 slot/broker/portfolio 수량이 암묵적으로 바뀜, unknown execution venue alone(SOR actual NULL)는 정상 outbox 경로 대신 skip으로 빠짐은 FAIL이다.
  • 검사 방법: execution ledger unit tests, PostgreSQL ledger_skip store round-trip/filter/resolve tests, CLI skipped-ledger query tests, targeted Ruff/pytest와 ProofLine validate를 수행한다.