What β Shared lib/ hardcodes route vocabulary owned by feature modules.
Why β lib/ must stay module-agnostic; hardcoded lists rot silently when a module adds a token-bearing route.
Scope β SENSITIVE_PATH_MARKERS = ['reset', 'verify', 'verify-email'] in lib/helpers/redactUrl.js:19 bakes auth/invitations route segments into a shared helper (#3935). Source the list from config (e.g. config.log.sensitivePathMarkers, current values as defaults) so modules and consumers extend it without editing lib/; give SENSITIVE_QUERY_KEYS the same treatment while there. Note the primary redaction path (req.route?.path placeholder) is already generic β only the fallback list moves.
Refs: internal audit 2026-07-16, H2. Related: #3951.
Created via /dev:issue
What β Shared
lib/hardcodes route vocabulary owned by feature modules.Why β
lib/must stay module-agnostic; hardcoded lists rot silently when a module adds a token-bearing route.Scope β
SENSITIVE_PATH_MARKERS = ['reset', 'verify', 'verify-email']inlib/helpers/redactUrl.js:19bakes auth/invitations route segments into a shared helper (#3935). Source the list from config (e.g.config.log.sensitivePathMarkers, current values as defaults) so modules and consumers extend it without editinglib/; giveSENSITIVE_QUERY_KEYSthe same treatment while there. Note the primary redaction path (req.route?.pathplaceholder) is already generic β only the fallback list moves.Refs: internal audit 2026-07-16, H2. Related: #3951.
Created via /dev:issue