VDI Circuit Coverage & Bypass Audit (v1.0)
This document provides auditor-facing evidence for A. Circuit Correctness & Completeness in the VDI Audit Framework.
Scope
In scope:
- Enforced policy circuits:
fairLendinghipaaAccesseuAiActsoc2Access
- Policy compiler and witness mapping:
protocol/lib/policyCompiler.js
- Differential bypass tests:
protocol/test/policy-bypass.test.js
Out of scope:
- Legal interpretation of regulation semantics
- Business rules not encoded in circuit/policy constraints
Rule-to-Constraint Traceability
fair-lending-v1 → fairLending
Policy source: protocol/lib/policyCompiler.js
Circuit source: protocol/circuits/fairLending.circom
no_protected_class:- policy field:
protected_class_used - circuit:
protected_class_used === 0
- policy field:
min_credit_score:- policy field:
credit_score >= min_credit_score - circuit:
GreaterEqThan(16)oncredit_scorevsmin_credit_score
- policy field:
max_dti_x100:- policy field:
debt_to_income <= max_dti_x100 / 100 - circuit:
LessEqThan(16)ondebt_to_income_x100vsmax_dti_x100
- policy field:
- approval gating:
- policy: approval requires all checks; denial is safe
- circuit:
invalid_approval = loan_approved * (1 - both_pass); invalid_approval === 0
hipaa-access-v1 → hipaaAccess
Policy source: protocol/lib/policyCompiler.js
Circuit source: protocol/circuits/hipaaAccess.circom
bulk_export_attempted == 0:- circuit: binary flag +
bulk_export_attempted === 0
- circuit: binary flag +
authorization_level >= min_auth_level:- circuit:
GreaterEqThan(8)
- circuit:
data_fields_accessed <= max_fields:- circuit:
LessEqThan(8)
- circuit:
purpose_code >= min_purpose_code:- circuit:
GreaterEqThan(8)
- circuit:
- access gating:
- circuit:
invalid_grant = access_granted * (1 - all_pass); invalid_grant === 0
- circuit:
eu-ai-act-v1 → euAiAct
Policy source: protocol/lib/policyCompiler.js
Circuit source: protocol/circuits/euAiAct.circom
unassessed_deployment == 0risk_level >= min_risk_levelhuman_oversight_score >= min_oversight_scoretransparency_score >= min_transparency_score- compliance output gating via conditional approval constraints
soc2-access-v1 → soc2Access
Policy source: protocol/lib/policyCompiler.js
Circuit source: protocol/circuits/soc2Access.circom
review_bypass == 0auth_factor_count >= min_auth_factorspermission_level <= max_permission_levelsession_timeout_minutes <= max_session_timeout- authorization output gating via conditional approval constraints
Differential Bypass Campaign
Test suite: protocol/test/policy-bypass.test.js
Method
For each policy:
- Start from a known-valid approval decision.
- Apply one mutation intended to bypass a specific rule.
- Assert
validateDecision(policyId, decision).valid === false. - Assert failure details identify the expected rule family.
Mutation Matrix
fair-lending-v1:protected_class_used = truecredit_scorebelow thresholddebt_to_incomeabove threshold
hipaa-access-v1:bulk_export_attempted = trueauthorization_levelbelow thresholddata_fields_accessedabove threshold
eu-ai-act-v1:unassessed_deployment = truehuman_oversight_scorebelow thresholdtransparency_scorebelow threshold
soc2-access-v1:review_bypass = trueauth_factor_countbelow thresholdsession_timeout_minutesabove threshold
Safe-Denial Checks
The suite also verifies denial-path behavior remains valid where intended by policy design:
fair-lending-v1: denial allowed even when applicant metrics fail thresholds.hipaa-access-v1: denial allowed even when access metrics fail thresholds.
Reproducibility
Run the full audit suite:
bash
bash protocol/scripts/run-vdi-audit-suite.shRun only bypass/traceability checks:
bash
cd protocol
node --test test/policy-bypass.test.jsCurrent Verdict
- Rule-to-constraint mapping is explicit and test-backed for all enforced policy circuits listed above.
- Differential bypass attempts in the mutation matrix are rejected.
- Deterministic policy parameter compilation and policy-hash variance on override changes are covered in tests.
- This evidence supports A1-A3 in the VDI Audit Framework.
