PASSED · DETERMINISTIC CORPUS

Adversarial repair evaluation

RippleProof is measured on both sides of the safety boundary: repairing supported dbt changes and refusing uncertain or unsafe automation. A false repair is any automatic plan produced for a case declared to require human review.

Corpus SHA-256: 6e6451226f139e41b77210a41296a3b149dcc667b928994909fec6187cca3364
Cases passed14/14All declared semantic checks
Repair coverage100%6 expected automation cases
Manual-review recall100%8 unsafe or uncertain cases
False repairs00% of negative cases

Scroll the case table horizontally to inspect every evidence column.

Expected and observed safety decisions for every adversarial evaluation case
CaseExpectedObservedArtifactsEvidence
Preserve a direct downstream contractpreserve-simple-boundary · supported-repairautomateautomate1 SQL / 0 contract / 0 protectedPASSAll semantic checks passed. No unresolved condition.
Rewrite quoted identifiers without touching inert textpreserve-quoted-inert-text · sql-token-safetyautomateautomate1 SQL / 0 contract / 0 protectedPASSAll semantic checks passed. No unresolved condition.
Propagate a rename through a declared dbt contractpropagate-contract-metadata · contract-repairautomateautomate1 SQL / 1 contract / 0 protectedPASSAll semantic checks passed. No unresolved condition.
Resolve a DataHub asset through a dbt manifest aliasmanifest-alias-mapping · repository-mappingautomateautomate1 SQL / 0 contract / 0 protectedPASSAll semantic checks passed. No unresolved condition.
Protect a transitive consumer behind a stable boundarypreserve-transitive-consumer · contract-boundaryautomateautomate1 SQL / 0 contract / 1 protectedPASSAll semantic checks passed. No unresolved condition.
Propagate code and contracts across two repositoriespropagate-two-repositories · multi-repository-repairautomateautomate2 SQL / 2 contract / 0 protectedPASSAll semantic checks passed. No unresolved condition.
Refuse a dashboard reached without column evidenceasset-level-dashboard · weak-lineagemanual-reviewmanual-review0 SQL / 0 contract / 0 protectedPASSAll semantic checks passed. DataHub reports asset-level reachability but not column usage.
Refuse to invent an alias for a complex projectioncomplex-preserve-projection · ambiguous-sqlmanual-reviewmanual-review0 SQL / 0 contract / 0 protectedPASSAll semantic checks passed. The downstream output uses the renamed column, but its SELECT projection is not a single unambiguous identifier that can be aliased safely.
Refuse an asset mapped to multiple dbt modelsambiguous-model-mapping · ambiguous-repositorymanual-reviewmanual-review0 SQL / 0 contract / 0 protectedPASSAll semantic checks passed. Multiple dbt models match this DataHub asset: analytics/models/orders_a.sql, finance/models/orders_b.sql.
Refuse a model containing only inert referencesinert-reference-only · sql-token-safetymanual-reviewmanual-review0 SQL / 0 contract / 0 protectedPASSAll semantic checks passed. The model contains no executable `user_id` identifier.
Refuse a duplicate destination in a dbt contractduplicate-contract-destination · contract-collisionmanual-reviewmanual-review1 SQL / 0 contract / 0 protectedPASSAll semantic checks passed. The dbt contract already declares `customer_id`; refusing to create a duplicate column in models/schema.yml.
Refuse automatic repair for an unsupported asset typeunsupported-column-asset · unsupported-consumermanual-reviewmanual-review0 SQL / 0 contract / 0 protectedPASSAll semantic checks passed. Automatic patches support confirmed dbt datasets only.
Refuse a preserve boundary without hop distancemissing-hop-distance · incomplete-lineagemanual-reviewmanual-review0 SQL / 0 contract / 0 protectedPASSAll semantic checks passed. DataHub did not provide a valid downstream hop distance, so RippleProof cannot prove where to place a compatibility boundary.
Refuse to guess when no downstream model existsmissing-downstream-model · missing-codemanual-reviewmanual-review0 SQL / 0 contract / 0 protectedPASSAll semantic checks passed. No matching dbt model was found across the supplied repositories.

The corpus runs locally against the same deterministic campaign-planning functions used by RippleProof. It makes no network requests, executes no migration, and does not modify source repositories.