//! Phase 29ai P0: Facts layer skeleton (SSOT)
//!
//! Responsibility: derive stable, structural "facts" from AST/CFG.
//! - No planning (no Plan/Frag decisions)
//! - No emission (no MIR/Frag generation)

#![allow(dead_code)]

pub(in crate::mir::builder) mod loop_facts;
pub(in crate::mir::builder) mod feature_facts;
pub(in crate::mir::builder) mod pattern1_simplewhile_facts;
pub(in crate::mir::builder) mod pattern3_ifphi_facts;
pub(in crate::mir::builder) mod pattern4_continue_facts;
pub(in crate::mir::builder) mod pattern5_infinite_early_exit_facts;
pub(in crate::mir::builder) mod pattern8_bool_predicate_scan_facts;
pub(in crate::mir::builder) mod pattern9_accum_const_loop_facts;
pub(in crate::mir::builder) mod pattern2_break_facts;
pub(in crate::mir::builder) mod pattern2_loopbodylocal_facts;
pub(in crate::mir::builder) mod scan_shapes;
pub(in crate::mir::builder) mod skeleton_facts;

pub(in crate::mir::builder) use loop_facts::{
    try_build_loop_facts, try_build_loop_facts_with_ctx, LoopFacts,
};
