- The four outcomes a test can have
- The assurance case: twelve elements
- Where invariants come from
- Risk-adaptive sequential testing
- Consequence tiers and suite allocation
- Dynamic severity
- Tiered human review
- Who evaluates EvalQA: the calibration benchmark
- The Sev-1 safety gate, with the arithmetic
- Every statistic we report, and how
- The five-metric assurance stack
- Limitations and validation status
- Independence and conflicts
1. The four outcomes a test can have
Every invariant run terminates in exactly one of four mutually exclusive states. There is no “mostly passed”.
| State | Meaning | What is captured |
|---|---|---|
PASS | Invariant satisfied across all stochastic trials for its risk class. | Trial count, execution hashes. |
DEFECT_CONFIRMED | Invariant violated. A reproducible defect trace and a counterfactual data-state proof exist. | Generated SQL, AST, execution plan, counterfactual result, severity, exposure. |
EXCLUDED_UNSUPPORTED | Query outside the contracted surface, or in a dialect or family we have not validated. | Reason code; counted against coverage, shown on the scorecard. |
INDETERMINATE | The business definition is ambiguous (“active customer” has five meanings). Never guessed. | Triggers the Customer Business Definition Owner’s contractual 48-hour resolution window, then a re-run. |
2. The assurance case: twelve elements
An evaluation is not a score; it is a case. Every signed bundle contains these twelve elements, in this order, so that two bundles from two customers are comparable and an auditor knows where to look.
- Agent identity and target architecture — which agent, which model version, which semantic layer.
- In-perimeter runtime boundary definition — where execution happened and what left it.
- Consequence tier and threat model classification.
- Pre-frozen schema surface denominator — signed by the customer owner and our lead methodologist before execution, so coverage cannot be inflated afterwards.
- Invariant assertion specifications.
- Test-suite lineage and challenge-nonce commitments.
- Observed defect trace and AST execution plan.
- Counterfactual data-state verification.
- Human adjudication and rater competency signatures.
- Evidence Assurance Level (EAL-1 to EAL-4; see evidence).
- Residual risk acceptance formulation — written for the customer executive to sign, not for us.
- Dual cryptographic attestation signatures — customer tenant key and EvalQA verification key.
3. Where invariants come from
Earlier versions of this method scaled linearly with human headcount: fifty-plus hours of bespoke case authoring per client. Version 9.3 replaces that with a software pipeline and reserves human time for the logic only a human can know.
Metadata and manifest ingestion
Customer dbt
manifest.jsonand warehouseINFORMATION_SCHEMA: model grain, declared tests, relationships, effective-dated columns, row access policies, clustering keys. No table contents.Automated invariant generation
Standard relational invariants are synthesised: join fan-out traps, null foreign keys, temporal range boundaries, tenant predicates, sargability on clustering keys. Target: 70% of a suite in under 15 minutes PLANNING ASSUMPTION, tested at the Day-30 gate (≥25 valid rules from a real manifest).
Targeted human authoring
Type C fixtures for proprietary business logic — custom UDFs, multi-table rollups, stored procedures. Authoring time reported in every readout; the trajectory that matters is 50 hours in Sprint 1 to under 5 by Sprint 10 TARGET.
Adversarial challenge queries and counterfactual probes
Independent of customer golden truth: parameterised generators with rotating holdout seeds, so that a static public query set never becomes an LLM training target.
4. Risk-adaptive sequential testing
Agents are stochastic. A fixed sample of five trials is mathematically insufficient for a high-consequence invariant: five passes still leave a one-sided 95% upper bound on the failure probability of about 45%. So the trial count depends on what the invariant protects.
| Risk class | Examples | Trials | What a clean run establishes |
|---|---|---|---|
| Low — formatting | Column aliases, ordering, deprecation warnings | n = 5 | Reproducibility only. |
| Medium — aggregations | Grouping, distinct counts, averages of averages | n = 20 | Upper 95% bound on failure ≈ 14%. |
| High — financial & authorisation | Revenue recognition, tenant isolation, row policies | SPRT, up to n = 59 | With 95% confidence, true failure probability pfail < 5%. |
Sequential probability ratio testing lets a high-risk invariant stop early on a confirmed failure, but never early on a pass.
5. Consequence tiers and suite allocation
Suite composition is governed by the agent’s consequence tier and threat model, not by a fixed split.
| Consequence tier | Independent adversarial | Customer golden truth | Third component |
|---|---|---|---|
| Tier 1 — financial, payroll | ≥ 50% | 30% | 20% counterfactual data-state stress |
| Tier 2 — operational, supply chain | ≥ 40% | 40% | 20% schema-drift probes |
| Tier 3 — exploratory BI | ≥ 30% (contractual floor) | 50% | 20% randomised edge probes |
Under no circumstances does an engagement proceed with fewer than 30% independent EvalQA challenge cases. Customer-supplied golden truth is validated at intake — that is not free, and it is priced as a capped addition rather than hidden.
6. Dynamic severity
Severity is never dictated by defect family alone. The same formula error is Sev-3 in an internal dashboard and Sev-1 in a billing agent.
| Tier | Designation | Operational definition |
|---|---|---|
| Sev-1 | Critical hazard | Direct financial misstatement (> $50K exposure), unauthorised PII/MNPI leakage, regulatory non-compliance, or an irreversible action. |
| Sev-2 | High defect | Material analytical error altering executive metrics, silent zero-row drops, runaway compute (> $5,000/month unpruned scans). |
| Sev-3 | Medium defect | Inefficient construction, minor cohort skew, interactive latency timeouts (> 30 s). |
| Sev-4 | Low anomaly | Cosmetic alias deviations, formatting quirks, deprecation warnings. |
7. Tiered human review
Five human raters per item is an unprofitable services model and, worse, an unnecessary one. Review is routed by what the item needs.
| Tier | Who | When | Share of items |
|---|---|---|---|
| 1 | Deterministic AST and invariant checks | Always | 100%; 70–80% of routine passes end here at near-zero marginal cost |
| 2 | Automated semantic judge (EvalML) | Always | Compares query plans against valid equivalence sets |
| 3 | One qualified expert reviewer | Edge cases, invariant exceptions, high-consequence vectors | ~20–30% ASM-01 |
| 4 | Two blinded reviewers + lead adjudication | Sev-1 disputes, client-contested findings | As needed |
| QC | 15–25% overlapping sample across raters | Continuous | Monitors α ≥ 0.75; catches drift |
Who qualifies as a reviewer, and how, is on the Evaluator Guild page. In short: ≥98% Sev-1 recall on a 50-item challenge battery (at most one miss), ≤5% false positives on matched clean controls, Brier score ≤0.15 with positive skill, and 5% hidden gold canaries in production with a Bayesian rolling error rate and an emergency suspension after two consecutive misses. That is an observed qualifying score, not a claim about true underlying recall.
8. Who evaluates EvalQA: the calibration benchmark
A common failure in AI evaluation is to conflate the benchmark used to validate the instrument with the suites run on customer systems. We keep them apart. The Ground-Truth Calibration Benchmark (GTCB) is a synthetic, mathematically verified reference suite used only to measure our own detection sensitivity, specificity and inter-panel reproducibility. Customers never see or modify it.
It contains exactly 500 balanced items: 250 seeded defect positives and 250 clean controls across eight failure families, split into three governance partitions to stop engineering from overfitting the detector to its own test.
| # | Defect family | Status | Sev-1 | Sev-2 | Sev-3 | Sev-4 | Clean | Total |
|---|---|---|---|---|---|---|---|---|
| 1 | Join fan-outs (1:N) | VALIDATED | 10 | 12 | 8 | 5 | 35 | 70 |
| 2 | SCD-2 temporal logic | VALIDATED | 12 | 10 | 6 | 4 | 32 | 64 |
| 3 | Fiscal calendar shift | VALIDATED | 8 | 10 | 8 | 4 | 30 | 60 |
| 4 | Null predicate traps | VALIDATED | 6 | 10 | 10 | 6 | 32 | 64 |
| 5 | Micro-partition scans | VALIDATED | 4 | 12 | 10 | 6 | 32 | 64 |
| 6 | Multi-tenant row leak | VALIDATED | 14 | 8 | 6 | 4 | 32 | 64 |
| 7 | Tool parameter abuse | VALIDATED | 8 | 10 | 8 | 4 | 30 | 60 |
| 8 | Prompt injection leak | VALIDATED | 8 | 8 | 6 | 5 | 27 | 54 |
| Total balanced corpus | 70 | 80 | 62 | 38 | 250 | 500 | ||
| Partition | Items | Who touches it | Purpose |
|---|---|---|---|
| Tier 1 — Development calibration | 150 (75 / 75) | EvalQA engineers | Author invariants, calibrate judge models, test runner heuristics. |
| Tier 2 — Sequestered acceptance | 250 (125 / 125) | Lead methodologist only; air-gapped from engineering | Evaluated strictly at release gates to validate detection sensitivity. |
| Tier 3 — External challenge | 100 (50 / 50) | Independent data architects and academic fellows | Blind to engineering until post-evaluation audit. |
Per family the split is 30 / 50 / 20 percent (e.g. join fan-outs: 11/11, 17/17, 7/7). Reuse contamination is fought with parameterised generators and rotating holdout seeds. Methodological honesty note: the benchmark covers eight families; the commercial taxonomy has eighteen domains. We market only the eight as measured capabilities. The other ten are PILOT or UNVALIDATED, and a family marked validated was earlier — wrongly — marked so before it had been tested; audit finding #57 relabelled them.
9. The Sev-1 safety gate, with the arithmetic
The question a buyer should ask is not “what is your sensitivity?” but “what is the worst your miss rate could plausibly be?”. We answer with a one-sided upper confidence bound, not a point estimate.
Under independent Bernoulli trials, if zero Sev-1 misses are observed across neff qualifying cases, the one-sided 95% upper bound on the true miss rate is:
To guarantee that bound is at most 2.0%:
The gate is stratified: zero misses across all qualified runs, drawn from the sequestered and external partitions, with at least ten qualifying Sev-1 runs per validated family.
Clustering, and why 149 becomes 239
Test items in a real schema cluster around tables and dbt models. If items in a cluster share intra-cluster correlation ρ, 149 raw items are not 149 independent observations. The raw count is inflated by the variance inflation factor:
Status: TARGET. The gate is defined and the corpus is reconciled; a release passes it or does not, and the result is published on this page when a release ships.
10. Every statistic we report, and how
Uncertainty intervals
Pass rates, defect prevalence, sensitivity and specificity carry 95% Wilson score intervals, computed with scipy.stats.binomtest and statsmodels.stats.proportion. We do not hand-derive interval algebra; an earlier draft did, and got it wrong (audit finding #15).
Inter-rater reliability
Unit of analysis: the categorical rating (Pass, Defect-Family-ID, Indeterminate) assigned to one query trace. We publish observed percentage agreement Po alongside chance-adjusted coefficients — never one without the other.
- Fleiss’ κ for m ≥ 2 fixed raters per item. Target κ ≥ 0.75.
- Krippendorff’s α on nominal and ordinal scales, tolerant of missing observations. Target α ≥ 0.75.
- Gwet’s AC1 reported next to κ so that the Feinstein-Cicchetti paradox — high agreement, depressed κ under skewed prevalence — is visible rather than hidden. Target AC1 ≥ 0.80.
Rater calibration
Reviewers give a probability fi ∈ [0,1] that a flagged anomaly is a true Sev-1/2 defect. Against adjudicated truth oi ∈ {0,1}:
Competency is a vector — gold accuracy, ngold, recency weight w(t) = exp(−λΔt) with a 90-day half-life, dialect competency, domain score, overturn rate, BS, BSS — not three heuristics multiplied into a scalar.
Latent class models
Dawid-Skene EM is used only on the dedicated calibration graph, where raters evaluate dense overlapping sets of ≥50 challenge queries. Sparse production routing (one or two raters per item) is not identifiable and we do not pretend otherwise.
11. The five-metric assurance stack
- ICFY
- Incremental Consequential Finding Yield. Share of critical/high defects found beyond the native platform evaluation. Target ≥ 40%. Kill signal < 20% across five customers.
- CDDR
- Consequential Defect Discovery Rate. Critical findings per 100 evaluated agent traces.
- RWAC
- Risk-Weighted Assurance Coverage. Share of the pre-frozen schema surface under active invariants.
- DCR
- Decision Change Rate. Share of findings that changed a go/no-go or prompt decision. Target ≥ 30%.
- FOR
- Finding Overturn Rate. Share of reported defects overturned on adjudication. Target < 5%.
ICFY replaced an earlier metric whose denominator — all defects that exist in production — is unknowable (audit finding #56).
12. Limitations and validation status
- Ten of eighteen domains are not benchmark-validated. Catalog hallucination, cross-turn memory contamination, decision latency and governance refusal are UNVALIDATED; six more are PILOT.
- Snowflake is the only validated dialect. Databricks is in pilot; BigQuery and Redshift parse but have no benchmark partition. See coverage.
- The automation targets are assumptions. 70% automatic synthesis, 30% human triage share, 12 minutes per reviewed item, 50% sprint-to-platform conversion — each has a decision gate and a date in the 90-day programme.
- No customer results exist yet. Everything above describes the instrument; nothing above describes an outcome we have delivered.
- Sequential testing bounds the failure probability, not the consequence. A 5% bound on a Tier-1 invariant may still be unacceptable; that judgement belongs to the customer’s residual-risk acceptance.
13. Independence and conflicts
We take no success fees, never author production prompts or dbt models for an audit client, report confirmed Sev-1s without redaction, and have suspended public model leaderboards so that a benchmark publisher is never also an auditor of the benchmarked. The full text is the Independence Charter. When our own method is found wrong, the recall protocol applies to us.
See what a bundle looks like → The 18 failure domains Glossary