Write apps/backend/docs/concepts-configuration.md explaining src/config.ts and src/config/rateLimits.ts: which variables are validated at boot and cause a hard startup failure, which are read lazily at first use, and how loadEnv() relates to the lazily-constructed object-store singleton.
Acceptance criteria:
- Lists the boot-validated set and shows the failure output when one is missing
- Explains the lazy-vs-eager split and why the object store is built lazily (avoiding a circular import)
- Documents the production/development branch in
lib/storage.ts that selects the real S3 client or the local-disk store
- Cross-links the environment-variable reference rather than duplicating the full table
Write
apps/backend/docs/concepts-configuration.mdexplainingsrc/config.tsandsrc/config/rateLimits.ts: which variables are validated at boot and cause a hard startup failure, which are read lazily at first use, and howloadEnv()relates to the lazily-constructed object-store singleton.Acceptance criteria:
lib/storage.tsthat selects the real S3 client or the local-disk store