DSL overview
Status: stub. Day 3 deliverable.
WOS policies are written in a tiny, deliberately constrained YAML DSL.
Three primitives — inputs, rules, fallback — and one closing
audit block. That’s it.
wos_version: "3.0"
policy_id: kyc.tier2.jp.v3
inputs:
applicant: { type: LegalEntity, required: true }
documents: { type: "Document[]", min: 1, max: 32 }
rules:
- id: R001
when: "applicant.sanctions_hit == true"
then: { decision: REJECT, reason_code: SANCTIONS_HIT }
fallback:
decision: ESCALATE_TO_HUMAN
reason_code: NO_RULE_MATCHED
audit:
retention_days: 2555
export_format: JSONLThe compiler enforces hard limits (§5.1) so a hostile DSL can never bomb the evaluator. Glass-Box every step: every fact L2 read, every rule it evaluated, every rule it skipped — all attached to the decision JSON.