Files
tech-log-backend/src/adapter/outbound/objectstorage/CLAUDE.md
T

2.3 KiB

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 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

cd src
./gradlew :adapter:outbound:objectstorage:check --console=plain