From 7a4e0b4677e0241ab19489ef40a462810f841415 Mon Sep 17 00:00:00 2001 From: "Somhairle H. Marisol" Date: Mon, 21 Sep 2026 10:58:44 +0800 Subject: fix(boot): failed live attempt no longer shadows pre-published history; boot-default submit picks a fresh live run id --- src/SomhairlesDream.Server/ArtifactRunCoordinator.fs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'src/SomhairlesDream.Server/ArtifactRunCoordinator.fs') diff --git a/src/SomhairlesDream.Server/ArtifactRunCoordinator.fs b/src/SomhairlesDream.Server/ArtifactRunCoordinator.fs index 51a4fcd..6cd5fd3 100644 --- a/src/SomhairlesDream.Server/ArtifactRunCoordinator.fs +++ b/src/SomhairlesDream.Server/ArtifactRunCoordinator.fs @@ -267,10 +267,17 @@ type ArtifactRunCoordinator( | Some store -> let snapshot = store.Observe(clock ()) - if snapshot.Status <> "complete" then - Error(RunNotComplete snapshot) - else + if snapshot.Status = "complete" then verifiedManifest projectId runId + else + // A live entry that failed or is idling (e.g. "run directory + // already exists" because the run was pre-published on disk) + // must not shadow a complete on-disk manifest: the historical + // replay stays viewable while the rejected live attempt is + // reported by /api/runs/events. + match verifiedManifest projectId runId with + | Ok manifest -> Ok manifest + | Error _ -> Error(RunNotComplete snapshot) member _.Artifact(projectId: string, runId: string, relativePath: string) : Result = match registry.TryFind(projectId, runId) with -- cgit v1.2.3