01must proveConfirmed | Upload operations, including session reads and listings, require upload permission and an authorized workspace in the caller’s security context. | permission | api | test |
02must proveConfirmed | An upload declaration specifies a slash-free filename of at most 255 characters, a supported content type and an exact size from one byte to 5 TiB, with an optional SHA-256 digest; invalid declarations create no session. | validation | api, service | test |
03must proveConfirmed | Part size is at least 16 MiB, otherwise the declared size divided by 9,000 rounded upward to a whole MiB; clients use that size. | calculation | service | test |
04must proveConfirmed | Clients can request at most 100 signed part addresses at once, each valid for one hour; requests can be repeated only while the session is open. | policy | service | test |
05must proveConfirmed | Completion supplies every part once with its storage receipt; Rhythm sorts them by part number and refuses a size mismatch by settling the session as aborted. | validation | service | observed |
06must proveConfirmed | Declared digests are measured for files up to 256 MiB, or checked against a digest supplied by storage; mismatches abort completion, while larger files without a storage digest retain an unverified declaration. | validation | service | observed |
07must proveConfirmed | Open sessions settle as completed, aborted or expired; completion cannot be aborted, repeated abort is harmless and reads settle storage-abandoned sessions as expired. | lifecycle | service, database | test |
08must proveConfirmed | Completion with missing storage parts returns a descriptive refusal and leaves the session open for repair. | policy | service | test |
09must proveConfirmed | Session metadata omits internal storage coordinates; another workspace’s session is indistinguishable from a missing session, while signed part addresses provide the upload destination. | invariant | service | observed |
10Confirmed | Storage lifecycle policies retain ordinary uploads for 30 days unless tagged to keep, chunks for 14 days and exports for seven days, including stored versions, and abandon incomplete parts after two days. | lifecycle | service | documented |
11Confirmed | Workspace deletion removes upload records and stored file versions, while reset preserves uploaded input. | lifecycle | service | documented |