5 queries to audit AI compliance evidence. What healthy looks like. What gaps look like.
Who this is for: Notified Body assessors (EU AI Act), C3PAOs (CMMC), ISSMs (NIST 800-53 / RMF), ISO 42001 certification auditors, bank examiners (SR 11-7), and internal audit teams reviewing SWT3 witness anchor evidence.
SWT3 witness anchors prove that specific operational controls were active at a specific point in time. They do not replace the assessor's independent judgment, professional expertise, or regulatory authority. Assessors must verify that anchored evidence is sufficient, appropriate, and relevant to the specific assessment context. Each regulatory framework retains its own assessment authority, methodology, and determination standards.
Before the on-site or remote assessment, request these artifacts from the client:
Continuous monitoring produces thousands of anchors over an assessment period. An AI system reporting inference provenance hourly generates 2,160 anchors per quarter. You do not need to verify all of them. You need to verify the right ones.
These five queries are designed to surface the evidence patterns that matter most for compliance determination. Each query targets a specific assessment concern, tells you exactly how to run it against a CSV export, and explains what healthy and suspicious results look like.
Every query below is written for a spreadsheet (Excel, Google Sheets, LibreOffice Calc). Open the ledger CSV, apply the filters described, and read the results. No API access, no terminal, no software installation required. API equivalents are included in collapsible sections for technical assessors.
Factor legends in this guide (e.g., "factor_b = observed drift magnitude") reflect the SWT3 SDK default conventions. Clients may customize factor usage in their implementation. Before relying on factor interpretations, ask the client to confirm their factor mapping matches the SDK defaults, or request their factor mapping document.
This guide documents evidence format and suggested review techniques. It does not prescribe assessment methodology. Sample sizes, sufficiency determinations, and assessment conclusions remain the assessor's professional responsibility under their applicable accreditation and regulatory requirements.
The ledger CSV export contains one row per anchor. Here is what a typical excerpt looks like, with annotations showing what to look for:
| # | procedure_id | verdict | factor_a | factor_b | factor_c | created_at | Assessment Notes (assessor annotations, not in export) |
|---|---|---|---|---|---|---|---|
| 1 | AI-INF.1 | PASS | 1 | 1 | 0 | 2026-06-01 08:12 | Healthy -- normal inference |
| 2 | AI-INF.1 | PASS | 1 | 1 | 0 | 2026-06-01 09:15 | Healthy -- regular cadence |
| 3 | AI-DRIFT.1 | PASS | accuracy | 0.03 | 0.10 | 2026-06-02 00:01 | Healthy -- drift (0.03) within threshold (0.10) |
| 4 | AI-INF.1 | PASS | 1 | 1 | 0 | 2026-06-15 14:22 | Red flag -- 13-day gap since row 2 |
| 5 | AI-DRIFT.1 | PASS | accuracy | 0.12 | 0.10 | 2026-06-16 00:01 | Red flag -- drift (0.12) exceeds threshold (0.10) but verdict is PASS |
| 6 | AI-GRD.1 | FAIL | toxicity | 0 | harmful_content | 2026-06-17 11:30 | Expected -- FAIL detected, check for remediation |
| 7 | AI-GRD.1 | PASS | toxicity | 1 | harmful_content | 2026-06-17 15:45 | Healthy -- FAIL remediated same day |
| 8 | AI-FAIR.1 | PASS | gender | 1.02 | 1.20 | 2026-06-18 09:00 | Healthy -- disparity (1.02) within threshold (1.20) |
Key observations from this sample: Row 4 has a 13-day gap (Query 4 would catch this). Row 5 shows drift exceeding the threshold with a PASS verdict -- ask the client why the verdict is PASS when the threshold was exceeded (Query 3 would catch this). Row 6-7 shows a healthy FAIL-then-PASS remediation pattern (Query 2 would confirm this). The created_at column in this export uses ISO 8601 format -- some exports may use Unix epoch timestamps instead.
created_at column to the last 90 days.procedure_id, values = COUNT of rows.A healthy deployment shows all expected procedures with anchor counts. Missing procedures (dashed red) are gaps requiring explanation.
In this example, AI-HITL.1 (human oversight) and AI-DATA.1 (data provenance) have zero anchors despite being in scope. These are findings.
verdict column to show only FAIL rows.procedure_id, then by created_at (newest first).AI-GRD.1 (guardrails): factor_a = guardrail type, factor_b = test result (0=failed), factor_c = blocked content category.
A FAIL verdict is not a problem -- it demonstrates the system is testing honestly. The concern is what happens after. This is the healthy pattern:
Red flag pattern: A FAIL with no subsequent PASS and no POA&M entry. This means the deficiency was detected but neither remediated nor documented.
procedure_id to AI-DRIFT.1.factor_b (observed drift magnitude) against factor_c (configured threshold) for each row.factor_a = drift metric identifier (e.g., "accuracy", "output_distribution") |
factor_b = observed drift magnitude (numeric) |
factor_c = configured threshold (numeric). When factor_b > factor_c, drift has exceeded the acceptable limit.
Each bar represents one AI-DRIFT.1 anchor. The dashed line is the configured threshold. Bars above the line are threshold exceedances.
Reading this chart: Green bars = drift within threshold. Amber = approaching threshold. Red = exceeded threshold. The two red bars in weeks 9-10 should be followed by an AI-MDL.2 anchor (model update). If they are not, the organization detected drift but did not act on it.
procedure_id to a high-frequency procedure such as AI-INF.1 (inference provenance).created_at (oldest first).created_at is in column F, enter =F3-F2 in cell G3 and drag down. Format column G as hours or days. If timestamps are Unix epoch numbers, use =(F3-F2)/86400 to get days.Each green tick represents one anchor. Compare the two patterns below:
Top row: Anchors evenly distributed across the 90-day period. This is continuous monitoring. Bottom row: One anchor early, then a large gap (red hatching), then a dense cluster of anchors just before the audit date. This suggests audit-eve cramming.
procedure_id to AI-REV.1.observations or evidence_summary column for revocation reason codes.factor_a = revoked anchor fingerprint |
factor_b = reason code (0=unspecified, 1=model_recall, 2=policy_violation, 3=data_contamination, 4=consent_withdrawal, 5=regulatory_order, 6=error_correction) |
factor_c = authority identifier
| Characteristic | Healthy Pattern | Concerning Pattern |
|---|---|---|
| Frequency | Matches the system type: real-time (financial/inference) produces hourly/per-request anchors; governance reviews produce daily/weekly anchors | Erratic frequency or sudden density changes unrelated to system activity |
| Coverage | All declared in-scope procedures have anchors; no silent gaps | Missing procedures, or procedures that appear and disappear |
| Verdict distribution | Majority PASS, some FAIL (honesty signal), FAILs followed by remediation within POA&M window | 100% PASS (unrealistic perfection), or persistent FAIL without remediation |
| Temporal pattern | Consistent cadence over full assessment period; minor gaps during documented maintenance | Clusters before audit dates; large unexplained gaps; weekend blackouts for 24/7 systems |
| Factor variety | Factor values vary naturally (different models, different metrics, different reviewers) | Identical factor values across all anchors (copy-paste evidence) |
| Evidence detail | Factors provide enough operational context for the assessor to evaluate substance | Evidence detail is minimized for systems that do not warrant it -- ask the client why operational context is restricted |
Print this page and check each item during your evidence review. Any checked item warrants further investigation -- it does not automatically indicate non-compliance, but it requires explanation from the client.
For each sample selected, independently verify the anchor fingerprint using the 5-second verification procedure. Do not rely solely on the client's verification -- perform at least a subset independently.
The table below reflects common practice observed across early SWT3 assessments. Your accreditation body, assessment methodology, or regulatory authority may prescribe different sample sizes. Adjust accordingly.
| Assessment Type | Common Practice | Verification Method |
|---|---|---|
| ISO 42001 Stage 2 certification | 10% of anchors or 100, whichever is greater | Independent fingerprint recomputation for all sampled anchors |
| ISO 42001 surveillance audit | 5% of anchors or 50, whichever is greater | Independent fingerprint recomputation for sampled anchors |
| CMMC Level 2 assessment | 10% of anchors or 100, whichever is greater | Recompute fingerprints; verify against CMMC practice mapping |
| EU AI Act conformity assessment | All anchors for high-risk procedures (AI-INF.1, AI-FAIR.1, AI-HITL.1); 10% for others | Full recomputation for high-risk; sampling for standard-risk |
| Bank regulatory examination (MRIA models) | All anchors for models rated MRIA (Most Require Immediate Attention) | Full recomputation; cross-reference with model inventory |
| Bank regulatory examination (MRA models) | 10% of anchors per MRA model | Sampling with independent recomputation |
| Spot check / internal audit | 5-10 randomly selected anchors across procedures | Web verifier or terminal verification |
Do not let the client choose which anchors to verify. Select your sample randomly from the ledger export -- sort by a column unrelated to compliance (e.g., alphabetical by fingerprint), then take every Nth row. This prevents the client from pre-selecting passing anchors.
Three ways to obtain the ledger data for your review:
| Method | How | What You Get |
|---|---|---|
| CSV Export | Ledger page in the dashboard -- click "Export CSV" button. Available to all authenticated users. | Full ledger with procedure_id, verdict, factors, timestamps, evidence summaries. Opens in Excel/Sheets. |
| JSON Export | GET /api/v1/ai-witness/export with Bearer token. Supports ?days=90 and ?format=json parameters. |
Structured JSON with procedure-level summaries and individual anchor records. |
| Compliance Passport | GET /api/v1/passport/export -- available as HTML (Pro+), HMAC-signed JSON (Pro+), or W3C Verifiable Credential (Enclave+). |
Framework-mapped compliance summary with integrity signatures. The VC format is self-verifiable using the issuer's public DID document. |
The assessor should always independently verify a subset of anchors from the export, not just review the export contents. The export provides the data; independent verification confirms its integrity.
When referencing SWT3 anchor evidence in your assessment report, use a consistent citation format. The following template covers the key elements:
"The assessor independently verified SWT3 Witness Anchor [full token] using SHA-256 fingerprint recomputation (FIPS 180-4). The anchor confirms that procedure [procedure ID] was evaluated on [human-readable date] with verdict [PASS/FAIL]. Factor values: [factor_a description] = [value], [factor_b description] = [value], [factor_c description] = [value]. Verification method: [web verifier / terminal / PowerShell]. Result: fingerprint match confirmed -- evidence integrity verified."
For sampling summary citations:
"The assessor reviewed [N] SWT3 witness anchors covering the period [start date] to [end date]. [X] of [Y] sampled anchors were independently verified via fingerprint recomputation. Coverage: [N] procedures produced evidence. Gaps identified: [list or 'none']. Red flags: [list or 'none']. Assessment conclusion: [assessor's determination]."