lib/closure/src/schema/record.zig
daab053ee43316e1809a84551d573ddd1e5bf3d2
1 const axis = @import("axis.zig");
2 const value = @import("value.zig");
3
4 pub const NodeId = u32;
5 pub const RecordId = u32;
6 pub const ClaimId = u32;
7 pub const GenerationId = u64;
8
9 pub const Node = extern struct {
10 id: NodeId,
11 descriptor: value.Descriptor,
12 identity: value.Digest,
13 subject_kind: axis.SubjectKind,
14 material_role: axis.MaterialRole,
15 origin: axis.Origin,
16 phases: axis.PhaseSet,
17 execution_locus: axis.ExecutionLocus,
18 owner: value.Name,
19 authority: axis.AuthorityClass,
20 artifact_kind: axis.ArtifactKind,
21 };
22
23 pub const Edge = extern struct {
24 id: RecordId,
25 source: NodeId,
26 target: NodeId,
27 kind: axis.EdgeKind,
28 };
29
30 pub const Artifact = extern struct {
31 id: RecordId,
32 node: NodeId,
33 byte_length: u64,
34 digest: value.Digest,
35 witness: axis.WitnessKind,
36 };
37
38 pub const ByteRange = extern struct {
39 id: RecordId,
40 artifact: RecordId,
41 offset: u64,
42 length: u64,
43 digest: value.Digest,
44 executable: bool,
45 witness: axis.WitnessKind,
46 };
47
48 pub const DigestRecord = extern struct {
49 id: RecordId,
50 node: NodeId,
51 purpose: value.Name,
52 digest: value.Digest,
53 witness: axis.WitnessKind,
54 };
55
56 pub const ProvenanceParent = extern struct {
57 id: RecordId,
58 child: NodeId,
59 parent: NodeId,
60 };
61
62 pub const SourceRecord = extern struct {
63 id: RecordId,
64 node: NodeId,
65 path: value.Descriptor,
66 digest: value.Digest,
67 witness: axis.WitnessKind,
68 };
69
70 pub const BuildRecord = extern struct {
71 id: RecordId,
72 node: NodeId,
73 tool: NodeId,
74 option: value.Descriptor,
75 digest: value.Digest,
76 witness: axis.WitnessKind,
77 };
78
79 pub const Authority = extern struct {
80 id: RecordId,
81 source: NodeId,
82 target: NodeId,
83 granted: axis.GrantedAuthority,
84 };
85
86 pub const LineageReference = extern struct {
87 id: RecordId,
88 node: NodeId,
89 descriptor: value.Descriptor,
90 digest: value.Digest,
91 witness: axis.WitnessKind,
92 };
93
94 pub const ServiceDescriptor = extern struct {
95 id: RecordId,
96 node: NodeId,
97 provider: value.Descriptor,
98 protocol: value.Descriptor,
99 endpoint_rule: value.Descriptor,
100 trust_anchor: value.Descriptor,
101 failure_contract: value.Descriptor,
102 requirement: axis.RequirementClass,
103 };
104
105 pub const ResidualRoot = extern struct {
106 id: RecordId,
107 claim: ClaimId,
108 node: NodeId,
109 treatment: axis.Treatment,
110 };
111
112 pub const Claim = extern struct {
113 id: ClaimId,
114 name: value.Name,
115 artifact: RecordId,
116 artifact_digest: value.Digest,
117 profiles: value.ProfileSet,
118 traversed_edges: axis.EdgeSet,
119 };
120
121 pub const ClaimNode = extern struct {
122 id: RecordId,
123 claim: ClaimId,
124 node: NodeId,
125 treatment: axis.Treatment,
126 };
127
128 pub const GenerationInput = struct {
129 id: GenerationId,
130 root: value.Digest,
131 nodes: []const Node,
132 edges: []const Edge,
133 artifacts: []const Artifact,
134 ranges: []const ByteRange,
135 digests: []const DigestRecord,
136 provenance_parents: []const ProvenanceParent,
137 source_records: []const SourceRecord,
138 build_records: []const BuildRecord,
139 authorities: []const Authority,
140 lineage_references: []const LineageReference,
141 service_descriptors: []const ServiceDescriptor,
142 residual_roots: []const ResidualRoot,
143 claims: []const Claim,
144 claim_nodes: []const ClaimNode,
145 };