Artifact-storage seam.
OptionalcontextRequest user — threaded through every entity op for isolation/audit.
Entity-creation seam.
OptionalproviderOptional provider for multi-provider correctness.
Record-loading seam (pipeline + next-version).
Sidecar /train seam.
The injected dependency bundle passed to TrainingEngine.trainModel. Bundling the seams (rather than constructor-injecting them) keeps the engine stateless and lets a caller vary implementations per call (e.g. a different artifact store per tenant).