Skip to content

Verification Boundaries in VB-OS

A boundary is the complete specification of the conditions under which an action is authorized. It is written in VBL (Verification Boundary Language) and compiled into a snapshot that the evaluation engine executes.

boundary_id: payment-authorization
version: 1
scope: production
require_evidence: transaction_amount
require_evidence: account_balance
require_evidence: risk_score
require_provenance: risk_score: internal_risk_engine
prohibit_evidence: social_security_number
predicate: sufficient_funds: account_balance >= transaction_amount
predicate: risk_acceptable: risk_score <= 75
predicate: amount_within_limit: transaction_amount <= 50000

The header declares identity and scope:

  • boundary_id: unique identifier within the project
  • version: semantic version (informational, tracked by the platform)
  • scope: operational scope (e.g., production, staging)

require_evidence declares fields that must be present in the workload for the evaluation to proceed. Missing required evidence produces DEFER at Stage 1 (admissibility).

prohibit_evidence declares fields that must not be present. If a prohibited field exists in the workload, the evaluation produces DEFER at Stage 2.

require_provenance declares that a field must come from a specific source. This is verified by the platform against connector metadata.

predicate declarations bind a name to a comparison expression. Predicates are evaluated in Stage 3: all must pass for ASSERT.

The BOUNDARY { } block defines an optional inline logical formula for complex evaluation logic using AND, OR, NOT, parenthesized grouping, and comparison operators. When all conditions are conjunctive (all must pass), named predicates alone are sufficient: no BOUNDARY block is needed.

Write the boundary in VBL using the console, CLI, or API. Boundaries can be authored in two modes:

  • DSL Mode: write VBL source directly
  • Structured Mode: use the API to define boundary components (evidence, predicates, etc.) which are compiled to DSL

Both modes produce DSL source text. There is a single pipeline: VBL source → compiled boundary.

The platform compiles the DSL source into a compiled version. Compilation validates syntax, checks for undefined references, and produces the evaluation-ready representation. Compilation is deterministic: the same source always produces the same snapshot.

Promote a boundary version to an environment by creating a deployment. Only one deployment per environment can be active. When a workload arrives, the engine uses the active deployment’s boundary version.

When evidence is submitted, the engine loads the deployed boundary snapshot and executes the three-stage pipeline. The boundary version used is recorded in the evaluation result.

Boundaries are versioned. Each version is an immutable snapshot: once compiled, it cannot be modified. To change a boundary, create a new version. Previous versions remain available for replay.

Boundary versions are immutable after creation. The compiled version is preserved in immutable storage with integrity hashes. This immutability is what makes replay possible: the boundary used in a past evaluation is preserved exactly as it was.

A boundary is not a rule. Rules are typically simple if-then conditions that can be changed at any time. A boundary is a versioned, compiled, deployed specification with immutability guarantees and full evaluation traceability. The distinction matters for audit and compliance: a boundary produces verifiable, replayable authorization records.