Upload
What It Models
An upload records a file transferred for later job input. It separates the client’s declaration from the facts returned by storage. Jobs and migration packages refer to the completed session rather than accepting a caller-selected storage address.
Identity and Attributes
The session identity belongs to Platform. File name, content type, size and optional digest come from the client; part sizing and completion facts come from the service. Retaining the stored version fixes the bytes a consumer reads even if another version later appears.
Relationships
An upload can support multiple jobs and migration runs. A run references its manifest and dataset uploads, but the upload keeps no reverse list of consumers. CRM resolves the shared session record and reads the stored object through its storage adapter.
Invariants
Completion validates size and available integrity evidence before recording success. Settled sessions do not reopen, and foreign workspace sessions appear missing. Storage and bookkeeping form separate steps rather than one atomic commit.
How It Is Stored and Shared
Platform owns the session table and dedicated bucket. Bucket rules expire ordinary input after 30 days unless retained, chunks after 14 days and exports after seven days; incomplete multipart work is abandoned after two days. Reset retains package uploads, while workspace deletion removes session records and stored versions. The upload model has no custom-field declaration.
Open Design Questions
Large files can depend on declared integrity. A crash after assembly can leave the session open over a completed object, and its next interaction may report expiry. Supported upload formats also exceed the implemented dataset-reader formats.