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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
//! Layer 5 of BoundGraph: the checkers, and the signatures that make them evidence.
//!
//! This is where Law III is cashed in. A reasoner proposes; a tool acts; a
//! slicer condenses. None of that is allowed to commit anything. A state change
//! commits only on [`Evidence`] — a verdict from a model-free checker, signed,
//! naming exactly what it looked at.
//!
//! # The two guarantees, and where they live
//!
//! **Model-free.** [`Checker::check`] refuses to run a checker whose declared
//! capability set is not within [`checker_ceiling`], which omits `net` and
//! `secret`. A checker therefore cannot reach an inference API — not by
//! convention, by authority. The same ceiling omits `time` and `rand`, which is
//! what makes the determinism requirement enforceable rather than aspirational.
//!
//! **Unforgeable.** [`Checker::check`] puts the digests of the work order and
//! the condensate into the evidence itself and then signs the whole thing, so a
//! passing verdict cannot be harvested and reattached to a patch that failed.
//! Both steps are in the trait's provided method, so no implementation can skip
//! either.
//!
//! # Status
//!
//! Feature 08, milestone M3. Built in dependency order rather than story order:
//! signing has no dependency on the trait, and `check` returns signed evidence,
//! so signing comes first.
//!
//! | Story | Module |
//! |---|---|
//! | US-0802 evidence signing | [`sign`] |
//! | US-0801 checker trait | [`checker`] |
//! | US-0803 JSON Schema checker | [`schema`] |
//! | US-0804 compile checker | [`sandbox`], [`compile`] |
//! | US-0805 test-run checker | [`testrun`] |
//! | US-0806 diff-scope checker | [`scope`] |
//!
//! [`Evidence`]: boundgraph_core::Evidence
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use Unconfined;
pub use ;
pub use ;
/// Re-exported so a consumer holding evidence does not also depend on
/// `boundgraph-core` just for the types it is made of.
pub use ;