Problem
Several config keys exist because someone needed a number and reached for getNumber(), not because operators ever change them in production. They add noise to the Settings page and demand label/type metadata for #436/#439 that won't pay off.
Confirmed candidates:
quotes.cleanup_interval (default 5 min) — internal cleanup loop tick in src/services/quote-channel-manager.ts.
notices.cleanup_interval (default 5 min) — same pattern in src/services/notices-channel-manager.ts:242.
Likely candidates (confirm during implementation):
quotes.max_length (default 1000) — Discord's hard limit is 2000; this is an internal bound, not operator preference.
voicechannels.ownership.grace_period_seconds (default 30s) — internal transfer-delay constant; arguable but very unlikely to be tuned in practice.
Proposed change
- Move the confirmed candidates from
ConfigSchema to consts in their respective modules.
- For the likely candidates: decide per-key during implementation. Default plan: demote both.
- Add a startup migration step to drop orphan rows from the
configs collection.
- Remove from
defaultConfig and settingsMetadata.
Acceptance
- Demoted keys no longer in
ConfigSchema.
- Modules use module-local constants; values unchanged.
- Existing tests still pass; if any test asserts these values, update to import the new constant.
Notes
Problem
Several config keys exist because someone needed a number and reached for
getNumber(), not because operators ever change them in production. They add noise to the Settings page and demand label/type metadata for #436/#439 that won't pay off.Confirmed candidates:
quotes.cleanup_interval(default 5 min) — internal cleanup loop tick insrc/services/quote-channel-manager.ts.notices.cleanup_interval(default 5 min) — same pattern insrc/services/notices-channel-manager.ts:242.Likely candidates (confirm during implementation):
quotes.max_length(default 1000) — Discord's hard limit is 2000; this is an internal bound, not operator preference.voicechannels.ownership.grace_period_seconds(default 30s) — internal transfer-delay constant; arguable but very unlikely to be tuned in practice.Proposed change
ConfigSchematoconsts in their respective modules.configscollection.defaultConfigandsettingsMetadata.Acceptance
ConfigSchema.Notes