feat(harmony_config): unified config layer (ADR-020) — ConfigClient, ConfigClass, masking #304
Reference in New Issue
Block a user
No description provided.
Delete Branch "pr/harmony-config-layer"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Implements the ADR-020 unified config+secret layer: one
ConfigClientresolution chain (env → OpenBao → prompt) where the Rust struct is the schema,
with first-class secret handling. Compiles against current
master'sharmony_secret.Changes
ConfigClass(Standard/Secret) +#[config(secret)]derive; class plumbedthrough the
ConfigSourcetrait.ConfigManager→ConfigClientrename;for_namespace()constructor +opt-out
Builder.*, formatted output renders****.get_or_promptpersists prompted values to every writable source (wasstopping at the first, so OpenBao never saw team-scale values).
per-binary when explicitly opted in.
documented; swallowed
StoreSourceerrors now logged.OPENBAO_URL/VAULT_ADDRvar;ROADMAP/01and a
firewall_paircomment updated toConfigClient.Consumer fix
The rename updates its one in-tree consumer — a 2-line call-site change in
example-harmony-sso— somasterstays green. The example's full ADR-020rework lands in the example PR.
Context
PR 2 of 4 splitting
feat/unified-config-and-secrets. Independent — merge inany order.
Verification
cargo check --workspace --all-targets --all-features,cargo fmt --check,cargo test -p harmony_config(45 passing), clippy clean.