@@ -2641,13 +2641,14 @@ def _aggregate_security_objectives(cls, primary_ancestors: set) -> dict:
26412641
26422642 @classmethod
26432643 def _aggregate_dro_objectives (cls , primary_ancestors : set ) -> dict :
2644- """Aggregates DRO objectives from primary ancestors (lowest value wins)."""
2644+ """Aggregates DRO objectives from primary ancestors (lowest non-zero value wins)."""
26452645 agg_obj = {}
26462646 for asset in primary_ancestors :
26472647 objectives = asset .disaster_recovery_objectives .get ("objectives" , {})
26482648 for key , content in objectives .items ():
26492649 value = content .get ("value" )
2650- if value is None :
2650+ # Skip None or 0 values (treat as "not set")
2651+ if not value :
26512652 continue
26522653
26532654 current_value = agg_obj .get (key , {}).get ("value" )
@@ -2847,13 +2848,16 @@ def get_disaster_recovery_objectives(self) -> dict[str, dict[str, dict[str, int]
28472848 for key , content in asset .disaster_recovery_objectives .get (
28482849 "objectives" , {}
28492850 ).items ():
2851+ value = content .get ("value" )
2852+ # Skip None or 0 values (treat as "not set")
2853+ if not value :
2854+ continue
28502855 if key not in disaster_recovery_objectives :
2851- disaster_recovery_objectives [key ] = content
2856+ disaster_recovery_objectives [key ] = content . copy ()
28522857 else :
2853- disaster_recovery_objectives [key ]["value" ] = min (
2854- disaster_recovery_objectives [key ].get ("value" , 0 ),
2855- content .get ("value" , 0 ),
2856- )
2858+ current_value = disaster_recovery_objectives [key ].get ("value" )
2859+ if current_value is None or value < current_value :
2860+ disaster_recovery_objectives [key ]["value" ] = value
28572861
28582862 return {"objectives" : disaster_recovery_objectives }
28592863
0 commit comments