Skip to content

Commit 4a87858

Browse files
committed
fix: gate single-word displayName matches on metadata and block placeholder names (CM-1137)
Signed-off-by: Yeganathan S <63534555+skwowet@users.noreply.github.com>
1 parent e088a2e commit 4a87858

2 files changed

Lines changed: 22 additions & 2 deletions

File tree

services/apps/merge_suggestions_worker/src/memberSimilarityCalculator.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,18 @@ class MemberSimilarityCalculator {
178178
if (
179179
similarMember.keyword_displayName.toLowerCase() === primaryMember.displayName.toLowerCase()
180180
) {
181-
return this.decideMemberSimilarityUsingAdditionalChecks(primaryMember, similarMember)
181+
const dn = primaryMember.displayName.toLowerCase().trim()
182+
if (isOsReservedName(dn)) {
183+
return this.LOW_CONFIDENCE_SCORE
184+
}
185+
// Single-word names (first-name-only, handles) are too ambiguous without a corroborating
186+
// signal. Multi-word names (full names) are treated as high-confidence on their own.
187+
const isFullName = dn.includes(' ')
188+
return this.decideMemberSimilarityUsingAdditionalChecks(
189+
primaryMember,
190+
similarMember,
191+
isFullName ? undefined : this.HIGH_CONFIDENCE_SCORE,
192+
)
182193
}
183194

184195
// calculate similarity percentage

services/apps/merge_suggestions_worker/src/utils.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,16 @@ export function stripProtocol(value: string) {
5252

5353
// Generic git user.name placeholders and OS account names that are never a real human
5454
// identity — shared across unrelated machines and meaningless as a merge signal.
55-
const OS_RESERVED_NAMES = new Set(['unknown', 'root', 'ubuntu', 'admin', 'user', 'guest'])
55+
const OS_RESERVED_NAMES = new Set([
56+
'unknown',
57+
'root',
58+
'ubuntu',
59+
'admin',
60+
'user',
61+
'guest',
62+
'[[unknown]] [not provided]',
63+
'deleted user',
64+
])
5665

5766
export function isOsReservedName(name: string): boolean {
5867
return OS_RESERVED_NAMES.has(name.trim().toLowerCase())

0 commit comments

Comments
 (0)