Complete source 6 engineering workflows and preserve release validation evidence
This commit is contained in:
@@ -226,6 +226,18 @@ impl State {
|
||||
state.preview = state.plan(p);
|
||||
Ok(state)
|
||||
}
|
||||
pub(crate) fn from_recovery_after_source5_upgrade(
|
||||
p: &Project,
|
||||
legacy_base: &str,
|
||||
value: serde_json::Value,
|
||||
) -> Result<Self, String> {
|
||||
let mut saved: RecoveryState = serde_json::from_value(value).map_err(|e| e.to_string())?;
|
||||
if saved.version != 1 || saved.base != legacy_base {
|
||||
return Err("Port workflow recovery does not match the accepted source-5 model identity and revision.".into());
|
||||
}
|
||||
saved.base = transitions::project_fingerprint(p);
|
||||
Self::from_recovery(p, serde_json::to_value(saved).map_err(|e| e.to_string())?)
|
||||
}
|
||||
pub fn new(p: &Project, subject: Id, action: Action) -> Result<Self, String> {
|
||||
if !actions(p, subject).contains(&action) {
|
||||
return Err("This port action is unavailable for the selected element.".into());
|
||||
@@ -802,6 +814,7 @@ mod tests {
|
||||
layer: Layer::Sa,
|
||||
projection: ProjectionKind::Overview,
|
||||
routes: Vec::new(),
|
||||
view_options: Default::default(),
|
||||
nodes: Default::default(),
|
||||
},
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user