chore: establish Ekklesia platform foundation
CI / verify (push) Has been cancelled

This commit is contained in:
ekklesia
2026-07-12 20:28:19 -05:00
commit 192a6514cf
47 changed files with 2505 additions and 0 deletions
@@ -0,0 +1,40 @@
# 0004: Replace unmaintained MinIO baseline
- Status: Accepted
- Date: 2026-07-12
## Context
The original Ekklesia brief selected MinIO as the default self-hosted S3-compatible service. The
upstream `minio/minio` repository was archived on April 25, 2026 and states that historical
community binary releases are no longer maintained. New church deployments may store highly
sensitive content, so beginning on an unmaintained security-sensitive service is unacceptable.
## Decision
Keep Ekklesia's future storage contract provider-neutral and use SeaweedFS 4.28 in the Phase 1
development Compose environment. SeaweedFS is actively maintained and offers an S3-compatible
endpoint and a small single-node development mode.
Before treating any provider as production-ready, add storage contract tests covering put, get,
head, delete, ranges, multipart uploads, metadata/content type, signed URLs, bucket and prefix
isolation, and denied access. A production provider decision remains separate.
## Alternatives
- Retaining the final MinIO community image was rejected because it no longer receives upstream
maintenance.
- Provider-specific Core APIs were rejected because they would couple every module to this choice.
- Deferring all object storage was rejected because a reproducible S3 development endpoint is part
of the repository foundation.
## Consequences
The implementation intentionally uses `S3_*` configuration rather than `MINIO_*` names. Some
SeaweedFS behavior may differ from AWS S3 or historical MinIO and must be captured by contract
tests before the storage abstraction is implemented.
## Migration implications
No product data exists in Phase 1. Later provider changes must follow an object-copy and integrity
verification plan while preserving stable Core storage contracts.