Skip to main content

omena_cascade/
lib.rs

1//! Cascade-formal substrate for the Omena CSS track.
2//!
3//! The crate starts with the load-bearing algebra from the research plan:
4//! lexicographic cascade keys, specificity, provenance proofs, and a finite
5//! custom-property substitution function with explicit cycle handling.
6
7mod computed_value;
8mod conformance;
9mod custom_property;
10mod frame_footprint;
11mod fuzz;
12mod grn;
13mod modal;
14mod model;
15mod origin;
16mod proofs;
17mod property_metadata;
18mod property_metadata_idl_generated;
19mod ranking;
20mod refinement;
21mod selector;
22mod shorthand_authority;
23mod statistics;
24
25pub use computed_value::*;
26pub use conformance::*;
27pub use custom_property::*;
28pub use frame_footprint::*;
29pub use fuzz::*;
30pub use grn::*;
31pub use modal::*;
32pub use model::*;
33pub use origin::*;
34pub use proofs::{
35    evaluate_static_supports_condition, prove_box_shorthand_combination,
36    prove_layer_flatten_candidate, prove_longhand_merge,
37};
38pub use property_metadata::*;
39pub use property_metadata_idl_generated::{
40    CSS_PROPERTY_METADATA_RECORDS_V1, CSS_PROPERTY_METADATA_V1, CssCustomPropertyPolicyStaticV1,
41    CssCustomPropertyPolicyV1Json, CssPropertyMetadataRecordStaticV1,
42    CssPropertyMetadataRecordV1Json, CssPropertyMetadataSourceStaticV1,
43    CssPropertyMetadataSourceV1Json, CssPropertyMetadataStaticV1, CssPropertyMetadataV1Json,
44};
45pub use ranking::*;
46pub use refinement::*;
47pub use selector::*;
48pub use shorthand_authority::*;
49pub use statistics::*;
50
51pub fn prove_scope_flatten_candidate(mut input: ScopeFlattenInputV0) -> ScopeFlattenProofV0 {
52    if omena_syntax::css_keyword(input.root_selector.trim()).equals(":root") {
53        input.root_selector = ":root".to_string();
54    }
55    proofs::prove_scope_flatten_candidate(input)
56}
57
58pub fn summarize_cascade_boundary() -> CascadeBoundarySummary {
59    CascadeBoundarySummary {
60        product: "omena-cascade.boundary",
61        ordering_model: "lexicographicCascadeKey",
62        substitution_model: "finiteCustomPropertyLeastFixedPoint",
63        least_fixed_point_proof_model: "finite-env monotone custom-property substitution with cycle-to-guaranteed-invalid bottoming and env-size iteration bound",
64        ready_surfaces: vec![
65            "cascadeKeyOrdering",
66            "specificityOrdering",
67            "cascadeOutcomeProof",
68            "genericCascadeWinner",
69            "semanticDesignTokenRanking",
70            "queryReadCascadeAtPosition",
71            "selectorContextWitness",
72            "selectorMatchWitness",
73            "cascadeConformanceSeedCorpus",
74            "customPropertySubstitution",
75            "customPropertyLeastFixedPoint",
76            "customPropertyLeastFixedPointProof",
77            "customPropertyLeastFixedPointTrace",
78            "cycleToGuaranteedInvalid",
79            "computedValueResolutionSeed",
80            "inheritanceInitialValueSeed",
81            "shorthandCombinationProof",
82            "supportsStaticEvalWitness",
83            "scopeFlattenProof",
84            "layerFlattenProof",
85            "modalCheckWitnessV0",
86            "cascadeMarginSchemaV0",
87            "wptCascadeSeedCorpus",
88            "spinGlassStatisticsV0",
89            "grnAttractorBasinV0",
90            "diagnosticFrameFootprintV0",
91        ],
92        not_ready_surfaces: vec!["fullInitialValueTable", "fullWptCascadeCorpus"],
93    }
94}
95
96#[cfg(test)]
97mod tests;