# S3 source-retention overlay for the e2e topology. # # Adds a MinIO bucket and enables novel-service source retention so the # source-boundary kill/restart drill (tests/e2e/source_recovery_drill.sh) runs # against the real retained-object replay path: acceptance commits the object # plus a 'source'-stage job, and the claimed worker rebuilds chapters from S3 # before any provider call. services: minio: image: novel-world-minio-e2e:local build: context: . dockerfile: infra/docker/Dockerfile.minio-e2e platform: linux/amd64 pull_policy: build container_name: ${CONTAINER_PREFIX:-novel}-minio command: server /data --console-address :9001 environment: MINIO_ROOT_USER: drill-access-key MINIO_ROOT_PASSWORD: drill-secret-key volumes: - minio-data:/data networks: - novel-net minio-init: image: novel-world-minio-e2e:local platform: linux/amd64 pull_policy: never container_name: ${CONTAINER_PREFIX:-novel}-minio-init depends_on: minio: condition: service_started networks: - novel-net entrypoint: ["/bin/sh", "-c"] command: - | for attempt in $(seq 1 30); do if mc alias set drill http://minio:9000 drill-access-key drill-secret-key >/dev/null 2>&1 \ && mc mb --ignore-existing drill/novel-world-uploads >/dev/null 2>&1; then exit 0 fi sleep 1 done exit 1 novel-service: environment: S3_ENABLED: "true" S3_ENDPOINT: http://minio:9000 S3_BUCKET: novel-world-uploads S3_REGION: us-east-1 S3_FORCE_PATH_STYLE: "true" S3_ACCESS_KEY: drill-access-key S3_SECRET_KEY: drill-secret-key depends_on: minio-init: condition: service_completed_successfully volumes: minio-data: