From 74e904d49bc8074462a9b4df4e93452394845062 Mon Sep 17 00:00:00 2001 From: James Ross Date: Wed, 7 Oct 2026 23:53:51 -0700 Subject: [PATCH 01/13] Bind projected CAS invocation input to its expected digest --- CHANGELOG.md | 2 + crates/warp-core/src/echo_operation.rs | 266 +++++++++++++++--- .../application-contract-hosting.md | 10 + 3 files changed, 241 insertions(+), 37 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a787ded5f..d779a73d7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ ### Added +- Native projected compare-and-set invocation encoding retains canonical application input and statically binds the expected attachment-value digest. Compiler/provider production and end-to-end execution/recovery integration remain pending. + - A disabled-by-default experimental Keep ReferenceStore adapter implements the complete-object CAS port with explicit limits, private bindings, sanitized backend errors and atomic output promotion. It preserves existing CAS defaults and claims no restart durability. - An isolated experimental Echo–Keep identity bridge checks both independent hash laws and exact byte length from one bounded stream. It leaves the default CAS dependency graph unchanged. diff --git a/crates/warp-core/src/echo_operation.rs b/crates/warp-core/src/echo_operation.rs index fd62bcd33..f3aaab155 100644 --- a/crates/warp-core/src/echo_operation.rs +++ b/crates/warp-core/src/echo_operation.rs @@ -47,6 +47,8 @@ use crate::{ const PACKAGE_SCHEMA: &str = "echo.operation-package/v1"; const PROGRAM_SCHEMA: &str = "echo.operation-program/v1"; const INVOCATION_SCHEMA: &str = "echo.operation-invocation/v1"; +const PROJECTED_CAS_INVOCATION_SCHEMA: &str = + "echo.operation-invocation.anchored-node-alpha-cas-projected/v1"; const PROGRAM_KIND: &str = "anchored-node-attachment-compare-and-set/v1"; const FOOTPRINT_CONTRACT: &str = "anchored-node-alpha-exact/v1"; const INPUT_SCHEMA: &str = "echo.operation.input.anchored-node-alpha-cas/v1"; @@ -1121,27 +1123,42 @@ pub struct EchoOperationApplicationResultProjectionV1 { max_output_bytes: u64, application_input_node_key_path: Vec, application_input_replacement_path: Vec, + application_input_expected_value_digest_path: Option>, runtime_expression: EchoOperationResultExpressionV1, } impl EchoOperationApplicationResultProjectionV1 { fn from_value(value: CanonicalValueV1) -> Result { - let mut fields = exact_text_map( - value, - &[ - "application_input_node_key_path", - "application_input_replacement_path", - "artifact_bytes", - "artifact_identity", - "runtime_expression", - ], - )?; + let has_expected_digest = matches!(&value, CanonicalValueV1::Map(entries) if entries.iter().any(|(key, _)| key == &text_value("application_input_expected_value_digest_path"))); + let mut names = vec![ + "application_input_node_key_path", + "application_input_replacement_path", + "artifact_bytes", + "artifact_identity", + "runtime_expression", + ]; + if has_expected_digest { + names.push("application_input_expected_value_digest_path"); + } + let mut fields = exact_text_map(value, &names)?; + let expected_digest_path = if has_expected_digest { + Some(take_projection_path( + &mut fields, + "application_input_expected_value_digest_path", + )?) + } else { + None + }; let artifact_bytes = take_bytes(&mut fields, "artifact_bytes")?; let artifact_identity = take_hash(&mut fields, "artifact_identity")?; let node_key_path = take_projection_path(&mut fields, "application_input_node_key_path")?; let replacement_path = take_projection_path(&mut fields, "application_input_replacement_path")?; - if node_key_path == replacement_path { + if node_key_path == replacement_path + || expected_digest_path + .as_ref() + .is_some_and(|path| path == &node_key_path || path == &replacement_path) + { return Err(invalid_structure( "result projection input bindings must be distinct", )); @@ -1166,12 +1183,13 @@ impl EchoOperationApplicationResultProjectionV1 { max_output_bytes, application_input_node_key_path: node_key_path, application_input_replacement_path: replacement_path, + application_input_expected_value_digest_path: expected_digest_path, runtime_expression, }) } fn to_value(&self) -> CanonicalValueV1 { - map_value([ + let mut fields = vec![ ( "application_input_node_key_path", projection_path_value(&self.application_input_node_key_path), @@ -1186,7 +1204,19 @@ impl EchoOperationApplicationResultProjectionV1 { ), ("artifact_identity", hash_value(self.artifact_identity)), ("runtime_expression", self.runtime_expression.to_value()), - ]) + ]; + if let Some(path) = &self.application_input_expected_value_digest_path { + fields.push(( + "application_input_expected_value_digest_path", + projection_path_value(path), + )); + } + CanonicalValueV1::Map( + fields + .into_iter() + .map(|(key, value)| (text_value(key), value)) + .collect(), + ) } /// Returns the exact compiler-owned projection identity. @@ -1206,6 +1236,7 @@ impl EchoOperationApplicationResultProjectionV1 { canonical_application_input_bytes: &[u8], node: NodeKey, replacement_bytes: &[u8], + kind: EchoOperationInvocationKindV1, ) -> Result<(), EchoOperationArtifactErrorV1> { let application_input = decode_canonical_cbor_v1(canonical_application_input_bytes).map_err(canonical_error)?; @@ -1242,7 +1273,35 @@ impl EchoOperationApplicationResultProjectionV1 { "application input replacement binding disagrees with invocation bytes", )); } - Ok(()) + self.validate_expected_digest_binding(&application_input, kind) + } + + fn validate_expected_digest_binding( + &self, + application_input: &CanonicalValueV1, + kind: EchoOperationInvocationKindV1, + ) -> Result<(), EchoOperationArtifactErrorV1> { + match (&self.application_input_expected_value_digest_path, kind) { + (None, EchoOperationInvocationKindV1::AnchoredNodeAttachmentCreateIfAbsent) => Ok(()), + ( + Some(path), + EchoOperationInvocationKindV1::AnchoredNodeAttachmentCompareAndSet { + expected_value_digest, + }, + ) => { + if value_at_projection_path(application_input, path)? + != &hash_value(expected_value_digest) + { + return Err(invalid_structure( + "application input expected digest differs from invocation precondition", + )); + } + Ok(()) + } + _ => Err(invalid_structure( + "expected digest binding does not match invocation program", + )), + } } fn evaluate( @@ -2919,8 +2978,14 @@ impl EchoOperationInvocationV1 { EchoOperationInvocationKindV1::AnchoredNodeAttachmentCompareAndSet { expected_value_digest, } => { - let mut fields = Vec::from(common(INVOCATION_SCHEMA)); + let schema = if self.application_input_bytes.is_some() { + PROJECTED_CAS_INVOCATION_SCHEMA + } else { + INVOCATION_SCHEMA + }; + let mut fields = Vec::from(common(schema)); fields.push(("expected_value_digest", hash_value(expected_value_digest))); + self.append_application_input(&mut fields)?; CanonicalValueV1::Map( fields .into_iter() @@ -2939,27 +3004,7 @@ impl EchoOperationInvocationV1 { "absence_precondition", text_value(CREATE_ABSENCE_PRECONDITION), )); - if let Some(application_input_bytes) = &self.application_input_bytes { - if application_input_bytes.len() > MAX_APPLICATION_INPUT_BYTES { - return Err(invalid_structure( - "application input exceeds the projected invocation byte ceiling", - )); - } - let application_input = decode_canonical_cbor_v1(application_input_bytes) - .map_err(canonical_error)?; - if encode_canonical_cbor_v1(&application_input).map_err(canonical_error)? - != *application_input_bytes - { - return Err(artifact_error( - EchoOperationArtifactErrorKindV1::NonCanonical, - "application input did not reproduce the exact invocation bytes", - )); - } - fields.push(( - "application_input_bytes", - CanonicalValueV1::Bytes(application_input_bytes.clone()), - )); - } + self.append_application_input(&mut fields)?; CanonicalValueV1::Map( fields .into_iter() @@ -2971,6 +3016,34 @@ impl EchoOperationInvocationV1 { encode_canonical_cbor_v1(&value).map_err(canonical_error) } + fn append_application_input( + &self, + fields: &mut Vec<(&str, CanonicalValueV1)>, + ) -> Result<(), EchoOperationArtifactErrorV1> { + if let Some(application_input_bytes) = &self.application_input_bytes { + if application_input_bytes.len() > MAX_APPLICATION_INPUT_BYTES { + return Err(invalid_structure( + "application input exceeds the projected invocation byte ceiling", + )); + } + let application_input = + decode_canonical_cbor_v1(application_input_bytes).map_err(canonical_error)?; + if encode_canonical_cbor_v1(&application_input).map_err(canonical_error)? + != *application_input_bytes + { + return Err(artifact_error( + EchoOperationArtifactErrorKindV1::NonCanonical, + "application input did not reproduce the exact invocation bytes", + )); + } + fields.push(( + "application_input_bytes", + CanonicalValueV1::Bytes(application_input_bytes.clone()), + )); + } + Ok(()) + } + fn from_canonical_bytes(bytes: &[u8]) -> Result { let value = decode_canonical_cbor_v1(bytes).map_err(canonical_error)?; let schema = match &value { @@ -3019,6 +3092,23 @@ impl EchoOperationInvocationV1 { true, false, ), + PROJECTED_CAS_INVOCATION_SCHEMA => ( + &[ + "application_input_bytes", + "authority_grant_identity", + "delegated_budget", + "evaluation_basis", + "expected_value_digest", + "node_id", + "operation_coordinate", + "package_id", + "replacement_bytes", + "schema", + "warp_id", + ][..], + false, + true, + ), PROJECTED_CREATE_INVOCATION_SCHEMA => ( &[ "absence_precondition", @@ -3042,8 +3132,10 @@ impl EchoOperationInvocationV1 { require_text( &mut fields, "schema", - if projected { + if projected && create_if_absent { PROJECTED_CREATE_INVOCATION_SCHEMA + } else if projected { + PROJECTED_CAS_INVOCATION_SCHEMA } else if create_if_absent { CREATE_INVOCATION_SCHEMA } else { @@ -3329,6 +3421,7 @@ fn admit_invocation_static_v1<'a>( application_input_bytes, invocation.node, &invocation.replacement_bytes, + invocation.kind, ) .map_err(|error| { invocation_admission_error( @@ -7488,6 +7581,105 @@ mod tests { ) } + #[test] + fn projected_cas_admission_requires_an_expected_digest_binding() { + let (mut installed, _, _, policy, mut invocation, _) = projected_create_fixture(1_024); + invocation.delegated_budget = EchoOperationBudgetV1::new(8, 1_024, 1_024); + installed.program = EchoOperationProgramV1::anchored_node_attachment_compare_and_set( + crate::make_type_id("projected-created-node"), + crate::make_type_id("projected-created-atom"), + 1_024, + ); + invocation.kind = EchoOperationInvocationKindV1::AnchoredNodeAttachmentCompareAndSet { + expected_value_digest: digest(212), + }; + let bytes = invocation.to_canonical_bytes().expect("CAS encodes"); + let error = admit_invocation_static_v1(Some(&installed), policy, &bytes) + .expect_err("projected CAS must bind its expected digest"); + assert_eq!( + error.kind(), + EchoOperationInvocationAdmissionErrorKindV1::ApplicationInputMismatch + ); + } + + #[test] + fn projected_cas_admission_rejects_substituted_expected_digest() { + let (mut installed, _, _, policy, mut invocation, _) = projected_create_fixture(1_024); + invocation.delegated_budget = EchoOperationBudgetV1::new(8, 1_024, 1_024); + installed.program = EchoOperationProgramV1::anchored_node_attachment_compare_and_set( + crate::make_type_id("projected-created-node"), + crate::make_type_id("projected-created-atom"), + 1_024, + ); + let mut projection_value = installed + .application_result_projection + .as_ref() + .expect("projection") + .to_value(); + let CanonicalValueV1::Map(ref mut fields) = projection_value else { + panic!("projection is a map"); + }; + fields.push(( + text_value("application_input_expected_value_digest_path"), + projection_path_value(&["expected".to_owned()]), + )); + installed.application_result_projection = Some( + EchoOperationApplicationResultProjectionV1::from_value(projection_value) + .expect("CAS digest projection decodes"), + ); + invocation.application_input_bytes = Some( + encode_canonical_cbor_v1(&map_value([ + ("key", text_value("fixture-key")), + ("message", text_value("fixture-message")), + ("expected", hash_value(digest(212))), + ])) + .expect("input encodes"), + ); + invocation.kind = EchoOperationInvocationKindV1::AnchoredNodeAttachmentCompareAndSet { + expected_value_digest: digest(212), + }; + admit_invocation_static_v1( + Some(&installed), + policy, + &invocation.to_canonical_bytes().expect("CAS encodes"), + ) + .expect("exact expected digest admits at the static boundary"); + invocation.kind = EchoOperationInvocationKindV1::AnchoredNodeAttachmentCompareAndSet { + expected_value_digest: digest(213), + }; + let error = admit_invocation_static_v1( + Some(&installed), + policy, + &invocation.to_canonical_bytes().expect("CAS encodes"), + ) + .expect_err("substituted expected digest refuses"); + assert_eq!( + error.kind(), + EchoOperationInvocationAdmissionErrorKindV1::ApplicationInputMismatch + ); + } + + #[test] + fn projected_cas_invocation_preserves_application_input_and_identity() { + let (_, _, _, _, mut invocation, application_input) = projected_create_fixture(1_024); + invocation.kind = EchoOperationInvocationKindV1::AnchoredNodeAttachmentCompareAndSet { + expected_value_digest: digest(212), + }; + let encoded = invocation + .to_canonical_bytes() + .expect("projected CAS encodes"); + let decoded = EchoOperationInvocationV1::from_canonical_bytes(&encoded) + .expect("projected CAS decodes"); + assert_eq!(decoded.application_input_bytes, Some(application_input)); + assert_eq!(decoded.kind, invocation.kind); + let projected_id = invocation.identity().expect("projected identity"); + invocation.application_input_bytes = None; + assert_ne!( + projected_id, + invocation.identity().expect("legacy identity") + ); + } + #[test] fn projected_invocation_rejects_missing_or_rebound_application_input() { let (installed, state, basis, policy, invocation, _) = projected_create_fixture(1_024); diff --git a/docs/architecture/application-contract-hosting.md b/docs/architecture/application-contract-hosting.md index f272e5552..f87473024 100644 --- a/docs/architecture/application-contract-hosting.md +++ b/docs/architecture/application-contract-hosting.md @@ -165,6 +165,16 @@ tests, but it is not the application lifecycle. The create-if-absent profile creates a node and its alpha attachment. It does not create a skeleton edge from the lane root. A detached cell therefore remains outside the reachable-state root hash. Equal roots do not prove equal stores or the absence of a detached write. The retained tick patch and commit identity bind that write; duplicate checks also compare the typed target-value digest. This preserves the [Merkle commit law](../spec/merkle-commit.md). +The native invocation codec has a distinct projected compare-and-set form that +retains canonical application input in the invocation identity. Static admission +requires an `application_input_expected_value_digest_path` in the installed +projection and exact equality between its 32-byte input value and the invocation +precondition. Create projections omit this path. Missing or substituted bindings +return `ApplicationInputMismatch`; legacy invocation encodings remain unchanged. +This native boundary does not establish compiler/provider production of projected +compare-and-set packages: that integration and its scheduler/recovery witnesses +remain unimplemented. + The generic operation runner distinguishes missing Action outcomes, typed obstructions, and footprint conflicts in its error messages. Both the first Action and unexpected duplicate outcomes use bounded summaries and omit invocation data. Opted-in Rust backtraces remain separate diagnostic output. This diagnostic boundary does not change retained obstruction encoding. The external-provider schema additionally admits one exact zero-choice From 4b94e724891b53fdf51d6e18da1f887af3d86b5a Mon Sep 17 00:00:00 2001 From: James Ross Date: Thu, 8 Oct 2026 00:01:36 -0700 Subject: [PATCH 02/13] Lower and independently verify projected CAS profiles --- CHANGELOG.md | 2 +- .../src/executable_operation.rs | 249 ++++++++++++++---- .../src/executable_operation.rs | 249 ++++++++++++++---- .../tests/executable_operation_package.rs | 120 ++++++++- .../application-contract-hosting.md | 12 +- 5 files changed, 508 insertions(+), 124 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d779a73d7..e5d3751f7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,7 @@ ### Added -- Native projected compare-and-set invocation encoding retains canonical application input and statically binds the expected attachment-value digest. Compiler/provider production and end-to-end execution/recovery integration remain pending. +- Native projected compare-and-set invocation encoding retains canonical application input and statically binds the expected attachment-value digest. The native lowerer and independent verifier reconstruct CAS-specific profiles and reject rebound digest paths or under-budget configurations. Checked component/schema production and end-to-end execution/recovery integration remain pending. - A disabled-by-default experimental Keep ReferenceStore adapter implements the complete-object CAS port with explicit limits, private bindings, sanitized backend errors and atomic output promotion. It preserves existing CAS defaults and claims no restart durability. diff --git a/crates/echo-edict-provider-lowerer/src/executable_operation.rs b/crates/echo-edict-provider-lowerer/src/executable_operation.rs index 534f15593..e7e5590b5 100644 --- a/crates/echo-edict-provider-lowerer/src/executable_operation.rs +++ b/crates/echo-edict-provider-lowerer/src/executable_operation.rs @@ -69,8 +69,85 @@ const MAX_RESULT_PROJECTION_TEXT_BYTES: usize = 1_024; const MAX_RESULT_PROJECTION_ARTIFACT_BYTES: usize = 64 * 1_024; const MAX_APPLICATION_RESULT_BYTES: u64 = 64 * 1_024; +#[derive(Clone, Copy, PartialEq, Eq)] +enum OperationProgram { + Create, + CompareAndSet, +} + +impl OperationProgram { + const fn select(self, create: &'static str, cas: &'static str) -> &'static str { + match self { + Self::Create => create, + Self::CompareAndSet => cas, + } + } + const fn write_class(self) -> &'static str { + self.select("create", "replace") + } + const fn kind(self) -> &'static str { + self.select(PROGRAM_KIND, "anchored-node-attachment-compare-and-set/v1") + } + const fn operation_profile(self) -> &'static str { + self.select(OPERATION_PROFILE, "continuum.profile.write/v1") + } + const fn intrinsic(self) -> &'static str { + self.select( + TARGET_INTRINSIC, + "echo.dpo@1.anchored-node-attachment-compare-and-set", + ) + } + const fn input_schema(self) -> &'static str { + self.select( + INPUT_SCHEMA, + "echo.operation.input.anchored-node-alpha-cas/v1", + ) + } + const fn result_schema(self) -> &'static str { + self.select( + RESULT_SCHEMA, + "echo.operation.result.anchored-node-alpha-cas/v1", + ) + } + const fn obstruction_schema(self) -> &'static str { + self.select( + OBSTRUCTION_SCHEMA, + "echo.operation.obstruction.anchored-node-alpha-cas/v1", + ) + } + const fn result_interpretation(self) -> &'static str { + self.select( + RESULT_INTERPRETATION, + "echo.operation.result-interpretation.anchored-node-alpha-cas/v1", + ) + } + const fn obstruction_interpretation(self) -> &'static str { + self.select( + OBSTRUCTION_INTERPRETATION, + "echo.operation.obstruction-interpretation.anchored-node-alpha-cas/v1", + ) + } + const fn basis_schema(self) -> &'static str { + self.select( + APPLICATION_BASIS_SCHEMA, + "echo.operation.basis.anchored-node-alpha/v1", + ) + } + const fn footprint(self) -> &'static str { + self.select(FOOTPRINT_CONTRACT, "anchored-node-alpha-exact/v1") + } + const fn target_profile(self) -> &'static str { + self.select( + TARGET_PROFILE, + "echo.operation-target.anchored-node-alpha-cas/v1", + ) + } +} + #[derive(Clone, Copy)] struct ProgramConfiguration<'a> { + program: OperationProgram, + expected_value_digest_field: Option<&'a str>, authority_profile: &'a str, required_node_type_profile: &'a str, required_attachment_type_profile: &'a str, @@ -83,6 +160,7 @@ struct ProgramConfiguration<'a> { } struct ApplicationIntent<'a> { + program: OperationProgram, name: &'a str, operation_coordinate: String, obstruction_coordinate: &'a str, @@ -173,6 +251,11 @@ pub(super) fn lower(request: &LoweringRequestV1) -> Result( let (intent_name, intent) = single_text_map_entry(required_map(value, "intents", "core.echo-operation")?) .ok_or_else(|| super::unsupported_semantics("core.echo-operation"))?; - if text_field(intent, "requiredOperationProfile") != Some(OPERATION_PROFILE) { - return Err(super::unsupported_semantics(coordinate)); - } + let program = match text_field(intent, "requiredOperationProfile") { + Some(OPERATION_PROFILE) => OperationProgram::Create, + Some("continuum.profile.write/v1") => OperationProgram::CompareAndSet, + _ => return Err(super::unsupported_semantics(coordinate)), + }; let body = required_map(intent, "body", coordinate)?; let [node] = required_array(body, "nodes", coordinate)?.as_slice() else { return Err(super::unsupported_semantics(coordinate)); @@ -864,6 +949,7 @@ fn validate_core<'a>( return Err(super::unsupported_semantics(coordinate)); } Ok(ApplicationIntent { + program, name: intent_name, operation_coordinate: format!("{coordinate}.{intent_name}"), obstruction_coordinate, @@ -963,8 +1049,8 @@ fn validate_adapter( } let effects = required_map(value, "effectImplementations", "adapter.echo-operation")?; let implementation = required_map_field(effects, semantic_effect, "adapter.echo-operation")?; - if text_field(implementation, "targetIntrinsic") != Some(TARGET_INTRINSIC) - || text_field(implementation, "writeClass") != Some("create") + if text_field(implementation, "targetIntrinsic") != Some(intent.program.intrinsic()) + || text_field(implementation, "writeClass") != Some(intent.program.write_class()) { return Err(super::unsupported_semantics("adapter.echo-operation")); } @@ -1067,7 +1153,7 @@ fn validate_target_ir( let (intent_name, target_intent) = single_text_map_entry(intents) .ok_or_else(|| super::unsupported_semantics("target-ir.echo-operation"))?; if intent_name != intent.name - || text_field(target_intent, "operationProfile") != Some(OPERATION_PROFILE) + || text_field(target_intent, "operationProfile") != Some(intent.program.operation_profile()) { return Err(super::unsupported_semantics("target-ir.echo-operation")); } @@ -1080,7 +1166,7 @@ fn validate_target_ir( else { return Err(super::unsupported_semantics("target-ir.echo-operation")); }; - if text_field(step, "targetIntrinsic") != Some(TARGET_INTRINSIC) + if text_field(step, "targetIntrinsic") != Some(intent.program.intrinsic()) || as_text(failure) != Some(PRECONDITION_MISMATCH) { return Err(super::unsupported_semantics("target-ir.echo-operation")); @@ -1091,13 +1177,20 @@ fn validate_target_ir( fn validate_configuration( value: &CanonicalValueV1, ) -> Result, ProviderRefusalV1> { - if text_field(value, "apiVersion") != Some(CONFIGURATION_ABI) - || text_field(value, "programKind") != Some(PROGRAM_KIND) - { + if text_field(value, "apiVersion") != Some(CONFIGURATION_ABI) { return Err(super::unsupported_semantics( "target-configuration.echo-operation", )); } + let program = match text_field(value, "programKind") { + Some(PROGRAM_KIND) => OperationProgram::Create, + Some("anchored-node-attachment-compare-and-set/v1") => OperationProgram::CompareAndSet, + _ => { + return Err(super::unsupported_semantics( + "target-configuration.program-kind", + )) + } + }; let invocation = required_map( value, "invocationBinding", @@ -1123,12 +1216,38 @@ fn validate_configuration( "target-configuration.echo-operation", )); } + let expected_value_digest_field = match program { + OperationProgram::CompareAndSet => { + let field = required_nonempty_text( + invocation, + "expectedValueDigestField", + "target-configuration.echo-operation", + )?; + validate_projection_text(field, "target-configuration.echo-operation")?; + if field == node_key_field || field == replacement_field { + return Err(super::unsupported_semantics( + "target-configuration.expected-digest-field", + )); + } + Some(field) + } + OperationProgram::Create => { + if map_field(invocation, "expectedValueDigestField").is_some() { + return Err(super::unsupported_semantics( + "target-configuration.expected-digest-field", + )); + } + None + } + }; let budget = required_map( value, "budgetCeiling", "target-configuration.echo-operation", )?; let configuration = ProgramConfiguration { + program, + expected_value_digest_field, authority_profile: required_nonempty_text( value, "authorityProfile", @@ -1156,7 +1275,12 @@ fn validate_configuration( replacement_field, }; if configuration.max_replacement_bytes == 0 - || configuration.steps < 3 + || configuration.steps + < if program == OperationProgram::CompareAndSet { + 4 + } else { + 3 + } || configuration.read_bytes < 64 || configuration.write_bytes < 64 { @@ -1421,7 +1545,7 @@ fn encode_package( "intrinsic_profile_identity", hash_value(profile_digest(INTRINSIC_PROFILE)), ), - ("kind", canonical_text(PROGRAM_KIND)), + ("kind", canonical_text(configuration.program.kind())), ( "max_replacement_bytes", CanonicalValueV1::Integer(i128::from(configuration.max_replacement_bytes)), @@ -1473,49 +1597,54 @@ fn encode_package( hash_value(hash_from_bound(&closure.target_ir.artifact)?), ), ]); - let package = canonical_map([ + let mut projection_value = canonical_map([ ( - "application_result_projection", - canonical_map([ - ( - "application_input_node_key_path", - CanonicalValueV1::Array( - result_projection - .node_key_path - .iter() - .map(|segment| canonical_text(segment)) - .collect(), - ), - ), - ( - "application_input_replacement_path", - CanonicalValueV1::Array( - result_projection - .replacement_path - .iter() - .map(|segment| canonical_text(segment)) - .collect(), - ), - ), - ( - "artifact_bytes", - CanonicalValueV1::Bytes( - closure.result_projection.artifact.artifact.bytes.clone(), - ), - ), - ( - "artifact_identity", - hash_value(hash_from_bound(&closure.result_projection.artifact)?), - ), - ( - "runtime_expression", - result_projection.runtime_expression.clone(), - ), - ]), + "application_input_node_key_path", + CanonicalValueV1::Array( + result_projection + .node_key_path + .iter() + .map(|segment| canonical_text(segment)) + .collect(), + ), + ), + ( + "application_input_replacement_path", + CanonicalValueV1::Array( + result_projection + .replacement_path + .iter() + .map(|segment| canonical_text(segment)) + .collect(), + ), + ), + ( + "artifact_bytes", + CanonicalValueV1::Bytes(closure.result_projection.artifact.artifact.bytes.clone()), + ), + ( + "artifact_identity", + hash_value(hash_from_bound(&closure.result_projection.artifact)?), ), + ( + "runtime_expression", + result_projection.runtime_expression.clone(), + ), + ]); + if let (Some(field), CanonicalValueV1::Map(fields)) = ( + configuration.expected_value_digest_field, + &mut projection_value, + ) { + fields.push(( + canonical_text("application_input_expected_value_digest_path"), + CanonicalValueV1::Array(vec![canonical_text(field)]), + )); + } + let package = canonical_map([ + ("application_result_projection", projection_value), ( "application_basis_schema_identity", - hash_value(profile_digest(APPLICATION_BASIS_SCHEMA)), + hash_value(profile_digest(configuration.program.basis_schema())), ), ( "authority_profile_identity", @@ -1544,7 +1673,7 @@ fn encode_package( ), ( "footprint_contract_identity", - hash_value(profile_digest(FOOTPRINT_CONTRACT)), + hash_value(profile_digest(configuration.program.footprint())), ), ( "interpreter_profile_identity", @@ -1552,7 +1681,7 @@ fn encode_package( ), ( "input_schema_identity", - hash_value(profile_digest(INPUT_SCHEMA)), + hash_value(profile_digest(configuration.program.input_schema())), ), ( "intrinsic_profile_identity", @@ -1560,11 +1689,13 @@ fn encode_package( ), ( "obstruction_schema_identity", - hash_value(profile_digest(OBSTRUCTION_SCHEMA)), + hash_value(profile_digest(configuration.program.obstruction_schema())), ), ( "obstruction_interpretation_identity", - hash_value(profile_digest(OBSTRUCTION_INTERPRETATION)), + hash_value(profile_digest( + configuration.program.obstruction_interpretation(), + )), ), ( "obstruction_coordinate", @@ -1577,17 +1708,19 @@ fn encode_package( ("program", CanonicalValueV1::Bytes(program_bytes)), ( "result_schema_identity", - hash_value(profile_digest(RESULT_SCHEMA)), + hash_value(profile_digest(configuration.program.result_schema())), ), ( "result_interpretation_identity", - hash_value(profile_digest(RESULT_INTERPRETATION)), + hash_value(profile_digest( + configuration.program.result_interpretation(), + )), ), ("schema", canonical_text(PACKAGE_SCHEMA)), ("semantic_closure", semantic_closure), ( "target_profile_identity", - hash_value(profile_digest(TARGET_PROFILE)), + hash_value(profile_digest(configuration.program.target_profile())), ), ]); encode_canonical_cbor_v1(&package) diff --git a/crates/echo-edict-provider-verifier/src/executable_operation.rs b/crates/echo-edict-provider-verifier/src/executable_operation.rs index ba67fd0d8..cf44a81ee 100644 --- a/crates/echo-edict-provider-verifier/src/executable_operation.rs +++ b/crates/echo-edict-provider-verifier/src/executable_operation.rs @@ -75,8 +75,85 @@ pub(super) const MAX_RESULT_PROJECTION_TEXT_BYTES: usize = 1_024; const MAX_RESULT_PROJECTION_ARTIFACT_BYTES: usize = 64 * 1_024; const MAX_APPLICATION_RESULT_BYTES: u64 = 64 * 1_024; +#[derive(Clone, Copy, PartialEq, Eq)] +enum OperationProgram { + Create, + CompareAndSet, +} + +impl OperationProgram { + const fn select(self, create: &'static str, cas: &'static str) -> &'static str { + match self { + Self::Create => create, + Self::CompareAndSet => cas, + } + } + const fn write_class(self) -> &'static str { + self.select("create", "replace") + } + const fn kind(self) -> &'static str { + self.select(PROGRAM_KIND, "anchored-node-attachment-compare-and-set/v1") + } + const fn operation_profile(self) -> &'static str { + self.select(OPERATION_PROFILE, "continuum.profile.write/v1") + } + const fn intrinsic(self) -> &'static str { + self.select( + TARGET_INTRINSIC, + "echo.dpo@1.anchored-node-attachment-compare-and-set", + ) + } + const fn input_schema(self) -> &'static str { + self.select( + INPUT_SCHEMA, + "echo.operation.input.anchored-node-alpha-cas/v1", + ) + } + const fn result_schema(self) -> &'static str { + self.select( + RESULT_SCHEMA, + "echo.operation.result.anchored-node-alpha-cas/v1", + ) + } + const fn obstruction_schema(self) -> &'static str { + self.select( + OBSTRUCTION_SCHEMA, + "echo.operation.obstruction.anchored-node-alpha-cas/v1", + ) + } + const fn result_interpretation(self) -> &'static str { + self.select( + RESULT_INTERPRETATION, + "echo.operation.result-interpretation.anchored-node-alpha-cas/v1", + ) + } + const fn obstruction_interpretation(self) -> &'static str { + self.select( + OBSTRUCTION_INTERPRETATION, + "echo.operation.obstruction-interpretation.anchored-node-alpha-cas/v1", + ) + } + const fn basis_schema(self) -> &'static str { + self.select( + APPLICATION_BASIS_SCHEMA, + "echo.operation.basis.anchored-node-alpha/v1", + ) + } + const fn footprint(self) -> &'static str { + self.select(FOOTPRINT_CONTRACT, "anchored-node-alpha-exact/v1") + } + const fn target_profile(self) -> &'static str { + self.select( + TARGET_PROFILE, + "echo.operation-target.anchored-node-alpha-cas/v1", + ) + } +} + #[derive(Clone, Copy)] struct ProgramConfiguration<'a> { + program: OperationProgram, + expected_value_digest_field: Option<&'a str>, authority_profile: &'a str, required_node_type_profile: &'a str, required_attachment_type_profile: &'a str, @@ -89,6 +166,7 @@ struct ProgramConfiguration<'a> { } struct ApplicationIntent<'a> { + program: OperationProgram, name: &'a str, operation_coordinate: String, obstruction_coordinate: &'a str, @@ -181,6 +259,11 @@ pub(super) fn verify( validate_adapter(&adapter, closure.configuration, &intent, &semantic_effect)?; validate_target_ir(&target_ir, request, closure.lawpack, &intent)?; let configuration = validate_configuration(&configuration)?; + if configuration.program != intent.program { + return Err(super::unsupported_semantics( + "target-configuration.operation-profile", + )); + } let result_projection = validate_result_projection( &result_projection, closure.result_projection, @@ -887,9 +970,11 @@ fn validate_core<'a>( let (intent_name, intent) = single_text_map_entry(required_map(value, "intents", "core.echo-operation")?) .ok_or_else(|| super::unsupported_semantics("core.echo-operation"))?; - if text_field(intent, "requiredOperationProfile") != Some(OPERATION_PROFILE) { - return Err(super::unsupported_semantics(coordinate)); - } + let program = match text_field(intent, "requiredOperationProfile") { + Some(OPERATION_PROFILE) => OperationProgram::Create, + Some("continuum.profile.write/v1") => OperationProgram::CompareAndSet, + _ => return Err(super::unsupported_semantics(coordinate)), + }; let body = required_map(intent, "body", coordinate)?; let [node] = required_array(body, "nodes", coordinate)?.as_slice() else { return Err(super::unsupported_semantics(coordinate)); @@ -907,6 +992,7 @@ fn validate_core<'a>( return Err(super::unsupported_semantics(coordinate)); } Ok(ApplicationIntent { + program, name: intent_name, operation_coordinate: format!("{coordinate}.{intent_name}"), obstruction_coordinate, @@ -1010,8 +1096,8 @@ fn validate_adapter( semantic_effect, "adapter.echo-operation", )?; - if text_field(implementation, "targetIntrinsic") != Some(TARGET_INTRINSIC) - || text_field(implementation, "writeClass") != Some("create") + if text_field(implementation, "targetIntrinsic") != Some(intent.program.intrinsic()) + || text_field(implementation, "writeClass") != Some(intent.program.write_class()) { return Err(super::unsupported_semantics("adapter.echo-operation")); } @@ -1116,7 +1202,7 @@ fn validate_target_ir( single_text_map_entry(required_map(value, "intents", "target-ir.echo-operation")?) .ok_or_else(|| super::unsupported_semantics("target-ir.echo-operation"))?; if intent_name != intent.name - || text_field(target_intent, "operationProfile") != Some(OPERATION_PROFILE) + || text_field(target_intent, "operationProfile") != Some(intent.program.operation_profile()) { return Err(super::unsupported_semantics("target-ir.echo-operation")); } @@ -1129,7 +1215,7 @@ fn validate_target_ir( else { return Err(super::unsupported_semantics("target-ir.echo-operation")); }; - if text_field(step, "targetIntrinsic") != Some(TARGET_INTRINSIC) + if text_field(step, "targetIntrinsic") != Some(intent.program.intrinsic()) || as_text(failure) != Some(PRECONDITION_MISMATCH) { return Err(super::unsupported_semantics("target-ir.echo-operation")); @@ -1140,13 +1226,20 @@ fn validate_target_ir( fn validate_configuration( value: &CanonicalValueV1, ) -> Result, ProviderRefusalV1> { - if text_field(value, "apiVersion") != Some(CONFIGURATION_ABI) - || text_field(value, "programKind") != Some(PROGRAM_KIND) - { + if text_field(value, "apiVersion") != Some(CONFIGURATION_ABI) { return Err(super::unsupported_semantics( "target-configuration.echo-operation", )); } + let program = match text_field(value, "programKind") { + Some(PROGRAM_KIND) => OperationProgram::Create, + Some("anchored-node-attachment-compare-and-set/v1") => OperationProgram::CompareAndSet, + _ => { + return Err(super::unsupported_semantics( + "target-configuration.program-kind", + )) + } + }; let invocation = required_map( value, "invocationBinding", @@ -1172,12 +1265,38 @@ fn validate_configuration( "target-configuration.echo-operation", )); } + let expected_value_digest_field = match program { + OperationProgram::CompareAndSet => { + let field = required_nonempty_text( + invocation, + "expectedValueDigestField", + "target-configuration.echo-operation", + )?; + validate_projection_text(field, "target-configuration.echo-operation")?; + if field == node_key_field || field == replacement_field { + return Err(super::unsupported_semantics( + "target-configuration.expected-digest-field", + )); + } + Some(field) + } + OperationProgram::Create => { + if map_field(invocation, "expectedValueDigestField").is_some() { + return Err(super::unsupported_semantics( + "target-configuration.expected-digest-field", + )); + } + None + } + }; let budget = required_map( value, "budgetCeiling", "target-configuration.echo-operation", )?; let configuration = ProgramConfiguration { + program, + expected_value_digest_field, authority_profile: required_nonempty_text( value, "authorityProfile", @@ -1205,7 +1324,12 @@ fn validate_configuration( replacement_field, }; if configuration.max_replacement_bytes == 0 - || configuration.steps < 3 + || configuration.steps + < if program == OperationProgram::CompareAndSet { + 4 + } else { + 3 + } || configuration.read_bytes < 64 || configuration.write_bytes < 64 { @@ -1468,7 +1592,7 @@ fn encode_expected_package( "intrinsic_profile_identity", hash_value(profile_digest(INTRINSIC_PROFILE)), ), - ("kind", canonical_text(PROGRAM_KIND)), + ("kind", canonical_text(configuration.program.kind())), ( "max_replacement_bytes", CanonicalValueV1::Integer(i128::from(configuration.max_replacement_bytes)), @@ -1517,49 +1641,54 @@ fn encode_expected_package( hash_value(hash_from_bound(&request.target_ir)?), ), ]); - let package = canonical_map([ + let mut projection_value = canonical_map([ ( - "application_result_projection", - canonical_map([ - ( - "application_input_node_key_path", - CanonicalValueV1::Array( - result_projection - .node_key_path - .iter() - .map(|segment| canonical_text(segment)) - .collect(), - ), - ), - ( - "application_input_replacement_path", - CanonicalValueV1::Array( - result_projection - .replacement_path - .iter() - .map(|segment| canonical_text(segment)) - .collect(), - ), - ), - ( - "artifact_bytes", - CanonicalValueV1::Bytes( - closure.result_projection.artifact.artifact.bytes.clone(), - ), - ), - ( - "artifact_identity", - hash_value(hash_from_bound(&closure.result_projection.artifact)?), - ), - ( - "runtime_expression", - result_projection.runtime_expression.clone(), - ), - ]), + "application_input_node_key_path", + CanonicalValueV1::Array( + result_projection + .node_key_path + .iter() + .map(|segment| canonical_text(segment)) + .collect(), + ), + ), + ( + "application_input_replacement_path", + CanonicalValueV1::Array( + result_projection + .replacement_path + .iter() + .map(|segment| canonical_text(segment)) + .collect(), + ), + ), + ( + "artifact_bytes", + CanonicalValueV1::Bytes(closure.result_projection.artifact.artifact.bytes.clone()), + ), + ( + "artifact_identity", + hash_value(hash_from_bound(&closure.result_projection.artifact)?), ), + ( + "runtime_expression", + result_projection.runtime_expression.clone(), + ), + ]); + if let (Some(field), CanonicalValueV1::Map(fields)) = ( + configuration.expected_value_digest_field, + &mut projection_value, + ) { + fields.push(( + canonical_text("application_input_expected_value_digest_path"), + CanonicalValueV1::Array(vec![canonical_text(field)]), + )); + } + let package = canonical_map([ + ("application_result_projection", projection_value), ( "application_basis_schema_identity", - hash_value(profile_digest(APPLICATION_BASIS_SCHEMA)), + hash_value(profile_digest(configuration.program.basis_schema())), ), ( "authority_profile_identity", @@ -1588,7 +1717,7 @@ fn encode_expected_package( ), ( "footprint_contract_identity", - hash_value(profile_digest(FOOTPRINT_CONTRACT)), + hash_value(profile_digest(configuration.program.footprint())), ), ( "interpreter_profile_identity", @@ -1596,7 +1725,7 @@ fn encode_expected_package( ), ( "input_schema_identity", - hash_value(profile_digest(INPUT_SCHEMA)), + hash_value(profile_digest(configuration.program.input_schema())), ), ( "intrinsic_profile_identity", @@ -1604,11 +1733,13 @@ fn encode_expected_package( ), ( "obstruction_schema_identity", - hash_value(profile_digest(OBSTRUCTION_SCHEMA)), + hash_value(profile_digest(configuration.program.obstruction_schema())), ), ( "obstruction_interpretation_identity", - hash_value(profile_digest(OBSTRUCTION_INTERPRETATION)), + hash_value(profile_digest( + configuration.program.obstruction_interpretation(), + )), ), ( "obstruction_coordinate", @@ -1621,17 +1752,19 @@ fn encode_expected_package( ("program", CanonicalValueV1::Bytes(program_bytes)), ( "result_schema_identity", - hash_value(profile_digest(RESULT_SCHEMA)), + hash_value(profile_digest(configuration.program.result_schema())), ), ( "result_interpretation_identity", - hash_value(profile_digest(RESULT_INTERPRETATION)), + hash_value(profile_digest( + configuration.program.result_interpretation(), + )), ), ("schema", canonical_text(PACKAGE_SCHEMA)), ("semantic_closure", semantic_closure), ( "target_profile_identity", - hash_value(profile_digest(TARGET_PROFILE)), + hash_value(profile_digest(configuration.program.target_profile())), ), ]); encode_canonical_cbor_v1(&package) diff --git a/crates/echo-edict-provider-verifier/tests/executable_operation_package.rs b/crates/echo-edict-provider-verifier/tests/executable_operation_package.rs index 477ffe9d2..4d8f24477 100644 --- a/crates/echo-edict-provider-verifier/tests/executable_operation_package.rs +++ b/crates/echo-edict-provider-verifier/tests/executable_operation_package.rs @@ -96,6 +96,109 @@ struct RawFixture { result_projection: Vec, } +#[test] +fn cas_providers_refuse_missing_aliased_and_underbudget_digest_bindings() { + let names = FIXTURES[0]; + let mut valid = configuration(names); + *map_field_mut(&mut valid, "programKind") = text("anchored-node-attachment-compare-and-set/v1"); + let CanonicalValueV1::Map(fields) = map_field_mut(&mut valid, "invocationBinding") else { + panic!("map"); + }; + fields.push((text("expectedValueDigestField"), text("expected"))); + let valid_fixture = raw_fixture_with_values(names, valid.clone(), result_projection(names)); + let package = lower_package(names, &valid_fixture); + for case in ["missing", "key", "value", "budget"] { + let mut config = valid.clone(); + if case == "budget" { + *map_field_mut(map_field_mut(&mut config, "budgetCeiling"), "steps") = integer(3); + } else if case == "missing" { + let CanonicalValueV1::Map(fields) = map_field_mut(&mut config, "invocationBinding") + else { + panic!("map"); + }; + fields.retain(|(key, _)| key != &text("expectedValueDigestField")); + } else { + *map_field_mut( + map_field_mut(&mut config, "invocationBinding"), + "expectedValueDigestField", + ) = text(case); + } + let fixture = raw_fixture_with_values(names, config, result_projection(names)); + let lower = lowerer::lower(lowering_request(names, &fixture)).expect_err(case); + assert_eq!( + lower.kind, + lowerer::ProviderRefusalKind::UnsupportedSemantics, + "{case}" + ); + let verify = verifier::verify(verification_request(names, &fixture, package.clone())) + .expect_err(case); + assert_eq!( + verify.kind, + verifier::ProviderRefusalKind::UnsupportedSemantics, + "{case}" + ); + } +} + +#[test] +fn verifier_accepts_projected_compare_and_set_and_rejects_rebound_digest_path() { + let names = FIXTURES[0]; + let mut config = configuration(names); + *map_field_mut(&mut config, "programKind") = + text("anchored-node-attachment-compare-and-set/v1"); + let CanonicalValueV1::Map(bindings) = map_field_mut(&mut config, "invocationBinding") else { + panic!("binding map"); + }; + bindings.push((text("expectedValueDigestField"), text("expected"))); + let fixture = raw_fixture_with_values(names, config, result_projection(names)); + let package = lower_package(names, &fixture); + let mut value = decode_canonical_cbor_v1(&package).expect("package decodes"); + let projection = map_field_mut(&mut value, "application_result_projection"); + assert_eq!( + map_field(projection, "application_input_expected_value_digest_path"), + &CanonicalValueV1::Array(vec![text("expected")]) + ); + let accepted = verifier::verify(verification_request(names, &fixture, package)) + .expect("CAS verification completes"); + let report = + decode_canonical_cbor_v1(&accepted.outputs[0].artifact.bytes).expect("report decodes"); + assert_eq!(text_field(&report, "outcome"), Some("accepted")); + *map_field_mut(projection, "application_input_expected_value_digest_path") = + CanonicalValueV1::Array(vec![text("other")]); + let rejected = verifier::verify(verification_request( + names, + &fixture, + canonical_bytes(&value), + )) + .expect("rejection report"); + let report = + decode_canonical_cbor_v1(&rejected.outputs[0].artifact.bytes).expect("report decodes"); + assert_eq!(text_field(&report, "outcome"), Some("rejected")); +} + +fn cas_profile_value(value: CanonicalValueV1) -> CanonicalValueV1 { + match value { + CanonicalValueV1::Text(text_value) => text(match text_value.as_str() { + "continuum.profile.create/v1" => "continuum.profile.write/v1", + "echo.dpo@1.anchored-node-attachment-create-if-absent" => { + "echo.dpo@1.anchored-node-attachment-compare-and-set" + } + "create" => "replace", + _ => return CanonicalValueV1::Text(text_value), + }), + CanonicalValueV1::Map(entries) => CanonicalValueV1::Map( + entries + .into_iter() + .map(|(key, value)| (key, cas_profile_value(value))) + .collect(), + ), + CanonicalValueV1::Array(values) => { + CanonicalValueV1::Array(values.into_iter().map(cas_profile_value).collect()) + } + other => other, + } +} + #[test] fn verifier_accepts_generic_lowerer_output_for_two_application_vocabularies() { for names in FIXTURES { @@ -750,6 +853,15 @@ fn raw_fixture_with_values( configuration_value: CanonicalValueV1, result_projection_value: CanonicalValueV1, ) -> RawFixture { + let is_cas = text_field(&configuration_value, "programKind") + == Some("anchored-node-attachment-compare-and-set/v1"); + let select_profile = |value| { + if is_cas { + cas_profile_value(value) + } else { + value + } + }; let target_profile = TARGET_PROFILE.to_vec(); let target_profile_ref = raw_ref("echo.dpo@1", "edict.target-profile/v1", &target_profile); let exports = canonical_bytes(&exports(names)); @@ -760,7 +872,7 @@ fn raw_fixture_with_values( "echo.operation-lowering-configuration/v1", &configuration, ); - let adapter = canonical_bytes(&adapter(names, &configuration_ref)); + let adapter = canonical_bytes(&select_profile(adapter(names, &configuration_ref))); let adapter_ref = raw_ref(names.adapter, "edict.lawpack-adapter/v1", &adapter); let lawpack = canonical_bytes(&lawpack( names, @@ -771,7 +883,7 @@ fn raw_fixture_with_values( &target_profile_ref, )); let lawpack_ref = raw_ref(names.lawpack, "edict.lawpack/v1", &lawpack); - let core = canonical_bytes(&core(names)); + let core = canonical_bytes(&select_profile(core(names))); let core_ref = raw_ref(names.application, "edict.core.module/v1", &core); let source = canonical_bytes(&CanonicalValueV1::Bytes( format!( @@ -784,12 +896,12 @@ fn raw_fixture_with_values( ) .into_bytes(), )); - let target_ir = canonical_bytes(&target_ir( + let target_ir = canonical_bytes(&select_profile(target_ir( names, &core_ref, &lawpack_ref, &target_profile_ref, - )); + ))); let result_projection = canonical_bytes(&result_projection_value); RawFixture { core, diff --git a/docs/architecture/application-contract-hosting.md b/docs/architecture/application-contract-hosting.md index f87473024..8449bdb6c 100644 --- a/docs/architecture/application-contract-hosting.md +++ b/docs/architecture/application-contract-hosting.md @@ -171,9 +171,15 @@ requires an `application_input_expected_value_digest_path` in the installed projection and exact equality between its 32-byte input value and the invocation precondition. Create projections omit this path. Missing or substituted bindings return `ApplicationInputMismatch`; legacy invocation encodings remain unchanged. -This native boundary does not establish compiler/provider production of projected -compare-and-set packages: that integration and its scheduler/recovery witnesses -remain unimplemented. +The native lowerer and independent verifier select the CAS program from an exact +`continuum.profile.write/v1` effect with the CAS target intrinsic and `replace` +write class. Its configuration requires a distinct `expectedValueDigestField` +and at least four steps; the package binds the corresponding input path and +CAS-specific profile identities. The verifier reconstructs these bytes and +rejects a substituted digest path. These native witnesses use synthetic semantic +closures. Checked component/schema production, a real compiler build, and CAS +scheduler/recovery witnesses remain unimplemented; this is not yet a complete +application-build capability. The generic operation runner distinguishes missing Action outcomes, typed obstructions, and footprint conflicts in its error messages. Both the first Action and unexpected duplicate outcomes use bounded summaries and omit invocation data. Opted-in Rust backtraces remain separate diagnostic output. This diagnostic boundary does not change retained obstruction encoding. From 8a09a4ab050e24ae4b867e6b732ddf72c2061f80 Mon Sep 17 00:00:00 2001 From: James Ross Date: Thu, 8 Oct 2026 00:16:16 -0700 Subject: [PATCH 03/13] Produce reproducible CAS components and a public compiler witness --- CHANGELOG.md | 2 +- crates/echo-edict-provider-lowerer/src/lib.rs | 4 +- .../tests/fixtures/generated_echo_dpo.rs | 4 +- .../tests/lowerer_contract.rs | 2 +- .../fixtures/compiler-produced-cas/README.md | 21 +++ .../fixtures/compiler-produced-cas/build.py | 96 ++++++++++++ .../built/compiler.stdout.jsonl | 1 + .../executable-operation-package.cbor.hex | 1 + .../built/update-cell.edict | 18 +++ .../built/verification-report.cbor.hex | 1 + .../compiler-produced-cas/seed/adapter.cbor | Bin 0 -> 719 bytes .../seed/echo-operation-configuration.cbor | Bin 0 -> 484 bytes .../compiler-produced-cas/seed/exports.cbor | 1 + .../compiler-produced-cas/seed/manifest.cbor | Bin 0 -> 780 bytes .../update-cell.edict.in | 18 +++ .../lowerer.echo-dpo.component.wasm | Bin 381459 -> 383720 bytes .../verifier.echo-dpo.component.wasm | Bin 389503 -> 391724 bytes .../provenance.provider-generation.json | 2 +- .../evidence/review.provider-generation.json | 2 +- .../schema.echo-provider-artifacts.cddl | 23 +++ .../package/v1/provider-manifest.echo.json | 32 ++-- .../echo-wesley-gen/src/provider_artifacts.rs | 23 +++ .../tests/provider_cas_schema.rs | 148 ++++++++++++++++++ .../echo-wesley-gen/tests/provider_package.rs | 2 +- .../tests/provider_package_corpus.rs | 4 +- .../application-contract-hosting.md | 10 +- .../v1/lowerer.echo-dpo.component.wasm | Bin 381459 -> 383720 bytes .../v1/verifier.echo-dpo.component.wasm | Bin 389503 -> 391724 bytes .../provenance.provider-generation.json | 2 +- .../evidence/review.provider-generation.json | 2 +- .../schema.echo-provider-artifacts.cddl | 23 +++ .../lowerer.echo-dpo.component.wasm | Bin 381459 -> 383720 bytes .../verifier.echo-dpo.component.wasm | Bin 389503 -> 391724 bytes .../provenance.provider-generation.json | 2 +- .../evidence/review.provider-generation.json | 2 +- .../schema.echo-provider-artifacts.cddl | 23 +++ .../package/v1/provider-manifest.echo.json | 32 ++-- xtask/src/provider_lowerer_component.rs | 4 +- 38 files changed, 452 insertions(+), 53 deletions(-) create mode 100644 crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/README.md create mode 100644 crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/build.py create mode 100644 crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/built/compiler.stdout.jsonl create mode 100644 crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/built/executable-operation-package.cbor.hex create mode 100644 crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/built/update-cell.edict create mode 100644 crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/built/verification-report.cbor.hex create mode 100644 crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/seed/adapter.cbor create mode 100644 crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/seed/echo-operation-configuration.cbor create mode 100644 crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/seed/exports.cbor create mode 100644 crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/seed/manifest.cbor create mode 100644 crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/update-cell.edict.in create mode 100644 crates/echo-wesley-gen/tests/provider_cas_schema.rs diff --git a/CHANGELOG.md b/CHANGELOG.md index e5d3751f7..4316e4fa3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,7 @@ ### Added -- Native projected compare-and-set invocation encoding retains canonical application input and statically binds the expected attachment-value digest. The native lowerer and independent verifier reconstruct CAS-specific profiles and reject rebound digest paths or under-budget configurations. Checked component/schema production and end-to-end execution/recovery integration remain pending. +- Native projected compare-and-set invocation encoding retains canonical application input and statically binds the expected attachment-value digest. The native lowerer and independent verifier reconstruct CAS-specific profiles and reject rebound digest paths or under-budget configurations. Generated schema, reproducible components and a retained public Edict compiler build establish package production. End-to-end execution/recovery integration remains pending. - A disabled-by-default experimental Keep ReferenceStore adapter implements the complete-object CAS port with explicit limits, private bindings, sanitized backend errors and atomic output promotion. It preserves existing CAS defaults and claims no restart durability. diff --git a/crates/echo-edict-provider-lowerer/src/lib.rs b/crates/echo-edict-provider-lowerer/src/lib.rs index 2ff27be66..8cee0b892 100644 --- a/crates/echo-edict-provider-lowerer/src/lib.rs +++ b/crates/echo-edict-provider-lowerer/src/lib.rs @@ -809,7 +809,7 @@ pub mod echo_dpo { pub const PROVIDER_SCHEMA_COORDINATE: &str = "echo.provider-artifacts.cddl@1"; /// Raw SHA-256 of the exact self-contained provider CDDL bytes. pub const PROVIDER_SCHEMA_SHA256_HEX: &str = - "9078b84c47f2e5b722f8fea56cd0bca585cfd150c8114c22994b67cf19f6d9ab"; + "16e8b1aa45f77bf2f69f538e7120cfb398d85525fdc6947a8cdd86d7b317ea2e"; /// Exact generated-artifact profile coordinate owning operation schemas. pub const GENERATED_ARTIFACT_PROFILE: &str = "echo.dpo.registration/v1"; /// Digest-framing domain for the generated-artifact profile. @@ -846,7 +846,7 @@ pub mod echo_dpo { const MUTATION_RULE_NAME: &str = concat!( "cmd/contract/", - "9078b84c47f2e5b722f8fea56cd0bca585cfd150c8114c22994b67cf19f6d9ab", + "16e8b1aa45f77bf2f69f538e7120cfb398d85525fdc6947a8cdd86d7b317ea2e", "/3389142194/a.b@1.t" ); const PROVIDER_OPERATIONS: [ProviderOperationV1<'static>; 1] = [ProviderOperationV1 { diff --git a/crates/echo-edict-provider-lowerer/tests/fixtures/generated_echo_dpo.rs b/crates/echo-edict-provider-lowerer/tests/fixtures/generated_echo_dpo.rs index 2735603e1..fd743b8bd 100644 --- a/crates/echo-edict-provider-lowerer/tests/fixtures/generated_echo_dpo.rs +++ b/crates/echo-edict-provider-lowerer/tests/fixtures/generated_echo_dpo.rs @@ -71,7 +71,7 @@ pub mod echo_dpo { pub const PROVIDER_SCHEMA_COORDINATE: &str = "echo.provider-artifacts.cddl@1"; /// Raw SHA-256 of the exact self-contained provider CDDL bytes. pub const PROVIDER_SCHEMA_SHA256_HEX: &str = - "9078b84c47f2e5b722f8fea56cd0bca585cfd150c8114c22994b67cf19f6d9ab"; + "16e8b1aa45f77bf2f69f538e7120cfb398d85525fdc6947a8cdd86d7b317ea2e"; /// Exact generated-artifact profile coordinate owning operation schemas. pub const GENERATED_ARTIFACT_PROFILE: &str = "echo.dpo.registration/v1"; /// Digest-framing domain for the generated-artifact profile. @@ -108,7 +108,7 @@ pub mod echo_dpo { const MUTATION_RULE_NAME: &str = concat!( "cmd/contract/", - "9078b84c47f2e5b722f8fea56cd0bca585cfd150c8114c22994b67cf19f6d9ab", + "16e8b1aa45f77bf2f69f538e7120cfb398d85525fdc6947a8cdd86d7b317ea2e", "/3389142194/a.b@1.t" ); const PROVIDER_OPERATIONS: [ProviderOperationV1<'static>; 1] = [ProviderOperationV1 { diff --git a/crates/echo-edict-provider-lowerer/tests/lowerer_contract.rs b/crates/echo-edict-provider-lowerer/tests/lowerer_contract.rs index 1920257a2..6d9443c5a 100644 --- a/crates/echo-edict-provider-lowerer/tests/lowerer_contract.rs +++ b/crates/echo-edict-provider-lowerer/tests/lowerer_contract.rs @@ -45,7 +45,7 @@ const REVIEW_MEDIA_TYPE: &str = "application/json"; const GENERATED_SOURCE_PATH: &str = "generated/echo_dpo.rs"; const REVIEW_PATH: &str = "review/echo_dpo.json"; const EXPECTED_PROVIDER_SCHEMA_SHA256_HEX: &str = - "9078b84c47f2e5b722f8fea56cd0bca585cfd150c8114c22994b67cf19f6d9ab"; + "16e8b1aa45f77bf2f69f538e7120cfb398d85525fdc6947a8cdd86d7b317ea2e"; const EXPECTED_OPERATION_ID_LAW: &str = "echo.semantic-operation-id.fnv1-32/v1"; const EXPECTED_OPERATION_ID: u32 = 3_389_142_194; diff --git a/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/README.md b/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/README.md new file mode 100644 index 000000000..09f2964ef --- /dev/null +++ b/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/README.md @@ -0,0 +1,21 @@ +# Reproduce the projected CAS compiler witness + +Run `build.py` inside the guarded Echo worker with a pinned Edict compiler binary, +its SHA-256, the candidate provider package and a fresh output directory. The +recipe invokes the public JSONL application-build command; it does not synthesize +Core, Target IR, a package or a verifier report. + +`seed/` preserves the canonical hello-echo lawpack inputs from Edict commit +`3f81f759e921a69b04fe8cf8e62e62f8f3dc7b7e`. The recipe deterministically derives a +CAS lawpack with an explicit `Bytes` expected digest, replace write class, +CAS intrinsic and input binding. It recomputes the affected export, adapter and +manifest references, then fills the authored source template's lawpack digest. +Keep BlobIds are not used as attachment-value digests. + +The retained build used the pinned Edict compiler from source commit +`2405a550e93e1e97fff640caa44bbd0f65ffff3c` and executable SHA-256 +`3b082d61c8cd23b0f917efb55c4eebd54e75c0df5d31c72f90ad856853678bf5`. +`built/` preserves the authored source with its exact digest, the public compiler's +successful status, and exact package/report bytes as lowercase hex. The report +accepts this package. This proves compiler/provider production, not runtime +execution or WAL recovery; those witnesses remain pending. diff --git a/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/build.py b/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/build.py new file mode 100644 index 000000000..d6c69cc33 --- /dev/null +++ b/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/build.py @@ -0,0 +1,96 @@ +# SPDX-License-Identifier: Apache-2.0 +# © James Ross Ω FLYING•ROBOTS + +# Reproduce the projected CAS application build inside the guarded worker. +import hashlib,json,shutil,subprocess +from pathlib import Path + +def enc(v): + def head(m,n): + if n<24:return bytes([m*32+n]) + for a,k in [(24,1),(25,2),(26,4),(27,8)]: + if n<1<<(8*k):return bytes([m*32+a])+n.to_bytes(k,'big') + raise ValueError('large integer') + if v is None:return b'\xf6' + if isinstance(v,bool):return b'\xf5' if v else b'\xf4' + if isinstance(v,int):return head(0,v) if v>=0 else head(1,-1-v) + if isinstance(v,str): + b=v.encode();return head(3,len(b))+b + if isinstance(v,bytes):return head(2,len(v))+v + if isinstance(v,list):return head(4,len(v))+b''.join(map(enc,v)) + if isinstance(v,dict): + items=sorted([(enc(k),enc(x)) for k,x in v.items()],key=lambda p:(len(p[0]),p[0])) + return head(5,len(items))+b''.join(k+x for k,x in items) + raise ValueError(type(v)) +def dec(b): + i=0 + def item(): + nonlocal i + h=b[i];i+=1;m=h>>5;a=h&31 + if a>=24: + assert a<=27 + n=1<<(a-24);a=int.from_bytes(b[i:i+n],'big');i+=n + if m==0:return a + if m==1:return -1-a + if m in (2,3): + v=b[i:i+a];i+=a;return v if m==2 else v.decode() + if m==4:return [item() for _ in range(a)] + if m==5:return {item():item() for _ in range(a)} + if m==7:return {20:False,21:True,22:None}[a] + raise ValueError(m) + v=item();assert i==len(b) and enc(v)==b;return v + +def digest(domain,value):return hashlib.sha256(enc(['edict.digest/v1',domain,value])).digest() +import argparse +parser=argparse.ArgumentParser() +parser.add_argument('--compiler',type=Path,required=True) +parser.add_argument('--compiler-sha256',required=True) +parser.add_argument('--provider-package',type=Path,required=True) +parser.add_argument('--output-directory',type=Path,required=True) +args=parser.parse_args() +root=args.output_directory.resolve();root.mkdir(exist_ok=False) +fixture=Path(__file__).resolve().parent +compiler=args.compiler.resolve() +assert hashlib.sha256(compiler.read_bytes()).hexdigest()==args.compiler_sha256 +print('COMPILER_BINARY_SHA256',args.compiler_sha256,flush=True) +replacements=[('hello.echo','cas.echo'),('CreateGreetingInput','CompareAndSetInput'),('GreetingReceipt','UpdateReceipt'),('ExistingGreeting','ExistingValue'),('createGreeting','compareAndSet'),('smallCreateBudget','smallUpdateBudget'),('greetingKeyFootprint','cellKeyFootprint'),('alreadyExists','staleExpected'),('AlreadyExists','StaleExpected')] +def rewrite(value): + if isinstance(value,str): + for old,new in replacements:value=value.replace(old,new) + return value + if isinstance(value,list):return [rewrite(x) for x in value] + if isinstance(value,dict):return {rewrite(k):rewrite(v) for k,v in value.items()} + return value +config=rewrite(dec((fixture/'seed/echo-operation-configuration.cbor').read_bytes())) +config['programKind']='anchored-node-attachment-compare-and-set/v1' +config['invocationBinding']['expectedValueDigestField']='expected' +config['budgetCeiling']['readBytes']=1024 +exports=rewrite(dec((fixture/'seed/exports.cbor').read_bytes())) +for entry in exports['types']: + if entry['coordinate']=='cas.echo@1.CompareAndSetInput': + entry['definition']=entry['definition'].replace('>,key:', '>,expected:Bytes,key:') +for effect in exports['effects']:effect['effectKindHint']='replace' +adapter=rewrite(dec((fixture/'seed/adapter.cbor').read_bytes())) +for profile in adapter['operationProfiles'].values():profile['core']='continuum.profile.write/v1' +for impl in adapter['effectImplementations'].values(): + impl['writeClass']='replace' + impl['targetIntrinsic']='echo.dpo@1.anchored-node-attachment-compare-and-set' + impl['targetConfiguration']={'id':'echo.operation-lowering-configuration/v1','digest':['sha256',digest('echo.operation-lowering-configuration/v1',config)]} +manifest=rewrite(dec((fixture/'seed/manifest.cbor').read_bytes())) +manifest['exports']['digest']=['sha256',digest(manifest['exports']['id'],exports)] +for selection in manifest['targetAdapters']: + ref=selection['adapter'];ref['digest']=['sha256',digest(ref['id'],adapter)] +for name,value in [('echo-operation-configuration.cbor',config),('exports.cbor',exports),('adapter.cbor',adapter),('manifest.cbor',manifest)]: (root/name).write_bytes(enc(value)) +source=(fixture/'update-cell.edict.in').read_text().replace('LAWPACK_DIGEST',digest('edict.lawpack/v1',manifest).hex()) +assert 'LAWPACK_DIGEST' not in source +(root/'update-cell.edict').write_text(source) +shutil.copytree(args.provider_package.resolve(),root/'provider') +app={'schema':'edict.application/v1','coordinate':'examples.cas_echo@1','sources':['update-cell.edict'],'lawpacks':[{'manifest':'manifest.cbor','exports':'exports.cbor','adapter':'adapter.cbor','targetConfiguration':'echo-operation-configuration.cbor'}],'target':{'profile':'echo.dpo@1','providerPackage':'provider'},'outputDirectory':'build'} +(root/'edict.application.json').write_text(json.dumps(app)) +request={'schema':'edict.compiler.settings/v1','type':'compilerSettings','operation':'build','application':str(root/'edict.application.json')} +result=subprocess.run([str(compiler)],input=json.dumps(request)+'\n',text=True,capture_output=True,timeout=90) +assert len(result.stdout)+len(result.stderr)<128*1024 +(root/'compiler.stdout.jsonl').write_text(result.stdout);(root/'compiler.stderr.txt').write_text(result.stderr) +print(result.stdout,result.stderr,flush=True) +assert result.returncode==0,result.returncode +print('OUTPUT_FILES',sorted(str(p.relative_to(root)) for p in (root/'build').rglob('*') if p.is_file()),flush=True) diff --git a/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/built/compiler.stdout.jsonl b/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/built/compiler.stdout.jsonl new file mode 100644 index 000000000..a668538ec --- /dev/null +++ b/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/built/compiler.stdout.jsonl @@ -0,0 +1 @@ +{"checked":1,"command":"build","errors":0,"exitCode":0,"schema":"edict.cli.event/v1","status":"ok","type":"status"} diff --git a/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/built/executable-operation-package.cbor.hex b/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/built/executable-operation-package.cbor.hex new file mode 100644 index 000000000..042594180 --- /dev/null +++ b/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/built/executable-operation-package.cbor.hex @@ -0,0 +1 @@ +b366736368656d6178196563686f2e6f7065726174696f6e2d7061636b6167652f76316770726f6772616d59015da7646b696e64782b616e63686f7265642d6e6f64652d6174746163686d656e742d636f6d706172652d616e642d7365742f763166736368656d6178196563686f2e6f7065726174696f6e2d70726f6772616d2f76317272657175697265645f6e6f64655f747970655820f2f3958c741aaab3ed53fad32957d312f08e456139e9d1b2517b9859af0e7dea756d61785f7265706c6163656d656e745f6279746573190100781872657175697265645f6174746163686d656e745f7479706558203e0816f30d503b656d0550364a893a2ee7128287dcd6bdffd49c96149cd8fc6e781a696e7472696e7369635f70726f66696c655f6964656e746974795820dcc797883efcfd39231a4cee8b2574f5dee46a72be884e5a006f5cddfbfa4c1b781c696e7465727072657465725f70726f66696c655f6964656e746974795820415105a805a80d5e1de76c6eee9b3a9a9a17fec80f7f8f7ab6ef2026c0dd0dec6e6275646765745f6365696c696e67a3657374657073106a726561645f62797465731904006b77726974655f62797465731901407073656d616e7469635f636c6f73757265a86d636f72655f6964656e746974795820d0b3ab6db58d94ddf46d2e6e0600416e94e4a06818e596d565db61cac5195205706c61777061636b5f6964656e746974795820c5e61ed6aae005531a642287d00ed8bff56754ffec50fe0a2a419f9bc0cb28f9726c61777061636b5f636f6f7264696e6174656a6361732e6563686f4031727461726765745f69725f6964656e7469747958206d8035d56340e3ea220923c941d49c630898cdcc54c507a2725ebfbc90b7c5ea7565646963745f736f757263655f6964656e746974795820425772ad12c762527b1e85dec6b0cfe586cfdc3eb9ce3fa5af8f972dd840053e781a63616e6f6e6963616c5f6d65616e696e675f6964656e746974795820d0b3ab6db58d94ddf46d2e6e0600416e94e4a06818e596d565db61cac5195205781b6170706c69636174696f6e5f736368656d615f6964656e7469747958204fb7a2e90eaa9631a196329f37aded975b0ff5a8d4b67bb663cc2ce05808a017781d6170706c69636174696f6e5f736368656d615f636f6f7264696e617465736361732e6563686f2e6578706f7274732f7631746f7065726174696f6e5f636f6f7264696e617465781e6578616d706c65732e6361735f6563686f40312e75706461746543656c6c75696e7075745f736368656d615f6964656e7469747958202bc24c4c2899025a8f546ebcc5e9d92021a663d99ae5627137b7ad670936f966766f62737472756374696f6e5f636f6f7264696e61746578186361732e6563686f40312e5374616c65457870656374656476726573756c745f736368656d615f6964656e746974795820bd5045b1b0a667a9504aaedf73ff4857c96f4c85cadc611e0183a70ef3a06100777461726765745f70726f66696c655f6964656e7469747958203539cc6cf3b869e324d67b6ed688ea418f5518d34ef4c8d5b55e44981b8cec5c781a617574686f726974795f70726f66696c655f6964656e746974795820cf680697b82373550f58688a4eaaf3f63b268c8d616fd52f35dc76aeafba74ba781a696e7472696e7369635f70726f66696c655f6964656e746974795820dcc797883efcfd39231a4cee8b2574f5dee46a72be884e5a006f5cddfbfa4c1b781b666f6f747072696e745f636f6e74726163745f6964656e7469747958204841286db863695ecda9bebaa6d613b408d2201aee6d7e0feb8f5a1ce7b94b86781b6f62737472756374696f6e5f736368656d615f6964656e746974795820479fa916a43aefaa2b21a3411cfa0da3683c4e6edba43ed40b1f701be2564f49781c696e7465727072657465725f70726f66696c655f6964656e746974795820415105a805a80d5e1de76c6eee9b3a9a9a17fec80f7f8f7ab6ef2026c0dd0dec781d6170706c69636174696f6e5f726573756c745f70726f6a656374696f6ea66e61727469666163745f6279746573590149a566736368656d61781a65646963742e726573756c742d70726f6a656374696f6e2f76316a65787072657373696f6ea2646b696e64667265636f7264666669656c6473a2636b6579a3646b696e6466736f75726365647061746881636b657966736f75726365a2646b696e64706361706162696c697479526573756c74667374657049647175706461746543656c6c2e737465702e30676d657373616765a3646b696e6466736f75726365647061746881676d65737361676566736f75726365a1646b696e64706170706c69636174696f6e496e7075746a6f757470757454797065781f6578616d706c65732e6361735f6563686f40312e5570646174656443656c6c6e6d61784f75747075744279746573190200736f7065726174696f6e436f6f7264696e617465781e6578616d706c65732e6361735f6563686f40312e75706461746543656c6c7161727469666163745f6964656e746974795820f18f9a3d65491af531a6b8c4b84fd945daa5bcacb5df854874eec06fc606de7e7272756e74696d655f65787072657373696f6ea2646b696e64667265636f7264666669656c6473a2636b6579a3646b696e6466736f75726365647061746881636b657966736f75726365a1646b696e64706170706c69636174696f6e496e707574676d657373616765a3646b696e6466736f75726365647061746881676d65737361676566736f75726365a1646b696e64706170706c69636174696f6e496e707574781f6170706c69636174696f6e5f696e7075745f6e6f64655f6b65795f7061746881636b657978226170706c69636174696f6e5f696e7075745f7265706c6163656d656e745f7061746881676d657373616765782c6170706c69636174696f6e5f696e7075745f65787065637465645f76616c75655f6469676573745f7061746881686578706563746564781e726573756c745f696e746572707265746174696f6e5f6964656e74697479582063cb5cd4efb6bb4056de3736bc79a2f5acca11f5c4b068c147f88fa55ccb6b5278206576616c756174696f6e5f62617369735f736368656d615f6964656e74697479582020b6239db569aa86ae1c27596b374df90caa5ea41e8e005fd4fe00bfe5c3b38178216170706c69636174696f6e5f62617369735f736368656d615f6964656e746974795820464e830e037906c22daff080e9a478ad058f7c80150cfee3dad91ae4f8ca479f78236f62737472756374696f6e5f696e746572707265746174696f6e5f6964656e7469747958206c5158111419d8368d00b47264dda2bc8ec22f34b8b67f56c7dd5680ed3de6d7 diff --git a/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/built/update-cell.edict b/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/built/update-cell.edict new file mode 100644 index 000000000..9f57d578f --- /dev/null +++ b/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/built/update-cell.edict @@ -0,0 +1,18 @@ +package examples.cas_echo@1; + +use lawpack cas.echo@1 digest "sha256:c5e61ed6aae005531a642287d00ed8bff56754ffec50fe0a2a419f9bc0cb28f9" as cell; + +type UpdatedCell = { + key: String, + message: String, +}; + +intent updateCell(input: cell.CompareAndSetInput) returns UpdatedCell + profile cell.compareAndSet + basis input.basis + budget <= cell.smallUpdateBudget +{ + let receipt: cell.UpdateReceipt = cell.compareAndSet(input) + else { staleExpected(existing) => cell.StaleExpected }; + return { key: receipt.key, message: input.message }; +} diff --git a/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/built/verification-report.cbor.hex b/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/built/verification-report.cbor.hex new file mode 100644 index 000000000..ff3ba8303 --- /dev/null +++ b/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/built/verification-report.cbor.hex @@ -0,0 +1 @@ +a8676f7574636f6d65686163636570746564677061636b616765a2626964782165786563757461626c652d6f7065726174696f6e2d7061636b6167652e6563686f66646967657374826673686132353658205cfe5f533a8cff7d02934c142508eab90f88e093a7b752d4b35e771e08d75e64687461726765744972a26269646f6563686f2e7370616e2d69722f763166646967657374826673686132353658206d8035d56340e3ea220923c941d49c630898cdcc54c507a2725ebfbc90b7c5ea6a61706956657273696f6e78296563686f2e6f7065726174696f6e2d7061636b6167652d76657269666965722d7265706f72742f76316d646961676e6f73746963416269a26269647465646963742e646961676e6f73746963732f7631666469676573748266736861323536582028fd72a98223153982ca084c29dbb1b2d430623967ab3b6db9d7fee668e614b96f646961676e6f737469634279746573407165786563757461626c655375626a656374a2656279746573590148a4677061636b616765a2626964782165786563757461626c652d6f7065726174696f6e2d7061636b6167652e6563686f66646967657374826673686132353658205cfe5f533a8cff7d02934c142508eab90f88e093a7b752d4b35e771e08d75e64687461726765744972a26269646f6563686f2e7370616e2d69722f763166646967657374826673686132353658206d8035d56340e3ea220923c941d49c630898cdcc54c507a2725ebfbc90b7c5ea6a61706956657273696f6e781a6563686f2e65786563757461626c652d7375626a6563742f7631781b6170706c69636174696f6e526573756c7450726f6a656374696f6ea2626964781e6578616d706c65732e6361735f6563686f40312e75706461746543656c6c6664696765737482667368613235365820f18f9a3d65491af531a6b8c4b84fd945daa5bcacb5df854874eec06fc606de7e697265666572656e6365a2626964781a6563686f2e65786563757461626c652d7375626a6563742f76316664696765737482667368613235365820d3c1d3d91802dfdc91429dd5968b210b2cb51ed688e43d2d11b29924cb895c4b781b6170706c69636174696f6e526573756c7450726f6a656374696f6ea2626964781e6578616d706c65732e6361735f6563686f40312e75706461746543656c6c6664696765737482667368613235365820f18f9a3d65491af531a6b8c4b84fd945daa5bcacb5df854874eec06fc606de7e diff --git a/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/seed/adapter.cbor b/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/seed/adapter.cbor new file mode 100644 index 0000000000000000000000000000000000000000..24e2f546e2b97747b53462a72faaa1d5d85d62f1 GIT binary patch literal 719 zcmah{y=oOf6ut<8SXn9o(N^5OBqWxixkL#;5)dWr*_kuDlg!Rc=A23PHjxMxHa>t| zBKiovh7S<1uEyqJ83)v68y&XjdC+o+h);V*$uiFRFwJp23q7l>?(QvChhJ-9q!1Siuoy7f)=2!?Py;J#4|eZV@6Ug{d-45^ c-@z{rPbTMIzpd`V+gI0*kEcJc-e3Ft3w`_>j{pDw literal 0 HcmV?d00001 diff --git a/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/seed/echo-operation-configuration.cbor b/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/seed/echo-operation-configuration.cbor new file mode 100644 index 0000000000000000000000000000000000000000..84838ab0d8627237232fa5a9b9fa39087bcc5f8a GIT binary patch literal 484 zcmYk2%}&EG5QO0kID!xtP9WhRkU$(uK}c04gaC2h+LOesW4pG~B+ml}9+OSz-*JCt zcE0_clhmb&V*y#_1J-cfF literal 0 HcmV?d00001 diff --git a/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/seed/exports.cbor b/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/seed/exports.cbor new file mode 100644 index 000000000..0e1220cee --- /dev/null +++ b/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/seed/exports.cbor @@ -0,0 +1 @@ +¦etypesƒ¢jcoordinatex hello.echo@1.CreateGreetingInputjdefinitionx�Record,key:String,message:String>¢jcoordinatexhello.echo@1.GreetingReceiptjdefinitionx-Record>¢jcoordinatexhello.echo@1.ExistingGreetingjdefinitionxXRecord,message:String>geffects�ªiinputTypex hello.echo@1.CreateGreetingInputjcoordinatexhello.echo@1.createGreetingjoutputTypexhello.echo@1.GreetingReceiptlguardSupportõncostObligationxhello.echo@1.smallCreateBudgetneffectFailures¡malreadyExists¢kpayloadTypexhello.echo@1.ExistingGreetingnauthorityClassndomainMappableneffectKindHintfcreatenexecutionClassgruntimentypeParameters€sfootprintObligationx!hello.echo@1.greetingKeyFootprinticonstants€lobstructions�£jcoordinatexhello.echo@1.AlreadyExistsmpayloadSchemaxhello.echo@1.ExistingGreetingnauthorityClassndomainMappablempureFunctions€qoperationProfiles¡xhello.echo@1.createGreeting¢mopticTemplate¥iopticKindsaffectReintegrationlboundaryKindfaffectmsupportPolicyxhello.echo@1.directSupportolossDispositionuhello.echo@1.losslesssapertureRequirement¢crefx!hello.echo@1.greetingKeyFootprintdkindxabstractFootprintObligationoeffectPredicatex!hello.echo@1.createGreetingEffect \ No newline at end of file diff --git a/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/seed/manifest.cbor b/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/seed/manifest.cbor new file mode 100644 index 0000000000000000000000000000000000000000..d715900f03ec454a0ad96e6710f52a46120d0b9d GIT binary patch literal 780 zcmZ3Ll$ny1k(!f}ua}yfk)NJgQIKC$QoIN#T#69Zg9_`H8K$LVrl%H{G^G`1BpR8T zMJPN}-73sbbI85^z|n`Kd;OYPT#dd&|GrkAA_6=&w>B^qV`S(#~> zsYQ!YlXDV_i?dTebWvhSW?5=_QE5(UacT+3;tClgn_+r%!3wZBz=Z(FN-W3>gSep} zH6=5-L@y_?ydW_-8)#TgN@_uBUP@|Sa%O6ALvC_@ZUN9aNtrpBC6!>ONFzA~MHZV& zLJ5GplEk9))Dp*(#DWr_gBlm7CqkHDtK^WZ0>y=HN, + message: String, +}; + +intent updateCell(input: cell.CompareAndSetInput) returns UpdatedCell + profile cell.compareAndSet + basis input.basis + budget <= cell.smallUpdateBudget +{ + let receipt: cell.UpdateReceipt = cell.compareAndSet(input) + else { staleExpected(existing) => cell.StaleExpected }; + return { key: receipt.key, message: input.message }; +} diff --git a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/components/lowerer.echo-dpo.component.wasm b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/components/lowerer.echo-dpo.component.wasm index 903933cd7c4047821af6c731496b9097d5421458..17040f3c4185569cc8f61de5b3254caa118ebe1e 100644 GIT binary patch delta 34311 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 delta 30803 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 diff --git a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/evidence/provenance.provider-generation.json b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/evidence/provenance.provider-generation.json index 83cdbd543..966238203 100644 --- a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/evidence/provenance.provider-generation.json +++ b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/evidence/provenance.provider-generation.json @@ -1 +1 @@ -{"apiVersion":"wesley.generation-provenance-manifest/v1","contractVersions":{"generatorAbi":"wesley.extension-generator/v1","inputSchema":"wesley.extension-generation-input/v1","provenanceSchema":"wesley.generation-provenance-manifest/v1"},"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:9078b84c47f2e5b722f8fea56cd0bca585cfd150c8114c22994b67cf19f6d9ab"}],"generationInputDigest":"sha256:0c07274803d465ec212c313f74dd46396851f43019fa0f97da9571a167c84587","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:dd2532814deb3022e05d020706bfc2ab9a56167cccc89ea2545b1cce78e69547","version":"0.1.0"},"settingsDigest":"sha256:0f708e76898de6fdb8186352e81d0f5c445adf94bb6c7de9204952d9fe913d4a","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:8d77c84ecbd7d7e38496479b2f8346c15504a56f076170d79c0eca2a57fdb3a5"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:bc222c4a669b888a60df6f398412bae232967c11841b9a27c7ba6c18eb41e362"}]} \ No newline at end of file +{"apiVersion":"wesley.generation-provenance-manifest/v1","contractVersions":{"generatorAbi":"wesley.extension-generator/v1","inputSchema":"wesley.extension-generation-input/v1","provenanceSchema":"wesley.generation-provenance-manifest/v1"},"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:16e8b1aa45f77bf2f69f538e7120cfb398d85525fdc6947a8cdd86d7b317ea2e"}],"generationInputDigest":"sha256:0c07274803d465ec212c313f74dd46396851f43019fa0f97da9571a167c84587","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:a6ed7c23750266dc4d152ac95e16623882d80f2919df9fabcc9bb29ca3f32384","version":"0.1.0"},"settingsDigest":"sha256:0f708e76898de6fdb8186352e81d0f5c445adf94bb6c7de9204952d9fe913d4a","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:8d77c84ecbd7d7e38496479b2f8346c15504a56f076170d79c0eca2a57fdb3a5"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:bc222c4a669b888a60df6f398412bae232967c11841b9a27c7ba6c18eb41e362"}]} \ No newline at end of file diff --git a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/evidence/review.provider-generation.json b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/evidence/review.provider-generation.json index 95605ec67..27b206a38 100644 --- a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/evidence/review.provider-generation.json +++ b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/evidence/review.provider-generation.json @@ -1 +1 @@ -{"apiVersion":"wesley.generation-review/v1","authoritative":false,"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:9078b84c47f2e5b722f8fea56cd0bca585cfd150c8114c22994b67cf19f6d9ab"}],"generationInputDigest":"sha256:0c07274803d465ec212c313f74dd46396851f43019fa0f97da9571a167c84587","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:dd2532814deb3022e05d020706bfc2ab9a56167cccc89ea2545b1cce78e69547","version":"0.1.0"},"projectionRoles":["authority-facts.echo-dpo","authority-facts.echo-lawpack","generated-artifact-profile.echo-dpo-registration","lawpack.echo-dpo","schema.echo-provider-artifacts","target-profile.echo-dpo"],"provenanceManifestDigest":"sha256:cbaf79293ebb33cd8825847b4ba848c20c2dab9b4e6cf26931c3e830bf9e7ca1","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:8d77c84ecbd7d7e38496479b2f8346c15504a56f076170d79c0eca2a57fdb3a5"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:bc222c4a669b888a60df6f398412bae232967c11841b9a27c7ba6c18eb41e362"}]} \ No newline at end of file +{"apiVersion":"wesley.generation-review/v1","authoritative":false,"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:16e8b1aa45f77bf2f69f538e7120cfb398d85525fdc6947a8cdd86d7b317ea2e"}],"generationInputDigest":"sha256:0c07274803d465ec212c313f74dd46396851f43019fa0f97da9571a167c84587","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:a6ed7c23750266dc4d152ac95e16623882d80f2919df9fabcc9bb29ca3f32384","version":"0.1.0"},"projectionRoles":["authority-facts.echo-dpo","authority-facts.echo-lawpack","generated-artifact-profile.echo-dpo-registration","lawpack.echo-dpo","schema.echo-provider-artifacts","target-profile.echo-dpo"],"provenanceManifestDigest":"sha256:5b2500277eb6b62d57201bba7f1c12bb682205f8d67e4905950245dafca120c3","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:8d77c84ecbd7d7e38496479b2f8346c15504a56f076170d79c0eca2a57fdb3a5"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:bc222c4a669b888a60df6f398412bae232967c11841b9a27c7ba6c18eb41e362"}]} \ No newline at end of file diff --git a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/primary/schema.echo-provider-artifacts.cddl b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/primary/schema.echo-provider-artifacts.cddl index a3f6f87fa..a510adbed 100644 --- a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/primary/schema.echo-provider-artifacts.cddl +++ b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/primary/schema.echo-provider-artifacts.cddl @@ -1226,6 +1226,7 @@ echo-compiler-produced-pure-budget = { } echo-operation-application-result-projection = { + ? "application_input_expected_value_digest_path": [* echo-nonempty-tstr], "application_input_node_key_path": [* echo-nonempty-tstr], "application_input_replacement_path": [* echo-nonempty-tstr], "artifact_bytes": bstr, @@ -1266,6 +1267,7 @@ echo-operation-semantic-closure = { echo-operation-lowering-configuration = echo-attachment-create-if-absent-lowering-configuration / + echo-attachment-compare-and-set-lowering-configuration / echo-compiler-produced-bounded-pure-lowering-configuration / echo-compiler-produced-bounded-read-lowering-configuration @@ -1301,6 +1303,27 @@ echo-attachment-create-if-absent-lowering-configuration = { requiredNodeTypeProfile: echo-nonempty-tstr, } +echo-attachment-compare-and-set-lowering-configuration = { + apiVersion: "echo.operation-lowering-configuration/v1", + authorityProfile: echo-nonempty-tstr, + budgetCeiling: { + readBytes: 64..18446744073709551615, + steps: 4..18446744073709551615, + writeBytes: 64..18446744073709551615, + }, + invocationBinding: { + expectedValueDigestField: echo-nonempty-tstr, + nodeIdDerivation: "sha256-utf8/v1", + nodeKeyField: echo-nonempty-tstr, + replacementField: echo-nonempty-tstr, + warpIdSource: "action-lane/v1", + }, + maxReplacementBytes: 1..18446744073709551615, + programKind: "anchored-node-attachment-compare-and-set/v1", + requiredAttachmentTypeProfile: echo-nonempty-tstr, + requiredNodeTypeProfile: echo-nonempty-tstr, +} + echo-operation-package-verifier-report = { apiVersion: "echo.operation-package-verifier-report/v1", applicationResultProjection: resource-ref, diff --git a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/provider-manifest.echo.json b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/provider-manifest.echo.json index ce5c8a3b3..4f8c185dd 100644 --- a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/provider-manifest.echo.json +++ b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/provider-manifest.echo.json @@ -3,7 +3,7 @@ "providerAbi": "edict:target-provider@1.0.0", "provider": { "coordinate": "echo.edict-provider@1", - "digest": "sha256:0e58e22e034ce81ecbb57d085505ab314c769bcda24b2d06bfa77d9062729116" + "digest": "sha256:bef39ea60891b2bec38643fc8307ea38cadf3915159e9717177bff8ec3335128" }, "artifacts": [ { @@ -21,7 +21,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:dd2532814deb3022e05d020706bfc2ab9a56167cccc89ea2545b1cce78e69547" + "digest": "sha256:a6ed7c23750266dc4d152ac95e16623882d80f2919df9fabcc9bb29ca3f32384" } } }, @@ -40,7 +40,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:dd2532814deb3022e05d020706bfc2ab9a56167cccc89ea2545b1cce78e69547" + "digest": "sha256:a6ed7c23750266dc4d152ac95e16623882d80f2919df9fabcc9bb29ca3f32384" } } }, @@ -59,7 +59,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:dd2532814deb3022e05d020706bfc2ab9a56167cccc89ea2545b1cce78e69547" + "digest": "sha256:a6ed7c23750266dc4d152ac95e16623882d80f2919df9fabcc9bb29ca3f32384" } } }, @@ -78,7 +78,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:dd2532814deb3022e05d020706bfc2ab9a56167cccc89ea2545b1cce78e69547" + "digest": "sha256:a6ed7c23750266dc4d152ac95e16623882d80f2919df9fabcc9bb29ca3f32384" } } }, @@ -87,13 +87,13 @@ "artifactKind": "lowerer", "resource": { "coordinate": "echo.dpo.lowerer/component@1", - "digest": "sha256:4b594a8165079f0a973741b9e27b468cf041f4ad53108fccae641dc35355bd2a" + "digest": "sha256:b5e621cf20f18bf6cc817c474b404ad29eed9b83d37b560ed5777d47b0f7e036" }, "source": { "kind": "component", "component": { "coordinate": "echo.dpo.lowerer/component@1", - "digest": "sha256:4b594a8165079f0a973741b9e27b468cf041f4ad53108fccae641dc35355bd2a" + "digest": "sha256:b5e621cf20f18bf6cc817c474b404ad29eed9b83d37b560ed5777d47b0f7e036" } } }, @@ -102,7 +102,7 @@ "artifactKind": "generationProvenance", "resource": { "coordinate": "echo.edict-provider-generation-provenance@1", - "digest": "sha256:399c917c5cc9e86854a96852bdce898ec79df7b1236a8edb13a13b1afa72b664" + "digest": "sha256:180d391feb6f761237da081d23594c00765cb5b573564840febc83534fa0ef6b" }, "source": { "kind": "generated", @@ -112,7 +112,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:dd2532814deb3022e05d020706bfc2ab9a56167cccc89ea2545b1cce78e69547" + "digest": "sha256:a6ed7c23750266dc4d152ac95e16623882d80f2919df9fabcc9bb29ca3f32384" } } }, @@ -121,7 +121,7 @@ "artifactKind": "reviewArtifact", "resource": { "coordinate": "echo.edict-provider-generation-review@1", - "digest": "sha256:8b7d9873deb7c517cb92a2dfc8256ff1395636eaeaaba308a9a6d3d0423913e7" + "digest": "sha256:cf4f45f43f83adec2be414b5af00feb00fa7d105cada665ee485db27e8180c4f" }, "source": { "kind": "generated", @@ -131,7 +131,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:dd2532814deb3022e05d020706bfc2ab9a56167cccc89ea2545b1cce78e69547" + "digest": "sha256:a6ed7c23750266dc4d152ac95e16623882d80f2919df9fabcc9bb29ca3f32384" } } }, @@ -140,7 +140,7 @@ "artifactKind": "artifactSchema", "resource": { "coordinate": "echo.provider-artifacts.cddl@1", - "digest": "sha256:9078b84c47f2e5b722f8fea56cd0bca585cfd150c8114c22994b67cf19f6d9ab" + "digest": "sha256:16e8b1aa45f77bf2f69f538e7120cfb398d85525fdc6947a8cdd86d7b317ea2e" }, "source": { "kind": "generated", @@ -150,7 +150,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:dd2532814deb3022e05d020706bfc2ab9a56167cccc89ea2545b1cce78e69547" + "digest": "sha256:a6ed7c23750266dc4d152ac95e16623882d80f2919df9fabcc9bb29ca3f32384" } } }, @@ -169,7 +169,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:dd2532814deb3022e05d020706bfc2ab9a56167cccc89ea2545b1cce78e69547" + "digest": "sha256:a6ed7c23750266dc4d152ac95e16623882d80f2919df9fabcc9bb29ca3f32384" } } }, @@ -178,13 +178,13 @@ "artifactKind": "verifier", "resource": { "coordinate": "echo.dpo.verifier/component@1", - "digest": "sha256:d0be4d283399aefc45d75b395b3568f9983521ca5543c9dfd23b9495758050ed" + "digest": "sha256:5c2a028215fdb424cd1c5b30e2182c85646eb63e7d5a8ae21ebb773f65a21fc6" }, "source": { "kind": "component", "component": { "coordinate": "echo.dpo.verifier/component@1", - "digest": "sha256:d0be4d283399aefc45d75b395b3568f9983521ca5543c9dfd23b9495758050ed" + "digest": "sha256:5c2a028215fdb424cd1c5b30e2182c85646eb63e7d5a8ae21ebb773f65a21fc6" } } } diff --git a/crates/echo-wesley-gen/src/provider_artifacts.rs b/crates/echo-wesley-gen/src/provider_artifacts.rs index cf05c9730..dc41a81e5 100644 --- a/crates/echo-wesley-gen/src/provider_artifacts.rs +++ b/crates/echo-wesley-gen/src/provider_artifacts.rs @@ -294,6 +294,7 @@ echo-compiler-produced-pure-budget = { } echo-operation-application-result-projection = { + ? "application_input_expected_value_digest_path": [* echo-nonempty-tstr], "application_input_node_key_path": [* echo-nonempty-tstr], "application_input_replacement_path": [* echo-nonempty-tstr], "artifact_bytes": bstr, @@ -334,6 +335,7 @@ echo-operation-semantic-closure = { echo-operation-lowering-configuration = echo-attachment-create-if-absent-lowering-configuration / + echo-attachment-compare-and-set-lowering-configuration / echo-compiler-produced-bounded-pure-lowering-configuration / echo-compiler-produced-bounded-read-lowering-configuration @@ -369,6 +371,27 @@ echo-attachment-create-if-absent-lowering-configuration = { requiredNodeTypeProfile: echo-nonempty-tstr, } +echo-attachment-compare-and-set-lowering-configuration = { + apiVersion: "echo.operation-lowering-configuration/v1", + authorityProfile: echo-nonempty-tstr, + budgetCeiling: { + readBytes: 64..18446744073709551615, + steps: 4..18446744073709551615, + writeBytes: 64..18446744073709551615, + }, + invocationBinding: { + expectedValueDigestField: echo-nonempty-tstr, + nodeIdDerivation: "sha256-utf8/v1", + nodeKeyField: echo-nonempty-tstr, + replacementField: echo-nonempty-tstr, + warpIdSource: "action-lane/v1", + }, + maxReplacementBytes: 1..18446744073709551615, + programKind: "anchored-node-attachment-compare-and-set/v1", + requiredAttachmentTypeProfile: echo-nonempty-tstr, + requiredNodeTypeProfile: echo-nonempty-tstr, +} + echo-operation-package-verifier-report = { apiVersion: "echo.operation-package-verifier-report/v1", applicationResultProjection: resource-ref, diff --git a/crates/echo-wesley-gen/tests/provider_cas_schema.rs b/crates/echo-wesley-gen/tests/provider_cas_schema.rs new file mode 100644 index 000000000..7b0979987 --- /dev/null +++ b/crates/echo-wesley-gen/tests/provider_cas_schema.rs @@ -0,0 +1,148 @@ +// SPDX-License-Identifier: Apache-2.0 +// © James Ross Ω FLYING•ROBOTS +#![allow(clippy::expect_used, clippy::panic)] +//! Projected CAS configuration and result-projection schema witnesses. + +use echo_wesley_gen::provider_artifacts::{ + generate_provider_primary_artifacts_v1, ProviderPrimaryArtifactsV1, +}; +use echo_wesley_gen::provider_canonical::{encode_canonical_cbor_v1, CanonicalValueV1}; +use echo_wesley_gen::provider_contract_pack::{ + admit_provider_contract_pack_v1, AdmittedProviderContractPackV1, +}; +use echo_wesley_gen::provider_generation::{ + build_provider_generation_input_v1, ProviderGenerationInputV1, +}; + +const SOURCE: &[u8] = include_bytes!("../assets/v1/edict-provider/echo-provider-semantics-v1.json"); +const SETTINGS: &[u8] = include_bytes!("../assets/v1/edict-provider/generation-settings-v1.json"); +const CONTRACT_CDDL: &[u8] = + include_bytes!("../assets/v1/edict-provider/contracts/v1/edict-provider-contracts.cddl"); +const CONTRACT_MANIFEST: &[u8] = + include_bytes!("../assets/v1/edict-provider/contracts/v1/manifest.json"); + +fn admitted_pack() -> AdmittedProviderContractPackV1 { + admit_provider_contract_pack_v1(CONTRACT_CDDL, CONTRACT_MANIFEST) + .expect("checked Edict provider contract pack is admitted") +} + +fn build_input(source: &[u8], pack: &AdmittedProviderContractPackV1) -> ProviderGenerationInputV1 { + build_provider_generation_input_v1(source, pack, SETTINGS) + .expect("checked provider generation input builds") +} + +fn generate( + source: &[u8], + pack: &AdmittedProviderContractPackV1, +) -> (ProviderGenerationInputV1, ProviderPrimaryArtifactsV1) { + let input = build_input(source, pack); + let artifacts = generate_provider_primary_artifacts_v1(&input, pack) + .expect("checked primary provider artifacts generate"); + (input, artifacts) +} + +fn text(value: &str) -> CanonicalValueV1 { + CanonicalValueV1::Text(value.to_owned()) +} +fn map(entries: Vec<(&str, CanonicalValueV1)>) -> CanonicalValueV1 { + CanonicalValueV1::Map( + entries + .into_iter() + .map(|(key, value)| (text(key), value)) + .collect(), + ) +} + +fn configuration(expected: bool, steps: i128) -> CanonicalValueV1 { + let mut binding = vec![ + ("nodeIdDerivation", text("sha256-utf8/v1")), + ("nodeKeyField", text("key")), + ("replacementField", text("value")), + ("warpIdSource", text("action-lane/v1")), + ]; + if expected { + binding.push(("expectedValueDigestField", text("expected"))); + } + map(vec![ + ( + "apiVersion", + text("echo.operation-lowering-configuration/v1"), + ), + ( + "programKind", + text("anchored-node-attachment-compare-and-set/v1"), + ), + ("authorityProfile", text("test.authority/v1")), + ("requiredNodeTypeProfile", text("test.node/v1")), + ("requiredAttachmentTypeProfile", text("test.atom/v1")), + ("maxReplacementBytes", CanonicalValueV1::Integer(256)), + ( + "budgetCeiling", + map(vec![ + ("steps", CanonicalValueV1::Integer(steps)), + ("readBytes", CanonicalValueV1::Integer(1024)), + ("writeBytes", CanonicalValueV1::Integer(1024)), + ]), + ), + ("invocationBinding", map(binding)), + ]) +} + +#[test] +fn cas_configuration_requires_digest_binding_and_four_steps() { + let pack = admitted_pack(); + let (_, generated) = generate(SOURCE, &pack); + let bytes = encode_canonical_cbor_v1(&configuration(true, 4)).expect("canonical configuration"); + generated + .schema() + .validate_root_bytes("echo-operation-lowering-configuration", &bytes) + .expect("valid CAS configuration"); + for value in [configuration(false, 4), configuration(true, 3)] { + let bytes = encode_canonical_cbor_v1(&value).expect("canonical invalid configuration"); + let error = generated + .schema() + .validate_root_bytes("echo-operation-lowering-configuration", &bytes) + .expect_err("invalid CAS configuration"); + assert_eq!(error.kind(), echo_wesley_gen::provider_artifacts::ProviderArtifactGenerationErrorKind::OwningRootRejected); + } +} + +#[test] +fn projected_cas_schema_accepts_digest_path_without_changing_create_shape() { + let pack = admitted_pack(); + let (_, generated) = generate(SOURCE, &pack); + let mut fields = vec![ + ( + "application_input_node_key_path", + CanonicalValueV1::Array(vec![text("key")]), + ), + ( + "application_input_replacement_path", + CanonicalValueV1::Array(vec![text("value")]), + ), + ("artifact_bytes", CanonicalValueV1::Bytes(vec![0xa0])), + ("artifact_identity", CanonicalValueV1::Bytes(vec![0; 32])), + ( + "runtime_expression", + map(vec![ + ("kind", text("source")), + ("path", CanonicalValueV1::Array(vec![text("key")])), + ("source", map(vec![("kind", text("applicationInput"))])), + ]), + ), + ]; + for cas in [false, true] { + if cas { + fields.push(( + "application_input_expected_value_digest_path", + CanonicalValueV1::Array(vec![text("expected")]), + )); + } + let bytes = + encode_canonical_cbor_v1(&map(fields.clone())).expect("canonical projection shape"); + generated + .schema() + .validate_root_bytes("echo-operation-application-result-projection", &bytes) + .expect("valid projection shape"); + } +} diff --git a/crates/echo-wesley-gen/tests/provider_package.rs b/crates/echo-wesley-gen/tests/provider_package.rs index 48a7fe2e0..acc7109cd 100644 --- a/crates/echo-wesley-gen/tests/provider_package.rs +++ b/crates/echo-wesley-gen/tests/provider_package.rs @@ -65,7 +65,7 @@ const SEMANTIC_DIGEST: &str = const RELEASE_DIGEST: &str = "sha256:c39449495281b51f978468d08c21e93bcfa423176063b41675da61e4674b0066"; const PACKAGE_ARTIFACT_SHA256: &str = - "0e58e22e034ce81ecbb57d085505ab314c769bcda24b2d06bfa77d9062729116"; + "bef39ea60891b2bec38643fc8307ea38cadf3915159e9717177bff8ec3335128"; const OTHER_PACKAGE_ARTIFACT_SHA256: &str = "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"; diff --git a/crates/echo-wesley-gen/tests/provider_package_corpus.rs b/crates/echo-wesley-gen/tests/provider_package_corpus.rs index 098935813..cbc530677 100644 --- a/crates/echo-wesley-gen/tests/provider_package_corpus.rs +++ b/crates/echo-wesley-gen/tests/provider_package_corpus.rs @@ -11,9 +11,9 @@ use std::sync::atomic::{AtomicU64, Ordering}; use sha2::{Digest as _, Sha256}; const EXPECTED_PROVIDER_DIGEST: &str = - "sha256:0e58e22e034ce81ecbb57d085505ab314c769bcda24b2d06bfa77d9062729116"; + "sha256:bef39ea60891b2bec38643fc8307ea38cadf3915159e9717177bff8ec3335128"; const EXPECTED_MANIFEST_RAW_SHA256: &str = - "12be23c8ffcac95ed7bc51bbdf5497b72891650bdd7a4439bcb79c15fbcfa971"; + "fd6797962b164248d1b725ab37de17373c682f1b885534c0fa772d42c1c25fde"; const PACKAGE_PATHS: [&str; 25] = [ "components/lowerer.echo-dpo.component.wasm", diff --git a/docs/architecture/application-contract-hosting.md b/docs/architecture/application-contract-hosting.md index 8449bdb6c..1bf5f70d3 100644 --- a/docs/architecture/application-contract-hosting.md +++ b/docs/architecture/application-contract-hosting.md @@ -176,10 +176,12 @@ The native lowerer and independent verifier select the CAS program from an exact write class. Its configuration requires a distinct `expectedValueDigestField` and at least four steps; the package binds the corresponding input path and CAS-specific profile identities. The verifier reconstructs these bytes and -rejects a substituted digest path. These native witnesses use synthetic semantic -closures. Checked component/schema production, a real compiler build, and CAS -scheduler/recovery witnesses remain unimplemented; this is not yet a complete -application-build capability. +rejects a substituted digest path. Native refusal witnesses use synthetic semantic closures. The generated schema +and reproducible checked components also admit a real public Edict compiler build; +its exact source, executable package and accepted report are retained under +`crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/`. +CAS scheduler execution and recovery of that compiler-produced package remain +unverified; successful package production is not execution evidence. The generic operation runner distinguishes missing Action outcomes, typed obstructions, and footprint conflicts in its error messages. Both the first Action and unexpected duplicate outcomes use bounded summaries and omit invocation data. Opted-in Rust backtraces remain separate diagnostic output. This diagnostic boundary does not change retained obstruction encoding. diff --git a/schemas/edict-provider/components/v1/lowerer.echo-dpo.component.wasm b/schemas/edict-provider/components/v1/lowerer.echo-dpo.component.wasm index 903933cd7c4047821af6c731496b9097d5421458..17040f3c4185569cc8f61de5b3254caa118ebe1e 100644 GIT binary patch delta 34311 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 delta 30803 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 diff --git a/schemas/edict-provider/generated/v1/evidence/provenance.provider-generation.json b/schemas/edict-provider/generated/v1/evidence/provenance.provider-generation.json index 83cdbd543..966238203 100644 --- a/schemas/edict-provider/generated/v1/evidence/provenance.provider-generation.json +++ b/schemas/edict-provider/generated/v1/evidence/provenance.provider-generation.json @@ -1 +1 @@ -{"apiVersion":"wesley.generation-provenance-manifest/v1","contractVersions":{"generatorAbi":"wesley.extension-generator/v1","inputSchema":"wesley.extension-generation-input/v1","provenanceSchema":"wesley.generation-provenance-manifest/v1"},"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:9078b84c47f2e5b722f8fea56cd0bca585cfd150c8114c22994b67cf19f6d9ab"}],"generationInputDigest":"sha256:0c07274803d465ec212c313f74dd46396851f43019fa0f97da9571a167c84587","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:dd2532814deb3022e05d020706bfc2ab9a56167cccc89ea2545b1cce78e69547","version":"0.1.0"},"settingsDigest":"sha256:0f708e76898de6fdb8186352e81d0f5c445adf94bb6c7de9204952d9fe913d4a","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:8d77c84ecbd7d7e38496479b2f8346c15504a56f076170d79c0eca2a57fdb3a5"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:bc222c4a669b888a60df6f398412bae232967c11841b9a27c7ba6c18eb41e362"}]} \ No newline at end of file +{"apiVersion":"wesley.generation-provenance-manifest/v1","contractVersions":{"generatorAbi":"wesley.extension-generator/v1","inputSchema":"wesley.extension-generation-input/v1","provenanceSchema":"wesley.generation-provenance-manifest/v1"},"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:16e8b1aa45f77bf2f69f538e7120cfb398d85525fdc6947a8cdd86d7b317ea2e"}],"generationInputDigest":"sha256:0c07274803d465ec212c313f74dd46396851f43019fa0f97da9571a167c84587","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:a6ed7c23750266dc4d152ac95e16623882d80f2919df9fabcc9bb29ca3f32384","version":"0.1.0"},"settingsDigest":"sha256:0f708e76898de6fdb8186352e81d0f5c445adf94bb6c7de9204952d9fe913d4a","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:8d77c84ecbd7d7e38496479b2f8346c15504a56f076170d79c0eca2a57fdb3a5"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:bc222c4a669b888a60df6f398412bae232967c11841b9a27c7ba6c18eb41e362"}]} \ No newline at end of file diff --git a/schemas/edict-provider/generated/v1/evidence/review.provider-generation.json b/schemas/edict-provider/generated/v1/evidence/review.provider-generation.json index 95605ec67..27b206a38 100644 --- a/schemas/edict-provider/generated/v1/evidence/review.provider-generation.json +++ b/schemas/edict-provider/generated/v1/evidence/review.provider-generation.json @@ -1 +1 @@ -{"apiVersion":"wesley.generation-review/v1","authoritative":false,"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:9078b84c47f2e5b722f8fea56cd0bca585cfd150c8114c22994b67cf19f6d9ab"}],"generationInputDigest":"sha256:0c07274803d465ec212c313f74dd46396851f43019fa0f97da9571a167c84587","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:dd2532814deb3022e05d020706bfc2ab9a56167cccc89ea2545b1cce78e69547","version":"0.1.0"},"projectionRoles":["authority-facts.echo-dpo","authority-facts.echo-lawpack","generated-artifact-profile.echo-dpo-registration","lawpack.echo-dpo","schema.echo-provider-artifacts","target-profile.echo-dpo"],"provenanceManifestDigest":"sha256:cbaf79293ebb33cd8825847b4ba848c20c2dab9b4e6cf26931c3e830bf9e7ca1","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:8d77c84ecbd7d7e38496479b2f8346c15504a56f076170d79c0eca2a57fdb3a5"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:bc222c4a669b888a60df6f398412bae232967c11841b9a27c7ba6c18eb41e362"}]} \ No newline at end of file +{"apiVersion":"wesley.generation-review/v1","authoritative":false,"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:16e8b1aa45f77bf2f69f538e7120cfb398d85525fdc6947a8cdd86d7b317ea2e"}],"generationInputDigest":"sha256:0c07274803d465ec212c313f74dd46396851f43019fa0f97da9571a167c84587","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:a6ed7c23750266dc4d152ac95e16623882d80f2919df9fabcc9bb29ca3f32384","version":"0.1.0"},"projectionRoles":["authority-facts.echo-dpo","authority-facts.echo-lawpack","generated-artifact-profile.echo-dpo-registration","lawpack.echo-dpo","schema.echo-provider-artifacts","target-profile.echo-dpo"],"provenanceManifestDigest":"sha256:5b2500277eb6b62d57201bba7f1c12bb682205f8d67e4905950245dafca120c3","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:8d77c84ecbd7d7e38496479b2f8346c15504a56f076170d79c0eca2a57fdb3a5"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:bc222c4a669b888a60df6f398412bae232967c11841b9a27c7ba6c18eb41e362"}]} \ No newline at end of file diff --git a/schemas/edict-provider/generated/v1/primary/schema.echo-provider-artifacts.cddl b/schemas/edict-provider/generated/v1/primary/schema.echo-provider-artifacts.cddl index a3f6f87fa..a510adbed 100644 --- a/schemas/edict-provider/generated/v1/primary/schema.echo-provider-artifacts.cddl +++ b/schemas/edict-provider/generated/v1/primary/schema.echo-provider-artifacts.cddl @@ -1226,6 +1226,7 @@ echo-compiler-produced-pure-budget = { } echo-operation-application-result-projection = { + ? "application_input_expected_value_digest_path": [* echo-nonempty-tstr], "application_input_node_key_path": [* echo-nonempty-tstr], "application_input_replacement_path": [* echo-nonempty-tstr], "artifact_bytes": bstr, @@ -1266,6 +1267,7 @@ echo-operation-semantic-closure = { echo-operation-lowering-configuration = echo-attachment-create-if-absent-lowering-configuration / + echo-attachment-compare-and-set-lowering-configuration / echo-compiler-produced-bounded-pure-lowering-configuration / echo-compiler-produced-bounded-read-lowering-configuration @@ -1301,6 +1303,27 @@ echo-attachment-create-if-absent-lowering-configuration = { requiredNodeTypeProfile: echo-nonempty-tstr, } +echo-attachment-compare-and-set-lowering-configuration = { + apiVersion: "echo.operation-lowering-configuration/v1", + authorityProfile: echo-nonempty-tstr, + budgetCeiling: { + readBytes: 64..18446744073709551615, + steps: 4..18446744073709551615, + writeBytes: 64..18446744073709551615, + }, + invocationBinding: { + expectedValueDigestField: echo-nonempty-tstr, + nodeIdDerivation: "sha256-utf8/v1", + nodeKeyField: echo-nonempty-tstr, + replacementField: echo-nonempty-tstr, + warpIdSource: "action-lane/v1", + }, + maxReplacementBytes: 1..18446744073709551615, + programKind: "anchored-node-attachment-compare-and-set/v1", + requiredAttachmentTypeProfile: echo-nonempty-tstr, + requiredNodeTypeProfile: echo-nonempty-tstr, +} + echo-operation-package-verifier-report = { apiVersion: "echo.operation-package-verifier-report/v1", applicationResultProjection: resource-ref, diff --git a/schemas/edict-provider/package/v1/components/lowerer.echo-dpo.component.wasm b/schemas/edict-provider/package/v1/components/lowerer.echo-dpo.component.wasm index 903933cd7c4047821af6c731496b9097d5421458..17040f3c4185569cc8f61de5b3254caa118ebe1e 100644 GIT binary patch delta 34311 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 delta 30803 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 diff --git a/schemas/edict-provider/package/v1/generated/evidence/provenance.provider-generation.json b/schemas/edict-provider/package/v1/generated/evidence/provenance.provider-generation.json index 83cdbd543..966238203 100644 --- a/schemas/edict-provider/package/v1/generated/evidence/provenance.provider-generation.json +++ b/schemas/edict-provider/package/v1/generated/evidence/provenance.provider-generation.json @@ -1 +1 @@ -{"apiVersion":"wesley.generation-provenance-manifest/v1","contractVersions":{"generatorAbi":"wesley.extension-generator/v1","inputSchema":"wesley.extension-generation-input/v1","provenanceSchema":"wesley.generation-provenance-manifest/v1"},"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:9078b84c47f2e5b722f8fea56cd0bca585cfd150c8114c22994b67cf19f6d9ab"}],"generationInputDigest":"sha256:0c07274803d465ec212c313f74dd46396851f43019fa0f97da9571a167c84587","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:dd2532814deb3022e05d020706bfc2ab9a56167cccc89ea2545b1cce78e69547","version":"0.1.0"},"settingsDigest":"sha256:0f708e76898de6fdb8186352e81d0f5c445adf94bb6c7de9204952d9fe913d4a","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:8d77c84ecbd7d7e38496479b2f8346c15504a56f076170d79c0eca2a57fdb3a5"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:bc222c4a669b888a60df6f398412bae232967c11841b9a27c7ba6c18eb41e362"}]} \ No newline at end of file +{"apiVersion":"wesley.generation-provenance-manifest/v1","contractVersions":{"generatorAbi":"wesley.extension-generator/v1","inputSchema":"wesley.extension-generation-input/v1","provenanceSchema":"wesley.generation-provenance-manifest/v1"},"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:16e8b1aa45f77bf2f69f538e7120cfb398d85525fdc6947a8cdd86d7b317ea2e"}],"generationInputDigest":"sha256:0c07274803d465ec212c313f74dd46396851f43019fa0f97da9571a167c84587","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:a6ed7c23750266dc4d152ac95e16623882d80f2919df9fabcc9bb29ca3f32384","version":"0.1.0"},"settingsDigest":"sha256:0f708e76898de6fdb8186352e81d0f5c445adf94bb6c7de9204952d9fe913d4a","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:8d77c84ecbd7d7e38496479b2f8346c15504a56f076170d79c0eca2a57fdb3a5"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:bc222c4a669b888a60df6f398412bae232967c11841b9a27c7ba6c18eb41e362"}]} \ No newline at end of file diff --git a/schemas/edict-provider/package/v1/generated/evidence/review.provider-generation.json b/schemas/edict-provider/package/v1/generated/evidence/review.provider-generation.json index 95605ec67..27b206a38 100644 --- a/schemas/edict-provider/package/v1/generated/evidence/review.provider-generation.json +++ b/schemas/edict-provider/package/v1/generated/evidence/review.provider-generation.json @@ -1 +1 @@ -{"apiVersion":"wesley.generation-review/v1","authoritative":false,"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:9078b84c47f2e5b722f8fea56cd0bca585cfd150c8114c22994b67cf19f6d9ab"}],"generationInputDigest":"sha256:0c07274803d465ec212c313f74dd46396851f43019fa0f97da9571a167c84587","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:dd2532814deb3022e05d020706bfc2ab9a56167cccc89ea2545b1cce78e69547","version":"0.1.0"},"projectionRoles":["authority-facts.echo-dpo","authority-facts.echo-lawpack","generated-artifact-profile.echo-dpo-registration","lawpack.echo-dpo","schema.echo-provider-artifacts","target-profile.echo-dpo"],"provenanceManifestDigest":"sha256:cbaf79293ebb33cd8825847b4ba848c20c2dab9b4e6cf26931c3e830bf9e7ca1","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:8d77c84ecbd7d7e38496479b2f8346c15504a56f076170d79c0eca2a57fdb3a5"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:bc222c4a669b888a60df6f398412bae232967c11841b9a27c7ba6c18eb41e362"}]} \ No newline at end of file +{"apiVersion":"wesley.generation-review/v1","authoritative":false,"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:16e8b1aa45f77bf2f69f538e7120cfb398d85525fdc6947a8cdd86d7b317ea2e"}],"generationInputDigest":"sha256:0c07274803d465ec212c313f74dd46396851f43019fa0f97da9571a167c84587","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:a6ed7c23750266dc4d152ac95e16623882d80f2919df9fabcc9bb29ca3f32384","version":"0.1.0"},"projectionRoles":["authority-facts.echo-dpo","authority-facts.echo-lawpack","generated-artifact-profile.echo-dpo-registration","lawpack.echo-dpo","schema.echo-provider-artifacts","target-profile.echo-dpo"],"provenanceManifestDigest":"sha256:5b2500277eb6b62d57201bba7f1c12bb682205f8d67e4905950245dafca120c3","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:8d77c84ecbd7d7e38496479b2f8346c15504a56f076170d79c0eca2a57fdb3a5"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:bc222c4a669b888a60df6f398412bae232967c11841b9a27c7ba6c18eb41e362"}]} \ No newline at end of file diff --git a/schemas/edict-provider/package/v1/generated/primary/schema.echo-provider-artifacts.cddl b/schemas/edict-provider/package/v1/generated/primary/schema.echo-provider-artifacts.cddl index a3f6f87fa..a510adbed 100644 --- a/schemas/edict-provider/package/v1/generated/primary/schema.echo-provider-artifacts.cddl +++ b/schemas/edict-provider/package/v1/generated/primary/schema.echo-provider-artifacts.cddl @@ -1226,6 +1226,7 @@ echo-compiler-produced-pure-budget = { } echo-operation-application-result-projection = { + ? "application_input_expected_value_digest_path": [* echo-nonempty-tstr], "application_input_node_key_path": [* echo-nonempty-tstr], "application_input_replacement_path": [* echo-nonempty-tstr], "artifact_bytes": bstr, @@ -1266,6 +1267,7 @@ echo-operation-semantic-closure = { echo-operation-lowering-configuration = echo-attachment-create-if-absent-lowering-configuration / + echo-attachment-compare-and-set-lowering-configuration / echo-compiler-produced-bounded-pure-lowering-configuration / echo-compiler-produced-bounded-read-lowering-configuration @@ -1301,6 +1303,27 @@ echo-attachment-create-if-absent-lowering-configuration = { requiredNodeTypeProfile: echo-nonempty-tstr, } +echo-attachment-compare-and-set-lowering-configuration = { + apiVersion: "echo.operation-lowering-configuration/v1", + authorityProfile: echo-nonempty-tstr, + budgetCeiling: { + readBytes: 64..18446744073709551615, + steps: 4..18446744073709551615, + writeBytes: 64..18446744073709551615, + }, + invocationBinding: { + expectedValueDigestField: echo-nonempty-tstr, + nodeIdDerivation: "sha256-utf8/v1", + nodeKeyField: echo-nonempty-tstr, + replacementField: echo-nonempty-tstr, + warpIdSource: "action-lane/v1", + }, + maxReplacementBytes: 1..18446744073709551615, + programKind: "anchored-node-attachment-compare-and-set/v1", + requiredAttachmentTypeProfile: echo-nonempty-tstr, + requiredNodeTypeProfile: echo-nonempty-tstr, +} + echo-operation-package-verifier-report = { apiVersion: "echo.operation-package-verifier-report/v1", applicationResultProjection: resource-ref, diff --git a/schemas/edict-provider/package/v1/provider-manifest.echo.json b/schemas/edict-provider/package/v1/provider-manifest.echo.json index ce5c8a3b3..4f8c185dd 100644 --- a/schemas/edict-provider/package/v1/provider-manifest.echo.json +++ b/schemas/edict-provider/package/v1/provider-manifest.echo.json @@ -3,7 +3,7 @@ "providerAbi": "edict:target-provider@1.0.0", "provider": { "coordinate": "echo.edict-provider@1", - "digest": "sha256:0e58e22e034ce81ecbb57d085505ab314c769bcda24b2d06bfa77d9062729116" + "digest": "sha256:bef39ea60891b2bec38643fc8307ea38cadf3915159e9717177bff8ec3335128" }, "artifacts": [ { @@ -21,7 +21,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:dd2532814deb3022e05d020706bfc2ab9a56167cccc89ea2545b1cce78e69547" + "digest": "sha256:a6ed7c23750266dc4d152ac95e16623882d80f2919df9fabcc9bb29ca3f32384" } } }, @@ -40,7 +40,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:dd2532814deb3022e05d020706bfc2ab9a56167cccc89ea2545b1cce78e69547" + "digest": "sha256:a6ed7c23750266dc4d152ac95e16623882d80f2919df9fabcc9bb29ca3f32384" } } }, @@ -59,7 +59,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:dd2532814deb3022e05d020706bfc2ab9a56167cccc89ea2545b1cce78e69547" + "digest": "sha256:a6ed7c23750266dc4d152ac95e16623882d80f2919df9fabcc9bb29ca3f32384" } } }, @@ -78,7 +78,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:dd2532814deb3022e05d020706bfc2ab9a56167cccc89ea2545b1cce78e69547" + "digest": "sha256:a6ed7c23750266dc4d152ac95e16623882d80f2919df9fabcc9bb29ca3f32384" } } }, @@ -87,13 +87,13 @@ "artifactKind": "lowerer", "resource": { "coordinate": "echo.dpo.lowerer/component@1", - "digest": "sha256:4b594a8165079f0a973741b9e27b468cf041f4ad53108fccae641dc35355bd2a" + "digest": "sha256:b5e621cf20f18bf6cc817c474b404ad29eed9b83d37b560ed5777d47b0f7e036" }, "source": { "kind": "component", "component": { "coordinate": "echo.dpo.lowerer/component@1", - "digest": "sha256:4b594a8165079f0a973741b9e27b468cf041f4ad53108fccae641dc35355bd2a" + "digest": "sha256:b5e621cf20f18bf6cc817c474b404ad29eed9b83d37b560ed5777d47b0f7e036" } } }, @@ -102,7 +102,7 @@ "artifactKind": "generationProvenance", "resource": { "coordinate": "echo.edict-provider-generation-provenance@1", - "digest": "sha256:399c917c5cc9e86854a96852bdce898ec79df7b1236a8edb13a13b1afa72b664" + "digest": "sha256:180d391feb6f761237da081d23594c00765cb5b573564840febc83534fa0ef6b" }, "source": { "kind": "generated", @@ -112,7 +112,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:dd2532814deb3022e05d020706bfc2ab9a56167cccc89ea2545b1cce78e69547" + "digest": "sha256:a6ed7c23750266dc4d152ac95e16623882d80f2919df9fabcc9bb29ca3f32384" } } }, @@ -121,7 +121,7 @@ "artifactKind": "reviewArtifact", "resource": { "coordinate": "echo.edict-provider-generation-review@1", - "digest": "sha256:8b7d9873deb7c517cb92a2dfc8256ff1395636eaeaaba308a9a6d3d0423913e7" + "digest": "sha256:cf4f45f43f83adec2be414b5af00feb00fa7d105cada665ee485db27e8180c4f" }, "source": { "kind": "generated", @@ -131,7 +131,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:dd2532814deb3022e05d020706bfc2ab9a56167cccc89ea2545b1cce78e69547" + "digest": "sha256:a6ed7c23750266dc4d152ac95e16623882d80f2919df9fabcc9bb29ca3f32384" } } }, @@ -140,7 +140,7 @@ "artifactKind": "artifactSchema", "resource": { "coordinate": "echo.provider-artifacts.cddl@1", - "digest": "sha256:9078b84c47f2e5b722f8fea56cd0bca585cfd150c8114c22994b67cf19f6d9ab" + "digest": "sha256:16e8b1aa45f77bf2f69f538e7120cfb398d85525fdc6947a8cdd86d7b317ea2e" }, "source": { "kind": "generated", @@ -150,7 +150,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:dd2532814deb3022e05d020706bfc2ab9a56167cccc89ea2545b1cce78e69547" + "digest": "sha256:a6ed7c23750266dc4d152ac95e16623882d80f2919df9fabcc9bb29ca3f32384" } } }, @@ -169,7 +169,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:dd2532814deb3022e05d020706bfc2ab9a56167cccc89ea2545b1cce78e69547" + "digest": "sha256:a6ed7c23750266dc4d152ac95e16623882d80f2919df9fabcc9bb29ca3f32384" } } }, @@ -178,13 +178,13 @@ "artifactKind": "verifier", "resource": { "coordinate": "echo.dpo.verifier/component@1", - "digest": "sha256:d0be4d283399aefc45d75b395b3568f9983521ca5543c9dfd23b9495758050ed" + "digest": "sha256:5c2a028215fdb424cd1c5b30e2182c85646eb63e7d5a8ae21ebb773f65a21fc6" }, "source": { "kind": "component", "component": { "coordinate": "echo.dpo.verifier/component@1", - "digest": "sha256:d0be4d283399aefc45d75b395b3568f9983521ca5543c9dfd23b9495758050ed" + "digest": "sha256:5c2a028215fdb424cd1c5b30e2182c85646eb63e7d5a8ae21ebb773f65a21fc6" } } } diff --git a/xtask/src/provider_lowerer_component.rs b/xtask/src/provider_lowerer_component.rs index 1ed2a24b3..6d6ffb4d7 100644 --- a/xtask/src/provider_lowerer_component.rs +++ b/xtask/src/provider_lowerer_component.rs @@ -53,7 +53,7 @@ const PINNED_CARGO_COMMIT: &str = "840b83a10fb0e039a83f4d70ad032892c287570a"; /// Reviewed identity that the portable promotion command is permitted to install. pub(crate) const APPROVED_CHECKED_COMPONENT_SHA256: &str = - "4b594a8165079f0a973741b9e27b468cf041f4ad53108fccae641dc35355bd2a"; + "b5e621cf20f18bf6cc817c474b404ad29eed9b83d37b560ed5777d47b0f7e036"; pub(crate) const CHECKED_COMPONENT_REPOSITORY_PATH: &str = "schemas/edict-provider/components/v1/lowerer.echo-dpo.component.wasm"; @@ -62,7 +62,7 @@ pub(crate) const VERIFIER_CHECKED_COMPONENT_REPOSITORY_PATH: &str = "schemas/edict-provider/components/v1/verifier.echo-dpo.component.wasm"; /// Approved SHA-256 identity of the checked verifier component. pub(crate) const APPROVED_CHECKED_VERIFIER_COMPONENT_SHA256: &str = - "d0be4d283399aefc45d75b395b3568f9983521ca5543c9dfd23b9495758050ed"; + "5c2a028215fdb424cd1c5b30e2182c85646eb63e7d5a8ae21ebb773f65a21fc6"; #[derive(Clone, Copy, Debug, Eq, PartialEq)] struct ProviderComponentSpec { From d9bc387756da6dec84c85ace66bb81ba6c784498 Mon Sep 17 00:00:00 2001 From: James Ross Date: Thu, 8 Oct 2026 00:31:01 -0700 Subject: [PATCH 04/13] Test compiler-produced CAS execution and fresh-host recovery --- CHANGELOG.md | 2 +- .../tests/edict_projected_cas_tests.rs | 572 ++++++++++++++++++ .../application-contract-hosting.md | 12 +- 3 files changed, 583 insertions(+), 3 deletions(-) create mode 100644 crates/warp-core/tests/edict_projected_cas_tests.rs diff --git a/CHANGELOG.md b/CHANGELOG.md index 4316e4fa3..5a0f9d03b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,7 @@ ### Added -- Native projected compare-and-set invocation encoding retains canonical application input and statically binds the expected attachment-value digest. The native lowerer and independent verifier reconstruct CAS-specific profiles and reject rebound digest paths or under-budget configurations. Generated schema, reproducible components and a retained public Edict compiler build establish package production. End-to-end execution/recovery integration remains pending. +- Native projected compare-and-set invocation encoding retains canonical application input and statically binds the expected attachment-value digest. The native lowerer and independent verifier reconstruct CAS-specific profiles and reject rebound digest paths or under-budget configurations. Generated schema, reproducible components and a retained public Edict compiler build establish package production. The retained compiler package now has scheduler execution, pending/committed Action recovery, stale-digest noncommit recovery and typed refusal witnesses. - A disabled-by-default experimental Keep ReferenceStore adapter implements the complete-object CAS port with explicit limits, private bindings, sanitized backend errors and atomic output promotion. It preserves existing CAS defaults and claims no restart durability. diff --git a/crates/warp-core/tests/edict_projected_cas_tests.rs b/crates/warp-core/tests/edict_projected_cas_tests.rs new file mode 100644 index 000000000..d08bcd1a6 --- /dev/null +++ b/crates/warp-core/tests/edict_projected_cas_tests.rs @@ -0,0 +1,572 @@ +// SPDX-License-Identifier: Apache-2.0 +// © James Ross Ω FLYING•ROBOTS +//! Public scheduler and recovery witnesses for an actual Edict compiler output. +#![cfg(all(feature = "native_rule_bootstrap", feature = "trusted_runtime"))] +#![allow(clippy::expect_used, clippy::panic)] + +use bytes::Bytes; +use echo_edict_canonical::{ + decode_canonical_cbor_v1, encode_canonical_cbor_v1, CanonicalValueV1 as Value, +}; +use sha2::{Digest, Sha256}; +use std::{ + fs, + path::PathBuf, + sync::atomic::{AtomicU64, Ordering}, +}; +use warp_core::{ + echo_operation_action_envelope_v1, echo_operation_anchored_node_application_basis_v1, + echo_operation_atom_value_digest_v1, echo_operation_package_id_v1, make_head_id, make_node_id, + make_type_id, make_warp_id, AtomPayload, AttachmentValue, EchoOperationActionOutcomeV1, + EchoOperationAdmissionPolicyV1, EchoOperationBudgetV1, + EchoOperationInvocationAdmissionErrorKindV1, EchoOperationInvocationAdmissionPolicyV1, + EchoOperationInvocationV1, EchoOperationObstructionKindV1, EngineBuilder, GraphStore, + InboxPolicy, IngressTarget, NodeId, NodeKey, NodeRecord, PlaybackMode, SchedulerKind, + TrustedRuntimeHost, TrustedRuntimeWalConfig, TypeId, WorldlineId, WorldlineRuntime, + WorldlineState, WriterHead, WriterHeadKey, +}; + +const OPERATION: &str = "examples.cas_echo@1.updateCell"; +const KEY: &str = "cell"; +const INITIAL: &[u8] = b"initial"; +const GRANT: [u8; 32] = [73; 32]; +static TEMP_COUNTER: AtomicU64 = AtomicU64::new(0); + +struct WalDir(PathBuf); +impl WalDir { + fn new() -> Self { + for _ in 0..1024 { + let path = std::env::temp_dir().join(format!( + "edict-cas-{}-{}", + std::process::id(), + TEMP_COUNTER.fetch_add(1, Ordering::Relaxed) + )); + match fs::create_dir(&path) { + Ok(()) => return Self(path), + Err(error) if error.kind() == std::io::ErrorKind::AlreadyExists => {} + Err(error) => panic!("create owned WAL directory: {error}"), + } + } + panic!("unique WAL directory unavailable"); + } +} +impl Drop for WalDir { + fn drop(&mut self) { + fs::remove_dir_all(&self.0).expect("remove owned WAL evidence after test"); + } +} + +fn package() -> Vec { + let bytes = hex::decode(include_str!("../../echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/built/executable-operation-package.cbor.hex").trim()).expect("compiler output hex"); + assert_eq!( + hex::encode(Sha256::digest(&bytes)), + "4d671f8d9515c7d60c82e938103e59231eecab3c60782874f2d6fc2ff27c0d17" + ); + bytes +} +fn profile(label: &str) -> [u8; 32] { + let mut hash = blake3::Hasher::new(); + hash.update(b"echo:operation-profile:v1\0"); + hash.update(&(label.len() as u64).to_le_bytes()); + hash.update(label.as_bytes()); + hash.finalize().into() +} +fn attachment_type() -> TypeId { + TypeId(profile("cas.echo.attachment.greeting-message/v1")) +} +fn budget() -> EchoOperationBudgetV1 { + EchoOperationBudgetV1::new(16, 1024, 320) +} +fn policy() -> EchoOperationInvocationAdmissionPolicyV1 { + EchoOperationInvocationAdmissionPolicyV1::new( + profile("cas.echo.authority.local-demo/v1"), + GRANT, + budget(), + ) +} +struct Fixture { + host: TrustedRuntimeHost, + head: WriterHeadKey, + node: NodeKey, +} +impl Fixture { + fn new(present: bool) -> Self { + let warp_id = make_warp_id("edict-cas-public-witness"); + let root = make_node_id("edict-cas-public-witness-root"); + let node = NodeKey { + warp_id, + local_id: NodeId(Sha256::digest(KEY.as_bytes()).into()), + }; + let mut store = GraphStore::new(warp_id); + store.insert_node( + root, + NodeRecord { + ty: make_type_id("cas-witness-root"), + }, + ); + if present { + store.insert_node( + node.local_id, + NodeRecord { + ty: TypeId(profile("cas.echo.node.greeting/v1")), + }, + ); + store.set_node_attachment( + node.local_id, + Some(AttachmentValue::Atom(AtomPayload::new( + attachment_type(), + Bytes::from_static(INITIAL), + ))), + ); + } + let worldline_id = WorldlineId::from_bytes([67; 32]); + let head = WriterHeadKey { + worldline_id, + head_id: make_head_id("edict-cas-public-witness-head"), + }; + let mut runtime = WorldlineRuntime::new(); + runtime + .register_worldline( + worldline_id, + WorldlineState::from_root_store(store, root).expect("root state"), + ) + .expect("worldline"); + runtime + .register_writer_head(WriterHead::with_routing( + head, + PlaybackMode::Play, + InboxPolicy::AcceptAll, + None, + true, + )) + .expect("head"); + let mut engine_store = GraphStore::default(); + engine_store.insert_node( + root, + NodeRecord { + ty: make_type_id("cas-witness-engine-root"), + }, + ); + let engine = EngineBuilder::new(engine_store, root) + .scheduler(SchedulerKind::Radix) + .workers(1) + .build(); + Self { + host: TrustedRuntimeHost::new(runtime, engine).expect("host"), + head, + node, + } + } + fn install(&mut self) { + let bytes = package(); + let admitted = self + .host + .admit_echo_operation_package_v1( + &EchoOperationAdmissionPolicyV1::exact( + echo_operation_package_id_v1(&bytes), + OPERATION, + profile("cas.echo.authority.local-demo/v1"), + budget(), + ), + bytes, + ) + .expect("actual compiler package admitted"); + self.host + .install_admitted_echo_operation_package_v1(admitted) + .expect("install"); + } + fn enable_wal(&mut self, dir: &WalDir) { + self.host + .enable_runtime_wal(TrustedRuntimeWalConfig::filesystem(&dir.0)) + .expect("activate or recover WAL"); + } + fn value(&self) -> &[u8] { + let state = self + .host + .runtime() + .worldlines() + .get(&self.head.worldline_id) + .expect("worldline") + .state(); + let store = state.store(&self.node.warp_id).expect("store"); + assert_eq!( + store.node(&self.node.local_id).expect("target node").ty, + TypeId(profile("cas.echo.node.greeting/v1")) + ); + let Some(AttachmentValue::Atom(atom)) = store.node_attachment(&self.node.local_id) else { + panic!("typed target atom missing") + }; + assert_eq!(atom.type_id, attachment_type()); + &atom.bytes + } + fn invocation( + &self, + current: &[u8], + expected: [u8; 32], + input_expected: [u8; 32], + replacement: &str, + ) -> Vec { + let basis = self + .host + .echo_operation_evaluation_basis_v1( + self.head, + echo_operation_anchored_node_application_basis_v1( + self.node, + attachment_type(), + current, + ), + ) + .expect("current causal basis"); + let legacy = EchoOperationInvocationV1::anchored_node_attachment_compare_and_set( + echo_operation_package_id_v1(&package()), + OPERATION, + basis, + GRANT, + budget(), + self.node, + expected, + replacement.as_bytes().to_vec(), + ) + .to_canonical_bytes() + .expect("invocation"); + // Encode the public projected wire form as a client would. The package + // itself is the exact compiler output, with no test-side rewriting. + let Value::Map(mut fields) = + decode_canonical_cbor_v1(&legacy).expect("canonical invocation") + else { + panic!("invocation map") + }; + for (key, value) in &mut fields { + if key == &Value::Text("schema".into()) { + *value = Value::Text( + "echo.operation-invocation.anchored-node-alpha-cas-projected/v1".into(), + ); + } + } + let input = encode_canonical_cbor_v1(&map(&[ + ("basis", Value::Text("explicit".into())), + ("key", Value::Text(KEY.into())), + ("expected", Value::Bytes(input_expected.to_vec())), + ("message", Value::Text(replacement.into())), + ])) + .expect("input"); + fields.push(( + Value::Text("application_input_bytes".into()), + Value::Bytes(input), + )); + encode_canonical_cbor_v1(&Value::Map(fields)).expect("projected invocation") + } +} +fn map(fields: &[(&str, Value)]) -> Value { + Value::Map( + fields + .iter() + .map(|(key, value)| (Value::Text((*key).into()), value.clone())) + .collect(), + ) +} +fn initial_digest() -> [u8; 32] { + echo_operation_atom_value_digest_v1(attachment_type(), INITIAL) +} + +#[test] +fn compiler_cas_recovers_pending_action_committed_result_and_stale_obstruction() { + let dir = WalDir::new(); + let mut accepted = Fixture::new(true); + accepted.enable_wal(&dir); + accepted.install(); + let invocation = accepted.invocation(INITIAL, initial_digest(), initial_digest(), "updated"); + let envelope = echo_operation_action_envelope_v1( + IngressTarget::ExactHead { key: accepted.head }, + invocation, + ) + .expect("Action envelope"); + let submission = accepted + .host + .app() + .submit_intent_with_runtime_wal_ack(envelope) + .expect("durable Action acknowledgement") + .submission_id; + assert_eq!(accepted.value(), INITIAL); + let wal = accepted + .host + .runtime_wal() + .expect("WAL") + .recover_read_only() + .expect("read accepted WAL"); + assert!(wal + .witnessed_submissions + .records() + .iter() + .any(|record| record.submission.submission_id == submission)); + assert!(wal.provenance_entries.is_empty()); + assert!(wal.receipt_correlations.is_empty()); + drop(accepted); + + let mut pending = Fixture::new(true); + pending.enable_wal(&dir); + assert_eq!( + pending.host.runtime().pending_witnessed_submission_count(), + 1 + ); + assert!(pending + .host + .engine() + .installed_echo_operation_package_v1(echo_operation_package_id_v1(&package())) + .is_some()); + assert!(pending + .host + .echo_operation_action_outcome_v1(&submission) + .is_none()); + assert_eq!(pending.value(), INITIAL); + pending + .host + .install_echo_operation_action_admission_policy_v1(policy()); + let steps = pending + .host + .tick_once() + .expect("scheduler evaluates recovered CAS"); + assert_eq!(steps.len(), 1); + assert_eq!(steps[0].admitted_count, 1); + assert_eq!(pending.value(), b"updated"); + let Some(EchoOperationActionOutcomeV1::Committed(receipt)) = + pending.host.echo_operation_action_outcome_v1(&submission) + else { + panic!("CAS must commit") + }; + assert_eq!(receipt.worldline_tick_after().as_u64(), 1); + assert!(receipt.commit_global_tick().is_some()); + let result = receipt + .committed_application_result() + .expect("typed result") + .canonical_bytes() + .to_vec(); + assert_eq!( + decode_canonical_cbor_v1(&result).expect("result CBOR"), + decode_canonical_cbor_v1( + &encode_canonical_cbor_v1(&map(&[ + ("key", Value::Text(KEY.into())), + ("message", Value::Text("updated".into())) + ])) + .expect("expected result") + ) + .expect("expected CBOR") + ); + let receipt_digest = receipt.digest(); + let commit_id = receipt.commit_id(); + drop(pending); + + let mut recovered = Fixture::new(true); + recovered.enable_wal(&dir); + assert_eq!(recovered.value(), b"updated"); + assert_eq!( + recovered + .host + .runtime() + .pending_witnessed_submission_count(), + 0 + ); + let Some(EchoOperationActionOutcomeV1::Committed(receipt)) = + recovered.host.echo_operation_action_outcome_v1(&submission) + else { + panic!("committed outcome recovers") + }; + assert_eq!(receipt.digest(), receipt_digest); + assert_eq!(receipt.commit_id(), commit_id); + assert_eq!( + receipt + .committed_application_result() + .expect("recovered typed result") + .canonical_bytes(), + result + ); + // Keep the causal/application basis fresh, but the expected value stale. + // This must reach CAS evaluation rather than fail an unrelated basis check. + let stale = recovered.invocation( + b"updated", + initial_digest(), + initial_digest(), + "should not write", + ); + recovered + .host + .admit_echo_operation_invocation_v1(&policy(), &stale) + .expect("stale precondition passes static admission"); + recovered + .host + .install_echo_operation_action_admission_policy_v1(policy()); + let envelope = echo_operation_action_envelope_v1( + IngressTarget::ExactHead { + key: recovered.head, + }, + stale, + ) + .expect("stale envelope"); + let stale_submission = recovered + .host + .app() + .submit_intent_with_runtime_wal_ack(envelope) + .expect("accept stale Action") + .submission_id; + let steps = recovered.host.tick_once().expect("decide stale Action"); + assert_eq!(steps.len(), 1); + assert_eq!(steps[0].admitted_count, 1); + let Some(EchoOperationActionOutcomeV1::Obstructed(obstruction)) = recovered + .host + .echo_operation_action_outcome_v1(&stale_submission) + else { + panic!("stale CAS must obstruct") + }; + assert_eq!( + obstruction.kind(), + EchoOperationObstructionKindV1::PreconditionMismatch + ); + assert_eq!(recovered.value(), b"updated"); + drop(recovered); + let mut recovered_again = Fixture::new(true); + recovered_again.enable_wal(&dir); + assert_eq!(recovered_again.value(), b"updated"); + let Some(EchoOperationActionOutcomeV1::Obstructed(obstruction)) = recovered_again + .host + .echo_operation_action_outcome_v1(&stale_submission) + else { + panic!("obstruction recovers") + }; + assert_eq!( + obstruction.kind(), + EchoOperationObstructionKindV1::PreconditionMismatch + ); +} + +#[test] +fn compiler_cas_refuses_substituted_digest_and_missing_node_without_mutation() { + let mut fixture = Fixture::new(true); + fixture.install(); + let substituted = fixture.invocation(INITIAL, initial_digest(), [99; 32], "updated"); + assert_eq!( + fixture + .host + .admit_echo_operation_invocation_v1(&policy(), &substituted) + .expect_err("substituted digest refused") + .kind(), + EchoOperationInvocationAdmissionErrorKindV1::ApplicationInputMismatch + ); + assert_eq!(fixture.value(), INITIAL); + let wrong_basis = + fixture.invocation(b"different", initial_digest(), initial_digest(), "updated"); + assert_eq!( + fixture + .host + .admit_echo_operation_invocation_v1(&policy(), &wrong_basis) + .expect_err("uncorroborated application basis refused") + .kind(), + EchoOperationInvocationAdmissionErrorKindV1::BasisMismatch + ); + let valid = fixture.invocation(INITIAL, initial_digest(), initial_digest(), "updated"); + let other_grant = EchoOperationInvocationAdmissionPolicyV1::new( + profile("cas.echo.authority.local-demo/v1"), + [74; 32], + budget(), + ); + assert_eq!( + fixture + .host + .admit_echo_operation_invocation_v1(&other_grant, &valid) + .expect_err("ungranted authority refused") + .kind(), + EchoOperationInvocationAdmissionErrorKindV1::AuthorityGrantMismatch + ); + assert_eq!(fixture.value(), INITIAL); + let mut missing = Fixture::new(false); + missing.install(); + let invocation = missing.invocation(INITIAL, initial_digest(), initial_digest(), "updated"); + assert_eq!( + missing + .host + .admit_echo_operation_invocation_v1(&policy(), &invocation) + .expect_err("missing node refused") + .kind(), + EchoOperationInvocationAdmissionErrorKindV1::BasisMismatch + ); + assert!(missing + .host + .runtime() + .worldlines() + .get(&missing.head.worldline_id) + .expect("worldline") + .state() + .store(&missing.node.warp_id) + .expect("store") + .node(&missing.node.local_id) + .is_none()); +} + +#[test] +fn compiler_cas_obstructs_oversized_replacement_without_mutation() { + let mut fixture = Fixture::new(true); + fixture.install(); + fixture + .host + .install_echo_operation_action_admission_policy_v1(policy()); + let invocation = fixture.invocation( + INITIAL, + initial_digest(), + initial_digest(), + &"x".repeat(257), + ); + let envelope = echo_operation_action_envelope_v1( + IngressTarget::ExactHead { key: fixture.head }, + invocation, + ) + .expect("envelope"); + let submission = fixture + .host + .app() + .submit_intent(envelope) + .expect("accept Action") + .submission_id; + let steps = fixture + .host + .tick_once() + .expect("decide oversized replacement"); + assert_eq!(steps.len(), 1); + let Some(EchoOperationActionOutcomeV1::Obstructed(obstruction)) = + fixture.host.echo_operation_action_outcome_v1(&submission) + else { + panic!("oversized replacement obstructs") + }; + assert_eq!( + obstruction.kind(), + EchoOperationObstructionKindV1::ReplacementTooLarge + ); + assert_eq!(fixture.value(), INITIAL); +} + +#[test] +fn compiler_cas_accepts_replacement_at_exact_declared_bound() { + let mut fixture = Fixture::new(true); + fixture.install(); + fixture + .host + .install_echo_operation_action_admission_policy_v1(policy()); + let replacement = "x".repeat(256); + let invocation = fixture.invocation(INITIAL, initial_digest(), initial_digest(), &replacement); + let envelope = echo_operation_action_envelope_v1( + IngressTarget::ExactHead { key: fixture.head }, + invocation, + ) + .expect("bounded envelope"); + let submission = fixture + .host + .app() + .submit_intent(envelope) + .expect("accept boundary Action") + .submission_id; + let steps = fixture.host.tick_once().expect("execute boundary Action"); + assert_eq!(steps.len(), 1); + assert!(matches!( + fixture.host.echo_operation_action_outcome_v1(&submission), + Some(EchoOperationActionOutcomeV1::Committed(_)) + )); + assert_eq!(fixture.value(), replacement.as_bytes()); +} diff --git a/docs/architecture/application-contract-hosting.md b/docs/architecture/application-contract-hosting.md index 1bf5f70d3..953ec326c 100644 --- a/docs/architecture/application-contract-hosting.md +++ b/docs/architecture/application-contract-hosting.md @@ -180,8 +180,16 @@ rejects a substituted digest path. Native refusal witnesses use synthetic semant and reproducible checked components also admit a real public Edict compiler build; its exact source, executable package and accepted report are retained under `crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/`. -CAS scheduler execution and recovery of that compiler-produced package remain -unverified; successful package production is not execution evidence. +`crates/warp-core/tests/edict_projected_cas_tests.rs` exercises those exact package +bytes through durable Action intake, pending-Action recovery, scheduler-owned +update, and fresh-host recovery of the committed value and typed result. A fresh +causal basis with a stale expected digest produces `PreconditionMismatch`; that +noncommitted outcome also survives recovery without changing the target value. +Separate witnesses refuse substituted input digests, missing target nodes and +oversized replacements. The target is detached, so these checks inspect its typed +atom and receipt rather than treating an unchanged reachable-state root as proof +of no write. The public CLI runner still selects the create-if-absent profile; +this CAS lifecycle witness uses the trusted host and Action APIs directly. The generic operation runner distinguishes missing Action outcomes, typed obstructions, and footprint conflicts in its error messages. Both the first Action and unexpected duplicate outcomes use bounded summaries and omit invocation data. Opted-in Rust backtraces remain separate diagnostic output. This diagnostic boundary does not change retained obstruction encoding. From 4894eb4b6728193b8980095e9d269fde067d0e9f Mon Sep 17 00:00:00 2001 From: James Ross Date: Thu, 8 Oct 2026 00:34:31 -0700 Subject: [PATCH 05/13] Verify compare-and-set projection refusal and refresh evidence links --- README.md | 6 +++ .../fixtures/compiler-produced-cas/README.md | 7 ++- .../tests/edict_projected_cas_tests.rs | 51 +++++++++++++++++++ 3 files changed, 62 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 87a61d38f..1864732f6 100644 --- a/README.md +++ b/README.md @@ -288,6 +288,12 @@ result bytes, and domain-separated result identity. A second fresh host must recover byte-identical result evidence from the decided-Tick WAL; Echo does not invoke a native application callback or reconstruct the result from target state. +An Edict-authored compare-and-set operation also produces an independently +accepted package. The [compiler-output integration tests](crates/warp-core/tests/edict_projected_cas_tests.rs) +exercise that exact package through scheduler updates, stale-digest obstructions, +and fresh-host pending/completed Action recovery. This path uses the trusted-host +Action API; the CLI runner above still selects create-if-absent. + Canonical projected invocation input is capped at 65,536 bytes, and the compiler-declared maximum result size is capped at 65,536 before private scheduler evaluation. Produced canonical result bytes are measured against that diff --git a/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/README.md b/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/README.md index 09f2964ef..4ec2b6058 100644 --- a/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/README.md +++ b/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/README.md @@ -17,5 +17,8 @@ The retained build used the pinned Edict compiler from source commit `3b082d61c8cd23b0f917efb55c4eebd54e75c0df5d31c72f90ad856853678bf5`. `built/` preserves the authored source with its exact digest, the public compiler's successful status, and exact package/report bytes as lowercase hex. The report -accepts this package. This proves compiler/provider production, not runtime -execution or WAL recovery; those witnesses remain pending. +accepts this package. This fixture proves compiler/provider production. +`crates/warp-core/tests/edict_projected_cas_tests.rs` uses these exact bytes for +separate scheduler and fresh-host WAL recovery witnesses, including pending +Actions, committed results and stale-digest obstructions. It checks typed target +bytes directly because the fixture target is detached from the reachable root. diff --git a/crates/warp-core/tests/edict_projected_cas_tests.rs b/crates/warp-core/tests/edict_projected_cas_tests.rs index d08bcd1a6..2ae50ff4f 100644 --- a/crates/warp-core/tests/edict_projected_cas_tests.rs +++ b/crates/warp-core/tests/edict_projected_cas_tests.rs @@ -570,3 +570,54 @@ fn compiler_cas_accepts_replacement_at_exact_declared_bound() { )); assert_eq!(fixture.value(), replacement.as_bytes()); } + +#[test] +fn compiler_cas_refuses_aliased_projection_before_installation() { + let fixture = Fixture::new(true); + let Value::Map(mut fields) = decode_canonical_cbor_v1(&package()).expect("compiler package") + else { + panic!("package map") + }; + let (_, Value::Map(projection)) = fields + .iter_mut() + .find(|(key, _)| key == &Value::Text("application_result_projection".into())) + .expect("projection") + else { + panic!("projection map") + }; + let (_, expected) = projection + .iter_mut() + .find(|(key, _)| key == &Value::Text("application_input_expected_value_digest_path".into())) + .expect("digest binding"); + *expected = Value::Array(vec![Value::Text("key".into())]); + let bytes = encode_canonical_cbor_v1(&Value::Map(fields)).expect("mutated package"); + let id = echo_operation_package_id_v1(&bytes); + // Pin the mutated identity so refusal proves structural validation, not + // merely a mismatch against the original package's hash. + let error = fixture + .host + .admit_echo_operation_package_v1( + &EchoOperationAdmissionPolicyV1::exact( + id, + OPERATION, + profile("cas.echo.authority.local-demo/v1"), + budget(), + ), + bytes, + ) + .expect_err("aliased projection refused"); + assert_eq!( + error.kind(), + warp_core::EchoOperationAdmissionErrorKindV1::ArtifactInvalid + ); + assert_eq!( + error.artifact().expect("artifact error").kind(), + warp_core::EchoOperationArtifactErrorKindV1::InvalidStructure + ); + assert!(fixture + .host + .engine() + .installed_echo_operation_package_v1(id) + .is_none()); + assert_eq!(fixture.value(), INITIAL); +} From 647a55692ade74e0eeddb3907dc713f2b47b56cd Mon Sep 17 00:00:00 2001 From: James Ross Date: Thu, 8 Oct 2026 00:50:07 -0700 Subject: [PATCH 06/13] Document deterministic-history boundary for compare-and-set WAL fixtures --- .ban-nondeterminism-allowlist | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.ban-nondeterminism-allowlist b/.ban-nondeterminism-allowlist index 7683628c9..8406656ac 100644 --- a/.ban-nondeterminism-allowlist +++ b/.ban-nondeterminism-allowlist @@ -28,6 +28,9 @@ std-fs crates/warp-core/tests/bounded_workspace_patch_tests.rs bounded-patch fil std-process crates/warp-core/tests/bounded_workspace_patch_tests.rs bounded-patch filesystem fixture temp directory disambiguation only. std-fs crates/warp-core/tests/external_consumer_contract_fixture_tests.rs installed-contract restart WAL fixture I/O only. std-fs crates/warp-core/tests/executable_operation_pipeline_tests.rs executable-operation restart WAL fixture I/O only. +std-env crates/warp-core/tests/edict_projected_cas_tests.rs compare-and-set WAL fixture temp directory selection only; no environment value enters semantic history. +std-fs crates/warp-core/tests/edict_projected_cas_tests.rs compare-and-set WAL fixture owned directory creation and cleanup only. +std-process crates/warp-core/tests/edict_projected_cas_tests.rs compare-and-set WAL fixture temp directory disambiguation only; process identity never enters operation bytes. std-fs crates/warp-core/tests/provider_contract_admission_tests.rs provider invocation restart WAL fixture I/O only. std-fs crates/warp-core/tests/trusted_runtime_host_loop_tests.rs trusted runtime filesystem WAL fixture I/O only. std-env crates/warp-core/tests/wsc_store_tests.rs WSC filesystem fixture temp directory selection only. From 7273a409a9ad2247d2e02094649a35f8df0496a6 Mon Sep 17 00:00:00 2001 From: James Ross Date: Thu, 8 Oct 2026 00:54:07 -0700 Subject: [PATCH 07/13] Retain real compiler counterexample for transformed effect arguments --- .../transformed-replacement/README.md | 26 +++++++++++++++++++ .../executable-operation-package.cbor.hex | 1 + .../transformed-replacement/update-cell.edict | 18 +++++++++++++ .../verification-report.cbor.hex | 1 + 4 files changed, 46 insertions(+) create mode 100644 crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/counterexamples/transformed-replacement/README.md create mode 100644 crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/counterexamples/transformed-replacement/executable-operation-package.cbor.hex create mode 100644 crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/counterexamples/transformed-replacement/update-cell.edict create mode 100644 crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/counterexamples/transformed-replacement/verification-report.cbor.hex diff --git a/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/counterexamples/transformed-replacement/README.md b/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/counterexamples/transformed-replacement/README.md new file mode 100644 index 000000000..d8a976613 --- /dev/null +++ b/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/counterexamples/transformed-replacement/README.md @@ -0,0 +1,26 @@ +# Authored replacement ignored by the accepted package + +This is retained failing evidence for the blocking argument-binding finding on +[PR 776](https://github.com/flyingrobots/echo/pull/776#issuecomment-6055363576), +not an accepted language/runtime contract or a positive golden fixture. + +The source calls the imported effect with `message: "forced"`, while its returned +record independently uses `input.message`. The pinned public compiler documented +in the parent fixture accepted this source using the provider components at +`7bda832c15960e6ddd54e0d6c1fa91a079b9b20f`. The exact emitted executable package +and accepted verification report are preserved here as lowercase hex. + +The emitted mutation binding is `application_input_replacement_path = ["message"]`. +That selects the caller's field rather than the authored effect argument. The +observed failure is successful production/verification of this mismatched +binding. Execution of this counterexample package has not been performed. + +To reproduce, run the parent fixture's `build.py` in the guarded worker with the +pinned compiler and candidate provider, then replace its generated +`update-cell.edict` with this source and submit the same public JSONL application +build again. The parent lawpack/configuration bytes and digest are unchanged. +The correct result must preserve the authored effect argument or return an +explicit unsupported-semantics refusal. The original direct-input source remains +the positive control. Add the executable refusal/correctness regression before +implementing the provider fix; do not turn the retained acceptance into a golden +expectation. diff --git a/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/counterexamples/transformed-replacement/executable-operation-package.cbor.hex b/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/counterexamples/transformed-replacement/executable-operation-package.cbor.hex new file mode 100644 index 000000000..a48252ed7 --- /dev/null +++ b/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/counterexamples/transformed-replacement/executable-operation-package.cbor.hex @@ -0,0 +1 @@ +b366736368656d6178196563686f2e6f7065726174696f6e2d7061636b6167652f76316770726f6772616d59015da7646b696e64782b616e63686f7265642d6e6f64652d6174746163686d656e742d636f6d706172652d616e642d7365742f763166736368656d6178196563686f2e6f7065726174696f6e2d70726f6772616d2f76317272657175697265645f6e6f64655f747970655820f2f3958c741aaab3ed53fad32957d312f08e456139e9d1b2517b9859af0e7dea756d61785f7265706c6163656d656e745f6279746573190100781872657175697265645f6174746163686d656e745f7479706558203e0816f30d503b656d0550364a893a2ee7128287dcd6bdffd49c96149cd8fc6e781a696e7472696e7369635f70726f66696c655f6964656e746974795820dcc797883efcfd39231a4cee8b2574f5dee46a72be884e5a006f5cddfbfa4c1b781c696e7465727072657465725f70726f66696c655f6964656e746974795820415105a805a80d5e1de76c6eee9b3a9a9a17fec80f7f8f7ab6ef2026c0dd0dec6e6275646765745f6365696c696e67a3657374657073106a726561645f62797465731904006b77726974655f62797465731901407073656d616e7469635f636c6f73757265a86d636f72655f6964656e746974795820345543a34adf8ded70b323f47ba470ff25720104e929ac95d91df8737fbe4fba706c61777061636b5f6964656e746974795820c5e61ed6aae005531a642287d00ed8bff56754ffec50fe0a2a419f9bc0cb28f9726c61777061636b5f636f6f7264696e6174656a6361732e6563686f4031727461726765745f69725f6964656e746974795820f76704b6c9c3ecb8634f42143b6aa2fa6e2e009c692f1b3e378b1cab8d9a2bf97565646963745f736f757263655f6964656e7469747958209a38bbdf715736e9033b70da41ef0274c57be1456054e345f946b11dfbc296d4781a63616e6f6e6963616c5f6d65616e696e675f6964656e746974795820345543a34adf8ded70b323f47ba470ff25720104e929ac95d91df8737fbe4fba781b6170706c69636174696f6e5f736368656d615f6964656e7469747958204fb7a2e90eaa9631a196329f37aded975b0ff5a8d4b67bb663cc2ce05808a017781d6170706c69636174696f6e5f736368656d615f636f6f7264696e617465736361732e6563686f2e6578706f7274732f7631746f7065726174696f6e5f636f6f7264696e617465781e6578616d706c65732e6361735f6563686f40312e75706461746543656c6c75696e7075745f736368656d615f6964656e7469747958202bc24c4c2899025a8f546ebcc5e9d92021a663d99ae5627137b7ad670936f966766f62737472756374696f6e5f636f6f7264696e61746578186361732e6563686f40312e5374616c65457870656374656476726573756c745f736368656d615f6964656e746974795820bd5045b1b0a667a9504aaedf73ff4857c96f4c85cadc611e0183a70ef3a06100777461726765745f70726f66696c655f6964656e7469747958203539cc6cf3b869e324d67b6ed688ea418f5518d34ef4c8d5b55e44981b8cec5c781a617574686f726974795f70726f66696c655f6964656e746974795820cf680697b82373550f58688a4eaaf3f63b268c8d616fd52f35dc76aeafba74ba781a696e7472696e7369635f70726f66696c655f6964656e746974795820dcc797883efcfd39231a4cee8b2574f5dee46a72be884e5a006f5cddfbfa4c1b781b666f6f747072696e745f636f6e74726163745f6964656e7469747958204841286db863695ecda9bebaa6d613b408d2201aee6d7e0feb8f5a1ce7b94b86781b6f62737472756374696f6e5f736368656d615f6964656e746974795820479fa916a43aefaa2b21a3411cfa0da3683c4e6edba43ed40b1f701be2564f49781c696e7465727072657465725f70726f66696c655f6964656e746974795820415105a805a80d5e1de76c6eee9b3a9a9a17fec80f7f8f7ab6ef2026c0dd0dec781d6170706c69636174696f6e5f726573756c745f70726f6a656374696f6ea66e61727469666163745f6279746573590149a566736368656d61781a65646963742e726573756c742d70726f6a656374696f6e2f76316a65787072657373696f6ea2646b696e64667265636f7264666669656c6473a2636b6579a3646b696e6466736f75726365647061746881636b657966736f75726365a2646b696e64706361706162696c697479526573756c74667374657049647175706461746543656c6c2e737465702e30676d657373616765a3646b696e6466736f75726365647061746881676d65737361676566736f75726365a1646b696e64706170706c69636174696f6e496e7075746a6f757470757454797065781f6578616d706c65732e6361735f6563686f40312e5570646174656443656c6c6e6d61784f75747075744279746573190200736f7065726174696f6e436f6f7264696e617465781e6578616d706c65732e6361735f6563686f40312e75706461746543656c6c7161727469666163745f6964656e746974795820f18f9a3d65491af531a6b8c4b84fd945daa5bcacb5df854874eec06fc606de7e7272756e74696d655f65787072657373696f6ea2646b696e64667265636f7264666669656c6473a2636b6579a3646b696e6466736f75726365647061746881636b657966736f75726365a1646b696e64706170706c69636174696f6e496e707574676d657373616765a3646b696e6466736f75726365647061746881676d65737361676566736f75726365a1646b696e64706170706c69636174696f6e496e707574781f6170706c69636174696f6e5f696e7075745f6e6f64655f6b65795f7061746881636b657978226170706c69636174696f6e5f696e7075745f7265706c6163656d656e745f7061746881676d657373616765782c6170706c69636174696f6e5f696e7075745f65787065637465645f76616c75655f6469676573745f7061746881686578706563746564781e726573756c745f696e746572707265746174696f6e5f6964656e74697479582063cb5cd4efb6bb4056de3736bc79a2f5acca11f5c4b068c147f88fa55ccb6b5278206576616c756174696f6e5f62617369735f736368656d615f6964656e74697479582020b6239db569aa86ae1c27596b374df90caa5ea41e8e005fd4fe00bfe5c3b38178216170706c69636174696f6e5f62617369735f736368656d615f6964656e746974795820464e830e037906c22daff080e9a478ad058f7c80150cfee3dad91ae4f8ca479f78236f62737472756374696f6e5f696e746572707265746174696f6e5f6964656e7469747958206c5158111419d8368d00b47264dda2bc8ec22f34b8b67f56c7dd5680ed3de6d7 diff --git a/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/counterexamples/transformed-replacement/update-cell.edict b/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/counterexamples/transformed-replacement/update-cell.edict new file mode 100644 index 000000000..bb364330b --- /dev/null +++ b/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/counterexamples/transformed-replacement/update-cell.edict @@ -0,0 +1,18 @@ +package examples.cas_echo@1; + +use lawpack cas.echo@1 digest "sha256:c5e61ed6aae005531a642287d00ed8bff56754ffec50fe0a2a419f9bc0cb28f9" as cell; + +type UpdatedCell = { + key: String, + message: String, +}; + +intent updateCell(input: cell.CompareAndSetInput) returns UpdatedCell + profile cell.compareAndSet + basis input.basis + budget <= cell.smallUpdateBudget +{ + let receipt: cell.UpdateReceipt = cell.compareAndSet({basis: input.basis, key: input.key, expected: input.expected, message: "forced"}) + else { staleExpected(existing) => cell.StaleExpected }; + return { key: receipt.key, message: input.message }; +} diff --git a/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/counterexamples/transformed-replacement/verification-report.cbor.hex b/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/counterexamples/transformed-replacement/verification-report.cbor.hex new file mode 100644 index 000000000..ab4cde0f2 --- /dev/null +++ b/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/counterexamples/transformed-replacement/verification-report.cbor.hex @@ -0,0 +1 @@ +a8676f7574636f6d65686163636570746564677061636b616765a2626964782165786563757461626c652d6f7065726174696f6e2d7061636b6167652e6563686f6664696765737482667368613235365820a64ce33a8dec08d87040f507144f0dd9b7963d78d877713965658bcd09838f4f687461726765744972a26269646f6563686f2e7370616e2d69722f76316664696765737482667368613235365820f76704b6c9c3ecb8634f42143b6aa2fa6e2e009c692f1b3e378b1cab8d9a2bf96a61706956657273696f6e78296563686f2e6f7065726174696f6e2d7061636b6167652d76657269666965722d7265706f72742f76316d646961676e6f73746963416269a26269647465646963742e646961676e6f73746963732f7631666469676573748266736861323536582028fd72a98223153982ca084c29dbb1b2d430623967ab3b6db9d7fee668e614b96f646961676e6f737469634279746573407165786563757461626c655375626a656374a2656279746573590148a4677061636b616765a2626964782165786563757461626c652d6f7065726174696f6e2d7061636b6167652e6563686f6664696765737482667368613235365820a64ce33a8dec08d87040f507144f0dd9b7963d78d877713965658bcd09838f4f687461726765744972a26269646f6563686f2e7370616e2d69722f76316664696765737482667368613235365820f76704b6c9c3ecb8634f42143b6aa2fa6e2e009c692f1b3e378b1cab8d9a2bf96a61706956657273696f6e781a6563686f2e65786563757461626c652d7375626a6563742f7631781b6170706c69636174696f6e526573756c7450726f6a656374696f6ea2626964781e6578616d706c65732e6361735f6563686f40312e75706461746543656c6c6664696765737482667368613235365820f18f9a3d65491af531a6b8c4b84fd945daa5bcacb5df854874eec06fc606de7e697265666572656e6365a2626964781a6563686f2e65786563757461626c652d7375626a6563742f76316664696765737482667368613235365820f78f42dde3b566957358a82f1d07299487faef32e4d936f17e7370a39744238b781b6170706c69636174696f6e526573756c7450726f6a656374696f6ea2626964781e6578616d706c65732e6361735f6563686f40312e75706461746543656c6c6664696765737482667368613235365820f18f9a3d65491af531a6b8c4b84fd945daa5bcacb5df854874eec06fc606de7e From f25c39d4bf195ee414c382b6a97ca73e1c16d77c Mon Sep 17 00:00:00 2001 From: James Ross Date: Thu, 8 Oct 2026 01:18:56 -0700 Subject: [PATCH 08/13] Refuse transformed effect arguments in bounded mutation providers --- CHANGELOG.md | 2 + .../src/executable_operation.rs | 49 +++++ .../tests/executable_operation_package.rs | 88 +++++--- .../src/executable_operation.rs | 49 +++++ .../tests/executable_operation_package.rs | 188 +++++++++++++++--- .../fixtures/compiler-produced-cas/README.md | 27 +++ .../fixtures/compiler-produced-cas/build.py | 17 +- .../transformed-replacement/README.md | 24 ++- .../lowerer.echo-dpo.component.wasm | Bin 459407 -> 461184 bytes .../verifier.echo-dpo.component.wasm | Bin 471993 -> 473642 bytes .../package/v1/provider-manifest.echo.json | 10 +- .../echo-wesley-gen/tests/provider_package.rs | 2 +- .../tests/provider_package_corpus.rs | 4 +- .../application-contract-hosting.md | 11 + .../v1/lowerer.echo-dpo.component.wasm | Bin 459407 -> 461184 bytes .../v1/verifier.echo-dpo.component.wasm | Bin 471993 -> 473642 bytes .../lowerer.echo-dpo.component.wasm | Bin 459407 -> 461184 bytes .../verifier.echo-dpo.component.wasm | Bin 471993 -> 473642 bytes .../package/v1/provider-manifest.echo.json | 10 +- xtask/src/provider_lowerer_component.rs | 4 +- 20 files changed, 402 insertions(+), 83 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 578514ddc..ea9e9edd1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,8 @@ ### Fixed +- Both executable mutation providers refuse transformed effect arguments instead of silently projecting the caller input into a different mutation. Direct application-input arguments remain supported; the independent verifier enforces the same boundary. + - Observation slots preflight their canonical byte bound and charge execution reads before copying Atom payloads. - Private Edict runtime decoding resolves named integer types through their declared width, matching source-function provider acceptance. diff --git a/crates/echo-edict-provider-lowerer/src/executable_operation.rs b/crates/echo-edict-provider-lowerer/src/executable_operation.rs index 8d5bc55bd..6e6cd7a02 100644 --- a/crates/echo-edict-provider-lowerer/src/executable_operation.rs +++ b/crates/echo-edict-provider-lowerer/src/executable_operation.rs @@ -941,6 +941,7 @@ fn validate_core<'a>( if text_field(node, "kind") != Some("effect") { return Err(super::unsupported_semantics(coordinate)); } + validate_application_argument(intent, body, node, coordinate)?; let effect_coordinate = required_text(node, "effect", coordinate)?; let (failure_name, obstruction_arm) = single_text_map_entry(required_map(node, "obstructionMap", coordinate)?) @@ -960,6 +961,54 @@ fn validate_core<'a>( }) } +fn validate_application_argument( + intent: &CanonicalValueV1, + body: &CanonicalValueV1, + effect: &CanonicalValueV1, + subject: &str, +) -> Result<(), ProviderRefusalV1> { + // This program binds invocation fields directly to application input. It + // cannot evaluate a transformed effect argument; accepting one would bind + // a different mutation than the authored program describes. + let input_type = required_nonempty_text(intent, "input", subject)?; + let argument = required_map(effect, "input", subject)?; + if text_field(argument, "kind") != Some("local") { + return Err(super::unsupported_semantics( + "core.echo-operation.effect-input", + )); + } + require_exact_fields(argument, &["kind", "ref"], subject)?; + let reference = required_map(argument, "ref", subject)?; + require_exact_fields(reference, &["id", "alphaName", "type"], subject)?; + if text_field(reference, "id") != Some("arg.0") + || text_field(reference, "type") != Some(input_type) + { + return Err(super::unsupported_semantics( + "core.echo-operation.effect-input", + )); + } + let alpha_name = required_nonempty_text(reference, "alphaName", subject)?; + let locals = required_array(body, "locals", subject)?; + let mut inputs = locals + .iter() + .filter(|local| text_field(local, "id") == Some("arg.0")); + let Some(input) = inputs.next() else { + return Err(super::unsupported_semantics( + "core.echo-operation.input-local", + )); + }; + if inputs.next().is_some() + || text_field(input, "type") != Some(input_type) + || text_field(input, "alphaName") != Some(alpha_name) + { + return Err(super::unsupported_semantics( + "core.echo-operation.input-local", + )); + } + require_exact_fields(input, &["id", "alphaName", "type"], subject)?; + Ok(()) +} + fn validate_source<'a>( value: &'a CanonicalValueV1, source: &SemanticInput, diff --git a/crates/echo-edict-provider-lowerer/tests/executable_operation_package.rs b/crates/echo-edict-provider-lowerer/tests/executable_operation_package.rs index 2a42f5245..77d72870d 100644 --- a/crates/echo-edict-provider-lowerer/tests/executable_operation_package.rs +++ b/crates/echo-edict-provider-lowerer/tests/executable_operation_package.rs @@ -755,37 +755,69 @@ fn core(names: FixtureNames<'_>) -> CanonicalValueV1 { ), ( "body", - owned_map([( - "nodes", - CanonicalValueV1::Array(vec![owned_map([ - ("kind", text("effect")), - ( - "effect", - text(format!("{}.{}", names.alias, names.effect_member)), - ), - ( - "obstructionMap", - dynamic_map([( - names.failure, - owned_map([( - "value", + owned_map([ + ( + "locals", + CanonicalValueV1::Array(vec![owned_map([ + ("id", text("arg.0")), + ("alphaName", text("input")), + ("type", text(format!("{}.Input", names.application))), + ])]), + ), + ( + "nodes", + CanonicalValueV1::Array(vec![owned_map([ + ("kind", text("effect")), + ( + "input", + owned_map([ + ("kind", text("local")), + ( + "ref", + owned_map([ + ("id", text("arg.0")), + ("alphaName", text("input")), + ( + "type", + text(format!( + "{}.Input", + names.application + )), + ), + ]), + ), + ]), + ), + ( + "effect", + text(format!("{}.{}", names.alias, names.effect_member)), + ), + ( + "obstructionMap", + dynamic_map([( + names.failure, owned_map([( - "callee", - text(format!( - "{}.{}", - names.alias, - names - .obstruction - .rsplit_once('.') - .expect("fixture obstruction has a member",) - .1 - )), + "value", + owned_map([( + "callee", + text(format!( + "{}.{}", + names.alias, + names + .obstruction + .rsplit_once('.') + .expect( + "fixture obstruction has a member", + ) + .1 + )), + )]), )]), )]), - )]), - ), - ])]), - )]), + ), + ])]), + ), + ]), ), ]), )]), diff --git a/crates/echo-edict-provider-verifier/src/executable_operation.rs b/crates/echo-edict-provider-verifier/src/executable_operation.rs index f5361c6ee..6a6c95c0d 100644 --- a/crates/echo-edict-provider-verifier/src/executable_operation.rs +++ b/crates/echo-edict-provider-verifier/src/executable_operation.rs @@ -984,6 +984,7 @@ fn validate_core<'a>( if text_field(node, "kind") != Some("effect") { return Err(super::unsupported_semantics(coordinate)); } + validate_application_argument(intent, body, node, coordinate)?; let effect_coordinate = required_text(node, "effect", coordinate)?; let (failure_name, obstruction_arm) = single_text_map_entry(required_map(node, "obstructionMap", coordinate)?) @@ -1003,6 +1004,54 @@ fn validate_core<'a>( }) } +fn validate_application_argument( + intent: &CanonicalValueV1, + body: &CanonicalValueV1, + effect: &CanonicalValueV1, + subject: &str, +) -> Result<(), ProviderRefusalV1> { + // This program binds invocation fields directly to application input. It + // cannot evaluate a transformed effect argument; accepting one would bind + // a different mutation than the authored program describes. + let input_type = required_nonempty_text(intent, "input", subject)?; + let argument = required_map(effect, "input", subject)?; + if text_field(argument, "kind") != Some("local") { + return Err(super::unsupported_semantics( + "core.echo-operation.effect-input", + )); + } + require_exact_fields(argument, &["kind", "ref"], subject)?; + let reference = required_map(argument, "ref", subject)?; + require_exact_fields(reference, &["id", "alphaName", "type"], subject)?; + if text_field(reference, "id") != Some("arg.0") + || text_field(reference, "type") != Some(input_type) + { + return Err(super::unsupported_semantics( + "core.echo-operation.effect-input", + )); + } + let alpha_name = required_nonempty_text(reference, "alphaName", subject)?; + let locals = required_array(body, "locals", subject)?; + let mut inputs = locals + .iter() + .filter(|local| text_field(local, "id") == Some("arg.0")); + let Some(input) = inputs.next() else { + return Err(super::unsupported_semantics( + "core.echo-operation.input-local", + )); + }; + if inputs.next().is_some() + || text_field(input, "type") != Some(input_type) + || text_field(input, "alphaName") != Some(alpha_name) + { + return Err(super::unsupported_semantics( + "core.echo-operation.input-local", + )); + } + require_exact_fields(input, &["id", "alphaName", "type"], subject)?; + Ok(()) +} + fn validate_source<'a>( value: &'a CanonicalValueV1, source: &SemanticInput, diff --git a/crates/echo-edict-provider-verifier/tests/executable_operation_package.rs b/crates/echo-edict-provider-verifier/tests/executable_operation_package.rs index 9af1fdd6e..b7f96d712 100644 --- a/crates/echo-edict-provider-verifier/tests/executable_operation_package.rs +++ b/crates/echo-edict-provider-verifier/tests/executable_operation_package.rs @@ -97,6 +97,92 @@ struct RawFixture { result_projection: Vec, } +#[test] +fn providers_refuse_effect_inputs_not_equal_to_the_declared_application_argument() { + let names = FIXTURES[0]; + for cas in [false, true] { + let mut config = configuration(names); + if cas { + *map_field_mut(&mut config, "programKind") = + text("anchored-node-attachment-compare-and-set/v1"); + let CanonicalValueV1::Map(fields) = map_field_mut(&mut config, "invocationBinding") + else { + panic!("binding map") + }; + fields.push((text("expectedValueDigestField"), text("expected"))); + } + let valid = raw_fixture_with_values(names, config.clone(), result_projection(names)); + let package = lower_package(names, &valid); + let accepted = verifier::verify(verification_request(names, &valid, package.clone())) + .expect("direct input verifies"); + let report = decode_canonical_cbor_v1(&accepted.outputs[0].artifact.bytes).expect("report"); + assert_eq!(text_field(&report, "outcome"), Some("accepted")); + for case in [ + "value", + "key", + "expected", + "local", + "type", + "missing-local", + "duplicate-local", + ] { + let fixture = raw_fixture_with_core_mutation( + names, + config.clone(), + result_projection(names), + |core| { + let intent = map_field_mut(map_field_mut(core, "intents"), names.intent); + let body = map_field_mut(intent, "body"); + if case == "missing-local" || case == "duplicate-local" { + let CanonicalValueV1::Array(locals) = map_field_mut(body, "locals") else { + panic!("locals") + }; + if case == "missing-local" { + locals.clear(); + } else { + locals.push(locals[0].clone()); + } + return; + } + let CanonicalValueV1::Array(nodes) = map_field_mut(body, "nodes") else { + panic!("nodes") + }; + let input = map_field_mut(&mut nodes[0], "input"); + if case == "local" { + *map_field_mut(map_field_mut(input, "ref"), "id") = text("local.99"); + } else if case == "type" { + *map_field_mut(map_field_mut(input, "ref"), "type") = text("other.Input"); + } else { + *input = map([ + ("kind", text("record")), + ( + "fields", + dynamic_map([( + case, + map([("kind", text("string")), ("value", text("forced"))]), + )]), + ), + ]); + } + }, + ); + let lower = lowerer::lower(lowering_request(names, &fixture)).expect_err(case); + assert_eq!( + lower.kind, + lowerer::ProviderRefusalKind::UnsupportedSemantics, + "cas={cas} case={case}" + ); + let verify = verifier::verify(verification_request(names, &fixture, package.clone())) + .expect_err(case); + assert_eq!( + verify.kind, + verifier::ProviderRefusalKind::UnsupportedSemantics, + "cas={cas} case={case}" + ); + } + } +} + #[test] fn cas_providers_refuse_missing_aliased_and_underbudget_digest_bindings() { let names = FIXTURES[0]; @@ -853,6 +939,15 @@ fn raw_fixture_with_values( names: FixtureNames<'_>, configuration_value: CanonicalValueV1, result_projection_value: CanonicalValueV1, +) -> RawFixture { + raw_fixture_with_core_mutation(names, configuration_value, result_projection_value, |_| {}) +} + +fn raw_fixture_with_core_mutation( + names: FixtureNames<'_>, + configuration_value: CanonicalValueV1, + result_projection_value: CanonicalValueV1, + mutate: impl FnOnce(&mut CanonicalValueV1), ) -> RawFixture { let is_cas = text_field(&configuration_value, "programKind") == Some("anchored-node-attachment-compare-and-set/v1"); @@ -884,7 +979,9 @@ fn raw_fixture_with_values( &target_profile_ref, )); let lawpack_ref = raw_ref(names.lawpack, "edict.lawpack/v1", &lawpack); - let core = canonical_bytes(&select_profile(core(names))); + let mut core_value = select_profile(core(names)); + mutate(&mut core_value); + let core = canonical_bytes(&core_value); let core_ref = raw_ref(names.application, "edict.core.module/v1", &core); let source = canonical_bytes(&CanonicalValueV1::Bytes( format!( @@ -942,43 +1039,76 @@ fn core(names: FixtureNames<'_>) -> CanonicalValueV1 { dynamic_map([( names.intent, map([ + ("input", text(format!("{}.Input", names.application))), ( "requiredOperationProfile", text("continuum.profile.create/v1"), ), ( "body", - map([( - "nodes", - CanonicalValueV1::Array(vec![map([ - ("kind", text("effect")), - ( - "effect", - text(format!("{}.{}", names.alias, names.effect_member)), - ), - ( - "obstructionMap", - dynamic_map([( - names.failure, - map([( - "value", + map([ + ( + "locals", + CanonicalValueV1::Array(vec![map([ + ("id", text("arg.0")), + ("alphaName", text("input")), + ("type", text(format!("{}.Input", names.application))), + ])]), + ), + ( + "nodes", + CanonicalValueV1::Array(vec![map([ + ("kind", text("effect")), + ( + "input", + map([ + ("kind", text("local")), + ( + "ref", + map([ + ("id", text("arg.0")), + ("alphaName", text("input")), + ( + "type", + text(format!( + "{}.Input", + names.application + )), + ), + ]), + ), + ]), + ), + ( + "effect", + text(format!("{}.{}", names.alias, names.effect_member)), + ), + ( + "obstructionMap", + dynamic_map([( + names.failure, map([( - "callee", - text(format!( - "{}.{}", - names.alias, - names - .obstruction - .rsplit_once('.') - .expect("fixture obstruction has a member",) - .1 - )), + "value", + map([( + "callee", + text(format!( + "{}.{}", + names.alias, + names + .obstruction + .rsplit_once('.') + .expect( + "fixture obstruction has a member", + ) + .1 + )), + )]), )]), )]), - )]), - ), - ])]), - )]), + ), + ])]), + ), + ]), ), ]), )]), diff --git a/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/README.md b/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/README.md index 4ec2b6058..5b9795c9d 100644 --- a/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/README.md +++ b/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/README.md @@ -22,3 +22,30 @@ accepts this package. This fixture proves compiler/provider production. separate scheduler and fresh-host WAL recovery witnesses, including pending Actions, committed results and stale-digest obstructions. It checks typed target bytes directly because the fixture target is detached from the reachable root. + +## Direct-input and transformed-argument controls + +Inside the guarded worker, from the repository root, run the positive control +with a fresh output directory: + +```sh +python3 crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/build.py \ + --compiler /tmp/echo-726-runtime/741-frozen-edict \ + --compiler-sha256 3b082d61c8cd23b0f917efb55c4eebd54e75c0df5d31c72f90ad856853678bf5 \ + --provider-package schemas/edict-provider/package/v1 \ + --output-directory /tmp/echo-726-runtime/cas-direct-input-control +``` + +For the negative control, use another fresh output directory and append: + +```sh + --source-template crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/counterexamples/transformed-replacement/update-cell.edict \ + --expect-refusal ProviderLowererRefused +``` + +The helper requires a nonzero compiler exit, the structured refusal in its JSONL +output, and no published CBOR artifacts. It reads diagnostics from both stdout +and stderr. The retained counterexample package/report are historical erroneous +outputs, not expected output for corrected components. Both mutation profiles +now require a direct reference to the declared application input; arbitrary +transformed arguments remain outside their supported semantics. diff --git a/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/build.py b/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/build.py index d6c69cc33..18021f1a2 100644 --- a/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/build.py +++ b/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/build.py @@ -47,6 +47,8 @@ def digest(domain,value):return hashlib.sha256(enc(['edict.digest/v1',domain,val parser.add_argument('--compiler-sha256',required=True) parser.add_argument('--provider-package',type=Path,required=True) parser.add_argument('--output-directory',type=Path,required=True) +parser.add_argument('--source-template',type=Path) +parser.add_argument('--expect-refusal',choices=['ProviderLowererRefused']) args=parser.parse_args() root=args.output_directory.resolve();root.mkdir(exist_ok=False) fixture=Path(__file__).resolve().parent @@ -81,7 +83,7 @@ def rewrite(value): for selection in manifest['targetAdapters']: ref=selection['adapter'];ref['digest']=['sha256',digest(ref['id'],adapter)] for name,value in [('echo-operation-configuration.cbor',config),('exports.cbor',exports),('adapter.cbor',adapter),('manifest.cbor',manifest)]: (root/name).write_bytes(enc(value)) -source=(fixture/'update-cell.edict.in').read_text().replace('LAWPACK_DIGEST',digest('edict.lawpack/v1',manifest).hex()) +source=(args.source_template or fixture/'update-cell.edict.in').read_text().replace('LAWPACK_DIGEST',digest('edict.lawpack/v1',manifest).hex()) assert 'LAWPACK_DIGEST' not in source (root/'update-cell.edict').write_text(source) shutil.copytree(args.provider_package.resolve(),root/'provider') @@ -92,5 +94,16 @@ def rewrite(value): assert len(result.stdout)+len(result.stderr)<128*1024 (root/'compiler.stdout.jsonl').write_text(result.stdout);(root/'compiler.stderr.txt').write_text(result.stderr) print(result.stdout,result.stderr,flush=True) -assert result.returncode==0,result.returncode +if args.expect_refusal: + events=[json.loads(line) for line in (result.stdout+'\n'+result.stderr).splitlines() if line.strip()] + def has_code(value): + if isinstance(value,dict): + return any(key in ('kind','code') and entry==args.expect_refusal for key,entry in value.items()) or any(has_code(entry) for entry in value.values()) + if isinstance(value,list):return any(has_code(entry) for entry in value) + return False + assert result.returncode!=0 and has_code(events),(result.returncode,events) + assert not any((root/'build').rglob('*.cbor')),'refused build published artifacts' + print('EXPECTED_STRUCTURED_REFUSAL',args.expect_refusal,flush=True) +else: + assert result.returncode==0,result.returncode print('OUTPUT_FILES',sorted(str(p.relative_to(root)) for p in (root/'build').rglob('*') if p.is_file()),flush=True) diff --git a/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/counterexamples/transformed-replacement/README.md b/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/counterexamples/transformed-replacement/README.md index d8a976613..5c1053120 100644 --- a/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/counterexamples/transformed-replacement/README.md +++ b/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/counterexamples/transformed-replacement/README.md @@ -15,12 +15,18 @@ That selects the caller's field rather than the authored effect argument. The observed failure is successful production/verification of this mismatched binding. Execution of this counterexample package has not been performed. -To reproduce, run the parent fixture's `build.py` in the guarded worker with the -pinned compiler and candidate provider, then replace its generated -`update-cell.edict` with this source and submit the same public JSONL application -build again. The parent lawpack/configuration bytes and digest are unchanged. -The correct result must preserve the authored effect argument or return an -explicit unsupported-semantics refusal. The original direct-input source remains -the positive control. Add the executable refusal/correctness regression before -implementing the provider fix; do not turn the retained acceptance into a golden -expectation. +The corrected providers explicitly refuse this source because their bounded +mutation profiles support only the declared application input as the effect +argument. The regression +`providers_refuse_effect_inputs_not_equal_to_the_declared_application_argument` +checks lowerer and verifier refusals independently for both mutation profiles. +Its first run failed because the lowerer accepted a transformed argument; after +the fix the verifier executable suite passed 70 tests and the lowerer suite 13. + +To reproduce the public compiler refusal, run the command in the parent README +with `--source-template` pointing to this `update-cell.edict` and +`--expect-refusal ProviderLowererRefused`. The corrected component pair produced +that structured refusal with compiler exit code 2 and no published CBOR outputs. +The original direct-input positive control still emitted byte-identical package +and report artifacts. These checks establish production/refusal; they do not +claim execution of the historical erroneous package or final PR approval. diff --git a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/components/lowerer.echo-dpo.component.wasm b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/components/lowerer.echo-dpo.component.wasm index c4651a6c84b2f3768f277c0a297ff7bf35e0fa72..43762f5e166c2fa8e0521afa100b6dc940a24f2e 100644 GIT binary patch delta 53616 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 L0n_-Rn7m1ucLK? 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 ZxSF57=A2(W8TIal|9h0I4|7e|{|7eBWqbet delta 52286 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 JOwa53{{s-E+fo1k diff --git a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/components/verifier.echo-dpo.component.wasm b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/components/verifier.echo-dpo.component.wasm index de199fc7438d9a249b09c6f74ba20a655b836efd..db3a02611f3e7b3129a83969ca6a3e67ea2b1ceb 100644 GIT binary patch delta 46647 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
3Ii0E0_ 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 aeE_S)-(&U@DGplJ0slLBE3UCOTK@&d5Lk== diff --git a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/provider-manifest.echo.json b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/provider-manifest.echo.json index 4cf33b3c5..f1c694828 100644 --- a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/provider-manifest.echo.json +++ b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/provider-manifest.echo.json @@ -3,7 +3,7 @@ "providerAbi": "edict:target-provider@1.0.0", "provider": { "coordinate": "echo.edict-provider@1", - "digest": "sha256:7eaf4213424fd9a0c8e9149ef2df03a742f2e326452409568e1af4f21180d114" + "digest": "sha256:e1de94ad00e3297688199a6f45d26ef86fe3a270529c006bbbd3d8bb6fc40738" }, "artifacts": [ { @@ -87,13 +87,13 @@ "artifactKind": "lowerer", "resource": { "coordinate": "echo.dpo.lowerer/component@1", - "digest": "sha256:ca019b31e52ee5e4864b076197e3078e6d4c2baa075549132f377c94bc13e3ac" + "digest": "sha256:80e426cc277a4c5e78eab374b68144c8f3e34b6afb93eb991789ce2e5ee7b9a4" }, "source": { "kind": "component", "component": { "coordinate": "echo.dpo.lowerer/component@1", - "digest": "sha256:ca019b31e52ee5e4864b076197e3078e6d4c2baa075549132f377c94bc13e3ac" + "digest": "sha256:80e426cc277a4c5e78eab374b68144c8f3e34b6afb93eb991789ce2e5ee7b9a4" } } }, @@ -178,13 +178,13 @@ "artifactKind": "verifier", "resource": { "coordinate": "echo.dpo.verifier/component@1", - "digest": "sha256:6bd97a79e4720ac7605648f359c9a495d56b503bd954006a280d2ba3a48d2f92" + "digest": "sha256:87649ace3aa1ab21c45cc4ed5c90051583dd08b48518cdca61dacde72783440a" }, "source": { "kind": "component", "component": { "coordinate": "echo.dpo.verifier/component@1", - "digest": "sha256:6bd97a79e4720ac7605648f359c9a495d56b503bd954006a280d2ba3a48d2f92" + "digest": "sha256:87649ace3aa1ab21c45cc4ed5c90051583dd08b48518cdca61dacde72783440a" } } } diff --git a/crates/echo-wesley-gen/tests/provider_package.rs b/crates/echo-wesley-gen/tests/provider_package.rs index 2afb37926..623c38d23 100644 --- a/crates/echo-wesley-gen/tests/provider_package.rs +++ b/crates/echo-wesley-gen/tests/provider_package.rs @@ -65,7 +65,7 @@ const SEMANTIC_DIGEST: &str = const RELEASE_DIGEST: &str = "sha256:c39449495281b51f978468d08c21e93bcfa423176063b41675da61e4674b0066"; const PACKAGE_ARTIFACT_SHA256: &str = - "7eaf4213424fd9a0c8e9149ef2df03a742f2e326452409568e1af4f21180d114"; + "e1de94ad00e3297688199a6f45d26ef86fe3a270529c006bbbd3d8bb6fc40738"; const OTHER_PACKAGE_ARTIFACT_SHA256: &str = "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"; diff --git a/crates/echo-wesley-gen/tests/provider_package_corpus.rs b/crates/echo-wesley-gen/tests/provider_package_corpus.rs index 423953833..e1a570539 100644 --- a/crates/echo-wesley-gen/tests/provider_package_corpus.rs +++ b/crates/echo-wesley-gen/tests/provider_package_corpus.rs @@ -11,9 +11,9 @@ use std::sync::atomic::{AtomicU64, Ordering}; use sha2::{Digest as _, Sha256}; const EXPECTED_PROVIDER_DIGEST: &str = - "sha256:7eaf4213424fd9a0c8e9149ef2df03a742f2e326452409568e1af4f21180d114"; + "sha256:e1de94ad00e3297688199a6f45d26ef86fe3a270529c006bbbd3d8bb6fc40738"; const EXPECTED_MANIFEST_RAW_SHA256: &str = - "f9da945403ce869a2513655d0f9ee8f124c81d65688b5b3e07fafa00db0cb1fd"; + "0dfdef1d409103da02977bf51123dc29095812fddb3b8fb05358b33a52dff372"; const PACKAGE_PATHS: [&str; 25] = [ "components/lowerer.echo-dpo.component.wasm", diff --git a/docs/architecture/application-contract-hosting.md b/docs/architecture/application-contract-hosting.md index e600c9286..7ef3584cd 100644 --- a/docs/architecture/application-contract-hosting.md +++ b/docs/architecture/application-contract-hosting.md @@ -171,6 +171,17 @@ requires an `application_input_expected_value_digest_path` in the installed projection and exact equality between its 32-byte input value and the invocation precondition. Create projections omit this path. Missing or substituted bindings return `ApplicationInputMismatch`; legacy invocation encodings remain unchanged. +Both mutation profiles require the effect argument to be the declared application +input directly. The lowerer and independent verifier each check the canonical +`arg.0` reference, its declared type and alpha name, and its unique local +declaration. They refuse transformed records and other local references with +`UnsupportedSemantics`; these bounded profiles do not evaluate arbitrary effect +arguments. This prevents a package from silently replacing an authored argument +with the caller's input fields. The compiler fixture retains the previously +accepted `message: "forced"` counterexample as historical failing evidence; the +corrected components refuse that source without publishing package artifacts, +while the direct-input control produces the same package and report bytes. + The native lowerer and independent verifier select the CAS program from an exact `continuum.profile.write/v1` effect with the CAS target intrinsic and `replace` write class. Its configuration requires a distinct `expectedValueDigestField` diff --git a/schemas/edict-provider/components/v1/lowerer.echo-dpo.component.wasm b/schemas/edict-provider/components/v1/lowerer.echo-dpo.component.wasm index c4651a6c84b2f3768f277c0a297ff7bf35e0fa72..43762f5e166c2fa8e0521afa100b6dc940a24f2e 100644 GIT binary patch delta 53616 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 L0n_-Rn7m1ucLK? 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 ZxSF57=A2(W8TIal|9h0I4|7e|{|7eBWqbet delta 52286 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 JOwa53{{s-E+fo1k diff --git a/schemas/edict-provider/components/v1/verifier.echo-dpo.component.wasm b/schemas/edict-provider/components/v1/verifier.echo-dpo.component.wasm index de199fc7438d9a249b09c6f74ba20a655b836efd..db3a02611f3e7b3129a83969ca6a3e67ea2b1ceb 100644 GIT binary patch delta 46647 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
3Ii0E0_ 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 aeE_S)-(&U@DGplJ0slLBE3UCOTK@&d5Lk== diff --git a/schemas/edict-provider/package/v1/components/lowerer.echo-dpo.component.wasm b/schemas/edict-provider/package/v1/components/lowerer.echo-dpo.component.wasm index c4651a6c84b2f3768f277c0a297ff7bf35e0fa72..43762f5e166c2fa8e0521afa100b6dc940a24f2e 100644 GIT binary patch delta 53616 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 L0n_-Rn7m1ucLK? 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 ZxSF57=A2(W8TIal|9h0I4|7e|{|7eBWqbet delta 52286 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 JOwa53{{s-E+fo1k diff --git a/schemas/edict-provider/package/v1/components/verifier.echo-dpo.component.wasm b/schemas/edict-provider/package/v1/components/verifier.echo-dpo.component.wasm index de199fc7438d9a249b09c6f74ba20a655b836efd..db3a02611f3e7b3129a83969ca6a3e67ea2b1ceb 100644 GIT binary patch delta 46647 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
3Ii0E0_ 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 aeE_S)-(&U@DGplJ0slLBE3UCOTK@&d5Lk== diff --git a/schemas/edict-provider/package/v1/provider-manifest.echo.json b/schemas/edict-provider/package/v1/provider-manifest.echo.json index 4cf33b3c5..f1c694828 100644 --- a/schemas/edict-provider/package/v1/provider-manifest.echo.json +++ b/schemas/edict-provider/package/v1/provider-manifest.echo.json @@ -3,7 +3,7 @@ "providerAbi": "edict:target-provider@1.0.0", "provider": { "coordinate": "echo.edict-provider@1", - "digest": "sha256:7eaf4213424fd9a0c8e9149ef2df03a742f2e326452409568e1af4f21180d114" + "digest": "sha256:e1de94ad00e3297688199a6f45d26ef86fe3a270529c006bbbd3d8bb6fc40738" }, "artifacts": [ { @@ -87,13 +87,13 @@ "artifactKind": "lowerer", "resource": { "coordinate": "echo.dpo.lowerer/component@1", - "digest": "sha256:ca019b31e52ee5e4864b076197e3078e6d4c2baa075549132f377c94bc13e3ac" + "digest": "sha256:80e426cc277a4c5e78eab374b68144c8f3e34b6afb93eb991789ce2e5ee7b9a4" }, "source": { "kind": "component", "component": { "coordinate": "echo.dpo.lowerer/component@1", - "digest": "sha256:ca019b31e52ee5e4864b076197e3078e6d4c2baa075549132f377c94bc13e3ac" + "digest": "sha256:80e426cc277a4c5e78eab374b68144c8f3e34b6afb93eb991789ce2e5ee7b9a4" } } }, @@ -178,13 +178,13 @@ "artifactKind": "verifier", "resource": { "coordinate": "echo.dpo.verifier/component@1", - "digest": "sha256:6bd97a79e4720ac7605648f359c9a495d56b503bd954006a280d2ba3a48d2f92" + "digest": "sha256:87649ace3aa1ab21c45cc4ed5c90051583dd08b48518cdca61dacde72783440a" }, "source": { "kind": "component", "component": { "coordinate": "echo.dpo.verifier/component@1", - "digest": "sha256:6bd97a79e4720ac7605648f359c9a495d56b503bd954006a280d2ba3a48d2f92" + "digest": "sha256:87649ace3aa1ab21c45cc4ed5c90051583dd08b48518cdca61dacde72783440a" } } } diff --git a/xtask/src/provider_lowerer_component.rs b/xtask/src/provider_lowerer_component.rs index b8a34e2d2..69b8cb891 100644 --- a/xtask/src/provider_lowerer_component.rs +++ b/xtask/src/provider_lowerer_component.rs @@ -53,7 +53,7 @@ const PINNED_CARGO_COMMIT: &str = "840b83a10fb0e039a83f4d70ad032892c287570a"; /// Reviewed identity that the portable promotion command is permitted to install. pub(crate) const APPROVED_CHECKED_COMPONENT_SHA256: &str = - "ca019b31e52ee5e4864b076197e3078e6d4c2baa075549132f377c94bc13e3ac"; + "80e426cc277a4c5e78eab374b68144c8f3e34b6afb93eb991789ce2e5ee7b9a4"; pub(crate) const CHECKED_COMPONENT_REPOSITORY_PATH: &str = "schemas/edict-provider/components/v1/lowerer.echo-dpo.component.wasm"; @@ -62,7 +62,7 @@ pub(crate) const VERIFIER_CHECKED_COMPONENT_REPOSITORY_PATH: &str = "schemas/edict-provider/components/v1/verifier.echo-dpo.component.wasm"; /// Approved SHA-256 identity of the checked verifier component. pub(crate) const APPROVED_CHECKED_VERIFIER_COMPONENT_SHA256: &str = - "6bd97a79e4720ac7605648f359c9a495d56b503bd954006a280d2ba3a48d2f92"; + "87649ace3aa1ab21c45cc4ed5c90051583dd08b48518cdca61dacde72783440a"; #[derive(Clone, Copy, Debug, Eq, PartialEq)] struct ProviderComponentSpec { From 7fa935a10123a43c89be888291e01ab6ed7de734 Mon Sep 17 00:00:00 2001 From: James Ross Date: Thu, 8 Oct 2026 01:20:48 -0700 Subject: [PATCH 09/13] Add required license headers to compiler witness documentation --- .../tests/fixtures/compiler-produced-cas/README.md | 3 +++ .../counterexamples/transformed-replacement/README.md | 3 +++ 2 files changed, 6 insertions(+) diff --git a/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/README.md b/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/README.md index 5b9795c9d..67c4f544d 100644 --- a/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/README.md +++ b/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/README.md @@ -1,3 +1,6 @@ + + + # Reproduce the projected CAS compiler witness Run `build.py` inside the guarded Echo worker with a pinned Edict compiler binary, diff --git a/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/counterexamples/transformed-replacement/README.md b/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/counterexamples/transformed-replacement/README.md index 5c1053120..8b88a1546 100644 --- a/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/counterexamples/transformed-replacement/README.md +++ b/crates/echo-edict-provider-verifier/tests/fixtures/compiler-produced-cas/counterexamples/transformed-replacement/README.md @@ -1,3 +1,6 @@ + + + # Authored replacement ignored by the accepted package This is retained failing evidence for the blocking argument-binding finding on From ed7fb5d2c7c3602350252fc76b108696d4d1fa33 Mon Sep 17 00:00:00 2001 From: James Ross Date: Thu, 8 Oct 2026 01:29:02 -0700 Subject: [PATCH 10/13] Add pending regression for program-incompatible package projections --- crates/warp-core/src/echo_operation.rs | 76 ++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) diff --git a/crates/warp-core/src/echo_operation.rs b/crates/warp-core/src/echo_operation.rs index d31826f72..42611b7b7 100644 --- a/crates/warp-core/src/echo_operation.rs +++ b/crates/warp-core/src/echo_operation.rs @@ -7651,6 +7651,82 @@ mod tests { ) } + #[test] + fn package_admission_rejects_projection_digest_binding_for_the_wrong_program() { + let (installed, _, _, _, _, _) = projected_create_fixture(1_024); + let create = ExecutableOperationPackageV1::from_canonical_bytes( + installed.canonical_package_bytes(), + ) + .expect("valid create package"); + for cas in [false, true] { + let mut package = if cas { + ExecutableOperationPackageV1::new( + create.operation_coordinate.clone(), + create.obstruction_coordinate.clone(), + create.semantic_closure.clone(), + echo_operation_target_profile_identity_v1(), + create.authority_profile_identity, + create.budget_ceiling, + EchoOperationProgramV1::anchored_node_attachment_compare_and_set( + crate::make_type_id("projected-created-node"), + crate::make_type_id("projected-created-atom"), + 1_024, + ), + ) + } else { + create.clone() + }; + let mut projection = create + .application_result_projection + .clone() + .expect("projection"); + projection.application_input_expected_value_digest_path = + cas.then(|| vec!["expected".to_owned()]); + package.application_result_projection = Some(projection); + let valid = package.to_canonical_bytes().expect("valid package encodes"); + let policy_for = |bytes: &[u8]| { + EchoOperationAdmissionPolicyV1::exact( + echo_operation_package_id_v1(bytes), + package.operation_coordinate.clone(), + package.authority_profile_identity, + package.budget_ceiling, + ) + }; + admit_package_v1(&policy_for(&valid), valid.clone()) + .expect("matching projection admits"); + let CanonicalValueV1::Map(mut fields) = + decode_canonical_cbor_v1(&valid).expect("package") + else { + panic!("package map") + }; + let (_, CanonicalValueV1::Map(projection)) = fields + .iter_mut() + .find(|(key, _)| key == &text_value("application_result_projection")) + .expect("projection field") + else { + panic!("projection map") + }; + let key = text_value("application_input_expected_value_digest_path"); + if cas { + projection.retain(|(name, _)| name != &key); + } else { + projection.push((key, projection_path_value(&["expected".to_owned()]))); + } + let invalid = encode_canonical_cbor_v1(&CanonicalValueV1::Map(fields)) + .expect("invalid package encodes"); + let error = admit_package_v1(&policy_for(&invalid), invalid) + .expect_err("program-incompatible projection must refuse before installation"); + assert_eq!( + error.kind(), + EchoOperationAdmissionErrorKindV1::ArtifactInvalid + ); + assert_eq!( + error.artifact().expect("artifact failure").kind(), + EchoOperationArtifactErrorKindV1::InvalidStructure + ); + } + } + #[test] fn projected_cas_admission_requires_an_expected_digest_binding() { let (mut installed, _, _, policy, mut invocation, _) = projected_create_fixture(1_024); From 3abe3f9e148493e89799d66d44bfb3dca46ac65b Mon Sep 17 00:00:00 2001 From: James Ross Date: Thu, 8 Oct 2026 01:30:18 -0700 Subject: [PATCH 11/13] Cover malformed digest path segments in provider schema --- .../tests/provider_cas_schema.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/crates/echo-wesley-gen/tests/provider_cas_schema.rs b/crates/echo-wesley-gen/tests/provider_cas_schema.rs index 7b0979987..6c6a80e57 100644 --- a/crates/echo-wesley-gen/tests/provider_cas_schema.rs +++ b/crates/echo-wesley-gen/tests/provider_cas_schema.rs @@ -145,4 +145,22 @@ fn projected_cas_schema_accepts_digest_path_without_changing_create_shape() { .validate_root_bytes("echo-operation-application-result-projection", &bytes) .expect("valid projection shape"); } + for segment in [text(""), CanonicalValueV1::Integer(1)] { + let mut invalid_fields = fields.clone(); + let (_, path) = invalid_fields + .iter_mut() + .find(|(key, _)| *key == "application_input_expected_value_digest_path") + .expect("CAS digest path"); + *path = CanonicalValueV1::Array(vec![segment]); + let bytes = encode_canonical_cbor_v1(&map(invalid_fields)) + .expect("canonical malformed projection"); + let error = generated + .schema() + .validate_root_bytes("echo-operation-application-result-projection", &bytes) + .expect_err("malformed digest-path segment refuses"); + assert_eq!( + error.kind(), + echo_wesley_gen::provider_artifacts::ProviderArtifactGenerationErrorKind::OwningRootRejected + ); + } } From 7658303a3cced5d404fc0d61acaaf64506e0a604 Mon Sep 17 00:00:00 2001 From: James Ross Date: Thu, 8 Oct 2026 01:32:51 -0700 Subject: [PATCH 12/13] Reject program-incompatible projections during package admission --- CHANGELOG.md | 2 ++ crates/warp-core/src/echo_operation.rs | 13 +++++++++++++ docs/architecture/application-contract-hosting.md | 7 ++++++- 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ea9e9edd1..53c1cc291 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,8 @@ ### Fixed +- Package admission rejects result projections whose expected-digest binding conflicts with the selected mutation program, before they can occupy an installed operation coordinate. + - Both executable mutation providers refuse transformed effect arguments instead of silently projecting the caller input into a different mutation. Direct application-input arguments remain supported; the independent verifier enforces the same boundary. - Observation slots preflight their canonical byte bound and charge execution reads before copying Atom payloads. diff --git a/crates/warp-core/src/echo_operation.rs b/crates/warp-core/src/echo_operation.rs index 42611b7b7..9a2ce99b2 100644 --- a/crates/warp-core/src/echo_operation.rs +++ b/crates/warp-core/src/echo_operation.rs @@ -2139,6 +2139,19 @@ impl ExecutableOperationPackageV1 { "unsupported interpreter or intrinsic profile identity", )); } + if let Some(projection) = &self.application_result_projection { + let requires_digest = matches!( + self.program, + EchoOperationProgramV1::AnchoredNodeAttachmentCompareAndSet { .. } + ); + if projection.application_input_expected_value_digest_path.is_some() + != requires_digest + { + return Err(invalid_structure( + "expected digest binding does not match the package program", + )); + } + } if self .application_result_projection .as_ref() diff --git a/docs/architecture/application-contract-hosting.md b/docs/architecture/application-contract-hosting.md index 7ef3584cd..734b9afaa 100644 --- a/docs/architecture/application-contract-hosting.md +++ b/docs/architecture/application-contract-hosting.md @@ -169,7 +169,12 @@ The native invocation codec has a distinct projected compare-and-set form that retains canonical application input in the invocation identity. Static admission requires an `application_input_expected_value_digest_path` in the installed projection and exact equality between its 32-byte input value and the invocation -precondition. Create projections omit this path. Missing or substituted bindings +precondition. Create projections omit this path. Package admission checks this +program/path relationship before installation: a projected compare-and-set +package without the path, or a create package with it, returns `ArtifactInvalid` +with `InvalidStructure`. Legacy packages without a result projection remain +supported. Invocation admission also checks the relationship and exact digest. +Missing or substituted invocation bindings return `ApplicationInputMismatch`; legacy invocation encodings remain unchanged. Both mutation profiles require the effect argument to be the declared application input directly. The lowerer and independent verifier each check the canonical From e174c70f9d8a605bb0ba0997bd880e4c8d79bd04 Mon Sep 17 00:00:00 2001 From: James Ross Date: Thu, 8 Oct 2026 01:37:49 -0700 Subject: [PATCH 13/13] Format package admission and schema regressions --- crates/echo-wesley-gen/tests/provider_cas_schema.rs | 4 ++-- crates/warp-core/src/echo_operation.rs | 11 ++++++----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/crates/echo-wesley-gen/tests/provider_cas_schema.rs b/crates/echo-wesley-gen/tests/provider_cas_schema.rs index 6c6a80e57..06b6cf4db 100644 --- a/crates/echo-wesley-gen/tests/provider_cas_schema.rs +++ b/crates/echo-wesley-gen/tests/provider_cas_schema.rs @@ -152,8 +152,8 @@ fn projected_cas_schema_accepts_digest_path_without_changing_create_shape() { .find(|(key, _)| *key == "application_input_expected_value_digest_path") .expect("CAS digest path"); *path = CanonicalValueV1::Array(vec![segment]); - let bytes = encode_canonical_cbor_v1(&map(invalid_fields)) - .expect("canonical malformed projection"); + let bytes = + encode_canonical_cbor_v1(&map(invalid_fields)).expect("canonical malformed projection"); let error = generated .schema() .validate_root_bytes("echo-operation-application-result-projection", &bytes) diff --git a/crates/warp-core/src/echo_operation.rs b/crates/warp-core/src/echo_operation.rs index 9a2ce99b2..20ea78007 100644 --- a/crates/warp-core/src/echo_operation.rs +++ b/crates/warp-core/src/echo_operation.rs @@ -2144,7 +2144,9 @@ impl ExecutableOperationPackageV1 { self.program, EchoOperationProgramV1::AnchoredNodeAttachmentCompareAndSet { .. } ); - if projection.application_input_expected_value_digest_path.is_some() + if projection + .application_input_expected_value_digest_path + .is_some() != requires_digest { return Err(invalid_structure( @@ -7667,10 +7669,9 @@ mod tests { #[test] fn package_admission_rejects_projection_digest_binding_for_the_wrong_program() { let (installed, _, _, _, _, _) = projected_create_fixture(1_024); - let create = ExecutableOperationPackageV1::from_canonical_bytes( - installed.canonical_package_bytes(), - ) - .expect("valid create package"); + let create = + ExecutableOperationPackageV1::from_canonical_bytes(installed.canonical_package_bytes()) + .expect("valid create package"); for cas in [false, true] { let mut package = if cas { ExecutableOperationPackageV1::new(