//! Pipeline resolution: `extends` chains, variable expansion, `parallel:matrix`.
//!
//! Takes a [`crate::model::RawPipeline`] from the parser and produces a fully
//! resolved [`crate::model::Pipeline`]:
//!
//! - Walks `extends:` chains and deep-merges inherited keys.
//! - Expands CI predefined variables and job-level `variables:`.
//! - Expands `parallel: matrix:` into concrete job instances.
//! - Resolves `needs:` references and validates the dependency graph.
//!
//! [`resolve_pipeline_tolerant`] records unresolved references instead of
//! failing, so the TUI can still show partial pipelines (useful with
//! `--allow-unresolved` when remote includes have missing templates).

pub mod github;
pub mod gitlab;

// Re-export GitLab resolver as default for now
pub use gitlab::{GitContext, resolve_pipeline, resolve_pipeline_tolerant};
