Workspace inheritance
Workspaces can inherit from one another in order to share collections and artifacts when required.
Each workspace has a (possibly empty) ordered list of parent workspaces, which can be configured by workspace owners.
When a collection is looked up in a workspace and it is not found, then all parent workspaces will be tried in turn.
Parent workspaces that the current user cannot access are skipped, and the search continues along the inheritance chain.
Search is recursive: if a collection is not found in a parent workspace, its parents are searched too, resulting in a depth-first search of the inheritance tree.