# ARR guarded object storage `ManagedObjectStore` owns an immutable staged-to-committed workflow for source and generated artifacts. Canonical keys contain only opaque job/attempt identity and role-controlled filenames; user filenames never enter object keys. Every object carries job, attempt, state, role, SHA-256, exact byte size and MIME metadata. Upload snapshots and hashes the local file, conditionally creates a staged object, conditionally copies to the committed key, verifies committed bytes, and deletes only the exact staged object. ARR2 OSS requirements: - configured region matches the bucket and server-side encryption is enabled; - versioning is neither Enabled nor Suspended; - bucket ACL is `private` or `public-read`, never `public-read-write`; - every ARR-managed object is explicitly written with object ACL `private`; - credentials come from the SDK environment/RAM/STS chain and ambient desktop proxies are disabled. The active flow materializes the committed source into a private temporary directory before processing. No public URL, Provider, fetch grant or external downloader is used. Legacy grant/output-exchange modules remain inactive compatibility code.