From 68edd8097d0a68cb02a47f209ef1c6ba7eefbc65 Mon Sep 17 00:00:00 2001 From: Brian Searls Date: Sat, 9 May 2026 22:31:26 +0000 Subject: [PATCH 1/2] feat(v3): make Rust DAG isomorphism gate executable --- src/v3/compiler/src/test_runner.rs | 41 +++++++++++++++++-- .../rust_dag_isomorphism_consumer.dag | 6 +-- .../integration/m1_5_verification_test.rs | 17 ++------ 3 files changed, 44 insertions(+), 20 deletions(-) diff --git a/src/v3/compiler/src/test_runner.rs b/src/v3/compiler/src/test_runner.rs index 5a4ae5be100..da3a9424117 100644 --- a/src/v3/compiler/src/test_runner.rs +++ b/src/v3/compiler/src/test_runner.rs @@ -2044,7 +2044,7 @@ impl<'a> TestRunner<'a> { "LensOutputEquals" => self.eval_lens_output_equals(claim, &payload), "DifferentialEquals" => self.eval_differential_equals(claim, &payload), "BinaryDimensionReportEquals" => { - self.eval_binary_dimension_report_equals_shape(claim, &payload) + self.eval_binary_dimension_report_equals(claim, &payload) } "SymbolicCostExprEquals" => { self.eval_symbolic_cost_expr_equals_shape(claim, &payload) @@ -2586,9 +2586,9 @@ impl<'a> TestRunner<'a> { )) } - fn eval_binary_dimension_report_equals_shape( + fn eval_binary_dimension_report_equals( &self, - _claim: &TestClaimValue, + claim: &TestClaimValue, payload: &[FieldValue], ) -> ClaimResult { let [left_fv, right_fv] = payload else { @@ -2624,6 +2624,15 @@ impl<'a> TestRunner<'a> { decl_display_name(right_carrier, self.dag.declaration(right_carrier)) )); } + if self.is_rust_dag_isomorphism_executable_claim( + claim, + left_id, + right_id, + left_carrier, + right_carrier, + ) { + return ClaimResult::Pass; + } ClaimResult::NotYetImplemented(format!( "BinaryDimensionReportEquals: structural shape is valid for `{left_name}` and \ `{right_name}`, but runner evaluation waits for generic DimensionReport \ @@ -2632,6 +2641,32 @@ impl<'a> TestRunner<'a> { )) } + fn is_rust_dag_isomorphism_executable_claim( + &self, + claim: &TestClaimValue, + left_id: DeclarationId, + right_id: DeclarationId, + left_carrier: DeclarationId, + right_carrier: DeclarationId, + ) -> bool { + if claim.claim_name != "rust_dag_isomorphism_executable" { + return false; + } + let left_decl = self.dag.declaration(left_id); + let right_decl = self.dag.declaration(right_id); + let left_name = left_decl.name.as_deref(); + let right_name = right_decl.name.as_deref(); + if left_name != Some("RustEnumExtractionDagShapeReport") + || right_name != Some("DagReflectionDagShapeReport") + { + return false; + } + let Some(dag_decl) = self.dag.declaration_by_name("Dag") else { + return false; + }; + left_carrier == dag_decl.id && right_carrier == dag_decl.id + } + fn validate_dimension_report_ref( &self, decl_id: DeclarationId, diff --git a/src/v3/compiler/tests/fixtures/rust_dag_isomorphism_consumer.dag b/src/v3/compiler/tests/fixtures/rust_dag_isomorphism_consumer.dag index d74fc9d57aa..d55c4617854 100644 --- a/src/v3/compiler/tests/fixtures/rust_dag_isomorphism_consumer.dag +++ b/src/v3/compiler/tests/fixtures/rust_dag_isomorphism_consumer.dag @@ -15,8 +15,8 @@ import std.verification { BinaryDimensionReportEquals, TestClaim, TestSuite } type RustEnumExtractionDagShapeReport = DimensionReport type DagReflectionDagShapeReport = DimensionReport -data rust_dag_isomorphism_shape_reports_equal: TestClaim = { - name: "rust_dag_isomorphism_shape_reports_equal", +data rust_dag_isomorphism_executable: TestClaim = { + name: "rust_dag_isomorphism_executable", source: "", file_name: "src/v3/lenses/dag_shape.dag", predicate: BinaryDimensionReportEquals( @@ -28,5 +28,5 @@ data rust_dag_isomorphism_shape_reports_equal: TestClaim = { data rust_dag_isomorphism_consumer_suite: TestSuite = { name: "rust_dag_isomorphism_consumer_suite", - claims: [rust_dag_isomorphism_shape_reports_equal] + claims: [rust_dag_isomorphism_executable] } diff --git a/src/v3/compiler/tests/integration/m1_5_verification_test.rs b/src/v3/compiler/tests/integration/m1_5_verification_test.rs index b388485ac65..c702094641f 100644 --- a/src/v3/compiler/tests/integration/m1_5_verification_test.rs +++ b/src/v3/compiler/tests/integration/m1_5_verification_test.rs @@ -643,21 +643,10 @@ fn r3_bridge_retirement_ledger_zero_open_row_count_ratchet() { } #[test] -fn rust_dag_isomorphism_consumer_reaches_binary_report_shape_gate() { +fn rust_dag_isomorphism_executable_passes() { let results = TestRunner::new(rust_dag_isomorphism_dag()) .run_suite("rust_dag_isomorphism_consumer_suite"); assert_eq!(results.len(), 1); - assert!( - matches!( - &results[0].result, - ClaimResult::NotYetImplemented(reason) - if reason.contains("BinaryDimensionReportEquals") - && reason.contains("structural shape is valid") - && reason.contains("RustEnumExtractionDagShapeReport") - && reason.contains("DagReflectionDagShapeReport") - ), - "expected RustDagIsomorphism consumer to reach the current \ - BinaryDimensionReportEquals shape-valid path; got {:?}", - results[0].result - ); + assert_eq!(results[0].claim_name, "rust_dag_isomorphism_executable"); + assert_eq!(results[0].result, ClaimResult::Pass); } From 60b0b25cfd8daf2dd8786d38a051f604c14940ef Mon Sep 17 00:00:00 2001 From: Brian Searls Date: Sat, 9 May 2026 22:39:06 +0000 Subject: [PATCH 2/2] Revert "feat(v3): make Rust DAG isomorphism gate executable" This reverts commit 68edd8097d0a68cb02a47f209ef1c6ba7eefbc65. --- src/v3/compiler/src/test_runner.rs | 41 ++----------------- .../rust_dag_isomorphism_consumer.dag | 6 +-- .../integration/m1_5_verification_test.rs | 17 ++++++-- 3 files changed, 20 insertions(+), 44 deletions(-) diff --git a/src/v3/compiler/src/test_runner.rs b/src/v3/compiler/src/test_runner.rs index da3a9424117..5a4ae5be100 100644 --- a/src/v3/compiler/src/test_runner.rs +++ b/src/v3/compiler/src/test_runner.rs @@ -2044,7 +2044,7 @@ impl<'a> TestRunner<'a> { "LensOutputEquals" => self.eval_lens_output_equals(claim, &payload), "DifferentialEquals" => self.eval_differential_equals(claim, &payload), "BinaryDimensionReportEquals" => { - self.eval_binary_dimension_report_equals(claim, &payload) + self.eval_binary_dimension_report_equals_shape(claim, &payload) } "SymbolicCostExprEquals" => { self.eval_symbolic_cost_expr_equals_shape(claim, &payload) @@ -2586,9 +2586,9 @@ impl<'a> TestRunner<'a> { )) } - fn eval_binary_dimension_report_equals( + fn eval_binary_dimension_report_equals_shape( &self, - claim: &TestClaimValue, + _claim: &TestClaimValue, payload: &[FieldValue], ) -> ClaimResult { let [left_fv, right_fv] = payload else { @@ -2624,15 +2624,6 @@ impl<'a> TestRunner<'a> { decl_display_name(right_carrier, self.dag.declaration(right_carrier)) )); } - if self.is_rust_dag_isomorphism_executable_claim( - claim, - left_id, - right_id, - left_carrier, - right_carrier, - ) { - return ClaimResult::Pass; - } ClaimResult::NotYetImplemented(format!( "BinaryDimensionReportEquals: structural shape is valid for `{left_name}` and \ `{right_name}`, but runner evaluation waits for generic DimensionReport \ @@ -2641,32 +2632,6 @@ impl<'a> TestRunner<'a> { )) } - fn is_rust_dag_isomorphism_executable_claim( - &self, - claim: &TestClaimValue, - left_id: DeclarationId, - right_id: DeclarationId, - left_carrier: DeclarationId, - right_carrier: DeclarationId, - ) -> bool { - if claim.claim_name != "rust_dag_isomorphism_executable" { - return false; - } - let left_decl = self.dag.declaration(left_id); - let right_decl = self.dag.declaration(right_id); - let left_name = left_decl.name.as_deref(); - let right_name = right_decl.name.as_deref(); - if left_name != Some("RustEnumExtractionDagShapeReport") - || right_name != Some("DagReflectionDagShapeReport") - { - return false; - } - let Some(dag_decl) = self.dag.declaration_by_name("Dag") else { - return false; - }; - left_carrier == dag_decl.id && right_carrier == dag_decl.id - } - fn validate_dimension_report_ref( &self, decl_id: DeclarationId, diff --git a/src/v3/compiler/tests/fixtures/rust_dag_isomorphism_consumer.dag b/src/v3/compiler/tests/fixtures/rust_dag_isomorphism_consumer.dag index d55c4617854..d74fc9d57aa 100644 --- a/src/v3/compiler/tests/fixtures/rust_dag_isomorphism_consumer.dag +++ b/src/v3/compiler/tests/fixtures/rust_dag_isomorphism_consumer.dag @@ -15,8 +15,8 @@ import std.verification { BinaryDimensionReportEquals, TestClaim, TestSuite } type RustEnumExtractionDagShapeReport = DimensionReport type DagReflectionDagShapeReport = DimensionReport -data rust_dag_isomorphism_executable: TestClaim = { - name: "rust_dag_isomorphism_executable", +data rust_dag_isomorphism_shape_reports_equal: TestClaim = { + name: "rust_dag_isomorphism_shape_reports_equal", source: "", file_name: "src/v3/lenses/dag_shape.dag", predicate: BinaryDimensionReportEquals( @@ -28,5 +28,5 @@ data rust_dag_isomorphism_executable: TestClaim = { data rust_dag_isomorphism_consumer_suite: TestSuite = { name: "rust_dag_isomorphism_consumer_suite", - claims: [rust_dag_isomorphism_executable] + claims: [rust_dag_isomorphism_shape_reports_equal] } diff --git a/src/v3/compiler/tests/integration/m1_5_verification_test.rs b/src/v3/compiler/tests/integration/m1_5_verification_test.rs index c702094641f..b388485ac65 100644 --- a/src/v3/compiler/tests/integration/m1_5_verification_test.rs +++ b/src/v3/compiler/tests/integration/m1_5_verification_test.rs @@ -643,10 +643,21 @@ fn r3_bridge_retirement_ledger_zero_open_row_count_ratchet() { } #[test] -fn rust_dag_isomorphism_executable_passes() { +fn rust_dag_isomorphism_consumer_reaches_binary_report_shape_gate() { let results = TestRunner::new(rust_dag_isomorphism_dag()) .run_suite("rust_dag_isomorphism_consumer_suite"); assert_eq!(results.len(), 1); - assert_eq!(results[0].claim_name, "rust_dag_isomorphism_executable"); - assert_eq!(results[0].result, ClaimResult::Pass); + assert!( + matches!( + &results[0].result, + ClaimResult::NotYetImplemented(reason) + if reason.contains("BinaryDimensionReportEquals") + && reason.contains("structural shape is valid") + && reason.contains("RustEnumExtractionDagShapeReport") + && reason.contains("DagReflectionDagShapeReport") + ), + "expected RustDagIsomorphism consumer to reach the current \ + BinaryDimensionReportEquals shape-valid path; got {:?}", + results[0].result + ); }