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
//! A **definition set**: the channels, workflows and connectors that are
//! authored together and must be consistent with each other.
//!
//! Orion validated one file at a time offline. `orion-server lint wf.json`
//! parses a workflow, checks its shapes, and says "valid" — while the channel
//! that names it, the connector its tasks reach for, and the `channel_call`
//! target it invokes all sit in files the command never opened. A set can be
//! green on every per-file gate and still be missing a channel at runtime
//! (#286).
//!
//! The cross-reference pass that closes that already existed, in
//! `package_cli::run_lint`, over a *promotion artifact*. It was the only
//! consumer, so it owned the walk. A directory of definitions needs the same
//! checks against a different container, which is what this module separates:
//!
//! ```text
//! from_artifact() ─┐ ┌─ package lint
//! ├─ DefinitionSet ─┐ │
//! from_directory() ─┘ ├─ check() ─┤
//! Boundary ──────┘ └─ lint <dir>
//! ```
//!
//! Two loaders, one pass. The alternative — a second validator beside the
//! first — is how the artifact form and the directory form come to disagree
//! about what a valid set is, which is worse than having only one of them.
//!
//! ## What a [`Boundary`] is for
//!
//! Not every name a set references has to live inside it. A promotion artifact
//! says so explicitly in `requires`: these channels and connectors are expected
//! to exist on the target already, so closure checking must not fail on them. A
//! directory needs the same escape hatch for the same reason, so the concept is
//! lifted out of the artifact and given to both.
//!
//! The *default* differs, and deliberately. An artifact's boundary is whatever
//! it declares. A directory's is **empty** — everything must resolve in-set —
//! because the gate exists to catch the missing channel, and a permissive
//! default would be a gate that passes the bug it was built for.
pub use check;
pub use ;
pub use ;
pub use ;
pub use ;