Complete source 6 engineering workflows and preserve release validation evidence

This commit is contained in:
Codex
2026-09-06 21:49:04 -07:00
parent 2b2d2bc18b
commit 4b6b5fc197
290 changed files with 48271 additions and 1791 deletions
+13
View File
@@ -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(),
},
);