Warddocs
Patterns

Fail-closed handling

Ward fails closed: when a list was not loaded, a provider timed out or a field could not be read, the answer says so and the decision moves toward review, never toward approval.

You see It means Do
checks.<list>: "not_checked" That list did not run Do not treat "no hits" as clear for that list
SCREENING_UNAVAILABLE, EMAIL_DNS_UNAVAILABLE A dependency was unreachable Retry later or review; never auto-approve
coverage.level: "limited" Part of the input was unreadable Read coverage.missing; ask for the data
needs[] Fields that would sharpen the answer Collect them on the next touch
score_kind: "unavailable" No score for this path Decide on decision and signals

Your own integration should fail closed too: if the call to Ward errors or times out, treat it as STEP_UP, not APPROVE.

try:
    d = client.decide("payment", txn, timeout=0.8)
    decision = d.decision
except ward.APIError:
    decision = "STEP_UP"        # never let an outage approve