tasker-engine 0.1.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.
- checksums.yaml +7 -0
- data/LICENSE +22 -0
- data/README.md +440 -0
- data/Rakefile +10 -0
- data/app/controllers/tasker/analytics_controller.rb +179 -0
- data/app/controllers/tasker/application_controller.rb +45 -0
- data/app/controllers/tasker/graphql_controller.rb +193 -0
- data/app/controllers/tasker/handlers_controller.rb +217 -0
- data/app/controllers/tasker/health_controller.rb +229 -0
- data/app/controllers/tasker/metrics_controller.rb +111 -0
- data/app/controllers/tasker/page_sort.rb +97 -0
- data/app/controllers/tasker/tasks_controller.rb +123 -0
- data/app/controllers/tasker/workflow_steps_controller.rb +69 -0
- data/app/graphql/examples/all_tasks.graphql +22 -0
- data/app/graphql/examples/pending_tasks.graphql +23 -0
- data/app/graphql/tasker/graph_ql_types/annotation_type.rb +14 -0
- data/app/graphql/tasker/graph_ql_types/base_argument.rb +9 -0
- data/app/graphql/tasker/graph_ql_types/base_connection.rb +11 -0
- data/app/graphql/tasker/graph_ql_types/base_edge.rb +10 -0
- data/app/graphql/tasker/graph_ql_types/base_enum.rb +9 -0
- data/app/graphql/tasker/graph_ql_types/base_field.rb +10 -0
- data/app/graphql/tasker/graph_ql_types/base_input_object.rb +10 -0
- data/app/graphql/tasker/graph_ql_types/base_interface.rb +14 -0
- data/app/graphql/tasker/graph_ql_types/base_object.rb +10 -0
- data/app/graphql/tasker/graph_ql_types/base_scalar.rb +9 -0
- data/app/graphql/tasker/graph_ql_types/base_union.rb +11 -0
- data/app/graphql/tasker/graph_ql_types/dependent_system_object_map_type.rb +18 -0
- data/app/graphql/tasker/graph_ql_types/dependent_system_type.rb +13 -0
- data/app/graphql/tasker/graph_ql_types/mutation_type.rb +16 -0
- data/app/graphql/tasker/graph_ql_types/named_step_type.rb +16 -0
- data/app/graphql/tasker/graph_ql_types/named_task_type.rb +14 -0
- data/app/graphql/tasker/graph_ql_types/named_tasks_named_step_type.rb +19 -0
- data/app/graphql/tasker/graph_ql_types/node_type.rb +12 -0
- data/app/graphql/tasker/graph_ql_types/query_type.rb +20 -0
- data/app/graphql/tasker/graph_ql_types/task_annotation_type.rb +17 -0
- data/app/graphql/tasker/graph_ql_types/task_interface.rb +17 -0
- data/app/graphql/tasker/graph_ql_types/task_type.rb +26 -0
- data/app/graphql/tasker/graph_ql_types/workflow_step_type.rb +154 -0
- data/app/graphql/tasker/graph_ql_types.rb +42 -0
- data/app/graphql/tasker/mutations/base_mutation.rb +13 -0
- data/app/graphql/tasker/mutations/cancel_step.rb +29 -0
- data/app/graphql/tasker/mutations/cancel_task.rb +29 -0
- data/app/graphql/tasker/mutations/create_task.rb +52 -0
- data/app/graphql/tasker/mutations/update_step.rb +36 -0
- data/app/graphql/tasker/mutations/update_task.rb +41 -0
- data/app/graphql/tasker/queries/all_annotation_types.rb +17 -0
- data/app/graphql/tasker/queries/all_tasks.rb +23 -0
- data/app/graphql/tasker/queries/base_query.rb +9 -0
- data/app/graphql/tasker/queries/helpers.rb +16 -0
- data/app/graphql/tasker/queries/one_step.rb +24 -0
- data/app/graphql/tasker/queries/one_task.rb +18 -0
- data/app/graphql/tasker/queries/tasks_by_annotation.rb +31 -0
- data/app/graphql/tasker/queries/tasks_by_status.rb +30 -0
- data/app/graphql/tasker/tasker_rails_schema.rb +52 -0
- data/app/jobs/tasker/application_job.rb +8 -0
- data/app/jobs/tasker/metrics_export_job.rb +252 -0
- data/app/jobs/tasker/task_runner_job.rb +224 -0
- data/app/models/tasker/annotation_type.rb +26 -0
- data/app/models/tasker/application_record.rb +70 -0
- data/app/models/tasker/dependent_system.rb +26 -0
- data/app/models/tasker/dependent_system_object_map.rb +64 -0
- data/app/models/tasker/named_step.rb +41 -0
- data/app/models/tasker/named_task.rb +121 -0
- data/app/models/tasker/named_tasks_named_step.rb +82 -0
- data/app/models/tasker/step_dag_relationship.rb +65 -0
- data/app/models/tasker/step_readiness_status.rb +59 -0
- data/app/models/tasker/task.rb +414 -0
- data/app/models/tasker/task_annotation.rb +36 -0
- data/app/models/tasker/task_execution_context.rb +29 -0
- data/app/models/tasker/task_namespace.rb +41 -0
- data/app/models/tasker/task_transition.rb +235 -0
- data/app/models/tasker/workflow_step.rb +461 -0
- data/app/models/tasker/workflow_step_edge.rb +95 -0
- data/app/models/tasker/workflow_step_transition.rb +434 -0
- data/app/serializers/tasker/annotation_type_serializer.rb +8 -0
- data/app/serializers/tasker/handler_serializer.rb +109 -0
- data/app/serializers/tasker/task_annotation_serializer.rb +32 -0
- data/app/serializers/tasker/task_serializer.rb +168 -0
- data/app/serializers/tasker/workflow_step_serializer.rb +27 -0
- data/app/services/tasker/analytics_service.rb +409 -0
- data/config/initializers/dry_struct.rb +11 -0
- data/config/initializers/statesman.rb +6 -0
- data/config/initializers/tasker_orchestration.rb +17 -0
- data/config/initializers/time_formats.rb +4 -0
- data/config/routes.rb +34 -0
- data/config/tasker/subscriptions/example_integrations.yml +67 -0
- data/config/tasker/system_events.yml +305 -0
- data/db/functions/calculate_dependency_levels_v01.sql +45 -0
- data/db/functions/get_analytics_metrics_v01.sql +137 -0
- data/db/functions/get_slowest_steps_v01.sql +82 -0
- data/db/functions/get_slowest_tasks_v01.sql +96 -0
- data/db/functions/get_step_readiness_status_batch_v01.sql +140 -0
- data/db/functions/get_step_readiness_status_single_and_batch_v02.sql +223 -0
- data/db/functions/get_step_readiness_status_v01.sql +139 -0
- data/db/functions/get_system_health_counts_v01.sql +108 -0
- data/db/functions/get_task_execution_context_v01.sql +108 -0
- data/db/functions/get_task_execution_contexts_batch_v01.sql +104 -0
- data/db/init/schema.sql +2254 -0
- data/db/migrate/20250701165431_initial_tasker_schema.rb +116 -0
- data/db/migrate/20250710110830_step_readiness_sql_functions_v02.rb +39 -0
- data/db/views/tasker_step_dag_relationships_v01.sql +69 -0
- data/docs/APPLICATION_GENERATOR.md +384 -0
- data/docs/AUTH.md +1741 -0
- data/docs/CIRCUIT_BREAKER.md +224 -0
- data/docs/DEVELOPER_GUIDE.md +2664 -0
- data/docs/EVENT_SYSTEM.md +637 -0
- data/docs/EXECUTION_CONFIGURATION.md +341 -0
- data/docs/FLOW_CHART.md +149 -0
- data/docs/HEALTH.md +542 -0
- data/docs/METRICS.md +731 -0
- data/docs/OPTIMIZATION_PLAN.md +1479 -0
- data/docs/OVERVIEW.md +548 -0
- data/docs/QUICK_START.md +270 -0
- data/docs/REGISTRY_SYSTEMS.md +373 -0
- data/docs/REST_API.md +632 -0
- data/docs/REVERSIONING.md +404 -0
- data/docs/ROADMAP.md +221 -0
- data/docs/SQL_FUNCTIONS.md +1408 -0
- data/docs/TASK_EXECUTION_CONTROL_FLOW.md +237 -0
- data/docs/TELEMETRY.md +795 -0
- data/docs/TROUBLESHOOTING.md +756 -0
- data/docs/TaskHandlerGenerator.html +255 -0
- data/docs/Tasker/Analysis/RuntimeGraphAnalyzer.html +907 -0
- data/docs/Tasker/Analysis/TemplateGraphAnalyzer.html +1236 -0
- data/docs/Tasker/Analysis.html +117 -0
- data/docs/Tasker/AnalyticsController.html +450 -0
- data/docs/Tasker/AnalyticsService/BottleneckAnalytics.html +816 -0
- data/docs/Tasker/AnalyticsService/PerformanceAnalytics.html +586 -0
- data/docs/Tasker/AnalyticsService.html +2221 -0
- data/docs/Tasker/AnnotationType.html +137 -0
- data/docs/Tasker/AnnotationTypeSerializer.html +124 -0
- data/docs/Tasker/ApplicationController.html +147 -0
- data/docs/Tasker/ApplicationJob.html +128 -0
- data/docs/Tasker/ApplicationRecord.html +378 -0
- data/docs/Tasker/Authentication/AuthenticationError.html +124 -0
- data/docs/Tasker/Authentication/ConfigurationError.html +124 -0
- data/docs/Tasker/Authentication/Coordinator.html +242 -0
- data/docs/Tasker/Authentication/Interface.html +560 -0
- data/docs/Tasker/Authentication/InterfaceError.html +124 -0
- data/docs/Tasker/Authentication/NoneAuthenticator.html +338 -0
- data/docs/Tasker/Authentication.html +119 -0
- data/docs/Tasker/Authorization/AuthorizationError.html +139 -0
- data/docs/Tasker/Authorization/BaseCoordinator.html +927 -0
- data/docs/Tasker/Authorization/ConfigurationError.html +153 -0
- data/docs/Tasker/Authorization/ResourceConstants/ACTIONS.html +428 -0
- data/docs/Tasker/Authorization/ResourceConstants/RESOURCES.html +360 -0
- data/docs/Tasker/Authorization/ResourceConstants.html +146 -0
- data/docs/Tasker/Authorization/ResourceRegistry.html +875 -0
- data/docs/Tasker/Authorization/UnauthorizedError.html +153 -0
- data/docs/Tasker/Authorization.html +582 -0
- data/docs/Tasker/CacheCapabilities.html +167 -0
- data/docs/Tasker/CacheStrategy.html +1297 -0
- data/docs/Tasker/Concerns/Authenticatable.html +116 -0
- data/docs/Tasker/Concerns/Authorizable/AdminStatusChecker.html +256 -0
- data/docs/Tasker/Concerns/Authorizable.html +816 -0
- data/docs/Tasker/Concerns/ControllerAuthorizable.html +157 -0
- data/docs/Tasker/Concerns/EventPublisher.html +4023 -0
- data/docs/Tasker/Concerns/IdempotentStateTransitions.html +806 -0
- data/docs/Tasker/Concerns/LifecycleEventHelpers.html +129 -0
- data/docs/Tasker/Concerns/OrchestrationPublisher.html +129 -0
- data/docs/Tasker/Concerns/StateMachineBase/ClassMethods.html +1075 -0
- data/docs/Tasker/Concerns/StateMachineBase/StateMachineBase/ClassMethods.html +191 -0
- data/docs/Tasker/Concerns/StateMachineBase/StateMachineBase.html +126 -0
- data/docs/Tasker/Concerns/StateMachineBase.html +153 -0
- data/docs/Tasker/Concerns/StructuredLogging.html +1413 -0
- data/docs/Tasker/Concerns.html +117 -0
- data/docs/Tasker/Configuration/AuthConfiguration.html +1023 -0
- data/docs/Tasker/Configuration/ConfigurationProxy.html +581 -0
- data/docs/Tasker/Configuration/DatabaseConfiguration.html +475 -0
- data/docs/Tasker/Configuration/EngineConfiguration.html +1265 -0
- data/docs/Tasker/Configuration/HealthConfiguration.html +791 -0
- data/docs/Tasker/Configuration/TelemetryConfiguration.html +1308 -0
- data/docs/Tasker/Configuration/TelemetryConfigurationProxy.html +388 -0
- data/docs/Tasker/Configuration.html +1669 -0
- data/docs/Tasker/ConfigurationError.html +143 -0
- data/docs/Tasker/ConfiguredTask.html +514 -0
- data/docs/Tasker/Constants/EventDefinitions.html +590 -0
- data/docs/Tasker/Constants/LifecycleEvents.html +137 -0
- data/docs/Tasker/Constants/ObservabilityEvents/Step.html +152 -0
- data/docs/Tasker/Constants/ObservabilityEvents/Task.html +142 -0
- data/docs/Tasker/Constants/ObservabilityEvents.html +126 -0
- data/docs/Tasker/Constants/RegistryEvents.html +285 -0
- data/docs/Tasker/Constants/StepEvents.html +177 -0
- data/docs/Tasker/Constants/TaskEvents.html +167 -0
- data/docs/Tasker/Constants/TaskExecution/ExecutionStatus.html +207 -0
- data/docs/Tasker/Constants/TaskExecution/HealthStatus.html +191 -0
- data/docs/Tasker/Constants/TaskExecution/RecommendedAction.html +207 -0
- data/docs/Tasker/Constants/TaskExecution.html +126 -0
- data/docs/Tasker/Constants/TaskFinalization/ErrorMessages.html +132 -0
- data/docs/Tasker/Constants/TaskFinalization/PendingReasons.html +207 -0
- data/docs/Tasker/Constants/TaskFinalization/ReenqueueReasons.html +239 -0
- data/docs/Tasker/Constants/TaskFinalization.html +126 -0
- data/docs/Tasker/Constants/TaskStatuses.html +223 -0
- data/docs/Tasker/Constants/TestEvents.html +163 -0
- data/docs/Tasker/Constants/WorkflowEvents.html +222 -0
- data/docs/Tasker/Constants/WorkflowStepStatuses.html +223 -0
- data/docs/Tasker/Constants.html +561 -0
- data/docs/Tasker/DependentSystem.html +137 -0
- data/docs/Tasker/DependentSystemObjectMap.html +250 -0
- data/docs/Tasker/DetectorRegistry.html +598 -0
- data/docs/Tasker/Diagram/Edge.html +1191 -0
- data/docs/Tasker/Diagram/Flowchart.html +1539 -0
- data/docs/Tasker/Diagram/Node.html +1165 -0
- data/docs/Tasker/Diagram.html +117 -0
- data/docs/Tasker/Engine.html +215 -0
- data/docs/Tasker/Error.html +139 -0
- data/docs/Tasker/Events/Bus.html +1226 -0
- data/docs/Tasker/Events/Catalog/CatalogPrinter.html +258 -0
- data/docs/Tasker/Events/Catalog/CustomEventRegistrar.html +276 -0
- data/docs/Tasker/Events/Catalog/ExamplePayloadGenerator.html +294 -0
- data/docs/Tasker/Events/Catalog.html +1291 -0
- data/docs/Tasker/Events/CustomRegistry.html +943 -0
- data/docs/Tasker/Events/DefinitionLoader.html +575 -0
- data/docs/Tasker/Events/EventPayloadBuilder/ErrorInfoExtractor.html +286 -0
- data/docs/Tasker/Events/EventPayloadBuilder/StepPayloadBuilder.html +312 -0
- data/docs/Tasker/Events/EventPayloadBuilder.html +664 -0
- data/docs/Tasker/Events/Publisher.html +365 -0
- data/docs/Tasker/Events/Subscribers/BaseSubscriber/ErrorCategorizer/ErrorTypeClassifier.html +1128 -0
- data/docs/Tasker/Events/Subscribers/BaseSubscriber/ErrorCategorizer.html +270 -0
- data/docs/Tasker/Events/Subscribers/BaseSubscriber/MetricTagsExtractor.html +266 -0
- data/docs/Tasker/Events/Subscribers/BaseSubscriber.html +2556 -0
- data/docs/Tasker/Events/Subscribers/MetricsSubscriber.html +723 -0
- data/docs/Tasker/Events/Subscribers/TelemetrySubscriber.html +2251 -0
- data/docs/Tasker/Events/Subscribers.html +117 -0
- data/docs/Tasker/Events/SubscriptionLoader.html +493 -0
- data/docs/Tasker/Events.html +294 -0
- data/docs/Tasker/EventsGenerator.html +459 -0
- data/docs/Tasker/Functions/FunctionBasedAnalyticsMetrics/AnalyticsMetrics.html +135 -0
- data/docs/Tasker/Functions/FunctionBasedAnalyticsMetrics.html +412 -0
- data/docs/Tasker/Functions/FunctionBasedDependencyLevels.html +598 -0
- data/docs/Tasker/Functions/FunctionBasedSlowestSteps/SlowestStep.html +135 -0
- data/docs/Tasker/Functions/FunctionBasedSlowestSteps.html +453 -0
- data/docs/Tasker/Functions/FunctionBasedSlowestTasks/SlowestTask.html +135 -0
- data/docs/Tasker/Functions/FunctionBasedSlowestTasks.html +453 -0
- data/docs/Tasker/Functions/FunctionBasedStepReadinessStatus.html +1457 -0
- data/docs/Tasker/Functions/FunctionBasedSystemHealthCounts/HealthMetrics.html +135 -0
- data/docs/Tasker/Functions/FunctionBasedSystemHealthCounts.html +370 -0
- data/docs/Tasker/Functions/FunctionBasedTaskExecutionContext.html +1250 -0
- data/docs/Tasker/Functions/FunctionWrapper.html +479 -0
- data/docs/Tasker/Functions.html +117 -0
- data/docs/Tasker/Generators/AuthenticatorGenerator/UsageInstructionsFormatter.html +244 -0
- data/docs/Tasker/Generators/AuthenticatorGenerator.html +373 -0
- data/docs/Tasker/Generators/AuthorizationCoordinatorGenerator.html +430 -0
- data/docs/Tasker/Generators/SubscriberGenerator.html +377 -0
- data/docs/Tasker/Generators/TaskHandlerGenerator.html +263 -0
- data/docs/Tasker/Generators.html +117 -0
- data/docs/Tasker/GraphQLTypes/AnnotationType.html +132 -0
- data/docs/Tasker/GraphQLTypes/BaseArgument.html +124 -0
- data/docs/Tasker/GraphQLTypes/BaseConnection.html +124 -0
- data/docs/Tasker/GraphQLTypes/BaseEdge.html +130 -0
- data/docs/Tasker/GraphQLTypes/BaseEnum.html +124 -0
- data/docs/Tasker/GraphQLTypes/BaseField.html +124 -0
- data/docs/Tasker/GraphQLTypes/BaseInputObject.html +124 -0
- data/docs/Tasker/GraphQLTypes/BaseInterface.html +116 -0
- data/docs/Tasker/GraphQLTypes/BaseObject.html +128 -0
- data/docs/Tasker/GraphQLTypes/BaseScalar.html +124 -0
- data/docs/Tasker/GraphQLTypes/BaseUnion.html +124 -0
- data/docs/Tasker/GraphQLTypes/DependentSystemObjectMapType.html +132 -0
- data/docs/Tasker/GraphQLTypes/DependentSystemType.html +132 -0
- data/docs/Tasker/GraphQLTypes/MutationType.html +132 -0
- data/docs/Tasker/GraphQLTypes/NamedStepType.html +132 -0
- data/docs/Tasker/GraphQLTypes/NamedTaskType.html +132 -0
- data/docs/Tasker/GraphQLTypes/NamedTasksNamedStepType.html +132 -0
- data/docs/Tasker/GraphQLTypes/NodeType.html +118 -0
- data/docs/Tasker/GraphQLTypes/QueryType.html +139 -0
- data/docs/Tasker/GraphQLTypes/TaskAnnotationType.html +132 -0
- data/docs/Tasker/GraphQLTypes/TaskInterface.html +111 -0
- data/docs/Tasker/GraphQLTypes/TaskType.html +201 -0
- data/docs/Tasker/GraphQLTypes/WorkflowStepType.html +694 -0
- data/docs/Tasker/GraphQLTypes.html +130 -0
- data/docs/Tasker/GraphqlController.html +251 -0
- data/docs/Tasker/HandlerFactory.html +1528 -0
- data/docs/Tasker/HandlerSerializer.html +682 -0
- data/docs/Tasker/HandlersController.html +574 -0
- data/docs/Tasker/HashIdentityStrategy.html +278 -0
- data/docs/Tasker/Health/ReadinessChecker.html +712 -0
- data/docs/Tasker/Health/StatusChecker.html +653 -0
- data/docs/Tasker/Health.html +117 -0
- data/docs/Tasker/HealthController.html +523 -0
- data/docs/Tasker/IdentityStrategy.html +276 -0
- data/docs/Tasker/InvalidTaskHandlerConfig.html +135 -0
- data/docs/Tasker/LifecycleEvents/Events/Step.html +162 -0
- data/docs/Tasker/LifecycleEvents/Events/Task.html +162 -0
- data/docs/Tasker/LifecycleEvents/Events.html +204 -0
- data/docs/Tasker/LifecycleEvents/Publisher.html +132 -0
- data/docs/Tasker/LifecycleEvents.html +799 -0
- data/docs/Tasker/Logging/CorrelationIdGenerator.html +688 -0
- data/docs/Tasker/Logging.html +115 -0
- data/docs/Tasker/MetricsController.html +293 -0
- data/docs/Tasker/MetricsExportJob.html +414 -0
- data/docs/Tasker/Mutations/BaseMutation.html +128 -0
- data/docs/Tasker/Mutations/CancelStep.html +219 -0
- data/docs/Tasker/Mutations/CancelTask.html +221 -0
- data/docs/Tasker/Mutations/CreateTask.html +243 -0
- data/docs/Tasker/Mutations/UpdateStep.html +243 -0
- data/docs/Tasker/Mutations/UpdateTask.html +243 -0
- data/docs/Tasker/Mutations.html +117 -0
- data/docs/Tasker/NamedStep.html +216 -0
- data/docs/Tasker/NamedTask.html +910 -0
- data/docs/Tasker/NamedTasksNamedStep.html +435 -0
- data/docs/Tasker/Orchestration/BackoffCalculator.html +404 -0
- data/docs/Tasker/Orchestration/ConnectionBuilder/ConfigValidator.html +258 -0
- data/docs/Tasker/Orchestration/ConnectionBuilder.html +435 -0
- data/docs/Tasker/Orchestration/ConnectionPoolIntelligence.html +513 -0
- data/docs/Tasker/Orchestration/Coordinator.html +641 -0
- data/docs/Tasker/Orchestration/FutureStateAnalyzer.html +1045 -0
- data/docs/Tasker/Orchestration/Orchestrator.html +679 -0
- data/docs/Tasker/Orchestration/PluginIntegration.html +1127 -0
- data/docs/Tasker/Orchestration/ResponseProcessor.html +504 -0
- data/docs/Tasker/Orchestration/RetryHeaderParser.html +304 -0
- data/docs/Tasker/Orchestration/StepExecutor.html +995 -0
- data/docs/Tasker/Orchestration/StepSequenceFactory.html +644 -0
- data/docs/Tasker/Orchestration/TaskFinalizer/BlockageChecker.html +264 -0
- data/docs/Tasker/Orchestration/TaskFinalizer/ContextManager.html +254 -0
- data/docs/Tasker/Orchestration/TaskFinalizer/DelayCalculator.html +556 -0
- data/docs/Tasker/Orchestration/TaskFinalizer/FinalizationDecisionMaker.html +348 -0
- data/docs/Tasker/Orchestration/TaskFinalizer/FinalizationProcessor.html +286 -0
- data/docs/Tasker/Orchestration/TaskFinalizer/ReasonDeterminer.html +432 -0
- data/docs/Tasker/Orchestration/TaskFinalizer/ReenqueueManager.html +296 -0
- data/docs/Tasker/Orchestration/TaskFinalizer/UnclearStateHandler.html +314 -0
- data/docs/Tasker/Orchestration/TaskFinalizer.html +1212 -0
- data/docs/Tasker/Orchestration/TaskInitializer.html +766 -0
- data/docs/Tasker/Orchestration/TaskReenqueuer.html +506 -0
- data/docs/Tasker/Orchestration/ViableStepDiscovery.html +442 -0
- data/docs/Tasker/Orchestration/WorkflowCoordinator.html +510 -0
- data/docs/Tasker/Orchestration.html +130 -0
- data/docs/Tasker/PageSort/PageSortParamsBuilder.html +296 -0
- data/docs/Tasker/PageSort.html +247 -0
- data/docs/Tasker/PermanentError.html +518 -0
- data/docs/Tasker/ProceduralError.html +147 -0
- data/docs/Tasker/Queries/AllAnnotationTypes.html +217 -0
- data/docs/Tasker/Queries/AllTasks.html +221 -0
- data/docs/Tasker/Queries/BaseQuery.html +128 -0
- data/docs/Tasker/Queries/Helpers.html +187 -0
- data/docs/Tasker/Queries/OneStep.html +225 -0
- data/docs/Tasker/Queries/OneTask.html +217 -0
- data/docs/Tasker/Queries/TasksByAnnotation.html +231 -0
- data/docs/Tasker/Queries/TasksByStatus.html +233 -0
- data/docs/Tasker/Queries.html +119 -0
- data/docs/Tasker/Railtie.html +124 -0
- data/docs/Tasker/Registry/BaseRegistry.html +1690 -0
- data/docs/Tasker/Registry/EventPublisher.html +667 -0
- data/docs/Tasker/Registry/InterfaceValidator.html +569 -0
- data/docs/Tasker/Registry/RegistrationError.html +132 -0
- data/docs/Tasker/Registry/RegistryError.html +139 -0
- data/docs/Tasker/Registry/StatisticsCollector.html +841 -0
- data/docs/Tasker/Registry/SubscriberRegistry.html +1504 -0
- data/docs/Tasker/Registry/ValidationError.html +132 -0
- data/docs/Tasker/Registry.html +119 -0
- data/docs/Tasker/RetryableError.html +515 -0
- data/docs/Tasker/StateMachine/Compatibility.html +282 -0
- data/docs/Tasker/StateMachine/InvalidStateTransition.html +135 -0
- data/docs/Tasker/StateMachine/StepStateMachine/StandardizedPayloadBuilder.html +260 -0
- data/docs/Tasker/StateMachine/StepStateMachine.html +2215 -0
- data/docs/Tasker/StateMachine/TaskStateMachine.html +734 -0
- data/docs/Tasker/StateMachine.html +602 -0
- data/docs/Tasker/StepDagRelationship.html +657 -0
- data/docs/Tasker/StepHandler/Api/Config.html +1091 -0
- data/docs/Tasker/StepHandler/Api.html +884 -0
- data/docs/Tasker/StepHandler/AutomaticEventPublishing.html +321 -0
- data/docs/Tasker/StepHandler/Base.html +970 -0
- data/docs/Tasker/StepHandler.html +119 -0
- data/docs/Tasker/StepReadinessStatus.html +836 -0
- data/docs/Tasker/Task.html +2478 -0
- data/docs/Tasker/TaskAnnotation.html +137 -0
- data/docs/Tasker/TaskAnnotationSerializer.html +124 -0
- data/docs/Tasker/TaskBuilder/StepNameValidator.html +264 -0
- data/docs/Tasker/TaskBuilder/StepTemplateDefiner.html +264 -0
- data/docs/Tasker/TaskBuilder.html +764 -0
- data/docs/Tasker/TaskDiagram/StepToStepEdgeBuilder.html +260 -0
- data/docs/Tasker/TaskDiagram/TaskToRootStepEdgeBuilder.html +290 -0
- data/docs/Tasker/TaskDiagram.html +548 -0
- data/docs/Tasker/TaskDiagramsController.html +240 -0
- data/docs/Tasker/TaskExecutionContext.html +469 -0
- data/docs/Tasker/TaskHandler/ClassMethods/StepTemplateDefiner/ClassBasedEventRegistrar.html +238 -0
- data/docs/Tasker/TaskHandler/ClassMethods/StepTemplateDefiner/YamlEventRegistrar.html +254 -0
- data/docs/Tasker/TaskHandler/ClassMethods/StepTemplateDefiner.html +988 -0
- data/docs/Tasker/TaskHandler/ClassMethods.html +395 -0
- data/docs/Tasker/TaskHandler/InstanceMethods.html +1396 -0
- data/docs/Tasker/TaskHandler/StepGroup.html +1748 -0
- data/docs/Tasker/TaskHandler.html +271 -0
- data/docs/Tasker/TaskNamespace.html +312 -0
- data/docs/Tasker/TaskRunnerJob.html +406 -0
- data/docs/Tasker/TaskSerializer.html +474 -0
- data/docs/Tasker/TaskTransition.html +1517 -0
- data/docs/Tasker/TaskWorkflowSummary.html +988 -0
- data/docs/Tasker/TaskerRailsSchema/InvalidObjectTypeError.html +132 -0
- data/docs/Tasker/TaskerRailsSchema/TypeResolutionError.html +139 -0
- data/docs/Tasker/TaskerRailsSchema/UnknownInterfaceError.html +132 -0
- data/docs/Tasker/TaskerRailsSchema.html +384 -0
- data/docs/Tasker/TasksController.html +595 -0
- data/docs/Tasker/Telemetry/EventMapping.html +1307 -0
- data/docs/Tasker/Telemetry/EventRouter.html +2178 -0
- data/docs/Tasker/Telemetry/Events/ExportEvents.html +246 -0
- data/docs/Tasker/Telemetry/Events.html +115 -0
- data/docs/Tasker/Telemetry/ExportCoordinator/DistributedLockTimeoutError.html +135 -0
- data/docs/Tasker/Telemetry/ExportCoordinator.html +2137 -0
- data/docs/Tasker/Telemetry/IntelligentCacheManager.html +1083 -0
- data/docs/Tasker/Telemetry/LogBackend.html +1088 -0
- data/docs/Tasker/Telemetry/MetricTypes/Counter.html +1054 -0
- data/docs/Tasker/Telemetry/MetricTypes/Gauge.html +1270 -0
- data/docs/Tasker/Telemetry/MetricTypes/Histogram.html +1492 -0
- data/docs/Tasker/Telemetry/MetricTypes.html +153 -0
- data/docs/Tasker/Telemetry/MetricsBackend.html +2510 -0
- data/docs/Tasker/Telemetry/MetricsExportService.html +578 -0
- data/docs/Tasker/Telemetry/PluginRegistry.html +1774 -0
- data/docs/Tasker/Telemetry/Plugins/BaseExporter.html +1835 -0
- data/docs/Tasker/Telemetry/Plugins/CsvExporter.html +768 -0
- data/docs/Tasker/Telemetry/Plugins/JsonExporter.html +747 -0
- data/docs/Tasker/Telemetry/Plugins.html +117 -0
- data/docs/Tasker/Telemetry/PrometheusExporter.html +481 -0
- data/docs/Tasker/Telemetry/TraceBackend.html +891 -0
- data/docs/Tasker/Telemetry.html +130 -0
- data/docs/Tasker/Types/AuthConfig.html +886 -0
- data/docs/Tasker/Types/BackoffConfig.html +1063 -0
- data/docs/Tasker/Types/BaseConfig.html +227 -0
- data/docs/Tasker/Types/CacheConfig.html +1731 -0
- data/docs/Tasker/Types/DatabaseConfig.html +388 -0
- data/docs/Tasker/Types/DependencyGraph.html +526 -0
- data/docs/Tasker/Types/DependencyGraphConfig.html +753 -0
- data/docs/Tasker/Types/EngineConfig.html +1181 -0
- data/docs/Tasker/Types/ExecutionConfig.html +1963 -0
- data/docs/Tasker/Types/GraphEdge.html +517 -0
- data/docs/Tasker/Types/GraphMetadata.html +781 -0
- data/docs/Tasker/Types/GraphNode.html +694 -0
- data/docs/Tasker/Types/HealthConfig.html +784 -0
- data/docs/Tasker/Types/StepSequence.html +353 -0
- data/docs/Tasker/Types/StepTemplate.html +1193 -0
- data/docs/Tasker/Types/TaskRequest.html +1179 -0
- data/docs/Tasker/Types/TelemetryConfig.html +2746 -0
- data/docs/Tasker/Types.html +154 -0
- data/docs/Tasker/WorkflowStep/StepFinder.html +282 -0
- data/docs/Tasker/WorkflowStep.html +2724 -0
- data/docs/Tasker/WorkflowStepEdge.html +306 -0
- data/docs/Tasker/WorkflowStepSerializer.html +305 -0
- data/docs/Tasker/WorkflowStepTransition/TransitionDescriptionFormatter.html +282 -0
- data/docs/Tasker/WorkflowStepTransition.html +2201 -0
- data/docs/Tasker/WorkflowStepsController.html +462 -0
- data/docs/Tasker.html +468 -0
- data/docs/VISION.md +584 -0
- data/docs/WHY.md +21 -0
- data/docs/_index.html +2319 -0
- data/docs/class_list.html +54 -0
- data/docs/css/common.css +1 -0
- data/docs/css/full_list.css +58 -0
- data/docs/css/style.css +503 -0
- data/docs/events/migration_plan_outcomes.md +80 -0
- data/docs/file.README.html +537 -0
- data/docs/file_list.html +59 -0
- data/docs/frames.html +22 -0
- data/docs/index.html +537 -0
- data/docs/js/app.js +344 -0
- data/docs/js/full_list.js +242 -0
- data/docs/js/jquery.js +4 -0
- data/docs/method_list.html +8854 -0
- data/docs/top-level-namespace.html +110 -0
- data/lib/generators/tasker/authenticator_generator.rb +301 -0
- data/lib/generators/tasker/authorization_coordinator_generator.rb +139 -0
- data/lib/generators/tasker/events_generator.rb +91 -0
- data/lib/generators/tasker/subscriber_generator.rb +107 -0
- data/lib/generators/tasker/task_handler_generator.rb +138 -0
- data/lib/generators/tasker/templates/api_token_authenticator.rb.erb +113 -0
- data/lib/generators/tasker/templates/api_token_authenticator_spec.rb.erb +144 -0
- data/lib/generators/tasker/templates/authorization_coordinator.rb.erb +82 -0
- data/lib/generators/tasker/templates/authorization_coordinator_spec.rb.erb +136 -0
- data/lib/generators/tasker/templates/custom_authenticator.rb.erb +108 -0
- data/lib/generators/tasker/templates/custom_authenticator_spec.rb.erb +162 -0
- data/lib/generators/tasker/templates/custom_events.yml.erb +62 -0
- data/lib/generators/tasker/templates/custom_subscriber.rb.erb +72 -0
- data/lib/generators/tasker/templates/devise_authenticator.rb.erb +101 -0
- data/lib/generators/tasker/templates/devise_authenticator_spec.rb.erb +126 -0
- data/lib/generators/tasker/templates/initialize.rb.erb +202 -0
- data/lib/generators/tasker/templates/jwt_authenticator.rb.erb +144 -0
- data/lib/generators/tasker/templates/jwt_authenticator_spec.rb.erb +298 -0
- data/lib/generators/tasker/templates/metrics_subscriber.rb.erb +258 -0
- data/lib/generators/tasker/templates/metrics_subscriber_spec.rb.erb +308 -0
- data/lib/generators/tasker/templates/omniauth_authenticator.rb.erb +135 -0
- data/lib/generators/tasker/templates/omniauth_authenticator_spec.rb.erb +196 -0
- data/lib/generators/tasker/templates/opentelemetry_initializer.rb +52 -0
- data/lib/generators/tasker/templates/subscriber.rb.erb +64 -0
- data/lib/generators/tasker/templates/subscriber_spec.rb.erb +80 -0
- data/lib/generators/tasker/templates/task_config.yaml.erb +117 -0
- data/lib/generators/tasker/templates/task_handler.rb.erb +60 -0
- data/lib/generators/tasker/templates/task_handler_spec.rb.erb +165 -0
- data/lib/tasker/analysis/runtime_graph_analyzer.rb +1168 -0
- data/lib/tasker/analysis/template_graph_analyzer.rb +328 -0
- data/lib/tasker/authentication/coordinator.rb +78 -0
- data/lib/tasker/authentication/errors.rb +9 -0
- data/lib/tasker/authentication/interface.rb +36 -0
- data/lib/tasker/authentication/none_authenticator.rb +26 -0
- data/lib/tasker/authorization/base_coordinator.rb +112 -0
- data/lib/tasker/authorization/errors.rb +26 -0
- data/lib/tasker/authorization/resource_constants.rb +73 -0
- data/lib/tasker/authorization/resource_registry.rb +136 -0
- data/lib/tasker/authorization.rb +75 -0
- data/lib/tasker/cache_capabilities.rb +131 -0
- data/lib/tasker/cache_strategy.rb +469 -0
- data/lib/tasker/concerns/authenticatable.rb +41 -0
- data/lib/tasker/concerns/authorizable.rb +204 -0
- data/lib/tasker/concerns/controller_authorizable.rb +124 -0
- data/lib/tasker/concerns/event_publisher.rb +716 -0
- data/lib/tasker/concerns/idempotent_state_transitions.rb +128 -0
- data/lib/tasker/concerns/state_machine_base.rb +218 -0
- data/lib/tasker/concerns/structured_logging.rb +387 -0
- data/lib/tasker/configuration.rb +325 -0
- data/lib/tasker/constants/event_definitions.rb +147 -0
- data/lib/tasker/constants/registry_events.rb +54 -0
- data/lib/tasker/constants.rb +417 -0
- data/lib/tasker/engine.rb +90 -0
- data/lib/tasker/errors.rb +90 -0
- data/lib/tasker/events/catalog.rb +432 -0
- data/lib/tasker/events/custom_registry.rb +175 -0
- data/lib/tasker/events/definition_loader.rb +199 -0
- data/lib/tasker/events/event_payload_builder.rb +461 -0
- data/lib/tasker/events/publisher.rb +149 -0
- data/lib/tasker/events/subscribers/base_subscriber.rb +601 -0
- data/lib/tasker/events/subscribers/metrics_subscriber.rb +120 -0
- data/lib/tasker/events/subscribers/telemetry_subscriber.rb +462 -0
- data/lib/tasker/events/subscription_loader.rb +161 -0
- data/lib/tasker/events.rb +37 -0
- data/lib/tasker/functions/function_based_analytics_metrics.rb +103 -0
- data/lib/tasker/functions/function_based_dependency_levels.rb +54 -0
- data/lib/tasker/functions/function_based_slowest_steps.rb +84 -0
- data/lib/tasker/functions/function_based_slowest_tasks.rb +84 -0
- data/lib/tasker/functions/function_based_step_readiness_status.rb +183 -0
- data/lib/tasker/functions/function_based_system_health_counts.rb +94 -0
- data/lib/tasker/functions/function_based_task_execution_context.rb +148 -0
- data/lib/tasker/functions/function_wrapper.rb +42 -0
- data/lib/tasker/functions.rb +12 -0
- data/lib/tasker/handler_factory.rb +327 -0
- data/lib/tasker/health/readiness_checker.rb +186 -0
- data/lib/tasker/health/status_checker.rb +203 -0
- data/lib/tasker/identity_strategy.rb +38 -0
- data/lib/tasker/logging/correlation_id_generator.rb +120 -0
- data/lib/tasker/orchestration/backoff_calculator.rb +184 -0
- data/lib/tasker/orchestration/connection_builder.rb +122 -0
- data/lib/tasker/orchestration/connection_pool_intelligence.rb +177 -0
- data/lib/tasker/orchestration/coordinator.rb +119 -0
- data/lib/tasker/orchestration/future_state_analyzer.rb +137 -0
- data/lib/tasker/orchestration/plugin_integration.rb +124 -0
- data/lib/tasker/orchestration/response_processor.rb +168 -0
- data/lib/tasker/orchestration/retry_header_parser.rb +78 -0
- data/lib/tasker/orchestration/step_executor.rb +941 -0
- data/lib/tasker/orchestration/step_sequence_factory.rb +67 -0
- data/lib/tasker/orchestration/task_finalizer.rb +564 -0
- data/lib/tasker/orchestration/task_initializer.rb +140 -0
- data/lib/tasker/orchestration/task_reenqueuer.rb +71 -0
- data/lib/tasker/orchestration/viable_step_discovery.rb +65 -0
- data/lib/tasker/orchestration/workflow_coordinator.rb +294 -0
- data/lib/tasker/orchestration.rb +45 -0
- data/lib/tasker/railtie.rb +9 -0
- data/lib/tasker/registry/base_registry.rb +177 -0
- data/lib/tasker/registry/event_publisher.rb +91 -0
- data/lib/tasker/registry/interface_validator.rb +140 -0
- data/lib/tasker/registry/statistics_collector.rb +381 -0
- data/lib/tasker/registry/subscriber_registry.rb +285 -0
- data/lib/tasker/registry.rb +22 -0
- data/lib/tasker/state_machine/step_state_machine.rb +508 -0
- data/lib/tasker/state_machine/task_state_machine.rb +192 -0
- data/lib/tasker/state_machine.rb +83 -0
- data/lib/tasker/step_handler/api.rb +410 -0
- data/lib/tasker/step_handler/base.rb +206 -0
- data/lib/tasker/task_builder.rb +432 -0
- data/lib/tasker/task_handler/class_methods.rb +327 -0
- data/lib/tasker/task_handler/instance_methods.rb +293 -0
- data/lib/tasker/task_handler/step_group.rb +182 -0
- data/lib/tasker/task_handler.rb +43 -0
- data/lib/tasker/telemetry/event_mapping.rb +126 -0
- data/lib/tasker/telemetry/event_router.rb +318 -0
- data/lib/tasker/telemetry/events/export_events.rb +38 -0
- data/lib/tasker/telemetry/export_coordinator.rb +497 -0
- data/lib/tasker/telemetry/intelligent_cache_manager.rb +508 -0
- data/lib/tasker/telemetry/log_backend.rb +224 -0
- data/lib/tasker/telemetry/metric_types.rb +416 -0
- data/lib/tasker/telemetry/metrics_backend.rb +1227 -0
- data/lib/tasker/telemetry/metrics_export_service.rb +392 -0
- data/lib/tasker/telemetry/plugin_registry.rb +333 -0
- data/lib/tasker/telemetry/plugins/base_exporter.rb +246 -0
- data/lib/tasker/telemetry/plugins/csv_exporter.rb +198 -0
- data/lib/tasker/telemetry/plugins/json_exporter.rb +141 -0
- data/lib/tasker/telemetry/prometheus_exporter.rb +249 -0
- data/lib/tasker/telemetry/trace_backend.rb +186 -0
- data/lib/tasker/telemetry.rb +59 -0
- data/lib/tasker/types/auth_config.rb +81 -0
- data/lib/tasker/types/backoff_config.rb +142 -0
- data/lib/tasker/types/cache_config.rb +257 -0
- data/lib/tasker/types/database_config.rb +39 -0
- data/lib/tasker/types/dependency_graph.rb +225 -0
- data/lib/tasker/types/dependency_graph_config.rb +149 -0
- data/lib/tasker/types/engine_config.rb +131 -0
- data/lib/tasker/types/execution_config.rb +289 -0
- data/lib/tasker/types/health_config.rb +84 -0
- data/lib/tasker/types/step_sequence.rb +24 -0
- data/lib/tasker/types/step_template.rb +63 -0
- data/lib/tasker/types/task_request.rb +60 -0
- data/lib/tasker/types/telemetry_config.rb +273 -0
- data/lib/tasker/types.rb +64 -0
- data/lib/tasker/version.rb +8 -0
- data/lib/tasker.rb +82 -0
- data/lib/tasks/tasker_tasks.rake +383 -0
- metadata +954 -0
@@ -0,0 +1,404 @@
|
|
1
|
+
# Tasker Engine Versioning Restructure Plan
|
2
|
+
|
3
|
+
## Overview
|
4
|
+
|
5
|
+
This document outlines the comprehensive plan to restructure the versioning of the Tasker Engine project to better align with semantic versioning best practices and community expectations.
|
6
|
+
|
7
|
+
## Background
|
8
|
+
|
9
|
+
The Tasker Engine project has evolved through two distinct versioning phases:
|
10
|
+
1. **Legacy Phase**: Original development versions `v0.1.0` through `v2.7.0` (29 tags)
|
11
|
+
2. **Tasker-Engine Phase**: Gem publication versions `1.0.0` through `1.0.6` (7 versions)
|
12
|
+
|
13
|
+
## Problem Statement
|
14
|
+
|
15
|
+
The current `1.x.x` versioning suggests a mature, stable API, but the project is:
|
16
|
+
- Very new with limited production deployments
|
17
|
+
- Likely to undergo rapid evolution and breaking changes
|
18
|
+
- Missing community feedback and real-world usage patterns
|
19
|
+
- Better suited for `0.x.x` versioning to signal active development
|
20
|
+
|
21
|
+
## Solution Approach
|
22
|
+
|
23
|
+
Restructure all versions to include appropriate suffixes and reset to `0.1.0` for the next public release:
|
24
|
+
- **Legacy versions** (`v0.1.0` - `v2.7.0`): Add `-alpha` suffix
|
25
|
+
- **Current versions** (`1.0.0` - `1.0.6`): Add `-beta` suffix
|
26
|
+
- **Next release**: Start fresh at `0.1.0`
|
27
|
+
|
28
|
+
## Current State Analysis
|
29
|
+
|
30
|
+
### Git Tags (35 total)
|
31
|
+
```
|
32
|
+
Legacy (29 tags): v0.1.0, v0.1.1, v0.2.0, v0.2.1, v0.2.2, v0.2.3, v1.0.0, v1.0.1, v1.0.2, v1.0.3, v1.0.4, v1.0.5, v1.0.6, v1.2.0, v1.2.1, v1.3.0, v1.4.0, v1.5.0, v1.5.1, v1.6.0, v2.0.0, v2.1.0, v2.2.0, v2.2.1, v2.3.0, v2.4.0, v2.4.1, v2.5.0, v2.5.1, v2.6.0, v2.6.1, v2.6.2, v2.7.0
|
33
|
+
|
34
|
+
Tasker-Engine (6 tags): 1.0.0, 1.0.2, v1.0.0, v1.0.1, v1.0.2, v1.0.3, v1.0.4, v1.0.5, v1.0.6
|
35
|
+
```
|
36
|
+
|
37
|
+
### Published RubyGems
|
38
|
+
```
|
39
|
+
tasker-engine: 1.0.0, 1.0.1, 1.0.2, 1.0.3, 1.0.4, 1.0.5, 1.0.6
|
40
|
+
```
|
41
|
+
|
42
|
+
### Current Version
|
43
|
+
- **Code**: `0.1.0` (lib/tasker/version.rb)
|
44
|
+
- **Documentation**: `~> 0.1.0` (README.md)
|
45
|
+
|
46
|
+
## Implementation Plan
|
47
|
+
|
48
|
+
### Phase 1: Backup and Preparation
|
49
|
+
|
50
|
+
#### 1.1 Create Backup Branch
|
51
|
+
```bash
|
52
|
+
git checkout -b backup-pre-version-restructure
|
53
|
+
git push origin backup-pre-version-restructure
|
54
|
+
```
|
55
|
+
|
56
|
+
#### 1.2 Document Current State
|
57
|
+
```bash
|
58
|
+
# Save current published versions
|
59
|
+
gem list tasker-engine --remote --all > current_published_versions.txt
|
60
|
+
|
61
|
+
# Save current git tags
|
62
|
+
git tag --list | sort -V > current_git_tags.txt
|
63
|
+
|
64
|
+
# Save current version references
|
65
|
+
grep -r "1\.0\." --include="*.rb" --include="*.md" --include="*.yml" --include="*.yaml" --include="*.erb" . > current_version_references.txt
|
66
|
+
```
|
67
|
+
|
68
|
+
#### 1.3 Verify Branch State
|
69
|
+
```bash
|
70
|
+
git checkout restart-versioning
|
71
|
+
git status
|
72
|
+
```
|
73
|
+
|
74
|
+
### Phase 2: Git Tag Restructuring
|
75
|
+
|
76
|
+
#### 2.1 Fetch and List All Tags
|
77
|
+
```bash
|
78
|
+
git fetch --tags
|
79
|
+
git tag --list | sort -V
|
80
|
+
```
|
81
|
+
|
82
|
+
#### 2.2 Map Tags to Commit Hashes
|
83
|
+
```bash
|
84
|
+
# Create mapping file for reference
|
85
|
+
git tag --list | while read tag; do
|
86
|
+
echo "$tag: $(git rev-list -n 1 $tag)" >> tag_commit_mapping.txt
|
87
|
+
done
|
88
|
+
```
|
89
|
+
|
90
|
+
#### 2.3 Delete Existing Tags
|
91
|
+
```bash
|
92
|
+
# Delete local tags
|
93
|
+
git tag -d $(git tag -l)
|
94
|
+
|
95
|
+
# Delete remote tags (BE CAREFUL - this affects all users)
|
96
|
+
git tag -l | xargs -n 1 git push --delete origin
|
97
|
+
```
|
98
|
+
|
99
|
+
#### 2.4 Recreate Legacy Tags with -alpha Suffix
|
100
|
+
```bash
|
101
|
+
# Legacy tags (v0.1.0 through v2.7.0) - ADD -alpha suffix
|
102
|
+
git tag v0.1.0-alpha $(git rev-list -n 1 v0.1.0)
|
103
|
+
git tag v0.1.1-alpha $(git rev-list -n 1 v0.1.1)
|
104
|
+
git tag v0.2.0-alpha $(git rev-list -n 1 v0.2.0)
|
105
|
+
git tag v0.2.1-alpha $(git rev-list -n 1 v0.2.1)
|
106
|
+
git tag v0.2.2-alpha $(git rev-list -n 1 v0.2.2)
|
107
|
+
git tag v0.2.3-alpha $(git rev-list -n 1 v0.2.3)
|
108
|
+
git tag v1.0.0-alpha $(git rev-list -n 1 v1.0.0)
|
109
|
+
git tag v1.0.1-alpha $(git rev-list -n 1 v1.0.1)
|
110
|
+
git tag v1.0.2-alpha $(git rev-list -n 1 v1.0.2)
|
111
|
+
git tag v1.0.3-alpha $(git rev-list -n 1 v1.0.3)
|
112
|
+
git tag v1.0.4-alpha $(git rev-list -n 1 v1.0.4)
|
113
|
+
git tag v1.0.5-alpha $(git rev-list -n 1 v1.0.5)
|
114
|
+
git tag v1.0.6-alpha $(git rev-list -n 1 v1.0.6)
|
115
|
+
git tag v1.2.0-alpha $(git rev-list -n 1 v1.2.0)
|
116
|
+
git tag v1.2.1-alpha $(git rev-list -n 1 v1.2.1)
|
117
|
+
git tag v1.3.0-alpha $(git rev-list -n 1 v1.3.0)
|
118
|
+
git tag v1.4.0-alpha $(git rev-list -n 1 v1.4.0)
|
119
|
+
git tag v1.5.0-alpha $(git rev-list -n 1 v1.5.0)
|
120
|
+
git tag v1.5.1-alpha $(git rev-list -n 1 v1.5.1)
|
121
|
+
git tag v1.6.0-alpha $(git rev-list -n 1 v1.6.0)
|
122
|
+
git tag v2.0.0-alpha $(git rev-list -n 1 v2.0.0)
|
123
|
+
git tag v2.1.0-alpha $(git rev-list -n 1 v2.1.0)
|
124
|
+
git tag v2.2.0-alpha $(git rev-list -n 1 v2.2.0)
|
125
|
+
git tag v2.2.1-alpha $(git rev-list -n 1 v2.2.1)
|
126
|
+
git tag v2.3.0-alpha $(git rev-list -n 1 v2.3.0)
|
127
|
+
git tag v2.4.0-alpha $(git rev-list -n 1 v2.4.0)
|
128
|
+
git tag v2.4.1-alpha $(git rev-list -n 1 v2.4.1)
|
129
|
+
git tag v2.5.0-alpha $(git rev-list -n 1 v2.5.0)
|
130
|
+
git tag v2.5.1-alpha $(git rev-list -n 1 v2.5.1)
|
131
|
+
git tag v2.6.0-alpha $(git rev-list -n 1 v2.6.0)
|
132
|
+
git tag v2.6.1-alpha $(git rev-list -n 1 v2.6.1)
|
133
|
+
git tag v2.6.2-alpha $(git rev-list -n 1 v2.6.2)
|
134
|
+
git tag v2.7.0-alpha $(git rev-list -n 1 v2.7.0)
|
135
|
+
```
|
136
|
+
|
137
|
+
#### 2.5 Recreate Tasker-Engine Tags with -beta Suffix
|
138
|
+
```bash
|
139
|
+
# Tasker-engine tags (1.0.0 through 1.0.6) - ADD -beta suffix
|
140
|
+
git tag 1.0.0-beta $(git rev-list -n 1 1.0.0)
|
141
|
+
git tag 1.0.2-beta $(git rev-list -n 1 1.0.2)
|
142
|
+
git tag v1.0.0-beta $(git rev-list -n 1 v1.0.0)
|
143
|
+
git tag v1.0.1-beta $(git rev-list -n 1 v1.0.1)
|
144
|
+
git tag v1.0.2-beta $(git rev-list -n 1 v1.0.2)
|
145
|
+
git tag v1.0.3-beta $(git rev-list -n 1 v1.0.3)
|
146
|
+
git tag v1.0.4-beta $(git rev-list -n 1 v1.0.4)
|
147
|
+
git tag v1.0.5-beta $(git rev-list -n 1 v1.0.5)
|
148
|
+
git tag v1.0.6-beta $(git rev-list -n 1 v1.0.6)
|
149
|
+
```
|
150
|
+
|
151
|
+
#### 2.6 Push New Tags
|
152
|
+
```bash
|
153
|
+
git push origin --tags
|
154
|
+
```
|
155
|
+
|
156
|
+
### Phase 3: RubyGems Version Management
|
157
|
+
|
158
|
+
#### 3.1 Yank Existing Published Versions
|
159
|
+
```bash
|
160
|
+
# Yank all existing tasker-engine versions
|
161
|
+
gem yank tasker-engine -v 1.0.0
|
162
|
+
gem yank tasker-engine -v 1.0.1
|
163
|
+
gem yank tasker-engine -v 1.0.2
|
164
|
+
gem yank tasker-engine -v 1.0.3
|
165
|
+
gem yank tasker-engine -v 1.0.4
|
166
|
+
gem yank tasker-engine -v 1.0.5
|
167
|
+
gem yank tasker-engine -v 1.0.6
|
168
|
+
```
|
169
|
+
|
170
|
+
#### 3.2 Republish with Beta Suffix
|
171
|
+
```bash
|
172
|
+
# For each version, checkout the tag, update version, build, and publish
|
173
|
+
for version in 1.0.0 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6; do
|
174
|
+
git checkout v${version}-beta
|
175
|
+
|
176
|
+
# Update version file
|
177
|
+
sed -i '' "s/VERSION = '${version}'/VERSION = '${version}-beta'/" lib/tasker/version.rb
|
178
|
+
sed -i '' "s/Version = '${version}'/Version = '${version}-beta'/" lib/tasker/version.rb
|
179
|
+
|
180
|
+
# Build and publish
|
181
|
+
gem build tasker-engine.gemspec
|
182
|
+
gem push tasker-engine-${version}-beta.gem
|
183
|
+
|
184
|
+
# Clean up
|
185
|
+
rm tasker-engine-${version}-beta.gem
|
186
|
+
done
|
187
|
+
|
188
|
+
# Return to working branch
|
189
|
+
git checkout restart-versioning
|
190
|
+
```
|
191
|
+
|
192
|
+
#### 3.3 Verify Yanked Versions
|
193
|
+
```bash
|
194
|
+
gem list tasker-engine --remote --all
|
195
|
+
```
|
196
|
+
|
197
|
+
### Phase 4: GitHub Releases Update
|
198
|
+
|
199
|
+
#### 4.1 List Current Releases
|
200
|
+
```bash
|
201
|
+
gh release list
|
202
|
+
```
|
203
|
+
|
204
|
+
#### 4.2 Update Release Tags
|
205
|
+
```bash
|
206
|
+
# Delete existing releases and recreate with new tags
|
207
|
+
# This will need to be done manually through GitHub UI or with gh CLI
|
208
|
+
# for each release that exists
|
209
|
+
```
|
210
|
+
|
211
|
+
### Phase 5: Codebase Updates for 0.1.0
|
212
|
+
|
213
|
+
#### 5.1 Update Version File
|
214
|
+
```ruby
|
215
|
+
# lib/tasker/version.rb
|
216
|
+
module Tasker
|
217
|
+
VERSION = '0.1.0'
|
218
|
+
Version = '0.1.0'
|
219
|
+
end
|
220
|
+
```
|
221
|
+
|
222
|
+
#### 5.2 Update Documentation Files
|
223
|
+
```bash
|
224
|
+
# Files to update:
|
225
|
+
# - README.md
|
226
|
+
# - docs/APPLICATION_GENERATOR.md
|
227
|
+
# - docs/TROUBLESHOOTING.md
|
228
|
+
# - spec/blog/README.md
|
229
|
+
# - lib/generators/tasker/templates/opentelemetry_initializer.rb
|
230
|
+
# - scripts/templates/configuration/tasker_configuration.rb.erb
|
231
|
+
# - scripts/templates/task_definitions/*.yaml.erb
|
232
|
+
# - scripts/create_tasker_app.rb
|
233
|
+
```
|
234
|
+
|
235
|
+
#### 5.3 Search and Replace Version References
|
236
|
+
```bash
|
237
|
+
# Find all version references
|
238
|
+
grep -r "1\.0\." --include="*.rb" --include="*.md" --include="*.yml" --include="*.yaml" --include="*.erb" .
|
239
|
+
|
240
|
+
# Replace with 0.1.0 where appropriate
|
241
|
+
find . -name "*.rb" -o -name "*.md" -o -name "*.yml" -o -name "*.yaml" -o -name "*.erb" | \
|
242
|
+
xargs sed -i '' 's/1\.0\.6/0.1.0/g'
|
243
|
+
```
|
244
|
+
|
245
|
+
#### 5.4 Update Application Generator Templates
|
246
|
+
```bash
|
247
|
+
# Update all template files in scripts/templates/
|
248
|
+
find scripts/templates -name "*.erb" | xargs sed -i '' 's/1\.0\.6/0.1.0/g'
|
249
|
+
```
|
250
|
+
|
251
|
+
### Phase 6: New Release Preparation
|
252
|
+
|
253
|
+
#### 6.1 Update Changelog
|
254
|
+
```markdown
|
255
|
+
# Add to CHANGELOG.md
|
256
|
+
## [0.1.0] - 2024-01-XX
|
257
|
+
|
258
|
+
### Changed
|
259
|
+
- **BREAKING**: Restructured versioning approach
|
260
|
+
- All previous 1.x.x versions are now suffixed with `-beta`
|
261
|
+
- Starting fresh with 0.1.0 to better reflect project maturity
|
262
|
+
- See REVERSIONING.md for migration details
|
263
|
+
|
264
|
+
### Migration Notes
|
265
|
+
- Previous versions 1.0.0-1.0.6 are now 1.0.0-beta through 1.0.6-beta
|
266
|
+
- Update your Gemfile to use `gem 'tasker-engine', '~> 0.1.0'`
|
267
|
+
```
|
268
|
+
|
269
|
+
#### 6.2 Test Installation
|
270
|
+
```bash
|
271
|
+
# Test gem build
|
272
|
+
gem build tasker-engine.gemspec
|
273
|
+
|
274
|
+
# Test installation
|
275
|
+
gem install tasker-engine-0.1.0.gem
|
276
|
+
|
277
|
+
# Test application generation
|
278
|
+
rails new test_app
|
279
|
+
cd test_app
|
280
|
+
echo "gem 'tasker-engine', '~> 0.1.0'" >> Gemfile
|
281
|
+
bundle install
|
282
|
+
```
|
283
|
+
|
284
|
+
#### 6.3 Run Full Test Suite
|
285
|
+
```bash
|
286
|
+
bundle exec rspec
|
287
|
+
bundle exec rubocop
|
288
|
+
```
|
289
|
+
|
290
|
+
### Phase 7: Communication and Documentation
|
291
|
+
|
292
|
+
#### 7.1 Update GitBook Documentation
|
293
|
+
- Update all version references to 0.1.0
|
294
|
+
- Add migration guide for existing users
|
295
|
+
- Update installation instructions
|
296
|
+
|
297
|
+
#### 7.2 Create Migration Guide
|
298
|
+
```markdown
|
299
|
+
# Migration Guide: 1.x.x to 0.1.0
|
300
|
+
|
301
|
+
## Overview
|
302
|
+
The Tasker Engine project has restructured its versioning...
|
303
|
+
|
304
|
+
## For Existing Users
|
305
|
+
1. Update your Gemfile: `gem 'tasker-engine', '~> 0.1.0'`
|
306
|
+
2. Run `bundle update tasker-engine`
|
307
|
+
3. No code changes required - API remains stable
|
308
|
+
|
309
|
+
## Version History
|
310
|
+
- 1.0.0-1.0.6 → 1.0.0-beta through 1.0.6-beta (yanked from RubyGems)
|
311
|
+
- New stable releases start at 0.1.0
|
312
|
+
```
|
313
|
+
|
314
|
+
#### 7.3 Prepare Release Announcement
|
315
|
+
```markdown
|
316
|
+
# Tasker Engine 0.1.0: A Fresh Start
|
317
|
+
|
318
|
+
We're excited to announce Tasker Engine 0.1.0, marking a fresh start for our versioning approach...
|
319
|
+
```
|
320
|
+
|
321
|
+
## Risk Assessment
|
322
|
+
|
323
|
+
### High Risk Areas
|
324
|
+
1. **Yanking published gems** - Could break existing installations
|
325
|
+
2. **Deleting git tags** - Could break CI/CD or external references
|
326
|
+
3. **GitHub releases** - May affect external documentation
|
327
|
+
|
328
|
+
### Mitigation Strategies
|
329
|
+
1. **Backup branches** created before any destructive operations
|
330
|
+
2. **Gradual rollout** with clear communication
|
331
|
+
3. **Migration guide** for existing users
|
332
|
+
4. **Rollback plan** documented below
|
333
|
+
|
334
|
+
## Rollback Plan
|
335
|
+
|
336
|
+
If issues arise, we can rollback using:
|
337
|
+
|
338
|
+
1. **Restore git tags** from backup branch
|
339
|
+
2. **Re-publish yanked gems** from backup
|
340
|
+
3. **Revert version changes** using git reset
|
341
|
+
4. **Restore GitHub releases** from backup
|
342
|
+
|
343
|
+
## Success Criteria
|
344
|
+
|
345
|
+
- [x] All legacy tags have `-alpha` suffix
|
346
|
+
- [x] All tasker-engine 1.x tags have `-beta` suffix
|
347
|
+
- [x] RubyGems shows yanked versions and new beta versions (PARTIAL - 1.0.0-1.0.4 yanked, 1.0.5-1.0.6 pending)
|
348
|
+
- [ ] Current version is 0.1.0 in all files
|
349
|
+
- [ ] Documentation reflects new versioning approach
|
350
|
+
- [ ] No broken references in codebase
|
351
|
+
- [ ] Clean migration path for existing users
|
352
|
+
- [ ] Full test suite passes
|
353
|
+
- [ ] Application generator works with 0.1.0
|
354
|
+
|
355
|
+
## Timeline
|
356
|
+
|
357
|
+
- **Phase 1 (Backup)**: 1 hour
|
358
|
+
- **Phase 2 (Git Tags)**: 2-3 hours
|
359
|
+
- **Phase 3 (RubyGems)**: 3-4 hours
|
360
|
+
- **Phase 4 (GitHub Releases)**: 1-2 hours
|
361
|
+
- **Phase 5 (Codebase Updates)**: 2-3 hours
|
362
|
+
- **Phase 6 (New Release)**: 1-2 hours
|
363
|
+
- **Phase 7 (Documentation)**: 2-3 hours
|
364
|
+
|
365
|
+
**Total Estimated Time**: 12-18 hours
|
366
|
+
|
367
|
+
## Notes
|
368
|
+
|
369
|
+
- This plan preserves all history while providing a clean path forward
|
370
|
+
- The `-alpha` and `-beta` suffixes clearly indicate the experimental nature of previous releases
|
371
|
+
- Starting at 0.1.0 signals active development and invites community feedback
|
372
|
+
- All operations are reversible if issues arise
|
373
|
+
|
374
|
+
## Execution Log
|
375
|
+
|
376
|
+
Use this section to track progress during implementation:
|
377
|
+
|
378
|
+
- [x] Phase 1 completed - Backup branch created, current state documented
|
379
|
+
- [x] Phase 2 completed - All tags deleted and recreated with suffixes (42 total tags)
|
380
|
+
- [x] Phase 3 completed - All versions 1.0.0-1.0.6 successfully yanked from RubyGems
|
381
|
+
- [x] Phase 4 completed - GitHub releases updated for 1.0.0-beta and 1.0.2-beta
|
382
|
+
- [x] Phase 5 completed - Codebase updated to version 0.1.0
|
383
|
+
- [ ] Phase 6 completed
|
384
|
+
- [ ] Phase 7 completed
|
385
|
+
|
386
|
+
## Current Status
|
387
|
+
|
388
|
+
**Phases 1-5 Status: COMPLETE**
|
389
|
+
|
390
|
+
✅ **Completed:**
|
391
|
+
- Backup branch created (`backup-pre-version-restructure`)
|
392
|
+
- All 35 original tags deleted and recreated with suffixes
|
393
|
+
- 42 total tags now exist (35 original + 7 additional with proper suffixes)
|
394
|
+
- All new tags pushed to remote repository
|
395
|
+
- Yanked all gem versions 1.0.0-1.0.6 from RubyGems
|
396
|
+
- Deleted old GitHub releases and created new beta releases
|
397
|
+
- Updated all codebase references from 1.0.x to 0.1.0 (version files, documentation, templates, tests, memory bank)
|
398
|
+
|
399
|
+
🎯 **Ready for Phase 6:**
|
400
|
+
- Build and test new 0.1.0 gem locally
|
401
|
+
- Prepare release notes and documentation
|
402
|
+
- Publish new 0.1.0 version to RubyGems
|
403
|
+
|
404
|
+
**Ready for Phase 5:** Codebase updates for 0.1.0 can proceed on the `restart-versioning` branch.
|
data/docs/ROADMAP.md
ADDED
@@ -0,0 +1,221 @@
|
|
1
|
+
# Tasker Roadmap - Production-Ready Workflow Orchestration
|
2
|
+
|
3
|
+
## 🎉 **Current State: Production-Ready Maturity**
|
4
|
+
|
5
|
+
**Tasker v2.4.0** represents a significant milestone - a robust, enterprise-grade workflow orchestration engine with comprehensive features, excellent developer experience, and production-ready observability.
|
6
|
+
|
7
|
+
### ✅ **Core Competencies - COMPLETED**
|
8
|
+
- **Workflow Orchestration**: Complex dependency graphs, parallel execution, state management
|
9
|
+
- **Task & Step Management**: Comprehensive lifecycle management with retry strategies
|
10
|
+
- **Database Foundation**: Multi-database support, optimized SQL functions, migrations
|
11
|
+
- **Authentication & Authorization**: Provider-agnostic with JWT example, role-based permissions
|
12
|
+
- **REST API**: Complete handler discovery, task management, OpenAPI documentation
|
13
|
+
- **Configuration System**: Type-safe dry-struct validation, comprehensive parameter coverage
|
14
|
+
- **Health Monitoring**: Kubernetes-compatible endpoints, detailed system status
|
15
|
+
- **Event System**: 50+ lifecycle events with pub/sub architecture
|
16
|
+
- **Registry Systems**: Thread-safe HandlerFactory, PluginRegistry, SubscriberRegistry
|
17
|
+
- **Telemetry Foundation**: OpenTelemetry integration, plugin architecture, metrics backend
|
18
|
+
- **Developer Experience**: Generators, comprehensive documentation, 1,479 passing tests
|
19
|
+
|
20
|
+
### ✅ **Enterprise Features - COMPLETED**
|
21
|
+
- **Thread Safety**: Concurrent operations with `Concurrent::Hash` storage
|
22
|
+
- **Structured Logging**: Correlation IDs, JSON formatting, comprehensive context
|
23
|
+
- **Interface Validation**: Strict contract enforcement across all components
|
24
|
+
- **Namespace Organization**: Multi-tenant handler organization with versioning
|
25
|
+
- **Error Handling**: Fail-fast philosophy with detailed error reporting
|
26
|
+
- **Performance**: Optimized SQL functions, minimal overhead, production-tested
|
27
|
+
- **Observability**: Event-driven architecture with comprehensive instrumentation
|
28
|
+
|
29
|
+
---
|
30
|
+
|
31
|
+
## 🎯 **Near-Term Roadmap (v2.4.1 - v2.5.0)**
|
32
|
+
|
33
|
+
### ✅ **v2.4.1 - API Documentation Complete**
|
34
|
+
*Status: COMPLETED ✅*
|
35
|
+
|
36
|
+
**Objective**: Complete API documentation ecosystem - **ACHIEVED**
|
37
|
+
- ✅ **RSwag Integration**: Successfully converted health & metrics controller specs to RSwag format
|
38
|
+
- ✅ **OpenAPI Completeness**: All endpoints documented with comprehensive schemas and examples
|
39
|
+
- ✅ **Interactive Swagger UI**: Professional API console accessible at `/tasker/api-docs`
|
40
|
+
- ✅ **Rails Engine Integration**: Solved RSwag mounting challenge with proper dummy app configuration
|
41
|
+
|
42
|
+
**Key Achievements**:
|
43
|
+
- **Complete Endpoint Coverage**: Health, metrics, handlers, tasks, GraphQL all documented
|
44
|
+
- **Interactive Testing**: Try-it-out functionality for all endpoints via Swagger UI
|
45
|
+
- **Professional Presentation**: Enterprise-grade API documentation matching industry standards
|
46
|
+
- **Authentication Documentation**: Comprehensive auth scenarios and examples
|
47
|
+
- **Developer Experience**: Streamlined integration with clear schemas and response examples
|
48
|
+
|
49
|
+
### **v2.5.0 - Integration Validation & Examples**
|
50
|
+
*Timeline: 3-4 weeks*
|
51
|
+
|
52
|
+
**Objective**: Prove production readiness through real-world integration
|
53
|
+
|
54
|
+
#### **Integration Testing Scripts**
|
55
|
+
Create Rails runner scripts for validating external system integration:
|
56
|
+
|
57
|
+
**Jaeger Integration Scripts** (using [Jaeger APIs](https://www.jaegertracing.io/docs/2.7/architecture/apis/)):
|
58
|
+
```ruby
|
59
|
+
# scripts/validate_jaeger_integration.rb
|
60
|
+
# - Query traces via Jaeger HTTP API
|
61
|
+
# - Validate span hierarchy and timing
|
62
|
+
# - Test trace correlation across workflow steps
|
63
|
+
# - Generate integration health reports
|
64
|
+
```
|
65
|
+
|
66
|
+
**Prometheus Integration Scripts** (using [Prometheus APIs](https://prometheus.io/docs/prometheus/latest/querying/api/)):
|
67
|
+
```ruby
|
68
|
+
# scripts/validate_prometheus_integration.rb
|
69
|
+
# - Query metrics via Prometheus HTTP API
|
70
|
+
# - Validate metric collection and labeling
|
71
|
+
# - Test alerting rule compatibility
|
72
|
+
# - Generate metrics health dashboards
|
73
|
+
```
|
74
|
+
|
75
|
+
#### **Demo Application & Guided Experience**
|
76
|
+
**Comprehensive Demo Setup** using [DummyJSON](https://dummyjson.com/docs):
|
77
|
+
```ruby
|
78
|
+
# scripts/setup_demo_application.rb
|
79
|
+
# Creates a functioning Rails app demonstrating:
|
80
|
+
# - Complex workflow patterns (user registration, order processing, inventory management)
|
81
|
+
# - External API integration with DummyJSON
|
82
|
+
# - Error handling and retry scenarios
|
83
|
+
# - Multi-step business processes
|
84
|
+
# - Real-time monitoring and observability
|
85
|
+
```
|
86
|
+
|
87
|
+
**Enhanced Quick Start Guide**:
|
88
|
+
- Step-by-step walkthrough of demo app creation
|
89
|
+
- Detailed explanation of each workflow pattern
|
90
|
+
- Integration points and configuration options
|
91
|
+
- Troubleshooting and best practices
|
92
|
+
|
93
|
+
---
|
94
|
+
|
95
|
+
## 🚀 **Medium-Term Vision (v3.0.0+)**
|
96
|
+
|
97
|
+
### **Content & Community Building**
|
98
|
+
*Timeline: 6-12 months*
|
99
|
+
|
100
|
+
**Educational Content Strategy**:
|
101
|
+
- **Blog Post Series**: "Building Production Workflows with Tasker"
|
102
|
+
- Core concepts and value proposition
|
103
|
+
- Real-world use case walkthroughs
|
104
|
+
- Advanced patterns and configurations
|
105
|
+
- Performance optimization techniques
|
106
|
+
- **Video Content**: Short-form tutorials and deep-dives
|
107
|
+
- "Tasker in 5 Minutes" - Core value demonstration
|
108
|
+
- "Complex Workflow Patterns" - Advanced use cases
|
109
|
+
- "Production Deployment" - Operations and monitoring
|
110
|
+
- **Community Engagement**: Conference talks, open-source showcases
|
111
|
+
|
112
|
+
### **Developer Experience Enhancement**
|
113
|
+
*Timeline: 3-6 months*
|
114
|
+
|
115
|
+
**Advanced Tooling**:
|
116
|
+
- **Workflow Designer**: Visual workflow creation and editing
|
117
|
+
- **Performance Profiler**: Built-in bottleneck identification
|
118
|
+
- **Testing Framework**: Workflow-specific testing utilities
|
119
|
+
- **Deployment Tools**: Docker images, Helm charts, Terraform modules
|
120
|
+
|
121
|
+
---
|
122
|
+
|
123
|
+
## 🌟 **Long-Term Vision: Polyglot Ecosystem**
|
124
|
+
|
125
|
+
### **Rust Core Extraction**
|
126
|
+
*Timeline: 12-24 months*
|
127
|
+
|
128
|
+
**Strategic Vision**: Extract core workflow orchestration logic into a high-performance Rust library, enabling polyglot ecosystem adoption.
|
129
|
+
|
130
|
+
#### **Phase 1: Core Logic Extraction**
|
131
|
+
- **Workflow Engine**: State machine logic, dependency resolution
|
132
|
+
- **Query Optimization**: SQL generation and execution planning
|
133
|
+
- **Orchestration Logic**: Task scheduling, retry mechanisms
|
134
|
+
- **Event System**: High-performance pub/sub with minimal allocations
|
135
|
+
|
136
|
+
#### **Phase 2: Language Bindings**
|
137
|
+
**Ruby Integration** via [Magnus](https://github.com/matsadler/magnus):
|
138
|
+
```ruby
|
139
|
+
# Tasker::Core (Rust-powered)
|
140
|
+
# - Zero-copy data structures where possible
|
141
|
+
# - Native Ruby ergonomics maintained
|
142
|
+
# - Backward compatibility guaranteed
|
143
|
+
```
|
144
|
+
|
145
|
+
**Python Integration** via [PyO3](https://github.com/PyO3/pyo3):
|
146
|
+
```python
|
147
|
+
# tasker_py - Python workflow orchestration
|
148
|
+
# - Django/Flask integration patterns
|
149
|
+
# - Async/await compatibility
|
150
|
+
# - Pandas/NumPy data processing workflows
|
151
|
+
```
|
152
|
+
|
153
|
+
**TypeScript/JavaScript** via [Deno FFI](https://docs.deno.com/runtime/fundamentals/ffi/) or WASM:
|
154
|
+
```typescript
|
155
|
+
// @tasker/core - Node.js/Deno workflow engine
|
156
|
+
// - Express/Fastify middleware integration
|
157
|
+
// - Promise-based async patterns
|
158
|
+
// - TypeScript-first API design
|
159
|
+
```
|
160
|
+
|
161
|
+
#### **Phase 3: Distributed Architecture**
|
162
|
+
**Cross-Language Workflow Coordination**:
|
163
|
+
- **Shared State Management**: Distributed workflow state across language boundaries
|
164
|
+
- **Event Coordination**: Cross-system event propagation and handling
|
165
|
+
- **Resource Sharing**: Efficient data passing between polyglot components
|
166
|
+
- **Unified Monitoring**: Single observability plane across all language implementations
|
167
|
+
|
168
|
+
### **Ecosystem Benefits**
|
169
|
+
- **Performance**: Memory-safe, zero-cost abstractions from Rust core
|
170
|
+
- **Reliability**: Proven workflow logic across all language implementations
|
171
|
+
- **Flexibility**: Choose the right language for each component while maintaining workflow consistency
|
172
|
+
- **Scalability**: High-performance core enables massive workflow processing
|
173
|
+
- **Innovation**: Enable new architectural patterns in polyglot distributed systems
|
174
|
+
|
175
|
+
---
|
176
|
+
|
177
|
+
## 🎯 **Strategic Priorities**
|
178
|
+
|
179
|
+
### **Immediate Focus (Next 3 Months)**
|
180
|
+
1. **API Documentation Completion** (v2.4.1)
|
181
|
+
2. **Integration Validation Scripts** (Jaeger, Prometheus)
|
182
|
+
3. **Demo Application Creation** (DummyJSON integration)
|
183
|
+
4. **Content Creation Planning** (Blog posts, videos)
|
184
|
+
|
185
|
+
### **Medium-Term Goals (3-12 Months)**
|
186
|
+
1. **Community Building** (Content publication, conference talks)
|
187
|
+
2. **Advanced Developer Tools** (Visual designer, profiling tools)
|
188
|
+
3. **Enterprise Features** (Advanced monitoring, deployment automation)
|
189
|
+
4. **Ecosystem Expansion** (Additional language bindings research)
|
190
|
+
|
191
|
+
### **Long-Term Vision (1-2 Years)**
|
192
|
+
1. **Rust Core Development** (Performance and memory safety)
|
193
|
+
2. **Polyglot Ecosystem** (Multi-language workflow coordination)
|
194
|
+
3. **Distributed Orchestration** (Cross-system workflow management)
|
195
|
+
4. **Industry Leadership** (Establish Tasker as the polyglot workflow standard)
|
196
|
+
|
197
|
+
---
|
198
|
+
|
199
|
+
## 🏆 **Success Metrics**
|
200
|
+
|
201
|
+
### **Technical Excellence**
|
202
|
+
- **Test Coverage**: Maintain >70% with comprehensive integration tests
|
203
|
+
- **Performance**: Sub-100ms API response times, efficient SQL execution
|
204
|
+
- **Reliability**: 99.9%+ uptime in production deployments
|
205
|
+
- **Security**: Zero critical vulnerabilities, comprehensive auth/authz
|
206
|
+
|
207
|
+
### **Developer Adoption**
|
208
|
+
- **Documentation Quality**: Complete API coverage, clear examples
|
209
|
+
- **Ease of Use**: <30 minute setup for complex workflows
|
210
|
+
- **Community Growth**: Active contributors, issue resolution, feature requests
|
211
|
+
- **Enterprise Readiness**: Production deployments, case studies, testimonials
|
212
|
+
|
213
|
+
### **Ecosystem Impact**
|
214
|
+
- **Cross-Language Adoption**: Successful bindings for 3+ languages
|
215
|
+
- **Performance Leadership**: Benchmark superiority in workflow processing
|
216
|
+
- **Innovation Catalyst**: Enable new architectural patterns and use cases
|
217
|
+
- **Industry Recognition**: Conference presentations, technical publications
|
218
|
+
|
219
|
+
---
|
220
|
+
|
221
|
+
**Tasker represents the evolution from a side-project to a production-ready, enterprise-grade workflow orchestration platform with a vision for polyglot distributed systems.**
|