# adapter:outbound:objectstorage — module rules ## Registered identity - Module ID: `adapter-outbound-objectstorage` - Gradle path: `:adapter:outbound:objectstorage` - Focused test: `./gradlew :adapter:outbound:objectstorage:test --console=plain` - Runtime baseline: Java 21; repository framework baseline: Spring Boot 4.0.0. - Registry SSOT: `src/config/architecture/modules.json`. Package root: `dev.caskeleton.adapter.outbound.objectstorage`. Design rationale and truthful readiness live in [README.md](README.md) and `docs/registries/object-storage-readiness.yaml`. ## Responsibility - Implement application-core semantic object publication, read, retirement, and operation resolution ports behind provider-neutral bounded streaming and strict durable control records. - Compile disabled-by-default `app.object-storage` settings into exact immutable provider/destination/route/policy bindings before constructing selected resources. - Provide `filesystem-local-dev` as an R1-only development provider. - Keep scanner maintenance, privileged purge, and direct-grant composition separate; unsupported capabilities contribute no bean. - Isolate the deprecated whole-`byte[]` `ObjectStoragePort` and old `ca-skeleton.objectstorage.*` alias as explicit migration-only behavior. ## Allowed - Project dependencies are exactly those allowed by the `adapter-outbound-objectstorage` entry in `src/config/architecture/modules.json`; currently application-core and shared-contract. - Provider SDK/configuration types stay within this leaf. - Provider contributions may describe support without side effects and may construct resources only after exact selection. ## Forbidden - Inbound adapters, sibling outbound adapters, persistence, app-bootstrap, or sample-portfolio dependencies. - Provider keys, paths, locators, SDK types, Spring types, or control-record types leaking into application-core. - A default provider/destination/namespace, local-dev in production, or startup mutation when the capability is disabled. - Normal routing types implementing scanner maintenance or privileged purge ports. - Claims above the exact rows in `docs/registries/object-storage-readiness.yaml`. - Adapting new semantic operations back to legacy caller-keyed overwrite semantics. ## Test ```bash cd src ./gradlew :adapter:outbound:objectstorage:check --console=plain ```