tasker-engine 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (605) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +22 -0
  3. data/README.md +443 -0
  4. data/Rakefile +10 -0
  5. data/app/controllers/tasker/analytics_controller.rb +179 -0
  6. data/app/controllers/tasker/application_controller.rb +45 -0
  7. data/app/controllers/tasker/graphql_controller.rb +193 -0
  8. data/app/controllers/tasker/handlers_controller.rb +217 -0
  9. data/app/controllers/tasker/health_controller.rb +229 -0
  10. data/app/controllers/tasker/metrics_controller.rb +111 -0
  11. data/app/controllers/tasker/page_sort.rb +97 -0
  12. data/app/controllers/tasker/task_diagrams_controller.rb +30 -0
  13. data/app/controllers/tasker/tasks_controller.rb +123 -0
  14. data/app/controllers/tasker/workflow_steps_controller.rb +69 -0
  15. data/app/graphql/examples/all_tasks.graphql +22 -0
  16. data/app/graphql/examples/pending_tasks.graphql +23 -0
  17. data/app/graphql/tasker/graph_ql_types/annotation_type.rb +14 -0
  18. data/app/graphql/tasker/graph_ql_types/base_argument.rb +9 -0
  19. data/app/graphql/tasker/graph_ql_types/base_connection.rb +11 -0
  20. data/app/graphql/tasker/graph_ql_types/base_edge.rb +10 -0
  21. data/app/graphql/tasker/graph_ql_types/base_enum.rb +9 -0
  22. data/app/graphql/tasker/graph_ql_types/base_field.rb +10 -0
  23. data/app/graphql/tasker/graph_ql_types/base_input_object.rb +10 -0
  24. data/app/graphql/tasker/graph_ql_types/base_interface.rb +14 -0
  25. data/app/graphql/tasker/graph_ql_types/base_object.rb +10 -0
  26. data/app/graphql/tasker/graph_ql_types/base_scalar.rb +9 -0
  27. data/app/graphql/tasker/graph_ql_types/base_union.rb +11 -0
  28. data/app/graphql/tasker/graph_ql_types/dependent_system_object_map_type.rb +18 -0
  29. data/app/graphql/tasker/graph_ql_types/dependent_system_type.rb +13 -0
  30. data/app/graphql/tasker/graph_ql_types/mutation_type.rb +16 -0
  31. data/app/graphql/tasker/graph_ql_types/named_step_type.rb +16 -0
  32. data/app/graphql/tasker/graph_ql_types/named_task_type.rb +14 -0
  33. data/app/graphql/tasker/graph_ql_types/named_tasks_named_step_type.rb +19 -0
  34. data/app/graphql/tasker/graph_ql_types/node_type.rb +12 -0
  35. data/app/graphql/tasker/graph_ql_types/query_type.rb +20 -0
  36. data/app/graphql/tasker/graph_ql_types/task_annotation_type.rb +17 -0
  37. data/app/graphql/tasker/graph_ql_types/task_interface.rb +17 -0
  38. data/app/graphql/tasker/graph_ql_types/task_type.rb +26 -0
  39. data/app/graphql/tasker/graph_ql_types/workflow_step_type.rb +154 -0
  40. data/app/graphql/tasker/graph_ql_types.rb +42 -0
  41. data/app/graphql/tasker/mutations/base_mutation.rb +13 -0
  42. data/app/graphql/tasker/mutations/cancel_step.rb +29 -0
  43. data/app/graphql/tasker/mutations/cancel_task.rb +29 -0
  44. data/app/graphql/tasker/mutations/create_task.rb +52 -0
  45. data/app/graphql/tasker/mutations/update_step.rb +36 -0
  46. data/app/graphql/tasker/mutations/update_task.rb +41 -0
  47. data/app/graphql/tasker/queries/all_annotation_types.rb +17 -0
  48. data/app/graphql/tasker/queries/all_tasks.rb +23 -0
  49. data/app/graphql/tasker/queries/base_query.rb +9 -0
  50. data/app/graphql/tasker/queries/helpers.rb +16 -0
  51. data/app/graphql/tasker/queries/one_step.rb +24 -0
  52. data/app/graphql/tasker/queries/one_task.rb +18 -0
  53. data/app/graphql/tasker/queries/tasks_by_annotation.rb +31 -0
  54. data/app/graphql/tasker/queries/tasks_by_status.rb +30 -0
  55. data/app/graphql/tasker/tasker_rails_schema.rb +52 -0
  56. data/app/jobs/tasker/application_job.rb +8 -0
  57. data/app/jobs/tasker/metrics_export_job.rb +252 -0
  58. data/app/jobs/tasker/task_runner_job.rb +224 -0
  59. data/app/models/tasker/annotation_type.rb +26 -0
  60. data/app/models/tasker/application_record.rb +70 -0
  61. data/app/models/tasker/dependent_system.rb +26 -0
  62. data/app/models/tasker/dependent_system_object_map.rb +64 -0
  63. data/app/models/tasker/diagram/edge.rb +106 -0
  64. data/app/models/tasker/diagram/flowchart.rb +137 -0
  65. data/app/models/tasker/diagram/node.rb +99 -0
  66. data/app/models/tasker/named_step.rb +41 -0
  67. data/app/models/tasker/named_task.rb +121 -0
  68. data/app/models/tasker/named_tasks_named_step.rb +82 -0
  69. data/app/models/tasker/step_dag_relationship.rb +65 -0
  70. data/app/models/tasker/step_readiness_status.rb +59 -0
  71. data/app/models/tasker/task.rb +424 -0
  72. data/app/models/tasker/task_annotation.rb +36 -0
  73. data/app/models/tasker/task_diagram.rb +332 -0
  74. data/app/models/tasker/task_execution_context.rb +29 -0
  75. data/app/models/tasker/task_namespace.rb +41 -0
  76. data/app/models/tasker/task_transition.rb +235 -0
  77. data/app/models/tasker/workflow_step.rb +461 -0
  78. data/app/models/tasker/workflow_step_edge.rb +94 -0
  79. data/app/models/tasker/workflow_step_transition.rb +434 -0
  80. data/app/serializers/tasker/annotation_type_serializer.rb +8 -0
  81. data/app/serializers/tasker/handler_serializer.rb +109 -0
  82. data/app/serializers/tasker/task_annotation_serializer.rb +32 -0
  83. data/app/serializers/tasker/task_serializer.rb +168 -0
  84. data/app/serializers/tasker/workflow_step_serializer.rb +27 -0
  85. data/app/services/tasker/analytics_service.rb +409 -0
  86. data/app/views/tasker/task/_diagram.html.erb +32 -0
  87. data/config/initializers/dry_struct.rb +11 -0
  88. data/config/initializers/statesman.rb +6 -0
  89. data/config/initializers/tasker_orchestration.rb +17 -0
  90. data/config/initializers/time_formats.rb +4 -0
  91. data/config/routes.rb +34 -0
  92. data/config/tasker/subscriptions/example_integrations.yml +67 -0
  93. data/config/tasker/system_events.yml +305 -0
  94. data/db/functions/calculate_dependency_levels_v01.sql +45 -0
  95. data/db/functions/get_analytics_metrics_v01.sql +137 -0
  96. data/db/functions/get_slowest_steps_v01.sql +82 -0
  97. data/db/functions/get_slowest_tasks_v01.sql +96 -0
  98. data/db/functions/get_step_readiness_status_batch_v01.sql +140 -0
  99. data/db/functions/get_step_readiness_status_v01.sql +139 -0
  100. data/db/functions/get_system_health_counts_v01.sql +108 -0
  101. data/db/functions/get_task_execution_context_v01.sql +108 -0
  102. data/db/functions/get_task_execution_contexts_batch_v01.sql +104 -0
  103. data/db/init/schema.sql +2277 -0
  104. data/db/migrate/20250701165431_initial_tasker_schema.rb +116 -0
  105. data/db/views/tasker_step_dag_relationships_v01.sql +69 -0
  106. data/docs/APPLICATION_GENERATOR.md +384 -0
  107. data/docs/AUTH.md +1780 -0
  108. data/docs/CIRCUIT_BREAKER.md +224 -0
  109. data/docs/DEVELOPER_GUIDE.md +2665 -0
  110. data/docs/EVENT_SYSTEM.md +637 -0
  111. data/docs/EXECUTION_CONFIGURATION.md +341 -0
  112. data/docs/FLOW_CHART.md +149 -0
  113. data/docs/HEALTH.md +542 -0
  114. data/docs/METRICS.md +731 -0
  115. data/docs/OPTIMIZATION_PLAN.md +1479 -0
  116. data/docs/OVERVIEW.md +552 -0
  117. data/docs/QUICK_START.md +270 -0
  118. data/docs/REGISTRY_SYSTEMS.md +373 -0
  119. data/docs/REST_API.md +632 -0
  120. data/docs/ROADMAP.md +221 -0
  121. data/docs/SQL_FUNCTIONS.md +1408 -0
  122. data/docs/TASK_DIAGRAM.md +252 -0
  123. data/docs/TASK_EXECUTION_CONTROL_FLOW.md +237 -0
  124. data/docs/TELEMETRY.md +795 -0
  125. data/docs/TROUBLESHOOTING.md +756 -0
  126. data/docs/TaskHandlerGenerator.html +255 -0
  127. data/docs/Tasker/Analysis/RuntimeGraphAnalyzer.html +907 -0
  128. data/docs/Tasker/Analysis/TemplateGraphAnalyzer.html +1236 -0
  129. data/docs/Tasker/Analysis.html +117 -0
  130. data/docs/Tasker/AnalyticsController.html +450 -0
  131. data/docs/Tasker/AnalyticsService/BottleneckAnalytics.html +816 -0
  132. data/docs/Tasker/AnalyticsService/PerformanceAnalytics.html +586 -0
  133. data/docs/Tasker/AnalyticsService.html +2221 -0
  134. data/docs/Tasker/AnnotationType.html +137 -0
  135. data/docs/Tasker/AnnotationTypeSerializer.html +124 -0
  136. data/docs/Tasker/ApplicationController.html +147 -0
  137. data/docs/Tasker/ApplicationJob.html +128 -0
  138. data/docs/Tasker/ApplicationRecord.html +378 -0
  139. data/docs/Tasker/Authentication/AuthenticationError.html +124 -0
  140. data/docs/Tasker/Authentication/ConfigurationError.html +124 -0
  141. data/docs/Tasker/Authentication/Coordinator.html +242 -0
  142. data/docs/Tasker/Authentication/Interface.html +560 -0
  143. data/docs/Tasker/Authentication/InterfaceError.html +124 -0
  144. data/docs/Tasker/Authentication/NoneAuthenticator.html +338 -0
  145. data/docs/Tasker/Authentication.html +119 -0
  146. data/docs/Tasker/Authorization/AuthorizationError.html +139 -0
  147. data/docs/Tasker/Authorization/BaseCoordinator.html +927 -0
  148. data/docs/Tasker/Authorization/ConfigurationError.html +153 -0
  149. data/docs/Tasker/Authorization/ResourceConstants/ACTIONS.html +428 -0
  150. data/docs/Tasker/Authorization/ResourceConstants/RESOURCES.html +365 -0
  151. data/docs/Tasker/Authorization/ResourceConstants.html +146 -0
  152. data/docs/Tasker/Authorization/ResourceRegistry.html +882 -0
  153. data/docs/Tasker/Authorization/UnauthorizedError.html +153 -0
  154. data/docs/Tasker/Authorization.html +582 -0
  155. data/docs/Tasker/CacheCapabilities.html +167 -0
  156. data/docs/Tasker/CacheStrategy.html +1297 -0
  157. data/docs/Tasker/Concerns/Authenticatable.html +116 -0
  158. data/docs/Tasker/Concerns/Authorizable/AdminStatusChecker.html +256 -0
  159. data/docs/Tasker/Concerns/Authorizable.html +816 -0
  160. data/docs/Tasker/Concerns/ControllerAuthorizable.html +157 -0
  161. data/docs/Tasker/Concerns/EventPublisher.html +4023 -0
  162. data/docs/Tasker/Concerns/IdempotentStateTransitions.html +806 -0
  163. data/docs/Tasker/Concerns/LifecycleEventHelpers.html +129 -0
  164. data/docs/Tasker/Concerns/OrchestrationPublisher.html +129 -0
  165. data/docs/Tasker/Concerns/StateMachineBase/ClassMethods.html +1075 -0
  166. data/docs/Tasker/Concerns/StateMachineBase/StateMachineBase/ClassMethods.html +191 -0
  167. data/docs/Tasker/Concerns/StateMachineBase/StateMachineBase.html +126 -0
  168. data/docs/Tasker/Concerns/StateMachineBase.html +153 -0
  169. data/docs/Tasker/Concerns/StructuredLogging.html +1413 -0
  170. data/docs/Tasker/Concerns.html +117 -0
  171. data/docs/Tasker/Configuration/AuthConfiguration.html +1023 -0
  172. data/docs/Tasker/Configuration/ConfigurationProxy.html +581 -0
  173. data/docs/Tasker/Configuration/DatabaseConfiguration.html +475 -0
  174. data/docs/Tasker/Configuration/EngineConfiguration.html +1265 -0
  175. data/docs/Tasker/Configuration/HealthConfiguration.html +791 -0
  176. data/docs/Tasker/Configuration/TelemetryConfiguration.html +1308 -0
  177. data/docs/Tasker/Configuration/TelemetryConfigurationProxy.html +388 -0
  178. data/docs/Tasker/Configuration.html +1669 -0
  179. data/docs/Tasker/ConfigurationError.html +143 -0
  180. data/docs/Tasker/ConfiguredTask.html +514 -0
  181. data/docs/Tasker/Constants/EventDefinitions.html +590 -0
  182. data/docs/Tasker/Constants/LifecycleEvents.html +137 -0
  183. data/docs/Tasker/Constants/ObservabilityEvents/Step.html +152 -0
  184. data/docs/Tasker/Constants/ObservabilityEvents/Task.html +142 -0
  185. data/docs/Tasker/Constants/ObservabilityEvents.html +126 -0
  186. data/docs/Tasker/Constants/RegistryEvents.html +285 -0
  187. data/docs/Tasker/Constants/StepEvents.html +177 -0
  188. data/docs/Tasker/Constants/TaskEvents.html +167 -0
  189. data/docs/Tasker/Constants/TaskExecution/ExecutionStatus.html +207 -0
  190. data/docs/Tasker/Constants/TaskExecution/HealthStatus.html +191 -0
  191. data/docs/Tasker/Constants/TaskExecution/RecommendedAction.html +207 -0
  192. data/docs/Tasker/Constants/TaskExecution.html +126 -0
  193. data/docs/Tasker/Constants/TaskFinalization/ErrorMessages.html +132 -0
  194. data/docs/Tasker/Constants/TaskFinalization/PendingReasons.html +207 -0
  195. data/docs/Tasker/Constants/TaskFinalization/ReenqueueReasons.html +239 -0
  196. data/docs/Tasker/Constants/TaskFinalization.html +126 -0
  197. data/docs/Tasker/Constants/TaskStatuses.html +223 -0
  198. data/docs/Tasker/Constants/TestEvents.html +163 -0
  199. data/docs/Tasker/Constants/WorkflowEvents.html +222 -0
  200. data/docs/Tasker/Constants/WorkflowStepStatuses.html +223 -0
  201. data/docs/Tasker/Constants.html +561 -0
  202. data/docs/Tasker/DependentSystem.html +137 -0
  203. data/docs/Tasker/DependentSystemObjectMap.html +250 -0
  204. data/docs/Tasker/DetectorRegistry.html +598 -0
  205. data/docs/Tasker/Diagram/Edge.html +1191 -0
  206. data/docs/Tasker/Diagram/Flowchart.html +1539 -0
  207. data/docs/Tasker/Diagram/Node.html +1165 -0
  208. data/docs/Tasker/Diagram.html +117 -0
  209. data/docs/Tasker/Engine.html +215 -0
  210. data/docs/Tasker/Error.html +139 -0
  211. data/docs/Tasker/Events/Bus.html +1226 -0
  212. data/docs/Tasker/Events/Catalog/CatalogPrinter.html +258 -0
  213. data/docs/Tasker/Events/Catalog/CustomEventRegistrar.html +276 -0
  214. data/docs/Tasker/Events/Catalog/ExamplePayloadGenerator.html +294 -0
  215. data/docs/Tasker/Events/Catalog.html +1291 -0
  216. data/docs/Tasker/Events/CustomRegistry.html +943 -0
  217. data/docs/Tasker/Events/DefinitionLoader.html +575 -0
  218. data/docs/Tasker/Events/EventPayloadBuilder/ErrorInfoExtractor.html +286 -0
  219. data/docs/Tasker/Events/EventPayloadBuilder/StepPayloadBuilder.html +312 -0
  220. data/docs/Tasker/Events/EventPayloadBuilder.html +664 -0
  221. data/docs/Tasker/Events/Publisher.html +365 -0
  222. data/docs/Tasker/Events/Subscribers/BaseSubscriber/ErrorCategorizer/ErrorTypeClassifier.html +1128 -0
  223. data/docs/Tasker/Events/Subscribers/BaseSubscriber/ErrorCategorizer.html +270 -0
  224. data/docs/Tasker/Events/Subscribers/BaseSubscriber/MetricTagsExtractor.html +266 -0
  225. data/docs/Tasker/Events/Subscribers/BaseSubscriber.html +2556 -0
  226. data/docs/Tasker/Events/Subscribers/MetricsSubscriber.html +723 -0
  227. data/docs/Tasker/Events/Subscribers/TelemetrySubscriber.html +2251 -0
  228. data/docs/Tasker/Events/Subscribers.html +117 -0
  229. data/docs/Tasker/Events/SubscriptionLoader.html +493 -0
  230. data/docs/Tasker/Events.html +294 -0
  231. data/docs/Tasker/EventsGenerator.html +459 -0
  232. data/docs/Tasker/Functions/FunctionBasedAnalyticsMetrics/AnalyticsMetrics.html +135 -0
  233. data/docs/Tasker/Functions/FunctionBasedAnalyticsMetrics.html +412 -0
  234. data/docs/Tasker/Functions/FunctionBasedDependencyLevels.html +598 -0
  235. data/docs/Tasker/Functions/FunctionBasedSlowestSteps/SlowestStep.html +135 -0
  236. data/docs/Tasker/Functions/FunctionBasedSlowestSteps.html +453 -0
  237. data/docs/Tasker/Functions/FunctionBasedSlowestTasks/SlowestTask.html +135 -0
  238. data/docs/Tasker/Functions/FunctionBasedSlowestTasks.html +453 -0
  239. data/docs/Tasker/Functions/FunctionBasedStepReadinessStatus.html +1457 -0
  240. data/docs/Tasker/Functions/FunctionBasedSystemHealthCounts/HealthMetrics.html +135 -0
  241. data/docs/Tasker/Functions/FunctionBasedSystemHealthCounts.html +370 -0
  242. data/docs/Tasker/Functions/FunctionBasedTaskExecutionContext.html +1250 -0
  243. data/docs/Tasker/Functions/FunctionWrapper.html +479 -0
  244. data/docs/Tasker/Functions.html +117 -0
  245. data/docs/Tasker/Generators/AuthenticatorGenerator/UsageInstructionsFormatter.html +244 -0
  246. data/docs/Tasker/Generators/AuthenticatorGenerator.html +373 -0
  247. data/docs/Tasker/Generators/AuthorizationCoordinatorGenerator.html +430 -0
  248. data/docs/Tasker/Generators/SubscriberGenerator.html +377 -0
  249. data/docs/Tasker/Generators/TaskHandlerGenerator.html +263 -0
  250. data/docs/Tasker/Generators.html +117 -0
  251. data/docs/Tasker/GraphQLTypes/AnnotationType.html +132 -0
  252. data/docs/Tasker/GraphQLTypes/BaseArgument.html +124 -0
  253. data/docs/Tasker/GraphQLTypes/BaseConnection.html +124 -0
  254. data/docs/Tasker/GraphQLTypes/BaseEdge.html +130 -0
  255. data/docs/Tasker/GraphQLTypes/BaseEnum.html +124 -0
  256. data/docs/Tasker/GraphQLTypes/BaseField.html +124 -0
  257. data/docs/Tasker/GraphQLTypes/BaseInputObject.html +124 -0
  258. data/docs/Tasker/GraphQLTypes/BaseInterface.html +116 -0
  259. data/docs/Tasker/GraphQLTypes/BaseObject.html +128 -0
  260. data/docs/Tasker/GraphQLTypes/BaseScalar.html +124 -0
  261. data/docs/Tasker/GraphQLTypes/BaseUnion.html +124 -0
  262. data/docs/Tasker/GraphQLTypes/DependentSystemObjectMapType.html +132 -0
  263. data/docs/Tasker/GraphQLTypes/DependentSystemType.html +132 -0
  264. data/docs/Tasker/GraphQLTypes/MutationType.html +132 -0
  265. data/docs/Tasker/GraphQLTypes/NamedStepType.html +132 -0
  266. data/docs/Tasker/GraphQLTypes/NamedTaskType.html +132 -0
  267. data/docs/Tasker/GraphQLTypes/NamedTasksNamedStepType.html +132 -0
  268. data/docs/Tasker/GraphQLTypes/NodeType.html +118 -0
  269. data/docs/Tasker/GraphQLTypes/QueryType.html +139 -0
  270. data/docs/Tasker/GraphQLTypes/TaskAnnotationType.html +132 -0
  271. data/docs/Tasker/GraphQLTypes/TaskInterface.html +111 -0
  272. data/docs/Tasker/GraphQLTypes/TaskType.html +201 -0
  273. data/docs/Tasker/GraphQLTypes/WorkflowStepType.html +694 -0
  274. data/docs/Tasker/GraphQLTypes.html +130 -0
  275. data/docs/Tasker/GraphqlController.html +251 -0
  276. data/docs/Tasker/HandlerFactory.html +1518 -0
  277. data/docs/Tasker/HandlerSerializer.html +682 -0
  278. data/docs/Tasker/HandlersController.html +574 -0
  279. data/docs/Tasker/HashIdentityStrategy.html +278 -0
  280. data/docs/Tasker/Health/ReadinessChecker.html +712 -0
  281. data/docs/Tasker/Health/StatusChecker.html +653 -0
  282. data/docs/Tasker/Health.html +117 -0
  283. data/docs/Tasker/HealthController.html +523 -0
  284. data/docs/Tasker/IdentityStrategy.html +276 -0
  285. data/docs/Tasker/InvalidTaskHandlerConfig.html +135 -0
  286. data/docs/Tasker/LifecycleEvents/Events/Step.html +162 -0
  287. data/docs/Tasker/LifecycleEvents/Events/Task.html +162 -0
  288. data/docs/Tasker/LifecycleEvents/Events.html +204 -0
  289. data/docs/Tasker/LifecycleEvents/Publisher.html +132 -0
  290. data/docs/Tasker/LifecycleEvents.html +799 -0
  291. data/docs/Tasker/Logging/CorrelationIdGenerator.html +688 -0
  292. data/docs/Tasker/Logging.html +115 -0
  293. data/docs/Tasker/MetricsController.html +293 -0
  294. data/docs/Tasker/MetricsExportJob.html +414 -0
  295. data/docs/Tasker/Mutations/BaseMutation.html +128 -0
  296. data/docs/Tasker/Mutations/CancelStep.html +219 -0
  297. data/docs/Tasker/Mutations/CancelTask.html +221 -0
  298. data/docs/Tasker/Mutations/CreateTask.html +243 -0
  299. data/docs/Tasker/Mutations/UpdateStep.html +243 -0
  300. data/docs/Tasker/Mutations/UpdateTask.html +243 -0
  301. data/docs/Tasker/Mutations.html +117 -0
  302. data/docs/Tasker/NamedStep.html +216 -0
  303. data/docs/Tasker/NamedTask.html +910 -0
  304. data/docs/Tasker/NamedTasksNamedStep.html +435 -0
  305. data/docs/Tasker/Orchestration/BackoffCalculator.html +404 -0
  306. data/docs/Tasker/Orchestration/ConnectionBuilder/ConfigValidator.html +258 -0
  307. data/docs/Tasker/Orchestration/ConnectionBuilder.html +435 -0
  308. data/docs/Tasker/Orchestration/ConnectionPoolIntelligence.html +513 -0
  309. data/docs/Tasker/Orchestration/Coordinator.html +641 -0
  310. data/docs/Tasker/Orchestration/FutureStateAnalyzer.html +1045 -0
  311. data/docs/Tasker/Orchestration/Orchestrator.html +679 -0
  312. data/docs/Tasker/Orchestration/PluginIntegration.html +1127 -0
  313. data/docs/Tasker/Orchestration/ResponseProcessor.html +504 -0
  314. data/docs/Tasker/Orchestration/RetryHeaderParser.html +304 -0
  315. data/docs/Tasker/Orchestration/StepExecutor.html +995 -0
  316. data/docs/Tasker/Orchestration/StepSequenceFactory.html +644 -0
  317. data/docs/Tasker/Orchestration/TaskFinalizer/BlockageChecker.html +264 -0
  318. data/docs/Tasker/Orchestration/TaskFinalizer/ContextManager.html +254 -0
  319. data/docs/Tasker/Orchestration/TaskFinalizer/DelayCalculator.html +556 -0
  320. data/docs/Tasker/Orchestration/TaskFinalizer/FinalizationDecisionMaker.html +348 -0
  321. data/docs/Tasker/Orchestration/TaskFinalizer/FinalizationProcessor.html +286 -0
  322. data/docs/Tasker/Orchestration/TaskFinalizer/ReasonDeterminer.html +432 -0
  323. data/docs/Tasker/Orchestration/TaskFinalizer/ReenqueueManager.html +296 -0
  324. data/docs/Tasker/Orchestration/TaskFinalizer/UnclearStateHandler.html +314 -0
  325. data/docs/Tasker/Orchestration/TaskFinalizer.html +1212 -0
  326. data/docs/Tasker/Orchestration/TaskInitializer.html +766 -0
  327. data/docs/Tasker/Orchestration/TaskReenqueuer.html +506 -0
  328. data/docs/Tasker/Orchestration/ViableStepDiscovery.html +442 -0
  329. data/docs/Tasker/Orchestration/WorkflowCoordinator.html +510 -0
  330. data/docs/Tasker/Orchestration.html +130 -0
  331. data/docs/Tasker/PageSort/PageSortParamsBuilder.html +296 -0
  332. data/docs/Tasker/PageSort.html +247 -0
  333. data/docs/Tasker/PermanentError.html +518 -0
  334. data/docs/Tasker/ProceduralError.html +147 -0
  335. data/docs/Tasker/Queries/AllAnnotationTypes.html +217 -0
  336. data/docs/Tasker/Queries/AllTasks.html +221 -0
  337. data/docs/Tasker/Queries/BaseQuery.html +128 -0
  338. data/docs/Tasker/Queries/Helpers.html +187 -0
  339. data/docs/Tasker/Queries/OneStep.html +225 -0
  340. data/docs/Tasker/Queries/OneTask.html +217 -0
  341. data/docs/Tasker/Queries/TasksByAnnotation.html +231 -0
  342. data/docs/Tasker/Queries/TasksByStatus.html +233 -0
  343. data/docs/Tasker/Queries.html +119 -0
  344. data/docs/Tasker/Railtie.html +124 -0
  345. data/docs/Tasker/Registry/BaseRegistry.html +1690 -0
  346. data/docs/Tasker/Registry/EventPublisher.html +667 -0
  347. data/docs/Tasker/Registry/InterfaceValidator.html +569 -0
  348. data/docs/Tasker/Registry/RegistrationError.html +132 -0
  349. data/docs/Tasker/Registry/RegistryError.html +139 -0
  350. data/docs/Tasker/Registry/StatisticsCollector.html +841 -0
  351. data/docs/Tasker/Registry/SubscriberRegistry.html +1504 -0
  352. data/docs/Tasker/Registry/ValidationError.html +132 -0
  353. data/docs/Tasker/Registry.html +119 -0
  354. data/docs/Tasker/RetryableError.html +515 -0
  355. data/docs/Tasker/StateMachine/Compatibility.html +282 -0
  356. data/docs/Tasker/StateMachine/InvalidStateTransition.html +135 -0
  357. data/docs/Tasker/StateMachine/StepStateMachine/StandardizedPayloadBuilder.html +260 -0
  358. data/docs/Tasker/StateMachine/StepStateMachine.html +2215 -0
  359. data/docs/Tasker/StateMachine/TaskStateMachine.html +734 -0
  360. data/docs/Tasker/StateMachine.html +602 -0
  361. data/docs/Tasker/StepDagRelationship.html +657 -0
  362. data/docs/Tasker/StepHandler/Api/Config.html +1091 -0
  363. data/docs/Tasker/StepHandler/Api.html +884 -0
  364. data/docs/Tasker/StepHandler/AutomaticEventPublishing.html +321 -0
  365. data/docs/Tasker/StepHandler/Base.html +970 -0
  366. data/docs/Tasker/StepHandler.html +119 -0
  367. data/docs/Tasker/StepReadinessStatus.html +836 -0
  368. data/docs/Tasker/Task.html +2575 -0
  369. data/docs/Tasker/TaskAnnotation.html +137 -0
  370. data/docs/Tasker/TaskAnnotationSerializer.html +124 -0
  371. data/docs/Tasker/TaskBuilder/StepNameValidator.html +264 -0
  372. data/docs/Tasker/TaskBuilder/StepTemplateDefiner.html +264 -0
  373. data/docs/Tasker/TaskBuilder.html +764 -0
  374. data/docs/Tasker/TaskDiagram/StepToStepEdgeBuilder.html +260 -0
  375. data/docs/Tasker/TaskDiagram/TaskToRootStepEdgeBuilder.html +290 -0
  376. data/docs/Tasker/TaskDiagram.html +548 -0
  377. data/docs/Tasker/TaskDiagramsController.html +240 -0
  378. data/docs/Tasker/TaskExecutionContext.html +469 -0
  379. data/docs/Tasker/TaskHandler/ClassMethods/StepTemplateDefiner/ClassBasedEventRegistrar.html +238 -0
  380. data/docs/Tasker/TaskHandler/ClassMethods/StepTemplateDefiner/YamlEventRegistrar.html +254 -0
  381. data/docs/Tasker/TaskHandler/ClassMethods/StepTemplateDefiner.html +988 -0
  382. data/docs/Tasker/TaskHandler/ClassMethods.html +357 -0
  383. data/docs/Tasker/TaskHandler/InstanceMethods.html +1396 -0
  384. data/docs/Tasker/TaskHandler/StepGroup.html +1748 -0
  385. data/docs/Tasker/TaskHandler.html +271 -0
  386. data/docs/Tasker/TaskNamespace.html +312 -0
  387. data/docs/Tasker/TaskRunnerJob.html +406 -0
  388. data/docs/Tasker/TaskSerializer.html +474 -0
  389. data/docs/Tasker/TaskTransition.html +1517 -0
  390. data/docs/Tasker/TaskWorkflowSummary.html +988 -0
  391. data/docs/Tasker/TaskerRailsSchema/InvalidObjectTypeError.html +132 -0
  392. data/docs/Tasker/TaskerRailsSchema/TypeResolutionError.html +139 -0
  393. data/docs/Tasker/TaskerRailsSchema/UnknownInterfaceError.html +132 -0
  394. data/docs/Tasker/TaskerRailsSchema.html +384 -0
  395. data/docs/Tasker/TasksController.html +595 -0
  396. data/docs/Tasker/Telemetry/EventMapping.html +1307 -0
  397. data/docs/Tasker/Telemetry/EventRouter.html +2178 -0
  398. data/docs/Tasker/Telemetry/Events/ExportEvents.html +246 -0
  399. data/docs/Tasker/Telemetry/Events.html +115 -0
  400. data/docs/Tasker/Telemetry/ExportCoordinator/DistributedLockTimeoutError.html +135 -0
  401. data/docs/Tasker/Telemetry/ExportCoordinator.html +2137 -0
  402. data/docs/Tasker/Telemetry/IntelligentCacheManager.html +1083 -0
  403. data/docs/Tasker/Telemetry/LogBackend.html +1088 -0
  404. data/docs/Tasker/Telemetry/MetricTypes/Counter.html +1054 -0
  405. data/docs/Tasker/Telemetry/MetricTypes/Gauge.html +1270 -0
  406. data/docs/Tasker/Telemetry/MetricTypes/Histogram.html +1492 -0
  407. data/docs/Tasker/Telemetry/MetricTypes.html +153 -0
  408. data/docs/Tasker/Telemetry/MetricsBackend.html +2510 -0
  409. data/docs/Tasker/Telemetry/MetricsExportService.html +578 -0
  410. data/docs/Tasker/Telemetry/PluginRegistry.html +1774 -0
  411. data/docs/Tasker/Telemetry/Plugins/BaseExporter.html +1835 -0
  412. data/docs/Tasker/Telemetry/Plugins/CsvExporter.html +768 -0
  413. data/docs/Tasker/Telemetry/Plugins/JsonExporter.html +747 -0
  414. data/docs/Tasker/Telemetry/Plugins.html +117 -0
  415. data/docs/Tasker/Telemetry/PrometheusExporter.html +481 -0
  416. data/docs/Tasker/Telemetry/TraceBackend.html +891 -0
  417. data/docs/Tasker/Telemetry.html +130 -0
  418. data/docs/Tasker/Types/AuthConfig.html +886 -0
  419. data/docs/Tasker/Types/BackoffConfig.html +1063 -0
  420. data/docs/Tasker/Types/BaseConfig.html +227 -0
  421. data/docs/Tasker/Types/CacheConfig.html +1731 -0
  422. data/docs/Tasker/Types/DatabaseConfig.html +388 -0
  423. data/docs/Tasker/Types/DependencyGraph.html +526 -0
  424. data/docs/Tasker/Types/DependencyGraphConfig.html +753 -0
  425. data/docs/Tasker/Types/EngineConfig.html +1181 -0
  426. data/docs/Tasker/Types/ExecutionConfig.html +1963 -0
  427. data/docs/Tasker/Types/GraphEdge.html +517 -0
  428. data/docs/Tasker/Types/GraphMetadata.html +781 -0
  429. data/docs/Tasker/Types/GraphNode.html +694 -0
  430. data/docs/Tasker/Types/HealthConfig.html +784 -0
  431. data/docs/Tasker/Types/StepSequence.html +353 -0
  432. data/docs/Tasker/Types/StepTemplate.html +1193 -0
  433. data/docs/Tasker/Types/TaskRequest.html +1179 -0
  434. data/docs/Tasker/Types/TelemetryConfig.html +2746 -0
  435. data/docs/Tasker/Types.html +154 -0
  436. data/docs/Tasker/WorkflowStep/StepFinder.html +282 -0
  437. data/docs/Tasker/WorkflowStep.html +2724 -0
  438. data/docs/Tasker/WorkflowStepEdge.html +304 -0
  439. data/docs/Tasker/WorkflowStepSerializer.html +305 -0
  440. data/docs/Tasker/WorkflowStepTransition/TransitionDescriptionFormatter.html +282 -0
  441. data/docs/Tasker/WorkflowStepTransition.html +2201 -0
  442. data/docs/Tasker/WorkflowStepsController.html +462 -0
  443. data/docs/Tasker.html +452 -0
  444. data/docs/VISION.md +584 -0
  445. data/docs/WHY.md +21 -0
  446. data/docs/_index.html +2375 -0
  447. data/docs/class_list.html +54 -0
  448. data/docs/css/common.css +1 -0
  449. data/docs/css/full_list.css +58 -0
  450. data/docs/css/style.css +503 -0
  451. data/docs/events/migration_plan_outcomes.md +80 -0
  452. data/docs/file.README.html +541 -0
  453. data/docs/file_list.html +59 -0
  454. data/docs/frames.html +22 -0
  455. data/docs/index.html +541 -0
  456. data/docs/js/app.js +344 -0
  457. data/docs/js/full_list.js +242 -0
  458. data/docs/js/jquery.js +4 -0
  459. data/docs/method_list.html +9182 -0
  460. data/docs/top-level-namespace.html +110 -0
  461. data/lib/generators/tasker/authenticator_generator.rb +301 -0
  462. data/lib/generators/tasker/authorization_coordinator_generator.rb +139 -0
  463. data/lib/generators/tasker/events_generator.rb +91 -0
  464. data/lib/generators/tasker/subscriber_generator.rb +107 -0
  465. data/lib/generators/tasker/task_handler_generator.rb +138 -0
  466. data/lib/generators/tasker/templates/api_token_authenticator.rb.erb +113 -0
  467. data/lib/generators/tasker/templates/api_token_authenticator_spec.rb.erb +144 -0
  468. data/lib/generators/tasker/templates/authorization_coordinator.rb.erb +95 -0
  469. data/lib/generators/tasker/templates/authorization_coordinator_spec.rb.erb +142 -0
  470. data/lib/generators/tasker/templates/custom_authenticator.rb.erb +108 -0
  471. data/lib/generators/tasker/templates/custom_authenticator_spec.rb.erb +162 -0
  472. data/lib/generators/tasker/templates/custom_events.yml.erb +62 -0
  473. data/lib/generators/tasker/templates/custom_subscriber.rb.erb +72 -0
  474. data/lib/generators/tasker/templates/devise_authenticator.rb.erb +101 -0
  475. data/lib/generators/tasker/templates/devise_authenticator_spec.rb.erb +126 -0
  476. data/lib/generators/tasker/templates/initialize.rb.erb +202 -0
  477. data/lib/generators/tasker/templates/jwt_authenticator.rb.erb +144 -0
  478. data/lib/generators/tasker/templates/jwt_authenticator_spec.rb.erb +298 -0
  479. data/lib/generators/tasker/templates/metrics_subscriber.rb.erb +258 -0
  480. data/lib/generators/tasker/templates/metrics_subscriber_spec.rb.erb +308 -0
  481. data/lib/generators/tasker/templates/omniauth_authenticator.rb.erb +135 -0
  482. data/lib/generators/tasker/templates/omniauth_authenticator_spec.rb.erb +196 -0
  483. data/lib/generators/tasker/templates/opentelemetry_initializer.rb +52 -0
  484. data/lib/generators/tasker/templates/subscriber.rb.erb +64 -0
  485. data/lib/generators/tasker/templates/subscriber_spec.rb.erb +80 -0
  486. data/lib/generators/tasker/templates/task_config.yaml.erb +117 -0
  487. data/lib/generators/tasker/templates/task_handler.rb.erb +59 -0
  488. data/lib/generators/tasker/templates/task_handler_spec.rb.erb +159 -0
  489. data/lib/tasker/analysis/runtime_graph_analyzer.rb +1168 -0
  490. data/lib/tasker/analysis/template_graph_analyzer.rb +328 -0
  491. data/lib/tasker/authentication/coordinator.rb +78 -0
  492. data/lib/tasker/authentication/errors.rb +9 -0
  493. data/lib/tasker/authentication/interface.rb +36 -0
  494. data/lib/tasker/authentication/none_authenticator.rb +26 -0
  495. data/lib/tasker/authorization/base_coordinator.rb +112 -0
  496. data/lib/tasker/authorization/errors.rb +26 -0
  497. data/lib/tasker/authorization/resource_constants.rb +74 -0
  498. data/lib/tasker/authorization/resource_registry.rb +143 -0
  499. data/lib/tasker/authorization.rb +75 -0
  500. data/lib/tasker/cache_capabilities.rb +131 -0
  501. data/lib/tasker/cache_strategy.rb +469 -0
  502. data/lib/tasker/concerns/authenticatable.rb +41 -0
  503. data/lib/tasker/concerns/authorizable.rb +204 -0
  504. data/lib/tasker/concerns/controller_authorizable.rb +124 -0
  505. data/lib/tasker/concerns/event_publisher.rb +716 -0
  506. data/lib/tasker/concerns/idempotent_state_transitions.rb +128 -0
  507. data/lib/tasker/concerns/state_machine_base.rb +218 -0
  508. data/lib/tasker/concerns/structured_logging.rb +387 -0
  509. data/lib/tasker/configuration.rb +325 -0
  510. data/lib/tasker/constants/event_definitions.rb +147 -0
  511. data/lib/tasker/constants/registry_events.rb +54 -0
  512. data/lib/tasker/constants.rb +417 -0
  513. data/lib/tasker/engine.rb +90 -0
  514. data/lib/tasker/errors.rb +90 -0
  515. data/lib/tasker/events/catalog.rb +432 -0
  516. data/lib/tasker/events/custom_registry.rb +175 -0
  517. data/lib/tasker/events/definition_loader.rb +199 -0
  518. data/lib/tasker/events/event_payload_builder.rb +461 -0
  519. data/lib/tasker/events/publisher.rb +149 -0
  520. data/lib/tasker/events/subscribers/base_subscriber.rb +601 -0
  521. data/lib/tasker/events/subscribers/metrics_subscriber.rb +120 -0
  522. data/lib/tasker/events/subscribers/telemetry_subscriber.rb +462 -0
  523. data/lib/tasker/events/subscription_loader.rb +161 -0
  524. data/lib/tasker/events.rb +37 -0
  525. data/lib/tasker/functions/function_based_analytics_metrics.rb +103 -0
  526. data/lib/tasker/functions/function_based_dependency_levels.rb +54 -0
  527. data/lib/tasker/functions/function_based_slowest_steps.rb +84 -0
  528. data/lib/tasker/functions/function_based_slowest_tasks.rb +84 -0
  529. data/lib/tasker/functions/function_based_step_readiness_status.rb +183 -0
  530. data/lib/tasker/functions/function_based_system_health_counts.rb +94 -0
  531. data/lib/tasker/functions/function_based_task_execution_context.rb +148 -0
  532. data/lib/tasker/functions/function_wrapper.rb +42 -0
  533. data/lib/tasker/functions.rb +12 -0
  534. data/lib/tasker/handler_factory.rb +322 -0
  535. data/lib/tasker/health/readiness_checker.rb +186 -0
  536. data/lib/tasker/health/status_checker.rb +203 -0
  537. data/lib/tasker/identity_strategy.rb +38 -0
  538. data/lib/tasker/logging/correlation_id_generator.rb +120 -0
  539. data/lib/tasker/orchestration/backoff_calculator.rb +184 -0
  540. data/lib/tasker/orchestration/connection_builder.rb +122 -0
  541. data/lib/tasker/orchestration/connection_pool_intelligence.rb +177 -0
  542. data/lib/tasker/orchestration/coordinator.rb +119 -0
  543. data/lib/tasker/orchestration/future_state_analyzer.rb +137 -0
  544. data/lib/tasker/orchestration/plugin_integration.rb +124 -0
  545. data/lib/tasker/orchestration/response_processor.rb +168 -0
  546. data/lib/tasker/orchestration/retry_header_parser.rb +78 -0
  547. data/lib/tasker/orchestration/step_executor.rb +941 -0
  548. data/lib/tasker/orchestration/step_sequence_factory.rb +67 -0
  549. data/lib/tasker/orchestration/task_finalizer.rb +564 -0
  550. data/lib/tasker/orchestration/task_initializer.rb +140 -0
  551. data/lib/tasker/orchestration/task_reenqueuer.rb +71 -0
  552. data/lib/tasker/orchestration/viable_step_discovery.rb +65 -0
  553. data/lib/tasker/orchestration/workflow_coordinator.rb +294 -0
  554. data/lib/tasker/orchestration.rb +45 -0
  555. data/lib/tasker/railtie.rb +9 -0
  556. data/lib/tasker/registry/base_registry.rb +177 -0
  557. data/lib/tasker/registry/event_publisher.rb +91 -0
  558. data/lib/tasker/registry/interface_validator.rb +140 -0
  559. data/lib/tasker/registry/statistics_collector.rb +381 -0
  560. data/lib/tasker/registry/subscriber_registry.rb +285 -0
  561. data/lib/tasker/registry.rb +22 -0
  562. data/lib/tasker/state_machine/step_state_machine.rb +508 -0
  563. data/lib/tasker/state_machine/task_state_machine.rb +192 -0
  564. data/lib/tasker/state_machine.rb +83 -0
  565. data/lib/tasker/step_handler/api.rb +410 -0
  566. data/lib/tasker/step_handler/base.rb +206 -0
  567. data/lib/tasker/task_builder.rb +432 -0
  568. data/lib/tasker/task_handler/class_methods.rb +324 -0
  569. data/lib/tasker/task_handler/instance_methods.rb +293 -0
  570. data/lib/tasker/task_handler/step_group.rb +182 -0
  571. data/lib/tasker/task_handler.rb +43 -0
  572. data/lib/tasker/telemetry/event_mapping.rb +126 -0
  573. data/lib/tasker/telemetry/event_router.rb +318 -0
  574. data/lib/tasker/telemetry/events/export_events.rb +38 -0
  575. data/lib/tasker/telemetry/export_coordinator.rb +497 -0
  576. data/lib/tasker/telemetry/intelligent_cache_manager.rb +508 -0
  577. data/lib/tasker/telemetry/log_backend.rb +224 -0
  578. data/lib/tasker/telemetry/metric_types.rb +368 -0
  579. data/lib/tasker/telemetry/metrics_backend.rb +1227 -0
  580. data/lib/tasker/telemetry/metrics_export_service.rb +392 -0
  581. data/lib/tasker/telemetry/plugin_registry.rb +333 -0
  582. data/lib/tasker/telemetry/plugins/base_exporter.rb +246 -0
  583. data/lib/tasker/telemetry/plugins/csv_exporter.rb +198 -0
  584. data/lib/tasker/telemetry/plugins/json_exporter.rb +141 -0
  585. data/lib/tasker/telemetry/prometheus_exporter.rb +249 -0
  586. data/lib/tasker/telemetry/trace_backend.rb +186 -0
  587. data/lib/tasker/telemetry.rb +59 -0
  588. data/lib/tasker/types/auth_config.rb +81 -0
  589. data/lib/tasker/types/backoff_config.rb +142 -0
  590. data/lib/tasker/types/cache_config.rb +257 -0
  591. data/lib/tasker/types/database_config.rb +39 -0
  592. data/lib/tasker/types/dependency_graph.rb +225 -0
  593. data/lib/tasker/types/dependency_graph_config.rb +149 -0
  594. data/lib/tasker/types/engine_config.rb +131 -0
  595. data/lib/tasker/types/execution_config.rb +289 -0
  596. data/lib/tasker/types/health_config.rb +84 -0
  597. data/lib/tasker/types/step_sequence.rb +24 -0
  598. data/lib/tasker/types/step_template.rb +63 -0
  599. data/lib/tasker/types/task_request.rb +60 -0
  600. data/lib/tasker/types/telemetry_config.rb +273 -0
  601. data/lib/tasker/types.rb +64 -0
  602. data/lib/tasker/version.rb +7 -0
  603. data/lib/tasker.rb +82 -0
  604. data/lib/tasks/tasker_tasks.rake +302 -0
  605. metadata +958 -0
@@ -0,0 +1,1963 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>
7
+ Class: Tasker::Types::ExecutionConfig
8
+
9
+ &mdash; Documentation by YARD 0.9.37
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="../../css/style.css" type="text/css" />
14
+
15
+ <link rel="stylesheet" href="../../css/common.css" type="text/css" />
16
+
17
+ <script type="text/javascript">
18
+ pathId = "Tasker::Types::ExecutionConfig";
19
+ relpath = '../../';
20
+ </script>
21
+
22
+
23
+ <script type="text/javascript" charset="utf-8" src="../../js/jquery.js"></script>
24
+
25
+ <script type="text/javascript" charset="utf-8" src="../../js/app.js"></script>
26
+
27
+
28
+ </head>
29
+ <body>
30
+ <div class="nav_wrap">
31
+ <iframe id="nav" src="../../class_list.html?1"></iframe>
32
+ <div id="resizer"></div>
33
+ </div>
34
+
35
+ <div id="main" tabindex="-1">
36
+ <div id="header">
37
+ <div id="menu">
38
+
39
+ <a href="../../_index.html">Index (E)</a> &raquo;
40
+ <span class='title'><span class='object_link'><a href="../../Tasker.html" title="Tasker (module)">Tasker</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../Types.html" title="Tasker::Types (module)">Types</a></span></span>
41
+ &raquo;
42
+ <span class="title">ExecutionConfig</span>
43
+
44
+ </div>
45
+
46
+ <div id="search">
47
+
48
+ <a class="full_list_link" id="class_list_link"
49
+ href="../../class_list.html">
50
+
51
+ <svg width="24" height="24">
52
+ <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
53
+ <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
54
+ <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
55
+ </svg>
56
+ </a>
57
+
58
+ </div>
59
+ <div class="clear"></div>
60
+ </div>
61
+
62
+ <div id="content"><h1>Class: Tasker::Types::ExecutionConfig
63
+
64
+
65
+
66
+ </h1>
67
+ <div class="box_info">
68
+
69
+ <dl>
70
+ <dt>Inherits:</dt>
71
+ <dd>
72
+ <span class="inheritName"><span class='object_link'><a href="BaseConfig.html" title="Tasker::Types::BaseConfig (class)">BaseConfig</a></span></span>
73
+
74
+ <ul class="fullTree">
75
+ <li>Object</li>
76
+
77
+ <li class="next">Dry::Struct</li>
78
+
79
+ <li class="next"><span class='object_link'><a href="BaseConfig.html" title="Tasker::Types::BaseConfig (class)">BaseConfig</a></span></li>
80
+
81
+ <li class="next">Tasker::Types::ExecutionConfig</li>
82
+
83
+ </ul>
84
+ <a href="#" class="inheritanceTree">show all</a>
85
+
86
+ </dd>
87
+ </dl>
88
+
89
+
90
+
91
+
92
+
93
+
94
+
95
+
96
+
97
+
98
+
99
+ <dl>
100
+ <dt>Defined in:</dt>
101
+ <dd>lib/tasker/types/execution_config.rb</dd>
102
+ </dl>
103
+
104
+ </div>
105
+
106
+ <h2>Overview</h2><div class="docstring">
107
+ <div class="discussion">
108
+
109
+ <p>Configuration type for step execution and concurrency settings</p>
110
+
111
+ <p>This configuration exposes previously hardcoded execution constants used in concurrent step processing, timeout handling, and memory management.</p>
112
+
113
+ <p>Strategic Design: - CONFIGURABLE: Performance characteristics that vary by deployment environment - ARCHITECTURAL: Carefully chosen constants based on Ruby/Rails characteristics</p>
114
+
115
+
116
+ </div>
117
+ </div>
118
+ <div class="tags">
119
+
120
+ <div class="examples">
121
+ <h4 class="tag_title">Examples:</h4>
122
+
123
+
124
+ <h5 class="example_title"><div class='inline'>
125
+ <p>Basic usage</p>
126
+ </div></h5>
127
+
128
+ <pre class="example code"><code><span class='id identifier rubyid_config'>config</span> <span class='op'>=</span> <span class='const'>ExecutionConfig</span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="BaseConfig.html#initialize-instance_method" title="Tasker::Types::BaseConfig#initialize (method)">new</a></span></span><span class='lparen'>(</span>
129
+ <span class='label'>max_concurrent_steps_limit:</span> <span class='int'>20</span><span class='comma'>,</span> <span class='comment'># High-performance system
130
+ </span> <span class='label'>batch_timeout_base_seconds:</span> <span class='int'>60</span> <span class='comment'># API-heavy workflows
131
+ </span><span class='rparen'>)</span></code></pre>
132
+
133
+
134
+ <h5 class="example_title"><div class='inline'>
135
+ <p>Environment-specific tuning</p>
136
+ </div></h5>
137
+
138
+ <pre class="example code"><code><span class='comment'># Development environment
139
+ </span><span class='id identifier rubyid_config'>config</span> <span class='op'>=</span> <span class='const'>ExecutionConfig</span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="BaseConfig.html#initialize-instance_method" title="Tasker::Types::BaseConfig#initialize (method)">new</a></span></span><span class='lparen'>(</span>
140
+ <span class='label'>min_concurrent_steps:</span> <span class='int'>2</span><span class='comma'>,</span>
141
+ <span class='label'>max_concurrent_steps_limit:</span> <span class='int'>6</span><span class='comma'>,</span>
142
+ <span class='label'>concurrency_cache_duration:</span> <span class='int'>60</span>
143
+ <span class='rparen'>)</span>
144
+
145
+ <span class='comment'># Production environment
146
+ </span><span class='id identifier rubyid_config'>config</span> <span class='op'>=</span> <span class='const'>ExecutionConfig</span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="BaseConfig.html#initialize-instance_method" title="Tasker::Types::BaseConfig#initialize (method)">new</a></span></span><span class='lparen'>(</span>
147
+ <span class='label'>min_concurrent_steps:</span> <span class='int'>5</span><span class='comma'>,</span>
148
+ <span class='label'>max_concurrent_steps_limit:</span> <span class='int'>25</span><span class='comma'>,</span>
149
+ <span class='label'>batch_timeout_base_seconds:</span> <span class='int'>45</span><span class='comma'>,</span>
150
+ <span class='label'>max_batch_timeout_seconds:</span> <span class='int'>300</span>
151
+ <span class='rparen'>)</span></code></pre>
152
+
153
+ </div>
154
+
155
+
156
+ </div>
157
+
158
+
159
+
160
+ <h2>Instance Attribute Summary <small><a href="#" class="summary_toggle">collapse</a></small></h2>
161
+ <ul class="summary">
162
+
163
+ <li class="public ">
164
+ <span class="summary_signature">
165
+
166
+ <a href="#batch_timeout_base_seconds-instance_method" title="#batch_timeout_base_seconds (instance method)">#<strong>batch_timeout_base_seconds</strong> &#x21d2; Integer </a>
167
+
168
+
169
+
170
+ </span>
171
+
172
+
173
+
174
+
175
+ <span class="note title readonly">readonly</span>
176
+
177
+
178
+
179
+
180
+
181
+
182
+
183
+
184
+
185
+ <span class="summary_desc"><div class='inline'>
186
+ <p>Base timeout in seconds (default: 30).</p>
187
+ </div></span>
188
+
189
+ </li>
190
+
191
+
192
+ <li class="public ">
193
+ <span class="summary_signature">
194
+
195
+ <a href="#batch_timeout_per_step_seconds-instance_method" title="#batch_timeout_per_step_seconds (instance method)">#<strong>batch_timeout_per_step_seconds</strong> &#x21d2; Integer </a>
196
+
197
+
198
+
199
+ </span>
200
+
201
+
202
+
203
+
204
+ <span class="note title readonly">readonly</span>
205
+
206
+
207
+
208
+
209
+
210
+
211
+
212
+
213
+
214
+ <span class="summary_desc"><div class='inline'>
215
+ <p>Per-step timeout in seconds (default: 5).</p>
216
+ </div></span>
217
+
218
+ </li>
219
+
220
+
221
+ <li class="public ">
222
+ <span class="summary_signature">
223
+
224
+ <a href="#concurrency_cache_duration-instance_method" title="#concurrency_cache_duration (instance method)">#<strong>concurrency_cache_duration</strong> &#x21d2; Integer </a>
225
+
226
+
227
+
228
+ </span>
229
+
230
+
231
+
232
+
233
+ <span class="note title readonly">readonly</span>
234
+
235
+
236
+
237
+
238
+
239
+
240
+
241
+
242
+
243
+ <span class="summary_desc"><div class='inline'>
244
+ <p>Cache duration in seconds (default: 30).</p>
245
+ </div></span>
246
+
247
+ </li>
248
+
249
+
250
+ <li class="public ">
251
+ <span class="summary_signature">
252
+
253
+ <a href="#connection_health_log_level-instance_method" title="#connection_health_log_level (instance method)">#<strong>connection_health_log_level</strong> &#x21d2; String </a>
254
+
255
+
256
+
257
+ </span>
258
+
259
+
260
+
261
+
262
+ <span class="note title readonly">readonly</span>
263
+
264
+
265
+
266
+
267
+
268
+
269
+
270
+
271
+
272
+ <span class="summary_desc"><div class='inline'>
273
+ <p>Log level (default: ‘debug’).</p>
274
+ </div></span>
275
+
276
+ </li>
277
+
278
+
279
+ <li class="public ">
280
+ <span class="summary_signature">
281
+
282
+ <a href="#connection_pressure_factors-instance_method" title="#connection_pressure_factors (instance method)">#<strong>connection_pressure_factors</strong> &#x21d2; Hash </a>
283
+
284
+
285
+
286
+ </span>
287
+
288
+
289
+
290
+
291
+ <span class="note title readonly">readonly</span>
292
+
293
+
294
+
295
+
296
+
297
+
298
+
299
+
300
+
301
+ <span class="summary_desc"><div class='inline'>
302
+ <p>Pressure response factors by pressure level.</p>
303
+ </div></span>
304
+
305
+ </li>
306
+
307
+
308
+ <li class="public ">
309
+ <span class="summary_signature">
310
+
311
+ <a href="#health_assessment_cache_duration-instance_method" title="#health_assessment_cache_duration (instance method)">#<strong>health_assessment_cache_duration</strong> &#x21d2; Integer </a>
312
+
313
+
314
+
315
+ </span>
316
+
317
+
318
+
319
+
320
+ <span class="note title readonly">readonly</span>
321
+
322
+
323
+
324
+
325
+
326
+
327
+
328
+
329
+
330
+ <span class="summary_desc"><div class='inline'>
331
+ <p>Cache duration in seconds (default: 30).</p>
332
+ </div></span>
333
+
334
+ </li>
335
+
336
+
337
+ <li class="public ">
338
+ <span class="summary_signature">
339
+
340
+ <a href="#max_batch_timeout_seconds-instance_method" title="#max_batch_timeout_seconds (instance method)">#<strong>max_batch_timeout_seconds</strong> &#x21d2; Integer </a>
341
+
342
+
343
+
344
+ </span>
345
+
346
+
347
+
348
+
349
+ <span class="note title readonly">readonly</span>
350
+
351
+
352
+
353
+
354
+
355
+
356
+
357
+
358
+
359
+ <span class="summary_desc"><div class='inline'>
360
+ <p>Maximum timeout in seconds (default: 120).</p>
361
+ </div></span>
362
+
363
+ </li>
364
+
365
+
366
+ <li class="public ">
367
+ <span class="summary_signature">
368
+
369
+ <a href="#max_concurrent_steps_limit-instance_method" title="#max_concurrent_steps_limit (instance method)">#<strong>max_concurrent_steps_limit</strong> &#x21d2; Integer </a>
370
+
371
+
372
+
373
+ </span>
374
+
375
+
376
+
377
+
378
+ <span class="note title readonly">readonly</span>
379
+
380
+
381
+
382
+
383
+
384
+
385
+
386
+
387
+
388
+ <span class="summary_desc"><div class='inline'>
389
+ <p>Maximum concurrent steps limit (default: 12).</p>
390
+ </div></span>
391
+
392
+ </li>
393
+
394
+
395
+ <li class="public ">
396
+ <span class="summary_signature">
397
+
398
+ <a href="#min_concurrent_steps-instance_method" title="#min_concurrent_steps (instance method)">#<strong>min_concurrent_steps</strong> &#x21d2; Integer </a>
399
+
400
+
401
+
402
+ </span>
403
+
404
+
405
+
406
+
407
+ <span class="note title readonly">readonly</span>
408
+
409
+
410
+
411
+
412
+
413
+
414
+
415
+
416
+
417
+ <span class="summary_desc"><div class='inline'>
418
+ <p>Minimum concurrent steps (default: 3).</p>
419
+ </div></span>
420
+
421
+ </li>
422
+
423
+
424
+ </ul>
425
+
426
+
427
+
428
+
429
+
430
+ <h2>
431
+ Instance Method Summary
432
+ <small><a href="#" class="summary_toggle">collapse</a></small>
433
+ </h2>
434
+
435
+ <ul class="summary">
436
+
437
+ <li class="public ">
438
+ <span class="summary_signature">
439
+
440
+ <a href="#calculate_batch_timeout-instance_method" title="#calculate_batch_timeout (instance method)">#<strong>calculate_batch_timeout</strong>(batch_size) &#x21d2; Integer </a>
441
+
442
+
443
+
444
+ </span>
445
+
446
+
447
+
448
+
449
+
450
+
451
+
452
+
453
+
454
+ <span class="summary_desc"><div class='inline'>
455
+ <p>Calculate batch timeout for a given batch size.</p>
456
+ </div></span>
457
+
458
+ </li>
459
+
460
+
461
+ <li class="public ">
462
+ <span class="summary_signature">
463
+
464
+ <a href="#future_cleanup_wait_seconds-instance_method" title="#future_cleanup_wait_seconds (instance method)">#<strong>future_cleanup_wait_seconds</strong> &#x21d2; Integer </a>
465
+
466
+
467
+
468
+ </span>
469
+
470
+
471
+
472
+
473
+
474
+
475
+
476
+
477
+
478
+ <span class="summary_desc"><div class='inline'>
479
+ <p>Future cleanup wait time.</p>
480
+ </div></span>
481
+
482
+ </li>
483
+
484
+
485
+ <li class="public ">
486
+ <span class="summary_signature">
487
+
488
+ <a href="#gc_trigger_batch_size_threshold-instance_method" title="#gc_trigger_batch_size_threshold (instance method)">#<strong>gc_trigger_batch_size_threshold</strong> &#x21d2; Integer </a>
489
+
490
+
491
+
492
+ </span>
493
+
494
+
495
+
496
+
497
+
498
+
499
+
500
+
501
+
502
+ <span class="summary_desc"><div class='inline'>
503
+ <p>GC trigger batch size threshold.</p>
504
+ </div></span>
505
+
506
+ </li>
507
+
508
+
509
+ <li class="public ">
510
+ <span class="summary_signature">
511
+
512
+ <a href="#gc_trigger_duration_threshold-instance_method" title="#gc_trigger_duration_threshold (instance method)">#<strong>gc_trigger_duration_threshold</strong> &#x21d2; Integer </a>
513
+
514
+
515
+
516
+ </span>
517
+
518
+
519
+
520
+
521
+
522
+
523
+
524
+
525
+
526
+ <span class="summary_desc"><div class='inline'>
527
+ <p>GC trigger duration threshold.</p>
528
+ </div></span>
529
+
530
+ </li>
531
+
532
+
533
+ <li class="public ">
534
+ <span class="summary_signature">
535
+
536
+ <a href="#should_trigger_gc%3F-instance_method" title="#should_trigger_gc? (instance method)">#<strong>should_trigger_gc?</strong>(batch_size, batch_duration) &#x21d2; Boolean </a>
537
+
538
+
539
+
540
+ </span>
541
+
542
+
543
+
544
+
545
+
546
+
547
+
548
+
549
+
550
+ <span class="summary_desc"><div class='inline'>
551
+ <p>Check if batch should trigger garbage collection.</p>
552
+ </div></span>
553
+
554
+ </li>
555
+
556
+
557
+ <li class="public ">
558
+ <span class="summary_signature">
559
+
560
+ <a href="#validate!-instance_method" title="#validate! (instance method)">#<strong>validate!</strong> &#x21d2; Boolean </a>
561
+
562
+
563
+
564
+ </span>
565
+
566
+
567
+
568
+
569
+
570
+
571
+
572
+
573
+
574
+ <span class="summary_desc"><div class='inline'>
575
+ <p>Comprehensive validation.</p>
576
+ </div></span>
577
+
578
+ </li>
579
+
580
+
581
+ <li class="public ">
582
+ <span class="summary_signature">
583
+
584
+ <a href="#validate_concurrency_bounds-instance_method" title="#validate_concurrency_bounds (instance method)">#<strong>validate_concurrency_bounds</strong> &#x21d2; Array&lt;String&gt; </a>
585
+
586
+
587
+
588
+ </span>
589
+
590
+
591
+
592
+
593
+
594
+
595
+
596
+
597
+
598
+ <span class="summary_desc"><div class='inline'>
599
+ <p>Validate concurrency bounds.</p>
600
+ </div></span>
601
+
602
+ </li>
603
+
604
+
605
+ <li class="public ">
606
+ <span class="summary_signature">
607
+
608
+ <a href="#validate_connection_configuration-instance_method" title="#validate_connection_configuration (instance method)">#<strong>validate_connection_configuration</strong> &#x21d2; Array&lt;String&gt; </a>
609
+
610
+
611
+
612
+ </span>
613
+
614
+
615
+
616
+
617
+
618
+
619
+
620
+
621
+
622
+ <span class="summary_desc"><div class='inline'>
623
+ <p>Validate connection configuration.</p>
624
+ </div></span>
625
+
626
+ </li>
627
+
628
+
629
+ <li class="public ">
630
+ <span class="summary_signature">
631
+
632
+ <a href="#validate_timeout_configuration-instance_method" title="#validate_timeout_configuration (instance method)">#<strong>validate_timeout_configuration</strong> &#x21d2; Array&lt;String&gt; </a>
633
+
634
+
635
+
636
+ </span>
637
+
638
+
639
+
640
+
641
+
642
+
643
+
644
+
645
+
646
+ <span class="summary_desc"><div class='inline'>
647
+ <p>Validate timeout configuration.</p>
648
+ </div></span>
649
+
650
+ </li>
651
+
652
+
653
+ </ul>
654
+
655
+
656
+
657
+
658
+
659
+
660
+
661
+
662
+
663
+
664
+
665
+ <h3 class="inherited">Methods inherited from <span class='object_link'><a href="BaseConfig.html" title="Tasker::Types::BaseConfig (class)">BaseConfig</a></span></h3>
666
+ <p class="inherited"><span class='object_link'><a href="BaseConfig.html#initialize-instance_method" title="Tasker::Types::BaseConfig#initialize (method)">#initialize</a></span></p>
667
+
668
+ <div id="constructor_details" class="method_details_list">
669
+ <h2>Constructor Details</h2>
670
+
671
+ <p class="notice">This class inherits a constructor from <span class='object_link'><a href="BaseConfig.html#initialize-instance_method" title="Tasker::Types::BaseConfig#initialize (method)">Tasker::Types::BaseConfig</a></span></p>
672
+
673
+ </div>
674
+
675
+ <div id="instance_attr_details" class="attr_details">
676
+ <h2>Instance Attribute Details</h2>
677
+
678
+
679
+ <span id=""></span>
680
+ <div class="method_details first">
681
+ <h3 class="signature first" id="batch_timeout_base_seconds-instance_method">
682
+
683
+ #<strong>batch_timeout_base_seconds</strong> &#x21d2; <tt>Integer</tt> <span class="extras">(readonly)</span>
684
+
685
+
686
+
687
+
688
+
689
+ </h3><div class="docstring">
690
+ <div class="discussion">
691
+
692
+ <p>Returns Base timeout in seconds (default: 30).</p>
693
+
694
+
695
+ </div>
696
+ </div>
697
+ <div class="tags">
698
+
699
+ <p class="tag_title">Returns:</p>
700
+ <ul class="return">
701
+
702
+ <li>
703
+
704
+
705
+ <span class='type'>(<tt>Integer</tt>)</span>
706
+
707
+
708
+
709
+ &mdash;
710
+ <div class='inline'>
711
+ <p>Base timeout in seconds (default: 30)</p>
712
+ </div>
713
+
714
+ </li>
715
+
716
+ </ul>
717
+
718
+ </div><table class="source_code">
719
+ <tr>
720
+ <td>
721
+ <pre class="lines">
722
+
723
+
724
+ 78</pre>
725
+ </td>
726
+ <td>
727
+ <pre class="code"><span class="info file"># File 'lib/tasker/types/execution_config.rb', line 78</span>
728
+
729
+ <span class='id identifier rubyid_attribute'>attribute</span> <span class='symbol'>:batch_timeout_base_seconds</span><span class='comma'>,</span> <span class='const'><span class='object_link'><a href="../Types.html" title="Tasker::Types (module)">Types</a></span></span><span class='op'>::</span><span class='const'>Integer</span><span class='period'>.</span><span class='id identifier rubyid_default'>default</span><span class='lparen'>(</span><span class='int'>30</span><span class='rparen'>)</span></pre>
730
+ </td>
731
+ </tr>
732
+ </table>
733
+ </div>
734
+
735
+
736
+ <span id=""></span>
737
+ <div class="method_details ">
738
+ <h3 class="signature " id="batch_timeout_per_step_seconds-instance_method">
739
+
740
+ #<strong>batch_timeout_per_step_seconds</strong> &#x21d2; <tt>Integer</tt> <span class="extras">(readonly)</span>
741
+
742
+
743
+
744
+
745
+
746
+ </h3><div class="docstring">
747
+ <div class="discussion">
748
+
749
+ <p>Returns Per-step timeout in seconds (default: 5).</p>
750
+
751
+
752
+ </div>
753
+ </div>
754
+ <div class="tags">
755
+
756
+ <p class="tag_title">Returns:</p>
757
+ <ul class="return">
758
+
759
+ <li>
760
+
761
+
762
+ <span class='type'>(<tt>Integer</tt>)</span>
763
+
764
+
765
+
766
+ &mdash;
767
+ <div class='inline'>
768
+ <p>Per-step timeout in seconds (default: 5)</p>
769
+ </div>
770
+
771
+ </li>
772
+
773
+ </ul>
774
+
775
+ </div><table class="source_code">
776
+ <tr>
777
+ <td>
778
+ <pre class="lines">
779
+
780
+
781
+ 87</pre>
782
+ </td>
783
+ <td>
784
+ <pre class="code"><span class="info file"># File 'lib/tasker/types/execution_config.rb', line 87</span>
785
+
786
+ <span class='id identifier rubyid_attribute'>attribute</span> <span class='symbol'>:batch_timeout_per_step_seconds</span><span class='comma'>,</span> <span class='const'><span class='object_link'><a href="../Types.html" title="Tasker::Types (module)">Types</a></span></span><span class='op'>::</span><span class='const'>Integer</span><span class='period'>.</span><span class='id identifier rubyid_default'>default</span><span class='lparen'>(</span><span class='int'>5</span><span class='rparen'>)</span></pre>
787
+ </td>
788
+ </tr>
789
+ </table>
790
+ </div>
791
+
792
+
793
+ <span id=""></span>
794
+ <div class="method_details ">
795
+ <h3 class="signature " id="concurrency_cache_duration-instance_method">
796
+
797
+ #<strong>concurrency_cache_duration</strong> &#x21d2; <tt>Integer</tt> <span class="extras">(readonly)</span>
798
+
799
+
800
+
801
+
802
+
803
+ </h3><div class="docstring">
804
+ <div class="discussion">
805
+
806
+ <p>Returns Cache duration in seconds (default: 30).</p>
807
+
808
+
809
+ </div>
810
+ </div>
811
+ <div class="tags">
812
+
813
+ <p class="tag_title">Returns:</p>
814
+ <ul class="return">
815
+
816
+ <li>
817
+
818
+
819
+ <span class='type'>(<tt>Integer</tt>)</span>
820
+
821
+
822
+
823
+ &mdash;
824
+ <div class='inline'>
825
+ <p>Cache duration in seconds (default: 30)</p>
826
+ </div>
827
+
828
+ </li>
829
+
830
+ </ul>
831
+
832
+ </div><table class="source_code">
833
+ <tr>
834
+ <td>
835
+ <pre class="lines">
836
+
837
+
838
+ 69</pre>
839
+ </td>
840
+ <td>
841
+ <pre class="code"><span class="info file"># File 'lib/tasker/types/execution_config.rb', line 69</span>
842
+
843
+ <span class='id identifier rubyid_attribute'>attribute</span> <span class='symbol'>:concurrency_cache_duration</span><span class='comma'>,</span> <span class='const'><span class='object_link'><a href="../Types.html" title="Tasker::Types (module)">Types</a></span></span><span class='op'>::</span><span class='const'>Integer</span><span class='period'>.</span><span class='id identifier rubyid_default'>default</span><span class='lparen'>(</span><span class='int'>30</span><span class='rparen'>)</span></pre>
844
+ </td>
845
+ </tr>
846
+ </table>
847
+ </div>
848
+
849
+
850
+ <span id=""></span>
851
+ <div class="method_details ">
852
+ <h3 class="signature " id="connection_health_log_level-instance_method">
853
+
854
+ #<strong>connection_health_log_level</strong> &#x21d2; <tt>String</tt> <span class="extras">(readonly)</span>
855
+
856
+
857
+
858
+
859
+
860
+ </h3><div class="docstring">
861
+ <div class="discussion">
862
+
863
+ <p>Returns Log level (default: ‘debug’).</p>
864
+
865
+
866
+ </div>
867
+ </div>
868
+ <div class="tags">
869
+
870
+ <p class="tag_title">Returns:</p>
871
+ <ul class="return">
872
+
873
+ <li>
874
+
875
+
876
+ <span class='type'>(<tt>String</tt>)</span>
877
+
878
+
879
+
880
+ &mdash;
881
+ <div class='inline'>
882
+ <p>Log level (default: ‘debug’)</p>
883
+ </div>
884
+
885
+ </li>
886
+
887
+ </ul>
888
+
889
+ </div><table class="source_code">
890
+ <tr>
891
+ <td>
892
+ <pre class="lines">
893
+
894
+
895
+ 131</pre>
896
+ </td>
897
+ <td>
898
+ <pre class="code"><span class="info file"># File 'lib/tasker/types/execution_config.rb', line 131</span>
899
+
900
+ <span class='id identifier rubyid_attribute'>attribute</span> <span class='symbol'>:connection_health_log_level</span><span class='comma'>,</span> <span class='const'><span class='object_link'><a href="../Types.html" title="Tasker::Types (module)">Types</a></span></span><span class='op'>::</span><span class='const'>String</span><span class='period'>.</span><span class='id identifier rubyid_default'>default</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>debug</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span></pre>
901
+ </td>
902
+ </tr>
903
+ </table>
904
+ </div>
905
+
906
+
907
+ <span id=""></span>
908
+ <div class="method_details ">
909
+ <h3 class="signature " id="connection_pressure_factors-instance_method">
910
+
911
+ #<strong>connection_pressure_factors</strong> &#x21d2; <tt>Hash</tt> <span class="extras">(readonly)</span>
912
+
913
+
914
+
915
+
916
+
917
+ </h3><div class="docstring">
918
+ <div class="discussion">
919
+
920
+ <p>Returns Pressure response factors by pressure level.</p>
921
+
922
+
923
+ </div>
924
+ </div>
925
+ <div class="tags">
926
+
927
+ <p class="tag_title">Returns:</p>
928
+ <ul class="return">
929
+
930
+ <li>
931
+
932
+
933
+ <span class='type'>(<tt>Hash</tt>)</span>
934
+
935
+
936
+
937
+ &mdash;
938
+ <div class='inline'>
939
+ <p>Pressure response factors by pressure level</p>
940
+ </div>
941
+
942
+ </li>
943
+
944
+ </ul>
945
+
946
+ </div><table class="source_code">
947
+ <tr>
948
+ <td>
949
+ <pre class="lines">
950
+
951
+
952
+ 106
953
+ 107
954
+ 108
955
+ 109
956
+ 110
957
+ 111
958
+ 112
959
+ 113</pre>
960
+ </td>
961
+ <td>
962
+ <pre class="code"><span class="info file"># File 'lib/tasker/types/execution_config.rb', line 106</span>
963
+
964
+ <span class='id identifier rubyid_attribute'>attribute</span> <span class='symbol'>:connection_pressure_factors</span><span class='comma'>,</span> <span class='const'><span class='object_link'><a href="../Types.html" title="Tasker::Types (module)">Types</a></span></span><span class='op'>::</span><span class='const'>Hash</span><span class='period'>.</span><span class='id identifier rubyid_default'>default</span><span class='lparen'>(</span><span class='id identifier rubyid_proc'>proc</span> <span class='lbrace'>{</span>
965
+ <span class='lbrace'>{</span>
966
+ <span class='label'>low:</span> <span class='float'>0.8</span><span class='comma'>,</span> <span class='comment'># Use 80% of available when pressure is low
967
+ </span> <span class='label'>moderate:</span> <span class='float'>0.6</span><span class='comma'>,</span> <span class='comment'># Use 60% of available when pressure is moderate
968
+ </span> <span class='label'>high:</span> <span class='float'>0.4</span><span class='comma'>,</span> <span class='comment'># Use 40% of available when pressure is high
969
+ </span> <span class='label'>critical:</span> <span class='float'>0.2</span> <span class='comment'># Use 20% of available when pressure is critical
970
+ </span> <span class='rbrace'>}</span>
971
+ <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_freeze'>freeze</span><span class='rparen'>)</span></pre>
972
+ </td>
973
+ </tr>
974
+ </table>
975
+ </div>
976
+
977
+
978
+ <span id=""></span>
979
+ <div class="method_details ">
980
+ <h3 class="signature " id="health_assessment_cache_duration-instance_method">
981
+
982
+ #<strong>health_assessment_cache_duration</strong> &#x21d2; <tt>Integer</tt> <span class="extras">(readonly)</span>
983
+
984
+
985
+
986
+
987
+
988
+ </h3><div class="docstring">
989
+ <div class="discussion">
990
+
991
+ <p>Returns Cache duration in seconds (default: 30).</p>
992
+
993
+
994
+ </div>
995
+ </div>
996
+ <div class="tags">
997
+
998
+ <p class="tag_title">Returns:</p>
999
+ <ul class="return">
1000
+
1001
+ <li>
1002
+
1003
+
1004
+ <span class='type'>(<tt>Integer</tt>)</span>
1005
+
1006
+
1007
+
1008
+ &mdash;
1009
+ <div class='inline'>
1010
+ <p>Cache duration in seconds (default: 30)</p>
1011
+ </div>
1012
+
1013
+ </li>
1014
+
1015
+ </ul>
1016
+
1017
+ </div><table class="source_code">
1018
+ <tr>
1019
+ <td>
1020
+ <pre class="lines">
1021
+
1022
+
1023
+ 122</pre>
1024
+ </td>
1025
+ <td>
1026
+ <pre class="code"><span class="info file"># File 'lib/tasker/types/execution_config.rb', line 122</span>
1027
+
1028
+ <span class='id identifier rubyid_attribute'>attribute</span> <span class='symbol'>:health_assessment_cache_duration</span><span class='comma'>,</span> <span class='const'><span class='object_link'><a href="../Types.html" title="Tasker::Types (module)">Types</a></span></span><span class='op'>::</span><span class='const'>Integer</span><span class='period'>.</span><span class='id identifier rubyid_default'>default</span><span class='lparen'>(</span><span class='int'>30</span><span class='rparen'>)</span></pre>
1029
+ </td>
1030
+ </tr>
1031
+ </table>
1032
+ </div>
1033
+
1034
+
1035
+ <span id=""></span>
1036
+ <div class="method_details ">
1037
+ <h3 class="signature " id="max_batch_timeout_seconds-instance_method">
1038
+
1039
+ #<strong>max_batch_timeout_seconds</strong> &#x21d2; <tt>Integer</tt> <span class="extras">(readonly)</span>
1040
+
1041
+
1042
+
1043
+
1044
+
1045
+ </h3><div class="docstring">
1046
+ <div class="discussion">
1047
+
1048
+ <p>Returns Maximum timeout in seconds (default: 120).</p>
1049
+
1050
+
1051
+ </div>
1052
+ </div>
1053
+ <div class="tags">
1054
+
1055
+ <p class="tag_title">Returns:</p>
1056
+ <ul class="return">
1057
+
1058
+ <li>
1059
+
1060
+
1061
+ <span class='type'>(<tt>Integer</tt>)</span>
1062
+
1063
+
1064
+
1065
+ &mdash;
1066
+ <div class='inline'>
1067
+ <p>Maximum timeout in seconds (default: 120)</p>
1068
+ </div>
1069
+
1070
+ </li>
1071
+
1072
+ </ul>
1073
+
1074
+ </div><table class="source_code">
1075
+ <tr>
1076
+ <td>
1077
+ <pre class="lines">
1078
+
1079
+
1080
+ 96</pre>
1081
+ </td>
1082
+ <td>
1083
+ <pre class="code"><span class="info file"># File 'lib/tasker/types/execution_config.rb', line 96</span>
1084
+
1085
+ <span class='id identifier rubyid_attribute'>attribute</span> <span class='symbol'>:max_batch_timeout_seconds</span><span class='comma'>,</span> <span class='const'><span class='object_link'><a href="../Types.html" title="Tasker::Types (module)">Types</a></span></span><span class='op'>::</span><span class='const'>Integer</span><span class='period'>.</span><span class='id identifier rubyid_default'>default</span><span class='lparen'>(</span><span class='int'>120</span><span class='rparen'>)</span></pre>
1086
+ </td>
1087
+ </tr>
1088
+ </table>
1089
+ </div>
1090
+
1091
+
1092
+ <span id=""></span>
1093
+ <div class="method_details ">
1094
+ <h3 class="signature " id="max_concurrent_steps_limit-instance_method">
1095
+
1096
+ #<strong>max_concurrent_steps_limit</strong> &#x21d2; <tt>Integer</tt> <span class="extras">(readonly)</span>
1097
+
1098
+
1099
+
1100
+
1101
+
1102
+ </h3><div class="docstring">
1103
+ <div class="discussion">
1104
+
1105
+ <p>Returns Maximum concurrent steps limit (default: 12).</p>
1106
+
1107
+
1108
+ </div>
1109
+ </div>
1110
+ <div class="tags">
1111
+
1112
+ <p class="tag_title">Returns:</p>
1113
+ <ul class="return">
1114
+
1115
+ <li>
1116
+
1117
+
1118
+ <span class='type'>(<tt>Integer</tt>)</span>
1119
+
1120
+
1121
+
1122
+ &mdash;
1123
+ <div class='inline'>
1124
+ <p>Maximum concurrent steps limit (default: 12)</p>
1125
+ </div>
1126
+
1127
+ </li>
1128
+
1129
+ </ul>
1130
+
1131
+ </div><table class="source_code">
1132
+ <tr>
1133
+ <td>
1134
+ <pre class="lines">
1135
+
1136
+
1137
+ 60</pre>
1138
+ </td>
1139
+ <td>
1140
+ <pre class="code"><span class="info file"># File 'lib/tasker/types/execution_config.rb', line 60</span>
1141
+
1142
+ <span class='id identifier rubyid_attribute'>attribute</span> <span class='symbol'>:max_concurrent_steps_limit</span><span class='comma'>,</span> <span class='const'><span class='object_link'><a href="../Types.html" title="Tasker::Types (module)">Types</a></span></span><span class='op'>::</span><span class='const'>Integer</span><span class='period'>.</span><span class='id identifier rubyid_default'>default</span><span class='lparen'>(</span><span class='int'>12</span><span class='rparen'>)</span></pre>
1143
+ </td>
1144
+ </tr>
1145
+ </table>
1146
+ </div>
1147
+
1148
+
1149
+ <span id=""></span>
1150
+ <div class="method_details ">
1151
+ <h3 class="signature " id="min_concurrent_steps-instance_method">
1152
+
1153
+ #<strong>min_concurrent_steps</strong> &#x21d2; <tt>Integer</tt> <span class="extras">(readonly)</span>
1154
+
1155
+
1156
+
1157
+
1158
+
1159
+ </h3><div class="docstring">
1160
+ <div class="discussion">
1161
+
1162
+ <p>Returns Minimum concurrent steps (default: 3).</p>
1163
+
1164
+
1165
+ </div>
1166
+ </div>
1167
+ <div class="tags">
1168
+
1169
+ <p class="tag_title">Returns:</p>
1170
+ <ul class="return">
1171
+
1172
+ <li>
1173
+
1174
+
1175
+ <span class='type'>(<tt>Integer</tt>)</span>
1176
+
1177
+
1178
+
1179
+ &mdash;
1180
+ <div class='inline'>
1181
+ <p>Minimum concurrent steps (default: 3)</p>
1182
+ </div>
1183
+
1184
+ </li>
1185
+
1186
+ </ul>
1187
+
1188
+ </div><table class="source_code">
1189
+ <tr>
1190
+ <td>
1191
+ <pre class="lines">
1192
+
1193
+
1194
+ 50</pre>
1195
+ </td>
1196
+ <td>
1197
+ <pre class="code"><span class="info file"># File 'lib/tasker/types/execution_config.rb', line 50</span>
1198
+
1199
+ <span class='id identifier rubyid_attribute'>attribute</span> <span class='symbol'>:min_concurrent_steps</span><span class='comma'>,</span> <span class='const'><span class='object_link'><a href="../Types.html" title="Tasker::Types (module)">Types</a></span></span><span class='op'>::</span><span class='const'>Integer</span><span class='period'>.</span><span class='id identifier rubyid_default'>default</span><span class='lparen'>(</span><span class='int'>3</span><span class='rparen'>)</span></pre>
1200
+ </td>
1201
+ </tr>
1202
+ </table>
1203
+ </div>
1204
+
1205
+ </div>
1206
+
1207
+
1208
+ <div id="instance_method_details" class="method_details_list">
1209
+ <h2>Instance Method Details</h2>
1210
+
1211
+
1212
+ <div class="method_details first">
1213
+ <h3 class="signature first" id="calculate_batch_timeout-instance_method">
1214
+
1215
+ #<strong>calculate_batch_timeout</strong>(batch_size) &#x21d2; <tt>Integer</tt>
1216
+
1217
+
1218
+
1219
+
1220
+
1221
+ </h3><div class="docstring">
1222
+ <div class="discussion">
1223
+
1224
+ <p>Calculate batch timeout for a given batch size</p>
1225
+
1226
+
1227
+ </div>
1228
+ </div>
1229
+ <div class="tags">
1230
+ <p class="tag_title">Parameters:</p>
1231
+ <ul class="param">
1232
+
1233
+ <li>
1234
+
1235
+ <span class='name'>batch_size</span>
1236
+
1237
+
1238
+ <span class='type'>(<tt>Integer</tt>)</span>
1239
+
1240
+
1241
+
1242
+ &mdash;
1243
+ <div class='inline'>
1244
+ <p>Number of steps in the batch</p>
1245
+ </div>
1246
+
1247
+ </li>
1248
+
1249
+ </ul>
1250
+
1251
+ <p class="tag_title">Returns:</p>
1252
+ <ul class="return">
1253
+
1254
+ <li>
1255
+
1256
+
1257
+ <span class='type'>(<tt>Integer</tt>)</span>
1258
+
1259
+
1260
+
1261
+ &mdash;
1262
+ <div class='inline'>
1263
+ <p>Calculated timeout in seconds</p>
1264
+ </div>
1265
+
1266
+ </li>
1267
+
1268
+ </ul>
1269
+
1270
+ </div><table class="source_code">
1271
+ <tr>
1272
+ <td>
1273
+ <pre class="lines">
1274
+
1275
+
1276
+ 181
1277
+ 182
1278
+ 183
1279
+ 184</pre>
1280
+ </td>
1281
+ <td>
1282
+ <pre class="code"><span class="info file"># File 'lib/tasker/types/execution_config.rb', line 181</span>
1283
+
1284
+ <span class='kw'>def</span> <span class='id identifier rubyid_calculate_batch_timeout'>calculate_batch_timeout</span><span class='lparen'>(</span><span class='id identifier rubyid_batch_size'>batch_size</span><span class='rparen'>)</span>
1285
+ <span class='id identifier rubyid_calculated_timeout'>calculated_timeout</span> <span class='op'>=</span> <span class='id identifier rubyid_batch_timeout_base_seconds'>batch_timeout_base_seconds</span> <span class='op'>+</span> <span class='lparen'>(</span><span class='id identifier rubyid_batch_size'>batch_size</span> <span class='op'>*</span> <span class='id identifier rubyid_batch_timeout_per_step_seconds'>batch_timeout_per_step_seconds</span><span class='rparen'>)</span>
1286
+ <span class='lbracket'>[</span><span class='id identifier rubyid_calculated_timeout'>calculated_timeout</span><span class='comma'>,</span> <span class='id identifier rubyid_max_batch_timeout_seconds'>max_batch_timeout_seconds</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_min'>min</span>
1287
+ <span class='kw'>end</span></pre>
1288
+ </td>
1289
+ </tr>
1290
+ </table>
1291
+ </div>
1292
+
1293
+ <div class="method_details ">
1294
+ <h3 class="signature " id="future_cleanup_wait_seconds-instance_method">
1295
+
1296
+ #<strong>future_cleanup_wait_seconds</strong> &#x21d2; <tt>Integer</tt>
1297
+
1298
+
1299
+
1300
+
1301
+
1302
+ </h3><div class="docstring">
1303
+ <div class="discussion">
1304
+
1305
+ <p>Future cleanup wait time</p>
1306
+
1307
+ <p>Time to wait for executing futures during cleanup. Based on Ruby Concurrent::Future characteristics - 1 second is optimal for most Ruby applications and provides good balance of responsiveness vs resource cleanup.</p>
1308
+
1309
+
1310
+ </div>
1311
+ </div>
1312
+ <div class="tags">
1313
+
1314
+ <p class="tag_title">Returns:</p>
1315
+ <ul class="return">
1316
+
1317
+ <li>
1318
+
1319
+
1320
+ <span class='type'>(<tt>Integer</tt>)</span>
1321
+
1322
+
1323
+
1324
+ &mdash;
1325
+ <div class='inline'>
1326
+ <p>Wait time in seconds</p>
1327
+ </div>
1328
+
1329
+ </li>
1330
+
1331
+ </ul>
1332
+
1333
+ </div><table class="source_code">
1334
+ <tr>
1335
+ <td>
1336
+ <pre class="lines">
1337
+
1338
+
1339
+ 147
1340
+ 148
1341
+ 149</pre>
1342
+ </td>
1343
+ <td>
1344
+ <pre class="code"><span class="info file"># File 'lib/tasker/types/execution_config.rb', line 147</span>
1345
+
1346
+ <span class='kw'>def</span> <span class='id identifier rubyid_future_cleanup_wait_seconds'>future_cleanup_wait_seconds</span>
1347
+ <span class='int'>1</span>
1348
+ <span class='kw'>end</span></pre>
1349
+ </td>
1350
+ </tr>
1351
+ </table>
1352
+ </div>
1353
+
1354
+ <div class="method_details ">
1355
+ <h3 class="signature " id="gc_trigger_batch_size_threshold-instance_method">
1356
+
1357
+ #<strong>gc_trigger_batch_size_threshold</strong> &#x21d2; <tt>Integer</tt>
1358
+
1359
+
1360
+
1361
+
1362
+
1363
+ </h3><div class="docstring">
1364
+ <div class="discussion">
1365
+
1366
+ <p>GC trigger batch size threshold</p>
1367
+
1368
+ <p>Batch size that triggers intelligent garbage collection. Based on Ruby memory management patterns - 6 concurrent operations is typically where memory pressure becomes noticeable in Ruby.</p>
1369
+
1370
+
1371
+ </div>
1372
+ </div>
1373
+ <div class="tags">
1374
+
1375
+ <p class="tag_title">Returns:</p>
1376
+ <ul class="return">
1377
+
1378
+ <li>
1379
+
1380
+
1381
+ <span class='type'>(<tt>Integer</tt>)</span>
1382
+
1383
+
1384
+
1385
+ &mdash;
1386
+ <div class='inline'>
1387
+ <p>Batch size threshold</p>
1388
+ </div>
1389
+
1390
+ </li>
1391
+
1392
+ </ul>
1393
+
1394
+ </div><table class="source_code">
1395
+ <tr>
1396
+ <td>
1397
+ <pre class="lines">
1398
+
1399
+
1400
+ 158
1401
+ 159
1402
+ 160</pre>
1403
+ </td>
1404
+ <td>
1405
+ <pre class="code"><span class="info file"># File 'lib/tasker/types/execution_config.rb', line 158</span>
1406
+
1407
+ <span class='kw'>def</span> <span class='id identifier rubyid_gc_trigger_batch_size_threshold'>gc_trigger_batch_size_threshold</span>
1408
+ <span class='int'>6</span>
1409
+ <span class='kw'>end</span></pre>
1410
+ </td>
1411
+ </tr>
1412
+ </table>
1413
+ </div>
1414
+
1415
+ <div class="method_details ">
1416
+ <h3 class="signature " id="gc_trigger_duration_threshold-instance_method">
1417
+
1418
+ #<strong>gc_trigger_duration_threshold</strong> &#x21d2; <tt>Integer</tt>
1419
+
1420
+
1421
+
1422
+
1423
+
1424
+ </h3><div class="docstring">
1425
+ <div class="discussion">
1426
+
1427
+ <p>GC trigger duration threshold</p>
1428
+
1429
+ <p>Batch duration that triggers intelligent garbage collection. Based on Ruby GC timing characteristics - 30 seconds is typically when Ruby benefits from explicit GC triggering.</p>
1430
+
1431
+
1432
+ </div>
1433
+ </div>
1434
+ <div class="tags">
1435
+
1436
+ <p class="tag_title">Returns:</p>
1437
+ <ul class="return">
1438
+
1439
+ <li>
1440
+
1441
+
1442
+ <span class='type'>(<tt>Integer</tt>)</span>
1443
+
1444
+
1445
+
1446
+ &mdash;
1447
+ <div class='inline'>
1448
+ <p>Duration threshold in seconds</p>
1449
+ </div>
1450
+
1451
+ </li>
1452
+
1453
+ </ul>
1454
+
1455
+ </div><table class="source_code">
1456
+ <tr>
1457
+ <td>
1458
+ <pre class="lines">
1459
+
1460
+
1461
+ 169
1462
+ 170
1463
+ 171</pre>
1464
+ </td>
1465
+ <td>
1466
+ <pre class="code"><span class="info file"># File 'lib/tasker/types/execution_config.rb', line 169</span>
1467
+
1468
+ <span class='kw'>def</span> <span class='id identifier rubyid_gc_trigger_duration_threshold'>gc_trigger_duration_threshold</span>
1469
+ <span class='int'>30</span>
1470
+ <span class='kw'>end</span></pre>
1471
+ </td>
1472
+ </tr>
1473
+ </table>
1474
+ </div>
1475
+
1476
+ <div class="method_details ">
1477
+ <h3 class="signature " id="should_trigger_gc?-instance_method">
1478
+
1479
+ #<strong>should_trigger_gc?</strong>(batch_size, batch_duration) &#x21d2; <tt>Boolean</tt>
1480
+
1481
+
1482
+
1483
+
1484
+
1485
+ </h3><div class="docstring">
1486
+ <div class="discussion">
1487
+
1488
+ <p>Check if batch should trigger garbage collection</p>
1489
+
1490
+
1491
+ </div>
1492
+ </div>
1493
+ <div class="tags">
1494
+ <p class="tag_title">Parameters:</p>
1495
+ <ul class="param">
1496
+
1497
+ <li>
1498
+
1499
+ <span class='name'>batch_size</span>
1500
+
1501
+
1502
+ <span class='type'>(<tt>Integer</tt>)</span>
1503
+
1504
+
1505
+
1506
+ &mdash;
1507
+ <div class='inline'>
1508
+ <p>Size of the batch</p>
1509
+ </div>
1510
+
1511
+ </li>
1512
+
1513
+ <li>
1514
+
1515
+ <span class='name'>batch_duration</span>
1516
+
1517
+
1518
+ <span class='type'>(<tt>Float</tt>)</span>
1519
+
1520
+
1521
+
1522
+ &mdash;
1523
+ <div class='inline'>
1524
+ <p>Duration of batch execution in seconds</p>
1525
+ </div>
1526
+
1527
+ </li>
1528
+
1529
+ </ul>
1530
+
1531
+ <p class="tag_title">Returns:</p>
1532
+ <ul class="return">
1533
+
1534
+ <li>
1535
+
1536
+
1537
+ <span class='type'>(<tt>Boolean</tt>)</span>
1538
+
1539
+
1540
+
1541
+ &mdash;
1542
+ <div class='inline'>
1543
+ <p>Whether to trigger GC</p>
1544
+ </div>
1545
+
1546
+ </li>
1547
+
1548
+ </ul>
1549
+
1550
+ </div><table class="source_code">
1551
+ <tr>
1552
+ <td>
1553
+ <pre class="lines">
1554
+
1555
+
1556
+ 191
1557
+ 192
1558
+ 193
1559
+ 194</pre>
1560
+ </td>
1561
+ <td>
1562
+ <pre class="code"><span class="info file"># File 'lib/tasker/types/execution_config.rb', line 191</span>
1563
+
1564
+ <span class='kw'>def</span> <span class='id identifier rubyid_should_trigger_gc?'>should_trigger_gc?</span><span class='lparen'>(</span><span class='id identifier rubyid_batch_size'>batch_size</span><span class='comma'>,</span> <span class='id identifier rubyid_batch_duration'>batch_duration</span><span class='rparen'>)</span>
1565
+ <span class='id identifier rubyid_batch_size'>batch_size</span> <span class='op'>&gt;=</span> <span class='id identifier rubyid_gc_trigger_batch_size_threshold'>gc_trigger_batch_size_threshold</span> <span class='op'>||</span>
1566
+ <span class='id identifier rubyid_batch_duration'>batch_duration</span> <span class='op'>&gt;=</span> <span class='id identifier rubyid_gc_trigger_duration_threshold'>gc_trigger_duration_threshold</span>
1567
+ <span class='kw'>end</span></pre>
1568
+ </td>
1569
+ </tr>
1570
+ </table>
1571
+ </div>
1572
+
1573
+ <div class="method_details ">
1574
+ <h3 class="signature " id="validate!-instance_method">
1575
+
1576
+ #<strong>validate!</strong> &#x21d2; <tt>Boolean</tt>
1577
+
1578
+
1579
+
1580
+
1581
+
1582
+ </h3><div class="docstring">
1583
+ <div class="discussion">
1584
+
1585
+ <p>Comprehensive validation</p>
1586
+
1587
+ <p>rubocop:disable Naming/PredicateMethod</p>
1588
+
1589
+
1590
+ </div>
1591
+ </div>
1592
+ <div class="tags">
1593
+
1594
+ <p class="tag_title">Returns:</p>
1595
+ <ul class="return">
1596
+
1597
+ <li>
1598
+
1599
+
1600
+ <span class='type'>(<tt>Boolean</tt>)</span>
1601
+
1602
+
1603
+
1604
+ &mdash;
1605
+ <div class='inline'>
1606
+ <p>True if valid, raises exception if invalid</p>
1607
+ </div>
1608
+
1609
+ </li>
1610
+
1611
+ </ul>
1612
+ <p class="tag_title">Raises:</p>
1613
+ <ul class="raise">
1614
+
1615
+ <li>
1616
+
1617
+
1618
+ <span class='type'>(<tt>Dry::Struct::Error</tt>)</span>
1619
+
1620
+
1621
+
1622
+ &mdash;
1623
+ <div class='inline'>
1624
+ <p>If validation fails</p>
1625
+ </div>
1626
+
1627
+ </li>
1628
+
1629
+ </ul>
1630
+
1631
+ </div><table class="source_code">
1632
+ <tr>
1633
+ <td>
1634
+ <pre class="lines">
1635
+
1636
+
1637
+ 279
1638
+ 280
1639
+ 281
1640
+ 282
1641
+ 283
1642
+ 284
1643
+ 285</pre>
1644
+ </td>
1645
+ <td>
1646
+ <pre class="code"><span class="info file"># File 'lib/tasker/types/execution_config.rb', line 279</span>
1647
+
1648
+ <span class='kw'>def</span> <span class='id identifier rubyid_validate!'>validate!</span>
1649
+ <span class='id identifier rubyid_errors'>errors</span> <span class='op'>=</span> <span class='id identifier rubyid_validate_concurrency_bounds'>validate_concurrency_bounds</span> <span class='op'>+</span> <span class='id identifier rubyid_validate_timeout_configuration'>validate_timeout_configuration</span> <span class='op'>+</span> <span class='id identifier rubyid_validate_connection_configuration'>validate_connection_configuration</span>
1650
+
1651
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>Dry</span><span class='op'>::</span><span class='const'>Struct</span><span class='op'>::</span><span class='const'>Error</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>ExecutionConfig validation failed: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_errors'>errors</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>, </span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>unless</span> <span class='id identifier rubyid_errors'>errors</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
1652
+
1653
+ <span class='kw'>true</span>
1654
+ <span class='kw'>end</span></pre>
1655
+ </td>
1656
+ </tr>
1657
+ </table>
1658
+ </div>
1659
+
1660
+ <div class="method_details ">
1661
+ <h3 class="signature " id="validate_concurrency_bounds-instance_method">
1662
+
1663
+ #<strong>validate_concurrency_bounds</strong> &#x21d2; <tt>Array&lt;String&gt;</tt>
1664
+
1665
+
1666
+
1667
+
1668
+
1669
+ </h3><div class="docstring">
1670
+ <div class="discussion">
1671
+
1672
+ <p>Validate concurrency bounds</p>
1673
+
1674
+ <p>Ensures min &lt;= max and both are positive</p>
1675
+
1676
+
1677
+ </div>
1678
+ </div>
1679
+ <div class="tags">
1680
+
1681
+ <p class="tag_title">Returns:</p>
1682
+ <ul class="return">
1683
+
1684
+ <li>
1685
+
1686
+
1687
+ <span class='type'>(<tt>Array&lt;String&gt;</tt>)</span>
1688
+
1689
+
1690
+
1691
+ &mdash;
1692
+ <div class='inline'>
1693
+ <p>Validation errors (empty if valid)</p>
1694
+ </div>
1695
+
1696
+ </li>
1697
+
1698
+ </ul>
1699
+
1700
+ </div><table class="source_code">
1701
+ <tr>
1702
+ <td>
1703
+ <pre class="lines">
1704
+
1705
+
1706
+ 200
1707
+ 201
1708
+ 202
1709
+ 203
1710
+ 204
1711
+ 205
1712
+ 206
1713
+ 207
1714
+ 208
1715
+ 209
1716
+ 210
1717
+ 211
1718
+ 212
1719
+ 213
1720
+ 214
1721
+ 215</pre>
1722
+ </td>
1723
+ <td>
1724
+ <pre class="code"><span class="info file"># File 'lib/tasker/types/execution_config.rb', line 200</span>
1725
+
1726
+ <span class='kw'>def</span> <span class='id identifier rubyid_validate_concurrency_bounds'>validate_concurrency_bounds</span>
1727
+ <span class='id identifier rubyid_errors'>errors</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
1728
+
1729
+ <span class='id identifier rubyid_errors'>errors</span> <span class='op'>&lt;&lt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>min_concurrent_steps must be positive (got: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_min_concurrent_steps'>min_concurrent_steps</span><span class='embexpr_end'>}</span><span class='tstring_content'>)</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_min_concurrent_steps'>min_concurrent_steps</span> <span class='op'>&lt;=</span> <span class='int'>0</span>
1730
+
1731
+ <span class='kw'>if</span> <span class='id identifier rubyid_max_concurrent_steps_limit'>max_concurrent_steps_limit</span> <span class='op'>&lt;=</span> <span class='int'>0</span>
1732
+ <span class='id identifier rubyid_errors'>errors</span> <span class='op'>&lt;&lt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>max_concurrent_steps_limit must be positive (got: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_max_concurrent_steps_limit'>max_concurrent_steps_limit</span><span class='embexpr_end'>}</span><span class='tstring_content'>)</span><span class='tstring_end'>&quot;</span></span>
1733
+ <span class='kw'>end</span>
1734
+
1735
+ <span class='kw'>if</span> <span class='id identifier rubyid_min_concurrent_steps'>min_concurrent_steps</span> <span class='op'>&gt;</span> <span class='id identifier rubyid_max_concurrent_steps_limit'>max_concurrent_steps_limit</span>
1736
+ <span class='id identifier rubyid_errors'>errors</span> <span class='op'>&lt;&lt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>min_concurrent_steps (</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_min_concurrent_steps'>min_concurrent_steps</span><span class='embexpr_end'>}</span><span class='tstring_content'>) cannot exceed </span><span class='tstring_end'>&quot;</span></span> \
1737
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>max_concurrent_steps_limit (</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_max_concurrent_steps_limit'>max_concurrent_steps_limit</span><span class='embexpr_end'>}</span><span class='tstring_content'>)</span><span class='tstring_end'>&quot;</span></span>
1738
+ <span class='kw'>end</span>
1739
+
1740
+ <span class='id identifier rubyid_errors'>errors</span>
1741
+ <span class='kw'>end</span></pre>
1742
+ </td>
1743
+ </tr>
1744
+ </table>
1745
+ </div>
1746
+
1747
+ <div class="method_details ">
1748
+ <h3 class="signature " id="validate_connection_configuration-instance_method">
1749
+
1750
+ #<strong>validate_connection_configuration</strong> &#x21d2; <tt>Array&lt;String&gt;</tt>
1751
+
1752
+
1753
+
1754
+
1755
+
1756
+ </h3><div class="docstring">
1757
+ <div class="discussion">
1758
+
1759
+ <p>Validate connection configuration</p>
1760
+
1761
+ <p>Ensures connection pressure factors and health settings are valid</p>
1762
+
1763
+
1764
+ </div>
1765
+ </div>
1766
+ <div class="tags">
1767
+
1768
+ <p class="tag_title">Returns:</p>
1769
+ <ul class="return">
1770
+
1771
+ <li>
1772
+
1773
+
1774
+ <span class='type'>(<tt>Array&lt;String&gt;</tt>)</span>
1775
+
1776
+
1777
+
1778
+ &mdash;
1779
+ <div class='inline'>
1780
+ <p>Validation errors (empty if valid)</p>
1781
+ </div>
1782
+
1783
+ </li>
1784
+
1785
+ </ul>
1786
+
1787
+ </div><table class="source_code">
1788
+ <tr>
1789
+ <td>
1790
+ <pre class="lines">
1791
+
1792
+
1793
+ 244
1794
+ 245
1795
+ 246
1796
+ 247
1797
+ 248
1798
+ 249
1799
+ 250
1800
+ 251
1801
+ 252
1802
+ 253
1803
+ 254
1804
+ 255
1805
+ 256
1806
+ 257
1807
+ 258
1808
+ 259
1809
+ 260
1810
+ 261
1811
+ 262
1812
+ 263
1813
+ 264
1814
+ 265
1815
+ 266
1816
+ 267
1817
+ 268
1818
+ 269
1819
+ 270
1820
+ 271
1821
+ 272</pre>
1822
+ </td>
1823
+ <td>
1824
+ <pre class="code"><span class="info file"># File 'lib/tasker/types/execution_config.rb', line 244</span>
1825
+
1826
+ <span class='kw'>def</span> <span class='id identifier rubyid_validate_connection_configuration'>validate_connection_configuration</span>
1827
+ <span class='id identifier rubyid_errors'>errors</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
1828
+
1829
+ <span class='kw'>if</span> <span class='id identifier rubyid_health_assessment_cache_duration'>health_assessment_cache_duration</span> <span class='op'>&lt;=</span> <span class='int'>0</span>
1830
+ <span class='id identifier rubyid_errors'>errors</span> <span class='op'>&lt;&lt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>health_assessment_cache_duration must be positive (got: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_health_assessment_cache_duration'>health_assessment_cache_duration</span><span class='embexpr_end'>}</span><span class='tstring_content'>)</span><span class='tstring_end'>&quot;</span></span>
1831
+ <span class='kw'>end</span>
1832
+
1833
+ <span class='comment'># Validate connection pressure factors
1834
+ </span> <span class='id identifier rubyid_required_pressure_levels'>required_pressure_levels</span> <span class='op'>=</span> <span class='qsymbols_beg'>%i[</span><span class='tstring_content'>low</span><span class='words_sep'> </span><span class='tstring_content'>moderate</span><span class='words_sep'> </span><span class='tstring_content'>high</span><span class='words_sep'> </span><span class='tstring_content'>critical</span><span class='tstring_end'>]</span></span>
1835
+ <span class='id identifier rubyid_missing_levels'>missing_levels</span> <span class='op'>=</span> <span class='id identifier rubyid_required_pressure_levels'>required_pressure_levels</span> <span class='op'>-</span> <span class='id identifier rubyid_connection_pressure_factors'>connection_pressure_factors</span><span class='period'>.</span><span class='id identifier rubyid_keys'>keys</span>
1836
+ <span class='kw'>unless</span> <span class='id identifier rubyid_missing_levels'>missing_levels</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
1837
+ <span class='id identifier rubyid_errors'>errors</span> <span class='op'>&lt;&lt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>connection_pressure_factors missing required levels: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_missing_levels'>missing_levels</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>, </span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
1838
+ <span class='kw'>end</span>
1839
+
1840
+ <span class='id identifier rubyid_connection_pressure_factors'>connection_pressure_factors</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_level'>level</span><span class='comma'>,</span> <span class='id identifier rubyid_factor'>factor</span><span class='op'>|</span>
1841
+ <span class='kw'>unless</span> <span class='id identifier rubyid_factor'>factor</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Numeric</span><span class='rparen'>)</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_factor'>factor</span> <span class='op'>&gt;=</span> <span class='float'>0.0</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_factor'>factor</span> <span class='op'>&lt;=</span> <span class='float'>1.0</span>
1842
+ <span class='id identifier rubyid_errors'>errors</span> <span class='op'>&lt;&lt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>connection_pressure_factors[</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_level'>level</span><span class='embexpr_end'>}</span><span class='tstring_content'>] must be between 0.0 and 1.0 (got: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_factor'>factor</span><span class='embexpr_end'>}</span><span class='tstring_content'>)</span><span class='tstring_end'>&quot;</span></span>
1843
+ <span class='kw'>end</span>
1844
+ <span class='kw'>end</span>
1845
+
1846
+ <span class='comment'># Validate log level
1847
+ </span> <span class='id identifier rubyid_valid_log_levels'>valid_log_levels</span> <span class='op'>=</span> <span class='qwords_beg'>%w[</span><span class='tstring_content'>debug</span><span class='words_sep'> </span><span class='tstring_content'>info</span><span class='words_sep'> </span><span class='tstring_content'>warn</span><span class='words_sep'> </span><span class='tstring_content'>error</span><span class='words_sep'> </span><span class='tstring_content'>fatal</span><span class='tstring_end'>]</span></span>
1848
+ <span class='kw'>unless</span> <span class='id identifier rubyid_valid_log_levels'>valid_log_levels</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_connection_health_log_level'>connection_health_log_level</span><span class='rparen'>)</span>
1849
+ <span class='id identifier rubyid_errors'>errors</span> <span class='op'>&lt;&lt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>connection_health_log_level must be one of: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_valid_log_levels'>valid_log_levels</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>, </span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_content'> </span><span class='tstring_end'>&quot;</span></span> \
1850
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>(got: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_connection_health_log_level'>connection_health_log_level</span><span class='embexpr_end'>}</span><span class='tstring_content'>)</span><span class='tstring_end'>&quot;</span></span>
1851
+ <span class='kw'>end</span>
1852
+
1853
+ <span class='id identifier rubyid_errors'>errors</span>
1854
+ <span class='kw'>end</span></pre>
1855
+ </td>
1856
+ </tr>
1857
+ </table>
1858
+ </div>
1859
+
1860
+ <div class="method_details ">
1861
+ <h3 class="signature " id="validate_timeout_configuration-instance_method">
1862
+
1863
+ #<strong>validate_timeout_configuration</strong> &#x21d2; <tt>Array&lt;String&gt;</tt>
1864
+
1865
+
1866
+
1867
+
1868
+
1869
+ </h3><div class="docstring">
1870
+ <div class="discussion">
1871
+
1872
+ <p>Validate timeout configuration</p>
1873
+
1874
+ <p>Ensures timeouts are positive and logical</p>
1875
+
1876
+
1877
+ </div>
1878
+ </div>
1879
+ <div class="tags">
1880
+
1881
+ <p class="tag_title">Returns:</p>
1882
+ <ul class="return">
1883
+
1884
+ <li>
1885
+
1886
+
1887
+ <span class='type'>(<tt>Array&lt;String&gt;</tt>)</span>
1888
+
1889
+
1890
+
1891
+ &mdash;
1892
+ <div class='inline'>
1893
+ <p>Validation errors (empty if valid)</p>
1894
+ </div>
1895
+
1896
+ </li>
1897
+
1898
+ </ul>
1899
+
1900
+ </div><table class="source_code">
1901
+ <tr>
1902
+ <td>
1903
+ <pre class="lines">
1904
+
1905
+
1906
+ 221
1907
+ 222
1908
+ 223
1909
+ 224
1910
+ 225
1911
+ 226
1912
+ 227
1913
+ 228
1914
+ 229
1915
+ 230
1916
+ 231
1917
+ 232
1918
+ 233
1919
+ 234
1920
+ 235
1921
+ 236
1922
+ 237
1923
+ 238</pre>
1924
+ </td>
1925
+ <td>
1926
+ <pre class="code"><span class="info file"># File 'lib/tasker/types/execution_config.rb', line 221</span>
1927
+
1928
+ <span class='kw'>def</span> <span class='id identifier rubyid_validate_timeout_configuration'>validate_timeout_configuration</span>
1929
+ <span class='id identifier rubyid_errors'>errors</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
1930
+
1931
+ <span class='kw'>if</span> <span class='id identifier rubyid_batch_timeout_base_seconds'>batch_timeout_base_seconds</span> <span class='op'>&lt;=</span> <span class='int'>0</span>
1932
+ <span class='id identifier rubyid_errors'>errors</span> <span class='op'>&lt;&lt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>batch_timeout_base_seconds must be positive (got: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_batch_timeout_base_seconds'>batch_timeout_base_seconds</span><span class='embexpr_end'>}</span><span class='tstring_content'>)</span><span class='tstring_end'>&quot;</span></span>
1933
+ <span class='kw'>end</span>
1934
+
1935
+ <span class='kw'>if</span> <span class='id identifier rubyid_batch_timeout_per_step_seconds'>batch_timeout_per_step_seconds</span> <span class='op'>&lt;=</span> <span class='int'>0</span>
1936
+ <span class='id identifier rubyid_errors'>errors</span> <span class='op'>&lt;&lt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>batch_timeout_per_step_seconds must be positive (got: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_batch_timeout_per_step_seconds'>batch_timeout_per_step_seconds</span><span class='embexpr_end'>}</span><span class='tstring_content'>)</span><span class='tstring_end'>&quot;</span></span>
1937
+ <span class='kw'>end</span>
1938
+
1939
+ <span class='kw'>if</span> <span class='id identifier rubyid_max_batch_timeout_seconds'>max_batch_timeout_seconds</span> <span class='op'>&lt;=</span> <span class='id identifier rubyid_batch_timeout_base_seconds'>batch_timeout_base_seconds</span>
1940
+ <span class='id identifier rubyid_errors'>errors</span> <span class='op'>&lt;&lt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>max_batch_timeout_seconds (</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_max_batch_timeout_seconds'>max_batch_timeout_seconds</span><span class='embexpr_end'>}</span><span class='tstring_content'>) must be greater than </span><span class='tstring_end'>&quot;</span></span> \
1941
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>batch_timeout_base_seconds (</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_batch_timeout_base_seconds'>batch_timeout_base_seconds</span><span class='embexpr_end'>}</span><span class='tstring_content'>)</span><span class='tstring_end'>&quot;</span></span>
1942
+ <span class='kw'>end</span>
1943
+
1944
+ <span class='id identifier rubyid_errors'>errors</span>
1945
+ <span class='kw'>end</span></pre>
1946
+ </td>
1947
+ </tr>
1948
+ </table>
1949
+ </div>
1950
+
1951
+ </div>
1952
+
1953
+ </div>
1954
+
1955
+ <div id="footer">
1956
+ Generated on Tue Jul 1 16:47:38 2025 by
1957
+ <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1958
+ 0.9.37 (ruby-3.2.4).
1959
+ </div>
1960
+
1961
+ </div>
1962
+ </body>
1963
+ </html>