Ambient intelligence involves synthesising data from a range of sources in order to exhibit meaningful adaptive behaviour without explicit user direction, driven by inputs from largely independent devices and data sources. This immediately raises questions of how such behaviours are to be specified and programmed, in the face of uncertainty both in the data being sensed and the tasks being supported. We explore the issues that impact the stability and flexibility of systems, and use these issues to derive constraints and targets for the next generation of programming frameworks.