Skip to content

Proposal: srdp.toml, a single platform config #42

Description

@yannick-vinkesteijn

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions