feat: Implement Scheduler Worker Options and Planner Loop
	
		
			
	
		
	
	
		
	
		
			Some checks failed
		
		
	
	
		
			
				
	
				Docs CI / lint-and-preview (push) Has been cancelled
				
			
		
		
	
	
				
					
				
			
		
			Some checks failed
		
		
	
	Docs CI / lint-and-preview (push) Has been cancelled
				
			- Added `SchedulerWorkerOptions` class to encapsulate configuration for the scheduler worker. - Introduced `PlannerBackgroundService` to manage the planner loop, fetching and processing planning runs. - Created `PlannerExecutionService` to handle the execution logic for planning runs, including impact targeting and run persistence. - Developed `PlannerExecutionResult` and `PlannerExecutionStatus` to standardize execution outcomes. - Implemented validation logic within `SchedulerWorkerOptions` to ensure proper configuration. - Added documentation for the planner loop and impact targeting features. - Established health check endpoints and authentication mechanisms for the Signals service. - Created unit tests for the Signals API to ensure proper functionality and response handling. - Configured options for authority integration and fallback authentication methods.
This commit is contained in:
		| @@ -12,6 +12,8 @@ internal static class CliMetrics | ||||
|     private static readonly Counter<long> ScanRunCounter = Meter.CreateCounter<long>("stellaops.cli.scan.run.count"); | ||||
|     private static readonly Counter<long> OfflineKitDownloadCounter = Meter.CreateCounter<long>("stellaops.cli.offline.kit.download.count"); | ||||
|     private static readonly Counter<long> OfflineKitImportCounter = Meter.CreateCounter<long>("stellaops.cli.offline.kit.import.count"); | ||||
|     private static readonly Counter<long> PolicySimulationCounter = Meter.CreateCounter<long>("stellaops.cli.policy.simulate.count"); | ||||
|     private static readonly Counter<long> SourcesDryRunCounter = Meter.CreateCounter<long>("stellaops.cli.sources.dryrun.count"); | ||||
|     private static readonly Histogram<double> CommandDurationHistogram = Meter.CreateHistogram<double>("stellaops.cli.command.duration.ms"); | ||||
|  | ||||
|     public static void RecordScannerDownload(string channel, bool fromCache) | ||||
| @@ -44,6 +46,18 @@ internal static class CliMetrics | ||||
|             new("status", string.IsNullOrWhiteSpace(status) ? "queued" : status) | ||||
|         }); | ||||
|  | ||||
|     public static void RecordPolicySimulation(string outcome) | ||||
|         => PolicySimulationCounter.Add(1, new KeyValuePair<string, object?>[] | ||||
|         { | ||||
|             new("outcome", string.IsNullOrWhiteSpace(outcome) ? "unknown" : outcome) | ||||
|         }); | ||||
|  | ||||
|     public static void RecordSourcesDryRun(string status) | ||||
|         => SourcesDryRunCounter.Add(1, new KeyValuePair<string, object?>[] | ||||
|         { | ||||
|             new("status", string.IsNullOrWhiteSpace(status) ? "unknown" : status) | ||||
|         }); | ||||
|  | ||||
|     public static IDisposable MeasureCommandDuration(string command) | ||||
|     { | ||||
|         var start = DateTime.UtcNow; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user