workload_spec/version.rs
1use serde::{Deserialize, Serialize};
2use ts_rs::TS;
3
4/// Wire-format schema version envelope.
5///
6/// Single variant today. When a breaking field rename or removal requires a
7/// migration path, a new variant is added. The `schema_version` field on
8/// `WorkloadSpec` uses this as a tag so rolling clusters can decode multiple
9/// versions simultaneously. See arch doc §Evolution for the versioning rules.
10#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, TS)]
11#[cfg_attr(feature = "json-schema", derive(schemars::JsonSchema))]
12pub enum SchemaVersion {
13 V1,
14}
15
16impl Default for SchemaVersion {
17 fn default() -> Self {
18 Self::V1
19 }
20}