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
69
70
71
72
73
74
75
use crateDotSet;
/// Evidence that a context was received from a named peer.
///
/// A `Received` records two facts a receive path can *prove*: which peer the
/// evidence came from, and the [`DotSet`] context that peer demonstrably held
/// (a peer cannot ship what it has not seen, so the context of a delta *it*
/// sent is a lower bound on what it holds). Both fields are private, so the
/// only way to obtain one carrying a real receipt is the receive path,
/// [`Composer::absorb`](crate::metis::Composer::absorb), which testifies to
/// exactly what it merged. [`Purview::note`](super::Purview::note) reads the
/// peer *out of* the evidence. That makes two hazards unrepresentable, both of
/// which prose used to guard: over-claiming a context the peer never had, and
/// misattributing a context to the wrong peer. There is no way to hand `note`
/// a bare [`DotSet`] paired with an arbitrary station id.
///
/// This is the receive-side twin of [`Cut`](crate::metis::Cut): a witness minted
/// only where the proof exists, guarding a downstream read that would otherwise
/// trust an unaudited claim. The one deliberate door out of that discipline is
/// [`trust`](Self::trust); see its warning.