feat: fail closed on conflicting P_Rec_Annot startup roster
This commit is contained in:
@@ -166,8 +166,12 @@ internal static class PilotCli
|
||||
if (!TryResolvePaths(baseConfig, out var basePaths, out error)) return Fail(Blocked, error!);
|
||||
if (baseConfig.LauncherMode != LauncherMode.NextPilot || !baseConfig.PilotEnabled || !baseConfig.AllowProcessStart || !baseConfig.RequireExplicitExecute || !baseConfig.ForceAfterEvidence) return Fail(Blocked, "AUTOMATION_SAFETY_GATE_REJECTED");
|
||||
if (!TryBuildManifest(options.PackageSource, options.EntryAssembly, out var manifest, out var manifestHash, out error)) return Fail(Blocked, error!);
|
||||
if (Process.GetProcessesByName("acad").Any()) return Fail(AcadRunning, "ACAD_ALREADY_RUNNING");
|
||||
Directory.CreateDirectory(options.EvidenceRoot);
|
||||
var roster = StartupRosterPreflight.Inspect(options.PackageSource, manifest!);
|
||||
StartupRosterPreflight.Write(Path.Combine(options.EvidenceRoot, "startup-roster-preflight.json"), roster);
|
||||
await journal.RecordAsync("StartupRosterPreflight", roster.IsSafe ? "Completed" : "Failed", roster.Status.ToString(), CancellationToken.None);
|
||||
if (!roster.IsSafe) return Fail(Blocked, "CANDIDATE_ISOLATION_" + roster.Status.ToString().ToUpperInvariant());
|
||||
if (Process.GetProcessesByName("acad").Any()) return Fail(AcadRunning, "ACAD_ALREADY_RUNNING");
|
||||
await journal.RecordAsync("HashPreparationStarted", "Started", null, CancellationToken.None);
|
||||
var before = await ContentHashesAsync(options.FixtureMarker, journal, CancellationToken.None);
|
||||
await journal.RecordAsync("HashPreparationCompleted", "Completed", null, CancellationToken.None);
|
||||
|
||||
Reference in New Issue
Block a user