I fixed `formatBytes` in `src/format-bytes.mjs`, and `npm test` now passes.

**The bug:** the function cut off the scaled value instead of rounding it. For example, 1600 bytes is 1.5625 KiB, so it should show as `1.6 KiB`, but it showed `1.5 KiB`.

**The fix:** I changed one line so the value is rounded to the nearest tenth, with exact halves rounding up as the contract requires. The calculation still uses exact integer arithmetic, so it stays correct up to the largest allowed value.

I also checked edge cases from the contract by hand:
- **Valid sizes:** `-0` gives `0 B`, and 1048575 gives `1024.0 KiB` (the unit is chosen before rounding).
- **Largest value:** `Number.MAX_SAFE_INTEGER` gives `8.0 PiB`.
- **Invalid inputs:** negatives, fractions, strings, `null`, `NaN`, `Infinity`, BigInts and numbers beyond the safe-integer range all return `null`.

No other files were changed, and I didn't write `notes/attempt.txt`.