From cba5cebae81b6b654c541e77639ab21e803303c6 Mon Sep 17 00:00:00 2001 From: Maciej Kaszynski Date: Thu, 13 Aug 2026 08:29:28 +0100 Subject: [PATCH 1/6] Changing reqs based on clarification --- .../docs/requirements/requirements.rst | 58 ++++++------------- 1 file changed, 18 insertions(+), 40 deletions(-) diff --git a/score/launch_manager/docs/requirements/requirements.rst b/score/launch_manager/docs/requirements/requirements.rst index 690a5247d..c31d36fe6 100644 --- a/score/launch_manager/docs/requirements/requirements.rst +++ b/score/launch_manager/docs/requirements/requirements.rst @@ -296,7 +296,7 @@ Conditional Launching ===================== .. comp_req:: Conditionally launch of processes - :id: comp_req__launch_man__cond_process_start + :id: comp_req__launch_man__config_ready_cond :reqtype: Functional :security: NO :safety: ASIL_B @@ -305,25 +305,12 @@ Conditional Launching :version: 1 :satisfied_by: comp__lifecycle_launch_manager - The :term:`Launch Manager` shall provide support to conditionally start a process - or process group based on the return value of a single or multiple :term:`Processes ` - executed before. + The :term`Launch Manager` shall support configuration of conditions that + shall be met before the component is considered to have reached its + :term:`Ready State`. -.. comp_req:: Condition timeout - :id: comp_req__launch_man__total_wait_time_support - :reqtype: Functional - :security: NO - :safety: ASIL_B - :derived_from: feat_req__lifecycle__conditional_startup[version==1] - :status: valid - :version: 1 - :satisfied_by: comp__lifecycle_launch_manager - - The :term:`Launch Manager` shall provide support for per condition configurable - total wait time for launch conditions to be satisfied. - -.. comp_req:: Conditional launch polling interval - :id: comp_req__launch_man__polling_interval +.. comp_req:: Conditionally launch of processes + :id: comp_req__launch_man__config_ready_cond :reqtype: Functional :security: NO :safety: ASIL_B @@ -332,11 +319,11 @@ Conditional Launching :version: 1 :satisfied_by: comp__lifecycle_launch_manager - The :term:`Launch Manager` shall provide support for per condition configurable - :term:`Polling Interval` for launch conditions to be checked. + The :term:`Launch Manager` shall starts a component only after all its + **dependencies** have successfully reached their **ready state**. -.. comp_req:: Pre-start validation - :id: comp_req__launch_man__validate_conditions +.. comp_req:: Condition timeout + :id: comp_req__launch_man__total_wait_time_support :reqtype: Functional :security: NO :safety: ASIL_B @@ -345,10 +332,11 @@ Conditional Launching :version: 1 :satisfied_by: comp__lifecycle_launch_manager - The :term:`Launch Manager` shall be able to validate the pre-start conditions of the executable using the conditions. + The :term:`Launch Manager` shall support configuration of the maximum time + an activation of a run target can take. -.. comp_req:: post-start validation - :id: comp_req__launch_man__validation_conditions +.. comp_req:: Condition timeout + :id: comp_req__launch_man__total_wait_time_fail :reqtype: Functional :security: NO :safety: ASIL_B @@ -357,7 +345,8 @@ Conditional Launching :version: 1 :satisfied_by: comp__lifecycle_launch_manager - The :term:`Launch Manager` shall be able to validate the start of the executable using the conditions. + If the activation of a run raget exceeds the configured maximum time, then + the :term:`Launch Manager` shall consider this activation as failed. .. comp_req:: Launched Process status :id: comp_req__launch_man__launcher_status_storage @@ -369,7 +358,8 @@ Conditional Launching :version: 1 :satisfied_by: comp__lifecycle_launch_manager - The :term:`Launch Manager` shall provide a way to store the status of the launched process. + The :term:`Launch Manager` shall provide a way to store the status of the + launched process. .. comp_req:: Condition check based on status :id: comp_req__launch_man__condition_check_method @@ -407,18 +397,6 @@ Conditional Launching The :term:`Launch Manager` shall provide a method for condition check for a path. -.. comp_req:: Condition check based on ENV - :id: comp_req__launch_man__env_variable_cond_check - :reqtype: Functional - :security: NO - :safety: ASIL_B - :derived_from: feat_req__lifecycle__conditional_startup[version==1] - :status: valid - :version: 1 - :satisfied_by: comp__lifecycle_launch_manager - - The :term:`Launch Manager` shall provide a method for condition check for environment variable. - .. comp_req:: Condition check based on all dependency :id: comp_req__launch_man__dependency_check :reqtype: Functional From 68e592749be0495417984812700557499e9962c8 Mon Sep 17 00:00:00 2001 From: Maciej Kaszynski Date: Fri, 14 Aug 2026 09:03:03 +0100 Subject: [PATCH 2/6] Fixing reqs --- .../docs/requirements/requirements.rst | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/score/launch_manager/docs/requirements/requirements.rst b/score/launch_manager/docs/requirements/requirements.rst index c31d36fe6..8fa978ee0 100644 --- a/score/launch_manager/docs/requirements/requirements.rst +++ b/score/launch_manager/docs/requirements/requirements.rst @@ -307,10 +307,10 @@ Conditional Launching The :term`Launch Manager` shall support configuration of conditions that shall be met before the component is considered to have reached its - :term:`Ready State`. + **ready state**. .. comp_req:: Conditionally launch of processes - :id: comp_req__launch_man__config_ready_cond + :id: comp_req__launch_man__ready_cond :reqtype: Functional :security: NO :safety: ASIL_B @@ -322,6 +322,10 @@ Conditional Launching The :term:`Launch Manager` shall starts a component only after all its **dependencies** have successfully reached their **ready state**. +.. TODO PR has defined the the bold terms in the glossary, however need to + wait for a release to get these. + see https://github.com/eclipse-score/score/pull/3184 + .. comp_req:: Condition timeout :id: comp_req__launch_man__total_wait_time_support :reqtype: Functional @@ -345,7 +349,7 @@ Conditional Launching :version: 1 :satisfied_by: comp__lifecycle_launch_manager - If the activation of a run raget exceeds the configured maximum time, then + If the activation of a run target exceeds the configured maximum time, then the :term:`Launch Manager` shall consider this activation as failed. .. comp_req:: Launched Process status @@ -358,8 +362,7 @@ Conditional Launching :version: 1 :satisfied_by: comp__lifecycle_launch_manager - The :term:`Launch Manager` shall provide a way to store the status of the - launched process. + The :term:`Launch Manager` shall provide a way to store the status of the launched process. .. comp_req:: Condition check based on status :id: comp_req__launch_man__condition_check_method From 6a77e5617c8c6eea0177955b009d04d1c6ccae23 Mon Sep 17 00:00:00 2001 From: Maciej Kaszynski <161459353+MaciejKaszynski@users.noreply.github.com> Date: Fri, 14 Aug 2026 15:31:24 +0100 Subject: [PATCH 3/6] Rewording requirement titles Co-authored-by: Daniel Thwaites Signed-off-by: Maciej Kaszynski <161459353+MaciejKaszynski@users.noreply.github.com> --- .../launch_manager/docs/requirements/requirements.rst | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/score/launch_manager/docs/requirements/requirements.rst b/score/launch_manager/docs/requirements/requirements.rst index 8fa978ee0..8937cf8e7 100644 --- a/score/launch_manager/docs/requirements/requirements.rst +++ b/score/launch_manager/docs/requirements/requirements.rst @@ -295,7 +295,7 @@ Launching Processes Conditional Launching ===================== -.. comp_req:: Conditionally launch of processes +.. comp_req:: Configurable ready state :id: comp_req__launch_man__config_ready_cond :reqtype: Functional :security: NO @@ -309,7 +309,7 @@ Conditional Launching shall be met before the component is considered to have reached its **ready state**. -.. comp_req:: Conditionally launch of processes +.. comp_req:: Dependency ordering :id: comp_req__launch_man__ready_cond :reqtype: Functional :security: NO @@ -326,7 +326,7 @@ Conditional Launching wait for a release to get these. see https://github.com/eclipse-score/score/pull/3184 -.. comp_req:: Condition timeout +.. comp_req:: Configurable activation timeout :id: comp_req__launch_man__total_wait_time_support :reqtype: Functional :security: NO @@ -339,7 +339,7 @@ Conditional Launching The :term:`Launch Manager` shall support configuration of the maximum time an activation of a run target can take. -.. comp_req:: Condition timeout +.. comp_req:: Activation timeout :id: comp_req__launch_man__total_wait_time_fail :reqtype: Functional :security: NO @@ -349,7 +349,7 @@ Conditional Launching :version: 1 :satisfied_by: comp__lifecycle_launch_manager - If the activation of a run target exceeds the configured maximum time, then + If the activation of a run target exceeds the maximum time, then the :term:`Launch Manager` shall consider this activation as failed. .. comp_req:: Launched Process status From e5ed2fbcc615b8dbde12650c152f8821426d125d Mon Sep 17 00:00:00 2001 From: Maciej Kaszynski Date: Wed, 26 Aug 2026 14:01:56 +0100 Subject: [PATCH 4/6] Adding ref tags --- score/launch_manager/docs/requirements/requirements.rst | 2 +- .../src/daemon/src/configuration/component_config.hpp | 1 + score/launch_manager/src/daemon/src/configuration/config.hpp | 1 + .../src/daemon/src/process_group_manager/details/transition.hpp | 1 + 4 files changed, 4 insertions(+), 1 deletion(-) diff --git a/score/launch_manager/docs/requirements/requirements.rst b/score/launch_manager/docs/requirements/requirements.rst index 8937cf8e7..67fdd00ef 100644 --- a/score/launch_manager/docs/requirements/requirements.rst +++ b/score/launch_manager/docs/requirements/requirements.rst @@ -319,7 +319,7 @@ Conditional Launching :version: 1 :satisfied_by: comp__lifecycle_launch_manager - The :term:`Launch Manager` shall starts a component only after all its + The :term:`Launch Manager` shall start a component only after all its **dependencies** have successfully reached their **ready state**. .. TODO PR has defined the the bold terms in the glossary, however need to diff --git a/score/launch_manager/src/daemon/src/configuration/component_config.hpp b/score/launch_manager/src/daemon/src/configuration/component_config.hpp index ab17ef872..0743e30ed 100644 --- a/score/launch_manager/src/daemon/src/configuration/component_config.hpp +++ b/score/launch_manager/src/daemon/src/configuration/component_config.hpp @@ -77,6 +77,7 @@ struct ComponentProperties ApplicationProfile application_profile; std::vector depends_on; std::vector process_arguments; + // req-Id: comp_req__launch_man__config_ready_cond ReadyCondition ready_condition; }; struct Sandbox diff --git a/score/launch_manager/src/daemon/src/configuration/config.hpp b/score/launch_manager/src/daemon/src/configuration/config.hpp index 3444b9b78..70548b076 100644 --- a/score/launch_manager/src/daemon/src/configuration/config.hpp +++ b/score/launch_manager/src/daemon/src/configuration/config.hpp @@ -33,6 +33,7 @@ struct RunTargetConfig std::string name; std::string description; std::vector depends_on; + // req-Id: comp_req__launch_man__total_wait_time_support std::uint32_t transition_timeout_ms{}; SwitchRunTargetAction recovery_action; }; diff --git a/score/launch_manager/src/daemon/src/process_group_manager/details/transition.hpp b/score/launch_manager/src/daemon/src/process_group_manager/details/transition.hpp index ba0b960d1..45807684f 100644 --- a/score/launch_manager/src/daemon/src/process_group_manager/details/transition.hpp +++ b/score/launch_manager/src/daemon/src/process_group_manager/details/transition.hpp @@ -242,6 +242,7 @@ class Transition /// @details Starts in the Stopping Phase: every node currently running and not needed by @p target is /// deactivated (derived from live component state across the whole graph, so nodes left running by a previous /// aborted transition are captured too). Then moves to the Starting Phase to bring up @p target. + // req-Id: comp_req__launch_man__ready_cond void setupTransition(GraphIndex target) { std::fill(state_.in_target_subgraph.begin(), state_.in_target_subgraph.end(), false); From e468acea3c82bc8ca42f89f0784e62a5b53c2771 Mon Sep 17 00:00:00 2001 From: Maciej Kaszynski Date: Thu, 27 Aug 2026 14:14:09 +0100 Subject: [PATCH 5/6] Changing names based on review --- docs/features/lifecycle/glossary.rst | 13 ++++++++++ .../docs/requirements/requirements.rst | 26 ++++++++----------- .../src/configuration/component_config.hpp | 3 ++- .../src/daemon/src/configuration/config.hpp | 3 ++- .../details/transition.hpp | 2 +- 5 files changed, 29 insertions(+), 18 deletions(-) diff --git a/docs/features/lifecycle/glossary.rst b/docs/features/lifecycle/glossary.rst index f0075d78b..68f3d2871 100644 --- a/docs/features/lifecycle/glossary.rst +++ b/docs/features/lifecycle/glossary.rst @@ -60,6 +60,19 @@ Glossary Component A configurable unit in the Launch Manager that describes an executable and its runtime environment (sandbox). Components can be grouped together in Run Targets to define system operational states. + Ready State + A state when the component is ready to provide services to other components. + + Dependency (between components) + A configuration parameter indicating that **Component A** can only start + after **Component B** has reached its :term:`Ready State`. In this case, + **Component A** depends on **Component B**. + + Dependency (between run targets) + A configuration parameter indicating that **Run Target A** includes all + components from **Run Target B**. In this case, **Run Target A** depends + on **Run Target B**. + Lifecycle Component Node of the dependency tree. diff --git a/score/launch_manager/docs/requirements/requirements.rst b/score/launch_manager/docs/requirements/requirements.rst index 67fdd00ef..e96462d71 100644 --- a/score/launch_manager/docs/requirements/requirements.rst +++ b/score/launch_manager/docs/requirements/requirements.rst @@ -295,8 +295,8 @@ Launching Processes Conditional Launching ===================== -.. comp_req:: Configurable ready state - :id: comp_req__launch_man__config_ready_cond +.. comp_req:: Configuration of component readiness conditions + :id: comp_req__launch_man__conf_of_comp_ready_cond :reqtype: Functional :security: NO :safety: ASIL_B @@ -305,12 +305,12 @@ Conditional Launching :version: 1 :satisfied_by: comp__lifecycle_launch_manager - The :term`Launch Manager` shall support configuration of conditions that + The :term:`Launch Manager` shall support configuration of conditions that shall be met before the component is considered to have reached its - **ready state**. + :term:`Ready State`. -.. comp_req:: Dependency ordering - :id: comp_req__launch_man__ready_cond +.. comp_req:: Dependency based startup order + :id: comp_req__launch_man__dep_based_startup_order :reqtype: Functional :security: NO :safety: ASIL_B @@ -320,14 +320,10 @@ Conditional Launching :satisfied_by: comp__lifecycle_launch_manager The :term:`Launch Manager` shall start a component only after all its - **dependencies** have successfully reached their **ready state**. + :term:`dependencies ` have successfully reached their :term:`Ready State`. -.. TODO PR has defined the the bold terms in the glossary, however need to - wait for a release to get these. - see https://github.com/eclipse-score/score/pull/3184 - -.. comp_req:: Configurable activation timeout - :id: comp_req__launch_man__total_wait_time_support +.. comp_req:: Configuration of run target activation timeout + :id: comp_req__launch_man__conf_rt_active_timeout :reqtype: Functional :security: NO :safety: ASIL_B @@ -339,8 +335,8 @@ Conditional Launching The :term:`Launch Manager` shall support configuration of the maximum time an activation of a run target can take. -.. comp_req:: Activation timeout - :id: comp_req__launch_man__total_wait_time_fail +.. comp_req:: Run target activation timeout + :id: comp_req__launch_man__rt_activate_timeout :reqtype: Functional :security: NO :safety: ASIL_B diff --git a/score/launch_manager/src/daemon/src/configuration/component_config.hpp b/score/launch_manager/src/daemon/src/configuration/component_config.hpp index 0743e30ed..1600b3ee0 100644 --- a/score/launch_manager/src/daemon/src/configuration/component_config.hpp +++ b/score/launch_manager/src/daemon/src/configuration/component_config.hpp @@ -77,7 +77,8 @@ struct ComponentProperties ApplicationProfile application_profile; std::vector depends_on; std::vector process_arguments; - // req-Id: comp_req__launch_man__config_ready_cond + + // req-Id: comp_req__launch_man__conf_of_comp_ready_cond ReadyCondition ready_condition; }; struct Sandbox diff --git a/score/launch_manager/src/daemon/src/configuration/config.hpp b/score/launch_manager/src/daemon/src/configuration/config.hpp index 70548b076..bd7790630 100644 --- a/score/launch_manager/src/daemon/src/configuration/config.hpp +++ b/score/launch_manager/src/daemon/src/configuration/config.hpp @@ -33,7 +33,8 @@ struct RunTargetConfig std::string name; std::string description; std::vector depends_on; - // req-Id: comp_req__launch_man__total_wait_time_support + + // req-Id: comp_req__launch_man__conf_rt_active_timeout std::uint32_t transition_timeout_ms{}; SwitchRunTargetAction recovery_action; }; diff --git a/score/launch_manager/src/daemon/src/process_group_manager/details/transition.hpp b/score/launch_manager/src/daemon/src/process_group_manager/details/transition.hpp index 45807684f..69038dafe 100644 --- a/score/launch_manager/src/daemon/src/process_group_manager/details/transition.hpp +++ b/score/launch_manager/src/daemon/src/process_group_manager/details/transition.hpp @@ -242,9 +242,9 @@ class Transition /// @details Starts in the Stopping Phase: every node currently running and not needed by @p target is /// deactivated (derived from live component state across the whole graph, so nodes left running by a previous /// aborted transition are captured too). Then moves to the Starting Phase to bring up @p target. - // req-Id: comp_req__launch_man__ready_cond void setupTransition(GraphIndex target) { + // req-Id: comp_req__launch_man__dep_based_startup_order std::fill(state_.in_target_subgraph.begin(), state_.in_target_subgraph.end(), false); state_.target_root = target; From 35aec3c4519a6c732fce35d4749f068f840773cf Mon Sep 17 00:00:00 2001 From: Maciej Kaszynski Date: Thu, 27 Aug 2026 14:40:31 +0100 Subject: [PATCH 6/6] rewording --- score/launch_manager/docs/requirements/requirements.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/score/launch_manager/docs/requirements/requirements.rst b/score/launch_manager/docs/requirements/requirements.rst index e96462d71..cdf53abfc 100644 --- a/score/launch_manager/docs/requirements/requirements.rst +++ b/score/launch_manager/docs/requirements/requirements.rst @@ -345,7 +345,7 @@ Conditional Launching :version: 1 :satisfied_by: comp__lifecycle_launch_manager - If the activation of a run target exceeds the maximum time, then + If the activation of a run target exceeds the maximum configured time, then the :term:`Launch Manager` shall consider this activation as failed. .. comp_req:: Launched Process status