VBL: Verification Boundary Language Overview
VBL (Verification Boundary Language) is the language used to define verification boundaries. It specifies what evidence is required, what is prohibited, what conditions must hold, and how those conditions combine.
Language Design
Section titled “Language Design”VBL is intentionally constrained:
- Integer-only: all arithmetic uses 64-bit signed integers. No floating-point operations.
- No side effects: a boundary definition is a pure specification, not a program.
- No imports: each boundary is self-contained.
- No control flow: no if/else, no loops. Logic is expressed through predicates and the BOUNDARY expression.
- Deterministic: the same evidence always produces the same result against the same boundary.
Boundary Structure
Section titled “Boundary Structure”A boundary can be as simple as evidence requirements and predicates:
# Loan Applicant Eligibilityrequire_evidence: credit_scorerequire_evidence: debt_to_income_pctrequire_evidence: account_age_monthsrequire_evidence: identity_verified
predicate: creditworthy: credit_score >= 600predicate: affordable: debt_to_income_pct <= 40predicate: established: account_age_months >= 6predicate: identity_confirmed: identity_verified == 1Or it can include the full set of constructs:
boundary_id: payment-authorizationversion: 1scope: productioneta_cap: 9950
# Named setdefine_set blocked_countries: ("NK", "IR", "SY")
# Type declarationsrequire_type: amount_cents: integerrequire_type: destination_country: stringrequire_type: sanctions_cleared: boolean
# Evidence requirementsrequire_evidence: transaction_detailsrequire_evidence: sanctions_screeningrequire_evidence: amount_centsrequire_provenance: sanctions_screening: ofac_service
# Conditional evidencerequire_evidence IF amount_cents > 1000000: enhanced_due_diligence
# Prohibitionsprohibit_evidence: manual_override_flag
# Predicates with failure messagespredicate: sanctions_ok: sanctions_cleared == true | "Sanctions screening must clear"predicate: not_blocked: destination_country NOT IN @blocked_countries | "Blocked destination"predicate: within_limit: amount_cents <= 5000000
# BOUNDARY block for complex logic (inline comparisons)BOUNDARY { sanctions_cleared == true AND amount_cents <= 5000000 AND (destination_country NOT IN @blocked_countries OR amount_cents < 100000)}Constructs Summary
Section titled “Constructs Summary”| Construct | Purpose | Pipeline Stage |
|---|---|---|
boundary_id: |
Unique identifier | Metadata |
version: |
Version string | Metadata |
scope: |
Operational scope | Metadata |
eta_cap: |
Maximum eta value (integer) | Metadata |
define_set |
Named set of literal values | Declaration |
require_evidence: |
Require a field | Stage 1 (Admissibility) |
require_evidence IF: |
Conditional requirement | Stage 1 |
require_type: |
Require field type | Stage 1 |
require_provenance: |
Require evidence source | Stage 1 (Admissibility) |
prohibit_evidence: |
Prohibit a field | Stage 2 (Prohibition) |
prohibit_evidence: ... WHERE |
Conditional prohibition | Stage 2 |
predicate: |
Named condition | Stage 3 (Predicates) |
BOUNDARY { } |
Inline expression block | Stage 3 |
Operators
Section titled “Operators”| Operator | Example |
|---|---|
==, !=, >, <, >=, <= |
amount >= 1000 |
AND, OR, NOT |
a AND (b OR NOT c) |
IN, NOT IN |
country IN @allowed_countries |
CONTAINS |
approver_list CONTAINS "compliance_officer" |
Value Types
Section titled “Value Types”| Type | Examples |
|---|---|
| Integer | 42, -100, 0 |
| String | "USD", "production" |
| Boolean | true, false |
Comments
Section titled “Comments”VBL supports two comment styles:
# Line comment (hash)// Line comment (double slash)Field Name Rules
Section titled “Field Name Rules”- Start with an ASCII letter (a-z, A-Z)
- Contain only alphanumeric characters and underscores
- Dot-separated paths for nested evidence:
payment.amount - Evidence class names and predicate names must be lowercase only
Reserved Keywords
Section titled “Reserved Keywords”Expression keywords: AND, OR, NOT, BOUNDARY, IN, CONTAINS, WHERE, true, false
Governance keywords: require_evidence, prohibit_evidence, require_provenance, require_type, predicate, define_set, boundary_id, version, scope, eta_cap
Governance keywords are reserved only when immediately followed by :. This ensures backward compatibility with field names that happen to match.
Next Steps
Section titled “Next Steps”- Evidence Requirements:
require_evidencesyntax - Predicates: named conditions
- BOUNDARY Expressions: the logical formula
- Examples: complete boundary examples
- Language Reference: complete grammar
