Use MinIO (S3-compatible object storage) as the raw data lake, running locally in Docker.
Context
A data lake provides: durable raw data storage, replay capability (re-process raw data if transforms break), audit trail of what was extracted and when, and future support for Parquet/Delta Lake formats.
Consequences
Positive:
100% S3-compatible API — boto3 code is identical whether targeting MinIO or real S3
Phase 8 migration = change S3_ENDPOINT_URL env var from http://minio:9000 to "" and add AWS credentials
MinIO Console UI at port 9001 provides visual browsing of raw files