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
//! Event role and provenance contracts.
/// Structural role in the serial plan.
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub enum SerialRole {
/// One or more structural row ordinals presented directly.
Structural,
/// Material derived from prior structural or derived events.
Derived,
/// Non-structural ornament built around explicit parent material.
Ornamental,
/// Imported or externally motivated material attached to explicit parents.
External,
}
impl SerialRole {
/// Returns the stable role token.
pub const fn as_str(self) -> &'static str {
match self {
Self::Structural => "structural",
Self::Derived => "derived",
Self::Ornamental => "ornamental",
Self::External => "external",
}
}
}
/// Additional immutable provenance for one planned event.
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum SerialOrigin {
/// The event states structural row material directly.
Structural {
/// Human-facing note about the structural statement.
rationale: String,
},
/// The event derives from explicit parents through a named technique.
Derived {
/// Stable technique or transform name.
technique: String,
},
/// The event ornaments explicit parents without claiming structural coverage.
Ornamental {
/// Stable ornament technique name.
technique: String,
},
/// The event imports external material but still cites explicit parent evidence.
External {
/// Stable external source or rationale tag.
source: String,
},
}