Problem
Secret Detection (whole tree) fails on every PR that has merged current main. First seen on #16916, which touches no locale file:
potential secret not in the audited baseline: autobot-frontend/src/i18n/locales/en.json:9086: Secret Keyword
potential secret not in the audited baseline: autobot-frontend/src/i18n/locales/ur.json:9086: Secret Keyword
Root cause
#16875 (bb1e3518d, MCP server admin CRUD) added a second authApiKey key to all 11 locales. detect-secrets' Secret Keyword plugin matches any *ApiKey-shaped key with a quoted value. Its identity for a finding is (file, type, hashed_secret), so:
- 9 locales pass: their translated value was already audited in the same file.
en and ur fail: "API key" (lowercase k; the older key is "API Key") and "API کیلید" are new hashes in their files.
These are UI labels, not credentials. #16875 merged without the scan → audit → strip step from docs/developer/RATCHET_BASELINES.md ("The secrets baseline: scan, audit, strip").
Fix
Follow that documented procedure on current main: rescan, label only the new entries is_secret: false after inspecting each, strip line_number. No allowlist widening, no plugin or filter change, no reword of the UI string to dodge the regex.
Acceptance criteria
Problem
Secret Detection (whole tree)fails on every PR that has merged currentmain. First seen on #16916, which touches no locale file:Root cause
#16875 (
bb1e3518d, MCP server admin CRUD) added a secondauthApiKeykey to all 11 locales. detect-secrets' Secret Keyword plugin matches any*ApiKey-shaped key with a quoted value. Its identity for a finding is(file, type, hashed_secret), so:enandurfail:"API key"(lowercase k; the older key is"API Key") and"API کیلید"are new hashes in their files.These are UI labels, not credentials. #16875 merged without the scan → audit → strip step from
docs/developer/RATCHET_BASELINES.md("The secrets baseline: scan, audit, strip").Fix
Follow that documented procedure on current
main: rescan, label only the new entriesis_secret: falseafter inspecting each, stripline_number. No allowlist widening, no plugin or filter change, no reword of the UI string to dodge the regex.Acceptance criteria
mainlists every finding missing from the audited baseline, and each is inspectedis_secret: false; the baseline carries noline_numberSecret Detection (whole tree)passes on the fix PR