Required integration work for #480 and #487; tracker #416. Current Program files each own an independent string-ID keyspace as well as their local HIR/type metadata. Cross-file declaration lookup needs stable program name identity without losing each declaration owner or flattening module-local symbols.
Implement a reference-counted shared string store, retain it through per-file Compilation handles, and use one store across serial, parallel, streaming, bind-only and recompile Program paths. Preserve independently owned per-file HIR, binder symbols and type metadata. Verify allocation-failure cleanup, concurrent sharing, surviving-owner lifetime, repeated compilation, module-name isolation, and unchanged diagnostics. Build declaration-owner lookup on real bound declarations rather than text concatenation or foreign local IDs.
This is part of actual typed global/import resolution, not graph benchmark readmission. Keep #480/#487 and both unchanged graph rejection gates open until full typed lookup and cycles work. Document any measured results separately from semantic completeness.