@@ -103,14 +103,14 @@ what config keys exist, their types, defaults, or descriptions.
103103- [x] ` registry::sections() ` — list all registered sections
104104- [x] ` registry::dump_effective() ` — JSON map of effective values
105105- [x] ` registry::dump_defaults() ` — JSON map of defaults (via ` T::default() ` )
106- - [x] Redaction via ` #[serde(skip_serializing)] ` on sensitive fields
106+ - [x] Heuristic auto-redaction (password, secret, token, key, credential, auth, private, cert, encryption)
107+ - [x] ` #[serde(skip_serializing)] ` as additional layer for fields that should never appear
107108- [x] expression, memory, version_check, scaling, grpc, secrets wired with ` from_cascade() ` auto-register
108109- [x] Modules without defaults (tiered_sink, http_server, kafka, spool, dlq) use ` unmarshal_key_registered ` from downstream apps
109- - [ ] Health/admin endpoint integration — ` /config ` endpoint (redacted)
110- - [ ] Change notification (opt-in) — consumers CAN subscribe to config reload events
111- - Opt-in: modules that need hot-reload subscribe; others keep ` OnceLock ` (init-once)
112- - ` registry.on_change("expression", |new| { ... }) ` for subscribers
113- - Integrate with existing ` SharedConfig<T> ` / ` ConfigReloader ` from ` config-reload ` feature
110+ - [x] ` /config ` admin endpoint (opt-in via ` enable_config_endpoint ` ) — returns redacted effective + defaults JSON
111+ - [x] Change notification (opt-in) — ` registry::on_change(key, callback) ` + ` registry::update() `
112+ - Modules that need hot-reload subscribe; others keep ` OnceLock ` (init-once)
113+ - [ ] Wire ` ConfigReloader ` to call ` registry::update() ` on reload (connect the plumbing)
114114- [ ] Migrate all dfe-* and hyperi-* apps to ` unmarshal_key_registered ` pattern
115115- [ ] Align hyperi-pylib with same registry pattern
116116
0 commit comments