//! Adobe compatibility rule metadata + executable rule decisions.
//!
//! `registry` documents each compatibility behaviour with stable RuleId,
//! source documents, positive examples, and counterexamples. `rules`
//! provides pure decision functions and `(Phase, Reason)` trace anchors
//! for the rules that have been migrated to executable form.

mod registry;
pub mod rules;

pub use registry::{
    registry, AdobeCompatCategory, AdobeCompatPhase, AdobeCompatRule, AdobeCompatRuleId,
    AdobeCompatStatus, DocumentRef,
};
pub use rules::{
    bind_none_subform_does_not_auto_expand, cap_suppression_by_form_dom, emit_bind_none_summary,
    emit_invisible_binding_summary, emit_non_data_widget_summary,
    exclude_bind_none_fields_from_page_data_suppression,
    exclude_non_data_widgets_from_page_suppression, form_dom_driven_repeat_instance_replication,
    ignore_invisible_server_metadata_bindings,
    repeating_subform_instance_count_clamped_to_occur_range,
    static_xfaf_excess_page_trim_with_form_dom_guard,
    suppress_empty_pages_only_when_real_data_bound, BindNoneClassification, BindNoneExpansionGate,
    CapDecision, FormDomReplicationDecision, InvisibleBindingDecision, OccurClampOutcome,
    StaticTrimDecision, SuppressPreflightDecision, WidgetClassification,
};
