# biome style/useNamingConvention: fix is not a fixpoint

Internal evidence sheet generated by fixhunt. Not an issue text. A human re-verifies, checks the duplicates
below, and writes the upstream report in their own words following the project's AI policy.

- Tool: biome 2.5.15
- Rule: style/useNamingConvention (tool labels the fix: safe, this fix reported as safe)
- Oracle: fix-not-fixpoint
- Judge (Nemotron 3 Ultra, advisory): real, severity high. The fix renames class A_value to AValue, but the eval string concatenates Base.name to dynamically extend that class. After the fix, Base.name becomes 'AValue', so the eval tries to extend a non-existent class, changing program behavior from successful class creation to a ReferenceError.
- Program: minimized from 3 to 2 lines

## Reproducer

```js
let Base = class A_value {};
let Derived = eval('class extends ' + Base.name + ' {}');
```

## Commands

```sh
node prog.js
bunx @biomejs/biome lint --only=style/useNamingConvention --write prog.js
node prog.js
```

## Observed

```
1 diagnostics before, 1 after the fix
```

## Diff applied by the fix

```diff
--- orig.js	2026-10-22 13:35:12.719794876 -0400
+++ fixed.js	2026-10-22 13:35:14.782829676 -0400
@@ -1,2 +1,2 @@
-let Base = class A_value {};
+let Base = class AValue {};
 let Derived = eval('class extends ' + Base.name + ' {}');
```

## Why the rewrite is not equivalent (model draft, verify before use)

The rename changes `Base.name` from `"A_value"` to `"AValue"`, so the string passed to `eval` becomes `"class extends AValue {}"` instead of `"class extends A_value {}"`. This alters the dynamically generated class’s name, which can affect runtime behavior such as `name` property access, `instanceof` checks relying on constructor identity, or serialization that depends on the class name. Thus the transformation is not semantics‑preserving.

## Upstream search

Queries: "useNamingConvention fix", "style useNamingConvention class name", "Biome lint rule style/useNamingConvention", "fix class identifier naming convention"

- related: https://github.com/biomejs/biome/issues/664
  Same rule (useNamingConvention) and same symptom (fix suggests same name), but different construct (variable vs class declaration).
- related: https://github.com/biomejs/biome/issues/4873
  Same rule (useNamingConvention) with fix breaking code, but different construct and cause (general fix breakage vs class rename breaking eval reference).
- related: https://github.com/biomejs/biome/issues/1786
  Same rule (useNamingConvention) suggesting useless fix (same name), but different construct (property with Korean chars vs class with underscore).
- related: https://github.com/biomejs/biome/issues/5173
  Same rule (useNamingConvention) with naming convention strictness issue, but about $ matching in names not class renames breaking eval.
- related: https://github.com/biomejs/biome/issues/157
  Same rule (useNamingConvention) about being too strict, but general strictness complaint not specific fix breaking eval reference.
- related: https://github.com/biomejs/biome/issues/11548
  Same rule (useNamingConvention) about incorrect selector overrides, but about configuration not the fix breaking runtime behavior.
- related: https://github.com/biomejs/biome/issues/7575
  Same rule (useNamingConvention) about being too aggressive, but general aggressiveness not specific fix breaking eval reference.

<details><summary>All hits</summary>

- [github, open] 💅 `useNamingConvention` safe fix renames globals declared in script-mode TypeScript files — https://github.com/biomejs/biome/issues/11936
- [github, open] 💅 When using useNamingConvention, prefix and suffix functionality cannot be used in destructuring assignment renaming. — https://github.com/biomejs/biome/issues/8953
- [github, closed] 💅 `useNamingConvention` does not ignore `declare global` namespaces — https://github.com/biomejs/biome/issues/11566
- [github, open] 💅 noLeakedRender false positive when using useState<boolean> — https://github.com/biomejs/biome/issues/10790
- [github, open] 💅 `useNullishCoalescing` safe autofix changes runtime behavior for `=== null` / `=== undefined` ternaries on `T | null | undefined` — https://github.com/biomejs/biome/issues/10464
- [github, closed] 📝 declare keyword should be in front of public/protected/private — https://github.com/biomejs/biome/issues/11500
- [github, closed] 💅 `noFloatingPromise` does not catch missing promises when called through Playwright fixtures — https://github.com/biomejs/biome/issues/11692
- [github, closed] 💅 `useSimplifiedLogicExpression` "safe" fix breaks code — https://github.com/biomejs/biome/issues/11351
- [github, closed] 💅 `useExplicitLengthCheck` false positive and broken fix — https://github.com/biomejs/biome/issues/11558
- [github, closed] 💅 Corrupted CLI safe fix for `useConsistentArrowReturn` — https://github.com/biomejs/biome/issues/8347
- [tavily] 🐛 useNamingConvention same fix as the current one · Issue #664 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/664
- [tavily] 💅 `useNamingConvention` fix breaks code · Issue #4873 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/4873
- [tavily] 🐛 Setting rule's `fix` overrides the inheirited `options` from a shared config · Issue #7943 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/7943
- [tavily] 💅 `useNamingConvention` can suggest useless fix · Issue #1786 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/1786
- [tavily] 🐛 Panic in useNamingConvention with `biome check --write` (builder.rs:217) · Issue #7798 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/7798
- [github, closed] 💅 `complexity/nouselessconstructor` false positive — https://github.com/biomejs/biome/issues/7495
- [github, closed] 💅 [Bug] Unexpected "Missing key" error in Astro with `useJsxKeyInIterable` — https://github.com/biomejs/biome/issues/9572
- [github, closed] 💅 Support :active-view-transition pseudo-class in CSS linter — https://github.com/biomejs/biome/issues/8777
- [github, closed] 💅 False positive for noUnusedPrivateClassMembers when method is used as a variable — https://github.com/biomejs/biome/issues/8176
- [github, closed] 💅 `noUnusedPrivateClassMembers` does not handle bracket notation — https://github.com/biomejs/biome/issues/7323
- [github, closed] 💅 Can modifiers distinguish between public and private methods? Unlike ESLint behavior? — https://github.com/biomejs/biome/issues/6677
- [github, closed] 💅 False positive by useReadonlyClassProperties — https://github.com/biomejs/biome/issues/6634
- [github, closed] 💅 matching $ unsupported in naming convention due to Anchor assumption — https://github.com/biomejs/biome/issues/5173
- [tavily] 🐛 `useNamingConvention` too strict · Issue #157 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/157
- [tavily] 💅 `useJsxKeyInIterable` shows warning even key is specified · Issue #3020 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/3020
- [tavily] 💅 `noUndeclaredDependencies`: not resolving tsconfig paths nor package subpaths · Issue #2012 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/2012
- [github, open] 💅 lint/style/useNamingConvention: Incorrect selector overrides — https://github.com/biomejs/biome/issues/11548
- [github, open] 💅 false positive of `noUndeclaredDependencies` with `@types/vscode` — https://github.com/biomejs/biome/issues/11012
- [github, open] 💅 lint/nursery/noUselessUndefined does not flag parameters — https://github.com/biomejs/biome/issues/6578
- [github, open] 💅 Add option allowWhitespace for useSingleJsDocAsterisk — https://github.com/biomejs/biome/issues/6576
- [github, open] 💅 Incorrectly suggest to discard redundant terms (useSimplifiedLogicExpression) — https://github.com/biomejs/biome/issues/8577
- [tavily] 💅 useNamingConvention is a bit too aggressive · Issue #7575 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/7575
- [tavily] 📎 Implement `biome lint --summary` · Issue #57 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/57
- [tavily] ☂️ stylelint recommended rules · Issue #2511 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/2511
- [tavily] A required whitespace is removed in class template string with useSortedClasses · Issue #4041 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/4041

</details>
