Problem
Platform configuration is currently scattered over services/deployment specific env and config files, user needs to manually copy files and update multiple files. This increases the risk of drift and configuration issues.
Proposal
A single repo-level config file (working name srdp.toml) as the platform contract:
- Holds topology and identity: org prefix, cloud, environment set, services on/off, code locations, CI policy.
- Schema is a pydantic model, same pattern as the existing
DuckLakeSettings: validation, error messages, and JSON Schema for free.
- Never holds secret values. Secrets are stored in .env, secrets.toml and/or secret managers.
- Ownership rule: We need to define clear boundary between optional services and components available in core and outside what srdp provides (plugins) and make sure both can be accommodated in the config.
- File first, CLI second: hand-editable; a future
srdp CLI (srdp init, srdp env add) reads and writes the same file and keeps no other state. Enables interactive setup/deployment later, including scaffolding env dirs instead of shipping three examples.
- The config file is a blueprint of the environment and should be sufficient to setup and deploy the srdp instance from scratch.
Consumers: Justfile, CI workflow (dynamic matrix + gate), the app deployment layer (#38), the future CLI.
Open questions
- TOML vs YAML (TOML proposed: strict types, stdlib parsing, comment-preserving edits for the CLI; the schema is format-agnostic). TOML is also used in libraries like DLT and streamlit. Both can be natively parsed to a dictionary and validated by pydantic
Relates to #38, PR #34 review discussion.
Problem
Platform configuration is currently scattered over services/deployment specific env and config files, user needs to manually copy files and update multiple files. This increases the risk of drift and configuration issues.
Proposal
A single repo-level config file (working name
srdp.toml) as the platform contract:DuckLakeSettings: validation, error messages, and JSON Schema for free.srdpCLI (srdp init,srdp env add) reads and writes the same file and keeps no other state. Enables interactive setup/deployment later, including scaffolding env dirs instead of shipping three examples.Consumers: Justfile, CI workflow (dynamic matrix + gate), the app deployment layer (#38), the future CLI.
Open questions
Relates to #38, PR #34 review discussion.