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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
//! Component specifications — the one-level-up analogue of [`crate::spec::types::OpSpec`].
//!
//! A `ComponentSpec` describes one load-bearing piece of vyre-conform's own
//! machinery (a law checker, the reference interpreter, an oracle resolver,
//! the mutation gate, the generator) with the same discipline vyre-conform
//! imposes on vyre ops. If a ComponentSpec's adversary corpus rejects a
//! deliberately-broken implementation and its mutation sensitivity list
//! covers every corruption a sneaky agent could introduce, the component
//! itself is trustworthy.
use crateAdversaryRef;
use crateMetaMutationClass;
use crate;
/// The kind of vyre-conform internal this component represents.
///
/// Every load-bearing piece of vyre-conform falls into exactly one of these
/// kinds. When a new kind of internal is added (e.g., a proof-token
/// attribute makes this backwards-compatible.
/// A single boundary witness pair for law-checker components.
/// A single executable input/expected-verdict row for a component.
///
/// The meta-level analogue of [`crate::spec::types::SpecRow`]. Each row is a
/// hand-written adversarial input: a specific scenario a component must
/// handle correctly, with a human rationale that a reader can verify in
/// seconds. Rows with empty rationale are rejected by
/// [`verify_meta_coverage`].
///
/// [`verify_meta_coverage`]: crate::meta::verify_meta_coverage
/// A single precondition or postcondition on a component.
///
/// Contracts are the NASA-JPL discipline: every function under test has an
/// explicit pre/post contract, and tests verify the contract rather than
/// the implementation. If the contract holds, the implementation may change
/// freely — meta-tests never over-fit to implementation detail.
/// Whether a [`Contract`] is checked before or after the component runs.
/// The spec of a vyre-conform internal.
///
/// Every load-bearing piece of vyre-conform registers one `ComponentSpec`
/// via the [`register_component!`] macro. The registry is checked at build
/// time by [`verify_meta_coverage`] — a missing field is a build error,
/// never a runtime warning.
///
/// [`register_component!`]: crate::register_component
/// [`verify_meta_coverage`]: crate::meta::verify_meta_coverage