I think "Activity" should be the central context of interest. All other contexts exist just to help the user be more productive and focus on his "Activity"
1) User manually creates activities, and can possibly associate semantics to it by special "template tags" (which can be templates for settings, file attributes, apps used in activity, etc), instead of current passive tags used just for linking data.
2) when the user switches activities, the whole environment changes to focus the attention of the user on the related things and auto-tags the resources used (like files created, etc) with the activity.
1) We can just listen to system-wide events (location, resources ) via listeners, send them to User Observation Hub which just broadcasts it
2) System adjusts the focus or auto-tagging according to the subcontexts, if needed
1) We need to finalise the exact model of the concerned contexts,
2) need to come up with how the system adjusts itself to focus on activity depending on subcontexts and
3) possibly come with guidelines on how the applications would auto-tag associated resources (keeping in mind the corner cases)