relay_knowledge/storage/contracts/
operations.rs1use crate::domain::{
2 AuditStatus, GraphVersion, ProposalConflictSeverity, ProposalKind, ProposalProvenance,
3 ProposalState, ServiceOperatorState, WorkerKind,
4};
5
6#[derive(Debug, Clone, PartialEq, Eq)]
8pub struct WorkerTaskSeed {
9 pub kind: WorkerKind,
10 pub source_scope: String,
11 pub evidence_id: Option<String>,
12 pub target_graph_version: GraphVersion,
13 pub input_fingerprint: String,
14 pub payload_json: String,
15 pub now_ms: u64,
16}
17
18#[derive(Debug, Clone, PartialEq, Eq)]
20pub struct WorkerTaskClaimRequest {
21 pub kind: Option<WorkerKind>,
22 pub lease_owner: String,
23 pub lease_duration_ms: u64,
24 pub max_attempts: u32,
25 pub now_ms: u64,
26}
27
28#[derive(Debug, Clone, PartialEq, Eq)]
30pub struct WorkerTaskCompletion {
31 pub task_id: String,
32 pub lease_owner: String,
33 pub attempt_count: u32,
34 pub now_ms: u64,
35}
36
37#[derive(Debug, Clone, PartialEq, Eq)]
39pub struct WorkerTaskFailure {
40 pub task_id: String,
41 pub lease_owner: String,
42 pub attempt_count: u32,
43 pub error_kind: String,
44 pub error_message: String,
45 pub retry_backoff_ms: u64,
46 pub max_attempts: u32,
47 pub now_ms: u64,
48}
49
50#[derive(Debug, Clone, PartialEq, Eq)]
52pub struct NewProposal {
53 pub proposal_id: String,
54 pub source_scope: String,
55 pub kind: ProposalKind,
56 pub title: String,
57 pub summary: String,
58 pub payload_json: String,
59 pub origin: String,
60 pub provenance: ProposalProvenance,
61 pub confidence_basis_points: u16,
62 pub conflicts: Vec<NewProposalConflict>,
63 pub now_ms: u64,
64}
65
66#[derive(Debug, Clone, PartialEq, Eq)]
68pub struct NewProposalConflict {
69 pub conflict_id: String,
70 pub existing_fact_kind: String,
71 pub existing_fact_id: String,
72 pub severity: ProposalConflictSeverity,
73 pub reason: String,
74}
75
76#[derive(Debug, Clone, PartialEq, Eq)]
78pub struct ProposalListRequest {
79 pub state: Option<ProposalState>,
80 pub limit: usize,
81}
82
83#[derive(Debug, Clone, PartialEq, Eq)]
85pub struct ProposalDecision {
86 pub proposal_id: String,
87 pub next_state: ProposalState,
88 pub actor: String,
89 pub reason: Option<String>,
90 pub now_ms: u64,
91}
92
93#[derive(Debug, Clone, PartialEq, Eq)]
95pub struct NewAuditEvent {
96 pub operation: String,
97 pub interface: String,
98 pub request_id: String,
99 pub trace_id: String,
100 pub status: AuditStatus,
101 pub actor: Option<String>,
102 pub source_scope: Option<String>,
103 pub graph_version: u64,
104 pub detail_json: String,
105 pub message: Option<String>,
106 pub now_ms: u64,
107}
108
109#[derive(Debug, Clone, PartialEq, Eq)]
111pub struct AuditQueryRequest {
112 pub operation: Option<String>,
113 pub limit: usize,
114}
115
116#[derive(Debug, Clone, PartialEq, Eq)]
118pub struct ServiceOperatorUpdate {
119 pub state: ServiceOperatorState,
120 pub silent_updates_enabled: bool,
121 pub allowed_scopes: Vec<String>,
122 pub last_error: Option<String>,
123 pub now_ms: u64,
124}