Closes #364: snapshot export is read-only by definition — it freezes
the requested input values at the current GraphTime and emits an
envelope. The full Graph parameter that #257 left in place handed
the read-side accessor commit, input, derived, hydrate, the
time-travel readers, and the admin handles, despite the export path
touching only read and now. Per §12.3 the parameter exposes only
those two methods.
importSnapshot legitimately needs the full Graph (it opens a
commit), so its parameter stays as Graph — only the read-side
accessors narrow.
Narrowing is type-level. A real Graph is still assignable, so call
sites keep working; the discipline is enforced at compile time inside
the implementation.
Capability slice handed to exportSnapshot / exportSnapshotJson.
Closes #364: snapshot export is read-only by definition — it freezes the requested input values at the current GraphTime and emits an envelope. The full
Graphparameter that #257 left in place handed the read-side accessorcommit,input,derived,hydrate, the time-travel readers, and the admin handles, despite the export path touching onlyreadandnow. Per §12.3 the parameter exposes only those two methods.importSnapshotlegitimately needs the fullGraph(it opens a commit), so its parameter stays asGraph— only the read-side accessors narrow.Narrowing is type-level. A real
Graphis still assignable, so call sites keep working; the discipline is enforced at compile time inside the implementation.