Ok, I think I've got it sorted out. I've made the following changes in trunk:
Bindings implement #objectForDataStream: by always creating a DiskProxy
Association should never create a DiskProxy, so no longer implement #objectForDataStream:
DiskProxy now uses the current environment in #comeUpFullyOnReload:, rather than Smalltalk
That should take care of the single-environment case. It should also work for multi-environment images, if we create UI for setting the "current" environment, or actually make use of the "environment" instance variable in Project.
One other change was required to get loading a project to work, but this has nothing to do with environments. In the Inbox, I've uploaded a version of Morphic that implements PasteUpMorph>>referencePool, which creates a new reference pool... whatever that is. Could someone who knows more about Projects review that, please?
With these four changes, it's possible to save and load projects in a Squeak 4.6 image. It doesn't work in a trunk image, however. The Spur VM crashes when saving a project. I've reported that on the VM list. It also fails to load an image segment - looks like the primitive for that isn't quite finished in Spur.