# biome style/useNumberNamespace: fix changes program behavior

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/useNumberNamespace (tool labels the fix: safe, this fix reported as safe)
- Oracle: fix-changes-behavior
- Judge (Nemotron 3 Ultra, advisory): real, severity medium. The rule rewrites the global `parseInt` call to `Number.parseInt`, but the program declares a local variable named `Number` that shadows the global namespace. The documentation assumes the global `Number` object, so the fix changes the function being called and alters the program's output.
- Program: minimized from 3 to 2 lines

## Reproducer

```js
let Number = { parseInt: s => s + 'reassigned' };
console.log(parseInt('1'));
```

## Commands

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

## Observed

```
stdout before:
1
stdout after:
1reassigned
```

## Diff applied by the fix

```diff
--- orig.js	2026-10-22 13:35:26.136021210 -0400
+++ fixed.js	2026-10-22 13:35:28.122054720 -0400
@@ -1,2 +1,2 @@
 let Number = { parseInt: s => s + 'reassigned' };
-console.log(parseInt('1'));
+console.log(Number.parseInt('1'));
```

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

The original code calls the global `parseInt` function, which converts `'1'` to the number `1`. After rewriting, it calls `Number.parseInt`, a method on the locally defined object that returns the string `'1reassigned'`. Since these are different functions with distinct behaviors, the change alters program output and is not semantics‑preserving.

## Upstream search

Queries: "useNumberNamespace fix", "style/useNumberNamespace global shadowing", "parseInt call without namespace qualifier", "Number variable reassignment affecting built-in"

- related: https://github.com/biomejs/biome/issues/1228
  same rule (useNumberNamespace) but different construct (implementation request vs shadowing bug)
- related: https://github.com/biomejs/biome/issues/3578
  same rule (useNumberNamespace) but different construct (Infinity error message vs parseInt shadowing)
- related: https://github.com/biomejs/biome/issues/2075
  same rule (useNumberNamespace) but different construct (isNaN semantic difference vs parseInt shadowing)

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

- [github, open] 💅 `noUnnecessaryConditions`: false positive on an overloaded call with `undefined` as the default argument (Vue `inject`) — https://github.com/biomejs/biome/issues/12040
- [github, open] 💅 `noSkippedTests` conditionally skip fix suggestion — https://github.com/biomejs/biome/issues/9295
- [github, open] 💅 useLiteralKeys flags `__proto__` in a computed member expression and offers an unsafe fix that conflicts with noProto — https://github.com/biomejs/biome/issues/10769
- [github, open] Extension chokes on large files — https://github.com/biomejs/biome/issues/3860
- [github, open] 💅 noLeakedRender false positive when using useState<boolean> — https://github.com/biomejs/biome/issues/10790
- [github, open] 💅 `lint/correctness/noUnusedImports` does not consider uses inside comments that precede non-declaration statements (start/end of file, etc.) — https://github.com/biomejs/biome/issues/8762
- [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] 💅 Performance regression in noFloatingPromises in 2.5.6+ (and is still an issue in 2.5.11) — https://github.com/biomejs/biome/issues/11534
- [github, closed] 💅 noUselessTernary double space in quick fix — https://github.com/biomejs/biome/issues/11092
- [tavily] 📎 Implement `lint/useNumberNamespace` - `eslint-unicorn/prefer-number-properties` · Issue #1228 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/1228
- [tavily] 📝 Astro JSX-like syntax can't be parsed without errors · Issue #7871 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/7871
- [tavily] 🐛 `--write` applies fixes to all rules ignoring `--only` · Issue #3470 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/3470
- [tavily] 💅 Incorrect error message when type `Infinity` · Issue #3578 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/3578
- [tavily] 💅 Biome replaces isNan by Number.isNan, which is a different function · Issue #2075 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/2075
- [tavily] fix(linter): detect substr/substring calls in variable declarations by vasilytrofimchuk · Pull Request #9282 · biomejs/biome · GitHub — https://github.com/biomejs/biome/pull/9282
- [tavily] 💅 noSubstr not detecting errors on variable usage · Issue #9279 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/9279
- [tavily] 💅 Biomo throw useExhaustiveDependencies error when variable outside the component is used in useMemo · Issue #1781 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/1781
- [tavily] 💅 React TypeScript issue on `The React variable is undeclared` · Issue #3998 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/3998
- [tavily] challenge(formatter): handle let variable name in non-strict mode by Conaclos · Pull Request #814 · biomejs/biome · GitHub — https://github.com/biomejs/biome/pull/814
- [tavily] 🐛 @theme At-Rule with Tailwind CSS internal variable (--*: initial;) causes multiple CSS parser errors · Issue #7843 · biomejs/biome · GitHub — https://github.com/biomejs/biome/issues/7843

</details>
