From 4fbb3b34692719a44143c79de098bbe577012a1c Mon Sep 17 00:00:00 2001 From: Lars Date: Sat, 25 Jul 2026 11:34:26 +0200 Subject: [PATCH] fix(AP2.4): product_milestone_driven ohne work_cycles ? generic-kompatibel. om_capabilities-Pruefung blockierte Methodenwechsel auf initiative.generic; Gate-Slices reichen fuer Meilenstein-Steuerung. Co-authored-by: Cursor --- .../methods/registrations/product_milestone_driven.py | 7 +++---- backend/tests/test_ap24_steering_elements.py | 8 ++++++++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/backend/steering/methods/registrations/product_milestone_driven.py b/backend/steering/methods/registrations/product_milestone_driven.py index f9356de..195d9a2 100644 --- a/backend/steering/methods/registrations/product_milestone_driven.py +++ b/backend/steering/methods/registrations/product_milestone_driven.py @@ -3,7 +3,7 @@ from __future__ import annotations from steering.graph.profiles import STRICT -from steering.methods.registrations._helpers import ELEM_NEXT, SLICES_PRODUCT +from steering.methods.registrations._helpers import ELEM_NEXT, SLICES_OM_STANDARD from steering.methods.registry import MethodDefinition, get_method, register_method _PRODUCT_STEPS = ( @@ -33,7 +33,7 @@ def register() -> None: description="Meilenstein-orientierte Steuerung für Produkt- und Projektentwicklung", default_lifecycle_steps=_PRODUCT_STEPS, next_action_strategy_key="product_milestone_driven", - data_slices=SLICES_PRODUCT, + data_slices=SLICES_OM_STANDARD, compatible_archetype_keys=frozenset( { "initiative.product", @@ -42,8 +42,7 @@ def register() -> None: "initiative.program", } ), - steering_elements=ELEM_NEXT - | frozenset({"gate_fulfillment", "work_cycle_scope"}), + steering_elements=ELEM_NEXT | frozenset({"gate_fulfillment"}), graph_profile=STRICT, ) ) diff --git a/backend/tests/test_ap24_steering_elements.py b/backend/tests/test_ap24_steering_elements.py index 4688455..e0f4e2d 100644 --- a/backend/tests/test_ap24_steering_elements.py +++ b/backend/tests/test_ap24_steering_elements.py @@ -44,6 +44,14 @@ def test_list_compatible_methods_product_excludes_maturity(): assert "maturity_progression" not in keys +def test_product_milestone_driven_compatible_with_generic(): + from steering.methods.registry import list_compatible_methods + + methods = list_compatible_methods("initiative.generic") + keys = {m.key for m in methods} + assert "product_milestone_driven" in keys + + def test_operating_context_includes_method_contract(client): from tests.factories import provision_user_in_tenant from tests.test_initiatives_actions import _auth, _create_initiative, _login