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
+29 -1
View File
@@ -16,6 +16,7 @@ impl App {
home::Event::New => self.handle(Message::Request(Pending::New)),
home::Event::Open => self.handle(Message::Request(Pending::Open)),
home::Event::Example => self.handle(Message::Request(Pending::Demo)),
home::Event::Walkthrough => self.handle(Message::Request(Pending::Walkthrough)),
home::Event::Guide => self.update(Message::Page(Page::Guide)),
home::Event::Resume => self.update(Message::Page(self.last_workspace_page)),
home::Event::OpenRecent(path) => {
@@ -151,6 +152,7 @@ impl App {
self.reset(restored.document.project().clone(), None);
self.hosted.leave_document();
self.document = restored.document;
self.migration = self.document.compiled().decoded.migration.clone();
self.selected = if self.project().layer_of(restored.selected).is_some()
|| restored.selected == self.project().id
{
@@ -184,7 +186,11 @@ impl App {
} else {
Page::Diagram
};
self.status="Recovered an unsaved local copy. Choose Save as to save it; the original file and hosted model are unchanged.".into();
self.status = if self.migration.is_some() {
"Recovered source 5 as source 6 in an unsaved local copy. Draft text is preserved; workflow previews were rebuilt and semantic impact approvals need review. Choose Save as to save it."
} else {
"Recovered an unsaved local copy. Choose Save as to save it; the original file and hosted model are unchanged."
}.into();
self.request_lint()
}
}
@@ -279,6 +285,28 @@ mod tests {
assert!(Arc::ptr_eq(&accepted, &app.document.snapshot()));
}
#[test]
fn walkthrough_request_keeps_unfinished_source_behind_the_normal_pending_guard() {
let mut app = App::with_project(Project::demo());
let accepted = app.document.snapshot();
let raw = format!(
"{}\nunfinished walkthrough draft",
app.source_workspace.text()
);
app.source_workspace
.edit(raw.clone(), app.source_editor.cursor());
let task = app.update(Message::Home(home::Event::Walkthrough));
assert!(matches!(app.pending, Some(Pending::Walkthrough)));
assert!(!app.busy);
assert!(iced_runtime::task::into_stream(task).is_none());
assert_eq!(app.source_workspace.text(), raw);
assert!(Arc::ptr_eq(&accepted, &app.document.snapshot()));
let _ = app.update(Message::Escape);
assert!(app.pending.is_none());
assert_eq!(app.source_workspace.text(), raw);
assert!(Arc::ptr_eq(&accepted, &app.document.snapshot()));
}
fn retained_snapshot(app: &App) -> recovery::Snapshot {
recovery::Snapshot::capture(
app.canvas_document,