"""Built-in method: product_milestone_driven — AP1.1 / AP2.4.""" from __future__ import annotations from steering.graph.profiles import STRICT from steering.methods.registrations._helpers import ELEM_NEXT, SLICES_PRODUCT from steering.methods.registry import MethodDefinition, get_method, register_method _PRODUCT_STEPS = ( "intake", "method_selection", "structure_setup", "planning", "action_selection", "assignment", "waiting", "result_intake", "validation", "review", "adaptation", "closure", ) def register() -> None: if get_method("product_milestone_driven"): return register_method( MethodDefinition( key="product_milestone_driven", version="0.1.0", label="Produkt / Meilenstein", 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, compatible_archetype_keys=frozenset( { "initiative.product", "initiative.generic", "initiative.linear_project", "initiative.program", } ), steering_elements=ELEM_NEXT | frozenset({"gate_fulfillment", "work_cycle_scope"}), graph_profile=STRICT, ) )