1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
//! Shared detection back-half plus the geometry-only grid-growth engine.
//!
//! The topological strategy's only job is to build connected components;
//! everything after — local component merge ([`merge`]), geometric validation
//! ([`validate`]), and the per-component lattice fit (`fit`) — is shared here.
//!
//! This module also hosts the pattern-agnostic grid-growth primitives and the
//! geometry-only recovery schedule that powers the topological synthesized-axis
//! (`Evidence::Positions` / `Evidence::Oriented1`) path:
//!
//! - [`grow`] — the [`SquareAttachPolicy`](grow::SquareAttachPolicy) contract,
//! candidate search, ambiguity resolution, and the per-edge cardinal gate.
//! - [`grow_extend`] / [`extension`] / [`fill`] — boundary-extension and
//! interior-fill engines built on those primitives.
//! - [`recovery_schedule`] — the
//! [`RecoverySchedule`](recovery_schedule::RecoverySchedule) fixed-point that
//! composes extension + fill + revalidation + drop filters.
//!
//! A crate-private geometry-first attach policy for synthesized-axis evidence
//! backs the recovery schedule. The undirected-angle helpers it needs live in
//! [`crate::cluster`] (the single source of truth for `wrap_pi` /
//! `angular_dist_pi`).
//!
//! The chessboard crate composes [`grow`] / [`fill`] / [`extension`] /
//! [`grow_extend`] directly for its own topological recovery path.
// `fit` is engine-internal: only the in-crate strategy facades consume
// `fit_component` / `FitComponentResult` (re-exported `pub(crate)` below). No
// external consumer reaches it, so the module is crate-private — keeping the
// advanced tier no wider than what callers actually use.
pub
// Geometry-only grid-growth engine + recovery schedule (relocated from the
// retired `seed_and_grow` module; consumed by the topological recovery path
// and, externally, by the chessboard crate).
/// Deprecated path alias for [`recovery_schedule`]. The module was renamed
/// `recovery` → `recovery_schedule` in 0.10.0; this alias keeps external
/// advanced-engine consumers that import
/// `projective_grid::shared::recovery::{recover_components, local_pitch_of, …}`
/// compiling. Remove after the 0.10.0 migration window.
pub use recovery_schedule as recovery;
pub use ;