use super::*;
pub fn summarize_omena_query_design_system_minimum_description(
source_uri: impl Into<String>,
source_hash: impl Into<String>,
rule_count: usize,
observation_count: usize,
) -> DesignSystemMinimumDescriptionV0 {
let model_bits = rule_count as f64;
let residual_bits = observation_count as f64;
DesignSystemMinimumDescriptionV0 {
schema_version: OMENA_QUERY_CURRENT_SCHEMA_VERSION,
product: "omena-query.design-system-minimum-description",
layer_marker: "mdl-bits",
feature_gate: "mdl",
model_bits,
residual_bits,
total_bits: model_bits + residual_bits,
unit: "bit",
model_class: ModelClassV0::TwoPartUniform,
rule_count,
observation_count,
canonical_form_present: false,
cascade_proof_obligation_count: 0,
sass_namespace_partition: SassNamespaceBitsV0 {
namespace_count: 0,
partition_count: 0,
deterministic_partition: true,
},
generated_at_iso: "deterministic-v0",
source_pin: SourcePinV0 {
source_uri: source_uri.into(),
source_hash: source_hash.into(),
},
weights_calibration_pin: "uniform-v0",
weights_version: "0",
semiring_instance: "tropical",
}
}
pub struct OmenaQueryCanonicalFormInput {
pub pass_id: &'static str,
pub before: String,
pub canonical_after: String,
pub fallback_after: String,
pub mdl_bits: f64,
pub ast_size_bits: f64,
pub iteration_count: usize,
pub eclass_count: usize,
pub enode_count: usize,
}
pub fn summarize_omena_query_canonical_form(
input: OmenaQueryCanonicalFormInput,
) -> CanonicalFormV0 {
let canonical_matches_fallback = input.canonical_after == input.fallback_after;
let bits_saved_vs_fallback = input.ast_size_bits - input.mdl_bits;
CanonicalFormV0 {
schema_version: OMENA_QUERY_CURRENT_SCHEMA_VERSION,
product: "omena-query.canonical-form",
layer_marker: "mdl-bits",
feature_gate: "mdl",
pass_id: input.pass_id,
before: input.before,
canonical_after: input.canonical_after,
fallback_after: input.fallback_after,
canonical_matches_fallback,
bits_saved_vs_fallback,
mdl_bits: input.mdl_bits,
ast_size_bits: input.ast_size_bits,
unit: "bit",
iteration_count: input.iteration_count,
eclass_count: input.eclass_count,
enode_count: input.enode_count,
cascade_safe_witness: "cascade proof obligation remains conservative",
egg_analysis_witness: "extracted canonical form is compared against fallback output",
}
}
pub fn summarize_omena_query_boundary(input: &EngineInputV2) -> OmenaQueryBoundarySummaryV0 {
let fragment_bundle = summarize_omena_query_fragment_bundle(input);
let expression_semantics_query_count = fragment_bundle.expression_semantics.fragments.len();
let source_resolution_query_count = fragment_bundle.source_resolution.fragments.len();
let selector_usage_query_count = fragment_bundle.selector_usage.fragments.len();
OmenaQueryBoundarySummaryV0 {
schema_version: OMENA_QUERY_CURRENT_SCHEMA_VERSION,
product: "omena-query.boundary",
query_engine_name: "omena-query",
schema_version_policy: summarize_omena_query_schema_version_policy(),
input_version: input.version.clone(),
abstract_value_domain: summarize_omena_abstract_value_domain(),
selected_query_adapter_capabilities:
summarize_omena_query_selected_query_adapter_capabilities(),
delegated_fragment_products: vec![
"engine-input-producers.expression-semantics-query-fragments",
"engine-input-producers.source-resolution-query-fragments",
"omena-resolver.boundary",
"omena-resolver.source-resolution-runtime-index",
"engine-input-producers.selector-usage-query-fragments",
"engine-input-producers.expression-domain-flow-analysis",
"engine-input-producers.expression-domain-control-flow-analysis",
"engine-input-producers.expression-domain-call-site-flow-analysis",
"engine-input-producers.expression-domain-provenance-explanations",
"engine-input-producers.expression-domain-reduced-product-iteration",
"omena-query.expression-domain-incremental-flow-analysis",
"omena-query.expression-domain-selector-projection",
"omena-parser.style-facts",
"omena-transform-bundle.source",
"omena-transform-target.plan",
"omena-transform-egg.plan",
"omena-transform-egg.execution",
"omena-transform-print.artifact",
"omena-transform-passes.plan",
"omena-transform-passes.execution",
"omena-cascade.custom-property-least-fixed-point",
"omena-semantic.style-context-index",
"omena-query.transform-execute",
"omena-query.transform-context-from-engine-input",
"omena-query.consumer-check-style-source",
"omena-query.consumer-build-style-source",
"omena-query.evaluation-runtime",
"omena-query.fast-facts",
"omena-query.analyzed-graph",
"omena-query.custom-property-annotations",
"omena-query.design-system-minimum-description",
],
expression_semantics_query_count,
source_resolution_query_count,
selector_usage_query_count,
total_query_count: expression_semantics_query_count
+ source_resolution_query_count
+ selector_usage_query_count,
ready_surfaces: vec![
"queryFragmentBundle",
"abstractValueProjectionContract",
"abstractValueReducedProductAlgebra",
"sourceResolutionResolverBoundary",
"sourceResolutionRuntimeIndex",
"expressionDomainFlowAnalysisBoundary",
"expressionDomainControlFlowAnalysisBoundary",
"expressionDomainCallSiteFlowAnalysisBoundary",
"expressionDomainProvenanceExplanations",
"expressionDomainReducedProductIteration",
"expressionDomainSalsaRuntime",
"expressionDomainSelectorProjection",
"styleHoverRenderParts",
"styleMissingCustomPropertyDiagnostics",
"styleDiagnosticsForFile",
"sourceDiagnosticsForFile",
"crossLanguageDiagnostics",
"cascadeAwareDiagnostics",
"completionAt",
"refsForClass",
"renamePlan",
"readCascadeAtPosition",
"readStyleContextIndex",
"readCascadeCustomPropertyLeastFixedPoint",
"sourceMissingSelectorDiagnostics",
"sourceProviderCandidateResolution",
"selectorRenameEditPlanning",
"sassSymbolResolutionPrimitives",
"sassModuleSourceSelection",
"omenaParserStyleFactExtraction",
"transformPlanFacade",
"transformEggExecutionWitnesses",
"transformExecutionRuntime",
"transformExecutionRunner",
"semanticReachabilityTransformContext",
"consumerCheckFacade",
"consumerBuildFacade",
"consumerTransformPassListFacade",
"queryBoundarySummary",
"selectedQueryBackendAdapter",
"queryEvaluationRuntime",
"omenaParserStyleDocumentSummary",
"omenaParserPublicContractTypes",
"fastFactsV0",
"analyzedGraphV0",
"customPropertyAnnotations",
"designSystemMinimumDescription",
],
cme_coupled_surfaces: vec!["EngineInputV2", "producerQueryFragments"],
next_decoupling_targets: Vec::new(),
}
}
pub fn summarize_omena_query_evaluation_runtime(
input: &EngineInputV2,
runtime: &mut OmenaQueryExpressionDomainFlowRuntimeV0,
) -> OmenaQueryEvaluationRuntimeSummaryV0 {
let selected_query_adapter_capabilities =
summarize_omena_query_selected_query_adapter_capabilities();
let source_resolution_runtime = summarize_omena_query_source_resolution_runtime(input);
let expression_domain_runtime =
summarize_omena_query_expression_domain_incremental_flow_analysis(input, runtime);
OmenaQueryEvaluationRuntimeSummaryV0 {
schema_version: OMENA_QUERY_CURRENT_SCHEMA_VERSION,
product: "omena-query.evaluation-runtime",
input_version: input.version.clone(),
selected_query_adapter_capabilities,
runtime_products: vec![
source_resolution_runtime.product,
expression_domain_runtime.product,
"omena-query.style-document-summary",
],
source_resolution_expression_count: source_resolution_runtime.expression_count,
source_resolution_unresolved_expression_count: source_resolution_runtime
.unresolved_expression_count,
expression_domain_revision: expression_domain_runtime.revision,
expression_domain_graph_count: expression_domain_runtime.graph_count,
expression_domain_dirty_graph_count: expression_domain_runtime.dirty_graph_count,
expression_domain_reused_graph_count: expression_domain_runtime.reused_graph_count,
style_document_summary_source: "omena-parser.style-facts",
ready_surfaces: vec![
"selectedQueryBackendAdapter",
"sourceResolutionRuntimeIndex",
"expressionDomainSalsaRuntime",
"expressionDomainSelectorProjection",
"omenaParserStyleDocumentSummary",
"omenaParserPublicContractTypes",
],
retired_couplings: vec![
"engineStyleParserStyleDocumentSummary",
"engineStyleParserQueryPublicTypes",
],
}
}
pub fn summarize_omena_query_selected_query_adapter_capabilities()
-> SelectedQueryAdapterCapabilitiesV0 {
SelectedQueryAdapterCapabilitiesV0 {
schema_version: OMENA_QUERY_CURRENT_SCHEMA_VERSION,
product: "omena-query.selected-query-adapter-capabilities",
default_candidate_backend: "rust-selected-query",
schema_version_policy: summarize_omena_query_schema_version_policy(),
schema_version_checks: vec![
check_omena_query_schema_version(Some(OMENA_QUERY_CURRENT_SCHEMA_VERSION)),
check_omena_query_schema_version(Some(OMENA_QUERY_CURRENT_SCHEMA_VERSION_LABEL)),
check_omena_query_schema_version(Some("1")),
check_omena_query_schema_version(None),
],
backend_kinds: vec![
SelectedQueryBackendCapabilityV0 {
backend_kind: "typescript-current",
source_resolution: false,
expression_semantics: false,
selector_usage: false,
style_semantic_graph: false,
},
SelectedQueryBackendCapabilityV0 {
backend_kind: "rust-source-resolution",
source_resolution: true,
expression_semantics: false,
selector_usage: false,
style_semantic_graph: false,
},
SelectedQueryBackendCapabilityV0 {
backend_kind: "rust-expression-semantics",
source_resolution: false,
expression_semantics: true,
selector_usage: false,
style_semantic_graph: false,
},
SelectedQueryBackendCapabilityV0 {
backend_kind: "rust-selector-usage",
source_resolution: false,
expression_semantics: false,
selector_usage: true,
style_semantic_graph: false,
},
SelectedQueryBackendCapabilityV0 {
backend_kind: "rust-selected-query",
source_resolution: true,
expression_semantics: true,
selector_usage: true,
style_semantic_graph: true,
},
],
runner_commands: vec![
SelectedQueryRunnerCommandV0 {
surface: "queryEvaluationRuntime",
command: "input-omena-query-evaluation-runtime",
input_contract: "EngineInputV2 + OmenaQueryExpressionDomainFlowRuntimeV0",
output_product: "omena-query.evaluation-runtime",
},
SelectedQueryRunnerCommandV0 {
surface: "sourceResolution",
command: "input-source-resolution-canonical-producer",
input_contract: "EngineInputV2",
output_product: "engine-input-producers.source-resolution-canonical-producer",
},
SelectedQueryRunnerCommandV0 {
surface: "sourceResolutionRuntime",
command: "input-omena-resolver-source-resolution-runtime",
input_contract: "EngineInputV2",
output_product: "omena-resolver.source-resolution-runtime-index",
},
SelectedQueryRunnerCommandV0 {
surface: "expressionSemantics",
command: "input-expression-semantics-canonical-producer",
input_contract: "EngineInputV2",
output_product: "engine-input-producers.expression-semantics-canonical-producer",
},
SelectedQueryRunnerCommandV0 {
surface: "expressionDomainFlowAnalysis",
command: "input-expression-domain-flow-analysis",
input_contract: "EngineInputV2",
output_product: "engine-input-producers.expression-domain-flow-analysis",
},
SelectedQueryRunnerCommandV0 {
surface: "expressionDomainControlFlowAnalysis",
command: "input-expression-domain-control-flow-analysis",
input_contract: "EngineInputV2",
output_product: "engine-input-producers.expression-domain-control-flow-analysis",
},
SelectedQueryRunnerCommandV0 {
surface: "expressionDomainCallSiteFlowAnalysis",
command: "input-expression-domain-call-site-flow-analysis",
input_contract: "EngineInputV2",
output_product: "engine-input-producers.expression-domain-call-site-flow-analysis",
},
SelectedQueryRunnerCommandV0 {
surface: "expressionDomainProvenanceExplanations",
command: "input-expression-domain-provenance-explanations",
input_contract: "EngineInputV2",
output_product: "engine-input-producers.expression-domain-provenance-explanations",
},
SelectedQueryRunnerCommandV0 {
surface: "expressionDomainReducedProductIteration",
command: "input-expression-domain-reduced-product-iteration",
input_contract: "EngineInputV2",
output_product: "engine-input-producers.expression-domain-reduced-product-iteration",
},
SelectedQueryRunnerCommandV0 {
surface: "expressionDomainIncrementalFlowAnalysis",
command: "input-expression-domain-incremental-flow-analysis",
input_contract: "EngineInputV2 + OmenaQueryExpressionDomainFlowRuntimeV0",
output_product: "omena-query.expression-domain-incremental-flow-analysis",
},
SelectedQueryRunnerCommandV0 {
surface: "expressionDomainSelectorProjection",
command: "input-expression-domain-selector-projection",
input_contract: "EngineInputV2",
output_product: "omena-query.expression-domain-selector-projection",
},
SelectedQueryRunnerCommandV0 {
surface: "selectorUsage",
command: "input-selector-usage-canonical-producer",
input_contract: "EngineInputV2",
output_product: "engine-input-producers.selector-usage-canonical-producer",
},
SelectedQueryRunnerCommandV0 {
surface: "omenaParserStyleFacts",
command: "omena-parser-style-facts",
input_contract: "OmenaParserStyleFactsInputV0",
output_product: "omena-parser.style-facts",
},
SelectedQueryRunnerCommandV0 {
surface: "styleSemanticGraph",
command: "style-semantic-graph",
input_contract: "StyleSemanticGraphInputV0",
output_product: "omena-semantic.style-semantic-graph",
},
SelectedQueryRunnerCommandV0 {
surface: "readCascadeAtPosition",
command: "read-cascade-at-position",
input_contract: "ReadCascadeAtPositionInputV0",
output_product: "omena-query.read-cascade-at-position",
},
SelectedQueryRunnerCommandV0 {
surface: "styleDiagnosticsForFile",
command: "style-diagnostics-for-file",
input_contract: "StyleDiagnosticsForFileInputV0",
output_product: "omena-query.diagnostics-for-file",
},
SelectedQueryRunnerCommandV0 {
surface: "sourceDiagnosticsForFile",
command: "source-diagnostics-for-file",
input_contract: "SourceDiagnosticsForFileInputV0",
output_product: "omena-query.diagnostics-for-file",
},
SelectedQueryRunnerCommandV0 {
surface: "completionAt",
command: "completion-at",
input_contract: "CompletionAtInputV0",
output_product: "omena-query.completion-at",
},
SelectedQueryRunnerCommandV0 {
surface: "styleCodeActions",
command: "style-code-actions",
input_contract: "StyleCodeActionsInputV0",
output_product: "omena-query.code-actions",
},
SelectedQueryRunnerCommandV0 {
surface: "refsForClass",
command: "refs-for-class",
input_contract: "RefsForClassInputV0",
output_product: "omena-query.refs-for-class",
},
SelectedQueryRunnerCommandV0 {
surface: "renamePlan",
command: "rename-plan",
input_contract: "RenamePlanInputV0",
output_product: "omena-query.rename-plan",
},
SelectedQueryRunnerCommandV0 {
surface: "readStyleContextIndex",
command: "read-style-context-index",
input_contract: "ReadStyleContextIndexInputV0",
output_product: "omena-query.style-context-index",
},
SelectedQueryRunnerCommandV0 {
surface: "styleSemanticGraphBatch",
command: "style-semantic-graph-batch",
input_contract: "StyleSemanticGraphBatchInputV0",
output_product: "omena-semantic.style-semantic-graph-batch",
},
SelectedQueryRunnerCommandV0 {
surface: "transformPlan",
command: "transform-plan",
input_contract: "TransformPlanInputV0",
output_product: "omena-query.transform-plan",
},
SelectedQueryRunnerCommandV0 {
surface: "transformContext",
command: "transform-context",
input_contract: "TransformContextInputV0",
output_product: "omena-query.transform-context",
},
SelectedQueryRunnerCommandV0 {
surface: "semanticReachabilityTransformContext",
command: "transform-context-from-engine-input",
input_contract: "EngineInputV2 + targetStylePath + closedStyleWorld",
output_product: "omena-query.transform-context-from-engine-input",
},
SelectedQueryRunnerCommandV0 {
surface: "transformExecute",
command: "transform-execute",
input_contract: "TransformExecuteInputV0",
output_product: "omena-query.transform-execute",
},
SelectedQueryRunnerCommandV0 {
surface: "consumerCheckStyleSource",
command: "consumer-check-style-source",
input_contract: "ConsumerStyleSourceInputV0",
output_product: "omena-query.consumer-check-style-source",
},
SelectedQueryRunnerCommandV0 {
surface: "consumerBuildStyleSource",
command: "consumer-build-style-source",
input_contract: "ConsumerStyleSourceBuildInputV0",
output_product: "omena-query.consumer-build-style-source",
},
SelectedQueryRunnerCommandV0 {
surface: "consumerBuildStyleSources",
command: "consumer-build-style-sources",
input_contract: "ConsumerStyleSourcesBuildInputV0",
output_product: "omena-query.consumer-build-style-source",
},
SelectedQueryRunnerCommandV0 {
surface: "consumerTransformPassList",
command: "consumer-transform-pass-list",
input_contract: "None",
output_product: "omena-query.transform-pass-list",
},
],
expression_semantics_payload_contracts: vec![
"valueDomainKind",
"valueDomainDerivation",
"valueDomainProvenanceTree",
],
required_input_contracts: vec![
"EngineInputV2",
"StyleSemanticGraphInputV0",
"ReadCascadeAtPositionInputV0",
"StyleDiagnosticsForFileInputV0",
"SourceDiagnosticsForFileInputV0",
"CompletionAtInputV0",
"StyleCodeActionsInputV0",
"RefsForClassInputV0",
"RenamePlanInputV0",
"ReadStyleContextIndexInputV0",
"StyleSemanticGraphBatchInputV0",
"OmenaParserStyleFactsInputV0",
"TransformPlanInputV0",
"TransformContextInputV0",
"TransformContextFromEngineInputV0",
"TransformExecuteInputV0",
"ConsumerStyleSourceInputV0",
"ConsumerStyleSourceBuildInputV0",
"ConsumerStyleSourcesBuildInputV0",
],
adapter_readiness: vec![
"backendCapabilityMatrix",
"canonicalProducerWrapperBoundary",
"styleSemanticGraphBridgeBoundary",
"runnerCommandContract",
"fragmentBundleBoundary",
"sourceResolutionRuntimeIndex",
"expressionSemanticsDerivationPayload",
"expressionDomainFlowAnalysisRunner",
"expressionDomainControlFlowAnalysisRunner",
"expressionDomainCallSiteFlowAnalysisRunner",
"expressionDomainProvenanceExplanationRunner",
"expressionDomainSalsaRuntime",
"expressionDomainSelectorProjection",
"omenaParserStyleFactExtraction",
"readCascadeAtPosition",
"readCascadeCustomPropertyLeastFixedPoint",
"styleDiagnosticsForFileRunner",
"sourceDiagnosticsForFileRunner",
"completionAtRunner",
"styleCodeActionsRunner",
"refsForClassRunner",
"renamePlanRunner",
"readStyleContextIndexRunner",
"transformPlanRunner",
"transformEggExecutionWitnesses",
"transformContextProducer",
"semanticReachabilityTransformContext",
"transformExecutionRunner",
"consumerCheckFacade",
"consumerBuildFacade",
"consumerTransformPassListFacade",
"queryEvaluationRuntime",
],
routing_status: "runtimeBacked",
}
}
pub fn summarize_omena_query_schema_version_policy() -> OmenaQuerySchemaVersionPolicyV0 {
OmenaQuerySchemaVersionPolicyV0 {
schema_version: OMENA_QUERY_CURRENT_SCHEMA_VERSION,
product: "omena-query.schema-version-policy",
current_version: OMENA_QUERY_CURRENT_SCHEMA_VERSION,
current_version_label: OMENA_QUERY_CURRENT_SCHEMA_VERSION_LABEL,
accepted_versions: vec![OMENA_QUERY_CURRENT_SCHEMA_VERSION],
deprecated_versions: Vec::new(),
rejected_version_policy: "rejectUnknownVersionsBeforeExecution",
missing_version_policy: "rejectMissingSchemaVersionOnExternalInputs",
migration_policy: vec![
"new versions require additive reader before writer",
"old and new versions must run through the same omena-query facade during migration",
"schema gate must include current accepted, missing, label-only, and future-version checks",
"breaking payload changes require a new numeric schemaVersion and explicit migration adapter",
],
compatibility_gate: "rust/omena-query/adapter-capabilities",
}
}
pub fn check_omena_query_schema_version(
requested_version: Option<&str>,
) -> OmenaQuerySchemaVersionCheckV0 {
match requested_version {
Some(OMENA_QUERY_CURRENT_SCHEMA_VERSION) => OmenaQuerySchemaVersionCheckV0 {
schema_version: OMENA_QUERY_CURRENT_SCHEMA_VERSION,
product: "omena-query.schema-version-check",
requested_version: Some(OMENA_QUERY_CURRENT_SCHEMA_VERSION.to_string()),
current_version: OMENA_QUERY_CURRENT_SCHEMA_VERSION,
accepted: true,
status: "current",
migration_action: "executeCurrentFacade",
reason: "requested schemaVersion is the current numeric wire version",
},
Some(OMENA_QUERY_CURRENT_SCHEMA_VERSION_LABEL) => OmenaQuerySchemaVersionCheckV0 {
schema_version: OMENA_QUERY_CURRENT_SCHEMA_VERSION,
product: "omena-query.schema-version-check",
requested_version: Some(OMENA_QUERY_CURRENT_SCHEMA_VERSION_LABEL.to_string()),
current_version: OMENA_QUERY_CURRENT_SCHEMA_VERSION,
accepted: false,
status: "labelOnlyVersionRejected",
migration_action: "sendNumericSchemaVersion",
reason: "V0 is a Rust type label; external payloads must use numeric schemaVersion 0",
},
Some(version) => OmenaQuerySchemaVersionCheckV0 {
schema_version: OMENA_QUERY_CURRENT_SCHEMA_VERSION,
product: "omena-query.schema-version-check",
requested_version: Some(version.to_string()),
current_version: OMENA_QUERY_CURRENT_SCHEMA_VERSION,
accepted: false,
status: "unsupportedVersion",
migration_action: "rejectBeforeExecution",
reason: "no migration adapter is registered for this schemaVersion",
},
None => OmenaQuerySchemaVersionCheckV0 {
schema_version: OMENA_QUERY_CURRENT_SCHEMA_VERSION,
product: "omena-query.schema-version-check",
requested_version: None,
current_version: OMENA_QUERY_CURRENT_SCHEMA_VERSION,
accepted: false,
status: "missingVersion",
migration_action: "rejectBeforeExecution",
reason: "external payloads must carry schemaVersion explicitly",
},
}
}